Освоение блокчейна.

Имран Башир

 

Первая публикация на английском языке: март 2017

Ссылка на продукт: 1090317

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

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

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

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1-78712-544-5

www.packtpub.com

2018-01-25

 Состав исполнителей

Издания на английском языке
Автор
Имран Башир
Рецензент
Дэниэл Крафт
Редактор выпуска
Вина Паджейр
Редактор
Аджит Минон
Редакторы разработки содержания
Сумит Савант
Амрайта Норонха
Технический редактор
Найлиш Сэйвакханде
Литературный редактор
Лакшми Сабреймейньян
Координатор проекта
Швита Х. Бирваткар
Корректор
Safis Editing
Составитель указателя
Прейтик Шайродкар
Графика
Таня Дутта
Координатор производства
Шарадха Фейлбхай

 Об авторе

Имран Башир

 Рецензент

 www.PacktPub.com

 Содержание

Предисловие
Что охватывает эта книга
Что вам нужно для этой книги
Для кого эта книга
Соглашения
Обратная связь с читателями
Поддержка пользователей
Загрузка цветных изображений этой книги
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Азы блокчейн
Распределённые системы
Теорема CAP
Проблема Византийских генералов
Консенсус
Механизм консенсуса
Виды механизма консенсуса
История блокчейна
Электронный кеш
Концепция электронных денег
Введение в блокчейн
Различные технические определения блокчейнов
Общие элементы блокчейна
Адреса
Транзакции
Блок
Одноранговая сеть
Язык сценариев или программирования
Виртуальная машина
Машина состояний
Узлы
Интеллектуальные контакты
Свойства блокчейна
Распределённое согласие
Распределённое согласие
Платформы для адаптивных контрактов
Обмен значениями в одноранговой сети
Выработка криптовалюты
Свойство интеллектуальности
Поставщик безопасности
Неизменность
Уникальность
Адаптивные контракты
Приложения технологии блокчейна
Как блокчейны накапливают блоки
Уровни технологии блокчейна
Blockchain 1.0
Blockchain 2.0
Blockchain 3.0
Поколение X (Blockchain X)
Виды блокчейна
Общедоступные блокчейны
Частные блокчейны
Частично частные блокчейны
боковые цепи
Разрешённые журналы регистрации
Распределённые журналы регистрации
Совместные журналы регистрации
Полностью частные и проприетарные блокчейны
Помеченные блокчейны
Блокчейны без меток
Согласие в блокчейне
Подтверждение Работы
Подтверждение Доли
Подтверждение Работы и Доли
Подтверждение Истекшего времени
Согласие на основе депозита
Подтверждение важности
Федеральное согласие и федеральное Византийское согласие
Механизмы на основе репутации
Практика Византийской устойчивости к отказам
Теорема CAP и блокчейн
Преимущества и ограничения блокчейна
Децентрализация
Прозрачность и доверительные отношения
Неизменность
Высокая доступность
Высокая безопасность
Упрощение текущих парадигм
Более быстрое вовлечение
Сбережение затрат
Вызовы и ограничения технологии блокчейна
Выводы
Глава 2. Децентрализация
Децентрализация с применением блокчейна
Методы децентрализации
Отказ от посредничества
Сквозь конкуренцию
Маршруты децентрализации
Как осуществить децентрализацию
Примеры
Децентрализация блокчена и полной экосистемы
Хранение
Взаимодействие
Вычисление
Адаптивный контракт
Децентрализованные организации
Децентрализованные автономные организации
Децентрализованные автономные корпорации
Децентрализованные автономные сообщества
Децентрализованные приложения
Требования децентрализованного приложения
Операции DAPP
Примеры
KYC-Chain
OpenBazaar
Lazooz
Платформы для децентрализации
Ethereum
Maidsafe
Lisk
Выводы
Глава 3. Основы криптографии и техники
Введение
Математика
Набор
Группа
Поле
Конечное поле
Порядок
Первичные поля
Кольцо
Циклическая группа
Абелева группа
Модульная арифметика
Криптография
Конфиденциальность
Целостность
Аутентификация
Аутентификация сущности
Аутентификация происхождения данных
Невозможность отказа от авторства
Подотчётность
Примитивы криптографии
Симметричная криптография
Потоковые шифры
Блочные шифры
Режим шифрации блока
Режимы выработки потока ключей
Режимы аутентификации сообщений
Криптографические хэши
Электронная книга кодов
Шифр блочной цепи
Режим счётчика
DES
AES
Этапы AES
OpenSSL как пример шифрации и дешифрации с применением AES
Несимметричная криптография
Целочисленная факторизация
Дискретный логарифм
Эллиптические кривые
Общедоступные и частные ключи
RSA
Шифрование и дешифрация посредством RSA
ECC (Шифрование элиптическими кривыми)
Стоящая за ECC математика
Точка добавления
Точка дублирования
Проблема дискретного логарифма
Как выработать пару общедоступного и частного ключей
Частный ключ
Генерация частного ключа
Как шифровать и дешифровать при помощи OpenSSL с применением RSA
Шифрация
Дешифрация
ECC с применением OpenSSL
Пара из частного и общедоступного ключей ECC
Частный ключ
Генерация частного ключа
Примитивы криптографии
Функции хэширования
Сжатие произвольных сообщений до приведения к фиксированной длине
Простота вычисления
Устойчивость предварительного образа
Повторная устойчивость предварительного образа
Устойчивость к противоречивости
MD (Свёртка сообщения)
SHA (Алгоритмы безопасного хэширования)
Архитектура SHA
SHA-256
Архитектура SHA3 (Keccak)
OpenSSL пример функции хэширования
MAC (Коды аутентификации сообщений)
MAC с применением блочного шифрования
HMAC (MAC на основании хэширования)
Деревья Меркла
Деревья Patricia
DHT (Распределённые таблицы хэширования)
Подписать, затем зашифровать
Зашифровать, затем подписать
ECDSA (Алгоритм цифровой подписи эллиптической кривой)
Как выработать цифровую подпись
ECDSA с применением OpenSSL
Гомоморфное шифрование
Шифрование подписи
Подтверждения с нулевыми знаниями
Подпись вслепую
Схемы дешифрации
Выводы
Глава 4. Биткойн
Биткойн
Определение биткойна
Ключи и адреса
Общедоступные ключи в биткойне
Частные ключи в биткойне
Денежные единицы биткойна
Декодирование Base58Check
Честолюбивые адреса
Транзакции
Жизненный цикл транзакции
Структура транзакции
Язык сценариев
Обычно применяемые коды операций
Виды транзакций
Транзакции монетной основы
Что такое UTXO?
Плата за транзакцию
Контракты
Приспособляемость транзакции
Пулы транзакций
Проверка правильности транзакции
Блокчейн
Структура блока
Структура заголовка блока
Блок порождения
Майнинг
Задача майнеров
Синхронизация с сетью
Пул Работ
Собственно алгоритм майнинга
Скорость хэширования
Системы майнинга
CPU
GPU
FPGA
ASIC
Пулы майнинга
Сетевая среда биткойна
Кошельки
Типы кошельков
Не детерминированные кошельки
Детерминированные кошельки
Иерархически детерминированные кошельки
Интеллектуальные кошельки
Бумажные кошельки
Аппаратные кошельки
Интерактивные кошельки
Мобильные кошельки
Биткойн платежи
Инвестиции в биткойн, а также покупка и продажа биткойнов
Установка биткойна
Установка узла биткойна
Установка исходного кода
Установка bitcoin.conf
Запуск узла в testnet
Запуск узла в regtest
Запуск узла в mainnet реального времени
Эксперименты с bitcoin-cli
Программирование биткойна и интерфейс командной строки
Планы улучшения биткойна (BIP)
Выводы
Глава 5. Альтернативные койны
Теоретические основы
Альтернативы Подтверждению Работы
Подтверждение Хранения
Подтверждение Вехи
Подтверждение чеканки монет
Подтверждение депозита
Подтверждение прожига
Подтверждение активности
Головоломки без права доступа
Сложность алгоритмов регулировки и изменения цели
Kimoto Gravity Well
Dark Gravity Wave
DigiShield
MIDAS
Ограничения биткойна
Частное владение и анонимность
Смешанные протоколы
Смешанные протоколы сторонних разработчиков
Анонимность в Интернете
Расширенные протоколы поверх биткойна
Окрашенные койны
Стороны заключения сделки
Разработка альткойнов
Алгоритмы согласования
Алгоритмы хэширования
Сложности алгоритмов регулировки
Время между блоками
Вознаграждение блоком
Скорость получения вознаграждения
Размер блока и размер транзакции
Скорость получения выгоды
Возраст койна
Общая поддержка койнов
Namecoin
Биржа Namecoin
Получение Namecoin
Генерация записей Namecoin
Litecoin
Primecoin
Биржа Primecoin
Руководство майнинга
Zcash
Биржа Zcash
Руководство майнинга
Выработка адреса
Майнинг GPU
Выгрузка и компиляция nheqminer
Выводы
Глава 6. Адаптивные контракты
История
Определение
Рикардианские контракты
Шаблоны адаптивных контрактов
Оракулы
Адаптивные Оракулы
Развёртывание адаптивных контрактов в блокчейне
DAO
Выводы
Глава 7. Азы Эфириума
Введение
Клиенты и выпуски Эфириума
Стек Эфириума
Блокчейн Эфириум
Валюта (ETH и ETC)
Разветвления
Газ
Механизм согласия
Всемирное состояние
Состояние учётной записи
Данное время
Баланс
Корень хранения
Хэшкод
Транзакции
Nonce
gasPrice
gasLimit
To
Value
Signature
Init
Data
Транзакции создания контракта
Транзакции вызова сообщения
Элементы блокчейна Эфириум
EVM (Виртуальная машина Эфириум)
Среда исполнения
Машина состояний
Функция итератор
Исполняемый байтовый код
Коды операций и их значение
Арифметические операции
Логические операции
Криптографические операции
Информация окружения
Информация блока
Операции стека, памяти, хранения и потока
Операции активной доставки
Операции дублирования
Операции обмена
Операции регистрации
Системные операции
Предварительно скомпилированные контракты
Функция восстановления общедоступного ключа эллиптической кривой
Хэширующая функция SHA-256 бит
Хэширующая функция RIPEMD-160 бит
Функция идентификации
Учётные записи
Виды учётных записей
Блоки
Заголовок блока
Родительский хэш
Хэш дядюшки
Выгодополучатель
Корень состояния
Корень транзакций
Корень квитанций
Журналы bloom
Сложность
Число
Предел газа
Использованный газ
Временной штамп
Дополнительные данные
Смешанный хэш
Данное время
Порождающий блок
Квитанции транзакций
Состояние после транзакции
Использованный газ
Набор журналов регистрации
Фильтр bloom
Проверка подлинности и исполнение транзакции
Субсостояния транзакции
Набор самоубийств
Последовательности регистрации
Возмещение баланса
Механизм проверки подлинности блока
Финализация блока
Проверка достоверности дядюшки
Проверка подлинности транзакции
Приложение вознаграждения
Проверка подлинности состояния и Данного времени
Сложность блока
Эфир
Газ
Перечень вознаграждений
Сообщения
Вызовы
Майнинг
Ethash
Майнинг CPU
Майнинг GPU
Эталонное тестирование CPU
Эталонное тестирование GPU
Экипировка майнинга
Материнская плата
Жёсткий диск SSD
GPU
Пулы майнинга
Клиенты и кошельки
Geth
Eth
Pyethapp
Parity
Лёгкие клиенты
Установка
Установка Eth
Браузер Mist
Geth
Консоль geth
Учреждение учётной записи с помощью биткойна
Установка Parity
Создание учётных записей при помощи командной строки Parity
Биржа и инвестиции
Жёлтые страницы
Полезные символы
Сетевая среда Эфириум
MainNet
TestNet
Частная сеть (сети)
Поддерживаемые протоколы
Whisper
Swarm
Разработка приложений в Эфириум
Масштабирование и проблемы безопасности
Выводы
Глава 8. Разработка Эфириума
Настройка среды
Сеть тестирования (Ropsten)
Установка частной сети
Идентификатор сетевой среды
Порождающий файл
Каталог данных
Флаги и их значение
Статические узлы
Запуск частной сети
Исполнение Mist в частной сети
Оснащение контрактов с помощью Mist
Инструменты и клиенты разработки
Языки
Компиляторы
Solc
IDE (Интегрированные среды разработки)
Браузер Solidity
Ремикс
Установка
Инструменты и библиотеки
Node.js версии 7
Локальный проводник блока Эфириума
EthereumJS
Разработка и развёртывание контракта
Введение в Solidity
Типы
Определяемые значением типы
Булевы
Целые числа
Адреса
Типы значения массива (байтовые массивы фиксированного и динамического размера)
Литералы
Целочисленные литералы
Строковые литералы
Шестнадцатеричные литералы
Перечисления
Типы функций
Внутренние функции
Внешние функции
Ссылочные типы
Массивы
Структуры
Местоположение данных
Соответствия
Глобальные переменные
Структуры управления
События
Наследование
Библиотеки
Функции
Схема файла исходного кода Solidity
Введение Web3
Запросы POST
Интерфейс HTML и JavaScript
Установка web3.js
Пример
Инфраструктуры разработки
Truffle
Установка
Проверка применения truffle
Построение
Другой пример
Пример проекта: Подтверждение идеи
Разрешённые распределённые книги учёта
Выводы
Глава 9. Hyperledger
Проекты
Связная архитектура
Sawtooth lake
Iroha
Проводник блокчейн
Инструмент цепочек Связной архитектуры
SDK Py Связной архитектуры
Corda
Hyperledger как протокол
Эталонная архитектура
Требования
Модульный подход
Приватность и конфиденциальность
Идентификация
Контролируемость
Возможность совместной работы
Переносимость
Связная архитектура
Связная структура Hyperledger
Архитектура строения
Службы членства
Службы блокчейна
Диспетчер согласия
Распределённые книги учёта
Одноранговый протокол
Хранилище книг учёта
Службы кода цепочки
События
API и CLI
Компоненты связной структуры
Одноранговые участники или узлы
Проложения в блокчейне
Реализация кода цепочки
Модель приложения
Sawtooth lake
PoET
Семейства транзакций
Согласие в Sawtooth
Среда разработки
Corda
Архитектура
Объекты состояния
Транзакции
Согласия
Потоки
Компоненты
Узлы
Служба предоставления прав
Служба сетевой карты
Служба защитного слова
Служба Оракула
Транзакции
Сейфы
CorDapp
Среда разработки
Выводы
Глава 10. Альтернативные блокчейны
Блокчейны
Kadena
Ripple
Транзакции
Относящиеся к платежам
Относящиеся к порядку
Относящиеся к учётным записям и безопасности
Уровень приложения
Транспортный уровень
Уровень взаимодействия книг учёта
Уровень книг учёта
Stellar
Rootstock
Drivechain
Кворум
Диспетчер транзакций
Crypto Enclave
QuorumChain
Диспетчер сетевой среды
Tezos
Storj
Maidsafe
BigChainDB
Multichain
Tendermint
Ядро Tendermint
TMSP (Протокол Сокета Tendermint)
Платформы
BlockApps
Установка
разработка и размещение приложений с помощью BlockApps
Eris
Выводы
Глава 11. Блокчейн за пределами валют
Интернет вещей
Уровень физического объекта
Уровень устройства
Уровень сетевой среды
Уровень управления
Прикладной уровень
Эксперимент IoT блокчейна
Установка первого узла
Установка узла Raspberry Pi
Циркуляция
Государственное управление
Пограничный контроль
Голосование
Идентификация граждан (ID card)
Разное
Здравоохранение
Финансы
Страхование
Голосование
Идентификация граждан (ID card)
СМИ
Выводы
Глава 12. Масштабируемость и прочие вызовы
Масштабируемость
Увеличение размера блока
Снижение интервала блока
Инвертируемые таблицы просмотра Bloom
Разделение
Каналы состояния
Частный блокчейн
Подтверждение Вехи
Боковые цепочки
Субцепочки
Деревья цепочек
Приватность
Запутывание неразличимости
Гомоморфное шифрование
Подтверждение с нулевыми знаниями
Каналы состояния
Вычисление составной безопасности
Применение оборудования для обеспечения конфиденциальности
Объединение монет
Конфиденциальные транзакции
MimbleWimble
Безопасность
Безопасность адаптивных контрактов
Формат верификации Why3
Инструмент Oyente
Выводы
Глава 13. Текущий пейзаж и что далее
Пробуждающиеся тенденции
ASBC (Приспосабливаемые под приложения блокчейны)
Блокчейны уровня корпорации
Частные блокчейны
Стартапы
Усиленный исследовательский интерес
Стандартизация
Расширения
Реализации реального мира
Консорциум
Ответы на вызовы времени
Конвергенция
Обучение технологии блокчейн
Занятость
Крипто-экономика
Исследования в криптографии
Новые языки программирования
Исследования и разработка оборудования
Исследования в формальных методах и безопасности
Альтернативы блокчейну
Усилия совместной работы
Блокчейн как служба
Усилия по снижению энергопотребления
Предложения улучшения
BIP -ы
BIP 152
BIP 151
BIP 150
BIP 147
BIP 146
EIP -ы
EIP 170
EIP 150
EIP 161
EIP 160
EIP 155
Прочие вызовы
Тёмная сторона
Исследование блокчейн
Адаптивные контракты
Проблемы централизации
Ограничения в функциях криптографии
Алгоритмы согласия
Масштабируемость
Код запутанности
Список последних заметных проектов
Zcash в Эфириуме
CollCo
Cello
Qtum
Bitcoin-NG
Solidus
Hawk
Town-Crier
SETLCoin
TEEChan
Falcon
Bletchley
Casper
Metropolis
Различные инструменты
Расширения Solidity для Microsoft Visual studio
MetaMask
Stratis
Embark
DAPPLE
Meteor
uPort
INFURA
Сближение с прочими отраслями
Будущее
Выводы
Указатель

 Предисловие

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

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

 Что охватывает эта книга

