Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство - Александр Вячеславович Фролов 7 стр.


Установите в микрокомпьютер карту памяти MicroSD объемом не меньше 8 Гбайт.

После того как установка и настройка Rasberian будут завершены, монитор и клавиатуру можно будет отключить.

Хорошую инструкцию по начальной подготовке Raspberry Pi 3 к работе можно найти здесь: http://dmitrysnotes.ru/raspberry-pi-3-obzor-i-nachalo-raboty.

Установка Rasberian

Прежде всего нужно отформатировать карту памяти MicroSD. В ОС Microsoft Windows воспользуйтесь для этого бесплатной утилитой SD Memory Card Formatter, загрузив ее с сайта https://www.sdcard.org/downloads/formatter_4/. Стандартные средства форматирования ОС Microsoft Windows не подойдут.

Далее нужно скачать дистрибутив Raspbian с сайта https://www.raspberrypi.org/downloads/raspbian/. Для наших целей подойдет версия Raspbian Stretch Lite. Загрузите архив Zip и распакуйте его. В итоге вы получите файл с расширением имени img, например, 2018-04-18-raspbian-stretch-lite.img.

Запишите этот файл на предварительно отформатированную карту памяти MicroSD. Это можно сделать с помощью бесплатной утилиты Rufus. Загрузите ее с сайта https://rufus.akeo.ie/.

Далее установите подготовленную таким способом карту в Raspberry Pi и включите питание. Проследите процесс начальной загрузки Rasberian на мониторе.

В первый раз для подключения через консоль используйте имя пользователя pi и пароль raspberry. После подключения сразу смените пароль с помощью утилиты passwd.

Установка обновлений

Сразу после установки микрокомпьютер получит динамический адрес IP от сервера DHCP вашего роутера, и вы сможете продолжить установку.

Прежде всего установите обновления пакетов до актуальной версии:


sudo apt-get update

sudo apt-get upgrade

Включение доступа SSH

Чтобы с микрокомпьютером можно было работать удаленно через SSH, нужно включить такую возможность. Для этого в консоли введите следующую команду:


sudo raspi-config


Выберите в списке строку 5. Interfacing options, найдите в списке SSH и включите.

Установка статического адреса IP

Для удаленной работы через SSH будет удобно, если микрокомпьютеру будет выделен статический адрес IP. Чтобы это сделать, отредактируйте файл /etc/dhcpcd.conf:


sudo nano /etc/dhcpcd.conf


Уберите символы комментария # со следующих строк:


interface eth0

static ip_address=192.168.0.38/24

static ip6_address=fd51:42f8:caae:d92e::ff/64

static routers=192.168.0.1

static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1


Также в строке static ip_address укажите нужный адрес IP. Заметим, что этот адрес нужно исключить из DHCP соответствующей настройкой вашего роутера.

После изменения файла перезагрузите микрокомпьютер:


sudo shutdown -r now


Теперь вы можете подключиться к нему удаленно с помощью любого клиента SSH по статическому адресу. Если удаленный доступ работает, вы можете отключить клавиатуру и монитор от Raspberry Pi и продолжить работу через SSH.

Дальнейшие действия очень похожи на то, что мы делали в предыдущем уроке. Однако есть и отличия.

Установка необходимых утилит

Как и на прошлом уроке, мы рекомендуем вам установить редактор vim, утилиты sudo и git:


# apt-get install vim

# apt-get install sudo

# apt-get install git


Создайте пользователя book и при помощи команды visudo добавьте этому пользователю возможность работать с командой sudo, как мы это делали на предыдущем уроке.

Установка Go

Мы будем работать с Go версии 1.9.6. Установка для Rasbian очень похожа на установку для Debian, однако вам потребуется дистрибутив, рассчитанный на архитектуру процессора ARM.

Загрузка дистрибутива Go

Как мы уже говорили, дистрибутивы Go различных версий и для различных платформ можно найти здесь: https://golang.org/dl/.

Подключимся к нашему микрокомпьютеру Raspberry Pi пользователем book и загрузим архив Go нужной версии:


$ curl -O https://dl.google.com/go/go1.9.6.linux-armv6l.tar.gz


Как и на предыдущем уроке, вам нужно добавить возможность работать пользователю book с командой sudo, для чего нужно воспользоваться командой visudo.

Добавьте в конец файла /etc/sudoers строку:


book ALL=(ALL) ALL


Подключитесь к консоли с правами пользователя book и распакуйте загруженный архив в каталог /usr/local:


$ sudo tar -C /usr/local -xzf go1.9.6.linux-armv6l.tar.gz

Добавьте в конец файла /etc/sudoers строку:


book ALL=(ALL) ALL


