Web3js
web3.eth.getCoinbase() 和 web3.eth.getAccounts() 的區別000
web3.eth.getCoinbase()
和 有什麼區別web3.eth.getAccounts()[0]
。在這兩種情況下,我總是得到值,即 Metamask 中目前選擇的帳戶。注意:這個問題與面向公眾的 dApp 有關。即使用 web3.js 並與使用者的加密錢包 Metamask 互動的 UI。它不適用於本地區塊鏈開發。
web3.eth.getCoinbase()
返回您的挖礦獎勵進入的賬戶。
web3.eth.getAccounts()[0]
返回您創建的第一個帳戶(索引 0)Web3.js 不公開此 API(可能是因為從應用程序級別來看,它沒有強大的案例),但可以使用從 geth 控制台將您的 Coinbase(Etherbase)設置為您的任何帳戶
miner.setEtherbase(eth.accounts[n]) //Where n is the index number
更新:
- Metamask 不支持 web3.eth.getCoinbase() 因為它是一個輕客戶端
- 在 metamask 中處理帳戶的目前模式:
var account = web3.eth.accounts[0]; var accountInterval = setInterval(function() { if (web3.eth.accounts[0] !== account) { account = web3.eth.accounts[0]; updateInterface(); } }, 100);
你可能會使用 web3.eth.getAccounts()
$$ $$但這將返回一個您仍然必須解析的數組。 範例取自文件:
web3.eth.accounts web3.eth.accounts // or async web3.eth.getAccounts(callback(error, result){ ... }) This property is read only and returns a list of accounts the node controls. Returns Array - An array of addresses controlled by client. Example var accounts = web3.eth.accounts; console.log(accounts); // ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
參考:
- 你如何配置geth來使用coinbase?
- https://web3js.readthedocs.io/en/1.0/web3-eth.html#getcoinbase
- https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client
- https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client
- https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethaccounts