Как получить доступ ко всем учетным записям на нескольких узлах? JS/Web3.js/API

Я запускаю частную сеть разработки Эфириума с 3 узлами, соединенными друг с другом. Прежде чем задать мой вопрос, кое-что о моей настройке. Вот как я запускаю эти узлы:

geth --networkid 2345 --datadir /some/dir/01 --rpc --rpccorsdomain "*" --rpcapi "db,net,web3,miner,eth,personal" --port "30301" --rpcport 8101 --maxpeers 2 --identity "MyChain01" console

Это просто инструкция для одного узла, остальные имеют разные номера портов.

Когда все узлы запущены, я подключаю их в консоли JavaScript через:

admin.addPeer("enode:1234567890.....")

и при запуске:

admin.peers

Я получаю других сверстников соответственно. Когда я начинаю майнинг на одном узле, добытые блоки синхронизируются с другими, так что все работает хорошо.

А теперь мой вопрос. Допустим, я создал 2 аккаунта на Node01, 2 аккаунта на Node02 и 2 аккаунта на Node03. Как я мог на самом деле выполнить какую-либо транзакцию между узлами? Итак, с account1.node01 на account1.node02?

Во время работы:

personal.listAccounts

на любом заданном узле я получаю только учетные записи, созданные на этом самом узле.

Кто-нибудь знает, есть ли решение для доступа ко всем учетным записям со всех подключенных узлов? Может быть, мне не хватает трюка, но я не мог найти ничего, что могло бы объяснить, как это сделать.

Спасибо, Бориньо.

Отличный вопрос, он проясняет одно из моих самых больших сомнений. Я думаю, учетные записи не являются «глобальными», как я думал. Мне было интересно, не могли бы вы высказать свое мнение по моему вопросу (я надеюсь, что это связано): ethereum.stackexchange.com/questions/34964/…

Ответы (2)

для всех, кто, возможно, задает тот же вопрос, я хотел дать ответ на мой вопрос, насколько мне известно.

То, что я в основном описал выше, — это концепция «горячего кошелька». Как и в приведенном выше примере, учетная запись создается непосредственно на узле, все данные, ключи и т. д. хранятся на этом узле. Теперь, когда кошельки или контейнеры с ключами не должны (и я думаю, не могут) копироваться между узлами, первоначальный вопрос на самом деле бессмыслен или просто неверен. Другая проблема заключается в том, что я фактически задал два вопроса в одном.

Перенести что-то с account1.node1 на account1.node2 вообще не проблема (в пределах одной сети). Просто сделайте:

eth.sendTransaction({from:sender, to:receiver, value: amount})

Другой вопрос, который я задавал себе, был чем-то вроде проводника блокчейна. Листинг, через web3, что происходит в сети. С помощью web3.js можно запросить все данные учетной записи на любом указанном узле, но не все учетные записи в данной частной установке блокчейна (если кто-то не скажет мне иначе).

Я надеюсь, что это поможет кому-то когда-нибудь :)

Бориньо

  1. На данный момент вы не можете получить доступ к своей учетной записи на другом компьютере, не добавив туда файлы ключей. это не сразу риск, так как они все еще защищены паролем, но... вы поняли.

  2. Но есть мозговой кошелек ( https://github.com/ConsenSys/eth-lightwallet ). Что вы можете с ним делать: создавайте учетные записи на лету и используйте их, просто идентифицируя это семя (состоящее из 10 слов, сгенерированных по специальному шаблону) и пароль, который вы выбираете каждый раз, когда используете учетную запись в своем браузере ( не имеет ничего общего с паролем учетной записи, поскольку эти 10 слов — единственное, что имеет значение ;)) Чего вы пока не можете сделать, так это преобразовать свои существующие кошельки в мозговой кошелек.

Поэтому, если вы хотите иметь учетную запись, которую вы можете использовать везде без ключевого файла, создайте несколько мозговых кошельков и разместите необходимые скрипты в Интернете, чтобы вы могли получить к ним доступ откуда угодно. и, конечно же, запишите эти 10 слов, так как они генерируют ключи на лету каждый раз, когда вы хотите использовать этот кошелек.

  1. Чтобы узнать все балансы всех пользователей, потребовалось бы много математической работы (отслеживание всех переходов, добытого эфира и так далее до самого конца).