我正在尝试使用solidity、geth和web3j来获取智能合约中变量的值。
合约HelloWorld非常简单:
pragma solidity ^0.6.10;
contract HelloWorld {
uint256 public counter = 5;
function add() public { //increases counter by 1
counter++;
}
function subtract() public { //decreases counter by 1
counter--;
}
function getCounter() public view returns (uint256) {
return counter;
}
}web3j没有调用()函数,只有send()函数,这很令人惊讶。
当我按照web3j指令尝试获取计数器时:
contract.getCounter().send()我得到的是交易收据,而不是值uint256。
有人能帮上忙吗?
谢谢
将要
发布于 2020-09-23 01:55:10
您需要修改生成的HelloWorld.java文件中的getCounter()函数。
public RemoteCall<Type> getCounter() {
final Function function = new Function(
FUNC_GETCOUNTER,
Arrays.<Type>asList(),
Arrays.<TypeReference<?>>asList(new TypeReference<Uint>() {}));
return executeRemoteCallSingleValueReturn(function);
}要获取该值,请使用以下代码:
Type message = contract.getCounter().send();
System.out.println(message.getValue()); https://stackoverflow.com/questions/62970535
复制相似问题