перевод оригинальной статьи Дэниела Ларимера - https://hive.blog/fractally/@dan/rethinking-transactions-as-proof-of-stake-tapos
В 2014 году я представил концепцию Транзакции как доказательства доли (Transactions as Proof of Stake) для защиты BitShares, и с тех пор она используется в Steem, Hive, EOS и многих других цепочках. Некоторые считают ее одним из моих самых больших вкладов в криптовалютное пространство.
TaPoS - это техника обеспечения безопасности сети путем предотвращения применения транзакций к форкам, отличным от того, который видел пользователь в момент подписания транзакции. Это защищает сеть от реорганизации в долгосрочной перспективе и защищает пользователя от подписания транзакции, основанной на ложной картине мира. С помощью TaPoS централизованные участники могут управлять блокчейном, гарантируя пользователям, что цепочка не может быть реорганизована без обновления подписей всеми остальными пользователями.
TaPoS работает путем включения в транзакцию небольшого количества данных из недавнего идентификатора блока таким образом, что любое изменение в блокчейне делает транзакцию недействительной. Блокчейн имеет ценность только в том случае, если подавляющее большинство пользователей могут включать свои транзакции в блоки. Поэтому целенаправленная атака с двойной тратой, которая пытается отменить одну транзакцию, должна будет одновременно аннулировать почти все остальные транзакции. В такой ситуации для огромной массы пользователей было бы тривиально определить, какой форк легитимный, а какой нелегитимный. В других блокчейнах атака "двойной траты" доставила бы неудобства лишь небольшому меньшинству пользователей, а большинству было бы гораздо сложнее достичь широкого консенсуса, кроме как следуя правилу самой длинной цепи (Биткойн).
Даже если бы было ясно, что имела место атака, было бы трудно объективно определить, какая из транзакций с двойной тратой была законной, а какая - нет, без каких-либо других публичных привязок в каждой транзакции.
TaPoS работает путем криптографического включения идентификатора последнего блока в каждую транзакцию. EOSIO реализует это, используя 16 бит для представления младших битов номера блока и 32 бита из идентификатора блока для подтверждения соответствия. Четырех байтов недостаточно для предотвращения атаки грубой силы на один блок; однако изменение одного блока потребует изменения всех последующих блоков до тех пор, пока секретный форк не будет раскрыт и пользователи не начнут производить транзакции на новом форке. Таким образом, стоимость атаки равна поиску множества коллизий 32-битного хэша. Дорого, но не невозможно. В этом случае стоимость растет линейно в зависимости от того, как давно была предпринята попытка реорганизации. На цепочках с доказательством работы сложность атаки методом перебора будет невыполнимой, так как каждая попытка найти 32-битную коллизию потребует полного доказательства работы блока.
Хотя этот подход хорошо работает против случайных реорганизаций и атак воспроизведения на намеренно форкнутых цепочках, он не может считаться полностью криптографически безопасным в системах не использующих доказательство работы (POW).
Новый подход к TaPoS
В новом блокчейне Fractally мы улучшаем TaPoS таким образом, что все транзакции, криптографически связанные с блоком, не могут быть атакованы перебором, и мы делаем это с 50% меньшими накладными расходами на каждую транзакцию, чем EOSIO или HIVE. EOSIO и HIVE используют по 6 байт для TaPoS, в то время как наша новая цепочка требует всего 3 байта.
Секрет нового подхода заключается в том, что каждая транзакция, которая ссылается на определенный блок, связывает себя с этим блоком по-разному. Для начала, вместо 2 байт для ссылки на блок TaPoS использует 1 байт, который может ссылаться на любой из последних 127 блоков или 1 из каждых 4096 блоков за последние 6 дней. Это обеспечивает большую гибкость для автономного подписания, но при этом позволяет легко ссылаться на любой из последних блоков.
Следующие 2 байта - это контрольная сумма, которая требует проверки псевдослучайного смещения в идентификаторе блока. Это псевдослучайное смещение может быть рассчитано с помощью хэша транзакции со всеми байтами после байта контрольной суммы (обычно в заголовке) или другими подобными способами. Этот хэш не обязательно должен быть криптографически безопасным, лишь бы он был детерминированным и хорошо распределенным. Существует вероятность 1 к 65 535, что блок форка случайно совпадет с контрольной суммой любой отдельной транзакции; однако каждая транзакция, ссылающаяся на один и тот же блок, проверяет разную часть идентификатора блока, что означает, что злоумышленник должен совпасть с 10 из 20 байтов, чтобы перенести 50% транзакций. Чтобы перенести 95% транзакций, злоумышленнику придется решить более сложную задачу, чем проверка блока биткоина, и ему придется выполнять эту работу в 100 000 раз быстрее, чем блокчейн биткоина, чтобы успеть за 1 блок в секунду. Даже если бы у них были деньги на электроэнергию, не существует достаточного количества оборудования для выполнения этой задачи, а то оборудование, которое существует, уже используется для законного майнинга.
Если злоумышленник, которому удалось получить контроль над 2/3 производителей блоков, захочет намеренно создать форк для попытки двойной траты, ему придется отменить более 99% всех транзакций, ссылающихся на блок(ы), который он переписывает, или ему потребуется больше вычислительной мощности, чем всей сети биткоина, чтобы перенести даже небольшую часть. Атаки на большие расстояния были бы практически невозможны без отбрасывания 99% всех транзакций, что означает, что никто не будет иметь никакого экономического интереса в гипотетическом форке.
TaPoS 2.0 и доказательство работы (POS)
Блокчейн с доказательством работы (POW) страдает от ряда известных уязвимостей, включая эгоистичный майнинг и любое количество атак, которые основаны на создании альтернативного форка в тайне и его последующем раскрытии.
Используя новый подход к TaPoS, мы можем модифицировать алгоритм консенсуса Proof of Work таким образом, что каждый перевод производит TaPoS-Coin-Days-Destroyed (TCDD) в качестве побочного эффекта, который рассчитывается как номер блока TaPoS новой транзакции минус номер блока TaPoS входной транзакции токенов, умноженный на количество монет на входе.
"Лучшая цепочка" - это та, которая имеет наибольший TCDD; однако для расширения цепочки новые блоки также должны иметь достаточное доказательство работы. Любые скрытые форки не смогут увеличить TCDD за пределы своих собственных монет и потребуют такого же количества доказательств работы, как и публичная цепочка. Модернизация Биткойна для поддержки такой функции может быть выполнена без хард форка, то есть старые и новые узлы смогут читать транзакции, использующие проверку TaPoS. Любые скрытые форки будут автоматически игнорироваться новыми узлами. Хотя старые узлы могут некоторое время следовать скрытой цепочке, мало какая критически важная инфраструктура распознает ее, и старым узлам придется обновляться, чтобы восстановиться после попытки взлома. Снижение вероятности успеха, вероятно, будет достаточным для того, чтобы предотвратить любую такую попытку с самого начала, что означает, что сеть может достичь стадного иммунитета при достаточном количестве критически важных игроков, принявших новый протокол TaPoS, который требует только 3 байта на транзакцию.
Конечным результатом будет гибридная система POS и POS, которая обладает всеми преимуществами обеих систем и одновременно устраняет многие недостатки любой из них, работающей изолированно.
Полезен ли TaPoS?
TaPoS, безусловно, имеет некоторые теоретические преимущества, но приносит ли хоть одно из этих преимуществ практическую пользу, чтобы компенсировать мизерную стоимость? Для начала, TaPoS уже несколько лет используется на Hive и EOS, но в этих цепочках не было ни намека на дальнюю атаку. Алгоритм выбора производителя блоков и другие социальные силы означают, что шанс успешной атаки уже достаточно мал.
Вторичное использование TaPoS заключается в облегчении преднамеренных форков сообщества при предотвращении атак повторного воспроизведения. Хотя TaPoS делает это тривиальным, этого также можно добиться небольшим изменением алгоритма проверки подписи в рамках запуска нового форка.
В Fractally существует совершенно новый уровень субъективной подотчетности благодаря надежным процессам управления, что сделает любую атаку на техническом уровне практически бессмысленной как с TaPoS, так и без него.
Это оставляет основное преимущество TaPoS для обеспечения безопасности блокчейн Proof of Work и для использования в централизованных частных блокчейнах. Частная компания может запустить цепь, в которой она является единственным производителем блоков, но сообщество является распределенным валидатором блоков. Используя TaPoS, частная компания не смогла бы форкнуть цепь для двойной траты средств без сговора достаточного количества своих клиентов, переключившихся на новый форк и аннулировавших все транзакции своих клиентов в период форка. Это означает, что частная компания не может избирательно вредить клиентам, оставляя единственную уязвимость частной цепи - цензуру. Эта цензура, если она широко распространена, может быть легко устранена с помощью форка, возглавляемого сообществом, для нового централизованного производителя с децентрализованными валидаторами.
Заключение
Стоимость TaPoS относительно невелика, и он обеспечивает всем участникам значимую степень защиты даже от самого централизованного набора производителей блоков. Его наличие означает, что нет стимула даже для попыток дальних атак, даже если эти атаки в конечном итоге будут иметь лишь временные последствия. При 1000 транзакций в секунду общая стоимость составляет 3 кб в секунду или около 0,01% пропускной способности.
Похоже, что TaPoS - это недорогой метод устранения подавляющего большинства теоретически возможных, но, скорее всего, неосуществимых атак на все остальные известные алгоритмы консенсуса. Поэтому для тех, кто ценит полную криптографическую и объективную безопасность, TaPoS кажется стоящим внимания. Для компаний, желающих иметь централизованный блокчейн, TaPoS представляется лучшим способом обеспечить криптографическую приверженность прошлому, не отказываясь от контроля над будущим. Это, вероятно, гораздо более экономически эффективный и безопасный способ, чем публикация ваших хэшей в другом публичном блокчейне.
Для тех, кто смотрит на практические реалии относительно теоретических рисков и спокойно относится к субъективной безопасности, TaPoS, вероятно, является ненужным накладным расходом. Тем не менее, есть смысл заставить замолчать ярых критиков, которые могут напугать ваших клиентов теоретическими, но непрактичными рисками.
По этим причинам я считаю, что TaPoS должен быть особенностью каждого блокчейна, независимо от используемого алгоритма консенсуса.
Подписывайтесь на мой телеграм паблик чтобы быть в курсе последних разработок в области ДАО и блокчейн технологий - https://t.me/ashirov_public