Создайте пользователя 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
Обратите внимание, что здесь мы распаковываем файл дистрибутива для процессоров 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.).