Цель
В этой статье представлен более глубокий обзор одноразовых номеров (Nonce) и того, как они помогают блокчейну поддерживать порядок, предотвращая дублирование блоков.
Реквизитные статьи
Эта статья предполагает, что пользователь понимает информацию в следующих статьях:
Краткое изложение
В большинстве блокчейнов есть два типа одноразовых номеров. Один из них называется «одноразовым номером учетной записи», а другой — одноразовым номером «доказательства консенсуса» — одноразовый номер учетной записи функционирует как очередь для транзакций, связанных с адресом кошелька. Первый добавленный блок будет иметь одноразовый номер учетной записи, равный 1, а второй блок будет иметь одноразовый номер учетной записи, равный 2, непрерывно считая вверх. Ведя запись одноразовых номеров учетных записей, любая система, взаимодействующая с этой цепочкой, знает, что будет следующим одноразовым номером учетной записи, чтобы сохранить этот порядок.
Доказательство одноразовых номеров консенсуса — это числа, рассчитанные для создания желаемого «следующего» хэша из текущего блока. После определения одноразового номера учетной записи записывается «предыдущий» хеш и записываются транзакции; блоку нужен «следующий» хэш, чтобы цепочка могла продолжаться. Если «следующий» хэш должен начинаться с определенной последовательности, например 0x0000… единственный способ добиться этого — добавлять число в блок до тех пор, пока сгенерированный «следующий» хэш не будет соответствовать требуемому стандарту. Это сгенерированное число является доказательством консенсуса одноразового номера. Когда валидаторы используют свое программное обеспечение для обработки транзакций блокчейна, они часто выполняют расчеты, необходимые для определения одноразового номера блока, чтобы его можно было добавить в цепочку. Как только математика для получения правильного одноразового номера завершена, валидаторы, которые нашли следующий блок, обычно получают вознаграждение в виде криптовалюты блокчейна.
Nonces обеспечивает дополнительную безопасность транзакций, поскольку никто не может сделать для себя точную копию сделки. Это известно как повторная атака. При повторной атаке злоумышленник копирует предпринятую и одобренную транзакцию, но частично изменит ее в свою пользу. Поскольку для добавления блока в цепочку необходимо вычислить доказательство консенсуса, оригинал должен быть записан первым. После записи одноразовый номер учетной записи гарантирует, что транзакция является единственной в своем роде и не может быть скопирована для повторной отправки позже. Одноразовые номера учетных записей также предотвращают дублирование или перекрытие транзакций, известных как двойные расходы, когда пользователь может попытаться повторно отправить транзакцию несколько раз, чтобы потратить больше, чем у него есть в его кошельке. Поскольку для каждой транзакции существует уникальный одноразовый номер учетной записи, он примет только один и отклонит остальные, когда блокчейн увидит один и тот же одноразовый номер в нескольких попытках. Каждая транзакция защищена как одноразовыми номерами учетной записи для обеспечения уникальности, так и одноразовыми номерами с подтверждением консенсуса для подписи хэшей и защиты блоков от повторных атак.