on May 8, 2024
by Armagan Ercan
in Core-devs-call
Greetings everyone, and welcome to the weekly Gnosis Core Devs Call. Just a quick reminder that this meeting takes place every Wednesday.
Participants: Erigon, Gateway, Nethermind, Geth, Gnosis DevOps, Gnosis Core Devs, Gnosis DevRels, Gnosis Comms team and the contributors.
The main topic of discussion during the meeting was the withdrawals contract. The team is currently making preparations for the forthcoming Shapella upgrade. Furthermore, updates were given on Devnet, the Client team, Chain infrastructure, and POSDAO.
Watch on Gnosis Chain YouTube channel
Topics
Withdrawals Contract
Shapella Upgrade
Core Dev Team updates
Client Team Update
Chain Infrastructure Updates
Devnet
POSDAO
Withdrawals contract
Should be finalized
Being audited by Adam
If the transfers can’t occur (insolvency case), they will be queued and cleared when new GNO is supplied
Dapplion is asking for help from Nethermind to pick a safe value of the number of failed transactions to execute per block
Might be useful to test on mainnet because on devnets the entire state can be cached
Ruben suggests a default of 16 for both, so 32 in the worst case scenario
If we have one day worth of failed amounts, then clearing the queue would take a day as well
In any case, this would be an unlikely scenario
Would require a massive exit
Lukasz: is there an estimation of gas usage for those transactions?
Dapplion: we don’t have those numbers but we should compute them
Based on this, we could choose a number for the failed transactions per block
Dapplion: will ask Ihor to get some numbers
Need to assign tokens to Deposit Contract
Should have some 0x01 addresses
Method 1: Jorge’s “Merge” method of just overwriting storage slots
Nethermind and Erigon have support for storage allocations
Makes it possible to give tokens to users in contracts
Method 2: Assign code as constructor bytecode (?)
Devnet
Are there blockers?
Actual withdrawals contract (currently using mocks)
Can we start spinning one up?
Status
Nethermind
Started an internal devnet using a mock contract a few days ago
So far, everything seems to be good
Starts with AuRa blocks, then Merges (Bellatrix) and then enables Withdrawals
Info
Lighthouse might not be compatible with TTD = 0
Devnet is simple to set up because it’s mostly automated
Current state
A dozen of validators
Went through Shanghai without any issues
Withdrawals have not been tested yet
Figuring BLS addresses out
The nodes are public, so an RPC can be shared
Erigon can also join this devnet, but the mock contract is still used, so that needs to be configured
Erigon
Not implemented yet
Can be done this week
General
We can spin up a devnet with both clients end of next week (March 2nd)
Gnosis DevOps
Will run Nethermind first?
Client team updates
Execution Layer
Nethermind
Running devnet for withdrawals
Issues regarding 1.17
Attestations down
We’ll investigate and contact Nethermind on Telegram
Erigon
Chiado now works
Linked to dead peers on Nethermind
Enabled snapshots
Light client works for Gnosis and Chiado
DevOps is working on spinning up more Nimbus peers
Guillaume
Trying to run latest Prysm on mainnet
Will be working on geth sync for the rest of the month
Consensus Layer
Prysm
Will be working on geth sync for the rest of the month
How to configure the Gnosis preset?
`--chain-config-file=/configs/mainnet/config.yaml` refers to `PRESET_BASE: gnosis`
Nimbus
Publishing on Gnosis repo
https://github.com/gnosischain/gnosis-nimbus-eth2
Chain Infra
Gateway
Half of the traffic on Chiado
25% traffic on mainnet
Everything’s good and planning to increase traffic
Gnosis Bridge Validator
1-of-7
Work can be slow during EthDenver
Beaconchain
Not ready till T+1 after Ethereum Shanghai/Capella
For the 0x00 -> 0x01 address conversion
Timeline
When is a realistic time for Withdrawals?
Need to prep community
We should not overpromise
DevNet
We should not overpromise
Next steps (can be done without Erigon)
Deploy a new one with the actual smart contract
With upgrade from mainnet bytecode if possible, but not essential
Can be put in the genesis bytecode
The contract should be pre-funded to simulate the current state on mainnet
Would be great to test the insolvency case
Test the deposit contract update
Start with the bytecode of the current deposit contract
Go through the upgrade
Can probably be done this week
Shadow forks
Chiado
Deposit contract for Genesis
Start testing tooling
Dappnode
Withdrawal credentials in general
Mainnet
Deposit contract needs to be updated
Requires testing
On devnet
On chiado
Emulate it as close to mainnet as possible
Additional Workstreams
Mainnet
Shutterized Beacon Chain
Account Abstraction
Tests
Hive
Dapplion: Should be the option in the long term
Marek agrees because Ethereum also supports Hive tests
However, the initial effort will be more important as we have nothing yetPOSDAO
Currently: Truffle test suites
Really annoying to work with
Still-relevant
Deprecated, but still necessary for nodes being synced from Genesis:
Pre-merge testing of POSDAO - rotation of validator set, voting etc
Test that we can still go thru the Merge without going thru forks or nodes getting start
Still relevant:
xDai Block Rewards
Has prevented really bad problems from happening
Syncing from Genesis
None of them are being worked on
Would anyone have capacity to do either?
Nethermind: Hive tests are written in Go
Nethermind has devs, but not sure anyone is available
Erigon: Andrew will ask around, but probably no capacity
Would be great to have long term ownership of Gnosis tests
Especially for shutterized beacon chain etc in the future
We wouldn’t need a suite as extensive as Ethereum’s for now
The withdrawal tests are relatively succinct
Miscellaneous
The xDai team did an attempt at implementing withdrawals
https://hackmd.io/@k1rill-fedoseev/SkS0ua5mq#Capella
They had a way to pause withdrawals
Sounds really bad, we don’t want to be able to stop the networkThere will be no trace (logs) of withdrawals on explorers
We need to work with explorers to display them
Ideally they add a new tab, similar to “internal” / “ERC-20” for withdrawals
We can probably piggy-back from the mainnet implementation
Caveat: insolvency case, might require some specific logic
Beaconcha.in
Gnosisscan
Blockscout
Lukasz: should withdrawals be shown in traces somewhere?
Lukasz: mixed feelings
We should maybe ask block explorers / users what they want?
Dapplion: let’s keep it simple
More articles