Подключитесь к консоли с правами пользователя book и распакуйте загруженный архив в каталог /usr/local:


$ sudo tar -C /usr/local -xzf go1.9.6.linux-armv6l.tar.gz


Обратите внимание, что здесь мы распаковываем файл дистрибутива для процессоров ARM.

Установка переменных окружения

Создайте в домашнем каталоге пользователя book каталог go и установите переменные окружения:


$ mkdir -p ~/go; echo "export GOPATH=$HOME/go" >> ~/.bashrc

$ echo "export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin" >> ~/.bashrc

$ source ~/.bashrc


Проверьте, что переменные окружения установлены:


$ printenv | grep go


GOPATH=/root/go

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/go/bin:/usr/local/go/bin

Проверка версии Go

Прежде чем перейти собственно к установке Geth и Swarm, нужно проверить версию go. Теперь должно быть указано, что установлена версия 1.9.6 для процессоров ARM:


$ go version

go version go1.9.6 linux/arm

Установка Geth и Swarm

Установка Geth и Swarm выполняется аналогично тому, как мы это делали на предыдущем уроке.

Загрузите исходный код Geth из репозитория на GitHub:


$ mkdir -p $GOPATH/src/github.com/ethereum

$ cd $GOPATH/src/github.com/ethereum


$ git clone https://github.com/ethereum/go-ethereum

$ cd go-ethereum

$ git checkout master


$ go get github.com/ethereum/go-ethereum


Запустите компиляцию клиента Geth и Swarm:


go install -v ./cmd/geth

go install -v ./cmd/swarm


Если при компиляции появились ошибки, попробуйте установить Go другой версии. Перед этим удалите все каталоги, созданные в процессе предыдущей установки.

Если же все хорошо, то осталось только проверить версию установленного Geth и Swarm:


$ geth version

Geth

Version: 1.8.9-unstable

Architecture: arm


Protocol Versions: [63 62]

Network Id: 1

Go Version: go1.9.6

Operating System: linux

GOPATH=/home/book/go

GOROOT=/usr/local/go


$ swarm version

Swarm

Version: 1.8.9-unstable

Network Id: 0

Go Version: go1.9.6

OS: linux

GOPATH=/home/book/go

GOROOT=/usr/local/go


Обратите внимание, что команда geth version сообщает о том, что она работает на процессоре с архитектурой ARM.

Создаем приватный блокчейн

На предыдущем уроке мы создавали приватный блокчейн, подготовив для него первичный блок в файле genesis.json. Затем мы создали в домашнем каталоге пользователя book рабочий каталог node1, создали аккаунт, запустили инициализацию узла и, наконец, запустили узел нашего блокчейна. При этом был создан файл DAG с направленным ациклическим графом и запущен майнинг. В другой консоли мы подключились к нашему узлу и выдали там несколько команд Web3.

На этот раз мы сделаем все намного проще. Создадим рабочий каталог node1 для размещения данных блокчейна:


$ mkdir node1


Теперь запустим узел приватной сети при помощи следующей команды:


$ geth datadir node1 networkid 98760 dev rpc rpcapi="db,eth,net,web3,personal,web3" console


В окне консоли появятся сообщения о запуске узле сети.

Сохраните команду запуска узла в пакетном файле с именем start_node.sh (листинг 3.1.).

Листинг 3.1. Файл start_node.sh


geth datadir node1 networkid 98760 dev rpc rpcapi="db,eth,net,web3,personal,web3" console


Обратите внимание, что мы указали здесь те же значения параметров datadir, networked, rpc и rpcapi, что и на предыдущем уроке.

Для подключения к запущенному таким способом узлу вы можете использовать ту же самую команду, что и раньше:


$ geth datadir node1 networkid 98760 attach ipc://home/book/node1/geth.ipc


Запишите команду подключения в файл attach_node.sh для удобства (листинг 3.2.).

Листинг 3.2. Файл attach_node.sh


geth datadir node1 networkid 98760 attach ipc://home/book/node1/geth.ipc

Проверка учетной записи и баланса

Запустите файл attach_node.sh и в приглашении консоли Geth введите команду accounts:


> web3.eth.accounts

["0xd902f8405a6108e8bd9343d1bfccf21a081d2897"]


Оказывается, в нашем тестовом узле уже определен пользователь, хотя мы не создавали его явным образом и не задавали пароль, как на прошлом уроке. У этого пользователя пустой пароль.

Попробуйте также ввести команду web3.version:


> web3.version

{

 api: "0.20.1",

 ethereum: "0x3f",

 network: "98760",

 node: "Geth/v1.8.9-unstable/linux-arm/go1.9.6",

Назад Дальше