Глава 1. Азы блокчейн приводят основные понятия распределённых вычислений, на которых основывается технология блокчейна. Она также охватывает историю, определения, свойства, типы и преимущества блокчейнов в соответствиии с механизмами, которые лежат в основе технологии блокчейн.

Глава 2. Децентрализация охватывает необходимые понятия децентрализации и её взаимодействия с технологией блокчейна. Также вводятся различные методы и платформы, которые могут применяться для децентрализации процесса или системы.

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

Глава 4. Биткойн охватывает Биткойн, первый и самый крупный блокчейн. Она вводит технические понятия, относящиеся к подробностям криптовалюты биткойна.

Глава 5. Альтернативные койны вводит альтернативные криптовалюты, которые были предложены после изобретения Биткойна. Она также предоставляет примеры различных альткойнов, их свойства и то как они могут разрабатываться и реализовываться.

Глава 6. Адаптивные контракты предоставляет глубокое обсуждение адаптивных контрактов. В этой главе представлены такие темы, как история, само определение адаптивного контракта (smart contract), Рекардианские контракты, оракулов и необходимые теоретические стороны адаптивных контрактов.

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

Глава 8. Разработка Эфириума предоставляет подробное практическое введение в разработку децентрализованных приложений и адаптивных контрактов с применением данного блокчейна Эфириум. В данную главу также включены введения в Solidity и различные связанные инструменты.

Глава 9. Hyperledger предоставляет обсуждение проекта hyperledger из фонда Linux, который содержит различные проекты блокчейн, предлагаемые его участниками.

Глава 10. Альтернативные блокчейны представляет альтернативные решения и платформы блокчейн. Она предоставляет технические подробности и свойства альтернативных блокчейнов.

Глава 11. Блокчейн за пределами валют представляет практическое и подробное введение в приложения технологии блокчейн на практике, отличающиеся от криптовалют, в том числе Интернет Вещей, государственное управление, СМИ и финансы.

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

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

 Что вам нужно для этой книги

Все примеры этой книги были разработаны в Ubuntu 16.04.1 LTS (Xenial). Раз так, рекомендуется применять Ubuntu. Хотя может применяться любая операционная система, будь то Windows или Linux, однако примеры, в особенности те, которые относятся к установке, могут потребовать надлежащих изменений.

Относящиеся к криптографии примеры были разработаны с использованием инструмента командной строки OpenSSL 1.0.2g 1 Mar 2016.

Примеры Solidity Эфириума были разработаны с применением Browser Solidity, доступными через интернет https://ethereum.github.io/browser-solidity/.

Для разработки примеров, относящихся к Эфириуму, применяется редакция homestead (фермы) Эфириум. На момент написания данной книги именно она была самой последней из доступных для выгрузки версий по ссылке https://www.ethereum.org/.

