Как создать блокчейн: наглядное пособие

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

Оглавление

Блокчейн: суть и история

Блокчейном или распределенным реестром называют децентрализованную базу данных, в которой сохраняются все сведения о транзакциях на платформе. Его создателем считается человек или группа лиц под псевдонимом Сатоши Накамото.

По сути распределённый реестр — цепочка соединенных между собой блоков. В каждом хранятся данные о транзакциях — адреса кошельков отправителей и получателей, сумма сделки и дополнительные сведения.

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

Узлами сети Биткоина выступают майнеры. Именно на них ложиться задача по обработке и подтверждению транзакций. Для этого майнерам нужно решить сложную алгоритмическую задачу.

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

Miner, который справится задачей быстрее остальных, получит в награду криптовалюту. Блоки в сети Биткоин формируются с частотой раз в 10 минут. Размер блока BTC ограничен 1 МБ. В других сетях этот параметр может отличаться. Например, после майского обновления Bitcoin Cash перешел на блоки объемом в 32 МБ.

Созданный Накамото распределенный реестр не стал последней стадией развития технологии. В 2013 году программист Виталик Бутерин заинтересовался функцией смарт-контрактов, но считал, что Биткоин плохо подходит для ее использования. Поэтому он создал платформу Эфириум. Смарт-контракты на Эфириуме упростили процесс создания токенов. Это сделало Ethereum площадкой для проведения ICO.

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

  1. EOS;
  2. NEO;
  3. Cardano;
  4. Waves;
  5. Lisk;
  6. Decred;
  7. Stratis;
  8. Siacoin;
  9. Zcash.
  10. IOTA.

Также в этот список мы можем включить Ripple и Stellar. Они используют распределенную сеть, похожую на blockchain.

как создать блокчейн

Особенности платформы блокчейн

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

Выделяют ряд алгоритмов консенсуса:

  • Proof of Work или PoW (доказательство работы) — его принцип работы неплохо описан выше на примере Биткоина. Суть PoW в том, что для записи транзакции в блок он требует от участника решения сложной алгоритмической задачи. Вероятность создать следующий блок выше у владельца более мощного оборудования. Поэтому, чтобы стать майнером придется потратить тысячи долларов на создание собственной фермы. PoW использует Биткоин, Эфириум и ряд других известных криптовалют.
  • Proof of Stake или PoS (доказательство доли) — в отличие от предыдущего вероятность сформировать блок и записать его в цепочку зависит от доли принадлежащих участнику монет. PoS не заставляет пользователей сети, обзаводится дорогостоящим оборудованием. Но есть и недостатки. Система провоцирует участников копить капитал для обретения большей власти внутри сети. Его используют Dash, NEO и другие монеты. Также в 2018 году на этот алгоритм должен перейти Эфириум.
  • Delegated Proof of Stake или DPoS (делегированное доказательство доли) — участники сети выбирают делегатов, которые будут создавать блоки. Этим механизмом пользуется Lisk, Bitshares и другие проекты.
  • Proof of Activity (доказательство активности) — так называемая гибридная система соединяющая в себе сильные стороны PoW и PoS. Формированием блоков занимаются и майнеры, и владельцы достаточного количества монет или стейкхолдеры. Сначала майнер формирует заголовок блока, который затем рассылается в сеть. Эту заготовку должны подписать стейкхолдеры, после чего создается блок.
  • Proof of Burn (доказательство сжигания) — оригинальный алгоритм в основе, которого лежит «сжигание» монет. Некоторое количество альтернативной цифровой валюты отправляют на адрес, с которого ее нельзя потратить или вернуть на свой счет. От того сколько монет сжег пользователь зависит шанс сформировать следующий блок. Также за этот шаг участник получает право на пожизненную добычу монет.
  • Proof of Capacity (доказательство ресурсов) — в отличие от предыдущего этот алгоритм требует от узла свободное место на жестком диске. Механизм генерирует определенное количество решений задачи, которые сохраняются на компьютере участника. Затем начинается процесс добычи и тот майнер, у которого есть подходящее значение хэш, формирует блок и получает награду. От места на диске, выделенного под добычу, зависят шансы на успех. Подобный метод подбора хэш часто сравнивают с лотереей. Чем больше у владельца билетов (вариантов хэша), тем выше вероятность создания блока.

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

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

