Go-Ethereum

是否應該從 web3 API 上的 MyContract.new 和 MyContract.myFunction 呼叫兩次回調?

  • July 1, 2016

當我像這樣使用 myContract.new() 實例化契約時:

MyContract.new({ from: addr, data: code, gas: gas, gasPrice: price }, function (error, contract) {
                   if (!error) {
                       if (typeof contract.address != 'undefined') {
                           console.log("second call");
                           console.log('Confirmed. address: '
                               + contract.address
                               + ' transactionHash: '
                               + contract.transactionHash);
                       } else {
                           console.log("first call");
                       }

                   } else {
                       console.log('geth callback error: ' + error);
                   }
               });

..該函式被呼叫兩次。第一個是交易雜湊(未顯示),第二個是合約地址(顯示)。

我是否應該期望後續使用具有事務性的合約方法來呼叫回調兩次?

   var myContract = MyContract.at(cAddr);

   myContract.myFunction(par1, par2,
       { from: addr, data: code, gas: gas, gasPrice: price },
       function (error, obj) {
           if (error) {
               console.log("whoops!");
           } else {
              console.log("myFunction called");
           }
       });

呼叫一次的合約方法只會觸發一次回調。

對於.new,回調被觸發兩次是正確的:通常,第一次使用事務雜湊,第二次使用已部署合約的地址。

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