banner banner banner
Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Создание смарт-контрактов Solidity для блокчейна Ethereum. Практическое руководство
Оценить:
Рейтинг: 5

Полная версия:

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

скачать книгу бесплатно


Итоги урока

На первом уроке вы познакомились с блокчейном и узнали, что он представляет собой особым образом составленную последовательностью блоков. Содержимое ранее записанных блоков невозможно изменить, так как для этого придется пересчитать все последующие блоки на многих узлах сети, на что нужно очень много ресурсов и времени.

Блокчейн может применяться для сохранения результатов выполнения транзакций. Его главное назначение – организация безопасного выполнения транзакций между сторонами (персонами и организациями), между которыми нет доверия. Вы узнали, в каких конкретно областях бизнеса и в каких сферах можно использовать блокчейн Ethereum и смарт-контракты Solidity. Это банковская сфера, регистрация прав собственности, документов и т.п.

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

Также мы кратко рассказали о майнинге как о процессе добавления новых блоков в блокчейн. Майнинг необходим для выполнения транзакций. Те, кто занимается майнингом, обеспечивают работоспособность блокчейна и получают за это вознаграждение в криптовалюте.

Урок 2. Подготовка рабочей среды в ОС Ubuntu и Debian

Прежде чем мы займемся изучением смарт-контрактов Ethereum, нам необходимо подготовить рабочую среду – установить операционную систему (ОС) и необходимое программное обеспечение (ПО).

Мы могли бы приступить к работе сразу в какой-либо интегрированной среде разработки (IDE, Integrated Development Environment), например, Remix или Truffle. Возможно, это был бы самый быстрый путь к изучению смарт-контрактов Solidity. Однако для того, чтобы глубже разобраться в том, как работает Ethereum, мы начнем с базовых инструментов.

Выбор операционной системы

