Александр Фролов - Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
- Название:Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:2019
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Фролов - Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство краткое содержание
Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
$ sudo apt-get install ethereum-swarm
После установки проверьте версию Swarm:
$ swarm version
Swarm
Version: 0.3.11-stable
Git Commit: c942700427557e3ff6de3aaf6b916e2f056c1ec2
Go Version: go1.10.4
OS: linux
Если установка прошла успешно, переходите к разделу урока, посвященного созданию приватного блокчейна.
В том случае, когда при установке произошли ошибки, попробуйте найти решение в поисковой системе Google. Заметим, что ошибки часто связаны с обновлением версий устанавливаемого ПО.
Установка Geth и Swarm в Debian
Установку Geth и Swarm в ОС Debian нужно выполнять из исходных текстов. При этом вначале нужно будет установить Go, а затем уже собственно Geth и Swarm.
На момент создания нашей книги была доступна версия Go 1.12.1. Заметим, что Geth и Swarm находятся в состоянии постоянного совершенствования. Не исключено, что к моменту, когда вы начнете работу над этой книгой, для них придется устанавливать новую версию Go.
Предварительная подготовка
Прежде всего обновите пакеты и установите необходимые утилиты:
$ sudo apt-get update
$ sudo apt-get upgrade
$ apt-get install vim sudo git curl gcc mc
Если вы при установке ОС не добавили пользователю book возможность работы с командой sudo, сделайте это аналогично тому, как это было описано ранее для Ubuntu.
После этого можно переходить к установке Go и Geth.
Загрузка дистрибутива Go
Дистрибутивы Go различных версий и для различных платформ можно найти здесь: https://golang.org/dl/.
Прежде всего подключимся к нашему серверу (физическому или виртуальному) пользователем book и загрузим архив Go нужной версии:
$ 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) цепочки блоков – самый первый блок блокчейна. Так как мы создаем наш приватный блокчейн, то и о первом блоке мы должны позаботиться сами.
Хорошее описание первичного блока сети Ethereum можно найти, например, здесь: https://arvanaghi.com/blog/explaining-the-genesis-block-in-ethereum/.
Блок configфайла genesis.json содержит переменные конфигурации сети Ethereum.
Поле chainIdсодержит идентификатор блокчейна. Он используется для защиты от репликации, т.е. от неавторизованных действий пользователей, пытающихся действовать от имени настоящего отправителя данных.
Если речь идет о главной сети Ethereum, то ее идентификатор равен 1. Идентификатор тестовой сети Rinkeby равен 4. При создании нашей приватной сети мы можем указать любое значение, отличное от известных. Мы выбрали значение 1999.
Значение 0 в поле homesteadBlockуказывает на то, что мы будем использовать релиз сети Ethereum под названием Homestead. Homestead представляет собой второй релиз сети Ethereum (первый релиз назывался Frontier). Нулевое значение этого параметра используется и в основной сети Ethereum.
Немного о параметрах с префиксом EIP. При реализации Homestead был обновлен протокол, причем без обратной совместимости с предыдущим релизом Ethereum. Соответствующие изменения отражены в документах «Предложения по улучшению Ethereum» (Ethereum Improvement Proposals, EIPs), опубликованных на сайте https://eips.ethereum.org/.
Реализация изменений может потребовать выполнения так называемой процедуры хардфорка (hard-forking), или обновления ПО узлов. В результате этой процедуры может меняться структура блока, появляется возможность использовать ранее недоступные блоки и вносить различные изменения в протокол.
Так как мы не будем делать хардфорк, то установим значения соответствующих параметров eip155Blockи eip158Blockравными нулю.
Читать дальшеИнтервал:
Закладка: