description: Notes from the regular Eth2 implementers call
# Eth2 Implementers’ Call #34 - 2020-02-27
[Quick contemporaneous notes by Ben Edgington]
## Testing and Release updates
Release is coming including some stuff from the audit (which will be published soon) and some networking items. Expected in the next couple of days.
Alex from TXRX has been working on fork choice tests. Will get them out soon.
Work on basic testing for Phase 1 is in a PR ready to merge.
During EthDenver, Proto worked on networking in Rumor tool: Discv5, compression in place. Some questions about Snappy compression configuration, suggest discussing on next week's networking call.
Beacon fuzz. Recent blog post gives main update. Found interesting bug in Nimbus around invalid deposit proof. Most block processing functions done. Prysm successfully integrated. There is an issue with using multiple Go libraries. Improved tooling and build. Next steps: include state transitions, Java client integration, v0.10 version update.
## Client updates
Looking towards multi-client testnets within the next month.
Progress on sync. Connected to Prysm's Sapphire network. Working on performance and reliability issues. Working on deposit processing, pre- and post-genesis. Discv5 integration, discovers nodes from Lighthouse. REST API progress. Working on encrypted keystore, and stand-alone signing service.
Bottlenecks: storage and disk space. Haven't yet optimised. Looking at trie backed storage, or snapshot based. Proto: Lighthouse has been looking into this. Registry is the biggest user. Field trie storage is too detailed. Store in flat manager; load into state and convert into trie, and then use diffs. Discuss offline.
Eth1 data management, question. How to process deposits efficiently via event logs? Big load on Eth1 node to poll every block, so how to trigger Genesis block if the Eth1 block has no deposits? (We are only aware of blocks with deposit events - this is to reduce load on the Eth1 client.) Danny: suggestion contact Paul H offline.
[Sorry - missed it!]
Targetting v0.10.1. Taking more care around skipped tests in reference tests. BLS sigs implementation ready - waiting for test vector fixes (they are fixed in the tar.gz file, but not in the test code). WIP on aggregation and fork choice. For fork choice, implementing both the spec version as-is and proto-array.
Networking. New code for peer lifetime. Focus on discovery. Some issues on Windows, maybe NAT traversal. Good progress on Noise protocol, want to do interop testing.
Speed: lightweight stack traces doubles performance of runtime and compilation.
Devops: Fixed testnet deployment. Infrastructure to detect finalisation issues.
Bottleneck is discovery without boot nodes. Also log volume. Currently 80MB/hour. High debug level is used to help debugging. Currently rotate logs every 4 hours to handle this.
Q. NAT traversal - using mini uPNP
Carl: On BLS - there is a [PR to the BLS hash to curve spec](https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/pull/212) to update hash-to-base to hash-to-field. Should be relatively minor, and should be final change. The BLS signature spec is stable, but test vectors need adding.
Working on slasher service. Were able to detect surround vote and submit it.
Better state management service. Motivated by Lighthouse design. Mostly done, just optimising.
Dynamic attestation subnet subscription. Concurrent block syncing. Reduce memory footprint...
Bottleneck: currently subscribe to all subnets, so end up with large numbers of unaggregated signatures to verify. Takes ~30% runtime.
Q. State caching: FRU cache, that is usually hit.
Libp2p (Mothra) integrated, and can gossip blocks locally. No attestations yet, and v0.9.1 of spec. Plan to update to v0.10.1.
Two new devs on board! Put up 4k validator testnet for EthDenver. Running smoothly without maintenance. Implemented Merkle tree based storage: some performance gains, some losses, so evaluating its use. Sorted out heap allocation, and reduced memory footprint by 50%. 100k validator network => 2-4GB beacon node footprint. Also achieved 30% speedup in block processing. BLS - can now choose between Milagro and Herumi.
Interoperability is becoming main focus. LH 0.2.0 will be "feature complete for Mainnet" launch. Once merged into master, will attempt interop with everybody. Planning a long-lived multiclient testnet: v0.10.1 expected.
Kicked off UI client front-end project.
Q: memory scales with number of validators using the node's RPC API. Still tracking down cause of this.
Q: finding attestation subnets. Know an epoch in advance which subnet is required for a validator. Initial plan is to use Discv5 to find peers. If this doesn't work, will just crawl the DHT for matching ENRs. Q: if there is a reorg, validator client will resend its subscription and the beacon node will update its duties. Could pre-walk the DHT and cache the data (random subscriptions in ENR should last around a day).
Happy to try Noise interop with Nimbus.
Upgraded BLS to v0.10.1 (based on Herumi compiled to WASM). Everything else remains on 0.9. PR open for Snappy compression. Picking up Discv5 work.
Merged in new SSZ implementation: basic gave 10-100x speedup in state transition. Adding memoization gave a further 10-100x speedup.
Fixing up state management storage. Checkpoint historical states, and store more recent states in memory, sharing data between them.
## Research Updates
Created an execution environment (EE) at EthDenver. Working with Quilt on Ease development environment for EEs. Two writeups pending: (1) Mikhail on Eth1 <-> Eth2 bridge and finality gadget; (2) Discv5 from Alex.
Eth222 workshop went well.
Has put together a draft Phase 2 spec.
Were at SBC - many productive discussions. Published EthResear.ch post on vision for Phase 2. No real blockers remain, but still a huge design space. Looking at minimal implementation, as per the spec above. Shifting focus to implementation of this spec.
Looking into dynamic vs. static state access. Will probably go with static for Phase 2; looking to see whether popular Eth1 projects would be compatible with this approach. Solidity taint analysis tool PoC done.
New release of the Ease tool for EE development.
Carl: DSA vs SSA distinction is interesting, and definitely simplifies things. Encourage everyone to keep up to date on this and check that the impact will not be too severe on app developers.
Call next Wednesday (4th March).
Jacek pushed a PR for segregating attestation broadcast topics by fork version. Pls take a look.
## Spec discussion
## Closing comments
EthCC get together possible on Friday March 6th. DM Hsiao-Wei or reply on Discord if interested. There is an EthCC channel in the Discord.
EthLondon this weekend.
Next call in two weeks.
* * *
# Chat highlights
From danny to Everyone: 02:03 PM
From Adrian Manning to Everyone: 02:10 PM
: beacon fuzz update: https://blog.sigmaprime.io/beacon-fuzz-02.html
From Meredith Baxter to Everyone: 02:17 PM
From Me to Everyone: 02:18 PM
From Carl Beekhuizen to Everyone: 02:19 PM
: Thanks Meredith! (That’s my EIP 😂.) In particular I am interested in the signing interface and designing it in a way that is friendly to HSMs.
From Carl Beekhuizen to Everyone: 02:27 PM
From Joseph Delong to Everyone: 02:58 PM