nonce в блокчейне что такое
Взгляд венчурного инвестора на Блокчейн | 06: Как работает майнинг (но есть нюанс)
В предыдущем посте мы разобрались с тем, как в принципе работает майнинг. А этот пост я решил сделать как дополнение к предыдущему – думаю, что вам будет интересна эта важная деталь, которую я нигде в печати не видел.
Да, действительно маловат. Ведь вся сеть майнеров умеет рассчитывать 160 миллионов триллионов хэшей в секунду. Поэтому пробежать весь диапазон Nonce от 0 до 4 миллиардов и взять хэш-функцию 4 миллиарда раз сеть может за время, меньшее одной миллиардной доли секунды. Конечно, сеть не работает как одно целое – многие операции повторяются. Но даже если взять крупнейший пул майнеров Antpool, который работает согласованно, у них сконцентрировано 15% всего хэшрейта сети – это 24 млн TH/cек. Величина того же порядка.
Но если Antpool пробегает весь допустимый диапазон Nonce за одну миллиардную долю секунды, то как же получается, что вся сеть «добывает» блок на протяжении целых 10 минут? Все решается просто – одного «пробега» всего диапазона Nonce недостаточно для решения криптографической задачи. Помните, я писал, что единственная часть блока, которую можно менять вручную – это Nonce? Так вот, это не совсем так. Есть еще 2 части блока, которые могут меняться.
Во-первых, это текущее время (обязательная часть блока). Время указывается с точностью до секунды, поэтому каждую секунду временную метку нужно обновлять, и весь процесс повторяется заново. Но этого все еще недостаточно – мы пока что потратили всего лишь одну миллиардную долю секунды и уже остановились. Мы же не хотим бездействовать все остальное время до окончания этой секунды.
Поэтому есть еще одна часть блока – набор транзакций. В блокчейне Биткоина сегодня каждый блок содержит в среднем 2 тысячи транзакций (пересылок биткоинов между участниками сети). И число этих транзакций ограничено допустимой величиной блока в 1 Мб. На самом деле число транзакций, ожидающих добавления в блок, больше. И майнер может выбирать транзакции, которые он хочет добавить в блок. Понятно, что сначала майнер выберет максимальное число транзакций, которые предусматривают выплату ему вознаграждения (Tx fee).
Если майнер пробежал весь диапазон Nonce от 0 до 4 млрд, но решение задачи не было найдено, то майнер уберет одну самую дешевую транзакцию и поменяет ее на самую дорогую из тех, что оставались вне блока, и повторит процедуру. Любая рекомбинация транзакций приводит к изменению содержания всего блока, а значит и хэш от блока полностью изменится. Это позволяет заново пробежать весь диапазон Nonce – вдруг решение найдется. И так можно повторять снова и снова, пока не закончится секунда. Потом таймер переставляется на 1 секунду, и всё можно повторить заново.
Сегодня число транзакций, ожидающих добавления в блок, составляет от 3 до 5 тыс. Если вспомнить комбинаторику, то выбрать 2 тыс. транзакций из 3 тыс. возможных можно числом способов примерно равным 10 в степени 829 (число с 829 нулями). Это дает более чем достаточный потенциал для расчетов Nonce с огромным (фактически бесконечным) запасом на будущее.
Итак, Блокчейн спасен, майнеры могут увеличивать свои мощности так сильно как только заблагорассудится, технология не накладывает никаких ограничений. И да, теперь вы понимаете, почему стоит включать дополнительную плату за ускорение транзакций и как это происходит.
Nonce
Опубликовано 03.06.2021 · Обновлено 03.06.2021
Что такое Nonce?
Одноразовый номер – это аббревиатура от «числа, используемого только один раз», то есть числа, добавляемого к хешированному или зашифрованному блоку в цепочке блоков, который при повторном хешировании соответствует ограничениям уровня сложности. Nonce – это число, которое ищут майнеры блокчейнов. Когда решение найдено, майнерам блокчейнов предлагается взамен криптовалюта.
Ключевые выводы
Понимание Nonce
Блокчейн – это краеугольный камень криптовалюты. Чтобы обеспечить безопасность блокчейна, данные из предыдущих блоков зашифровываются или «хешируются» в серию цифр и букв. Это делается путем обработки ввода блока с помощью функции, которая производит вывод фиксированной длины.
Функция, используемая для генерации хэша, является детерминированной, что означает, что она будет давать один и тот же результат каждый раз, когда используется один и тот же ввод. Это также означает, что функция может эффективно генерировать хешированный ввод, затрудняет определение ввода (что приводит к интеллектуальному анализу ) и вносит небольшие изменения в результат ввода в совершенно другой хэш. Эта сложная система создает сеть конфиденциальности блокчейна.
Особые соображения
Добавление транзакций в блокчейн требует значительной вычислительной мощности компьютера. Люди и компании, обрабатывающие блоки, называются майнерами. Майнеры получают компенсацию только в том случае, если они первыми создают хеш, который соответствует определенному набору требований, который называется целевым хешем.
Процесс угадывания хэша начинается в заголовке блока. Он содержит номер версии блока, временную метку, хэш, использованный в предыдущем блоке, хэш корня Меркла, одноразовый номер и целевой хеш.
Если хеш соответствует требованиям, изложенным в цели, то блок добавляется в цепочку блоков. Цикл между решениями для угадывания одноразового номера называется доказательством работы, и майнер, который может найти значение, получает блок и оплачивается в криптовалюте.
Краткий обзор
Чем выше сложность – мера того, насколько сложно создать хэш, размер которого меньше целевого – тем больше, вероятно, потребуется для генерации решения.
Как найти одноразовый номер
Определение того, какую строку использовать в качестве одноразового номера, требует значительного количества проб и ошибок, поскольку это случайная строка. Майнер должен угадать одноразовый номер, добавить его к хешу текущего заголовка, повторно хешировать значение и сравнить его с целевым хешем. Если полученное значение хеш-функции соответствует требованиям, майнер создал решение и получает блок.
Маловероятно, что майнер успешно угадывает одноразовый номер с первой попытки, а это означает, что майнер потенциально может протестировать большое количество вариантов одноразового номера, прежде чем сделать его правильным. Чем выше сложность – мера того, насколько сложно создать хэш, размер которого меньше целевого – тем больше, вероятно, потребуется для генерации решения.
Сложность блока остается одинаковой для всей сети, а это означает, что все майнеры имеют одинаковые шансы определить правильный хеш. Криптовалютные сети обычно устанавливают целевое количество блоков, которые они хотят обработать в течение определенного периода времени, и периодически корректируют сложность, чтобы обеспечить достижение этой цели. Если количество обработанных блоков не соответствует этому целевому показателю, тогда сложность будет уменьшена, при этом снижение сложности будет установлено на количество времени, превышающее предел времени обработки.
Использование для Nonce
Nonces используются для ряда компьютерных сетевых приложений, включая аутентификацию для покупок, двухфакторную аутентификацию или другие виды приложений для восстановления учетной записи и идентификации, электронные подписи, шифрование данных и многое другое.
Nonce FAQs
Что такое Nonce в криптовалюте?
Одноразовый номер – это аббревиатура от «числа, используемого только один раз», то есть числа, добавляемого к хешированному – или зашифрованному – блоку в цепочке блоков, который при повторном хешировании соответствует ограничениям уровня сложности. Nonce – это число, которое майнеры блокчейнов решают, чтобы получить криптовалюту.
Что такое одноразовый блокчейн?
Одноразовый номер цепочки блоков – это число, добавляемое к хешированному или зашифрованному блоку в цепочке блоков.
Как используются одноразовые номера?
Nonces используются для ряда компьютерных сетевых приложений, включая аутентификацию для покупок, двухфакторную аутентификацию или другие виды приложений для восстановления учетной записи и идентификации, электронные подписи, шифрование данных и многое другое.
Что такое золотой нонс?
Золотой одноразовый номер приводит к тому, что значение хеш-функции ниже целевой сложности, что означает, что он удовлетворяет требованиям следующего блока.
Что такое Ethereum nonce?
В Ethereum слово nonce (number that can only be used once) означает количество транзакций, отправленных с определенного адреса, или количество контрактов, заключенных с определенной учетной записью. Все транзакции Ethereum создаются на основе учетной записи. У биткоин эта структура реализована на основе UTXO (Unspent Transaction Output или “вывод неизрасходованных транзакций”). Следовательно, Ethereum не нужно записывать каждую транзакцию по порядку.
Как создать одноразовый код
Одноразовый идентификатор создается один раз после создания каждой транзакции, и в этом случае блокчейн должен выполнить следующее:
Какова роль nonce?
Как майнеры могут определить, какую сделку вы хотите совершить в первую очередь? Если одноразовый код вашей первой транзакции равен нулю, а код второй транзакции равен единице, действия выполняются в порядке номеров транзакции. Это основное использование nonce в сети Ethereum.
Например, после сериализации транзакции рассмотрим следующую строку:
После вашей транзакции десять Ethereum отправляются на определенный адрес. Но если кто-то сможет скопировать и продублировать эту сериализованную строку, ваши токены будут уничтожены. Это называется атакой воспроизведения.
Как использовать одноразовый код
В Ethereum есть txpool. Этот пул может содержать все транзакции. Каждая новая транзакция сначала входит в пул, затем выходит из пула, когда блоки упакованы, после этого блоки и транзакции соединяются. Таким образом, где-то в блокчейне транзакции должны ждать подключения к своему блоку после извлечения.
Ускорение и отмена транзакции Ethereum
Каждый одноразовый код представляет собой целое число, поэтому блокчейн может заменить его номер другой транзакцией и аналогичным одноразовым идентификатором. Благодаря своей уникальной природе, nonce можно повторно реализовать для ускорения транзакций и их выполнения.
Как ускорить Ethereum
Если стоимость газа низкая, транзакция всегда будет оставаться незавершенной. Предположим, что в этом случае число nonce равно единице. Предположим, что совершается вторая транзакция, и ставка на газ повышается. В этом случае, если одноразовый номер остается таким же, как 1, предыдущая транзакция удаляется. Новая транзакция заменяется тем же одноразовым кодом. Затем вторая транзакция упаковывается и отправляется. Майнер перепроверяет пул и видит похожий одноразовый номер. В этом случае, если майнер по какой-то причине обнаруживает эту проблему, он отклоняет транзакцию.
Как отменить сделку
вносят необходимые изменения, но за вторую транзакцию вам придется заплатить.
Обработка исключений nonce
Nonce Exception Handling — это система для поиска одноразовых ошибок.Замена-транзакция-заниженная цена:
Правила одноразового кода
В этом случае вы должны увеличить число nonce до значения, превышающего текущий блокчейн nonce.
Заключение
Как мы видим, переменная nonce очень помогает приоритизировать транзакции, особенно при отправке массовых транзакций в блокчейн. Эту функцию можно использовать для инициализации каждой транзакции, чтобы число было больше, чем nonce блокчейна Ethereum.
Чтобы понять блокчейн, нужно понять, что такое хеш
Для меня ключ к познанию блокчейна – это понимание криптографических хешей. Мне кажется, многие из нас, обычных людей, делают ошибку, представляя себе блокчейн как, в первую очередь, списки анонимных транзакций, распределённых по децентрализованным сетям. Хотя отдельный блокчейн действительно таков, иногда упускается из виду, что основой блокчейновой технологии является не децентрализация, анонимность или даже распредёленные реестры, а собственно криптография. Хотя это, наверное, очевидно для человека с базовым пониманием компьютерных наук, для большинства из нас это нечто совершенно новое.
Очень краткая история цифровых денег
Биткойн – новый подход к предыдущим экспериментам с цифровыми деньгами. В 1990-х это была горячая, но спекулятивная тема. Даже Алан Гринспен в своей речи в 1996 г. сказал:
Мы предвидим в близком будущем предложения эмитентам электронных платёжных обязательств, таких как карты с хранимой стоимостью или «цифровые деньги», создать специализированные эмиссионные корпорации с сильными балансовыми отчетами и публичными кредитными рейтингами
Таким образом, использование цифровой валюты истеблишментом было на повестке дня задолго до Биткойна. Для того чтобы освободить цифровую валюту от истеблишмента, требовалось ещё одно новшество. Этим новшеством стала криптография.
Когда Гринспен произносил свою речь, шифропанки уже экспериментировали с цифровыми валютами с явным намерением дестабилизировать банки. В числе их экспериментов, существовавших до Биткойна, были Hashcash Адама Бэка, BitGold Ника Сабо, B-Money Вэй Дая и RPOW Хэла Финни. Все они использовали возможности криптографических хеш-функций, и вместе они образуют гигантские плечи, на которых сегодня стоит Биткойн.
Что такое криптографические хеш-функции?
Криптографическая хеш-функция берёт данные и, по сути, переводит их в строку букв и цифр. Вы когда-нибудь пользовались URL-сокращалками типа Bitly или TinyURL? Это нечто похожее. Вы вводите что-то длинное, а на выходе получается что-то короткое, олицетворяющее то длинное. Только в случае криптографических хеш-функций ввод не обязательно должен быть длинным. Это может быть что-то очень короткое (например, слово «пёс») или почти бесконечно длинное (например, весь текст «Повести о двух городах»), и на выходе вы получите уникальную строку установленной длины. Кроме того, в отличие от сокращателей ссылок, хеш-функции, применяемые в Биткойне, действуют только в одном направлении. Хотя одни и те же данные всегда дадут один и тот же хеш, воспроизвести изначальные данные по полученному из них хешу невозможно.
Итак, данные вводятся в хеш-функцию, функция выполняется и получается строка букв и цифр (можете попробовать самостоятельно здесь). Эта строка называется хешем. В блокчейне Биткойна хеши состоят из 256 бит или 64 символов.
Может показаться невозможным, чтобы почти бесконечное количество данных могло последовательно переводиться в уникальную строку всего из 64 символов, но именно таким чудесным образом действуют криптографические функции. С помощью этой невероятной технологии целые книги, заполненные текстом, могут быть переведены в одну строку из 64 цифр и букв. И каждый раз, когда вы вводите одни и те же данные, вы получите не только один и тот же хеш, но уникальный и отличный от любого другого хеша.
Пример
Это было самое прекрасное время, это было самое злосчастное время, – век мудрости, век безумия, дни веры, дни безверия, пора света, пора тьмы, весна надежд, стужа отчаяния, у нас было всё впереди, у нас впереди ничего не было, мы то витали в небесах, то вдруг обрушивались в преисподнюю, – словом, время это было очень похоже на нынешнее, и самые горластые его представители уже и тогда требовали, чтобы о нём – будь то в хорошем или в дурном смысле – говорили не иначе, как в превосходной степени:
Тогда как хеш слова «пёс»:
Как работают криптографические хеш-функции
Существуют разные виды криптографических хеш-функций, и каждая из них работает по-разному. Использовавшаяся выше хеш-функция – SHA-256, хеш-функция, применяемая в Биткойне, – работает на основе безумно сложной формулы, связанной с отражением света от эллипсов. Вам не стоит слишком из-за этого переживать. Суть в том, что криптографические хеш-функции – это чертова магия, и вы никогда их до конца не поймете, если только вы не математик.
Как хеш-функции применяются в блокчейне
Чтобы блокчейн работал, он должен обновляться. Подобно банку, он должен вести актуальные записи всех транзакций и активов (например, биткойнов), имеющихся у каждого участника сети. Именно при обновлении транзакционной информации любая аутентифицирующая система уязвима для атаки. Банк сглаживает этот риск благодаря наличию строгой централизованной иерархии, гарантирующей подлинность на свой собственный риск. Так как блокчейну удаётся обновляться, оставаясь децентрализованным? Он использует криптографическую вероятностную хеш-игру, называемую «доказательство выполнения работы» (Proof of Work).
Криптография обеспечивает консенсус
Чтобы продолжать функционировать, блокчейн должен создавать новые блоки. Так как блокчейны – это децентрализованные системы, новые блоки должны создаваться не единственным аутентифицирующим субъектом, а сетью в целом. Чтобы решить, каким будет новый блок, сеть должна достичь консенсуса. Чтобы достичь консенсуса, майнеры предлагают определённые блоки, блоки верифицируются, и, наконец, сеть выбирает единственный блок, который будет следующей частью реестра. Однако очень много майнеров предлагают идентичные блоки, проходящие верификацию. Так каким образом конкретный блок выбирается, чтобы стать следующим в цепи?
Компьютеры соревнуются в хеш-игре. Всё очень просто. По сути, чтобы выиграть игру, майнящий компьютер должен угадать число, называемое «нонс» (nonce), которое в комбинации со всеми предыдущими данными блокчейна даёт при вводе в хеш-функцию SHA-256 определённый хеш.
Так обеспечивается консенсус, а также предотвращаются атаки, нацеленные на манипулирование системой. Так как результатом каждого ввода является совершенно уникальный хеш, только определенный нонс в комбинации с верными ранее верифицированными блокчейновыми данными даст хеш, решающий уравнение. При вводе неточных или мошеннических предшествующих записей не может быть угадан верный хеш. Таким образом, криптография делает блокчейны более безопасными, чем любой банк с человеческой верификацией.
Тем не менее, поскольку постепенно всё больше людей выделяли всё больше компьютерной мощности на майнинг биткойнов, возникла новая проблема. Новаторы разработали мощные компьютеры, предназначенные исключительно для майнинга биткойнов. Эти компьютеры способны предлагать хеши намного чаще, чем средний компьютер, что позволяет им прийти к верной догадке намного быстрее и, как следствие, намайнить больше биткойнов.
Проблема заключается в том, что когда всё меньше людей могут позволить себе майнинговые технологии, риск централизации возрастает. Блоки создаются и биткойны майнятся, как только находится решение следующего блока. Таким образом, имеющий ресурсы может просто собрать более мощную майнинговую машину, чем у всех других, и майнить огромный процент остающихся биткойнов быстрее всех других, просто предлагая больше догадок в более короткий срок.
10-минутное решение
Сатоши предусмотрел механизм, сглаживающий эту проблему, и он также полагается на возможности хеш-функций. Вот как я предпочитаю смотреть на его решение:
Представьте, что ваша хеш-функция на выходе вместо цифр и букв даёт животных. Существует равная вероятность, что при вводе рандомных данных хеш-функция выдаст слона или обезьяну. Ваши случайно выбираемые данные могут быть переведены либо в одно, либо в другое животное с одинаковой вероятностью.
Но теперь представьте, что вы задаёте определённые критерии того, в какое животное должна перевести ваши данные хеш-функция, чтобы работать. Это влияет на вероятность хеширования тех или иных данных в животное, удовлетворяющее вашим критериям. Например, данные «abc123» с большей вероятностью выдадут любое животное (на самом деле в данном примере вероятность 100%), чем любое двуногое, потому что существует намного больше потенциальных догадок, подходящих под любое животное, чем под любое двуногое. Ещё меньше вероятность получить любую обезьяну.
Блокчейн Биткойна работает так, что игра на отгадывание самокорректируется, чтобы всегда быть достаточно сложной, чтобы все компьютеры сети могли угадывать только каждые 10 минут, независимо от мощности отгадывающих компьютеров. Это значит, что угадывание хеша и майнинг блока сегодня теоретически намного сложнее, чем при запуске Биткойна в 2009 г., потому что в сети очень много сверхмощных компьютеров. И в самом деле, сегодня невозможно майнить биткойны с помощью обычного ноутбука, тогда как в ранние дни Биткойна все участники сети использовали стандартные компьютеры.
Так как же протокол Биткойна гарантирует, что игра на отгадывание будет становиться достаточно сложной, чтобы даже чрезвычайно мощным майнинговым компьютерам на отгадывание требовалось примерно 10 минут? Вспомните пример с обезьяной. Чем более конкретные критерии заданы для выхода хеш-функции, тем больше догадок нужно сделать, чтобы получить этот более конкретный выход. Вместо того чтобы «правильным» ответом было животное (легко), двуногое (сложно) или обезьяна (сложнее), для «правильной» строки хеша, выигрывающей игру, задаются всё более конкретные критерии. В частности, игра усложняется посредством требования наличия у правильного хеша в начале определённого количества нулей.
Представьте себе это следующим образом. Если я попрошу вас отгадать рандомное трёхзначное число, чтобы получить шоколадку, у вас больше шансов угадать, если правильное число – любое трёхзначное число, чем если это любое трёхзначное число, начинающееся с 0. Это сложно понять, но в основе лежит математический закон, говорящий, что достаточно квадратного корня N рандомных событий, чтобы вероятность их совпадения составляла 50%. Та же самая математика поддерживает парадокс дней рождения – если в комнате всего 23 человека, существует 50% вероятность, что у двух из них день рождения в один и тот же день.
К сожалению, делая угадывание числа всё сложнее и сложнее, блокчейн Биткойна неизбежно пришел к исключению из майнинга обычных людей. Но это справедливая цена децентрализации. Без этого одна богатая компания могла бы теоретически создать чрезвычайно мощный компьютер, способный мгновенно добыть все оставшиеся биткойны.
Должен заметить, что я лишь (с трудом) понимаю, как работает блокчейн Биткойна.
Другие блокчейны могут использовать криптографию совершенно иначе, чем я здесь описал. Например, я не знаю, использует ли ту же систему доказательство доли владения (proof of stake) – как утверждается, более эффективное усовершенствование доказательства выполнения работы.
Но так как блокчейн Биткойна является моделью для всех других блокчейнов, его понимание – это важнейший шаг к постижению мира криптовалют. Хотя существенно также понимание многих других аспектов блокчейна, осмысление того, как он использует криптографию, – наверное, важнейшая часть пазла.
Что такое Nonce в майнинге?
Существует огромное количество различных статей и публикаций, в которых объясняется процесс майнинга, а также некоторые его аспекты. Сегодня практически каждый знает, как осуществляется добыча криптовалют и что лежит в ее основе. В данной статье мы поговорим о том, что такое nonce в майнинге, ведь данное определение встречается достаточно часто, но редко истолковывается.
Nonce в майнинге: самое простое описание
Для начала мы немного напомним вам, что такое сам майнинг. Не будем вдаваться в сложные теоретические выкладки, а рассмотрим самое простое определение данного процесса. Представьте, что у вас имеется огромное количество коробов, в одной из которых лежим монета. Чтобы забрать ее, вам необходимо последовательно открывать коробки. Но не все так просто – на каждой из коробок написана определенная задача, которую нужно решить, чтобы открыть коробку.
Так вот, тот ответ, который позволил нам открыть нужную коробку и достать монету, и является значением Nonce в майнинге. Стоит отметить, что оно является уникальным и никогда больше не повторяется.
Nonce в майнинге: техническое описание
Само определение Nonce является аббревиатурой от выражения «number that can only be used once». В переводе на русский это означает «число, которое может быть использовано лишь однажды». Оно представляет собой двоичный код, который ищется майнерами в процессе PoW-майнинга.
При нахождении нужного значения Nonce он записывается в заголовок блока и должен удовлетворять определенные условия, а именно – хеш блока должен быть меньше или равен заданному значению Target. Только при таком условии блок будет добавлен в блокчейн. В противном случае сеть не примет его, и майнеру придется продолжать перебор значений для нахождения нужного.
Нахождение значения Nonce в майнинге непосредственно связано со сложностью сети, ведь Target является производной от нее. Чтобы Nonce находилось майнерами с заранее определенной скоростью, происходит постоянное повышение сложности добычи. Например, в Bitcoin она пересчитывается каждые 2016 блоков.
Таким образом, ничего сложного в понимании значения Nonce нет. Достаточно лишь изучить процессы майнинга и немного покопаться в его структуре.