Proof of Your Word
ArtemОбзор современных моделей "подтверждений" в криптовалюте. Если вы не знали, что не обязательно расплачиваться киловаттами потраченной мощности за добытые криптомонеты, то эта статья для вас (: Впрочем, остальным тоже может быть интересно.

Традиционно в криптовалютном мире первая появившаяся модель была Proof of Work (POW), и до сих пор, пожалуй, она остаётся самой популярной и лидирующей.

Proof of Work
Дословно Proof of Work означает "подтверждение работы", то есть признак того, что работа выполнена. По сути, сама концепция существовала ещё в древнем мире (где были рабы, например), однако в мире криптовалют POW-критерий является математически детерменированным (то есть однозначным и проверяемым).
Обратимся к Wikipedia, взяв оттуда небольшую часть статьи.
Доказательство выполнения работы (англ. Proof-of-work, POW, PoW) — принцип защиты распределенных систем от злоупотребления услугами (например, DoS-атак или рассылок спама), основанный на необходимости выполнения запрашивающей стороной некоторой достаточно сложной длительной работы (POW-задачи), результат которой легко и быстро проверяется обслуживающей стороной (односторонняя функция).
Поясняю на искусственном примере. То есть, сторона 1 (к примеру это мы - майнер) совершает достаточно сложную и длительную работу (POW-задачу), а затем результаты отправляет стороне 2. У стороны 2 есть некий изначальный "шаблон проверок", согласно которому она уже заранее знает (или может быстро посмотреть) ответ. Когда наш ответ приходит, он проверяется стороной 2 в считанное мгновение и, если мы всё правильно сделали, нам начисляется награда. Примерно это и есть механизм POW.
Главная особенность этих схем заключается в асимметрии затрат времени — длительность для инициатора запроса и высокая скорость для ответа. Подобные схемы также известны как client puzzle (функция клиентской головоломки), computational puzzle (вычислительная головоломка), или CPU pricing function. Ещё раз - суть в разности затрат времени, то есть мы долго что-то вычисляем, но можем потом это некоторым образом быстро проверить.

Proof of Stake
В качестве идеи появился на свет в одном из постов на bitcointalk еще в 2011 году. Первая реализация увидела свет через год, в 2012, в криптовалюте PPCoin (сейчас называется PeerCoin). В дальнейшем подобные протоколы появились и в других проектах, о них чуть позже.
PoS имеет различные воплощения, но одну общую идею: ограниченный ресурс, которым нужно голосовать, можно найти не только во внешнем мире (сжигаемые железо и электричество), но внутри самой системы – сами цифровые монетки. Владельцы монет – холдеры (stakeholders) – не тратят их во время голосования, конечно же, но блокируют на некоторое время, и так достигается ограниченность. Очевидно, что хоть компьютер и должен быть включен для майнинга, никаких серьезных вычислений ему делать не требуется.
Условно говоря, если POW-модель - это добыча золота при помощи мощного оборудования в горах (=большие энергетические и временные затраты), то POS-система - это хранение добытого золота в вашем банке-ячейке в Швейцарских альпах, причём в виде депозита или вклада, который вы не можете трогать какое-то время.
По сути, процесс PoS-майнинга является такой же лотереей, что и в PoW. Однако за билет не нужно «платить» своими мощностями: перебор вариантов происходит на очень ограниченном пространстве собственных выходов и не зависит от скорости CPU. На ваши шансы влияют лишь ваше общее число монет и текущая сложность сети.

Благодаря этому мы получаем следующий профит:
- Бережем энергию. Здесь не поспоришь, хотя и для PoW можно использовать «полезную работу» (см. Primecoin) или ASIC-resistant функции (Cuckoo Cycle, CryptoNigh, Ethash etc.), которые бы ограничили область майнинга персональными ПК.
- Отсутствие бесконечной «гонки вооружений»: теперь общий хэшрейт ограничен не правилом Мура и законами термодинамики, а общим числом монет в кошельках участников. С другой стороны, в такой модели сложно понять, в честных ли руках находится крупный процент ресурсов?
- Атака становится дороже. Если я захочу купить 51% монет, то рынок отреагирует быстрым ростом цены. Кроме того, какой мне смысл делать атаку на сеть, если все мои ресурсы вложены в виртуальные монеты этой сети?
Кажется, что все замечательно: мы фактически заменили физическую работу неким виртуальным ресурсом. Но не кроется ли именно в этом проблема?
На самом деле проблема POS заключается в том, что майнинг – голосование – ничего не стоит, не требует никаких физических затрат. Если, например, в какой-то момент появятся два блока на одной высоте (форк цепочки), то можно одновременно майнить обе версии цепочки. С PoW такое невозможно в принципе по очевидным причинам: каждый проверенный хэш цепочки А – это непроверенный хэш цепочки Б. PoS же позволяет вам производить перебор во всех «параллельных мирах» сразу, причем на любой высоте (т.е. в том числе и в прошлом).
В PoS вам гораздо легче осуществить атаку double-spend. Достаточно всегда майнить две версии следующего блока: один с транзакцией, переводящей ваши деньги продавцу (который не ждет N подтверждений), а другой – с переводящей их вам. Если случится так, что вы найдете оба блока, то первый вы отправляете продавцу (и получаете свой товар), а второй – всем остальным. С большой вероятностью продолжена будет вторая версия цепочки, и деньги вернутся к вам.
Проблема PoS в том, что вам выгодно майнить сразу несколько альтернативных ветвей. Вы просто можете делать это бесплатно, с ненулевыми шансами на успех, а значит – увеличиваете матожидание дохода. PoW не позволяет вам таких шалостей, и потому вы майните лишь в одной ветке (в какой – это уж ваш выбор). Как результат – в модели PoW рано или поздно достигается консенсус, а в чистом PoS ганатировать сходимость уже нельзя.

И это не единственная проблема. Даже если найти способ блокировки подобных махинаций (хоть и выглядит это всё равно некоторым костылём), всё равно POS-методология страдает и от других "недочётов". Основным является то, что она постоянно делает "богатых - богаче". И в самом деле: тот, у кого больше всех монет, будет находить больше всех блоков и получать больше всех прибыли, увеличивая число этих монет. На самом деле, в таком виде это обвинение можно высказать и в лицо PoW: тот, кто вложил больше всех денег в железо, будет получать и больший доход, это естественно.
Но картина начинает выглядеть по-другому, если мы говорим о криптовалюте… где PoS начинает работать с первого блока. И используется для эмиссии новых денег. Тот, кто имеет, скажем, 10% от всех монет на старте, будет находить 10% всех блоков, и значит получать 10% эмиссии. То есть, купив вначале 10 монет из 100 возможных, он будет иметь 100 тысяч из миллиона через некоторое время. Неплохая сделка, да? Кроме того, PoS не решает вопрос о начальном распределении монет. То есть решает – но «нечестно». До сих пор еще не умолкают обвинения в сторону Pure PoS-based валюты NXT, где практически вся денежная масса оказалась в руках нескольких десятков человек.
Вывод таков: чистая PoS система не слишком приспособлена для выживания в дикой среде криптовалют. Но что если скрестить ее с PoW?

Гибридные системы. Proof of Activity
Стандартная гибридная схема, совмещающая PoW и PoS, по факту реализована в очень многих клонах PeerCoin, как и в нем самом. Блоки PoW ищутся наравне с блоками PoS, т.е. блокчейн состоит из блоков обоих типов. Какие преимущества это дает? Во-первых, «переписать историю» уже совсем не так просто, т.е. PoW-блоки могут служить некоторого рода чекпоинтами, если учитывать суммарную сложность работы во всей цепочке. Транзакции, которые включены в блоки с «реальной» работой внушают большее доверия продавцам. Во-вторых, через PoW блоки может производиться «честная» эмиссия новых денег, а PoS рассматриваться как «ежегодный доход от депозита».
Однако проблема с nothing-on-stake все же остается: искать PoS-блоки можно на любой высоте. Возникает идея: использовать в одном блоке одновременно оба подхода, чтобы, так сказать, и накормить Stake-волка, и уберечь электрическую овцу. Мечту об этих электроовцах воплотили в жизнь (пока только на бумаге) в 2014 году Iddo Bentov et al и назвали Proof of Activity (PoA).
В PoA каждый блок является продуктом совместного участия как PoW, так и PoS-майнера. И основной момент здесь в том, что холдеры вступают в игру лишь после того, как некоторая работа произведена PoW-участниками. Иными словами, даже если существует некий владелец 50% монет, то он не может единолично управлять созданием новых блоков. Во-первых, при больших значениях N ему приходится считаться с другими холдерами (если N=3, то вероятность «быть выбранным» единолично – 0.50.50.5 = 12,5%). Во-вторых, PoW-майнеры могут просто-напросто его игнорировать: то есть «выбрасывать» те заготовки блоков, которые дают возможность «монополисту» подписывать блоки.
Как было сказано, пока PoA остается лишь теоретическим проектом. А жаль…

Delegated Proof of Stake
Делегированное подтверждение доли (DPoS) - общий термин, описывающий эволюцию базовых консенсус-протоколов на основе подтверждения доли. DPoS используется в BitShares, а также в предложенных алгоритмах, таких как Slasher и Tendermint. В этих протоколах, блоки порождаются предопределенным множеством пользователей системы (делегатами), которые получают вознаграждение за свою обязанность и наказываются за злонамеренное поведение (такое как участие в двойном расходовании средств). В DPoS-алгоритмах, делегаты участвуют в двух раздельных процессах:
- построение блока транзакций;
- верификация действительности сгенерированного блока с помощью электронной подписи.
В то время как блок создается отдельным пользователем, чтобы считаться действительным, он обычно должен быть подписан более чем одним делегатом. Список пользователей, подходящих для подписывания блоков, периодически изменяется в соответствии с определенными правилами; например, в Slasher делегаты избираются исходя из их доли и истории блокчейна. Множество делегатов для каждого блока обычно мало; заметным исключением является Tendermint, в котором каждый блок может быть подписан любым пользователем системы. В некоторых версиях DPoS, делегат должен подтвердить обязательство с помощью депонирования своих средств на гарантийный счет, где средства временно блокируются в целях безопасности (и конфискуются в случае вредоносного поведения); эта версия DPoS обычно называется подтверждение доли, основанное на депозите (англ. deposit-based proof of stake).

Proof of Burn
POB работает именно так, как вы и подумали: вместо сжигания электричества нужно уничтожать цифровые монеты. Нет, форматировать жесткий диск не нужно. «Сжигание» происходит путем отправки денег на такой адрес, с которого гарантированно нельзя их потратить. Например, на адрес, который является хэшом случайного числа, – шансы подобрать к нему соответствующий публичный и приватный ключи ничтожно малы. Итак, избавляясь таким образом от своих монет, вы получаете право на пожизненный майнинг, который тоже устроен как лотерея среди всех владельцев сожженных монет. И, понятно дело, чем больше вы сожгли – тем больше ваши шансы. По сути, это как покупка за монеты виртуального PoW-железа, которое никогда не испортится. Или как PoS-депозит, который уже не вернуть обратно.
Такой способ, как отмечает и сам автор, не подходит для раннего этапа развития криптовалюты. Но хорошо (в том числе и с экономической точки зрения) должен служить «в зрелые годы», когда основная денежная масса уже сгенерирована.

Proof of Capacity
POC представляет собой реализацию популярной идеи «мегабайты как ресурсы». Ничего сжигать-уничтожать не нужно, но необходимо выделить существенный объем дискового пространства, чтобы включиться в майнинг. Помимо энергоэффективности такого решения, есть и другой момент: защита от ботнета. Довольно сложно установить на компьютере жертвы майнер, который бы незаметно отхватил бы пару терабайт. Алгоритм создает на диске много крупных блоков данных, которые получаются многократным хэшированием из вашего публичного ключа и случайных чисел. Из последнего заголовка блока мы получаем число-индекс, и берем в каждом нашем большом блоке данных небольшой кусочек с эти индексом. Чем больше места выделили – тем больше кусочков у нас есть. Дальше как обычно: хэш от кусочка и последнего заголовка должен быть меньше, чем цель (с учетом текущей сложности). Короче говоря, каждый ваш мегабайт HDD – это дополнительный лотерейный билет в майнинге.
Данная реализация, мягко говоря, не идеальна. Во-первых, в ней остается проблема nothing on stake: вы можете мгновенно пробежаться по всем своим терабайтам, чтобы проверить свои шансы в альтернативной цепочке, как и в случае PoS. То есть одновременно майнить сразу несколько цепочек, не затрачивая лишних ресурсов. Во-вторых, обращения к диску занимают довольно существенное время и, вероятно, эффективнее будет просто генерировать новые chunks на лету с помощью простого ASIC. Тогда мы просто получаем PoW-алгоритм.

Proof of Storage
Существует также похожая концепция с «мегабайтами» – Proof-of-Storage, но там выделенное место используется всеми участниками как совместное облачное хранилище. Эта идея довольно интересная, но одно ее описание будет слишком велико для данной статьи. Вы можете ознакомиться с дизайном системы на сайте.

Proof of Service
Концепция впервые применена в криптовалюте DASH. Здесь, чтобы получать эту часть награды, надо запустить мастерноду и приобрести 1000 монет DASH (на данный момент, это порядка 20 BTC, то есть 20 тысяч долларов). Монеты должны лежать на счету без движения, как только вы потрарите их или даже небольшую их часть, вы перестанете получать награду как мастернода во Proof-of-Service. Основная функция мастерноды - это выполнять анонимизацию транзакций по протоколу Darksend и подписывать транзакции (практически моментально). Также, мастерноды участвуют в голосованиях, и в будущем у них будет больше функций.

(Graphene) Transaction as Proof of Stake (TaPoS)
Graphene Transaction as Proof of Stake — в каждую транзакцию совершенную в сети включется хэш последнего правильного и неотменяемого блока. И любая цепочка, которая не включает в себя такой блок, не сможет построить правильный блок, включающий такую транзакцию.
Proof of Listen

Наша модель выбрана на основе данных рекламного рынка и CPA-модели (Cost Per Action), которая является одним из самых экономически эффективных вариантов оплаты рекламы, поскольку рекламодатель платит не за показы или клики, эффективность которых крайне сложно измерить, а за конкретных потребителей, подтвердивших интерес к продукту целевыми действиями. Pay Per Play это новая финансовая модель для музыкальной индустрии по которой музыкантам или правообладателям выплачивается криптовалюта за каждое прослушивание пользователем через алгоритм proof of listen. При том, что пользователь слушает бесплатно.
Разумеется существует еще десятки различных proof-of-yourword, о которых мало кто слышал. Возможно, среди них есть свои жемчужины.
Den Ivanov aka sxiii