относящиеся к IoT примеры были разработаны с использованием набора Vilros Raspberry Pi, применяемого для построения аппаратного примера IoT. Для примеров IoT применялись соответствующие выгружаемые пакеты Node.js V7.2.1 и npm V3.10.10, а также исполнялся сервер Node.js.

В некоторых примерах адаптивных контрактов (smart contract) применялась инфраструктура Truffle, и она доступна по ссылке http://truffleframework.com/. Все последующие доступные через npm версии должны быть удовлетворительными.

 Для кого эта книга

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

 Соглашения

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

Кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter представлены следующим образом: "Эта строка кода просто применяет console.log для печати имеющейся базы монет путём вызова метода web3.eth.coinbase".

Блок кода устанавливается следующим образом:


function difference(uint x) returns (uint y)
{
    z=x-5;
    y=z;
}
 	   

Если мы желаем привлечь ваше внимание к определённой части кода в некотором блоке кода, соответствующая строк4а или элемент отмечается жирным шрифтом:


function difference(uint x) returns (uint y)
{
    z=x-5;
    y=z;
}
 	   

Любой ввод командной строки или её вывод записываются следующим образом:


$ geth --datadir .ethereum/PrivateNet/ --networkid 786 --rpc --rpccorsdomain 'http://192.168.0.17:9900'
 	   

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

