当我调用智能契约的任何功能时,它会返回它想要的内容,但在我查询它时没有反映任何变化。这就像事务本身从未发生过一样,尽管它使用test给出了智能contract.Im的正确结果。在松露中测试了合同。和坚固的浏览器。这是我编写的代码的简化版本。
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
console.log("Talking with a geth server", web3.version.api);
function test(){
var sourceCode = fs.readFileSync('contracts/digitalToken.sol','utf8')
var compiled = solc.compile(sourceCode);
console.log(compiled.contracts[":digitalToken"]);
var abiArray = compiled.contracts[":digitalToken"].interface;
abiArray = JSON.parse(abiArray);
var MyContract = web3.eth.contract(abiArray);
var address = "0x1f81b5fa31d049b70556628cc01f22d362c41084";
var contractInstance = MyContract.at(address);
console.log(contractInstance);
var value=executeAddvid(contractInstance)
console.log({message: "Success",value:value});
console.log('after passing--');
console.log({message: "Success",value:value});
var value1=readVidByUser(contractInstance);
console.log({message: "Success",value:value1});
console.log('after passing--');
console.log({message: "Success",value:value1});
}
function executeAddvid(contractInstance){
record = contractInstance;
return record.addVid.call('0x0000000000000000000000000000000000000124',5,"ronaldo","0xc9f5a0572d95d5dea1331edcc192dacef51ecbb7",1000000000000000000);
}
function readVidByUser(contractInstance){
record = contractInstance;
return record.readVidByUser.call('0x0000000000000000000000000000000000000124','0x1f81b5fa31d049b70556628cc01f22d362c41084');
}
test();发布于 2017-07-03 16:39:33
当您使用.call时,就像在record.addVid.call(...)中一样,您不是在发送事务,而是在本地执行调用。对于要使用.transact的状态更改函数,请参见
record.addVid.call('0x0000000000000000000000000000000000000124',5,"ronaldo","0xc9f5a0572d95d5dea1331edcc192dacef51ecbb7",1000000000000000000, {from:eth.coinbase})https://ethereum.stackexchange.com/questions/19324
复制相似问题