Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Шрифт:
Здесь будут показаны те же самые данные приватной сети, что и на предыдущем уроке.
Проверьте текущий баланс при помощи следующей команды:
Как
Итоги урока
На третьем уроке вы научились устанавливать узел приватного блокчейна Ethereum на микрокомпьютер Raspberry Pi 3, обладающего оперативной памятью размеров всего 1 Гбайт.
Хотя на этом компьютере не удается запустить майнинг утилитой Geth, вы использовали параметр –dev для создания тестового узла. На таком узле майнинг запускать не нужно, т.к. там уже предусмотрен аккаунт с очень большим балансом.
Урок 4. Учетные записи и перевод средств между аккаунтами
Цель урока: научиться просматривать список аккаунтов, создавать новые аккаунты, познакомиться с криптовалютными единицами в сети Ethereum, а также научиться переводить средства с одного аккаунта на другой с помощью транзакции из консоли Geth.
Практические задания: нужно просмотреть список аккаунтов, добавить новый аккаунт и перевести на него средства с другого аккаунта. Далее нужно посмотреть состояние транзакции и получить ее квитанцию.
К четвертому уроку мы подготовили серверы Ubuntu и Debian и установили на них Go Ethereum (программу Geth), создали узел приватной сети. Мы проделали аналогичную операцию с микрокомпьютером Raspberry Pi 3, установив на него ОС Rasberian и Geth для запуска сети в тестовом режиме с параметром –dev.
Мы научились подключаться к узлу сети в отдельном окне консоли, получив приглашение Geth в виде символа “>” (далее мы будем назвать это приглашение консолью Geth). Напомним, что для выхода из консоли Geth и возврата к системному приглашению ОС нужно ввести команду exit.
Детальное описание программного интерфейса фреймворка Web3 JavaScript API версии 0.2x.x, вы найдете здесь: https://github.com/ethereum/wiki/wiki/JavaScript-API.
На момент подготовки книги версия 1.0 еще не реализована, но вы можете изучить документацию на нее по адресуВ нашем руководстве мы будем приводить примеры использования и стабильной версии 0.2x.x, и бета-версий 1.0-beta.xx.
Просмотр и добавление аккаунтов
В сети Ethereum, как тестовой, так и «настоящей», аккаунты играют очень важную роль. Именно аккаунтам принадлежат криптовалютные средства, необходимые для выполнения транзакций. Все взаимодействия в сети Ethereum происходят в виде транзакций между аккаунтами.
Заметим, что помимо аккаунтов пользователей, в сети Ethereum предусмотрены аккаунты смарт-контрактов, загруженных в блокчейн, но об этом мы будем говорить позже.
В процессе инициализации приватной узла сети Ethereum на втором уроке мы добавляли первую учетную запись (аккаунт) явным образом, задавая для нее пароль:
На
третьем уроке мы запускали тестовую приватную сеть, задавая geth параметр –dev. При этом на узле уже была создана одна учетная запись, к тому же с большим положительным балансом.Когда вы добавляете аккаунт, создаются приватный и публичный ключ. Приватный ключ хранится на диске вашего сервера, публичный используется для идентификации аккаунта другими пользователями.
Просмотр списка аккаунтов
Откройте две консоли и подключитесь в каждой из них пользователем book. Далее в первой консоли запустите узел следующей командой:
Во второй консоли подключитесь к запущенному узлу:
Скрипты start_node.sh и attach_node.sh мы подготовили ранее на втором уроке нашего курса.
Теперь, чтобы посмотреть список аккаунтов, достаточно выдать такую команду в консоли второй Web3:
Если аккаунтов несколько, они будут показаны через запятую как элементы массива:
Каждый аккаунт обладает своим идентификатором, или адресом, представляющим собой длинное шестнадцатеричное число. Именно эти адреса и показывает команда web3.eth.accounts.
Добавление аккаунта
Вы можете добавить аккаунты в консоли Geth или в консоли ОС, запустив там Geth с соответствующим параметром.
Давайте добавим новый аккаунт, указав для него пароль test (никогда не используйте такие простые пароли в рабочих проектах):
Здесь мы обратились к объекту web3.personal. Чтобы такие обращения были возможны, при запуске узла сети мы указали название этого объекта наряду с другими объектами в параметре rpcapi (см. урок 2). При использовании параметра –dev параметр rpcapi задавать явным образом не требуется.
Если раньше массив аккаунтов содержал два элемента, то теперь в нем будет на один элемент больше:
Для каждого аккаунта на узле создается ключ. Другой неотъемлемый параметр аккаунта – это его пароль. Пароль при создании аккаунта никуда не записывается, поэтому его невозможно восстановить.
Теперь для добавления аккаунта воспользуемся командой geth account с параметром new. Откройте новое консольное окно пользователем book и введите там следующую команду: