Waves developers Ru
в методе getRandomGen передаются txId, hatchingFinishHeight, step. Это типа клиент посылает рандомные числа?
Читать полностью…в утках вы про этот метод?
func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {Читать полностью…
let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
let randomHash = sha256_16Kb((txId + value(randomSeedBlock.vrf)))
(toInt(randomHash, offset) % variants)
}
это где-то тут https://docs.waves.tech/ ?
Читать полностью…Если речь о псевдослучайных числах, которые ни на что особо не влияют и нет беды, если все смогут предсказать число - то можно, да
Читать полностью…на блокчейне волн нельзя получить честный рандом в текущей транзакции. Можно только из будущего, по схеме commit-reveal
Читать полностью…Всем привет, подскажите dev_ pywaves_org уже не работает? Раньше было удобно брать оттуда статистику по нодам.
Читать полностью…Подскажите еще такой момент, если я правильно понимаю, то выполняется то, что было последним в Callable. Например, если я в конце пишу throw или IntegerEntry. Как я могу в одном Callable сделать два действия (IntegerEntry и throw)? Пробую так:
@Callable(i)Пишет Parse error: expected "}" in 1132-1141 Читать полностью…
func test1() = {
let result = generateRandomNumber(i, 1, 12)
(
[
IntegerEntry("result", result)
],
result
)
throw(result.toString())
}
Вообще есть ещё 3й ) можно записать в данные контракта результат, а потом прочитать через api )
Читать полностью…Throw же выбрасывает ошибку. Пробовал этот вариант, но выглядит непрофессионально.
Читать полностью…Метод evaluate выполнят сам метод контракта или это предположительный результат? В моем случае result будет каждый раз с разным значением. Также будет вызываться разными пользователями и мне нужно понимать, у какого какой результат получился.
Возможно есть какой-то другой вариант вернуть из метода смарт контракта (test1) результат для пользователя которой вызывает этот метод используя signer?
результат возвращается только если делать evaluate или dapp2dapp вызов
Читать полностью…Может нужен другой тип аккаунта или версия RIDE?
{-# STDLIB_VERSION 6 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
Подскажите, можно как-то вернуть значение после вызова метода контракта, например
@Callable(i)
func test1() = {
let result = 666
(
[],
result
)
}
await this.signer
.invoke(data)
.broadcast()
.then(e => console.log("+++ then", e))
.catch(e => console.log("+++ catch", e))
@Callable(i)
func test2() = {
666
}
там в одном вызове подготовка, в другом (минимум +1 блок) использование
Читать полностью…тогда из уток возьми и адаптируй, там норм
Читать полностью…Где про это можно почтить развернуто? Я пытался понять как получают рандом из уток, но по коду много не понял.
Читать полностью…@beeblbrx , подскажите, так будет безопасно получать рандом? Если нет, что нужно еще добавить?
func random (i: Invocation, min: Int, max: Int) = {Читать полностью…
let ofset = parseIntValue(takeRight(toString(toInt(i.transactionId)), 1))
let randomSeedBlock = value(blockInfoByHeight((height - ofset)))
let randomHash = sha256_16Kb((value(randomSeedBlock.vrf)))
let lastChar = takeRight(toString(toInt(randomHash)), 5)
parseIntValue(lastChar) % (max - min + 1) + min
}
call action выполнится только, если callable завершится без ошибки, так что IntegerEntry надо выпилить
Читать полностью…потому что в actions вы увидите свои изменения стейта
Читать полностью…Спасибо, думал есть что-то более правильное
Читать полностью…evaluate выполнит честную функцию контракта с заданными аргументами.
Другой способ - вместо нормального завершения в контракте предусмотреть throw("result=666")
curl -X 'POST' \
'https://nodes-testnet.wavesnodes.com/utils/script/evaluate/3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"expr": "test1()"
}'
В test1 все правильно, разбирайтесь на стороне js
Читать полностью…Судя по последним транзакциям, кроме тестовых транзакций реального использования нет совсем.
Читать полностью…