СОДЕРЖАНИЕ

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

Блокчейн делает цифровой актив, биткойн, который Сатоши Накамото предложил в официальном документе, действительно децентрализованным. Блокчейн действует как общедоступная книга, которая хранит информацию в цифровом виде и поддерживается узлами (один экземпляр децентрализованной сети, которая хранит, делится и сохраняет данные в блоке), доступными для всех. Количество цифровых активов (биткойнов), которые у вас есть, основано на вашей истории транзакций в блокчейне. Если это кажется много (мне так :/), давайте рассмотрим практический пример того, как публичные реестры работают с использованием криптографии и как они становятся децентрализованными со временем, когда стороны, участвующие в системе, начинают меньше доверять друг другу.

Чарльз, Энджи, Кристина и Эндрю — однокурсники по университету. Они часто платят за вещи вместе, от счетов за электричество до счетов за ужин. Каждый раз, когда возникает потребность в оплате, им приходится разбивать счет на четыре части, что через некоторое время стало громоздким, поэтому Энджи создала бухгалтерскую книгу, в которой они записывают все платежи, сделанные друг другом, и все они будут платить. до того, что они должны в конце месяца. Эта система избавляет их от необходимости немедленно делить счет за все. Например, если Кристина платит 100 долларов за кабельное телевидение, она записывает в бухгалтерской книге, что Чарльз, Энджи и Эндрю должны ей по 25 долларов каждый, и в конце месяца они внесут этот платеж. Довольно просто (это мое предзнаменование)

В этой системе Энджи создала:

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

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

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

Sign(Transaction, sk) = Signature 

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

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

Verify(Transaction, Signature, pk) = True or False

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

Пример того, как будет выглядеть криптографическая хеш-функция:

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

Протоколы новой системы, созданной Энджи:

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

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

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

  • Любой желающий может добавлять строки в бухгалтерскую книгу.
  • Каждый получает или отправляет деньги людям, которым он должен, в виде токенов (Angcoins).
  • Вы можете обменять реальную валюту на подписанную строку транзакции в бухгалтерской книге.
  • Только подписанные транзакции действительны, а неподписанные недействительны.
  • В реестр добавляются только подписанные транзакции.
  • Каждая транзакция также имеет уникальный идентификатор, чтобы избежать дублирования записей.
  • У каждого человека в блоке была копия базы данных, что делало ее децентрализованной.

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

Консенсус, подтверждающий работу биткойнов, должен содержать не менее 17 нулей в хеш-функции, прежде чем программа сможет добавить его в блокчейн.

Люди в системе также будут платить этим создателям блоков за добавление своих транзакций в блок, но лимит транзакций будет ограничен 0,005 ангкойна за транзакцию.

В блоке может быть более 500 транзакций размером до 8 МБ, а средняя комиссия за транзакцию составляет 80 сатоши.

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

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

Простая реализация технологии блокчейна, созданная Энджи:

Output:
Nonce for the genesis block: 175
Nonce for the second block: 133
Nonce for the third block: 708
Hash for the genesis block: 003fa7db7fd704d200ccb8b8bba927fa107a015613ca46e9be44f449ba230876
Hash for the second block:
00d7e08a9db22ba7e5b739b3efc3e7f25d34df2147d0a9f8efd7f54b6845791a
Hash for the second block:
003cec13eb3e0243911adcef36221a796c3778623d4835376c51a4cf82e73850

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

В системе Биткойн потребуется до 80 миллиардов долларов, чтобы контролировать до 50 процентов вычислительных ресурсов.

Протоколы этой новой системы:

  • Любой может добавить транзакцию в блок.
  • Проверяются только Транзакции, которые были подписаны. Остальные признаны недействительными.
  • Вы можете покупать токены вне сети за физическую валюту в обмен на добавление транзакции в блок.
  • Каждая транзакция также имеет уникальный идентификатор, чтобы избежать дублирования записей.
  • Создатели блока (майнеры) добавляют действительную транзакцию в блок.
  • Вам необходимо выполнить доказательство работы, прежде чем ваш блок будет добавлен в цепочку.
  • Создатели блоков получают вознаграждение за блок в зависимости от количества блоков, которые они добавляют в блокчейн.
  • Каждый имеет доступ к блокчейну или децентрализованному блокчейну.
  • Самая длинная цепочка — это блокчейн, который проверяется в базе данных, а самая короткая цепочка становится недействительной пользователями в системе.
  • Каждый получает или отправляет деньги людям, которым они должны, на основе их истории транзакций в децентрализованной бухгалтерской книге в виде токенов (Angcoins).

ПРОТОКОЛЫ BITCOIN БЫЛИ ОГРАНИЧЕНЫ

На высоком уровне эта концепция является основой существования биткойнов с использованием протокола блокчейна. Сатоши Накамото создал этот протокол как способ обмена активами (Биткойн) на децентрализованной и не требующей доверия платформе для создания глобальной валюты из блокчейна, который не создается централизованным правительством и не контролируется централизованной банковской системой. Протоколы были разработаны как одноцелевые инструменты, созданные для одной конкретной программы. Для протокола биткойн это были цифровые активы, а для Namecoin — регистрация доменного имени. Эти протоколы действовали как калькулятор и не могли использоваться для каких-либо действий, выходящих за рамки протокола.

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

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

ПОЧЕМУ ETHEREUM БЫЛ ВАЖЕН ДЛЯ ТЕХНОЛОГИИ БЛОКЧЕЙН

