2. РеализацииВ настоящее время существует несколько примечательных криптовалют, основанных на согласовании путем подтверждения доли (табл. 1):
• Peercoin, или PPCoin (peercoin.net);
• Nxt (nxt.org);
• BlackCoin (blackcoin.co);
• Novacoin (novacoin.org).
Делегированное подтверждение доли используется в BitShares, платформе для электронных активов (bitshares.org). Разработчики Ethereum (ethereum.org) планируют изменить согласование на делегированное подтверждение доли в будущем; сейчас Ethereum опираются исключительно на доказательство работы.
2.1. PeercoinPeercoin, или PPCoin криптовалюта, основанная в 2012 году анонимным разработчиком Sunny King. Peercoin использует комбинацию доказательства работы и подтверждения доли:
• Доказательство работы используется для распределения новых монет.
• Подтверждение доли используется для защиты транзакций, то есть в качестве основного средства для генерации блоков транзакций.
Структура блокчейна в Peercoin очень похожа на Биткойн: также, как и Биткойн, Peercoin оперирует неиспользованными выходами транзакций (UTXO). Новые блоки находятся в среднем каждые 10 минут; транзакции состоят из входов, ссылающихся на UTXO и выходов. Peercoin использует тот же алгоритм доказательства работы, основанный на хеш-функции SHA-256, что и Биткойн; однако награда за майнинг зависит не от высоты блока, а от целевой сложности. Когда сложность растет, вознаграждение падает; шестнадцатикратный рост сложности влечет за собой снижение награды в два раза. Пока награда за майнинг стремится к нулю, стимул использовать PoW становится меньше в сравнении с PoS. С этой точки зрения, Peercoin является энергоэффективным в долгосрочной перспективе.
Подтверждение доли в Peercoin основывается на понятии возраста монет (англ. coin age). Возраст монет используется в Биткойне для определения приоритета транзакций.
Определение 6. Возраст монет неиспользованного выхода транзакции это его величина, умноженная на период времени, который прошел с момента его создания. Транзакция, расходующая ранее не использованный выход, потребляет, или уничтожает, его возраст монет. Возраст монет используется в Peercoin и с другой целью: чтобы определить действительный блокчейн. Это блокчейн с наибольшим суммарным уничтоженным возрастом монет всех транзакций во всех блоках (ср. с механизмом, использующим полную ожидаемую работу, потраченную на строительство блокчейна в Биткойне).
Возможность создать блок, используя неиспользованный выход U в Peercoin определяется условием
hash(hash(Bprev), U, t) ⩽ bal(U) age(U)M/D,
где age(U) обозначает время, прошедшее с момента создания U. Версия PoS (3) подразумевает, что вместо суммарного количества валюты, вероятность создать блок пропорциональна суммарному возрасту монет всех UTXO, принадлежащих пользователю.
Первая транзакция в новом блоке это специальная coinstake транзакция, которая доказывает, что выигравший UTXO принадлежит пользователю, который открыл блок. Первый вход coinstake транзакции должен совпадать с не потраченным выходом U, удовлетворяющим (3); в большинстве случаев, пользователь тратит U, отсылая самому себе.
Декларируемая причина, стоящая за реализацией PoS (3) более равномерное распределение владельцев решенных блоков. Действительно, добыча блока уменьшает вероятность для того же пользователя добыть следующий блок, так как суммарный возраст монет его UTXO уменьшается. В результате пользователи с малыми долями валюты тоже могут обнаружить блок, если будут ждать достаточно долго.
Чтобы обеспечить стабильность блокчейна, Peercoin использует периодически рассылаемые точки сохранения. Этот метод распространения вводит точку централизации. В то время как точки сохранения присутствуют в протоколе Биткойна [12], они могут быть выключены; помимо этого, они закодированы в протокол, а не распространяются. Соответственно, механизм точек сохранения в Биткойне не предполагает риска централизации.
2.2. NxtNxt криптовалюта, основанная в 2013 году и использующая только подтверждение доли. В отличие от Peercoin, Nxt не использует доказательство работы, чтобы создавать новые монеты; весь доступный запас монет, 1 миллиард NXT, присутствует в системе с самого начала, с генезис блока. Таким образом, единственным стимулом открывать блоки является сбор комиссий за транзакции.
Транзакции в Nxt рабикально отличаются от транзакций в Биткойне, что, в свою очередь, приводит к следующим отличиям протоколов:
• Транзакции в Nxt не имеют запирающих и отпирающих скриптов. Вместо них для задания отправителя и получателя транзакции протокол Nxt использует явно заданные профили пользователей. Это ограничивает возможности системы обращаться со смартконтрактами в сравнении с Биткойном.
• Существуют различные типы транзакций, например, специальные транзакции для сообщений, цветных монет, электронных товаров и т. д.
• Существует ограничение на количество транзакций в блоке: не более 255. С другой стороны, среднее время между блоками равно одной минуте.
• Все транзакции имеют срок годности (по умолчанию 24 часа). Транзакции, не включенные в блок, удаляются из пула по истечении срока годности и должны быть отправлены заново.
Nxt использует модифицированную версию согласования путем подтверждения доли. Вместо, для пользовательского профиля A, чтобы он мог создать блок, должно выполняться неравенство
hash(hash(Bprev), A) ⩽ t bal(A)M/D.
В Bprev блок, над которым пользователь работает, t время, прошедшее с момента создания Bprev. Таким образом, изначально после того, как новый блок распространяется по сети, возможность удовлетворить условию PoS низка для каждого пользователя; эта вероятность растет со временем. Хеш-функция в (4) считается следующим образом:
1. берется специальное поле (подпись генерации, англ. generation signature) в Bprev;
2. подпись генерации подписывается с помощью публичного ключа пользователя;
3. выбираются первые 8 байтов полученной подписи.
Так как публичные ключи, соответствующие профилям, публично известны, кто угодно может проверить, выполняется ли для любого пользовательского профиля A. Как и в Биткойне, действительный блокчейн в Nxt определяется как цепь с максимальной ожидаемой сложностью D.
Отметим, что в отличие от (2), (4) не содержит никаких переменных, которые пользователь A мог бы изменить. Таким образом, PoS в Nxt обладает следующим интересным свойством: возможно предсказать с разумной точностью, кто откроет следующий блок. Чтобы сделать это, нужно лишь найти
для всех пользовательских профилей. Nxt имеет отличную от Биткойн лежащую в основе вероятностную модель. Она благоприятна для крупных игроков: если у пользователя есть существенная доля валюты, вероятность открыть блок для него выше, чем его доля [14] (см. приложение B).
2.3. NovacoinNovacoin гибридная PoW/PoS криптовалюта, похожая по принципу на Peercoin. Основные отличия:
• Novacoin использует более консервативную формулу для наград за минтинг: вознаграждение уменьшается в два раза, как только сложность возрастает в 64 раза [15] (ср. с увеличением в 16 раз в Peercoin).
• В подтверждении доли используется немного модифицированный метод, основанный на весе монето-дней (англ. coin day weight) вместо возраста монет (3). Кроме того, coinstake-награда за PoS-блок зависит от использованного возраста монет и от сложности PoS [16].
Вес монето-дней в Novacoin считается аналогично возрасту монет, но со сдвигом в 30 дней и ограничением в 90 монето-дней. Например, вес монето-дней UTXO величиной в 1 Novacoin изменяется во времени следующим образом:
2.4. BlackCoinBlackcoin гибридная криптовалюта, использовавшая доказательство работы для начального распределения валюты. Сейчас используется только подтверждение доли. BlackCoin единственная из рассматриваемых криптовалют, которая использует изначальную версию подхода подтверждения доли (2), согласно которой доля пользователя определяется как его доля общего количества монет [17]. Новые блоки открываются в среднем каждые 64 секунды; создатели блоков получают 1% годовых (означая, что BlackCoin является инфляционной валютой).
2.5. BitSharesBitShares полиморфный электронный актив, который может быть использован для создания взаимозаменяемых активов, привязанных к конкретным рынкам (например, доллары США). Он похож на систему цветных монет, где BitShares выступает в качестве внутренней валюты (как XCP в Counterparty). Одним из инновационных свойств BitShares является алгоритм согласования в виде делегированного подтверждения доли. Создатели BitShares сейчас разрабатывают BitShares 2.0, финансовую платформу для смарт контрактов корпоративного класса, использующую некоторые технологии из BiShares, включая DPoS.
Делегированное подтверждение доли в системе BitShares основывается на понятии свидетелей. Держатели BitShares могут выбрать произвольное количество свидетелей, которые создают блоки транзакций. У каждого держателя валюты есть количество голосов, равное количеству BitShares, которыми он обладает; голоса могут быть распределены между свидетелями произвольно. Кроме свидетелей, пользователь также выбирает количество свидетелей, которое он считает достаточным для децентрализации. Естественно, пользователь не может голосовать за большее количество свидетелей, чем он считает нужным.
После того как результаты голосов просуммированы, выбираются N свидетелей, получившие наибольшее количество голосов. N определяется как наименьшее число, удовлетворяющее голосам не менее половины пользователей. Выбранные свидетели по очереди производят блоки каждые две секунды. После того, как каждый из N свидетелей создал свой блок, список свидетелей перемешивается, поэтому порядок создателей блоков постоянно меняется.
Аналогично свидетелям, пользователи системы выбирают делегатов, которые имеют возможность менять параметры сети, включая комиссии за транзакции, размер блоков и интервалы между ними, а также вознаграждения свидетелям. Чтобы осуществить изменения в протокол сети, делегаты вместе подписывают специальный пользовательский профиль (так называемый генезис-профиль). После того, как большинство делегатов подтвердили предложенное изменение, у владельцев валюты есть две недели, в течение которых они могут отозвать своих делегатов и отменить изменения. В отличие от свидетелей, делегаты не получают награды за свои усилия.