[Замечание]Замечание

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

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Обратная связь с читателями

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

Для отправки обычного отклика просто пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения.

Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу www.packtpub.com/authors.

 Поддержка пользователей

Теперь, когда вы являетесь гордым владельцем книги Packt, у нас есть целый ряд моментов для помощи вам в получении максимальной выгоды от вашей покупки.

 Загрузка примеров кода

Вы можете загрузить файлы примеров кода по адресу из своей учётной записи: http://www.packtpub.com. Если вы приобрели книгу где- либо ещё, вы можете посетить http://www.packtpub.com/support и зарегистрироваться для получения этих файлов по электронной почте непосредственно на свой адрес.

Вы можете загрузить эти файлы с кодом выполнив следующие шаги:

  1. Зарегистрируйтесь на нашем вебсайте при помощи своего адреса электронной почты и пароля.

  2. Переместите указатель мыши на закладку SUPPORT в верхней части.

  3. Кликните по Code Downloads & Errata.

  4. Введите название книги в блок Search.

  5. Выберите книгу для которой вы ищете для загрузки файлы исходного кода.

  6. В ниспадающем меню выберите где вы приобрели эту книгу.

  7. Кликните по Code Download.

Вы также можете загрузить файлы кодов кликнув по кнопке Code Files вебстраницы на вебсайте Packt Publishing. Доступ к данной странице может быть получен путём ввода названия книги в блоке Search. Отметим, что вы должны быть зарегистрированы со своеЙ учётной записью Packt.

