Web3js

web3.eth.getCoinbase() 和 web3.eth.getAccounts() 的區別000

  • January 12, 2019

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() 因為它是一個輕客戶端

https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client

  • 在 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"] 

參考:

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