Изучение технологии блокчейн: практические примеры

Что такое блокчейн и как он работает?

Основы блокчейн алгоритма консенсуса

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

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

Метод, благодаря которому происходит коллективное принятие решений, получил название «механизма консенсуса». Он преследует следующие цели:

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

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

Рассмотрим работу протокола на примере блокчейна Биткоина. Алгоритм отслеживает частоту создания блоков — новый появляется каждые 10 минут.

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

Алгоритм принимает участие в решении нескольких задач:

  • размер награды за создание блока. Объем вознаграждения определяется на основании сложности создания нового блока: чем она выше, тем сумма награды ниже;
  • проверка корректности занесения данных в цепочки. Все узлы должны подтвердить факт правильного занесения информации в базу данных. Проверке подвергаются хеши транзакций только что сгенерированного и предшествующего блока, а также подбора случайного числа nonce;
  • предотвращение повторной траты средств. В системе Биткоина, когда происходит транзакция, списываются все деньги. Затем указанная сумма для отправки пересылается получателю, а оставшиеся деньги возвращаются обратно отправителю.

У блокчейна алгоритмы консенсуса основаны на криптологической интерпретации принципа «византийских генералов». Для криптовалюты эта технология была немного изменена и адаптирована под P2P-сети:

  • объективность — в сети всегда хранится полный реестр транзакций. Поэтому аутентичность этих данных не нуждается в дополнительном подтверждении другими авторитетными источниками;
  • стойкость к цензуре. У блокчейна нет «главнокомандующих», так как это децентрализованная система. Здесь никто не может запрещать пользователям цепочки майнить или проводить транзакции.

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

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

Виды блокчейна

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

Приватный блокчейн

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

Услуги связанные с частным блокчейном чаще всего предоставляют организации отдельные организации. Они решают кто имеет доступ к блокчейну и какие права может выполнять. Чаще всего доступ к блокчейну предоставляется в виде API.

Работает это так:

  • Организация создаёт на своих серверах новый блокчейн-проект. Функциональность этого проекта поддерживается вычислительными мощностями самой организации;
  • Клиент заказывает у этой организации услугу-доступ к блокчейну;
  • Организация регистрирует нового клиента в системе (своей внутренней, чаще всего не связанной с блокчейном) и предоставляет API доступ клиенту;
  • Клиент отправляет API-запросы на сервера, для создания новой записи в блокчейне, либо для получения информации с него.

Как только у клиента закончится срок действия услуги, он не сможет иметь доступ к API, а значит и не сможет иметь доступ к блокчейну.

Публичный блокчейн

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

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

Все самые известные криптовалюты строятся на базе именно публичных блокчейнов. Например, к таким проектам можно причислить Bitcoin, Ethereum, Litecoin и др.

Гибридный блокчейн

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

Конечная точка майнинга

Конечная точка майнинга — это часть, где происходит магия, и это просто! Для этого нужно сделать три вещи:

  • Подсчитать PoW;
  • Наградить майнера (нас), добавив транзакцию, дающую нам 1 коин;
  • Слепить следующий блок, внеся его в цепь.

Python

import hashlib
import json

from time import time
from uuid import uuid4

from flask import Flask, jsonify, request

@app.route(‘/mine’, methods=)
def mine():
# Мы запускаем алгоритм подтверждения работы, чтобы получить следующее подтверждение…
last_block = blockchain.last_block
last_proof = last_block
proof = blockchain.proof_of_work(last_proof)

# Мы должны получить вознаграждение за найденное подтверждение
# Отправитель “0” означает, что узел заработал крипто-монету
blockchain.new_transaction(
sender=»0″,
recipient=node_identifier,
amount=1,
)

# Создаем новый блок, путем внесения его в цепь
previous_hash = blockchain.hash(last_block)
block = blockchain.new_block(proof, previous_hash)

response = {
‘message’: «New Block Forged»,
‘index’: block,
‘transactions’: block,
‘proof’: block,
‘previous_hash’: block,
}
return jsonify(response), 200

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

importhashlib

importjson

fromtimeimporttime

fromuuidimportuuid4

fromflask importFlask,jsonify,request

@app.route(‘/mine’,methods=’GET’)

defmine()

# Мы запускаем алгоритм подтверждения работы, чтобы получить следующее подтверждение…

last_block=blockchain.last_block

last_proof=last_block’proof’

proof=blockchain.proof_of_work(last_proof)

# Мы должны получить вознаграждение за найденное подтверждение

# Отправитель “0” означает, что узел заработал крипто-монету

blockchain.new_transaction(

sender=»0″,

recipient=node_identifier,

amount=1,

)

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

previous_hash=blockchain.hash(last_block)

block=blockchain.new_block(proof,previous_hash)

response={

‘message'»New Block Forged»,

‘index’block’index’,

‘transactions’block’transactions’,

‘proof’block’proof’,

‘previous_hash’block’previous_hash’,

}

returnjsonify(response),200

Обратите внимание на то, что получатель замайненого блока — это адрес нашего узла. Большая часть того, что мы здесь сделали, это просто взаимодействие с методами в нашем классе Blockchain

