Solidity

呼叫合約函式的方式有什麼不同?

  • January 17, 2017

在我得到一個合約實例後,有以下 3 種呼叫合約函式的方法:

  1. testInstance.testfunc({from:eth.accounts[0]})
  2. testInstance.testfunc.sendTransaction({from:eth.accounts[0]}) 3.testInstance.testfunc.call({from:eth.accounts[0]})

彼此有什麼區別?

您正在使用 web3.js:

  1. 如果testfunc在 Solidity 中標有constant,它將表現為呼叫 #3。否則,它將表現為事務#2。
  2. 是一個明確的交易,將被廣播到網路並可能被探勘到一個塊中。返回值將始終是交易雜湊。這需要乙太幣(由gas used X gas price計算)。
  3. 是一個明確的本地呼叫,testfunc它不會在區塊鏈上廣播或發布任何內容。返回值由 的 Solidity 程式碼確定testfunc。這不需要乙太幣(儘管仍然使用天然氣)。

有關詳細說明,請參閱 事務和呼叫有什麼區別?

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