Open
Description
Description
I tried to run dshackle in front of a geth execution client for the etherum testnet merge-devnet-2
with the following config:
version: v1
port: 2449
tls:
enabled: false
proxy:
host: 0.0.0.0
port: 2450
routes:
- id: eth
blockchain: ethereum
cluster:
defaults:
- chains:
- ethereum
upstreams:
- id: geth
chain: ethereum
connection:
ethereum:
rpc:
url: "http://localhost:8550"
Dshackle fails to update its height
as shown by the logs:
2021-03-12 20:10:35.650 | INFO | Multistream | State of ETH: height=21611, status=[UNAVAILABLE/1], lag=[0], weak=[geth]
2021-03-12 20:10:50.641 | INFO | Multistream | State of ETH: height=21611, status=[OK/1], lag=[0], weak=[]
2021-03-12 20:11:05.642 | INFO | Multistream | State of ETH: height=21611, status=[OK/1], lag=[0], weak=[]
2021-03-12 20:11:35.642 | INFO | Multistream | State of ETH: height=21611, status=[OK/1], lag=[0], weak=[]
2021-03-12 20:12:05.642 | INFO | Multistream | State of ETH: height=21611, status=[OK/1], lag=[0], weak=[]
Dshackle seems to find a height
during the startup process and never updates it even though the chain progresses.
So when i request for the eth_getBlockByNumber latest
block, i always get the one shown in the logs as height
. However, manually requesting for a newer block works fine.
However this behaviour isn't seen on mainnet, i aimed my Dshackle towards a mainnet node and it updates/works fine.
This leads me to believe its an issue with the change in behaviour introduced by the merge testnets.
How to reproduce:
- Sync a merge devnet Execution client(eth1)+Consensus client(eth2) pair(both are needed for the merge testnet): instructions
- Configure Dshackle to the Execution client RPC port
- Test the call
eth_getBlockByNumber
withlatest
, multiple times with some gap in between
Potential theories:
- It seems like Dshackle has some logic around Total difficulty to check if a block is to be updated, merge testnets after "the merge" will have the same difficulty throughout - meaning Dshackle might not update its understanding of the latest block
- ??
Other debug steps I tried:
- I ran a json rpc snooper to capture all req/responses and compared them between the merge and mainnet nodes. The JSON bodies are unchanged. Dshackle does seem to be calling
eth_blockNumber
and receiving a later block than shown byheight
, it is also using this new block in the subsequenteth_getBlockByNumber
call - however it doesn't seem to be updating its view afterwards.
Note:
- The merge-devnets are re-launched every week, I'd be happy to point to newer instructions/configs or even keep this one around.
- I'm unsure if the maintainers are aware of the merge changes, I'd be happy to answer questions/forward to more knowledgeable people if needed.
- Thank you so much for looking at my issue :)
Metadata
Metadata
Assignees
Labels
No labels