Зачем хранить одноразовый номер учетной записи в цепочке вместо использования метки времени для предотвращения повторных атак или любого другого случайного бита информации, который изменит хэш и дифференцирует транзакцию?
Насколько я понял, одноразовый номер учетной записи — это бит информации, добавляемый к транзакции для противодействия повторным атакам путем создания уникального хэша транзакции, используемого для идентификации учетной записи.
Мой вопрос: зачем нужна постоянная запись, которая занимает место в цепочке сумм транзакций, совершенных каждой учетной записью? Нельзя ли добиться того же эффекта, добавив в транзакцию любые другие случайные или уникальные данные, например временную метку в момент, когда транзакция генерируется клиентом кошелька? Есть ли какие-либо другие преимущества записи одноразовых номеров учетных записей, которые я не вижу?
Во-первых, у транзакций нет метки времени. Только блоки имеют временные метки.
Теперь вы можете спросить , почему мы просто не использовали временные метки вместо nonce; с технической точки зрения, это сработало бы одинаково хорошо. Думаю, это больше связано с выбором дизайна. Рассмотрим миллиарды транзакций, а затем каждая транзакция содержит несколько байтов для метки времени, одноразовый номер сравнительно меньше по размеру. И на самом деле, если вы посмотрите на это программно, одноразовый номер — это скорее понятие упорядочения (во многом похожее на отметку времени). Кроме того, вы также получаете количество транзакций.
По сути, вы получаете три преимущества при использовании непревзойденного пространства: простота, порядок и отслеживание количества транзакций. Наиболее важным является тот факт, что в силу децентрализованной природы сети Ethereum вам необходимо убедиться, что транзакция A не была потеряна, и, следовательно, EVM не будет обрабатывать транзакцию B, предполагая, что транзакция A должна была произойти раньше. B. Вы можете думать об этом как о том, что транзакции будут выполняться по порядку, несмотря на задержку в сети, которую испытывает каждая транзакция (очень похоже на TCP-пакеты, если аналогия помогает). Этого нельзя достичь с помощью простых временных меток.
Кроме того, вы должны знать, что временные метки в сети могут быть искусственно изменены узлами майнера.
Утгарда
Флорида