Доказательство вместимости: как работает алгоритм Proof-of-Capacity
В индустрии криптовалют за долгие годы существования появилось довольно много алгоритмов консенсуса для разных блокчейн-систем. Рассмотрим один из необычных механизмов валидации – Proof-of-Capacity (доказательство вместимости).
Содержание
Память и криптография
Вместо сложных вычислений для обеспечения консенсуса можно использовать пространства компьютерной памяти. Эта идея появилась довольно давно. Концептуально ее оформил польский энтузиаст Стефан Дзембовский (Stefan Dziembowski) еще в 2013 году, назвав Proof-of-Space. Доказательство пространства разрабатывалась как альтернатива Proof-of-Work (PoW). Proof-of-Space предлагал выделять значительный объем дискового пространства, а не вычислительных мощностей, как это реализовано в PoW.
Впоследствии этот алгоритм консенсуса получил развитие в других алгоритмах, таких как Proof-of-Storage (Proof-of-Retrievability), Proof-of-Space-time и Proof-of-Capacity. Стоит отметить: несмотря на то, что все эти алгоритмы можно разграничить по особенностям работы, понятия часто используются как синонимы. Например, Proof-of-Space могут назвать синонимом Proof-of-Capacity, что строго говоря не совсем верно. Поэтому мы будем исходить из того, что Proof-of-Capacity – это алгоритм, завязанный на механике плоттинга (plotting) и майнинга.
Что такое Proof-of-Capacity
Вместо поиска решения в реальном времени, как это происходит в PoW, Proof of Capacity предполагает предварительное создание плот-файлов (plot) на жестком диске, содержащих набор решений, заранее вычисленных на основе уникального идентификатора участника сети. То есть процесс вычисления и хранение решений на компьютере происходит еще до начала майнинга. И тот жесткий диск (или любое другое устройство памяти), который хранит самое быстрое решение для последней головоломки блока, получает награду за блок.
В Proof-of-Capacity блок добывается в среднем каждые четыре минуты. Такая скорость достигается за счет того, что все вычисления и решения сохранены на жестком диске заранее. В конечном счете получается, что чем больше размер плот-файла на жестком диске, тем выше шанс получить награде за блок.
Плоттинг в Proof-of-Capacity
Когда майнер создает плот-файл, он по сути создает одноразовый номер – nonce. Nonce рождается путем многократного хеширования данных, в числе которых идентификатор учетной записи майнера. Поэтому плот-файлы невозможно использовать дважды – nonce уникальны и привязаны к ID пользователя. Плот-файл может включать в себя огромное количество nonce – и чем их больше, тем выше шанс получить награду.
Чем больше места на жестком диске майнер выделит для плоттинга, тем больше nonce он сможет хранить. Один nonce будет содержать в себе 8192 хеша. Эти 8192 хеша организованы в пары, известные как scoop (от английского «ковш»). Каждому scoop присваивается номер от 0 до 4095. Например, хеш 0 и 1 – это scoop 0, – хэш 2 и 3 составляют scoop 1 – и так далее, до 4095. Каждый scoop весит 64 байта, а хеш, получается, вдвое меньше, то есть 32 байта, или 256 бит.
Создание подобных файлов и заполнение ими большого дискового пространства может занять дни или даже недели. Это связано с тем, что в PoC часто используется алгоритм хеширования Shabal256, 256-битный вариант Shabal. Shabal – довольно тяжелый и медленный алгоритм, по сравнению с тем же SHA256. Поэтому эффективнее рассчитывать хеши заранее и хранить результаты в памяти, чем проводить вычисления в реальном времени.
Майнинг в Proof-of-Capacity
Добыча устроена так. Майнер рассчитывает scoop-номер между 0 и 4095. Допустим, расчет выдает scoop-номер 42. Тогда майнер переходит к scoop под номером 42 в первом nonce и использует данные из этого scoop для расчета количества времени, называемого дедлайном (deadline).
Процесс повторяется для всех nonce, которые есть у майнера на устройствах памяти. После расчета всех дедлайнов майнер выбирает самый короткий. Дедлайн представляет собой время в секундах, которое должно пройти с момента создания последнего блока, прежде чем конкретно этому майнеру будет разрешено создать новый блок. Соответственно, если в пределах дедлайна никто из других майнеров не успеет сгенерировать блок, то майнер создает блок и забирает за него награду.
Например, майнер из всех своих nonce получает минимальный дедлайн равный 25 секундам. Если никто другой не сможет создать блок в следующие 25 секунд, то ему будет предоставлена возможность создать блок и получить награду.
То есть дедлайн по сути – это наименьшее время, за которое майнер способен решить блок. И тот, кто окажется быстрее, в итоге сможет забрать награду.
Преимущества Proof-of-Capacity
А зачем вообще может понадобиться Proof-of-Capacity при действующем и отлично себя показывающем Proof-of-Work? Особенно, если мы задаемся этим вопросом в контексте 2013 года, когда PoC был придуман. Тогда еще опасения по поводу экологической угрозы PoW не были столь сильными, а это один из наиболее весомых аргументов со стороны противников PoW.
Причин на самом деле несколько:
-
Майнинг, завязанный на устройствах памяти, значительно более энергоэффективен, чем тот, который опирается на вычислительную мощность. Использование специализированного оборудования, такого как ASIC или даже обычный графический процессор (GPU) требует больших затрат энергии. Сегодня этот довод выглядит еще убедительнее, так как напрямую касается экологического следа майнинга. Зависимость очень простая: чем меньше энергии потребляется, тем лучше окружающей среде.
-
Майнеры, которые вложили средства в специализированное оборудование, например, в ASIC, не будут иметь конкурентного преимущества при добыче монет. Более того, они даже не смогут конкурировать, так как майнинг в Proof-of-Capacity устроен совершенно иначе.
-
Proof-of-Capacity обеспечивает большую степень диверсификации. Пусть PoW и дальше использует ASIC и GPU, – PoC одновременно с этим позволит задействовать в майнинге на других блокчейнах HDD и SSD. В итоге в мире просто будет больше блокчейнов, криптовалют и довольных криптоэнтузистов.
-
Proof-of-Capacity оказывается по итогу довольно демократичным алгоритмом. Это связано с низкими барьерами для приобретения оборудования. Обычно HDD (а это более эффективное для PoC оборудование в сравнении с более дорогими SSD) довольно дешевы и это позволяют большему количеству майнеров активно добывать монеты.
-
После майнинга жесткий диск можно повторно использовать как обычное оборудование для повседневных задач, чего нельзя сказать об ASIC. Порог износа у HDD довольно высокий, а PoC-майнинг на самом деле не так сильно изнашивает оборудование, как, например, PoW-майнинг, который буквально убивает видеокарты.
- У новых жестких дисков очень мало преимуществ в плане оптимизации помимо объема – по сравнению с более старыми моделями. Следовательно, новейшее оборудование не является обязательным условием для получения преимущества при добыче монет.
Недостатки Proof-of-Capacity
Плюсы небольшой популярности Proof-of-Capacity при повсеместном использовании этого алгоритма быстро оборачиваются минусами.
-
Популяризация Proof-of-Capacity быстро бы привела к новой гонке за оборудованием, как это было с видеокартами и ASIC. HDD быстро бы начали исчезать с прилавков, и цена на диски резко взлетела.
-
При Proof-of-Capacity на жестких дисках хранятся данные, которые бесполезны за пределами майнинга. Это не очень рациональное использование. А если цена на носители увеличится, то можно будет говорить о том, что майнинг на Proof-of-Capacity вытесняет другие цели использования HDD.
-
Доказательство емкости – это недостаточно проверенная технология, а значит, в ней могут найтись болезненные уязвимости. Сам процесс, который не требует вычислений в реальном времени, кажется менее надежным в сравнении с PoW.
Примеры использования Proof-of-Capacity
Тем не менее, стоит отметить: до практической реализации этот алгоритм консенсуса дошел и наиболее известный проект на нем – это Burstcoin, переименованный в результате хардфорка в Signum. Все, о чем мы писали выше, было изначально успешно реализовано.
Однако после хардфорка и ребрендинга проект несколько обновил алгоритм консенсуса, присвоив ему название Proof-of-Commitment (PoC+). Но по сути речь идет о добавлении элементов стейкинга к имеющейся логике PoC.
Вывод
Несмотря на то, что Proof-of-Capacity не составил конкуренцию таким популярным решениям как Proof-of-Work или Proof-of-Stake, в целом технология представляет определенный интерес. Она предлагает своеобразные решения проблем энергопотребления и конкуренции с крупными игроками рынка майнинга. Более того, не стоит забывать: PoC соседствует с другими сходными алгоритмами в рамках парадигмы Proof-of-Space, поэтому есть вероятность, что технология получит дальнейшее развитие или поспособствует другим решениям, завязанным на использовании памяти.