besu icon indicating copy to clipboard operation
besu copied to clipboard

Arbitrum warnings. It expects `required field 'v' in transaction`.

Open ebadiere opened this issue 11 months ago • 14 comments

Description

As an Abritrum node operator, I want an error and warning free log so that I can focus on the application. I am using Besu as my execution engine and I am seeing the following in my arbitrum logs:

WARN [03-19|15:27:23.581] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-19|15:27:23.673] created block                            l2Block=192,032,528 l2BlockHash=ff2627..bbeaf9
INFO [03-19|15:27:24.624] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=4,501,040 err="missing required field 'v' in transaction" result={}        attempt=0 args="[\"0x3a3a66ee3f8d4230bc56eba47d07f466864312e84d967b653644d2071f68079e\", \"0x56\"]"

Transactions are being submitted so far, however these messages are a concern.

Acceptance Criteria

The issue is resolved so that the warning and error messages are not logged in Arbitrum. If this is no longer a required field and is an Arbitrum issue, let me know and I'll open an issue on their side.

Steps to Reproduce (Bug)

  1. Set up a full node with Besu as the execution engine and Teku as the consensus client.
  2. Set up an arbitrum node to use the node in step one.
  3. Let the arbitrum node sync and watch the logs.

Expected behavior: [What you expect to happen]

Actual behavior: [What actually happens]

Frequency: [What percentage of the time does it occur?]

Logs (if a bug)

Please post relevant logs from Besu (and the consensus client, if running proof of stake) from before and after the issue.

