Почему и что такое блокчейн?
BlockChain — одна из самых трендовых технологий на сегодняшний день с большой областью применения. В этом посте я поделюсь своими знаниями о блокчейне и тем, чему я научился за последние два месяца.
Зачем нам нужен Блокчейн?
-> В текущей системе, если вы хотите отправить деньги своему другу, что вы будете делать. Вы сделаете запрос на транзакцию в банке.
-> Затем Банк обработает ваш запрос и переведет указанную сумму на счет вашего друга.
-> Что здесь произошло, вы и ваш друг оба доверили банку управлять своими деньгами.
-> Не было реального движения физических счетов для перевода денег. Все, что было нужно, это запись в реестре, которую не контролируете ни вы, ни ваш друг.
-> Выше приведен пример централизованной доверенной системы.
Проблема с централизованной системой !!
-> Чтобы установить доверие между собой, мы зависим от отдельных третьих лиц.
-> В течение многих лет мы зависели от этих посредников, чтобы доверять друг другу.
-> Вы можете спросить: «Какая проблема зависит от них?» Проблема в том, что они единичны. Достаточно одного человека/организации, чтобы преднамеренно или непреднамеренно стать коррумпированными, и вся система рухнет.
-> Другими словами, есть центральная точка отказа.
-> Он также состоит из таких проблем, как двойные расходы, комиссия за транзакцию и время завершения транзакции.
Что такое Блокчейн и как он решает текущие системные проблемы?
История блокчейна
-> Первая работа над криптографически защищенной цепочкой блоков была описана в 1991 году Стюартом Хабером и В. Скоттом Сторнеттой.
-> Они хотели внедрить систему, в которой временные метки документов нельзя было бы подделать или датировать задним числом. В 1992 году Байер, Хабер и Сторнетта включили в проект деревья Меркла, что повысило его эффективность, позволив собрать несколько документов в один блок.
-> Он практически не использовался, пока его не адаптировал Сатоши Накамото в 2008 году. В следующем году он был реализован Накамото в качестве основного компонента криптовалюты биткойн, где он служит общедоступной книгой для всех транзакций в сети.
Блокчейн Обзор и терминология
-> Цепочка блоков — это растущий список записей, называемых блоками, которые связаны с помощью криптографии.
-> Каждый блок содержит криптографический хэш предыдущего блока, метку времени и данные транзакции.
-> По своей конструкции цепочка блоков устойчива к модификации данных. Это «открытая распределенная книга, которая может эффективно, проверяемым и постоянным способом регистрировать транзакции между двумя сторонами».
-> Для использования в качестве распределенного реестра цепочка блоков обычно управляется одноранговой сетью, коллективно придерживающейся протокола для межузловой связи и проверки новых блоков.
-> После записи данные в любом данном блоке не могут быть изменены задним числом без изменения всех последующих блоков, что требует консенсуса большинства сети.
-> Майнеры — это специальные узлы в сети, которые хранят бухгалтерскую книгу и могут вносить свой вклад в цепочку блоков, добавляя новый блок.
-> Чтобы добавить блок в цепочку блоков, майнер должен сделать две вещи: — проверить транзакции в блоке и — майнер должен найти специальный ключ, который в сочетании с хэшем предыдущего блока, транзакциями текущего блока и взятым хэшем решить конкретную предопределенную задачу.
-> Чтобы найти этот ключ, майнеру необходимо вложить вычислительную мощность и время, этот поиск ключа является случайным.
-> Он будет искать случайный ключ, пока он не удовлетворит предопределенной задаче.
-> Первый майнер, сделавший это, получает финансовое вознаграждение.
-> Хэш похож на отпечаток пальца, он идентифицирует блок и все его содержимое и всегда уникален, как и отпечаток пальца.
-> Изменение чего-либо внутри блока изменит хэш блока, и это приведет к тому, что следующий блок будет недействительным.
-> Первый блок в цепочке блоков не имеет хэша предыдущего блока и называется блоком Genesis.
Блокчейн как концепция
-> Система цепочки блоков, основанная на криптографическом доказательстве, а не на доверии, позволяющая любым двум желающим сторонам напрямую взаимодействовать друг с другом без необходимости в какой-либо доверенной третьей стороне.
-> Транзакции, которые невозможно отменить с вычислительной точки зрения, защитят продавцов от мошенничества.
-> Решение проблемы двойных расходов с использованием однорангового распределенного сервера временных меток для создания вычислительного доказательства хронологического порядка транзакций.
->Самая длинная цепочка служит не только доказательством последовательности наблюдаемых событий, но и доказательством того, что они произошли из самого большого пула мощности ЦП.
Сервер меток времени
-> Концепция цепочки блоков основана на сервере меток времени. Сервер временных меток работает, беря хеш нового блока элементов для отметки времени и широко публикуя хэш.
-> Временная метка доказывает, что данные должны были существовать в то время, очевидно, для того, чтобы попасть в хэш.
->Каждая временная метка включает предыдущую временную метку в свой хеш, образуя цепочку, где каждая дополнительная временная метка усиливает предыдущие.
Доказательство работы
-> Доказательство работы включало сканирование значения, которое при хешировании, например, с SHA-256, хэш начинается с количества нулевых битов.
-> Требуемая средняя работа экспоненциальна по количеству необходимых нулевых битов и может быть проверена путем выполнения одного хэша.
-> Доказательство работы реализуется путем увеличения одноразового номера в блоке до тех пор, пока не будет найдено значение, которое с учетом хэша блока содержит требуемые нулевые биты.
-> После того, как доказательство работы выполнено, этот блок нельзя изменить без повторного выполнения работы. Поскольку более поздние блоки следуют за ним в цепочку, работа по изменению блока будет включать в себя повторение всех блоков после него.
-> Доказательство работы — это, по сути, один процессор и один голос. Решение большинства представлено самой длинной цепочкой, в которую вложены наибольшие усилия по доказательству работы.
-> Если большая часть мощности ЦП контролируется честными узлами, честная цепочка будет расти быстрее всех и опережать любые конкурирующие цепочки.
-> Чтобы изменить прошлый блок, злоумышленнику придется переделать доказательство работы блока и всех блоков после него, а затем догнать и превзойти работу честных узлов.
-> Чтобы компенсировать увеличение скорости оборудования и изменение интереса к работающим узлам с течением времени, сложность доказательства работы определяется скользящим средним значением среднего количества блоков в час. Если они генерируются слишком быстро, сложность увеличивается.
-> Алгоритм Proof-of-Work — это, по сути, алгоритм, который генерирует элемент, который сложно создать, но легко проверить. Учитывая вывод, чрезвычайно сложно вычислить ввод, но при наличии ввода и вывода довольно легко проверить, ведет ли ввод к выводу.
Сеть блокчейнов
-> Шаги для запуска сети следующие:
— Новые транзакции рассылаются всем узлам.
— Каждый узел собирает новые транзакции в блок.
— Каждый узел работает над поиском сложного доказательства работы для своего блока.
— Когда узел находит доказательство работы, он рассылает блок всем узлам.
— Узлы принимают блок, только если все транзакции в нем действительны и еще не потрачены.
— Узлы выражают свое принятие блока, работая над созданием следующего блока в цепочке, используя хэш принятого блока в качестве предыдущего хэша.
-> Узлы всегда считают самую длинную цепочку правильной и будут продолжать работать над ее расширением.
Транзакции
-> Владелец выполнит транзакцию путем цифровой подписи хэша предыдущей транзакции и открытого ключа следующего владельца.
-> Получатель платежа может проверить подписи, чтобы проверить цепочку владения.
Проблема, конечно, в том, что получатель платежа не может проверить, что один из владельцев не тратил деньги дважды.
-> Нам нужен способ, чтобы получатель платежа знал, что предыдущий владелец не подписывал никаких предыдущих транзакций.
->Для наших целей учитывается самая ранняя транзакция, поэтому нас не волнуют более поздние попытки двойного расходования.
-> Единственный способ подтвердить отсутствие транзакции — быть в курсе всех транзакций.
-> В централизованной системе доверенных лиц она знала обо всех транзакциях и решала, какая из них поступила первой.
-> Чтобы добиться этого без доверенной стороны, транзакция должна быть публично объявлена, и нам нужна система, позволяющая участникам согласовать единую историю порядка, в котором они были получены.
-> Получателю платежа необходимо доказательство того, что во время каждой транзакции большинство узлов согласились, что она была получена первой.
Транзакции в цепочке блоков
-> Один блок в цепочке блоков состоит из нескольких транзакций.
Транзакции в блоке хешируются в дереве Меркла, при этом в хеш блока включается только корень.
-> Старые блоки можно уплотнить, обрубив ветки дерева. Внутренние хэши хранить не нужно.
Проверка транзакции
Пользователю необходимо сначала убедиться, что у него самая длинная цепочка подтверждения работы, и получить ветку Merkle, связывающую транзакцию с блоком, в котором она отмечена временем.
Он не может сам проверить транзакцию, но, привязав ее к месту в цепочке, он может увидеть, что сетевой узел ее принял, и блоки, добавленные после того, как он еще больше подтвердит, что сеть ее приняла.
Конфиденциальность
-> Традиционная банковская модель обеспечивает определенный уровень конфиденциальности, ограничивая доступ к информации вовлеченными сторонами и доверенной третьей стороной.
-> Необходимость объявлять обо всех транзакциях публично исключает этот метод, но конфиденциальность все же можно поддерживать, прерывая поток информации в другом месте: сохраняя анонимность открытого ключа
-> Общественность может видеть, что кто-то отправляет сумму кому-то другому, но без информации, связывающей транзакцию с кем-либо.
-> Для каждой транзакции следует использовать новую пару ключей, чтобы предотвратить их привязку к общему владельцу.
Я надеюсь, что этот пост прояснит ваше базовое понимание BlockChain. Оставьте комментарий, если у вас есть какие-либо вопросы, спасибо.