only replay-protected (EIP-155) transactions allowed over RPC
only replay-protected (EIP-155) transactions allowed over RPC

Использование узла Ethereum RPC При звонке вы часто сталкиваетесь only replay-protected (EIP-155) transactions allowed over RPC сообщение об ошибке. Эта ошибка обычно возникает при попытке отправить сообщение, не соответствующее EIP-155 Стандартное торговое время. В этой статье объясняется, почему возникает эта ошибка, а также кратко представлены EIP-155 стандарты и их предпосылки.


Почему возникает эта ошибка?

Причина ошибки

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

С форками Ethereum (например, расколом между Ethereum и Ethereum Classic),Этот риск становится более серьезным. Во избежание повтора транзакций между разными цепочками,EIP-155 Предлагается новый стандарт транзакций, гарантирующий, что подписи транзакций однозначно идентифицируют конкретную сеть. В частности, ЭИП-155 добавил один Идентификатор цепочки (цепочка ID) поле, в результате чего транзакции в разных цепочках не могут воспроизводить друг друга.

Если вы неправильно указали идентификатор цепи при отправке транзакции на узел Ethereum или отправленная транзакция не соответствует EIP-155 стандартный,Тогда вылезет ошибка:only replay-protected (EIP-155) transactions allowed over RPC,Обратите внимание, что вы должны отправить сообщение, соответствующее стандарту EIP-155 «Защищенные транзакции».

Распространенные причины, вызывающие эту ошибку

  1. Идентификатор цепочки не указан:Если вы не указали правильную цепочку для подписи транзакцииID,Тогда транзакция не пройдет проверку EIP-155 узла, приводящую к Нужна.
  2. Идентификаторы сети и цепочки не совпадают.:Если ваша транзакция предназначена для конкретной цепочки,Но идентификатор цепочки не соответствует целевой сети,также вызовет эту ошибку.
  3. Использование инструментов, не соответствующих EIP-155.:Некоторые кошельки Ethereumили Инструменты могут не следовать EIP-155 Стандартно транзакции отправляются без защиты идентификатора цепочки.

Что такое ЭИП-155?

EIP-155 — это предложение Ethereum, целью которого является предотвращение переигратьатаковать。переигратьатаковатьотносится к,атаковать копировать Действительная транзакция,и повторно отправить его в другую цепочку,Это может привести к вредоносному поведению или неправильной работе.

Основное содержание EIP-155

EIP-155 Представлен Идентификатор цепочки (цепочка ID) и требует, чтобы каждая транзакция включала идентификатор цепочки при подписании. Идентификатор цепочки Это цифровой идентификатор, связанный с цепочкой, который используется для различения различных сетей блокчейна. Например:

  • Идентификатор цепи основной сети: 1
  • тестовая сеть Rinkeby Идентификатор цепочки: 4
  • тестовая сеть Ropsten Идентификатор цепочки: 3

В частности, EIP-155 реализует механизм защиты транзакций путем изменения подписи транзакции. Традиционные подписи транзакций Ethereum не содержат идентификаторов цепочки и подвержены атакам повторного воспроизведения. EIP-155 добавляет идентификатор цепочки при подписании транзакций, чтобы гарантировать уникальность транзакций в каждой цепочке.

Как работает EIP-155?

В Ethereum транзакции обычно подписываются по следующей формуле:

S = H(Nonce || GasPrice || GasLimit || To || Value || Data || ChainID)

в,ChainID Это новое поле, которое предотвращает повторение транзакций в других цепочках. Встраивая идентификатор цепочки в процесс подписи, действительность транзакции ограничивается определенной цепочкой, гарантируя, что транзакция не может быть повторно использована в других цепочках.

Пример подписи транзакции

