我正在使用特松露部署一个合同上的加纳奇和检索合同在一个快递应用程序。虽然我可以获得契约实例,并且它可以console.log一个函数对象的列表,但函数不能在代码中调用。
这是我的合同:
contract Vote{
uint dem = 0;
uint pub = 0;
constructor() public {
dem = 0;
pub = 0;
}
function vote(uint v) public {
if(v == 1){
pub += 1;
} else {
dem += 1;
}
}
function getWinner() public view returns (uint) {
if(dem > pub){
return dem;
} else {
return 0 - pub;
}
}
}代码调用函数:
var voteAbi = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[],"name":"getWinner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"v","type":"uint256[]"}],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
web3.eth.defaultAccount = web3.eth.accounts[0]
web3.personal.unlockAccount(web3.eth.defaultAccount)
var voteContract = web3.eth.contract(voteAbi);
var voteInstance = voteContract.at("0x0711217536458a37580e669de781554ce33236c24711d351d446a437e16ae058");
voteInstance.vote.call(1)
voteInstance.vote(1)
voteInstance.vote.sendTransaction(1,{from:web3.eth.accounts[0]})这三行都调用函数的投票结果导致Foreach问题。我是web3和区块链的新手!有什么可能会出错的想法吗?
发布于 2022-07-10 08:00:25
你的呼叫数据插入区块链之前。在web3JS中使用异步功能如下:
var voteAbi = [{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[],"name":"getWinner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"v","type":"uint256[]"}],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
web3.eth.defaultAccount = web3.eth.accounts[0]
web3.personal.unlockAccount(web3.eth.defaultAccount)
var voteContract = web3.eth.contract(voteAbi);
var voteInstance = voteContract.at("0x0711217536458a37580e669de781554ce33236c24711d351d446a437e16ae058");
async function votingBro(){
await voteInstance.vote.call(1)
await voteInstance.vote(1)
await voteInstance.vote.sendTransaction(1,{from:web3.eth.accounts[0]})
}
votingBro()发布于 2020-11-30 22:00:54
这是一个由松露引起的问题。当我在我的ganache-cli中重新混合和部署合同时,它就能工作了。
https://ethereum.stackexchange.com/questions/90622
复制相似问题