Я пытаюсь собрать простое приложение, используя Truffle, Metamask и ASP.NET.
Я создал несколько тестовых учетных записей в Metamask, затем я запускаю testrpc, явно указав пару этих учетных записей и их начальный баланс, например:
testrpc --account="0xa3........18, 1000000000000000000000" --account="0x80.......08, 1000000000000000000000"
В журнале testrpc я вижу, что они запускаются правильно:
Available Accounts
==================
(0) 0x27.....d5
(1) 0x1b.....24
Затем я развертываю свой контракт, вхожу в Metamask, а затем запускаю свое веб-приложение.
В моем js я вижу, что он извлекает экземпляр web3 из метамаски:
if (typeof web3 !== 'undefined') { // This evaluates to true
App.web3Provider = web3.currentProvider;
web3 = new Web3(web3.currentProvider);
console.log("Already have a web3 instance");
} else {
Я пытаюсь получить список учетных записей следующим образом:
App.contracts.JmTest.deployed().then(function(instance) {
web3.eth.getAccounts(function (error, accounts) {
if (error) {
console.log(error);
}
console.dir(accounts);
Однако он показывает только одну из двух учетных записей, с которой я запустил testrpc...
Array(1)
0: "0x27.....d5"
Получается, что это текущий выбранный аккаунт в Metamask. Если я запускаю testrpc без указания каких-либо учетных записей и перезапускаю Chrome, происходит то же самое - снова я получаю только текущую выбранную учетную запись в Metamask.
Что мне не хватает?
Итак, похоже, что это случай RTFM....
Когда пользователь выбирает учетную запись в MetaMask, эта учетная запись автоматически становится web3.eth.accounts[0] в вашем контексте JS, единственным членом массива web3.eth.accounts .
урджит на рельсах