Versions (Add all that apply)

  • Software version: [besu --version] 24.3.0 Container tag hyperleger/besu:24.3.0
  • Java version: [java -version]
  • OS Name & Version: [cat /etc/*release]
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
  • Kernel Version: [uname -a]
Linux rocketpool-3 5.15.0-100-generic #110-Ubuntu SMP Wed Feb 7 13:27:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
  • Virtual Machine software & version: [vmware -v] Docker
  • Docker Version: [docker version]
Docker version 25.0.4, build 1a576c5
  • Cloud VM, type, size: [Amazon Web Services I3-large] Hetzner AX52 #2323003
  • Consensus Client & Version if using Proof of Stake: [e.g. Teku, Lighthouse, Prysm, Nimbus, Lodestar]
Teku
consensys/teku:24.3.0

Additional Information (Add any of the following or anything else that may be relevant)

  • Besu setup info - genesis file, config options - Running Besu in rocketpool
  • System info - memory, CPU AMD Ryzen 7 7700 Octa-Core "Raphael" (Zen4) 64 GB DDR5 RAM

ebadiere avatar Mar 19 '24 15:03 ebadiere

@ebadiere Are you using Besu as the L1 execution client in this setup?

jframe avatar Mar 19 '24 22:03 jframe

I'm experiencing the same while using consensys/teku:24.3.0 & hyperledger/besu:24.3.0

aytunc-tunay avatar Mar 24 '24 19:03 aytunc-tunay

@jframe Yes, I am using it as an L1 execution client.

ebadiere avatar Mar 24 '24 20:03 ebadiere

Please investigate the issue since it causes troubles with Arbitrum node.

Description

After Decun upgrade, local Arbitrum node using Besu client throws a lot of warnings for missing a field. This does not happen with Geth client. The connection may flood the network somehow. This did not happen before the Decun upgrade. . Arbitrum node cannot be synced correctly.

Steps to Reproduce (Bug)

  1. Run Besu node
  2. Run Arbitrum node using Besu as L1

Expected behavior: The node should run smoothly without any continuously throwing warnings

Actual behavior: Warnings and reconnection. Arbitrum node cannot be synced correctly

Frequency: Always

Logs (if a bug)

Besu is running smoothly. No issue from Besu client. Arbitrum client log

WARN [03-26|15:36:47.929] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:48.939] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=929 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:48.939] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:48.964] created block                            l2Block=194,447,134 l2BlockHash=5c210b..9aa6e6
INFO [03-26|15:36:49.956] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=938 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:49.956] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:49.964] created block                            l2Block=194,447,146 l2BlockHash=e33e97..822182
INFO [03-26|15:36:50.965] created block                            l2Block=194,447,150 l2BlockHash=89de18..a32da7
INFO [03-26|15:36:50.969] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=947 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:50.969] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:51.966] created block                            l2Block=194,447,153 l2BlockHash=1337a2..27d988
INFO [03-26|15:36:51.978] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=958 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:51.978] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:52.966] created block                            l2Block=194,447,158 l2BlockHash=1e53c0..98604b
INFO [03-26|15:36:52.987] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=967 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:52.987] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:53.966] created block                            l2Block=194,447,160 l2BlockHash=0ea965..1fb963
INFO [03-26|15:36:54.000] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=976 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:54.000] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-26|15:36:54.967] created block                            l2Block=194,447,166 l2BlockHash=adf619..9c831e
INFO [03-26|15:36:55.011] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=985 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x4180bd0d29fec25dcb56a7dc36871504d70293e1bedb2c3b04ad0d11244bad89\", \"0x79\"]"
WARN [03-26|15:36:55.011] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"

Versions (Add all that apply)

  • Software version: 24.3.0
  • Java version: java 20.0.2
  • OS Name & Version: Ubuntu 22.04.1 LTS
  • Consensus Client & Version if using Proof of Stake: Teku

dandavid3000 avatar Mar 26 '24 15:03 dandavid3000

The v field is deprecated, and optional, for modern TXes in the RPC. A strong argument can be made this is a bug to ARbitrum as they don't support the current spec.

Type 1 / Access List / EIP-2930 TXes - https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml#L293-L296 Type 2 / fee market / EIP-1559 TXes - https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml#L268-L271

Type 3 / blob / EIP-4844 TXes don't even have the field in the API spec https://github.com/ethereum/execution-apis/blob/main/src/schemas/transaction.yaml#L237-L252

Working it in #6819 - but I need to get at least one test in before merging.

shemnon avatar Mar 26 '24 17:03 shemnon

@ebadiere @dandavid3000 can you try a dev build and see if the patch works?

shemnon avatar Mar 28 '24 14:03 shemnon

@shemnon Sure, can you point me to the latest dev build?

ebadiere avatar Mar 28 '24 14:03 ebadiere

https://github.com/hyperledger/besu/releases/tag/develop

shemnon avatar Mar 28 '24 14:03 shemnon

Docker containers would be much easier for me to test. The tar files will be a bit more time-consuming for me, so if someone else wants to confirm it that would be great. Also, I originally reported that "transactions are being submitted so far", but now my arbitrum node as stopped syncing L2Blocks, with the following in the log:

WARN [03-29|21:25:46.166] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-29|21:25:47.225] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=7026 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x583f20cae0f372327282fa351e1251a7d71b90a8b09a0fe71935440af6866b52\", \"0x75\"]"
WARN [03-29|21:25:47.225] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"
INFO [03-29|21:25:47.362] shutting down because of sigint
INFO [03-29|21:25:47.362] HTTP server stopped                      endpoint=[::]:8547
INFO [03-29|21:25:47.362] HTTP server stopped                      endpoint=[::]:8548
INFO [03-29|21:25:47.362] delayed sequencer: context done          err="context canceled"
INFO [03-29|21:25:47.363] Waiting background transaction indexer to exit
INFO [03-29|21:25:47.378] Writing cached state to disk             block=193,592,630 hash=f7d39e..5da887 root=36c8e2..60d884
INFO [03-29|21:25:47.413] Persisted trie from memory database      nodes=14214 size=4.75MiB time=35.277469ms gcnodes=3489 gcsize=1.38MiB gctime=8.566473ms livenodes=23482 livesize=9.10MiB
INFO [03-29|21:25:47.413] Writing cached state to disk             block=193,592,629 hash=a97686..43d0a7 root=7f6e31..e124cf
INFO [03-29|21:25:47.414] Persisted trie from memory database      nodes=189   size=75.19KiB time="912.887µs" gcnodes=0    gcsize=0.00B   gctime=0s         livenodes=23293 livesize=9.03MiB
INFO [03-29|21:25:47.414] Writing cached state to disk             block=193,592,503 hash=d94630..db5ed0 root=f46136..330bd1
INFO [03-29|21:25:47.423] Persisted trie from memory database      nodes=1893  size=713.91KiB time=8.752817ms  gcnodes=0    gcsize=0.00B   gctime=0s         livenodes=21400 livesize=8.33MiB
INFO [03-29|21:25:47.423] Writing cached state to disk             block=193,592,503 hash=d94630..db5ed0 root=f46136..330bd1
INFO [03-29|21:25:47.423] Persisted trie from memory database      nodes=0     size=0.00B     time="1.44µs"    gcnodes=0    gcsize=0.00B   gctime=0s         livenodes=21400 livesize=8.33MiB
INFO [03-29|21:25:47.423] Writing snapshot state to disk           root=f8707d..e937dd
INFO [03-29|21:25:47.423] Persisted trie from memory database      nodes=0     size=0.00B     time="1.03µs"    gcnodes=0    gcsize=0.00B   gctime=0s         livenodes=21400 livesize=8.33MiB
INFO [03-29|21:25:47.457] Blockchain stopped

It could not get passed l2Block: 193,592,630 It seems to be related to me. Can anyone confirm this? Do we expect this fix to resolved in this fix?

ebadiere avatar Mar 31 '24 01:03 ebadiere

I don't think we do dev docker distributions anymore, but @jflo may know better.

From a local repo the command ./gradlew distDocker generates local docker images. Distributing that across non-build machines is left as an exercise for the operator.

shemnon avatar Mar 31 '24 01:03 shemnon

On the Arbitrum side, we use the go-ethereum ethclient library to access the parent chain RPC. It seems like we hadn't pulled in https://github.com/ethereum/go-ethereum/pull/28564 . We'll aim to fix that in an upcoming release. Thanks for the report!

PlasmaPower avatar Apr 01 '24 21:04 PlasmaPower

I was checking the changed files in the new release https://github.com/hyperledger/besu/releases/tag/24.3.3 but I couldn't see your changes. Am I missing something or does this version not include the solution? @shemnon

aytunc-tunay avatar Apr 11 '24 09:04 aytunc-tunay

I am using 24.3.3 and I am still seeing the same behavior. Am I using the wrong version?

INFO [04-21|23:33:32.612] rpc response                             method=eth_getTransactionByBlockHashAndIndex logId=1,449,012 err="missing required field 'v' in transaction" result={}       attempt=0 args="[\"0x583f20cae0f372327282fa351e1251a7d71b90a8b09a0fe71935440af6866b52\", \"0x75\"]"
WARN [04-21|23:33:32.612] error reading inbox                      err="failed to fetch batch mentioned by batch posting report: missing required field 'v' in transaction"

ebadiere avatar Apr 21 '24 23:04 ebadiere

The fix did no make it into 24.3.3, that was a cherry pick release and this one didn't make the cherry pick list.

If the next release is a cherry pick I will endeveor to get this on the cherry pick list.

shemnon avatar Apr 22 '24 04:04 shemnon