Хотя технологии на основе блокчейна обладают многими качествами, которые отличают их от других вычислительных парадигм, их основным ценностным предложением является генерация криптографической истины. В самом простом смысле, криптографическая истина — это форма вычислений и ведения учета, которая является более точной, доступной, проверяемой и защищенной от взлома, чем существующие альтернативы.
Криптографическая истина происходит от инфраструктуры с минимизацией доверия - кода, который работает именно так, как задумано, потому что его выполнение и проверка не зависят от доверия к незнакомцам или неконтролируемым переменным. Блокчейн генерирует минимизацию доверия, используя криптографию для аутентификации данных и обеспечения хронологического порядка записей, а также децентрализованный консенсус для подтверждения новых записей и сохранения их неизменности. Благодаря этому механизму многосторонние процессы могут отслеживаться и выполняться на общем, достоверно нейтральном бэкенде, который стимулируется к честному управлению.
В данной статье мы рассмотрим, как криптография и децентрализованный консенсус сочетаются в блокчейн для создания криптографической истины, а затем обсудим, как оракулы расширяют криптографическую истину для проверки любого типа событий или вычислений, недоступных в блокчейн.
Понимание криптографии и ее использования в блокчейн
Чтобы полностью понять криптографическую истину и ее роль в блокчейн, важно сначала ознакомиться с терминологией и общими принципами работы современной криптографии.
Введение в криптографию
Криптография — это наука о безопасном общении в присутствии враждебного поведения. Хотя большинство людей понимает роль криптографии в сохранении конфиденциальности коммуникации (например, приложения для обмена сообщениями с шифрованием), она также используется для аутентификации происхождения, проверки целостности и установления безответности коммуникации; т.е. для определения того, что сообщение пришло от конкретного человека и не было подделано, и что эти свойства не могут быть опровергнуты отправителем.
Криптография используется для преобразования оригинального сообщения в неразборчивое сообщение, которое может интерпретировать только тот, кто в курсе. Шифрование — это двусторонняя функция, которая шифрует исходное сообщение (т.е. открытый текст) в неразборчивое сообщение (т.е. шифротекст), которое может расшифровать только получатель, чтобы извлечь открытый текст. Другие криптографические функции являются односторонними и направлены только на доказательство какого-либо знания или свойства данных, а не на то, чтобы сделать исходные данные известными.
Алгоритм шифрования называется шифром, а ключ — это секрет, обычно строка символов, которая позволяет кому-то понять шифр. В шифрах используются два основных типа техник: подстановка и перестановка (также называемая транспортировкой). Шифры подстановки заменяют буквы, цифры и символы открытого текста другими буквами, цифрами или символами. Шифры перестановки используют буквы открытого текста, но меняют их порядок. Для создания сложности эти методы часто комбинируются, наслаиваются друг на друга, подвергаются влиянию внешних данных и изменяются с течением времени.
Первые шифры были аппаратными, то есть они запоминались, писались от руки или создавались с помощью нецифровых машин. Однако с появлением компьютеров алгоритмы шифрования на основе программного обеспечения стали доминирующей формой шифрования.
Современная криптография
Современная криптография в значительной степени основана на предположениях о вычислительной трудности - представлении о том, что конкретная проблема не может быть решена эффективно. Таким образом, хотя большинство криптографических функций теоретически возможно взломать, на практике их невозможно взломать, учитывая современные ограничения вычислительной техники. Таким образом, современные криптографические алгоритмы стремятся найти правильный баланс между вычислительной эффективностью и вычислительной безопасностью, опираясь на математику и информатику для принятия решений относительно таких факторов, как длина ключа. Именно поэтому многие криптографические функции основаны на времени и бюджете, которые требуются современным вычислительным системам для поиска решений трудноразрешимых математических проблем, таких как проблема дискретного логарифма, проблема факторизации целых чисел и теоретические проблемы эллиптических кривых.
Существует три общих класса современной криптографии на основе программного обеспечения: хэш-функции, симметричное шифрование и асимметричное шифрование.
Функции хэширования
Хэш-функции преобразуют данные любой длины в фиксированную битовую длину, называемую хэшем. Хэш — это уникальный идентификатор данных, сродни отпечатку пальца, по сути, проверяющий исходный набор данных. Хеширование данных широко используется для индексации данных и эффективного извлечения их из базы данных. Оно также используется для безопасного хранения данных, например, в случае веб-сайтов, которые хранят только соленый хэш паролей пользователей, чтобы предотвратить утечку паролей в случае взлома базы данных.
Хеш-функции не используют ключи и основаны на односторонних функциях, что обеспечивает их устойчивость к предварительным образам - практически невозможно, чтобы кто-то, кто не знает исходного сообщения, смог вычислить его по одному лишь хешу. Единственным реальным методом получения оригинального сообщения является перебор, т.е. угадывание всех возможных входных данных, что в случае хэшей представляет собой неограниченный набор возможных комбинаций символов. Алгоритмы хэширования также обычно разрабатываются таким образом, чтобы быть устойчивыми к сговору - практически невозможно, чтобы два разных входа генерировали один и тот же хэш. Эти свойства делают так, что изменение чего-либо во входных данных, например, написание буквы заглавными буквами или добавление знака препинания, приведет к совершенно другому и, казалось бы, случайному хэшу.
Самым популярным безопасным алгоритмом хэширования на сегодняшний день является SHA-256, который создает строки длиной 256 бит (т.е. 256 последовательных 1 и 0). 256-битные хэши часто представляются в шестнадцатеричном формате строк, поэтому их длина может составлять 32 или 64 символа. SHA-256 существует в рамках набора хэш-функций SHA-2, пришедшего на смену взломанному SHA-1. SHA-3 также был представлен в 2015 году на основе криптографического примитива Keccak.
Симметричное шифрование
Симметричное шифрование (оно же шифрование с использованием секретных ключей) предполагает использование общего секретного ключа, который отправитель и получатель используют для шифрования и расшифровки сообщений. Симметричное шифрование является быстрым и эффективным, но при этом возникает проблема безопасного обмена секретным ключом через Интернет. Хотя обмен можно осуществлять лично, этот метод не является глобально масштабируемым, поскольку требует формальных отношений с каждым контрагентом. Другая проблема заключается в том, что если секретный ключ скомпрометирован, то любой, кто его использует, рискует расшифровать все предыдущие и будущие сообщения. Именно поэтому многие интернет-протоколы, использующие симметричное шифрование, такие как TLS, также используют протоколы обмена ключами для безопасного создания общего секретного ключа без его передачи через интернет.
Наиболее популярным симметричным шифром является Advanced Encryption System (AES). AES предлагает ключи длиной 128, 192 и 256 бит - существенное улучшение по сравнению с 56-битными ключами, используемыми в предыдущем и ныне небезопасном стандарте шифрования данных (DES). Для сравнения, 56-битный ключ имеет 256, или 72 квадриллиона, возможных ключей, которые можно взломать перебором менее чем за 24 часа. В противном случае, для того чтобы перебрать 2 в степени 128 возможных ключей, даже при объединении всех компьютеров мира, потребуется триллионы и триллионы лет.
Асимметричное шифрование
Асимметричное шифрование (оно же криптография с открытым ключом) дает каждому пользователю пару открытого и закрытого ключей. Открытый ключ виден всем, в то время как закрытый ключ известен только его владельцу. Пользователи могут шифровать сообщения с помощью своего закрытого ключа, который может расшифровать любой человек с открытым ключом. Это известно как цифровая подпись, поскольку она доказывает знание секрета без раскрытия самого секрета (т.е. у пользователя есть закрытый ключ к адресу открытого ключа). Пользователи также могут шифровать сообщения с помощью чужого открытого ключа, который может расшифровать только человек с закрытым ключом (т.е. отправка конфиденциальной информации).
Наиболее популярными алгоритмами асимметричного шифрования являются RSA (названный в честь его изобретателей Рамиса, Шамира и Адлемана), ECC (Elliptic Curve Cryptography), Diffie Hellman (популярный протокол обмена ключами) и DSS (Digital Signature Standard). Некоторые алгоритмы асимметричного шифрования устойчивы к квантованию, а другие - нет, и в будущем их, возможно, придется модернизировать или отказаться от них.
Криптография в блокчейн
Блокчейн использует две основные формы криптографии: криптографию с открытым ключом и хэш-функции. Однако все чаще используются и другие криптографические методы для обеспечения масштабирования, конфиденциальности и внешних подключений к блокчейну. Ниже перечислены некоторые способы использования криптографических функций в блокчейн.
Аутентификация и верификация транзакций
Каждый пользователь блокчейна должен иметь пару открытый/закрытый ключ и адрес блокчейна, чтобы отправлять транзакции в сети. Закрытый ключ используется для генерации открытого ключа, а открытый ключ используется для генерации адреса блокчейна - как правило, это хэш открытого ключа с последними 20 байтами, добавленными к префиксу, например 0x. Обратите внимание, что многие блокчейн-кошельки и традиционные биржи абстрагируются от создания пары открытый/закрытый ключ и взаимодействия пользователя с ней.
Адрес блокчейна похож на реальное имя, связанное с банковским счетом пользователя (например, Pay to the Order...), только в блокчейне это псевдоанонимная строка цифр и букв. Адрес блокчейна - это место, где пользователь хранит средства и развертывает смарт-контракты. Закрытый ключ сродни пин-коду, который пользователь должен ввести, чтобы совершить действия со своим счетом, например, перевести средства или внести изменения в смарт-контракты. Открытый ключ похож на номер банковского счета пользователя и используется для проверки подписей закрытого ключа.
При отправке транзакций пользователь посылает в сеть сообщение со своего адреса в блокчейне, содержащее данные о транзакции и цифровую подпись. Данные транзакции описывают действие, которое пользователь хочет совершить в сети, а цифровая подпись подтверждает подлинность этого действия. Цифровая подпись генерируется из двух входных данных: хэша данных транзакции пользователя и его закрытого ключа. Затем цифровая подпись присоединяется к данным транзакции, образуя транзакцию с цифровой подписью.
Майнеры/валидаторы и полные узлы, которые управляют блокчейном, запускают протокол проверки цифровой подписи, чтобы проверить действительность транзакции. Протокол проверки берет исходные данные транзакции и хэширует их. Он также расшифровывает цифровую подпись с помощью открытого ключа пользователя, чтобы получить хэш. Если эти два хэша совпадают, то транзакция считается действительной. Благодаря сочетанию хэширования и криптографии с открытым ключом для поддержки цифровых подписей блокчейн гарантирует, что только владелец закрытого ключа может получить доступ к средствам, хранящимся на соответствующем адресе блокчейна.
Производство блоков, устойчивость к атаке Сивиллы и финализация
Производство блоков — это процесс, в ходе которого майнеры/валидаторы объединяют ожидающие транзакции в структуры данных, называемые блоками, и предлагают их в сети. Блок обычно состоит из списка всех транзакций, включенных в блок, и заголовка блока, содержащего метаданные блока. Чтобы создать блок, майнер/валидатор должен сгенерировать правильный хэш блока, иначе блок будет отклонен.
В блокчейнах Proof-of-Work (PoW) (например, в Bitcoin) проводится открытое соревнование между майнерами, где первый, кто сгенерирует достоверный хэш (т.е. хэш, начинающийся хотя бы с определенного количества нулей) методом перебора, будет выбран для предложения своего блока в реестр. Блокчейн PoW использует хэш-функции в производстве блоков для обеспечения устойчивости к атакам Сивиллы - защиты от того, что один субъект контролирует процесс производства блоков, подделывая альтернативные личности. Поскольку мощность хэширования - единственный способ для майнера PoW увеличить свои шансы стать автором блока, получение контроля над большей мощностью хэширования в сети сопровождается пропорциональными финансовыми затратами в виде выполнения большего количества вычислений. Это не только предотвращает атаки типа "отказ в обслуживании", но и требует от майнеров "работы", чтобы даже получить шанс на вознаграждение.
Блокчейн Proof-of-Stake (PoS), такой как Ethereum 2.0, также генерирует хэши при производстве блоков, но этот процесс специально разработан таким образом, чтобы быть легким, поскольку нет конкуренции между валидаторами. Вместо этого валидаторы PoS обычно выбираются в качестве авторов блоков случайным образом, часто на основе веса их доли. Блокчейн PoS создает устойчивость к атаке Сивиллы, требуя от валидаторов внесения криптовалюты (т.е. ставки) для участия в производстве блоков. Таким образом, валидаторы PoS должны вкладывать финансовые ресурсы, чтобы увеличить свои шансы быть выбранными в качестве автора блока. Зачастую их доля подлежит сокращению (т.е. конфискации), если они нарушают определенные правила протокола, например, включают в свой блок недействительные транзакции или подписывают два блока на одной высоте.
Как правило, правильный хэш блока должен иметь следующие исходные данные:
Корень Меркла - хэш всех включенных в блок транзакций, содержащийся в структуре данных дерева Меркла.
Nonce - произвольное число/буквенное сочетание, которое создает действительный хэш, удовлетворяющий текущей цели сложности. Блокчейны PoW периодически регулируют сложность угадывания нонса для достижения определенной частоты блоков (например, каждые десять минут), в то время как в сетях PoS нонсы относительно легко генерируются.
Дополнительные метаданные блока - в разных блокчейнах они разные, но могут включать в себя следующее: текущую версию программного обеспечения блокчейна, метку времени, целевую сложность майнинга, корень состояния всей цепи или номер текущего блока.
Хэш предыдущего блока - действительный хэш блока, который был проверен ранее.
Блоки включают хэш-значение предыдущего блока, чтобы криптографически связать их вместе в цепочку, сохраняя хронологический порядок реестра. Именно поэтому блокчейн считается неизменяемым, так как для отмены ранее подтвержденных блоков, называемых реорганизацией блоков или просто реорганизацией, потребовалось бы много вычислительной мощности и/или финансовых рисков. Даже если изменяется только одна транзакция в блоке, меняется весь хэш этого блока, и, таким образом, другие узлы могут легко заметить его. Обратите внимание, что не все перерегистрации являются злонамеренными; например, перерегистрации 1 блока на вершине цепочки более распространены из-за асинхронных сетевых условий. Однако глубокие перерегистрации могут быть более спорными, и их значительно сложнее осуществить, чем дальше назад они происходят.
В блокчейне PoW майнерам приходится заново генерировать достоверные хэши для всех заменяемых блоков, чтобы провести атаку на перестройку, а в это время другие майнеры тратят вычислительные ресурсы на добавление новых блоков к последнему блоку. Именно здесь вступает в игру логика консенсуса Накамото, согласно которой "самая длинная цепочка с наибольшим количеством работы является действительной", поскольку она предоставляет майнерам простой способ определения действительной версии реестра.
Именно благодаря этой логике блокчейн PoW имеет вероятностную окончательность, так как чем дальше назад пытаются внести изменения, тем меньше вероятность того, что атака будет успешной. Из вероятностной окончательности вытекает понятие атаки 51% - майнерам требуется 51% или более мощности хэширования, чтобы провести более глубокую атаку на реорганизацию или цензуру блоков других майнеров. Вероятностная окончательность также является причиной того, что централизованные криптовалютные биржи обычно разрешают пользователям тратить внесенные средства только после того, как будет добыто определенное количество последующих блоков поверх блока, включающего их транзакцию (например, обычно 6 блоков в Bitcoin, 32 блока в Ethereum). Это помогает предотвратить атаки двойной траты - когда одна и та же единица валюты обманным путем тратится более одного раза.
В сетях PoS всем или части валидаторов, не производящих в данный момент блоки, часто поручается подтвердить достоверность новых блоков с помощью механизма голосования. Валидатор, пытающийся провести перегруппировку, должен подвергнуть риску свою финансовую долю, причем штраф за нарушение децентрализованного консенсуса (обычно >2/3 валидаторов) увеличивается тем больше, чем глубже атака. Эта обобщенная модель PoS придает криптоэкономические свойства таким алгоритмам консенсуса, как Practical Byzantine Fault Tolerance, Tendermint, Casper и HotStuff.
Некоторые блокчейны PoS также имеют ограничение на то, как далеко назад может быть изменена главная книга блокчейна, по существу устанавливая контрольную точку, в которой каждая транзакция до нее имеет явную окончательность. Например, при объединении цепочки маяков PoS в текущую сеть Ethereum производство и проверка блоков будут разделены на эпохи, причем каждая эпоха имеет 32 слота длиной 12 секунд каждый. В течение каждой эпохи все валидаторы случайным образом делятся на комитеты размером не менее 128, при этом валидаторы в каждую эпоху перемешиваются. Во время каждого слота валидатор предлагает блок, а валидаторы из одного или нескольких комитетов подтверждают этот блок. Это сделано так, чтобы валидаторы подтверждали один предложенный блок за эпоху.
В конце каждой эпохи блоки в рамках предыдущей эпохи считаются обоснованными, если их обоснованность подтверждают не менее двух третей всех валидаторов (т.е. супербольшинство). Если две предыдущие эпохи подряд оправданы, то первая эпоха становится завершенной. При идеальных условиях сети и участии валидаторов завершение транзакции происходит в среднем около 14 минут. После того как эпоха завершена, правила протокола не позволяют отменить ее без внешнего социального консенсуса.
Хранение данных
Блокчейн — это реестр, содержащий все транзакции, которые когда-либо происходили в сети блокчейн в хронологическом порядке (хотя некоторые блокчейны изучают возможность обрезки исторических данных после определенной контрольной точки). Чем дольше работает блокчейн, тем больше становится реестр и тем дороже узлам обходится ее хранение и синхронизация. Чрезмерные требования к хранению и пропускной способности ставят под угрозу децентрализацию сети блокчейн, поскольку увеличивают аппаратные требования к работе всего узла, что потенциально позволяет небольшой группе субъектов нарушить работу сети.
Для эффективного и безопасного кодирования данных реестра блокчейн использует структуры данных, называемые деревьями Меркла. В дереве Меркла каждая транзакция пользователя хэшируется, затем сопоставляется с другой хэшированной транзакцией и снова хэшируется. Хеши постоянно сопоставляются и хешируются вверх по дереву, пока не образуется единый хеш всех хешей, называемый корнем Меркла.
Биткойн использует дерево Меркла для транзакций на основе модели "Неизрасходованный выход транзакции" (UTXO), а Ethereum использует деревья Меркла для транзакций, состояния и квитанций (например, журналов и событий) в так называемой модели учётной записи с обобщенной поддержкой смарт-контрактов.
Деревья Меркла полезны, поскольку занимают меньше дискового пространства по сравнению с другими структурами данных и способствуют эффективной проверке целостности данных и включению данных в распределённый реестр. Кроме того, поскольку корни Меркла включаются в заголовки блоков, они позволяют легким клиентам, подключенным к доверенному полному узлу, быстро и безопасно проверить, что конкретная транзакция была включена в блок, не загружая весь блокчейн.
Другие криптографические техники, используемые в блокчейн
Некоторые из других криптографических примитивов, используемых в блокчейн, включают:
Доказательства нулевого знания (ZKPs) - метод, позволяющий пользователю (проверяющему) доказать другой стороне (проверяемому), что он обладает знаниями о конкретной части информации, не раскрывая фактической информации, лежащей в основе. Например, в блокчейне Zcash полные узлы могут доказать, что транзакции действительны, не зная ни отправителя, ни получателя, ни суммы транзакции.
Доверенные среды выполнения (TEEs) - использование доверенного оборудования, такого как Intel SGX, для выполнения конфиденциальных вычислений, где целостность вычислений может быть доказана с помощью криптографических сертификатов. В качестве примера можно привести блокчейн Oasis, где все узлы-валидаторы используют доверенные среды выполнения для обеспечения конфиденциального и проверяемого выполнения смарт-контрактов.
Пороговые схемы подписи (TSS) - форма распределенной генерации и подписания ключей, используемая для аутентификации вычислений, выполняемых децентрализованной сетью, с помощью одной криптографической подписи, для подписания которой требуется только пороговый набор участников. Например, транзакция, которую должны подписать только 10 из 15 узлов, чтобы она считалась действительной.
Истина генерируется на основе децентрализованного консенсуса
Теория игр — это математический подход к стратегии, основанный на предсказании действий рациональных участников в определенном соревновании. В рамках теории игр разработка механизмов — это искусство использования стимулов для достижения желаемых результатов в рамках стратегических взаимодействий.
Блокчейн использует механизм проектирования для стимулирования децентрализованной сети рациональных, незаинтересованных узлов к поддержанию точному, неизменному, всегда доступному, устойчивому к цензуре реестру. Этот желаемый результат иногда называют достижением честного большинства - большинство узлов в сети блокчейн участвуют честно, что позволяет пользователям последовательно доверять консенсусу сети.
Давайте рассмотрим, как блокчейн структурирован и стимулирован для достижения истины через результат честного большинства.
Структура игры
Блокчейн — это прозрачный реестр с открытым исходным кодом, то есть все участники могут просматривать всю историю реестра и проверять, как функционирует код. Участники сети блокчейн делятся на пять основных групп:
Пользователи совершают транзакции в сети либо по личным причинам, либо для размещения приложений. В блокчейн-цепочках без разрешений любому человеку разрешается отправлять транзакции в сеть в любое время.
Майнеры/валидаторы расширяют реестр, создавая новые блоки из транзакций пользователей. В некоторых блокчейнах майнером/валидатором может стать любой желающий, в то время как в других блокчейнах количество участников ограничено. Некоторые компенсируют это ограничение, позволяя пользователям голосовать или делегировать долю валидаторам.
Полные узлы выполняют несколько функций в сетях блокчейн. Во-первых, полные узлы предоставляют конечные точки RPC, которые позволяют пользователям читать из блокчейна и писать в него. Конечные точки RPC могут быть созданы на самостоятельно размещенных узлах или доступны через сторонних поставщиков (например, Infura). При записи данных в блокчейн (т.е. отправке транзакций) полные узлы либо передают их в публичный мемпул, либо хранят в частных пулах транзакций. Это связано с тем, что в одноранговой децентрализованной сети не существует единого пула транзакций, а каждый полный узел имеет свой собственный пул транзакций.
Полные узлы также проверяют действительность транзакций пользователей перед передачей их в сеть или перед распространением транзакций других узлов в сети. Кроме того, полные узлы проверяют новые блоки, предложенные майнерами/валидаторами, что служит способом самопроверки блокчейна. Если они считают блок действительным, они добавляют его в свою копию реестра. Если они не считают его действительным, они отклоняют блок и не обновляют свою книгу. Консенсус среди децентрализованной сети полных узлов представляет собой текущее состояние реестра - совокупность всех адресов блокчейна, их балансов, развернутых смарт-контрактов и связанных с ними хранилищ. Любой человек может управлять полным узлом, хотя требования к аппаратному обеспечению в разных сетях различны. Майнеры/валидаторы часто участвуют в работе полных узлов.
Поставщики услуг — это внешние организации, которые предоставляют услуги блокчейн или создают услуги на основе содержимого блокчейн. К ним относятся оракулы, протоколы индексирования, централизованные биржи, легкие клиенты, архивные узлы, исследователи блоков и многие другие. Эти организации обычно имеют бизнес-модели, которые требуют взаимодействия с блокчейном. Например, централизованные биржи обеспечивают переход между криптовалютами и традиционной финансовой системой, легкие клиенты позволяют пользователям проверять информацию, отправленную с полных узлов, без необходимости иметь полную копию реестра, а оракулы предоставляют ключевые внешние ресурсы для приложений смарт-контрактов.
MEV-боты — это субъекты, которые стремятся повлиять на то, как упорядочиваются транзакции во время добычи блоков, в частности майнеры и разработчики MEV. Извлекаемая майнерами стоимость (MEV), также называемая максимальной извлекаемой стоимостью, основана на способности майнеров/валидаторов выбирать, какие транзакции будут включены в блок и как эти транзакции будут упорядочены. Затем они могут использовать эту привилегию в своих интересах для извлечения стоимости, например, опережая или атакуя пользователей и используя возможности ликвидации и арбитража. MEV-боты обычно работают через частные пулы транзакций и офф-чейн аукционы в блокчейне, хотя могут действовать и самостоятельно.
Игровые стимулы
Стимулы делятся на две большие категории: неявные и явные. Явные стимулы — это прямые вознаграждения или наказания за действия, совершенные в игре, например, обязательный платеж за доступ к услуге или жестко закодированный штраф за нарушение правил протокола. Неявные стимулы — это косвенные вознаграждения и наказания, вытекающие из игры, например, упущенные участниками возможности получения будущих доходов или затраты труда без гарантированной компенсации.
Наиболее очевидными стимулами в блокчейн являются вознаграждение за блок и плата за транзакции, выплачиваемая майнерам/валидаторам за создание одобренных блоков. Вознаграждение за блок обычно стандартизировано по количеству, в то время как плата за транзакции может колебаться в большую или меньшую сторону в зависимости от текущего спроса на ограниченное пространство блока. В процессе производства блоков также существуют стимулы для заказа транзакций определенным образом, которыми MEV-боты пытаются воспользоваться для получения финансовой выгоды.
Блокчейн также использует финансовые санкции через механизмы, устойчивые к атаке Сивиллы, такие как PoW и PoS; т.е. майнеры/валидаторы должны сделать вычислительную или финансовую ставку, чтобы получить шанс заработать вознаграждение, которое может быть потрачено впустую или сокращено, если они идут против консенсуса сети. Еще одним преимуществом требования к производителям блоков делать вычислительную или финансовую ставку является то, что это стимулирует децентрализацию. В частности, потому, что майнеру/валидатору становится все дороже получать больший контроль над хэш-мощностью сети или долей.
Блокчейн также платит майнерам/валидаторам в их собственной криптовалюте. Это создает неявный стимул для майнеров/валидаторов честно участвовать в работе сети, поскольку безопасная и надежная сеть, скорее всего, привлечет больше пользователей. Большее количество пользователей ведет к увеличению комиссий за транзакции, а также к потенциально более высокой цене на зарабатываемую ими криптовалюту. Более высокая цена криптовалюты может означать больший доход от каждого блока и увеличение личных средств.
Хотя явного стимула для запуска полного узла в протоколе обычно нет, существует множество неявных стимулов для этого. Для начала, полные узлы необходимы для работы сети, поэтому, как минимум, майнеры должны их запускать. Пользователи, приложения и поставщики услуг также должны запускать полные узлы или иметь к ним доступ, чтобы отправлять и проверять статус ожидающих транзакций. Таким образом, для поддержки экосистемы существует несколько моделей бесплатных узлов и узлов как услуги.
Помимо финансовых стимулов, полные узлы критически важны для целостности реестра, поскольку отсутствие децентрализации дает меньшей группе участников контроль над сетью. Скомпрометированный реестр повлияет на поставщиков услуг и децентрализованные приложения, бизнес-модели которых зависят исключительно от предположения о честном большинстве в блокчейн.
Децентрализованная сеть с полным узлом также помогает отделить генерацию блока от его верификации, обеспечивая подотчетность майнеров/валидаторов за счет снижения их способности произвольно изменять правила протокола. Кроме того, организации, управляющие собственным полным узлом, имеют наибольшую степень устойчивости к цензуре и гарантии безопасности, поскольку им не нужно доверять третьим лицам для чтения или записи в блокчейн. Эти неявные стимулы побуждают пользователей и ключевых экономических субъектов запускать полные узлы.
Результат игры
Внедрение этих стимулов в рамках заявленной структуры игры приводит к желаемым результатам блокчейн:
Точность - децентрализация блокчейн, неявные/явные затраты, стоящие на кону, и простота обнаружения недействительных транзакций стимулируют майнеров/валидаторов и полные узлы к достижению честного консенсуса относительно действительности транзакций.
Неизменность - финансовые затраты и риск при попытке изменить ранее одобренный блок делают это нежелательным, особенно когда поверх целевого блока создаются новые блоки.
Доступность - достаточное вознаграждение помогает майнерам/валидаторам постоянно генерировать блоки, а наличие значительной суммы, поставленной на карту, стимулирует создание полноценных сетей узлов, которые расширяются за пределы майнеров/валидаторов.
Устойчивость к цензуре - механизмы защиты от сибилов, финансовые вознаграждения и возможность беспрепятственного участия делают невероятно дорогостоящими попытки любой централизованной структуры цензурировать транзакции, особенно в течение длительного периода времени.
Благодаря этим желаемым свойствам у пользователей появляется больше стимулов для взаимодействия с сетью блокчейн. Не только использование сети может возрасти, но и пользователям станет удобнее хранить на блокчейне большие суммы ценностей и использовать свои активы на сети в приложениях смарт-контрактов.
Однако следует отметить, что, хотя блокчейн в целом устойчив к цензуре и точен, упорядочение транзакций по времени отправки или уплаченной комиссии не гарантируется из-за MEV. Именно поэтому разрабатывается Fair Sequencing Services (FSS) - сервис оракула для децентрализованного упорядочивания транзакций для блокчейн, сетей второго уровня и приложений на основе времени их получения.
Следует также отметить, что блокчейн в конечном итоге является системой, управляемой людьми для обслуживания людей, поэтому если все придут к социальному консенсусу (т.е. офф-чейн соглашению между участниками), что что-то в блокчейне необходимо изменить, то это может быть сделано. Самым ярким примером социального консенсуса, способствующего изменениям, стал хард-форк Ethereum - обновление программного обеспечения, несовместимое с предыдущими версиями, - который восстановил украденные средства после взлома DAO в 2016 году. Общественный консенсус также может иметь обратную сторону, когда участники сообщества препятствуют внедрению предложенных изменений, как, например, отказ от Segwit2x для сети Bitcoin и ProgPoW для сети Ethereum.
С учетом вышесказанного, блокчейн, вероятно, является наиболее эффективной сетью для защиты от нежелательных атак и изменений, которые идут вразрез с большинством общественного консенсуса, особенно с помощью криптографических и экономических механизмов.
Как оракулы использует криптографическую истину для создания глобальной машины правды
До сих пор основное внимание в этой статье уделялось тому, как блокчейн объединяет криптографию и теорию игр для последовательного формирования честного консенсуса - истины - относительно действительности внутренних транзакций. Однако как можно надежно проверить события, происходящие вне блокчейна? На помощь приходят оракулы.
Например, Chainlink — это децентрализованная сеть оракулов, предназначенная для генерирования истины о внешних данных и вычислениях вне блокчейна. В этом смысле сеть оракулов генерирует истину из в значительной степени недетерминированной среды. Детерминизм — это свойство вычислений, при котором конкретный вход всегда приводит к конкретному выходу, то есть код будет выполняться точно так, как написано. Децентрализованные блокчейны считаются детерминированными, поскольку в них используются методы минимизации доверия, которые устраняют или снижают до почти статистической невозможности любые переменные, которые могут препятствовать внутренней подаче, выполнению и проверке транзакций.
Проблема недетерминированных сред заключается в том, что истина может быть субъективной, труднодоступной или дорогостоящей для проверки. Например, какова цена биткойна? Ответ заключается в том, что универсальной цены биткойна не существует, поскольку она варьируется на разных биржах, каждая из которых находится в состоянии постоянного изменения. Более того, все ли пользователи согласятся с ценой, которую они готовы заплатить за истину и степенью уверенности, которую дает конкретная методика ее получения? Например, сеть из множества высокопроизводительных IoT-устройств позволит получить более точные показания погоды, чем один низкокачественный датчик, но при этом будет дороже в установке и эксплуатации. Эти ситуации подчеркивают реальность того, что методология получения внешней правды и стоимость, которую люди готовы за нее заплатить, будут отличаться от человека к человеку и от компании к компании.
Поскольку в блокчейн существует только один источник истины для всех пользователей и приложений, сеть оракулов является критически важной инфраструктурой, поскольку она дает пользователям возможность создавать свою собственную окончательную истину - заранее определенный метод генерации истины, который, по согласию всех участвующих сторон, является авторитетным для целей урегулирования их соглашений. Более того, механизм оракула, используемый для создания окончательной истины, может быть проверен, а его условия приведены в исполнение с использованием криптографических гарантий и детерминированных вычислений блокчейн.
В этом смысле окончательная истина — это определяемый пользователем механизм консенсуса для децентрализованных сетей оракулов, которые привязываются к блокчейну, чтобы работать в более доверительной манере. Некоторые из параметров консенсуса, которые пользователи могут определить, включают инфраструктуру сети оракулов, конкретные используемые источники данных, точные выполняемые вычисления, получаемые награды/штрафы и то, как сеть оракулов будет доказывать блокчейну целостность своей работы. И хотя эти параметры могут быть настроены в соответствии с различными бюджетами, требованиями к производительности и предположениями о доверии, отраслевые стандарты также укоренятся, и целые рынки или крупные сегменты рынков придут к согласию в качестве общего источника истины.
С точки зрения минимизации доверия сеть оракулов использует многие из тех же методов, что и блокчейн, например:
Криптография - каждый узел оракула имеет адрес открытого/закрытого ключа на каждом поддерживаемом блокчейне. Узлы используют эти ключи для создания цифровых подписей под всеми выполняемыми ими вычислениями, при этом подписи проверяются и хранятся в блокчейне. Криптографическая подпись не только доказывает, кто доставил данные и каковы были их вычисления, но и помогает поддерживать репутационные системы, которые отслеживают производительность узлов на цепочке, например, их историческое время работы и точность. Подписанные данные узлов-оракулов и сетей-оракулов также могут использоваться для выдачи вознаграждений и штрафов.
Децентрализованный консенсус - сеть оракулов использует децентрализацию на уровне источника данных, узла оракула и сети оракулов, чтобы уменьшить любые точки отказа и контроля в процессе получения, доставки и вычисления данных. Это дает пользователям возможность объединять данные из такого количества конкретных источников и узлов, которое им необходимо и за которое они готовы платить, чтобы с высокой степенью уверенности доказать достоверность внешнего события или вычислений вне цепи.
Финансовые стимулы - ноды оракулов получают деньги за предоставление услуг оракула в виде платы за пользование. Кроме того, в рамках будущей модели криптоэкономического стейкинга токены оракула могут быть заложены в качестве залога для дальнейшего стимулирования честных услуг оракула. Залог токенов может быть уменьшен в случае низкой производительности или злонамеренного поведения узла, например, утаивания данных/вычислений, несвоевременного предоставления данных или предоставления данных, которые отклоняются на определенный процент от общего медианного значения DON.
В итоге получается минимизированная с точки зрения доверия структура для выполнения вычислений вне цепочки в соответствии с любыми заданными пользователем параметрами, а результаты вместе с подписями передаются в блокчейн, где они могут быть проверены. Эти новые гибридные приложения "on-chain/off-chain" значительно расширяют возможности блокчейн, поскольку позволяют коду смарт-контракта на блокчейн реагировать на данные и вычисления из внешней среды, такие как поставщики данных, веб-интерфейсы API, сети IoT, другие блокчейн, унаследованные бэкенды, платежные системы или любые другие внешние ресурсы, и напрямую влиять на них.
Например, Price Feeds — это децентрализованные сети оракулов, которые используют многоуровневую архитектуру агрегации для создания отраслевого стандарта криптографической истины в отношении цен на активы и информации о финансовых рынках в режиме реального времени.
В Price Feeds данные агрегируются профессиональными компаниями-агрегаторами данных, которые генерируют средневзвешенные по объему цены (VWAPs) из необработанных данных сотен бирж. Затем каждый узел оракулов получает VWAP от нескольких агрегаторов данных и берет медиану. Наконец, медианные значения каждого узла далее объединяются в медиану для создания единого достоверного значения, которое хранится в блокчейн. Значения, представленные каждым узлом и сетью оракулов в целом, могут быть проверены любым человеком с помощью данных на цепочке.
Традиционные и децентрализованные финансовые приложения используют эти цены для выполнения важнейших операций, таких как выдача и ликвидация кредитов, расчеты по контрактам с деривативами и установление обменных курсов.
Мир, основанный на криптографической истине
В конечном счете, криптографическая истина привносит детерминизм, точность и прозрачность в вычисления и ведение записей. Зная, что код приложения будет выполнен так, как задумано, что исторические записи были избыточно проверены и останутся защищенными от взлома, социальные и экономические отношения могут быть основаны на более глубоком уровне истины, чем когда-либо прежде. Наличие прочного фундамента правды ведет к росту экономической активности и укреплению социальной гармонии - мира, который все хотят видеть воплощенным в жизнь. Именно поэтому все мы должны создавать и внедрять технологии блокчейна и оракула, которые устанавливают криптографическую истину взаимодействия нашего коллективного общества.
Телеграм канал про web3 разработку, смарт-контракты и оракулы.
nin-jin
Что значит не полноценному?
OracleLabs Автор
Спасибо, поправили. Подразумевалось "взломанному SHA-1" (https://www.linux.org.ru/news/security/1753185)
nin-jin
Ну а что значит взломанный алгоритм хеширования?
https://www.linux.org.ru/news/security/1753185?cid=1753588
pohjalainen
То, что для этого алгоритма эффективно решается задача поиска коллизий, и поэтому, например, он неприменим в схемах цифровой подписи.
nin-jin
Для взлома цифровой подписи необходимо найти прообраз, а не коллизию. Просто коллизия - это 50к баксов выкинутые на ветер.
AndrChm
Прообраз находить не нужно. Задана криптографическая хеш-функция Для заверения вычисляем и затем на основании формируем значение ЭЦП. Зачем нам прообраз, когда известно по построению? ЭЦП можно фальсифицировать только тогда, когда известно некоторое такое, что А это и есть коллизия. Более того, асимптотическая оценка вычислительной трудоемкости нахождения коллизии для произвольной хеш-функции где для -разрядной хеш-функции. И эта оценка ниже аналогичной оценки для нахождения прообраза, а именно
nin-jin
x'
- это и есть прообраз. Причём для взлома цифровой подписи нужно не абы какой прообраз найти, а соответствующий заданному валидному шаблону, содержащему подложные данные.А поиск коллизий - это просто генерация таких x1 и x2, хеши которых совпадают. К конкретной цифровой подписи они не имеют никакого отношения.
AndrChm
Подозревал, что терминология хромает. Для функции прообразом (preimage) в математической литературе принято назвать аргумент а образом (image) значение функции И не следует вводить собственные интерпретации, вы ведь не Рамануджан, который полностью игнорировал стандартные обозначения и толкования.
Теперь про атаки на цифровую подпись. Процитирую самого себя. «Злоумышленник способен навязать заверителю множество различных сообщений и вынудить сформировать для них ЭЦП. Распространенной практикой следует считать доказательство криптостойкости схемы ЭЦП в фокусе модели экзистенциальной фальсификации/подлога при атаке с подбором сообщений. Особенность модели в том, что сообщение изменяется/выбирается произвольным образом, без сохранения смыслового содержания в соответствии с принципом «атака ради атаки». Криптостойкость трактуется как неспособность злоумышленника при неизвестном секретном ключе, располагающего полиномиально-ограниченными ресурсами, как вычислительными, так и памяти, сформировать ЭЦП для некоторого сообщения с использованием множества заверенных ЭЦП произвольных сообщений, такую, что для сообщения, которое не принадлежит упомянутому множеству, при проверке на валидность булевская переменная принимает истинное значение.» Так что рассуждения про «валидный шаблон» — это частный случай экзистенциальной атаки с подбором сообщений. Иными слова, если схема ЭЦП уязвима в плане такой атаки, то её просто выбрасывают в мусорную корзину. И этот ваш «валидный шаблон» никакого смысла не имеет. Вы бы как-то теорию подтянули что-ли…
nin-jin
Уже не первый раз наблюдаю людей, которые любят цитировать свои высеры, где простые вещи описываются сложными словами, но не способные правильно прочитать сообщение, на которое отвечают.
AndrChm
Ай-я-яй! Как грубо-то! И ведь у вас есть имя и фамилия, которые известны. А ваша грубость — это проявление слабости. Подумайте об этом.
AndrChm
Я вот тут интересуюсь, а почему 50К баксов на ветер, а не скажем 100К или наоборот меньше 50К?
Не перестаю удивляться «компетентности» и апломбу участников…
nin-jin
Тут речь идёт о 75..120 килобаксах. За 5 лет ситуация думаю улучшилась.
AndrChm
Вы хоть понимаете, что значит силовая атака с целью нахождения коллизии для SHA256, например? Это в худшем случае приблизительно опробований. Вот вам несколько цифр для отрезвления. Число атомов Вселенной Число атомов нашей галактики Число атомов Солнца и так далее. Вы о каком улучшении толкуете? Вы сможете сделать то, о чём так безответственно заявляете, за пару сотен тысяч баксов? Не смешите…
nin-jin
И при чём тут SHA256? В статье описывается алгоритм со сложностью 2^63 для SHA-1 и приводятся расчёты стоимости поиска коллизии. Довольно бесполезной для целей взлома цифровой подписи.
AndrChm
Только коллизии и полезны для фальсификации ЭЦП. Кстати, они всегда существуют. Вопрос только в том, как их найти. И ещё раз. Нет никакого смысла обсуждать SHA-1. Эта хеш-функция скомпрометирована. Как минимум для ЭЦП. Так же как нет никакого смысла обсуждать DES, например, на смену которому пришёл стандарт AES. Всё развивается. Прошу прощения за очередной высер. Уж будьте великодушны, не судите строго. Да, и побольше минусов, конечно.
nin-jin
Оставлю для вас место для ссылки на "компрометацию":
AndrChm
Сложная семантика. Вот не догоняю своим умишком-то. Но уловил щедрое предложение оставить место. Это дивно! И… больше минусов, хороших и разных!
AndrChm
Про SHA-1 речь уже давно не идёт. Это всё не интересно. Никто для ЭЦП не использует. Пройденный этап.
ReadOnlySadUser
Стоит ли говорить, что уже давно приехали алгоритмы SHA-3?)
nin-jin
Которые минимум в 3 раза медленнее и выдают в полтора раза больший дайджест?
AndrChm
Вы вот рассуждаете как программист, но при этом почему-то забываете, что в контексте ЭЦП разрядность значения хеш-функции (тот самый образ или дайджест) если и имеет смысл, то только с точки зрения криптостойкости. Ведь это значение вычисляется при формировании и проверке ЭЦП и не сохраняется в долговременной памяти в течение всего срока жизни заверенного ЭЦП документа. В отличие от самой цифровой подписи, которая должна храниться вместе с документом. Вот её разрядность уже имеет смысл. Но для современных схем ЭЦП на эллиптических кривых эта разрядность редко превышает 512 бит. Так что интересна только криптостойкость, которую может гарантировать хеш-функция в составе схемы ЭЦП. Остальные параметры вторичны, хотя разработчики хеш-функций их тоже имеют в виду, конечно.
nin-jin
Я вам по секрету скажу: хеш-функции применяются не только в электронных подписях. Только никому не говорите, а то прикроют лавочку.
AndrChm
Вы меня пугаете! Надо было сохранить в секрете это сакральное знание. Действительно, а вдруг прикроют? Минусы, минусы давай!
AndrChm
Вооооот. Хорошо. Не останавливайтесь.