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