Я новичок в смарт-контрактах и столкнулся с одной проблемой. После развертывания контракта в моей тестовой локальной сети блокчейна я пытаюсь установить новое значение через сеттер, после этого я вызываю метод получения контракта, и он возвращает старое значение.
Это мой контракт,
pragma solidity ^0.4.10;
contract Storage {
uint256 storedData;
function set(uint256 data) {
storedData = data;
}
function get() constant returns (uint256) {
return storedData;
}
}
Какие шаги я сделал:
- Разверните контракт через web3j в java-коде, после развертывания я вижу адрес своего контракта, поэтому он развернут
- После этого в консоли geth создайте переменную abi: var abi = [{"constant":false,"inputs":[{"name":"data","type":"uint256"}],"name":"set ","выходы":[],"оплачиваемый":ложь,"изменяемость состояния":"неоплачиваемый","тип":"функция"},{"константа":истина,"входы":[],"имя": «получить», «выводы»: [{«имя»: «», «тип»: «uint256»}], «оплачиваемый»: false, «изменяемость состояния»: «представление», «тип»: «функция»}] ;
- контракт загрузки: var storage = eth.contract(abi)
- загрузить контракт по адресу: var contractInstance = storage.at("0x45564fe8d90e542f3f896dd43b374210bc109299");
- попробуйте вызвать метод get(): var result = contractInstance.get(); это выход 0
- затем попробуйте установить новое значение: var result = contractInstance.set(566); After that I see something like this: INFO [09-07|08:42:07] Submitted transaction fullhash=0x7110b3fdfc8005187ed367beb8275a6f4b926f4852f726784219a5a3aa9c8d9e recipient=0x45564fe8d90e542f3f896dd43b374210bc109299 "0x7110b3fdfc8005187ed367beb8275a6f4b926f4852f726784219a5a3aa9c8d9e"
- Затем я запускаю майнинг: miner.start(), в начале майнинга вижу такой лог: INFO [09-07|08:44:15] Commit new mining work number=38 txs=1 uncles=0 elapsed=1.044 ms INFO [09-07|08:44:15] Успешно запечатанный новый блок номер=38 hash=e62548…39ad89 INFO [09-07|08:44:15] 🔗 блок достиг канонического номера цепочки=33 hash=9a6ae1…9cb82d INFO [09-07|08:44:15] 🔨 добытый потенциальный блок номер=38 hash=e62548…39ad89 INFO [09-07|08:44:15] Commit new mining work number=39 txs=0 uncles=0 истекло =182,5 мкс INFO [09-07|08:44:15] Успешно запечатанный новый блок номер=39 hash=87b682…f52e39 INFO [09-07|08:44:15] 🔗 блок достиг канонического номера цепочки=34 hash=cc9a2d …36838a INFO [09-07|08:44:15] 🔨 добытый потенциальный блок номер=39 hash=87b682…f52e39 INFO [09-07|08:44:15] Майнинг слишком далеко в будущем wait=2s
- Затем я прекращаю майнинг: miner.stop() 9. Затем вызываю contractInstance.get(): и вижу то же значение 0
Я в замешательстве (Спасибо всем за помощь!
БинГоБинБин
Миллер
wtk219
Миллер
Эдмунд Эдгар
storedData
указать значение по умолчанию, прежде чем пытаться его изменить, это скажет вам, связана ли ваша проблема с чтением или записью.Миллер
Миллер
Никита Фукс
constructor()
функции.