Также эту технологию применяют на ICO. Для создания токенов используются смарт-контракты на Эфириум, NEM или других платформах. В таком контракте указывается эмиссия монет и другие условия. В период ICO компания указывает номер счета и при поступлении на него средств, покупатель с помощью смарт-контракта получает токены по заданному курсу.

как создать свой блокчейн

Зачем нужен собственный блокчейн

Как упоминалось ранее, не всем ICO-проектам будет нужен свой блокчейн. Можно выделить ряд вопросов утвердительный ответ на которые означает, что стартапу возможно необходим свой распределенный реестр:

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

Каким проектам может понадобится собственный блокчейн:

  • Решения для децентрализованного хранения больших объемов данных.
  • Системам с уникальными функциями, которые не реализованы на существующих блокчейн-платформах.
  • Платежным системам с высокой пропускной способностью.
  • Если цель проекта создание собственной криптовалюты — аналога биткоина или эфира.
  • При создании платформы-конкурента для существующих решений.
  • Если разрабатывается платформа предоставляющая высокий уровень прозрачности и доверия между участниками сети.

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

  1. Прозрачность — транзакции в публичном блокчейне нельзя спрятать. К ним может получить доступ каждый.
  2. Децентрализация — управление сетью находится в руках не централизованных структур, а самих пользователей.
  3. Возможность проводить транзакции в любое время суток без выходных.
  4. Отсутствие посредников.
  5. Нельзя изменять и удалять данные из сети.

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

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

К преимуществам частных блокчейнов относят:

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

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

Какой подход выбрать — зависит от проекта. Мы можем посоветовать только ориентироваться на то, что действительно необходимо стартапу. Если цель построить децентрализованную, независимую сеть, то лучший выбор публичный blockchain. Если же компания создает закрытую платформу, например, для документооборота между штаб-квартирой и филиалами в разных странах, то ей подойдет частный blockchain.

как сделать свой блокчейн

Как сделать свой блокчейн

Создание собственного распределенного реестра нужно не каждому проекту. Но если без этого не обойтись, то понадобится разработчик, знающий один или несколько языков программирования — C, C++, Python, Java, Golang, Scala. В принципе, пригодятся знания любых технологий в этой сфере, ведь считается, что такую инфраструктуру можно создать на любом языке.

Если же слова mine, init, json, get, sender, amount, genesis block и другие вам ничего не говорят, то можно нанять разработчика или попытаться самому разобраться, как сделать свой блокчейн. Для этого существует достаточно книг и курсов.

В качестве эксперимента мы разберемся, как создать свой блокчейн. Начнем со скачивания и установки компилятора языка Python. Сделать это мы можем на официальном сайте. После установки в гайде советуют установить библиотеки Flask и Request. Для этого заходим мы командную строку Windows — cmd.exe. Появится консоль, в которой нужно выполнить команду: pip install Flask==0.12.2 requests==2.18.4.

Затем мы устанавливаем среду разработки PyCharm (или любую другую, на ваш выбор). Скачать его можно здесь. После прохождения регистрации мы заходим в PyCharm. Поскольку Python — непростой язык программирования, на объяснение всех тонкостей работы с ним мы потратим слишком много времени.

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


import hashlib
import os
import json
import datetime as date

class Block(object):
def __init__(self, dictionary):
”’
We’re looking for index, timestamp, data, prev_hash, nonce
”’
for k, v in dictionary.items():
setattr(self, k, v)

