Solidity
呼叫合約函式的方式有什麼不同?
在我得到一個合約實例後,有以下 3 種呼叫合約函式的方法:
testInstance.testfunc({from:eth.accounts[0]})
testInstance.testfunc.sendTransaction({from:eth.accounts[0]})
3.testInstance.testfunc.call({from:eth.accounts[0]})
彼此有什麼區別?
您正在使用 web3.js:
- 如果
testfunc
在 Solidity 中標有constant
,它將表現為呼叫 #3。否則,它將表現為事務#2。- 是一個明確的交易,將被廣播到網路並可能被探勘到一個塊中。返回值將始終是交易雜湊。這需要乙太幣(由gas used X gas price計算)。
- 是一個明確的本地呼叫,
testfunc
它不會在區塊鏈上廣播或發布任何內容。返回值由 的 Solidity 程式碼確定testfunc
。這不需要乙太幣(儘管仍然使用天然氣)。有關詳細說明,請參閱 事務和呼叫有什麼區別?