跳转至

Implementations

The following table lists current EIP-7916 / EIP-7495 / EIP-8016 implementation efforts. Note that implementations are not complete, and specifications may still change.

Language Library Implementer Progress
C# Nethermind open
Go dynssz @pk910 M4 (tested through M2)
Go Erigon (1 2 3) @DarkLord017
Go FastSSZ open
Go karalabe/ssz open
Go methodical-ssz open
Java Teku open
Nim nim-ssz-serialization @etan-status M4
Python remerkleable @etan-status M4
Rust ethereum_ssz @18aaddy
Rust Grandine open
TypeScript ChainSafe @wemeetagain
TypeScript micro-eth-signer open
Zig ssz.zig open

Specs

Tests

M1 - ProgressiveList

EIP-7916 introduces ProgressiveList[type] and ProgressiveBitlist. The bitlist can be deferred, as EIP-7745 only requires ProgressiveList[type] for bytes.

Tests

M2 - ProgressiveBitlist

Complete implementation of EIP-7916, including ProgressiveBitlist. The bitlist follows a similar Merkle tree shape as the regular list, but uses a slightly different encoding and code path.

Tests

M3 - ProgressiveContainer

EIP-7495 introduces ProgressiveContainer, which is relevant for EIP-6404 transaction and receipts EIPs.

Tests

M4 - CompatibleUnion

EIP-8016 introduces CompatibleUnion, the final piece to implement all EIP-7919 Pureth components.

Tests

M5 - Optimizations

Optimized overloads of the data structures may be necessary, e.g., with additional caches. While not strictly required for the initial implementation, they should still eventually be implemented. As optimizations are implementation specific, there are no formal completion criteria.