consensus-shipyard / ipc

🌳 Spawn multi-level trees of customized, scalable, EVM-compatible networks with IPC. L2++ powered by FVM, Wasm, libp2p, IPFS/IPLD, and CometBFT.
https://ipc.space
Apache License 2.0
44 stars 39 forks source link

fix: use eth_getTransactionCount(pending) to get nonce #1194

Closed karlem closed 3 weeks ago

karlem commented 3 weeks ago

Close #1195

Issue:

When interacting with the Filecoin Calibration network using ipc-cli, transactions often fail with the error: message: minimum expected nonce is 63, got 62. This typically occurs when sending two consecutive transactions.

Cause:

The error is caused by Filecoin changing the behavior of the eth_getTransactionCount endpoint. To get the correct latest nonce, the "pending" block parameter must now be specified: Relevant Lotus PR.

Solution:

Fix by setting the transaction block to pending, which makes the get_transaction_count method use the pending parameter, aligning it with Filecoin's expectations.

3benbox commented 3 weeks ago

fwiw, this fix worked for both cross-msg fund-with-token and ipc-cli checkpoint relayer nonce issues we've been seeing on calibration. 🎉