Ограничение/максимум одноразового номера аккаунта

Я читал о одноразовом номере учетной записи, что он должен быть инкрементным числом, которое увеличивается с каждой транзакцией. Я узнал о пуле транзакций и очереди, о том, что произойдет, если вы не отправите последовательный одноразовый номер, но я не смог найти кого-то, кто сказал бы мне, есть ли у этого одноразового номера ограничение .

Если я буду продолжать совершать транзакции с учетной записи и каждый раз увеличивать одноразовый номер на 1, будет ли время, когда я достигну максимального количества транзакций, которые могут быть выполнены для учетной записи ?

Я также подумал, что, возможно, этот одноразовый номер относится к блоку, поэтому после того, как транзакции были добыты, одноразовый номер может быть перезапущен, поэтому фактического ограничения не будет. Но я видел примеры, в которых используется метод geth getTransactionsCount()для вычисления следующего одноразового номера, так что это не могло быть для каждого блока.

Ответы (1)

Транзакция может быть обнаружена только в том случае, если ее одноразовый номер на 1 больше, чем ранее использованный одноразовый номер подписывающей стороной (исключением является первая передача учетной записи, где одноразовый номер должен быть равен нулю). Другими словами, транзакция может быть обнаружена только в том случае, если одноразовый номер представляет собой общее количество транзакций, созданных подписывающей стороной (исключая текущую транзакцию).

Также не существует определенного максимального значения для одноразового номера учетной записи, поэтому оно может расти бесконечно. Конечно, «безлимитный» нереалистичен, поэтому клиенты начнут ломаться в какой-то момент. Не вникая в текущие реализации, я предполагаю, что все они будут в порядке, по крайней мере, до значения nonce 2^64, что на порядки больше, чем я ожидаю, когда-либо обработает Ethereum. После 64-битной версии все клиентские реализации хорошо знакомы с числами размера 2^256, поскольку именно с ними работает EVM, поэтому, если клиент не готов к таким большим значениям nonce, обновление для их обработки должно быть тривиальным. Однако невозможно обработать

Математика для одноразового номера размером 2 ^ 64: если мы возьмем рекордно большое количество транзакций в день ~ 1,3 миллиона в декабре прошлого года и предположим, что 1 адрес должен был отправить все эти транзакции, то для выполнения 2 ^ 64 транзакций потребуется 40 миллиардов лет, что составляет 3 раз превышает возраст наблюдаемой Вселенной.

Математика для 2 ^ 256: Короче говоря, это 2,4 * 10 ^ 68 лет 1,3 миллиона транзакций в день с 1 адреса.

2**64 — это всего 5 845 420 460 транзакций в секунду в течение 100 лет. Дерьмовое одноядерное ядро ​​​​i3 сейчас обрабатывает примерно столько же инструкций в секунду. Легкая игра. Я готов начать спамить Ropsten прямо сейчас, чтобы проверить это. :-)