С этого момента, мы закончили, и можем начать взаимодействовать с нашим blockchain на Python.

Глоссарий для продвинутых: сложные темы, которые нужно знать

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

Узел

Узел (Node) — это компьютер (сервер), подключенный к блокчейн-сети. Он хранит копию всей цепочки блоков и обрабатывает транзакции. Узлы поддерживают работу сети, проверяют и распространяют новые блоки и транзакции.

В этом сценарии каждый игрок является «узлом».

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

* На момент написания статьи в сети Ethereum было 7466 активных узлов, вы можете отслеживать их количество в реальном времени на сайте https://ethernodes.org.

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

* Для этой статьи я использую узел, предоставляемый сервисом Infura, который выглядит как обычное API с ключом доступа.

Блок (Block) — это базовая единица блокчейна. Транзакции в сеть записываются не по одной, а блоками.

Блокчейн-эксплорер (Explorer) — это веб-приложение и API, которые по прямым запросам предоставляют информацию из блокчейна. Думайте про эксплорер как про специализированный Google, где вы можете найти всю нужную информацию. Вы можете получить баланс адреса, список транзакций, последний блок и много другой информации. Конечно, то же самое можно получить и из узла, но эксплорер удобнее, легче и быстрее.

Поднять экземпляр эксплорера можно или самостоятельно, или получить доступ к уже существующим.

* Для нашего приложения мы возьмем официальный эксплорер сети Ethereum — etherscan.io.

Основная и Тестовая сеть

Основная сеть (Mainnet) и Тестовая сеть (Testnet ). Из названия легко понять, что mainnet — это основная сеть, в которой происходят реальные операции с реальными средствами, а testnet — это копия основной сети (по функционалу).

Тестовая сеть особенно полезна для разработчиков, которые могут использовать ее для проверки и тестирования своих приложений перед запуском в реальной сети. Они могут испытать свои стратегии, убедиться в правильности работы своего приложения и принять решение о переходе на «настоящий полет» Mainnet, где их приложение будет работать с реальными операциями и средствами.

* В сети Ethereum существует несколько тестовых сетей, а в этом тексте мы используем одну из них под названием Goerli.

Библиотека

Библиотека (Library) — это обычная npm-библиотека, которую обычно предоставляют разработчики блокчейна для интеграции его в различные среды, включая веб-приложения.

* Например, для взаимодействия с сетью Ethereum сегодня мы будем использовать библиотеку Web3.

Зачем нам нужен блокчейн?

Вот несколько причин, почему технология Blockchain стала такой популярной.

Упругость: Блокчейны часто тиражируются archiтектура. Цепь все еще operaбольшинством узлов в случае массированной атаки на систему.

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

Надежность: Блокчейн удостоверяет и проверяет личности заинтересованных сторон. Это удаляет double записывает, снижает ставки и ускоряет транзакции.

Неизменяемые транзакции: Регистрируя транзакции в хронологическом порядке, Блокчейн удостоверяет неизменность всех operaЭто означает, что когда в цепочку добавляется какой-либо новый блок ledgers, его нельзя удалить или изменить.

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

Безопасность: Атака на традиционную базу данных — это поражение конкретной цели. С помощью распределенного Ledger Технология: каждая сторона хранит копию исходной цепочки, поэтому система остается operaВ результате даже большое количество других узлов падает.

Прозрачность: Изменения в публичных блокчейнах доступны всем. Это обеспечивает большую прозрачность, и все транзакции являются неизменяемыми.

Сотрудничество – Позволяет сторонам заключать сделки напрямую друг с другом без необходимости посредничества третьих лиц.

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

Что такое блокчейн-платформа

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

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

Самые известные платформы:

  • Ethereum — позволяет создавать приложения на основе смарт-контрактов в разных сферах: финансы, страхование, инвестфонды, онлайн-игры. Широко используется в России — например, Сбербанком и Минцифры.
  • Bitcoin — финансовая платформа для выпуска одноимённой криптовалюты. На механизмах Bitcoin работают и другие валюты — тот же Dogecoin, который активно поддерживает Илон Маск.
  • Hyperledger — блокчейн-платформа от Linux Foundation. Есть фреймворки для создания цифровых паспортов, облачных сервисов и бухгалтерских книг.
  • Corda — система для хранения и передачи активов между финансовыми организациями: акций, облигаций, кредитов и других обязательств.
  • Solana — блокчейн-фреймворк, нацеленный на скорость: может проводить 65 000 транзакций в секунду (для сравнения, Ethereum — всего 30). Из минусов — не всегда стабильная работа и ограниченная децентрализация.
  • Polkadot — позволяет объединять несколько блокчейнов в одну экосистему. Проект от создателя Ethereum Гэвина Вуда.

Далеко не у всех блокчейнов есть свои собственные платформы — к примеру, криптовалюта Litecoin работает на блокчейн-сети Bitcoin. Это не хорошо и не плохо, просто так сложилось. Если вы захотите сделать свой блокчейн, можете взять за основу готовый фреймворк — исходный код большинства платформ лежит на GitHub.

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