Свой первый узел сети Ethereum мы будем делать на базе клиента Go Ethereum (https://geth.ethereum.org/). Это ПО представляет собой реализацию протокола Ethereum и реализовано на языке программирования Go и доступно в виде программы Geth. На базе Geth можно создать полнофункциональный узел сети Ethereum.

Для работы с узлом Geth можно использовать интерфейс командной строки, а также программный интерфейс (API, Application Programming Interface) JSON RPC. Используя этот интерфейс и различные фреймворки, вы сможете создавать ПО, работающее с узлами Ethereum, практически на всех современных языках программирования.

Клиент Geth может работать на платформах, где имеется Go (это, например, Linux, Mac OSX, Windows, Raspberry Pi, Android OS, iOS). На странице загрузки https://geth.ethereum.org/downloads/ (https://geth.ethereum.org/downloads/) доступны реализации для Linux, macOS и Windows. Также вы можете загрузить исходные коды Geth.

При работе над книгой мы использовали OC Ubuntu Live Server 18.04.2, Ubuntu 18.10 cosmic, Debian версий 9 и 10 Alfa 5, хотя Geth можно установить и на другие сборки Linux. На следующем уроке мы выполним установку Geth на OC Rasberian для микрокомпьютера Raspberry Pi 3.

Для изучения Ethereum можно арендовать виртуальный или облачный сервер у одного из провайдеров. Также вы можете установить эти ОС на свой настольный компьютер, непосредственно на его диск или на виртуальную машину, например, VMware Workstation, или воспользоваться другой системой виртуализации.

Описание процесса установки Ubuntu и Debian выходит за рамки нашей книги, но в интернете есть немало достаточно подробных руководств, посвященных этому вопросу. Кроме того, при аренде виртуального или облачного сервера провайдер обязательно поможет установить на него ОС. Учтите, что вам нужна 64-разрядная версия ОС Ubuntu и Debian.

Для работы над книгой мы использовали облачный виртуальный сервер в следующей конфигурации:

• 4 ядра CPU с тактовой частотой 2 GHz;

• 2 GB RAM;

• 20 GB Disk SSD.

Мы также установили OC Ubuntu 18.10 cosmic в виртуальную машину VMware Workstation с такой конфигурацией:

• 8 ядер CPU с тактовой частотой 2 GHz;

• 8 GB RAM;

• 100 GB Disk SATA.

Конфигурация виртуального сервера влияет на скорость майнинга новых блоков. Чтобы нам было удобно работать, эта скорость не должна быть слишком низкой. Не рекомендуем, в частности, использовать менее 2 Гбайт оперативной памяти.

Для микрокомпьютеров Raspberri Pi, где памяти меньше, есть решение, о котором мы расскажем на следующем уроке.

Сразу после установки ОС Ubuntu или Debian обновите пакеты при помощи команды apt-get:

$ sudo apt-get update

$ sudo apt-get upgrade

Если в Ubuntu Server обновилось ядро, может потребоваться перезагрузка ОС. Сообщение об этом вы увидите при подключении к консоли:

*** System restart required ***

В этом случае перед продолжением работы выполните перезагрузку:

$ sudo shutdown -r now

Пакеты Ubuntu можно также обновлять также через менеджер обновлений в графическом интерфейсе.

Обновление пакетов нужно делать с правами пользователя root.

Установка необходимых утилит

В ОС Ubuntu установите сервис ssh, если вы планируете подключаться к консоли удаленно (по умолчанию в десктопной версии сервис ssh не устанавливается, при установке Ubuntu Live Server нужно отметить соответствующий флажок).

В качестве имени пользователя при начальной установке ОС укажите book, чтобы у этого пользователя сразу была возможность работать с командой sudo.

Вы также можете создать пользователя book уже после установки Ubuntu. В этом случае при помощи команды visudo добавьте этому пользователю возможность работать с командой sudo. Для этого запустите с правами пользователя root такую команду:

# visudo

Откроется редактор файла /etc/sudoers. Вам нужно добавить в конец этого файла следующую строку:

book ALL=(ALL) ALL

Для установки сервиса ssh введите следующую команду:

$ sudo apt-get install ssh

Далее в Ubuntu и Debian установите редактор vim (если вам удобно в нем работать), утилиты sudo (если она не установлена), git, curl, gcc и mc (mc устанавливать не обязательно, пригодится, если только вы привыкли работать с Midnight Commander):

$ sudo apt-get install vim sudo git curl gcc mc

Для того чтобы обезопасить ваш сервер от атак типа брутфорса (перебор паролей) на порт SSH, установите fail2ban:

$ sudo apt-get install fail2ban

Мы настоятельно рекомендуем использовать эту утилиту в рабочем окружении вместе с брандмауэром.

Установка Geth и Swarm в Ubuntu

Далее мы перейдем к установке Geth, а также ПО узла распределенного хранилища данных Swarm (потребуется позже, на 10 уроке).

Проще всего установить Geth в ОС Ubuntu. Процедура описана здесь: https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu (https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu).

Для установки выполните следующие команды:

$ sudo apt-get install software-properties-common

$ apt-get install build-essential

$ sudo add-apt-repository -y ppa:ethereum/ethereum

$ sudo apt-get update

$ sudo apt-get install ethereum

Вы также можете установить девелоперскую (нестабильную версию Geth), для чего выполните такую команду:

$ sudo apt-get install ethereum-unstable

После установки проверьте версию Geth:

$ geth version

Geth

Version: 1.8.23-stable

Git Commit: c942700427557e3ff6de3aaf6b916e2f056c1ec2

Architecture: amd64

Protocol Versions: [63 62]

Network Id: 1

Go Version: go1.10.4

Operating System: linux

GOPATH=

GOROOT=/usr/lib/go-1.10

Как видите, здесь мы установили Geth стабильной версии 1.8.23 и Go версии 1.10.4.

Для установки распределенного хранилища данных Swarm на локальный тестовый узел используйте следующую команду:

$ 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/ (https://golang.org/dl/).

Прежде всего подключимся к нашему серверу (физическому или виртуальному) пользователем book и загрузим архив Go нужной версии:

$ curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz (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.