BTC $ 3992.8093471 (0.74 %)
ETH $ 148.407018053 (1.18 %)
XRP $ 0.3217188777 (-0.15 %)
EOS $ 3.8779302775 (0.74 %)
LTC $ 49.5680467565 (-0.01 %)
BCH $ 144.240506697 (-0.03 %)
USDT $ 1.0057520963 (0.17 %)
XLM $ 0.090632901 (0.86 %)
TRX $ 0.025075605 (1.04 %)
BNB $ 10.7572593182 (2.13 %)

Простейший компонент блока — nonce

20:30 05/02/2019
Понятие Nonce в криптосфере

Введение

 

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

 

Все содержимое блока включает стандартные компоненты типа стандартной последовательности бит в начале блока (Magic no), размера блока, заголовка блока и транзакций. Транзакции занимают наибольшую часть места в блоке. Их структура достаточно простая. Они состоят из таких данных, как источники оплаты, назначения оплаты, входы и выходы и т.п. Все сложные компоненты, относящиеся к функционалу блока, расположены в заголовке. Там находятся несколько результатов хеширования, версия блока, отметка времени, сложность и nonce. Последний компонент считается одним из простейших, тем не менее он очень важен. Рассмотрим его подробнее.

 

Что такое nonce?

 

Слово «nonce» — это сокращение фразы «number used once», что переводится с английского как «число, используемое однажды». Попросту говоря, это счетчик, увеличивающийся в определенных условиях. Как следует из названия, этот счетчик используется лишь один раз в том действии, для которого он предназначен.

 

Компонент nonce применяется не только в Биткоине. Например, в Эфириуме есть два разных nonce, которые используются в блоках и для учетных записей обоих типов.

 

Nonce существует и в других проектах, например, в хорошо известных NEO и Ripple.

 

Nonce в Биткоине

 

Основная цель внедрения nonce в Биткоине — это привнесение случайности. Это важно для майнинга. Как мы знаем, майнинг требует множества пересчетов содержимого блока. Если результаты хеширования удовлетворяют требованиям, то процесс майнинга успешен. К сожалению, очень сложно получить правильный хеш-результат за одну попытку.

 

По правилам Биткоина, среднее время нахождения блока — 10 минут. Это значит, что участники могут закрывать блоки раз в 10 минут независимо от количества вовлеченных мощностей хеширования. Это требует многократного пересчета блока. Рассчитывая хеш блока с одним и тем же содержимым, мы получаем один и тот же результат. Именно поэтому содержимое блока необходимо поменять. Однако существует лишь несколько компонентов, которые подлежат изменениям: транзакции, время и nonce.

 

Загвоздка в том, что нужно поменять как можно меньше данных, чтобы уменьшить время расчета. Это делает замену транзакций неэффективной из-за необходимости пересчета древа Меркла. Отметка времени может повлиять на выбор правильного блока в случае одновременного майнинга, так что ее стоить менять не слишком часто. Поэтому nonce остается единственным вариантом. Менять nonce каждый раз после неудачного хеширования блока — наилучший выбор.

 

Nonce в Эфириуме

 

Эфириум использует два nonce по-разному. Первое применение такое же, как и в Биткоине. Nonce — это стандартный компонент блоков Эфириума. Второе применение касается множества транзакций для одной учетной записи. Согласно глоссарию Эфириума, nonce учетной записи — это просто счетчик транзакций, который применяется для более мощной защиты изменения состояния и для предотвращения атаки множественной траты.

 

Nonce для майнинг-пулов

 

Еще одна важная область применения nonce — распределение рабочей нагрузки майнинг-пулов. Каждому майнинг-пулу следует избегать многократного расчета одинаковых блоков в одно и то же время. Этого можно добиться несколькими путями. Координатор пула может избегать рассылки временных отметок, отсылать набор различных транзакций разным участникам или выдавать диапазоны nonce разным участникам.

 

Первый подход рискован, поскольку все участники пула работают примерно в одно и то же время. Второй подход требует много дополнительной работы, выполняемой координатором пула. Поэтому последний подход наиболее эффективен.

 

Послесловие

 

На примере nonce мы видим, что даже простейший компонент криптопроектов выполняет важные функции. Изъятие nonce мгновенно приведет к необходимости решать множество проблем без подготовленного эффективного решения.

Нашли ошибку? Выделите её и нажмите Ctrl + Enter чтобы сообщить администратору.

Самые актуальные новости о криптовалютах и блокчейне. Прочтите первым!

Зачем мне это?

Загрузка...