Глава 9. Создание приватных цепочек

Глава 9

Вопреки доводам сторонников публичных цепочек, приватные цепочки стоит использовать в качестве инструмента для обучения, который безусловно имеет применение для крупных компаний, государственных учреждений или неправительственных организаций (NGO). Однако, следует отметить, что блокчейны не обязательно лучше подходят для всех баз данных и сетей.

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

Приватные цепочки и цепочки с контролируемым доступом

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

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

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

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

Настройка локальной приватной цепочки

Приватная цепочка имеет ограничения в применении, как было доказано в Главе 6 и Главе 7, безопасность цепочки пропорциональна количеству узлов, которые майнят в ней. Когда вы создаете свою цепочку, единственным майнером в ней будете вы.

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

Содержимое совпадает с полем ‘genesis’, представленном в ‘config’:

(прим. переводчика: автор неожиданно вставляет рандомную копипасту из официальной документации Ethereum Homestead: http://ethdocs.org/en/latest/network/test-networks.html https://github.com/ethereum/homesteadguide/blob/master/source/network/testnetw orks.rst

Непонятно, как начинающие должны интерпретировать подобную информацию…)

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

  • Настраиваемый генезисный JSON-файл
  • Настраиваемый ID сети (число)
  • Директория, в которой хранится файл с ID сети

Вы можете придумать ID сети; это не могут быть цифры 1 или 2, которые уже заняты тестовой сетью (2) и основной сетью (1). Теперь мы перейдем к настраиваемому генезисному файлу.

Создание вашего собственного генезисного файла Genesis для блокчейна

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

Вот способ создания настраиваемого генезисного файла Genesis.

Во-первых, откройте текстовый редактор. Вам нужно будет создать сеть под названием 765, поэтому вы установите 765 в качестве значения nonce. Это должно быть ненулевое число. Вы можете найти код по адресу.

Или под заголовком “Глава 9” на сайте: http://eth.guide

Вставьте в текстовый редактор следующий текст:

{

“nonce”: “0x0000000000000765”,

“timestamp”: “0x0”, “parentHash”:

“0x00000000000000000000000000000000000000000000000000000000000 00000”,

“extraData”: “0x0”, “gasLimit”: “0x4c4b40”, “difficulty”: “0x400”, “mixhash”:

“0x00000000000000000000000000000000000000000000000000000000000 00000”,

“coinbase”: “0x0000000000000000000000000000000000000000”,

“alloc”: {

}

Сохраните этот файл к себе на рабочий стол и назовите его genesis765.json.

Чтобы открыть вашу новую цепочку при помощи JavaScript-консоли, типа той, которую вы использовали в Главе 6, откройте Терминал и затем наберите следующие семь элементов в одной строке:

  • geth
  • console
  • –networkid
  • –genesis
  • Путь до генезисного файла Genesis
  • –datadir
  • Директория данных для хранения вашей новой цепочки

Вы создадите скрытую директорию под названием ∼/.ethereum/chain765 для хранения своей цепочки. Ваша полная команда для Терминала должна выглядеть следующим образом:

geth console –networkid 765 –genesis

∼/Desktop/genesis765.json –datadir ∼/.ethereum/chain765

Примечание

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

На этом все! Ваша новая цепочка полностью готова к работе, и вы можете использовать консоль точно таким же образом, как вы делали это в Главе 6. Помните, что вам нужно включить свой майнер в консоли при помощи команды miner.start() перед тем, как ваши контракты начнут исполняться в этой тестовой сети.

Опциональные флаги для новых цепочек

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

  • –nodiscover: это предотвращает случайное подключение к вашей цепочке посторонних людей с таким же генезисным файлом и ID сети
  • –maxpeers 0: если вы знаете, какому количеству пиров вы хотите разрешить подключиться к вашему узлу (допустим, у вас есть учебная аудитория с ограниченным количеством обучающихся), при помощи этого флага вы можете ограничить количество участников для вашей цепочки
  • -rpcapi “db,eth,net,web3”: разрешает использование RPC и различных Webjs API, доступ к которым осуществляется через RPC
  • –rpcport “8080”: дефолтный порт для Geth: 8080, но вы можете выбрать другой номер порта при помощи этого флага
  • –rpccorsdomain “http://eth.guide/”: используйте этот флаг для определения доменов серверов, которым разрешается подключаться к вашему узлу и делать RPC-вызовы
  • –identity “TestnetMainNode”: это позволяет дать вашей цепочке читаемое имя, что облегчает ее идентификацию в списке пиров.

Использование приватных блокчейнов на продакшене

В этой главе я представил концепцию приватных блокчейнов, в которой они используются в качестве “песочницы” для изучения Solidity и парадигмы развертывания смарт-контрактов Ethereum. Однако, некоторые люди достаточно серьезно нацелены на изменение роли приватных блокчейнов в качестве тестовой сети и их использование для корпоративных нужд, то есть для создания реальных веб-сервисов.

Это прямо противоположно модели безопасности, которую разработчики Ethereum держали в уме в процессе создания протокола. На практике, ваша приватная цепочка не представляет особого интереса для хакеров, чтобы ее компрометировать. Не стоит забывать, что ценность токенов, добытых в вашей цепочке (или любой другой цепочке, собственно говоря), определяется тем, сколько другие люди готовы заплатить за них.

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

Что делает основную сеть основной, это тот факт, что она была запущена (и позже подвержена форку) Виталиком Бутериным и частью команды разработчиков Ethereum Core. Люди продолжают использовать основную цепочку лишь благодаря доверию, интересу и любопытству.

Внутренняя гибкость и изменчивость делают сеть устойчивой. Подобная гибкость имеет важное значение сегодня, на раннем этапе развития сети, но она будет становиться все менее и менее привлекательной по мере роста сети, пользователи будут искать большего уровня предсказуемости и надежности. Со временем станет практически невозможно реализовать форки состояния из-за огромного размера сети, и вероятность появления другой цепочки Ethereum все более снижается.

Безусловно, Ethereum необходимо претерпеть сильное развитие, чтобы на его базе можно было запускать крупные, критически важные контракты, заточенные под определенную бизнес-логику. Тем не менее, если говорить о невероятной простоте в использовании, легко понять, почему Ethereum и подобные ему сети рано или поздно заменят закостенелый и устаревший протокол передачи гипертекста HTTP.

Итоги Главы 9

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

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

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

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

Примечание к Главе 9

  1. Wikipedia, “Hypertext Transfer Protocol,” https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol, 2016.

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: