besu
besu copied to clipboard
Besu RPC service consistency against other client implementations #1
(Updated 22.08.11.)
Sorry, I moved the remaining parts of this report to the following link: https://github.com/ethereum/execution-apis/issues/286 Please check for the edit history to see my original report.
Description
Hi all,
I am working on a project that validates whether Besu behaves consistently to other Ethereum client implementations against RPC requests. (I will refer to the implementations as node A, B and C here.)
I would appreciate it if you can clarify whether the following results are intentional or require patches.
Thank you so much in advance and please let me know if there is anything necessary.
Q1. getPendingTransactions support
- (Besu) returns an error: "Method not found"
- (Node A,C) returns
[]
Steps to Reproduce (Bug)
- Please download all the .tar.gz files below. https://drive.google.com/file/d/1ufiZH8hjJrr5Wn-Nif4KSN8QgxOGHi1H/view?usp=sharing https://drive.google.com/file/d/16QkzKvit4gTEg-HInt8gJmyyOpdm6Dke/view?usp=sharing test_cases.tar.gz
- Untar the downloaded .tar.gz files. They contain valid chain data and test cases that are semi-automatically generated by our project techniques.
- Check out CHAIN_DIR and TC_FILE for your Q{n} from the description below.
- Execute Besu binary with the following flags:
besu --data-path CHAIN_DIR/data-besu --genesis-file CHAIN_DIR/besu.json --rpc-http-port 8549 --rpc-http-enabled --rpc-http-api ETH --network-id 15 --discovery-enabled false - Execute the test case file:
node TC_FILE
- Q1. chain-1 / TC_1659703707.js
Versions (Add all that apply)
- Software version: besu/v22.4.4/linux-x86_64/openjdk-java-16
- OS Name & Version: Ubuntu 20.04.4 LTS
- Node.js / web3.js Versions: v16.15.0 / v1.7.3
Hi @JosephK95 Ethereum does not have a strict RPC specification. So differences between clients can be expected. There is an ongoing effort to standardize RPC calls, but no official specification came out of it yet.
The closest thing to a spec can be found here: https://ethereum.github.io/execution-apis/api-documentation/
As all the examples, except for getPendingTransactions, are error handling. I think it does not make sense to change them until we have an official spec. I hope you understand.
Hi, @daniellehrner.
Yes, I agree that the implementations can behave differently.
So I just wanted to know whether all the results above were intended by Besu developers or some of them can be considered to be patched. (as Besu returns errors in some other cases such as getFeeHistory and getProof)
Thanks.
Hi @JosephK95 I'm taking a look at this - agree with @daniellehrner the spec is a little vague - and at the same time consistency is generally good. Further analysis including actual error messages, and with differences highlighted - https://docs.google.com/spreadsheets/d/1w1xauhHt8T17jBNwyVvaLs8isM0L7sPrYteoyjzq75w/edit#gid=0
@JosephK95 in your analysis you mention getProof and getFeeHistory but there are no test files for those?
Created #4987 for the remaining getUncle difference.