if not hasattr(self, ‘nonce’):
#we’re throwin this in for generation
self.nonce = ‘None’
if not hasattr(self, ‘hash’): #in creating the first block, needs to be removed in future
self.hash = self.create_self_hash()

def header_string(self):
return str(self.index) + self.prev_hash + self.data + str(self.timestamp) + str(self.nonce)

def create_self_hash(self):
sha = hashlib.sha256()
sha.update(self.header_string())
return sha.hexdigest()

def self_save(self):
chaindata_dir = ‘chaindata’
index_string = str(self.index).zfill(6) #front of zeros so they stay in numerical order
filename = ‘%s/%s.json’ % (chaindata_dir, index_string)
with open(filename, ‘w’) as block_file:
json.dump(self.__dict__(), block_file)

def __dict__(self):
info = {}
info[‘index’] = str(self.index)
info[‘timestamp’] = str(self.timestamp)
info[‘prev_hash’] = str(self.prev_hash)
info[‘hash’] = str(self.hash)
info[‘data’] = str(self.data)
info[‘nonce’] = str(self.nonce)
return info
def __str__(self):
return “Block” % (self.prev_hash, self.hash)

def create_first_block():
# index zero and arbitrary previous hash
block_data = {}
block_data[‘index’] = 0
block_data[‘timestamp’] = date.datetime.now()
block_data[‘data’] = ‘First block data’
block_data[‘prev_hash’] = ”
block_data[‘nonce’] = 0 #starting it at 0
return Block(block_data)

if __name__ == ‘__main__’:
#check if chaindata folder exists.
chaindata_dir = ‘chaindata/’
if not os.path.exists(chaindata_dir):
#make chaindata dir
os.mkdir(chaindata_dir)
#check if dir is empty from just creation, or empty before
if os.listdir(chaindata_dir) == []:
#create and save first block
first_block = create_first_block()
first_block.self_save()

Это относительно простой код blockchain, но в нем прописаны все необходимые параметры.

Чтобы посмотреть, как работает блокчейн и возможно добыть несколько блоков мы пойдем простым путем — возьмем код, созданный опытным программистом. В нем уже прописаны основные параметры, а потому сверх усилий не понадобится.

Для этого переходим по ссылке на Github и скачиваем этот проект. Затем, распаковываем файлы и запускаем PyCharm. Открываем файл «Block». После этого нажимаем на вкладке «Run» и выбираем опцию с аналогичным названием. Но даже на этом этапе мы можем допустить ряд ошибок.

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

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

  • Stratis — одно из преимуществ проекта в том, что клиентам не придется тратить ресурсы и время на поддержку сети. Платформа создает децентрализованные приложения используя сайдчейны (боковые цепочки). Это позволяет ей подстраиваться под нужды конкретного клиента при этом сохраняя безопасность и надежность родительской цепи. Используя боковую цепочку Stratis снижает нагрузку и размер баз данных.
  • Hyperledger Fabric — проект созданный консорциумом Hyperledger. Важную роль в разработке сыграла IBM. К преимуществам платформы относят конфиденциальность, гибкость, масштабируемость и отказоустойчивость. В то же время Hyperledger отличается от других платформ тем, что требует от участников идентификации. Система проверяет подлинность пользователей и присваивает им специальные открытые ключи. Hyperledger Fabric популярная платформа поэтому найти обучающие гайды и курсы не составит труда. Так на платформе Edx есть бесплатный курс “Блокчейн для бизнеса” от Linux Foundation.

Выводы

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

В работе сильно поможет знание одного или нескольких языков программирования: С, С++, Python, Java, Golang, Scala. Также следует пройти доступные в сети онлайн-курсы, изучить дополнительную литературу и гайды. Отличный выход использование платформ для создания блокчейн-приложений. Это позволит сэкономить время и при этом создать эффективное решение, подходящее под бизнес.

Вам также могут понравиться