Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Besu RPC service consistency against other client implementations #1 #4233

Closed
JosephK95 opened this issue Aug 9, 2022 · 4 comments
Closed
Assignees
Labels
RPC TeamRevenant GH issues worked on by Revenant Team

Comments

@JosephK95
Copy link

JosephK95 commented Aug 9, 2022

(Updated 22.08.11.)

Sorry, I moved the remaining parts of this report to the following link: ethereum/execution-apis#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)

  1. 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
  2. Untar the downloaded .tar.gz files. They contain valid chain data and test cases that are semi-automatically generated by our project techniques.
  3. Check out CHAIN_DIR and TC_FILE for your Q{n} from the description below.
  4. 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
  5. 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
@daniellehrner
Copy link
Contributor

daniellehrner commented Aug 9, 2022

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.

@JosephK95
Copy link
Author

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.

@macfarla
Copy link
Contributor

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?

@macfarla
Copy link
Contributor

Created #4987 for the remaining getUncle difference.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
RPC TeamRevenant GH issues worked on by Revenant Team
Projects
None yet
Development

No branches or pull requests

6 participants