Для транзакции, если не используется EIP-155 стандарту, его подпись будет основана на содержимом транзакции (например, noncegasPrice и т. д.). Если транзакция не включает идентификатор цепочки, она может быть воспроизведена в разных цепочках Ethereum, что приведет к потенциальным проблемам безопасности. И в EIP-155 Согласно дизайну, подпись транзакции включает идентификатор цепочки, поэтому транзакция может быть действительна только в определенной цепочке.


EIP-155 Предыстория и причины появления

существовать 2016 год,Эфириум прошел DAO атаковать инцидент, этот инцидент привел к тому, что сообщество Ethereum решило провести хард-форк блокчейна Ethereum и создать Ethereum Classic. Classic) и Ethereum — две независимые цепочки. существовать Во время этого процесса форка,переигратьатаковать стать серьезной проблемой безопасности,атаковать может копировать транзакции из одной цепочки в другую для повторного воспроизведения,Результатом является потеря средств или некорректная работа.

Чтобы избежать этой проблемы, Ethereum предложил EIP-155,Он вводит защиту идентификатора цепочки, чтобы гарантировать, что транзакции не могут быть воспроизведены между разными цепочками. Например,Для Эфириума Существующая транзакция сети не будет действительна в цепочке Ethereum Classic.,Поскольку идентификатор цепочки, содержащийся в подписи, не соответствует целевой цепочке.,Тем самым предотвращая повтор атаковать.

Продвижение и применение EIP-155

Узлы EIP-155 в EIP-155 будут проверять идентификатор цепочки при приеме транзакций. Если идентификатор цепочки в транзакции не совпадает с идентификатором цепочки текущей сети, транзакция будет отклонена. Это позволяет избежать проблемы воспроизведения транзакций между несколькими цепочками.

EIP-155 в основном используется в следующих сценариях:

  • избежать повтора атаковать:когда тысуществовать Различные цепочки Ethereum(Например Основная сеть、тестовая При торговле между сетью), ЭИП-155 Убедитесь, что транзакции могут быть действительны только в одной цепочке.
  • безопасность цепи:EIP-155 Это обеспечивает уникальность транзакций, поэтому транзакции между цепочками не будут ошибочно обработаны из-за разных идентификаторов цепочки.

Как исправить эту ошибку?

1. Убедитесь, что подпись транзакции верна.

  • Если вы существуете, используете определенные инструменты, такие как Web3.js、web3j、Geth и т. д.), чтобы инициировать транзакцию, убедитесь, что идентификатор цепочки правильно установлен в вашей существующей транзакции.
  • существуют При создании транзакции, если вы используете Web3.js или web3j,Убедитесь, что идентификатор цепочки правильно передан в подпись транзакции. Например,существовать Web3.js , ты можешь пройти chainId возможность указать идентификатор цепочки:
Язык кода:javascript
копировать
web3.eth.sendTransaction({
    from: '0xYourAddress',
    to: '0xRecipientAddress',
    value: web3.utils.toWei('1', 'ether'),
    gas: 21000,
    chainId: 1  // Основная сеть
});

2. Проверьте узлы, к которым вы подключены.

Если вы подключены к RPC узел (напр. Infura, Alchemy), убедитесь, что узел поддерживает EIP-155 и тысуществовать Подключитесь к нужной сети(Например Основная сеть、тестовая сеть)。

3. Обновите свои инструменты или библиотеки.

Если вы используете более старую версию инструмента или библиотеки, она может не поддерживать стандарт EIP-155. Убедитесь, что вы используете последнюю версию, поддерживающую EIP-155.


EIP-155 Это важное улучшение сети Ethereum. Оно успешно позволяет избежать проблемы повтора за счет введения механизма защиты идентификатора цепочки. понимая EIP-155 Принцип работы и опыт позволяют нам лучше обеспечивать безопасность наших транзакций. Появляться only replay-protected (EIP-155) transactions allowed over RPC В случае ошибки мы можем проверить идентификатор цепочки в подписи транзакции, чтобы убедиться, что транзакция соответствует EIP-155 стандарты для беспрепятственного проведения транзакций.

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.