Ethereum был разработан как блокчейн общего назначения, такой как операционная система iOS, Android или Windows. Вы можете создавать на нем приложения вместо того, чтобы создавать совершенно новую операционную систему для запуска приложения. Эфириум мог бы достичь этого, имея полную виртуальную машину Тьюринга, в которой виртуальная машина Эфириума (EVM) могла бы хранить состояние. Виталик Бутерин создал виртуальную машину Ethereum для обработки любой сложной вычислительной системы, которая может работать на конечном автомате. Машина Тьюринга, разработанная Аланом Тьюрингом, представляет собой машину с пустой лентой неограниченной длины — по сути, одномерный массив, который может бесконечно расти с обоих концов — и позволяет ей считывать и записывать символы в любом месте ленты. Одна лента служит как для хранения, так и для ввода: она может быть предварительно заполнена строкой символов, которая будет обрабатываться как ввод. Машина может считывать эти символы во время выполнения и при необходимости перезаписывать их. Доступ к этой ленте позволяет нам решать новые виды проблем, помимо простого принятия или отклонения строк. Например, мы можем разработать детерминированную машину Тьюринга для увеличения двоичного числа на ленте.

Это шесть процедур увеличения двоичного числа на машине Тьюринга:

Дайте машине три состояния: 1, 2 и 3, причем состояние 3 является состоянием принятия.

  • Запустите машину в состоянии 1 с головкой ленты, расположенной над самой правой цифрой двоичного числа.
  • Когда в состоянии один и читается ноль (или пробел), перезапишите его единицей, переместите головку вправо и перейдите в состояние 2.
  • Когда в состоянии единица и читается единица, перезапишите ее нулем и переместите головку влево.
  • Переместите головку вправо, когда будет прочитано состояние два и ноль или единица.
  • Когда в состоянии два и прочитан пробел, переместите головку влево и перейдите в состояние 3.

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

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

Вот пример того, как создать простой смарт-контракт с использованием Ethereum:

#A program to create a basic decentralized DNS system where people can register addresses on ethereum
data domains[](owner, ip) #mapping between a domain and a tuple conntaining an ip address
#register the domain address if the address does not already exist 
def register(addr):
    if not self.domain[addr].owner:
        self.domains[addr].owner = msg.sender 
# set the ip address associated with the domain address after it has been created 
def set_ip(addr, ip):
    if self.domain[addr].owner == msg.sender:
        self.domains[addr].ip = ip

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

К сожалению, в децентрализованной системе нет «ctrl + C», когда возникает эта проблема, а если и есть, то она не децентрализована. Добавление смарт-контракта, который работает бесконечно, случайно или преднамеренно, может привести к форме DOS-атаки. Атака типа «отказ в обслуживании» (DoS) предназначена для отключения машины или сети, что делает их недоступными для предполагаемых пользователей. Например, DoS-атака может произойти в небольшом магазине, куда в жаркий день заходит много людей и притворяются, что делают покупки, чтобы спастись от жары, потому что в магазине есть кондиционер. Такая ситуация продолжалась до тех пор, пока магазин не был заполнен. Тем не менее, никто ничего не покупал, а кто-то воровал, и уследить за этим становилось трудно из-за того, что вокруг было много людей, и в конце дня ты приходишь в убыток. Атаки типа «отказ в обслуживании» тратят впустую много ресурсов, которые другие узлы могли бы использовать для обработки смарт-контрактов. Решением проблемы Эфириума было создание платы за газ. Поскольку EVM выполняет смарт-контракт, он тщательно учитывает каждую инструкцию (вычисление, доступ к данным и т. д.). Каждая инструкция имеет заранее определенную стоимость в единицах газа. Когда транзакция инициирует выполнение смарт-контракта, она должна включать количество газа, которое устанавливает верхний предел того, что может быть потреблено при выполнении смарт-контракта. EVM прекратит выполнение, если количество газа, потребленного для вычислений, превысит количество газа, доступное в транзакции. Газ — это механизм, который Ethereum использует для выполнения вычислений по Тьюрингу, ограничивая при этом ресурсы, которые может потреблять любая программа. Таким образом, Ethereum больше похож на квази-машину Тьюринга, использующую преимущества своей вычислительной мощности, но при этом учитывающую проблему остановки с платой за газ, которую мы можем купить за эфир.

Компоненты блокчейна Ethereum:

  • Одноранговая (P2P) сеть, соединяющая участников и распространяющая транзакции и распространяющая транзакции, а также блоки проверенных транзакций на основе стандартизированного протокола.
  • Сообщения в форме транзакций представляют переходы состояний.
  • Набор согласованных правил, определяющих, что представляет собой транзакция и что обеспечивает допустимый переход состояния.
  • Конечный автомат, который обрабатывает транзакции в соответствии с правилами консенсуса.
  • Криптографически защищенный блокчейн действует как запись всех проверенных и принятых переходов состояний.
  • Алгоритм консенсуса, который децентрализует контроль над блокчейном, заставляя участников сотрудничать для обеспечения согласованности.
  • Теоретически в игре звучит схема стимулирования (Proof of Stake, плата за газ) для экономической защиты государственной машины в открытой среде.
  • Одна или несколько программных реализаций вышеперечисленного с открытым исходным кодом («Клиенты»).

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

ПРОБЛЕМЫ, СВЯЗАННЫЕ С ETHEREUM, ЗАВЕРШЕННЫМ ТУРИНГОМ

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

БИТКОИН ИСПРАВЛЯЕТ ЭТО…..

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

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

ССЫЛКИ ДЛЯ ДОПОЛНИТЕЛЬНОГО ЧТЕНИЯ

  • Понимание вычислений Тома Стюарта
  • Освоение Ethereum, доктор Гэвин Вудс и Андреас Антонопулос
  • Белая книга Биткойн Сатоши Накамото
  • «Желтая книга Эфириума» Виталика Бутерина
  • Solidity Security: полный список известных векторов атак и распространенных антишаблонов от доктора Адриана Мэннинга
  • EVM принципиально небезопасен Эмили Филмор