Solidity

Web3 - 訪問事件的返回值

  • August 21, 2019

我想獲得我的智能合約在 javascript 中返回的值。

這是契約。(版本 0.4.25 - web3 版本 1.2)

pragma solidity ^0.4.25;
contract SimpleStorage {

   uint public storedData;
   event numberSaved(uint number);

   constructor(uint initVal) public {
       storedData = initVal;
   }

   function set(uint x) public{
       storedData = x;
       emit numberSaved(storedData);
   }

   function get() view public returns (uint retVal) {
       return storedData;
   }

}

現在如何獲取事件返回的值?

我試過:

mySmartContract.events.numberSaved();

返回對象

mysmartContract.once('numberSaved', function(error, event){ console.log(event); });

這個返回 null

我究竟做錯了什麼?

它適用於混音。 混音返回值

我認為這會起作用:

result.events.numberSaved.returnValues['number']

試試這個

mysmartContract.getPastEvents('numberSaved', {
   fromBlock: 0,
   toBlock: 'latest'
}, function(error, events){ console.log(events); })
.then(function(events){
   console.log(events) // same results as the optional callback above
});

實際上,我以Web3 docs為例。

引用自:https://ethereum.stackexchange.com/questions/73847