Transactions
使用 MetaMask 注入的 web 3 發送交易
注入 web3 的 Metamasks 使用時出錯
web3.eth.sendTransaction()
web3.eth.sendTransaction({from:web3.eth.accounts[0], to:'', data: // hash to interact with contraact, gas:85000});
使用 Metamask 讓網站提示使用者簽署交易的方法是什麼?
您缺少
sendTransaction
回調的最後一個參數function(error, transactionHash) { ... }
MetaMask常見問題解答指出:
All Async - 將 MetaMask 視為輕客戶端
使用者的機器上沒有完整的區塊鏈,因此數據查找可能會有點慢。因此,我們無法支持大多數同步方法。例外情況是:
eth_accounts (web3.eth.accounts)
eth_coinbase (web3.eth.coinbase)
通常方法呼叫可以通過簡單地添加回調作為同步方法的最後一個參數來進行非同步呼叫。
請參閱有關“使用回調”的 ethereum wiki
這不僅是技術限制,也是使用者體驗問題。當您使用同步呼叫時,您會阻塞使用者界面,因此無論如何這通常都是不好的做法。將此 API 限制視為送給使用者的禮物。
所以所有對 web3.js 的呼叫都應該有一個回調作為最後一個參數:唯一不需要的呼叫是 for
web3.eth.accounts
和web3.eth.coinbase
. 回調的通用形式是function(error, result)
.