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

Merge Interop Milestone Tracking #2830

Closed
6 tasks done
garyschulte opened this issue Oct 1, 2021 · 2 comments
Closed
6 tasks done

Merge Interop Milestone Tracking #2830

garyschulte opened this issue Oct 1, 2021 · 2 comments
Assignees

Comments

@garyschulte
Copy link
Contributor

garyschulte commented Oct 1, 2021

Tracking issue for Merge Interop Milestones

Milestones

  • M0: Implementation started
  • M1: Upgrade to latest spec - Implement Latest Merge Interop Spec Changes #2831
  • M2: 1-to-1 Interop (no transition) – One EL and one CL team pair off for basic interop
  • M3: 1-to-1 Interop (with transition) – One EL and one CL team pair off for full interop testing
  • M4: Many-to-Many Interop – 2 or more EL and CL teams perform interop testing
  • M5: All-to-All persistent devnet – All ready EL and CL teams create a long-lived devnet

Building and Running Besu in Interop Mode

  • clone/fetch the latest merge branch
  • merge consensus is gated by a flag --Xmerge-support=true
  • Besu will run/transition from whatever consensus mechanism is defined in the genesis config file at the specified terminalTotalDifficulty
  • to start besu in interop mining mode from the checked-out repo, e.g.:
git clone --recursive https://github.com/hyperledger/besu
git checkout merge
./gradlew --parallel installDist && build/install/besu/bin/besu --config-file=besu-config.toml

besu-config.toml

genesis-file="genesis.json"
data-path="besu-data"
network-id=7882
rpc-http-enabled=true
rpc-http-api=["ADMIN","ETH","NET","DEBUG","TXPOOL","EXECUTION"]
host-allowlist=["*"]
rpc-http-cors-origins=["*"]
rpc-http-port=8550
Xmerge-support=true
logging="DEBUG"
  • if using clique, there is no need to specify --miner-enabled
  • genesis config files require a consensus engine block. Unlike geth besu does not default to ethash if there is no explicit consensus mechanism. The hacknet genesis files typically require the addition of ethash{} to config block.
@garyschulte garyschulte self-assigned this Oct 1, 2021
@paulhauner
Copy link

Hi there 👋 I'm working on Besu interop with Lighthouse and I came across the following error:

2021-10-04 11:25:31.121+11:00 | vert.x-worker-thread-0 | INFO  | ExecutionEngineJsonRpcMethod | consensus JSON-RPC request engine_forkchoiceUpdated
2021-10-04 11:25:31.123+11:00 | vert.x-eventloop-thread-4 | ERROR | ExecutionEngineJsonRpcMethod | failed to exec consensus method engine_forkchoiceUpdated
java.util.NoSuchElementException: No value present
	at java.base/java.util.Optional.orElseThrow(Optional.java:377)
	at org.hyperledger.besu.consensus.merge.MergeBlockProcessor$CandidateBlock.updateForkChoice(MergeBlockProcessor.java:166)
	at org.hyperledger.besu.consensus.merge.PostMergeContext.updateForkChoice(PostMergeContext.java:109)
	at org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.engine.EngineForkchoiceUpdated.syncResponse(EngineForkchoiceUpdated.java:43)
	at org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.ExecutionEngineJsonRpcMethod.lambda$response$0(ExecutionEngineJsonRpcMethod.java:66)
	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:313)
	at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:831)

This error was raised when Lighthouse sent a forkchoice update with the finalized block hash as 0x00..00:

Oct 04 11:25:31.119 INFO Issuing engine_forkchoiceUpdated        head_block_hash: 0x8ce8e58b1fa79c11850b60106dc77a680867cac09109e969eaf7a491ac7681d8, finalized_block_hash: 0x0000000000000000000000000000000000000000000000000000000000000000, service: exec

I had a seemingly similar issue with Geth where they couldn't process the 0x00..00 finalized block hash. Perhaps that is the issue here too?

@garyschulte
Copy link
Contributor Author

I had a seemingly similar issue with Geth where they couldn't process the 0x00..00 finalized block hash. Perhaps that is the issue here too?

Sorry for the slow reply. Yes, that was it exactly, and we are playing nicely now 👍

@sajz sajz closed this as completed Oct 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants