PoW, PoS, Гибридные системы майнинга

Тема в разделе "Майнинг (общий раздел)", создана пользователем Romero, 20 май 2016.

Метки:
  1. Romero

    Romero Новичок Проверенный

    PoW (Proof-of-Work) является концепцией, при которой безопасность сети гарантируется суммарной вычислительной мощностью ее участников.
    ----------------------------------
    Концепция PoS (Proof-of-Stake) дает большие возможности для генерирования цифровой валюты.
    ----------------------------------
    Стандартная гибридная схема Proof-of-Activity стандартная гибридная схема, совмещающая PoW и PoS, блоки PoW ищутся наравне с блоками PoS, т.е. блокчейн состоит из блоков обоих типов.

    ----------------------------------

    [​IMG]

    Понятие Proof-of-work – «доказательство (проделанной) работы» – впервые появилось в работе “Pricing via Processing or Combatting Junk Mail”в 16 г. до рождества Bitcoin в 1993 г. И хотя в данной статье такого термина еще нет (появится через 6 лет), мы будем называть его именно так (PoW для краткости). Какую же идею предложили Cynthia Dwork и Moni Naor в своей работе?

    «Чтобы получить доступ к общему ресурсу, пользователь должен вычислить некоторую функцию: достаточно сложную, но посильную; так можно защитить ресурс от злоупотребления»


    PoW является протоколом, который используется в экономике (или функцией, если вы предпочитаете этот термин). Для его обработки требуется компьютерное время.

    Концепция PoW была разработана для того, чтобы можно было противостоять атакам DDoS, которые приводили к зависанию системы и отказывались обрабатывать запросы пользователей. PoW также противостоит спаму. Концепция PoW не требует большой вычислительной мощности от вашего процессора и эффективно защищает всю сеть.


    Каким образом концепции связаны с генерацией цифровой валюты? В крипто мире, PoW используется для защиты ваших монет, так как поддерживает децентрализованные сети. Простой пример: у вас есть цифровой кошелек и в данный момент он не синхронизирован. Как только вы подключаетесь к сети, он меняет свой статус на синхронизируемый, так как начинает обращаться к blockchain. Как вы думаете, что может быть загружено в этом случае? Кошельки других людей, имеющих небольшие мощности, объединяются в сеть, с помощью которой появляется возможность совместной работы.

    Концепция PoW является мерой безопасности и дает нам возможность обходиться без официальных органов регулирования наших коммерческих операций. И именно это нравится многим из нас. Это не эксклюзивная функция, которая доступна только избранным пользователям. Каждая новая монета работает с протоколом PoW с того момента, когда был запущен в обращение первый биткоин. Вопрос в том, что большинство разработчиков даже не знают, что он делает, не говоря уже о том, что их монета также работает по определенному протоколу.

    Критика Proof-of-Work

    Как мы все помним, Proof of Work родился в далеком 1993 году в семье криптографов; родители прочили ему карьеру защитника от DoS и спама. Однако в 2008 году ему поступило заманчивое предложение от некоего анонима с японским акцентом: стать основой для распределенного сервера меток времени. Схема представлялась простой: узлы сети «голосуют» за свою версию истории транзакций, вкладывая свои мощности в вычисление «редких» хешей. Версия, получившая большинство голосов, принимается другими узлами в качестве эталонной.

    Важным моментом было обеспечение большой суммарной мощности сети: для защиты от потенциального злоумышленника с его потенциальными 51% ресурсов. Однако изначальная концепция PoW подразумевала небольшие задания, которые должен выполнить клиент, чтобы получить доступ к ресурсам сервера. В рамках такой модели защиты от DoS даже небольшие мощности клиента не помешают добропорядочному использованию ресурса, а большие просто не требовались. Поэтому мотивация для работы майнеров была реализована просто: «натурой», биткоинами, т.е. фактически деньгами.

    И это все изменило. обогнала» по производительности самый мощный суперкомпьютер в мире. «Бесполезная трата энергии!» — раздавались со всех сторон крики. Робкие протесты защитников по поводу защиты от атаки 51% и энерго-аппетитов банковских терминалов игнорировались, благо на горизонте уже была первая альтернатива – Proof of Stake.
    ========================
    [​IMG]
    В качестве идеи появился на свет в одном из постов на bitcointalk еще в 2011 году. Первая реализация увидела свет через год, в 2012, в криптовалюте PPCoin (сейчас называется PeerCoin). В дальнейшем подобные протоколы появились и в других проектах, о них чуть позже.

    PoS имеет различные воплощения, но одну общую идею: ограниченный ресурс, которым нужно голосовать, можно найти не только во внешнем мире (сжигаемые железо и электричество), но внутри самой системы – сами цифровые монетки. Владельцы монет – холдеры (stakeholders) – не тратят их во время голосования, конечно же, но блокируют на некоторое время, и так достигается ограниченность. Очевидно, что хоть компьютер и должен быть включен для майнинга, никаких серьезных вычислений ему делать не требуется.

    Большинство людей знает о ней больше, чем о PoW, так как она позволяет зарабатывать деньги, практически ничего не делая. Так что же означает технология PoS в глазах рядового читателя?

    Первоначально PoS-протокол предполагалось использовать в качестве защитного протокола, который поддерживает работу PoW. Данный протокол ищет уязвимые точки в работе системы и оптимизирует их. Одной из наиболее известных таких проблем является атака 51%. Она может произойти в том случае, когда один майнер располагает компьютерной мощностью, которая составляет более половины от общего сетевого ресурса всей системы. В этом случае процент прибыли будет распределяться неравномерно и не каждый человек захочет, чтобы больше половины его монет достались другому.

    Концепция PoS не является идеальной, она представляет собой одну из многих защитных стратегий. Она также позволяет вам заработать проценты на крипто валюте, которую вы держите в своем бумажнике. Допустим, вы стали держателем 0,5% от всех сгенерированных монет, добытых сообществом. Пусть ваши монеты используют в своей работе функцию PoS. Это означает, что вы получите 0,5% от всех сгенерированных блоков только за то, что вы держите цифровые деньги у себя в кошельке. Это можно сравнить с банковским счетом, когда раз в год вы получаете определенный процент прибыли, которая переводится на сберегательный счет. PoS работает аналогичным образом это ваша награда за хранение монет в кошельке.

    Конечно, есть в работе PoS и определенные минусы или побочные эффекты. Функция PoS в конечном счете приводит к постепенной инфляции всех монет.В перспективе их количество будет стремиться к бесконечности. Это означает снижение цены? Не совсем так. Большинство монет не достигают своей номинальной стоимости, так как сеть постоянно развивается. В связи с усложнением алгоритмов генерирования цифровых блоков, произойдет постепенное снижение их добычи. Но до этого момента концепцией PoS можно пользоваться. И ее защитные функции сохранятся после полной остановки сети.

    PoS так же влияет на операционные издержки ваших монет. Криптомонеты, которые не поддерживают функцию PoS, станут работать с измененными комиссиями при проведении транзакций. Операционные отчисления будут зависеть от количества жетонов, которое вы отправляете или получаете. С поддержкой PoS операционные отчисления будут производиться по фиксированной ставке, независимо от количества монет, участвующих в сделке. Это лучший вариант, не так ли?


    Если вы ищете аргументы, которые подтверждают целесообразность использования концепции PoS, то вам не придется долго искать. Биткоин использовал этот протокол с самого начала, но есть и другие монеты, которые так же используют PoS в своей работе. Это NovaCoin, PPCoin, и многие другие.

    По сути, процесс PoS-майнинга является такой же лотереей, что и в PoW. Однако за билет не нужно «платить» своими мощностями: перебор вариантов происходит на очень ограниченном пространстве собственных выходов и не зависит от скорости CPU. На ваши шансы влияют лишь ваше общее число монет и текущая сложность сети.

    Благодаря этому мы получаем следующий профит:


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

    Кажется, что все замечательно: мы фактически заменили физическую работу неким виртуальным ресурсом. Но не кроется ли именно в этом проблема?

    Критика Proof of Stake

    Ответьте на вопрос: сколько стоят потраченные деньги? Если кто-нибудь обратится к вам и предложит купить у вас приватные ключи, с которых вы уже давно потратили все деньги, — на какой цене вы договоритесь? Поскольку эти ключи уже ничего не стоят и никому не нужны – предполагаю, что вас устроит любое предложение: это же деньги из ничего!

    А теперь представьте, что для какого-то момента Х в прошлом окажется, что 50% (или больше) всех монет лежали на ключах, купленных сейчас атакующим. Для простоты можно считать, что момент X – это время сразу после создания второго блока, и некто купил ключи обоих блоков, т.е. вернись он в прошлое – обладал бы 100% всей денежной массы.

    На самом деле, физически возвращаться в прошлое ему не нужно. Начиная с этого момента он может «переписать всю историю блокчейна», осуществляя майнинг этими старыми монетами! Причем получая награду за каждый новый блок, и увеличивая свой капитал. Ему необязательно даже создавать транзакции (хотя он и может просто так переводить деньги самому себе).

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

    С такой конкретной атакой, конечно, можно бороться. PeerCoin, например, использует практику регулярных чекпоинтов: блоков, подписанных ключом разработчика, «глубже» которых запрещено перестроение блокчейна. Но это частное решение, которое не избавляет от более общей проблемы – Nothing on stake.

    [​IMG]
    Гибридные системы. Proof-of-Activity

    Энергоэффективность Proof of Stake – это палка о двух концах. С одной стороны, энергия-то не тратится, с другой – без этих трат модель распределенного консенсуса выглядит несколько неустойчиво.

    Какие еще аргументы можно привести? Против PoS не раз высказывается мнение, что эта схема «делает богатых богаче». И в самом деле: тот, у кого больше всех монет, будет находить больше всех блоков и получать больше всех прибыли, увеличивая число этих монет. На самом деле, в таком виде это обвинение можно высказать и в лицо PoW: тот, кто вложил больше всех денег в железо, будет получать и больший доход, это естественно.

    Но картина начинает выглядеть по-другому, если мы говорим о криптовалюте… где PoS начинает работать с первого блока. И используется для эмиссии новых денег. Тот, кто имеет, скажем, 10% от всех монет на старте, будет находить 10% всех блоков, и значит получать 10% эмиссии. То есть, купив вначале 10 монет из 100 возможных, он будет иметь 100 тысяч из миллиона через некоторое время. Неплохая сделка, да?

    Как видите, проблема с PoS возникает, когда этого самого ограниченного ресурса – монет – в системе ОЧЕНЬ ограниченное количество. Абсолютные величины становятся гораздо важнее относительных – а ведь модель безопасности блокчейна оперирует именно относительными величинами («половина мощностей сети должна быть под контролем честных участников»).

    Кроме того, PoS не решает вопрос о начальном распределении монет. То есть решает – но «нечестно». До сих пор еще не умолкают обвинения в сторону Pure PoS-based валюты NXT, где практически вся денежная масса оказалась в руках нескольких десятков человек.

    Вывод таков: чистая PoS система не слишком приспособлена для выживания в дикой среде криптовалют. Но что если скрестить ее с PoW?
    ---------------------------

    Стандартная гибридная схема, совмещающая PoW и PoS, по факту реализована в очень многих клонах PeerCoin, как и в нем самом. Блоки PoW ищутся наравне с блоками PoS, т.е. блокчейн состоит из блоков обоих типов.

    Какие преимущества это дает? Во-первых, «переписать историю» уже совсем не так просто, т.е. PoW-блоки могут служить некоторого рода чекпоинтами, если учитывать суммарную сложность работы во всей цепочке. Транзакции, которые включены в блоки с «реальной» работой внушают большее доверия продавцам. Во-вторых, через PoW блоки может производиться «честная» эмиссия новых денег, а PoS рассматриваться как «ежегодный доход от депозита».

    Однако проблема с nothing-on-stake все же остается: искать PoS-блоки можно на любой высоте. Возникает идея: использовать в одном блоке одновременно оба подхода, чтобы, так сказать, и накормить Stake-волка, и уберечь электрическую овцу. Мечту об этих электроовцах воплотили в жизнь (пока только на бумаге) в 2014 году Iddo Bentov et al и назвали Proof of Activity (PoA).

    Как работает PoA

    PoA работает довольно просто:




      • Сначала работает PoW майнер: ищет хэш, удовлетворяющий сложности… все как обычно.
      • Найдя такой хэш, он отправляет все данные в сеть, однако это еще не блок, а только «заготовка». Таких заготовок может появиться несколько.
      • Хэш блока (256 псевдослучаных бит) интерпретируется как N чисел. Каждому числу однозначно соответствует какой-то сатоши (например, если пронумеровать все эмитированные монетки с первого блока).
      • С каждым сатоши, в свою очередь, связан один-единственный публичный ключ его текущего владельца. То есть так мы опеределили N случаных владельцев.
      • «Заготовка» блока превращается в полноценный блок, как только все N владельцев поставят свои подписи на этом блоке (теми ключами, которые определены на шаге 4).
      • Если кто-то из холдеров (signers) в этот момент недоступен (или не участвует в майнинге по личным соображениям), не беда. PoW-майнеры продолжают свою работу, генерируя все новые «заготовки» с различными наборами холдеров-кандидатов.
      • Рано или поздно (в зависимости от процента участников онлайн) какой-то блок будет подписан N раз. Награда за блок распределеяется между PoW-майнером и всеми N холдерами.
    Замечания:




      • Протокол, очевидно, требует постоянного обмена данными. Чтобы уменьшить трафик, «заготовка» блока не включает в себя список транзакций. Их набирает последний холдер, финализируя блок.
      • Если N=3, а онлайн около 10% пользователей, то очевидно, что в среднем PoW-майнеры произведут около 10*10*10 = 1000 «заготовок», пока не будет подписана какая-то одна. Но при размере сообщений порядка сотни байт – это несущественно.
    В PoA каждый блок является продуктом совместного участия как PoW, так и PoS-майнера. И основной момент здесь в том, что холдеры вступают в игру лишь после того, как некоторая работа произведена PoW-участниками. Иными словами, даже если существует некий владелец 50% монет, то он не может единолично управлять созданием новых блоков. Во-первых, при больших значениях N ему приходится считаться с другими холдерами (если N=3, то вероятность «быть выбранным» единолично – 0.5*0.5*0.5 = 12,5%). Во-вторых, PoW-майнеры могут просто-напросто его игнорировать: то есть «выбрасывать» те заготовки блоков, которые дают возможность «монополисту» подписывать блоки.

    Как было сказано, пока PoA остается лишь теоретическим проектом. А жаль…

    Немного экзотики

    Proof of burn работает именно так, как вы и подумали: вместо сжигания электричества нужно уничтожать цифровые монеты. Нет, форматировать жесткий диск не нужно. «Сжигание» происходит путем отправки денег на такой адрес, с которого гарантированно нельзя их потратить. Например, на адрес, который является хэшом случайного числа, – шансы подобрать к нему соответствующий публичный и приватный ключи ничтожно малы.

    Итак, избавляясь таким образом от своих монет, вы получаете право на пожизненный майнинг, который тоже устроен как лотерея среди всех владельцев сожженных монет. И, понятно дело, чем больше вы сожгли – тем больше ваши шансы. По сути, это как покупка за монеты виртуального PoW-железа, которое никогда не испортится. Или как PoS-депозит, который уже не вернуть обратно.

    Такой способ, как отмечает и сам автор, не подходит для раннего этапа развития криптовалюты. Но хорошо (в том числе и с экономической точки зрения) должен служить «в зрелые годы», когда основная денежная масса уже сгенерирована.

    Proof of Capacity представляет собой реализацию популярной идеи «мегабайты как ресурсы». Ничего сжигать-уничтожать не нужно, но необходимо выделить существенный объем дискового пространства, чтобы включиться в майнинг. Помимо энергоэффективности такого решения, есть и другой момент: защита от ботнета. Довольно сложно установить на компьютере жертвы майнер, который бы незаметно отхватил бы пару терабайт.

    Алгоритм создает на диске много крупных блоков данных, которые получаются многократным хэшированием из вашего публичного ключа и случайных чисел. Из последнего заголовка блока мы получаем число-индекс, и берем в каждом нашем большом блоке данных небольшой кусочек с эти индексом. Чем больше места выделили – тем больше кусочков у нас есть. Дальше как обычно: хэш от кусочка и последнего заголовка должен быть меньше, чем цель (с учетом текущей сложности). Короче говоря, каждый ваш мегабайт HDD – это дополнительный лотерейный билет в майнинге.

    Данная реализация, мягко говоря, не идеальна. Во-первых, в ней остается проблема nothing on stake: вы можете мгновенно пробежаться по всем своим терабайтам, чтобы проверить свои шансы в альтернативной цепочке, как и в случае PoS. То есть одновременно майнить сразу несколько цепочек, не затрачивая лишних ресурсов. Во-вторых, обращения к диску занимают довольно существенное время и, вероятно, эффективнее будет просто генерировать новые chunks на лету с помощью простого ASIC. Тогда мы просто получаем PoW-алгоритм.

    coinspot / habrahabr / cryptor
     
    Последнее редактирование модератором: 24 июл 2016
    Nession нравится это.