Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство - стр. 20
Когда вы добавляете аккаунт, создаются приватный и публичный ключ. Приватный ключ хранится на диске вашего сервера, публичный используется для идентификации аккаунта другими пользователями.
Просмотр списка аккаунтов
Откройте две консоли и подключитесь в каждой из них пользователем book. Далее в первой консоли запустите узел следующей командой:
>$ sh start_node.sh
Во второй консоли подключитесь к запущенному узлу:
>$ sh attach_node.sh
Скрипты start_node.sh и attach_node.sh мы подготовили ранее на втором уроке нашего курса.
Теперь, чтобы посмотреть список аккаунтов, достаточно выдать такую команду в консоли второй Web3:
>> web3.eth.accounts
>["0x4f744742ac711fd111c7a983176db1d48d29f413"]
Если аккаунтов несколько, они будут показаны через запятую как элементы массива:
>> web3.eth.accounts
>["0x4f744742ac711fd111c7a983176db1d48d29f413", "0xf212d0180b331a88bd3cafbd77bbd0d56398ae00"]
Каждый аккаунт обладает своим идентификатором, или адресом, представляющим собой длинное шестнадцатеричное число. Именно эти адреса и показывает команда web3.eth.accounts.
Добавление аккаунта
Вы можете добавить аккаунты в консоли Geth или в консоли ОС, запустив там Geth с соответствующим параметром.
Давайте добавим новый аккаунт, указав для него пароль test (никогда не используйте такие простые пароли в рабочих проектах):
>> web3.personal.newAccount("test")
>"0x346cc69a63f9b84c45f17e337574c0150ab6bc03"
Здесь мы обратились к объекту web3.personal. Чтобы такие обращения были возможны, при запуске узла сети мы указали название этого объекта наряду с другими объектами в параметре rpcapi (см. урок 2). При использовании параметра –dev параметр rpcapi задавать явным образом не требуется.
Если раньше массив аккаунтов содержал два элемента, то теперь в нем будет на один элемент больше:
>> web3.eth.accounts
>["0x4f744742ac711fd111c7a983176db1d48d29f413", "0xf212d0180b331a88bd3cafbd77bbd0d56398ae00", "0x346cc69a63f9b84c45f17e337574c0150ab6bc03"]
Для каждого аккаунта на узле создается ключ. Другой неотъемлемый параметр аккаунта – это его пароль. Пароль при создании аккаунта никуда не записывается, поэтому его невозможно восстановить.
Теперь для добавления аккаунта воспользуемся командой geth account с параметром new. Откройте новое консольное окно пользователем book и введите там следующую команду:
>$ geth –datadir node1 account new
Будет добавлен новый аккаунт, а его идентификатор (адрес), будет показан в фигурных скобках:
>INFO [02-17|23:01:28.855] Maximum peer count ETH=25 LES=0 total=25
>Your new account is locked with a password. Please give a password. Do not forget this password.
>Passphrase:
>Repeat passphrase:
>Address: {ae7bb3649a5c597d44f812b4a636f3cc21ee98e1}
При добавлении аккаунта у вас будет запрошен пароль.
Обратите внимание, что во всех этих командах мы указывали путь к рабочему каталогу нашего приватного блокчейна с помощью параметра datadir.
Теперь если вы вернетесь в консольное окно Geth и посмотрите там список аккаунтов, то увидите, что теперь на вашем узле определено целых четыре аккаунта:
>> web3.eth.accounts
>["0x4f744742ac711fd111c7a983176db1d48d29f413", "0xf212d0180b331a88bd3cafbd77bbd0d56398ae00", "0x346cc69a63f9b84c45f17e337574c0150ab6bc03", "0xae7bb3649a5c597d44f812b4a636f3cc21ee98e1"]