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

Читать онлайн.



Скачать книгу

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

      Хорошее описание первичного блока сети Ethereum можно найти, например, здесь: https://arvanaghi.com/blog/explaining-the-genesis-block-in-ethereum/.

      Блок config файла genesis.json содержит переменные конфигурации сети Ethereum.

      Поле chainId содержит идентификатор блокчейна. Он используется для защиты от репликации, т.е. от неавторизованных действий пользователей, пытающихся действовать от имени настоящего отправителя данных.

      Если речь идет о главной сети Ethereum, то ее идентификатор равен 1. Идентификатор тестовой сети Rinkeby равен 4. При создании нашей приватной сети мы можем указать любое значение, отличное от известных. Мы выбрали значение 1999.

      Значение 0 в поле homesteadBlock указывает на то, что мы будем