После загрузки убедитесь, пожалуйста, что вы раззиповали или раскрыли эту папку при помощи самой последней версии:

  1. WinRAR / 7-Zip для Windows

  2. Zipeg / iZip / UnRarX для Mac

  3. 7-Zip / PeaZip для Linux

Пакет с кодом для данной книги также размещён на GitHub по адресу https://github.com/PacktPublishing/Mastering-Blockchain. У нас также имеются прочие наборы из нашего богатого каталога книг и видео доступные на https://github.com/PacktPublishing/. Следите за ними!

 Загрузка цветных изображений этой книги

Мы дополнительно снабжаем вас файлом PDF, который содержит цветные изображения экранных снимков/ схем, использованных в данной книге. Цветные изображения помогут вам лучше понять изменения в выводе. Вы можете загрузить этот файл по адресу: https://www.packtpub.com/sites/default/files/downloads/MasteringBlockchain_ColorImages.pdf.

 Опечатки

Хотя мы и предприняли все меры чтобы обеспечить точность нашего содержимого, ошибки всё- таки возможны. Если вы обнаружили ошибку в нашей книге - возможно, ошибку в тексте или в коде - мы будем признательны если вы сообщите об этом нам. Сделав это, вы можете предостеречь остальных читателей от разочарования и помочь нам улучшить последующие версии данной книги. Если вы обнаружили ошибку, пожалуйста, сообщите о ней посетив www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки. Когда ваша ошибка будет проверена, вы получите уведомление и ошибка будет выложена на наш веб- сайт или добавлена в какой- нибудь перечень существующих ошибок с заголовком раздела Errata.

Для просмотра ранее выявленных ошибок посетите www.packtpub.com/books/content/support и введите название нужной книги в поле поиска. Необходимая информация появится в разделе Errata.

 Незаконное тиражирование

Пиратство, защищённых авторским правом материалов в Интернете является постоянной проблемой во всех средствах массовой информации. В Packt мы подходим к защите наших авторских прав и лицензий очень серьёзно. Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}

Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав.

Мы выражаем вам признательность в защите наших авторов и нашей возможности доносить до вас имеющего ценность содержимого.

 Вопросы

Если у вас есть проблемы по любым сторонам данной книги, вы можете контактировать с нами по адресу questions@packtpub.com и мы предпримем все меры в отношении ваших проблем.