Допустим, меня не интересует майнинг, а интересует только один контракт и его последнее состояние. Почему мой клиент не должен отбрасывать все остальные состояния при инициации, а также игнорировать любые новые блоки, если они не включают изменения состояния, связанные с интересующим контрактом?
Конечно, через какое-то время я могу обнаружить, что хочу «подписаться» на какой-то другой новый контракт, который мой клиент, возможно, до этого момента игнорировал. Однако в этом случае мой клиент может запустить тот же процесс, который обычно используется при первоначальной установке, и отбросить все, что не имеет отношения к рассматриваемому контракту.
Чтобы сделать процесс более эффективным (и избежать длительной синхронизации каждый раз, когда меня интересует новый контракт), я мог бы положиться на то, что организация, публикующая контракт, также включает номер блока, представляющий блок «генезис» для этого контракта, чтобы мой клиент может отбросить любые блоки, предшествующие этому блоку, а затем пропустить любые последующие блоки, которые не включают никаких транзакций для указанного контракта.
Итак… чтобы повторить вопрос, почему клиенты Ethereum загружают всю цепочку блоков, а не что-то в этом роде?
Примечание: для ясности контекст вышеуказанного вопроса — это клиент с отключенным майнингом.
Полный клиент (или толстый клиент) должен воспроизвести все транзакции в состоянии, чтобы обеспечить достоверность.
То, что вы ищете, — это вариант легкого клиента, который в настоящее время находится в стадии исследования. Идея состоит в том, чтобы наблюдать только за частью состояния и использовать других одноранговых узлов для тех частей состояния, которые представляют меньший интерес.
занзу
Хадсон Джеймсон
никсмак