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




>$ curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz


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


>$ sudo tar -C /usr/local -xzf go1.12.1.linux-amd64.tar.gz


У вас будет запрошен пароль пользователя book. Команда sudo необходима, так как обычному пользователю запрещена запись файлов в каталог /usr/local.

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

Далее мы создаем в домашнем каталоге пользователя 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:


>$ go version

>go version go1.12.1 linux/amd64


Если у вас версия 1.12.1, то все нормально. Но если ранее по каким-то причинам на вашем сервере была установлена старая версия go из репозитория, удаляем ее так:


>sudo apt-get remove golang-go

>sudo apt-get remove –auto-remove golang-go

Установка 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.9.0-unstable

>Architecture: amd64

>Protocol Versions: [63 62]

>Network Id: 1

>Go Version: go1.12.1

>Operating System: linux

>GOPATH=/home/book/go

>GOROOT=/usr/local/go


>$ swarm version

>Swarm

>Version: 0.3.12-unstable

>Go Version: go1.12.1

>OS: linux


Как видите, были установлены нестабильные версии Geth и Swarm. С помощью whereis вы можете определить, в какой каталог была выполнена установка:


>$ whereis geth

>geth: /home/book/go/bin/geth


Чтобы установить стабильную версию, загрузите ее бинарный код с сайта https://geth.ethereum.org/downloads/. Затем извлеките из архива программу geth и скопируйте в отдельный каталог.

Актуальную инструкцию по установке Geth и Swarm можно найти по адресу https://media.readthedocs.org/pdf/swarm-guide/latest/swarm-guide.pdf.

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

Для того чтобы быстро освоить процесс создания смарт-контрактов, нам нужен блокчейн. Вначале создадим приватный блокчейн на своем сервере, так как с ним проще всего работать. Далее мы будем использовать тестовую сеть Rinkeby, работающую в точности как Ethereum и пригодную для отладки «настоящих» контрактов перед публикацией в Ethereum.

Готовим файл genesis.json

Прежде всего создайте в домашнем каталоге пользователя book файл genesis.json (листинг 2.1.).

>Листинг 2.1. Файл genesis.json


>{

> "config": {

>    "chainId": 1999,

>    "homesteadBlock": 0,

>    "eip155Block": 0,

>    "eip158Block": 0

> },

> "difficulty": "10",

> "gasLimit": "5100000",

> "alloc": {}

>}


Этот файл описывает первичный блок (genesis block) цепочки блоков – самый первый блок блокчейна. Так как мы создаем наш приватный блокчейн, то и о первом блоке мы должны позаботиться сами.