Вы находитесь на странице: 1из 18

ТЕХНОЛОГИ

ОСНОВЫ Smart Con


tracts

И
Bit
c oin

a in
ch
БЛОКЧЕЙН oc k
Bl
Что такое блокчейн
Блокчейн (Blockchain, Block Chain) - цепочка блоков данных, связанных друг с
другом определенным образом. В начале цепочки находится первый блок,
который называется первичным блоком. За ним следует второй, потом третий и
так далее.

Важно: все эти блоки данных автоматически дублируются (реплицируются) на


многочисленных узлах сети блокчейна. Таким образом обеспечивается
децентрализованное хранение данных блокчейна.
То есть система блокчейна – это большое количество узлов (физических или
виртуальных серверов), объединенных в сеть и реплицирующих все изменения в
цепочке блоков данных. Любой может добавить свой компьютер в сеть блокчейна.
Термины
Распределенная база данных – это набор логически связанных между собой
разделяемых данных, которые физически распределены в некоторой
компьютерной сети.
Распределенный реестр — это база данных (аналог бухгалтерской книги), которая
распространяется по нескольким узлам или вычислительным устройствам. Каждый
узел реплицирует и сохраняет идентичную копию книги и самостоятельно
обновляется.
Транзакция – единая неделимая операция (включает согласованное выполнение
некоторого набора элементарных операций, в результате выполнения которого БД
переходит из одного согласованного состояния в другое согласованное состояние.
Основной принцип выполнения транзакции - «все или ничего». (либо
обеспечивается полное и правильное выполнения всех операций, составляющих
транзакцию, либо возвращение БД в исходное состояние (откат)).
Репликация — процесс копирования данных из одного источника на другой (или на
множество других).
Термины
Цифровая подпись позволяет подтвердить авторство электронного документа. Подпись
связана как с автором, так и с самим документом с помощью криптографических методов,
и не может быть подделана с помощью обычного копирования.
Технология электронной подписи основана на асимметричном шифровании с открытым
ключом. Общепризнанная схема цифровой подписи охватывает три процесса
• Генерация ключевой пары. При помощи алгоритма генерации ключа выбирается
закрытый ключ, вычисляется соответствующий ему открытый ключ (зная открытый
ключ, нельзя вычислить закрытый ключ за разумный срок).
• Формирование подписи. Для заданного электронного документа с помощью закрытого
ключа вычисляется подпись (шифруется только хэш — небольшой объём данных,
жёстко привязанный к документу с помощью математических преобразований и
идентифицирующий его. Шифрованный хэш и является электронной подписью.).
• Проверка (верификация) подписи. Для данных документа и подписи с помощью
открытого ключа определяется действительность подписи.
Примеры ключей:
Private key:
0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key:
0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Алгоритмы подписи и проверки
Термины
Хэш-функция или функция свёртки — функция,
осуществляющая преобразование массива входных данных
произвольной длины в (выходную) битовую строку
фиксированной длины, выполняемое определённым
алгоритмом.
Криптографической хеш-функцией называется всякая хеш-
функция, являющаяся криптостойкой, то есть
удовлетворяющая ряду требований специфичных для
криптографических приложений.
Термины
К криптографическим хеш-функциям предъявляются следующие требования:
1. Стойкость к поиску первого прообраза — отсутствие
эффективного полиномиального алгоритма вычисления обратной функции,
т.е. нельзя восстановить текст m по известной его свертке H(m) за реальное
время (необратимость). Это свойство эквивалентно тому, что хеш-функция
является односторонней функцией.
2. Стойкость к поиску второго прообраза — вычислительно невозможно,
зная сообщение m и его свертку H(m), найти такое другое сообщение m′ ≠ m ,
чтобы H(m) = H(m′).
3. Стойкость к коллизиям
Коллизией для хеш-функции называется такая пара значений m и m′, m ≠ m′,
для которой H(m) = H (m′). Стойкость хеш-функции к коллизиям означает, что
нет эффективного полиномиального алгоритма, позволяющего находить
коллизии.
Примеры криптографических
хэш-функций:
Транзакции
Блокчейн хранит информацию об операциях с активами (транзакциях) в
блоках. При этом старые, уже выполненные транзакции, невозможно
откатить или изменить. Новые транзакции хранятся в новых,
добавленных блоках.
Таким образом, блокчейн - это запись всей истории
транзакций в неизменном виде. Поэтому блокчейн
может быть использован, например, для надежного
хранения банковских операций, сведений об
авторском праве, истории изменений владельцев
объектов недвижимости и т.п.
Составные части блокчейна
Каждый участник может запустить свою
ноду с полной копией блокчейна (full
node). Полные ноды, которые могут
записывать транзакции в блокчейн,
называются узлами консенсуса или
майнерами (miner). Полные ноды, которые
только проверяют правильность
транзакций называются узлами аудита
(audit). Легкие клиенты (light clients) не
хранят полных копий блокчейна, а
взаимодействуют с сетью, используя
полные ноды.
Большинство пользователей для
совершения транзакций используют
именно легких клиентов или web
кошельки. Все ноды связаны друг с другом.
Жизненный цикл транзакции
Структура транзакции
Каждая транзакция имеет по крайней мере следующие данные:
From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - цифровой адрес
отправителя
To: 0x367adb7894334678b90аfe7882a5b06f7fbc783a - цифровой адрес
получателя
Value: 0.0001 - сумма транзакции
Transaction Hash:
0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef -
хэш транзакции

Далее транзакция подписывается приватным ключом и рассылается всем нодам в


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

Блокчейн начинается с блока, у которого еще нет хэша предыдущего


блока. Такой блок в блокчейне один и называется Genesis block. У
остальных блоков одинаковая структура и отличаются они только
числом транзакций.
Консенсус
После проверки правильности транзакций майнеры формируют из них блоки. Помимо
транзакций в блок записывается хэш предыдущего блока, число (счетчик Nonce), и
происходит вычисление хэша текущего блока по алгоритму SHA-256. Хэш должен обладать
установленным условием сложности. Например, в сети Bitcoin сложность хэша автоматически
меняется раз в 2 недели в зависимости от мощности сети так, чтобы блок генерировался
примерно раз в 10 минут. Сложность определятся следующим условием: найденный хэш
должен быть меньше заранее заданного числа. Если данное условие не выполняется, то к
Nonce прибавляется 1, и работа по вычислению хэша повторяется. Для подбора хэша
используется поле Nonce, т.к. это единственные данные в блоке, которые можно изменить,
остальные должны оставаться неизменными. Правильный хэш должен иметь определенное
число нулей в начале, например, один из реальных хэшей:
000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91
Успешное нахождение хеша и является доказательством проделанной работы (Proof-of-Work, PoW) для
сетей Bitcoin или Ethereum. Процесс нахождения хэшей называется майнингом (mining), по аналогии с
добычей золота. Название достаточно точно определяет суть процесса, т.к. происходит простой
перебор вариантов, и если кто-то нашел подходящий хэш, то это действительно удача.
После успешного нахождения хэша блок и сам найденный хэш записываются в блокчейн следующим
блоком.
Проблемы блокчейна и их решение
1. Идентификация участников осуществляется с помощью пары ключей: приватного и открытого, а
алгоритм цифровой подписи однозначно идентифицирует отправителя и получателя, оставляя
их личности анонимными.
2. Транзакции собираются в блоки, вычисляется хэш блока, который записывается в следующий
блок. Такая последовательность записи хэшей в блоках делает невозможным незаметное
изменение / удаление блоков или отдельных транзакций из блоков. Таким образом, если
транзакция попала в блокчейн, то можно быть уверенным, что ее данные останутся
неизменными.
3. Мошенничество double-spending предотвращается путем достижения консенсуса в сети, какие
данные считать верными, а какие отбрасывать. В сети Bitcoin, например, консенсус достигается
доказательством выполнения работы PoW (Proof-of-Work).
4. Полностью от комиссии в блокчейне не избавится, т.к. надо платить людям поддерживающим
сеть. В блокчейне необходимость комиссии доказывается убедительно, поэтому не остается
сомнений в ее необходимости.
5. Современные блокчейны имеют возможность реализовывать бизнес логику, которая в
блокчейне называется Smart Contracts. Логика смарт контрактов реализуются на различных
языках высокого уровня.
Для чего можно использовать блокчейн?
Блокчейн позволяет безопасным образом проводить операции
(сделки) между не доверяющими друг другу персонами или
компаниями. Записанные в блокчейн данные (транзакции,
персональные данные, документы, свидетельства, договоры,
накладные и т.п.) невозможно подделать или заменить после
записи. Поэтому на базе блокчейна можно создавать, например,
доверенные распределенные реестры различного рода
документов.
Смарт-контракты (программное обеспечение, работающее в
сети Ethereum) позволяют автоматизировать процесс
заключения сделок и контроль их выполнения.
Для чего можно использовать блокчейн?
Блокчейн с поддержкой смарт-контрактов может использоваться,
например, в таких областях:
•альтернатива нотариальному заверению документов;
•хранение реестра объектов недвижимости и сведений об операциях с объектами
недвижимости;
•хранение сведений об авторских правах на объекты интеллектуальной собственности
(книги, изображения, музыкальные произведения и т.п.);
•создание систем независимого голосования;
•сфера финансов и банковская деятельность;
•логистика в международных масштабах, отслеживание перемещения грузов;
•хранение персональных данных как аналог системе удостоверений личности;
•безопасные сделки в коммерческой области;
•хранение результатов медицинских обследований, а также истории назначенных
процедур

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