(QTUM)我部署了一个契约,使用jsonrpc callcontract设置一个值,但是得到了null

时间:2018-01-31 02:48:25

标签: ethereum solidity

set 'hello world' for description() to contract 
qcli callcontract 816e13de2966cc56ca330d089aab849e5928eed5 90c3f38f 0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c48656c6c6f20576f726c64210000000000000000000000000000000000000000

getDescription()
qcli callcontract 816e13de2966cc56ca330d089aab849e5928eed5 7284e416

输出:00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

为什么它不会与set方法返回相同的内容?无论我设置什么,它都会返回000。

我已经花了一整天时间,请有人帮忙。

2 个答案:

答案 0 :(得分:0)

我不是QTUM专家,但看起来你使用的是错误的API。

  

大多数情况下,您将使用两个RPC调用来与合同进行交互   方法:

     
      
  • callcontract在" query"中调用方法模式,使用您的数据   本地区块链,但不对其进行更改。这是免费的。
  •   
  • senttocontract在" commit"中调用方法模式,创建一个   更改区块链的交易。这会花费你的气体。
  •   

callcontract似乎是用于调用常量函数。如果您要更改区块链(发送交易),则需要使用sendtocontract

答案 1 :(得分:0)

首先,callcontract无法更改数据,应调用sendtocontract

然后这是一个错误的电话 qcli sendtocontract 8a0795de06d66bf20940f5ee35b9092483af82a5 90c3f38f 0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c48656c6c6f20576f726c64210000000000000000000000000000000000000000

它应该是 qcli sendtocontract 8a0795de06d66bf20940f5ee35b9092483af82a5 90c3f38f0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c48656c6c6f20576f726c64210000000000000000000000000000000000000000 方法和参数不应该有空格