dPoW “без купюр”
Оригинал: https://medium.com/@jameslee777/dpow-demystified-7ce2701fd74
Спустя 2.5 года после первого запуска, технология dPoW наконец-то привлекла к себе достаточно много внимания. Идея проекции данных на блокчейн BTC была не новой, однако, децентрализованный способ достижения этой цели определенно является инновацией.
Я видел множество людей называющих dPoW централизованным из-за использования 64 нотариальных узлов (notary nodes). Централизованный — означает контроль над чем-то единственным субъектом и, когда я в последний раз прикидывал в уме - число 64 было гораздо больше чем 1. То есть в худшем случае dPoW это распределенный процесс. Операторы нотариальных узлов избраны через специальную процедуру голосования, в которой вес голоса определяет количество монет под контролем избирателя и в последние годы примерно 40–50 независимых операторов контролируют 64 узловых сервера. На мой взгляд это гораздо меньшая централизация, чем несколько майнинг пулов контролирующих большую часть хэшрейта, как у многих других монет.
Однако, имеется даже более веская причина называть dPoW децентрализованным. Это факт того, что все узлы в сети проверяют на валидность все предложенные нотаризации (прим.: транзакции связывания состояния сторонних блокчейнов с блокчейном BTC) и в случае инвалидности просто игнорируют ее. Если ваш песик и обезьянка в зоопарке начнут создавать случайные нотаризационные транзакции (нотаризации), то все что получится в результате, это не валидные нотаризации не имеющие никакого консенсусного эффекта.
Преимущество использования системы выборов для определения операторов нотариальных узлов заключается в том, что мы можем положиться на избранников в вопросе регулярного создания валидных нотаризаций. После отправки валидных нотаризаций в сеть все узлы проверяют совпадают ли эти данные с их локальными данными, и затем обновляют локальный статус для того, чтобы начать процесс нотаризации на актуальном блоке.
Данный процесс происходит только после использования блокчейном нормальных механизмов консенсуса для разрешения небольших форков, и до того момента, когда блокчейн синхронизирован во всей сети, нотариальные узлы не придут к консенсусу.
Просто подумайте об этом. Если multisig (прим.: транзакция требующая подписи несколькими приватными ключами) транзакция подписана 13 людьми — делает ли это ее централизованной? Очевидно что 13 это больше чем 1, т.е. мы можем не обращать внимание на претензии к тому, что multisig централизован. Теперь давайте попробуем задать правильные вопросы чтобы полностью прояснить этот момент. Если вы подписываете транзакцию на вашем узле и отправляете её в сеть, централизована ли эта транзакция только потому что только вы были задействованы в этом процессе? Если вы можете сделать это для BTC транзакций— делает ли это биткоин централизованным?
Конечно же нет!
Децентрализация это не то, сколько узлов участвовало в процессе создания транзакции, а то, какой процент узлов участвовал в валидации транзакции. Признание транзакции валидной всеми узлами в сети, вот это и есть децентрализация. Никто не может обмануть узел заставив думать что неправильная нотаризация, несовпадающая с локальными данными блокчейна, правильная. Она будет просто отклонена.
Надеюсь это объяснение прекратит рассуждения на тему “централизованного dPoW”.
Что касается изменений в коде существующих протоколов для поддержки dPoW, то можно выделить 3 основных:
- Обнаружение предлагаемых нотаризаций посредством сканирования транзакций в новых блоков. В случае, если было обнаружено, что у нотаризационной транзакции корректный набор подписей и кроме того она соответствует локальным данным блокчейна, то номер нотаризованного блока обновляется.
- Изменение стандартного кода контрольных точек так, чтобы использовать последний нотаризованный блок в качестве контрольной точки, которая будет отклонять блоки которые поступили до нотаризации.
- Предотвращение любых попыток реорганизаций блоков (reorgs), если эта реорганизация затрагивает нотаризованный блок.
Как вы можете видеть, внедрение dPoW требует достаточно небольших изменений в любой, уже использующийся, консенсусный код и добавляет задержку, чтобы удостовериться в том, что локальный блокчейн находится в консенсусе с основным блокчейном. Любая не валидная нотаризация будет попросту отклонена.