Что такое Proof-of-Work?
Майнинг — довольно интересное слово. Происходит от английского «mining» — добыча полезных ископаемых. То есть криптовалюту, грубо говоря, можно причислить к полезным ископаемым, добываемых из земли и являющихся основным двигателем экономики нашей планеты с начала времён. Как известно, стоимость полезных ископаемых рассчитывается из стоимости их добычи и редкости и запасов.
И так же как ограничены запасы золота и серебра, количество стойкой криптовалюты, например Bitcoin, ограничено протоколом и количество добываемых монет постепенно уменьшается. Отсюда и постоянно растущая стоимость валюты. Однако, криптовалюта — это не кусок железа, она не имеет вещественной оболочки, только электронный след, и как раньше подделывали медь в монетах, многие умельцы пытаются добыть криптовалюту не честно, используя спам атаки, алгоритмы подмены, двойные операции.
Чтобы этого избежать, было разработано несколько защитных принципов, Proof-of-Work (PoW) — доказательство выполненной работы, и Proof-of-Stake (PoS) — доказательство доли владения — самые распространённые из них.
Доказательство выполненной работы (PoW)
Proof-of-Work — основной метод защиты, увеличивающий безопасность данных. Он представляет собой задачу, которую нужно решить для подтверждения того, что данные достоверны и работа выполнена. Причём затраты времени на это должны быть существенные, а проверка наоборот, очень быстрой.
Большая часть существующих криптовалют пользуются для работы алгоритмом PoW. Самые яркие представители это Bitcoin, Ethereum, XRP, Tether, Litecoin. Рассматривать принцип работ данного алгоритма будем на примере Bitсoin.
Процесс создания блока
Итак, в основе некоторый объем данных: финансовые операции, данные идентификации и подобное. Задача состоит в том, что эти данные нужно систематизировать, объединить и зашифровать. Для этого создаётся блок, который представляет собой битовую строку, созданную при помощи хеширования, процесс нахождения хэш-функции из массива данных. Есть несколько типов хэширования: частичной инверсии, используется в почтовых серверах; квадратичный вычет; деревья Меркля, используется почти всеми крупными криптовалютами, включая Bitcoin.
Деревья Меркля представляют собой цепи блоков (полученных хэшей), в которых второй блок включает значение первого хэша, третий — второго и так до конца. Плюс корректность хэша определяется специальным параметром сложности майнинга. И для достижения этого параметра нужно проводить постоянный пересчёт с перебором случайных значений. Происходит брутфорс, направленный на защиту, вычисление проходит столько раз, сколько это нужно, для получения значения ограниченного контрольным числом nonce.
После проведения всех вычислений и получения нужного значения создаётся блок, который и является этим значением и в любой момент может быть расшифрован сервером в срок, равный созданию одного хэша без перебора. Блок добавляется в блокчейн — последовательную цепочку, в которой следующий элемент содержит свою хэш сумму, плюс хэш сумму предыдущих блоков. Таким образом, объем данных, необходимых для шифрования растёт с каждым новым блоком, что замедляет их создание.
После получения очередного блока и записи его в блокчейн пользователь получает за это вознаграждения в размере 6,25 btc (для Биткоина) плюс комиссия за запись данных.
Майнинг — высоко энергозатратное действие
Естественно процесс майнинга, особенно на Proof-of-Work требует огромное количество вычислительных мощностей. Пример: в 2013 году совокупная мощность, затраченная на майнинг Bitcoin в 256 раз превысила мощность всех топ-500 суперкомпьютеров вместе взятых.
Шанс того, что один пользователь сможет получить блок единолично равняется отношению мощности его устройства к мощности совокупности всех остальных устройств, то есть очень маленький.
Чтобы разрешить эту проблему, пользователи собираются в пулы, группы, решающие одну и ту же задачу одновременно, и объединяют мощности своих устройств. После создания пулом блока, награда с него делится между всеми участниками пропорционально вложенной мощности. Плюс ко всему BitCoin регулирует сложность задач таким образом, чтобы на их решение приходилось примерно 10 минут и раз в 2016 блоков сложность задач пересчитывается в большую или меньшую сторону. Так проходит регуляция суммарной мощности всех устройств, блоки вычислять тяжелее, но и устройств становится больше.
Минусы Proof-of-Work
Главным минусом Proof-of-Work являются огромные энергозатраты. Для сравнения в 2017 на одну транзакцию тратилось около 163 кВт*ч энергии, что равно пяти дневному потреблению семьи из трёх человек. Получается, что каждый пользователь должен высчитать, будет ли его доля в пуле майнеров на столько большой, что он сможет окупить потраченные на майнинг ресурсы. Эта проблема сразу отсекает всех пользователей с не эргономичным или устаревшим железом и заставляет всё больше вкладываться в майнинг.
Так же минусом считается то, что такой алгоритм и потраченные на него ресурсы пропадают зря, так как не применимы в какой-либо сфере для решения действительно важных задач.
Уязвимости
Алгоритм Proof-of-Work уязвим к нескольким типам атак:
- Атака 51%. Если у злоумышленника находится 51% или больше вычислительной мощности сети, то он может подтверждать только свои блоки, игнорируя блоки других пользователей, таким образом получая монополию и забирая весь доход себе. Но к счастью данный метод сейчас не возможен с крупной криптовалютой, так как огромные мощности задействованы, а на слабой криптовалюте при такой ситуации очень быстро пропадают пользователи.
- Двойное расходование. При такой атаке используются две транзакции: одна от получателя поставщику, вторая получатель отсылает деньги в том же объёме на свой же счёт. Транзакции обрабатываются и только одна из них становится истинной, другая отклоняется. Таким образом если поставщик не стал ждать подтверждения операции и отправил товар, есть вероятность в 50%, что будет подтверждена транзакция перевода получатель-получатель.
- Эгоистичный майнинг. Злоумышленник создаёт собственный пул, который рекламируется как более надёжный и сильный. И в процессе работы пула создаётся собственный блокчейн, который публикуется таким образом, что-либо отсекает цепи других майнеров, находя разветвления приватных цепей и внедряясь в них, делая их недействительными, либо принуждает присоединиться к своему пулу.
Автор: Ян Луцкий, аналитик Freedman Сlub Crypto News