description: Notes from the regular Eth2 implementers call
# Eth2 Implementers’ Call #39 - 2020-05-14
[Quick contemporaneous notes by Ben Edgington]
Livestream: not available due to technical issues. **Update**: [Recording](https://youtu.be/7uZtEy0nNbw) is now available.
## Testing and Release updates
Focus is on v0.12. Last thing to do is to include the updated BLS draft 07. There are some networking updates arising from last week's call. Also improved testing around some corner cases in state transitions.
Beacon fuzz. [Blog post](https://blog.sigmaprime.io/beacon-fuzz-04.html) last week gives the latest. Progress on structural fuzzing: can deal with custom types. Identified integer underflow in snappy. Working with Teku and Nimbus; found some issues: infinite loop in Teku, segfault in Nimbus. Now up to 18 unique bugs in trophy list. Progress on Go integration. Proposing a new architecture for beacon fuzz, see the [blog post](https://blog.sigmaprime.io/beacon-fuzz-04.html) for details. Plan to push Docker images so that the community can try finding bugs. Finally, have started looking at Lodestar. [Mamy] There was a discussion about some beaconstate that can't be trusted - what's the latest? [Mehdi] This is one of the reasons for splitting up the beacon fuzz architecture: to avoid confusion over this, and not rely on the assumption that beaconstate is trusted input. [Danny] Two ways to sync network after it's been running for a few weeks (longer than weak subjectivity period): (1) have a checkpoint, sync from genesis and make sure you hit the checkpoint; (2) Start from a trusted state, which is better UX, but there is a risk the state is tainted.
## Client updates
Added Snappy compression, Ping and getMetadata. Improved memory usage while syncing. Support for Schlesi network.
Syncing on Schlesi. Haven't reached head, but making progress. Discv5 seems to be not running.
Multiple fixes to sync, including Snappy. Single "make schlesi" target. Sync is working, slowly but stably. Now working on performance, especially on Windows. Fixing memory leaks: some from libp2p, some from block caching. Focus on bug fixing.
Mainly porting to async framework, updates to APIs, bringing in some more full time contributors.
Testing sync with Mothra - not much progress in the last few weeks.
Topaz maintenance and bug fixes from user reports. Fully aligned with v0.11.2. Working on v0.12. 100 blocks/s syncing, but without signature verification on attestations (?). Slashing detector is working.
Lots of testing framework stuff: Now starting inactivity finality test, running these with 1s slot time. Seeing 85% aprticipation rather than 99% due to timeouts at this speed.
Implementing hierarchical key derivation for BLS. Kicking off security review with Trail of Bits on Monday. Been running several 16k validator testnets. Have seen two panics. Big improvements to memory usage: 300MB for beacon node plus 2k validators (on 16k validator testnet). Removed parallelisation from state transition to avoid bugs. Default config for Lighthouse is now Schlesi. Moved discv5 into standalone repo. Updated everything to stable futures, and updated all dependencies ahead of security review. RPC error handling improvements.
[Afri] First attempt at testnet failed due to issue with timestamps around genesis. This was swiftly fixed, and Schlesi was launched with Prysm and Lighthouse. Initially poor performance, but improved rapidly. Finality is now almost perfect for the last week. Teku joined a week ago: both syncing and validating. Nimbus client is also progressing with synchronising. Lodestar managed to connect and sync some blocks.
Given the current stability, will start working on coordinating a multiclient testnet for v0.12, with 16k genesis validators, and maybe 3 different clients at genesis. Could do dry-run deposit contract ceremony. Target June for this, potentially to allow clients to update to v0.12.
[Proto] Experimenting getting Lodestar and Nimbus syncing to Schlesi. Lodestar has synced ~10%, and Numbus is close to head. Added support for Eth2Stats.
[Danny] Will put up a diff for v0.12 so we can get a sense of how long it will take to upgrade. Coordinated start in June makes sense, with some test runs ahead of this.
## Research Updates
Released [Eth1x64 write up](https://ethresear.ch/t/the-eth1x64-experiment/7195) plus a repo under Ewasm org on GitHub. This uses receipts for transfer between shards. Simple examples are two kinds of tokens. E.g. having DAI on all shards. Looking at new variants: (1) Look further into contract yanking. "Rich transactions" suggest a better version of yanking. (2) Eth transfer object. Goal of Eth1x64 is to have a smaller scale for discussion and to engage with Dapp developers. Hence Solidity examples. In long term may not make sense to keep the EVM. If we want to make radical changes in future, might as well change to Wasm.
Ewasm benchmarking. Have been looking at some new engines, including releasing one.
As part of benchmarking have been looking at Eth1 precompiles. With Wasm, we would not want to keep the precompiles. Previously have got good results with the elliptic curve precompiles (BN128), but required Big Integer host functions. Have now been looking at BLS12. Able to achieve near native speed using an interpreter, which is promising. For pairing, native Rust ~5ms, initial Wasm ~500ms, but Wasm-Snark has managed to achieve ~14ms, and ~8ms may be possible. This is close to native speed. Want to see if these findings can be replicated on the EVM: EVM384 project. Add 3 EVM opcodes for basic 384-bit operations. Synthetic benchmark achieves close to Wasm numbers. In this case, we may not need the BLS12 precompiles planned for the EVM.
Looking into homomorphic encryption for private information retrieval. Published a post requesting help from cryptographers to solve polynomial commitment problems.
Looking into Ph1 simplifications on the proof-of-custody side. Dankrad has a new [Ethresearch post](https://ethresear.ch/t/a-0-001-bit-proof-of-custody/7409) on this, and Vitalik will have a followup. Both of these significantly reduce the complexity.
Ethresearch post on Eth1--Eth2 merge last week. Working on a draft Eth1--Eth2 communication protocol and PoC for Phase 1.
Network monitor. Found that Lighthouse is sunding unsolicited UDP packets.
Forkchoice tests: have built a transpiler for tests, and found a bug in Teku.
Transpiler for Python spec. Have found 3 bugs in Ph1 spec.
Have implemented Gossipsub 1.1 on JVM libp2p.
PR in the works for Eth1--Eth2 RPC implementation. Skeleton is there.
There was a [dedicated call](https://hackmd.io/@benjaminion/rJkuZ4e5I) last week.
[Felix] Still working on spec updates to discv5. Improving performance, and resolving an error message. To be published soon. Would be good to get feedback from implementation teams: discovery upgrades can be complicated on live networks. [Danny] Might be best to wrap this in v0.12 as we will be restarting the nework for that in any case. [Felix] Will take about a week to get the spec done. All minor changes.
## Spec discussion
[Mamy] Question: what is the status of the fork choice tests? Tests read the pyspec and transpile to create the test code. [Danny] Will discuss with Alex Vlasov and see if they can be included in v0.12.
[Hsiao-Wei] Please check this [BLS phase 1 PR](https://github.com/ethereum/eth2.0-specs/pull/1812) within 24 hours so that tests can be generated.
## Open discussion
* * *
# Chat highlights
From danny to Everyone: 03:03 PM
From Mehdi | Sigma Prime to Everyone: 03:05 PM
From Mamy to Everyone: 03:32 PM
From Hsiao-Wei Wang to Everyone: 03:42 PM
From Joseph Delong to Everyone: 03:46 PM
From Hsiao-Wei Wang to Everyone: 03:53 PM