TGViewer
Web3Code Web3Code @aio_study · 2.1K subscribers
Post #66 2.4K
Частые фейлы при создании транзакции 🧠

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

Определения терминов, которые мы будем использовать далее:
RPC (Remote Procedure Call) – механизм, позволяющий одной программе вызывать функции или запрашивать данные на другом сервере, как если бы они выполнялись локально. В контексте блокчейна RPC используется для взаимодействия с узлом сети (например, отправка транзакций, получение данных о блоках и балансах адресов).

EIP-1559 – предложение по улучшению Ethereum, изменяющее механизм ценообразования газа. Введено в обновлении London, включает базовую комиссию, которая сжигается, и приоритетную комиссию для ускорения транзакций. Это улучшает прогнозируемость и стабильность комиссий.

Legacy-транзакция – традиционный тип транзакций в Ethereum до EIP-1559, где пользователи указывают только gasPrice. После внедрения EIP-1559 такие транзакции обозначаются как "Type 0" или "legacy" и остаются совместимыми с сетью.


1. Использование неправильного RPC ⚠️

Одна из распространённых ошибок — поиск RPC-узла для Ethereum и выбор первого попавшегося. Например, ты хочешь отправить транзакцию в Ethereum Mainnet, но случайно берёшь RPC от тестовой сети (например, Goerli). В таком случае, даже если ты правильно указал chain_id=1 (Mainnet), узел не примет транзакцию, потому что она не соответствует сети

2. Ошибка в chain_id
🔗

Обратная ситуация — у тебя подключён Ethereum Mainnet, но ты не знаешь, какой chain_id указать. Ты находишь информацию в интернете или спрашиваешь у знакомых, и тебе говорят, что нужен chain_id=5. Однако 5 — это идентификатор Goerli, а для Mainnet нужен chain_id=1. В результате транзакция фейлится, потому что chain_id должен точно совпадать с сетью, к которой ты подключён

3. Не рассчитать цену за газ ⛽️

При создании транзакции нужно корректно рассчитать цену за газ. Самой тупой ошибкой, может быть вписать туда фиксированные данные, без расчета через код.

transaction = {
"nonce": w3.eth.get_transaction_count("0xYourAddress"),
"to": "0xRecipientAddress",
"value": w3.to_wei(0.01, "ether"),
"gas": 21000,
"gasPrice": w3.to_wei(0.0001, "gwei"), # Слишком низкая цена за газ
"chainId": 1,
}


В таких случаях твоя транзакция может либо зависнуть, либо ты переплатишь за газ.

4. Использовать legacy транзакции 🐢

Если ты используешь legacy транзакции, как мы это показали в предыдущем примере, то тебя точно побреют проекты. Лучше использовать современный стандарт в виде EIP 1559.

transaction = {
"nonce": w3.eth.get_transaction_count("0xYourAddress"),
"to": "0xRecipientAddress",
"value": w3.to_wei(0.01, "ether"),
"gas": 21000,
"maxPriorityFeePerGas": w3.to_wei(2, "gwei"),
"maxFeePerGas": w3.to_wei(50, "gwei"),
"chainId": 1,
}

# получаем базовую цену газа и приоритетную комиссию
base_fee = w3.eth.gas_price
max_priority_fee_per_gas = w3.eth.max_priority_fee
max_fee_per_gas = base_fee + max_priority_fee_per_gas

# записываем расчеты в транзакцию
transaction["maxPriorityFeePerGas"] = max_priority_fee_per_gas
transaction["maxFeePerGas"] = int(max_fee_per_gas * 1.5)

# оцениваем лимит газа
gas_estimate = w3.eth.estimate_gas(transaction)

transaction["gas"] = int(gas_estimate * 1.5)


5. Не дождаться выполнения транзакции 👀

Когда у тебя простая транзакция и ты в ней уверен, например, это может быть простым переводом с одного кошелька на другой, то можно не дожидаться выполнения. А если у тебя что-то сложнее? Может быть такое, что ты отправишь транзакцию, а спустя время она будет отменена (transaction reverted).

Бро, это мы рассказали тебе лишь 1/4 часть ОДНОГО урока, представь сколько еще будет на самом обучении. Ты еще успеваешь записаться к нам, продажи открыты до 17 февраля.

Пиши в комментах с какими ошибками сталкивался ты (можно не только по транзакциям) ⤵️

AIO Study | Site
  • 👍 12
  • 🔥 10
  • ❤ 2
  • 👏 1
More from @aio_study
  1. May 27, 2025TypeScript на подлёте. Сегодня открываем предзапись на TypeScript курс! Мы уже подготовили…
  2. May 19, 2025Осталось совсем чуть-чуть.😏 Мы создали действительно качественный продукт — это больше, ч…
  3. May 10, 2025Хочешь сам ставить правила заработка?😱 Мало кто говорит прямо, но сейчас мы разберёмся кт…
  4. May 4, 2025День, когда ты прокачаешь свои возможности в коде 🚀 Сейчас, чтобы быть в тренде и успеват…
  5. Apr 30, 2025А вы знали, что компании готовы платить тебе десятки тысяч долларов просто за твоё умение…
  6. Apr 18, 2025Последний месяц все наше внимание было посвящено нашему новому арбитражному сервису + мы т…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →