# Portal Network Implementers Call Notes
## May 19th, 2025 - Call #56
### 1. Team update
- Update by [Piper](https://github.com/pipermerriam)
- Preparing a co-authored document with [Jason](https://github.com/carver) that outlines Portal’s role in the L1 scaling roadmap
- Inviting teams to review and provide feedback prior to the public release
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Michael](https://github.com/mrferris)
- Internal refactoring
- Added new docker image for trin-execution
- Moved consensus-related constants into ethportal-api
- Added trace offer endpoint which support multiple content keys
- Deployed e2hs bridges for data bridging
- Glados: UTP transfer failures are now visible, aiding network health tracking
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Boot nodes redeployed with some issues to be fixed
- Merged updated SSZ container for HistoricalSummariesStateProof, resolving Hive test failures
- Update on [Nimbus Portal Client](https://github.com/status-im/nimbus-eth1/tree/master/portal) (formerly Fluffy) by [Kim](https://github.com/kdeme)
- Added access from History network to historical summaries
- Updated state bridge for more efficient gossiping
- Fixed a bug in FindContent responses
- Working on rate-limiting to better monitor gossip success rates
- Renaming from "Fluffy" to "Nimbus Portal Client" underway across code and infrastructure
- Dual support ("f" as Fluffy and "n" as Nimbus Portal) for transition phase in ENRs
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Performance improvements via refactoring discv5 to pipeline the reloop and dispatch loop asynchronously
- Fixed memory leak issues and block boundary check error
- Refactored validation logic to reduce redundancy
- Implemented support for retrieving ephemeral header from storage (code currently under review)
- Update on [Samba](https://github.com/meldsun0/samba) by [Derek](https://github.com/Dsorken)
- Implemented the protocol versioning incl. accept codes and utp size prefix
- Fixed an issue in history offer logic with large transfers
- Integration with Besu
- Improved logs and added parameter options for running Samba inside Besu
- Made all Portal History JSON-RPC calls available as method calls for Java projects
- Basic Besu node now operational with Samba integration
- Plan to implement the beaconStore endpoint and Capella validation this week
### 2. Discussion topics
#### 2.1 Beacon Spec Update
- [PR](https://github.com/ethereum/portal-network-specs/pull/403) was submitted based on last week’s discussion
- Open for team review before merging
#### 2.2 Ephemeral Header Gossiping Mechanism Discussion
- The problem: Current doc suggests neighborhood gossip for ephemeral headers, but this may
- Restrict propagation to nodes near the content ID
- Risk incomplete network coverage
- Team consensus: Random gossip preferred over neighborhood gossip
- Neighborhood gossip filters peers based on radius related to content ID, which is irrelevant for ephemeral headers
- Random gossip can be adjusted to prioritize peers closer to the sender, but should spread widely to ensure all nodes receive the headers
- Action item
- Submit PR to update the spec to clarify random gossip as the mechanism for ephemeral headers
</br>
## May 12th, 2025 - Call #55
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Milos](https://github.com/morph-dev)
- Implemented support for Pectra types on the Beacon network
- Started adding initial support for Sepolia
- Ongoing work on implementing the bridge that will follow the chain head and generate e2hs files
- Glados: Updated areaGraph for cleaner visualization
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Fixed a bug in HistoricalSummaries storage in beacon_db
- Explored experimental support for providing HistoricalSummaries as an Oracle to the History network (currently in testing, not merged yet)
- Implemented several performance improvements on State network for synchronous data processing
- Removed deprecated neighborhoodGossip logic
- Proposed PR to clarify that HistoricalSummaries must be from finalized beacon state
- Nodes should only respond to HistoricalSummaries requests if they have data for the requested epoch or newer
- Otherwise, nodes should rely with an empty response (pending further clarification in the specs)
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Progress on HistoricalSummaries and updating SSZ types
- Continued implementation of ephemeral headers
- Started implementing typing and distance functions of Head-MPT State Network
- Explored support for Sepolia recognized challenges in supporting multiple networks (mainnet & testnet) simultaneously
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Fixed Hive test failures by addressing missing validation for historical network in findContent, especially for post-Shanghai data
- Addressed a lightclient error due to an JSON-RPC typo
- Split the ephemeral header PR into smaller parts for easier review
- Implemented & merged the storage part
- Remaining features will be implemented in the coming weeks
- Created a new benchmark to compare performance between Trin vs Shisui using the same payload
- Showed that discv5 from Geth implementation has significant overhead and slower compared raw uTP implementation
- The benchmark tests are currently ad hoc, but can potentially be modularized and reused across clients for performance debugging/ validation
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Completed the accumulator functionality
- Ongoing work on protocol versioning and accept code
- Besu integration encountered some blockers (actively being addressed)
### 2. Discussion topics
#### 2.1 LightClientUpdatesByRange Behavior Change Proposal
- Current Spec: If a node is missing any update in a requested epoch range, it must not reply at all
- Proposed Change: Nodes should reply with available updates starting from the earliest in the range, even if incomplete
- Rationale: Syncing nodes benefit from partial progress (getting closer to chain head)
- Impact: Able to avoids scenarios where nodes withhold all updates due to missing only the latest update
- Team Consensus
- No objections; PR to be submitted to formalize the changes
#### 2.2 LightClientOptimisticUpdate Request/ Response Logic Optimization
- Current Spec: Nodes request optimistic updates based on local clock’s current slot
- Proposed Changes
- Request Logic: Nodes should request the first missing slot (not just latest) if behind
- Response Logic: Peers should always reply with their latest optimistic update, even if it's newer than the requested one
- Example: If a peer stores only slot 100 but receives a request for slot 99, it should reply with slot 100
- Key discussion points
- Some clients (eg. Fluffy, Ultralight) store only the latest optimistic update, so replying with older ones isn't feasible
- There's consensus to avoid introducing new content keys to existing data structure unless absolutely necessary to avoid complexity and redundancy
- Team Consensus
- General agreement reached; PR to be submitted to formalize the changes
#### 2.3 Config Standardization for Testnets
- Unified Config Approach
- Proposed a unified YAML config format combining CL, EL, and Portal-specific fields to simplify setup
- Can support presets or custom paths
- Automation & Maintenance
- Generate configs from upstream (CL/EL repo) to minimize manual updates
- Tradeoff between simplified UX vs maintenance overhead
- Possible to automate yaml generation to reduce maintenance burden
</br>
## May 5th, 2025 - Call #54
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Kolby](https://github.com/KolbyML)
- Bug fixes & improvements
- Fixed a bug related to gossiping content to nodes outside their radius
- Replaced hardcoded fork activations with dynamic network config
- Integrated Trin as a library, removing slow HTTP JSON-RPC and redundant tests to improve performance and dev experience
- Enabled HistoricalSummaries for the Beacon Bridge
- Added Deneb header proof type, generation code, and Deneb header validation
- Added Electra types and created header proof using BeaconBlockElectra
- In progress
- PR to add HistoricalSummariesWithProof for Electra
- PR to generate e2hs files
- Glados:Added internal transfer failure chart
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Bug fixes & improvements
- Improved eth_createAccessList to return access lists even when the EVM execution reverts
- Ensured only a single instance of AsyncEvm created and shared across API handlers
- Added architecture docs to the Fluffy guide
- Tested & activiated block proof tests
- Implemented & tested the adjustment of historical_summaries proof for Electra
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Continued implementing discv5 and awaiting upstream changes from Besu in the discv5 library
- Continued implementing history endpoints, eg. historyTraceGetContent, historyRecursiveFindNodes
- Nearly done with accumulator integration
- Working toward release a Samba lib to be integrated into Besu client
- Commit to complete the History network checklist soon
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [acolytec3](https://github.com/acolytec3)
- Focused on implementing ephemeral headers, with progress on validation and purging old offers
- Will work on historical summaries updates after current ephemeral headers implementation
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Grapebaba](https://github.com/GrapeBaBa)
- Converted ExecutionBlockProof from list to vectors
- Added recursiveFindNodes in putContent logic
- Fixed bug in ping extension upgrades
- Working on ephemeral headers implementation
### 2. Discussion topics
#### 2.1 History Network Update
- Most client teams progressing well on implementation; No major blockers
- Link of History Network meta tracking issue: https://github.com/ethereum/portal-network-specs/issues/398
#### 2.2 Running Portal in Kurtosis
- Goal
- Enable Portal Network clients to run inside Kurtosis, for better devnet/ testnet support and integration testing
- Initial target
- Run local, small-scale devnets to experiment with setup, discover limitations, and determine necessary client-side changes
- Topics discussed
- Networking design consideration
- Need for large super-nodes vs many small nodes in testing
- Use of ephemeral devnets with isolated protocol IDs to avoid collisions
- Flagged potential issues with ephemeral headers as client teams are still finalizing their implementation
- Bridgework: Need mechanisms to insert historical data into the devnets for testing purposes
- Protocol ID/ Chain ID: Discussed potentially using chain IDs for Kurtosis devnets, and how to map them to protocol IDs in Portal clients
- Config consideration
- Reuse existing EL/CL configs
- Add Portal-specific settings via standardized spec file (shared across clients) and optional client-specific extensions
- Collaboration
- Kolby (Trin) - Will act as the point of contact from Portal devs
- Kim (Fluffy) - Expressed interest to support Fluffy within Kurtosis
- Barnabas (ethPandaOps) - Will provide Kurtosis integration support
- Other teams/ clients are welcome and encouraged to contribute
- Action items
- Coordinate PRs and communication in ethpandaops [repo](https://github.com/ethpandaops/ethereum-package)
- Create a tracking issue for Kurtosis integration blockers and client-side requirements to support Kurtosis devnet
- Explore minimal devnet setups for initial testing
</br>
## Apr 28th, 2025 - Call #53
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Mike](https://github.com/mrferris)
- Added AcceptCodes to census and bridge metrics for better tracking
- Beacon network is now required when History network is enabled
- Simplified header proof generation code to avoid duplication
- Changed ExecutionBlockProof from list to vector
- PR to enable HistoricalSummaries bridge and prepare for future testnet support
- Glados
- Fixed a broken spec link
- Added protocol version support by client graph
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Added protocol versioning support
- Implemented ephemeral header encoding/ decoding (disabled for now until database update work is complete)
- Implemented offer cache to hold content IDs of recent offers
- Added metrics to count offer accept codes (Grafana dashboard will be updated accordingly)
- Adjusted tests to support HeaderWithProof using SSZ vectors for Capella & Deneb
- Adjust tests for supporting HeaderWithProof updated version with SSZ vector instead of list
- Adjusted generation of test vectors and enabled validation accordingly
- Updated portal-spec-tests test vectors
- Revisited the PR of adding the HistoricalSummariesWithProof endpoint in Nimbus consensus client (expected to be merged soon)
- PR to add HistoricalSummariesWithProof for Electra
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Added ephemeral types support and test vectors
- Improved performance with multi-threading validation, reducing rejection rates from ~66% to <40%
- Continued pushing for integration with Geth but delayed due to recent Pectra upgrade priority
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Continued internal adjustements to integrate Samba with Besu
- Working on completing all discv5 endpoints in the implementation
- Working towards deploying a Besu-Samba integrated instance
- Plan to differentiate client version string for tracking Besu-Samba integrated version and Samba standalone version
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [acolytec3](https://github.com/acolytec3)
- Merged discv5 fixes into ChainSafe implementation (not yet deployed to boot nodes)
- DevOps continued improving boot node stability through VM placement updates
- Plan to update History network container for Deneb headers
- Start to review ephemeral header gossip logic, and prepare to active the already-implemented basic types
### 2. Discussion topics
#### 2.1 History Network Deployment & Monitoring
- Goal
- Finalize History network deployment to unblock State network development
- Primary focus is to get the ephemeral head fully live and deployed
- Action items
- Create a meta-issue (led by Kolby) to track remaining tasks across client teams
- Glados monitoring
- Separate infra needed for tracking ephemeral head data
- Minimal Beacon network monitoring to verify gossip availability
- Next step
- Client teams to contribute status updates via the meta-issue
#### 2.2 Pectra Upgrade & Testnet Integration
- Pectra Fork Readiness
- Most Pectra-related updates are client-specific
- No major cross-team sync needed now
- Hive tests can be updated after the Pectra fork ships
- Future Fork Testnet Integration
- Integrate Portal into testnets before future forks to avoid post-fork delays
- Prioritize **Sepolia** as the primary testnet for Portal-related work, as it contains pre-merge data
</br>
## Apr 21st, 2025 - Call #52
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Milos](https://github.com/morph-dev)
- Improved bridge functionality
- Supported e2hs files for gossiping history
- Updated all bridges to use census / offer, enabling direct offer instead of gossip logic
- Added ephemeral header content type definition (not active yet)
- Ongoing PRs on Deneb proof generation & validation, and Electra consensus types
- Glados: Implemented protocol version tracking for peers
- Trin, Fluffy, and Shisui now all officially supports v1
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- v1 is implemented but not publicly updated yet
- Continued working with DevOps to revamp boot node setup
- Awaiting ChainSafe to release an update that includes the bug fix discussed last week
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Profiling ongoing to resolve performance issues (especially in comparison to Trin)
- Implemented new RPC endpoints to support missing JSON-RPC APIs
- Added caching for the highest compatible version to speed up lookups
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Focused on integration with Besu
- Currently managed to run Samba inside Besu locally, but still need further polishing & adjustments
- Aim to support Samba both within Besu and as a standalone solution
- Working toward deployment / testing of Samba in Besu across versions to evaluate performance and behavior
### 2. Discussion: Head-MPT State Network Spec
- Key problem
- How to update slices of state for nodes whose section had no updates in a given block
- Proposed Solution: Introduce block-level MPT diffs as a formalized content type
- Each block contains a diff from the previous block's state
- Allow nodes to update and re-anchor their data to the latest MPT root, even if their slice didn’t change
- Enable a lightweight initial rollout - nodes can sync & operate without full account state storage initally
- Sync Mechanism
- New nodes can sync from the current trie and fast-forward using accumulated diffs
- Trie diffs will be the main data gossiped on the network
- While the protocol supports querying individual trie nodes, gossiping individual nodes isn't the focus
- Implementation Roadmap for client teams
- 1st priority: Finalize ephemeral header support in the History Network
- 2nd priority: Push the State Network as close to the chain head as possible
- Afterwards: Define block-level diff data type, and implement diff generation & propagation
- Relevant PR/ issue: https://github.com/ethereum/portal-network-specs/pull/389
</br>
## Apr 14th, 2025 - Call #51
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Kolby](https://github.com/KolbyML) and [Mike](https://github.com/mrferris)
- Implemented Protocol versioning & v1
- Fixed bug in JSON-RPC result for the offer method
- Performance improvements of e2hs writer
- 44× speedup for converting era1 to e2hs files
- 6× speedup for converting era to e2hs files
- Now pre-merge e2hs files can be generated in ~10s and post-merge e2hs files in ~5 minutes
- Plan to run Bridges fully on e2hs files with public endpoints soon
- Discussion on adopting e2hs format as a standard post-merge history format
- Nearly ready for broader feedback & adoption once the full repo is generated and publicly available
- Glados update
- Finished schema change last week, allowing UTP health visibility
- Deploy sync auditing this week
- Plan to work on protocol versioning visibility next week
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- v1 protocol version merged and unit tested
- Fixed bugs in discv5 test suite
- 3 PRs submitted to ChainSafe’s discv5 implementation to fix ID encoding, challenge re-sending, and byte/int conversion bugs
- Continued revamping public node setup with devops team for better reliability
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- First call with Besu team to align on plugin use and integration
- Need to change certain discv5 endpoints from Besu side to integrate with Samba
- Working in parallel on
- Endpoint completion
- Design shift from standalone to plugin-compatible mode
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Implemented protocol versioning v1 and updated offer interface
- Fixed a panic issue related to closing connections on errors
- Addressing performance issue
- Working on utp rate limiting to optimize gossip
- Benchmarking ongoing to resolve performance gaps vs Trin
### 2. Discussion topics
#### 2.1 Head-MPT State Network Spec
- Design overview
- The Head-MPT State Network will initially be a separate sub-network (not merged with the existing state network) for faster iteration, with potential future integration
- Scope
- Focused on the last 256 blocks, with nodes anchoring content via state roots or block hashes
- Content Types
- Gossiped data includes account trie nodes, bytecodes, and storage trie nodes
- Each node anchors content to the state root
- Gossip mechanism
- Bridges split the trie diff into 256 subtries and gossip each as a key-value pair
- Nodes store and update assigned subtrie based on their node ID
- Nodes retain their subtrie for the last 256 blocks, discarding older ones
- Querying & sync
- Direct leaf queries are supported with proofs
- Nodes can fetch missing individual trie nodes when bootstrapping or syncing
- Implementation Phasing
- Start with account trie only
- Contract trie support will follow after validation
- Next step
- Client teams are encourated to review the [PR](https://github.com/ethereum/portal-network-specs/pull/389) and provide feedback
- Deeper discussion scheduled for next week’s call (or the week after if there is light attendance next week due to Easter)
- Relevant PR/ issue: https://github.com/ethereum/portal-network-specs/pull/389
</br>
## Apr 7th, 2025 - Call #50
### 1. Team update
- Update by [Piper](https://github.com/pipermerriam)
- Working on history expiry coordination & organization
- In early onboarding phase for history state spec
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Kolby](https://github.com/KolbyML)
- e2hs update
- Fixed an invalid BlockIndex type in e2hs
- Pre-merge e2hs files generated & uploaded, except some minor bugs
- Once fixed, e2hs file will replace era1, with plan to sync up to the chain head minus ~27h
- Fixed a bug where the discv5 ENR cache was to small to handle 500+ or more active peers by scaling the cache size to match the max number of sessions
- A cleaner upstream fix coming soon via the discv5 lib
- Glados
- Updated Glados to support ethportal-api 0.6.0 which incl. ping extension
- Fixing the census issue, which now works even without online nodes
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Updated ping endpoint to support ping extension
- Worked on async EVM improvement and investigating segfault/ bugs in CI tests
- Protocol versioning
- Progressing on protocol versioning, but blocked by an unexpected compiler bug
- Need to update discv5 for protocol versioning to properly handle ENR access during request/ response
- Plan to store ENR in session cache for reliable access
- Implemented the changes of accept codes and add varient size prefix
- Investigating a clean solution to manage versioning info along with the encoding/ decoding process
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Working on protocol versioning, added initial support but v1 features not yet active
- Current priority: Finish the v1 changes implementation
- Progressed on history expiry support within EthereumJS team
- Plan to revamp boot node setup, shifting from 2 overloaded VMs to multiple smaller VMs, for better performance and reliability
- Merged a Tauri-based web interface project built on Ultralight by Justin, currently allowing basic RPC lookups
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Implemented SSZ union removal
- Fixed a bug in the putContent JSON-RPC endpoint, which is related to the utp lib usage
- Passed local Hive tests against Trin, still debugging remaining test failures
- Plan to begin regular biweekly sync with Besu team for planning and coordination
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Grapebaba](https://github.com/GrapeBaBa)
- Merged PRs, incl. implementation on accept codes and protocol versioning
- Implemented add size prefix in FindContent
- Fixed the FindNodes response bug, due to packet too long
- Added rate limiting policy, where gossips are dropped when resource usage exceeds the limit
- Fixed discv5 whoareyou response issue in Geth, through in Hive tests still see issues when communicating with Fluffy nodes
- The issue with Fluffy nodes
- When two portal requests are sent simultaneously before a session is established, only the 1st succeeds and the 2nd fails
- eg. Fluffy’s background Ping (for node revalidation) races with test-triggered FindContent, would cause one to fail
- Potential solution
- Queuing on Fluffy side: Queue the concurrent requests until the session is setup
- Retry logic: Clients could retry dropped requests automatically
- Test adjustment: Modify Hive test to better reflect real-world behavior
- Ultralight related notes
- Identified 3+ encoding-related bugs when previously debugging Hive test failures related to discv5
- Not sure if these fixes would resolve the concurrent-request problem
### 2. Discussion topics
#### 2.1 Next step for Bridges
- Curent status
- Bridges are mainly run by the Trin team currently
- Technical updates
- Transition to generate e2hs file (much simplified without the accumulator) to replace era1 file for the entire range
- Plan to maintain two bridge types: ephemeral bridge (handle reorgs & complex edge cases) and e2hs bridge
- Dropping support for the older era1 bridge
- Next step proposal
- Community-runned bridges
- Consensus: Shift from team-operated to community-operated bridges
- Next steps: Document clear setup steps for external parties to get involved easily
#### 2.2 Hive test
- Achieved improved test coverage this week, with additional [Portal Hive test](https://portal-hive.ethdevops.io/#summary-sort=name) now passing successfully
- Strong cross-team collaboration as client teams worked together on troubleshooting and debugging
#### 2.3 Team presence at Interop event
- Some members from Portal team will attend the event in Berlin in June
</br>
## Mar 31st, 2025 - Call #49
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Kolby](https://github.com/KolbyML)
- Formalized the new e2hs file format to handle all EL blocks, which simplifies bridging process
- Implemented e2hs, incl. adding reader & writer in e2store crate
- Published e2store crates available for external projects to use
- Fixed a utp packet handling bug, where 1st part of transfer is ignored by recipient if the STATE response to SYN is dropped
- Cleaned up redundant test vectors
- Glados: Now display header by numbers on the latest block status graph
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Added protocol versioning to ENRs and preparing for the PR on accept/decline code change
- Updating EthereumJS to support EIP-4444 and drop day by integrating Ultralight as a dependency
- Progressed on ephemeral headers implementation
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Implemented new endpoints but facing delays with UTP library (putContent issue) and accumulator integration
- Restructuring code for better modularity to integrate with Besu client
- Need further exploration on the primary use case of Samba by the Besu client (eg. JSON-RPC serviing vs full block sync)
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Added support for protocol versioning and accept code implementation
- Fixed a race condition bug and merged ping extension PR
- Investigating the Discv5 whoareyou-challenge response issue and performance bottlenecks in Go implementation
### 2. Discussion topics
#### 2.1 Protocol Versioning Implementation
- Most of the client teams have started implementing the protocol versioning
- Teams are encouraged to implement miniimal versioning to enable incremental updates and compatibility testing
#### 2.2 Ephemeral Headers Spec Update
- The problem
- The initial assumption that all EL headers could be sourced from ```LightClientUpdates``` was invalidated as the CL derives tx/ withdrawal data via SSZ instead of RLP/ MPT
- The spec is being updated to
- Clarify limitation: EL headers can't be fully sourced from the Beacon Network
- Define handling
- Headers should be organized chronologically in payloads
- Clients should retain headers during reorgs until chain validity is re-verified
- Avoid unnecessary network requests that could case DDOS issue
- Allow headers to propagate naturally across the network
- Note edge cases: Notes added for scenarios like reorgs and data propagation
- Next step
- Team working on the implementation is encouraged to read the PR link for details
- Relevant github issue/ PR
- https://github.com/ethereum/portal-network-specs/pull/387
#### 2.3 Shisui & Ultralight Connectivity Issue
- The problem
- Milos obversed intermittent failures when sending ```Find_Nodes``` request to Shisui and Ultralight nodes
- Pattern of failure
- ```Find_Nodes``` requests fail at non-zero distance
- Requests with zero distance or simple ping work fine
- The issue isn't consistently reproducible but happens frequently
- Investigation
- Initial debugging attempts suggest the session or message keys might be incorrect
- Equivalent Hive tests are passing, ruling out protocol-level bugs
- Shisui identified a potential race condition in node assignment logic and a fix has been proposed & under review
- Next step
- Team agree to collaborate via a live debug session, with Shisui deploying a test node for targeted troubleshooting
- Relevant link
- https://discord.com/channels/890617081744220180/890617082243350560/1355946931540721876
#### 2.4 EIP-4444 Coordination Updates
- Sepolia testnet: The initial May 1st drop date is now Sepolia testnet drop date, with efforts underway to align an EL client version ready for Sepolia so CL clients can test against
- Mainnet drop date: The mainnet drop date is postponed to sync with Pectra upgrade, due to CL's dependency on pre-merge logs
#### 2.5 State Network Progress
- State network rollout has stalled due to
- Gossip performance issue: Bottlenecks in propagating new state data across the network
- Dependencies: Protocol versioning, accept codes must be finalized first to unblock state sync features
- Action plan
- Short-term goal: Focus on shipping a client version that can sync state even if it's slighly behind the head of the chain
- Priority:
- History network will take precedence over the State network due to higher urgency
- Ephemeral state work and performance optimizations may follow later, depending on team availability
- Team bandwidth constraints
- There will be reduced manpower on Trin side during summer due to vacation/ parental leave
- Potentially exploring collaboration with Fluffy team on the State network development
#### 2.6 Hive test
- Two key failures remain unsolved
- JSON-RPC extension: Some clients still need to expose required extensions via JSON-RPC
- Post-merge proof validation: Minor bug persist in validating post-merge proof formats
- Next step
- Teams are urged to prioritize these fixes within the next two weeks to get Hive tests fully green, as prolonged failures risk being overlooked
</br>
## Mar 24th, 2025 - Call #48
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) by [Ognyan](https://github.com/ogenev)
- Cleaned up history storage by removing old content value types
- Refactored e2store header types for compatibility
- Implemented ping extensions for JSON RPC endpoints
- Added ephemeral store as a step toward ephemeral content for the History network
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Tuned the PoC syncing Nimbus EL from Portal Netowrk: incl. adjust recursive finContent concurrency (reducing requests from 3 to 2 slightly improved performance)
- Observed that ~10% of recursive findContent requests timeout when sending 2-3 concurrent queries, potentially due to udp packet loss or async lib issue
- Improved ContentDB pruning mechanism for speed
- Integrated EVM and implemented eth_call, yielding a ~20% performance improvement
- Started investigating the issue of discv5 protocol handling multiple concurrent requests
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Finalized ping extension for JSON RPC endpoints
- Improved pruning mechanism (now more deterministic behavior with reduced overlaps)
- Released major update with EthereumJS lib
- Progressed on ephemeral header implementation
- Preparing on Portal integration with EthereumJS client
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Geth integration process update
- PR re. repeat challenge in "who you are" handshake: Merged and currently being tested on Hive, have some issues with Fluffy nodes (need further investigation)
- PR re. ping extension for JSON RPC endpoints: In final review stasge, expected to be merged shortly
- Collaborated with Geth to make Shisui run as an independent sub-process for Portal Network access
- Initial implementation planned by end of this month
- Other work incl.
- Participated in protocol versioning discussion
- Start working on detailed offer decline code
- Fixed race condition issues
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Close to passing all Hive tests, except a bug in putContent gossip handling
- Slightly behind on SSZ union removal and ephemeral headers implementation
- Working in parallel to integrate Samba as a plugin for Besu
- Nearest goal is to fix the putContent bug and make initial progress on Besu plugin integration
### 2. Roll out network changes using Protocol Versioning
- Deployment approach
- Team agree to roll out offer/accept code changes using protocol versioning
- Clients will start supporting both old & new versions and signal protocol version through ENR
- Glados Monitoring
- Need to add a tracking table on Glados to show the protocol versioning states
- Issue discussed
- Versioning semantic: Whether to rename portal wire protocol version to a more general portal version for future clarity
- Lack of size prefix: FindContent/ Content request lacks a size prefix, making it difficult to distinguish between incomplete and invalid data, potentially leading to incorrect peer ban
- Version 1 action items
- Deploy offer/ accept codes
- Add length prefix to uTP streams
- Related PR/ issue
- https://github.com/ethereum/portal-network-specs/issues/375
- https://github.com/ethereum/portal-network-specs/issues/380
- https://github.com/ethereum/glados/issues/382
### 3. Banning/ Peer handling
- Risk of peer banning
- Could backfire in edge cases, eg. banning all peers during local network outage
- May accidentally isolate nodes from the network
- Peer scoring is preferred over hard bans
- Prioritize good peers rather than punishing bad ones
### 4. Handling Ephemeral State Content
- Main issue
- Current trie-based model struggles with ephemeral state management during chain reorgs, as state content can exist on both canonical and non-canoncial chain
- The issue arises when attempting to migrate state content to permanent storage or delete non-canonical chain related content after finality
- Potential solutions
- **Solution 1**: Modify content keys to include block hashes, enabling proof tracking across forks (but risks redundant storage)
- **Solution 2**: Restrict trie-based model to finalized state only, using the flat model for ephemeral data near the chain head
- Team consensus
- Favored **Solution 2** for simplicity
- Open questions
- Define the threshold of "finalized" (EL/ CL finality vs practical limits)
- Document verification rules for headers near the head of the chain
- Action items
- Formalize flat model spec, led by Milos
- Clarify finality checks in the state network specs
- Related PR/ issue
- https://github.com/ethereum/portal-network-specs/issues/382
### 5. Storage of Ephemeral Block Bodies/ Receipts
- Main question
- How clients choose to store the ephemeral block bodies/ receipts? Whether they should be store permanently?
- Potential approach
- Pre-finalized data: Keep in-memory cache (auto-purged on finalization)
- Finalized data: Persist permanently (proofs are immutable post-finalization)
- Client plans
- Trin: Testing in-memory storage for pre-finalized bodies/ receipts
- Fluffly: Exploring separate tables for headers/ bodies to enable efficient access & pruning, but still need further exploration
<br>
## Mar 17th, 2025 - Call
### 1. Team update
- Update on [Trin](https://github.com/ethereum/trin) by [Mike](https://github.com/mrferris)
- No major development update last week
- Reth is able to sync the chain through Trin nodes
- Two main areas for syncing performance improvement (from 34 hours to less than 10% of that)
- Fix the issue of serving incorrect or corrupted data, potentially due to uTP
- Address performance bottlenecks
- Glados
- Will focus on optimizing the Reth sync process, and maintain a scoreboard to track performance
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [acolytec3](https://github.com/acolytec3)
- Ephemeral headers
- Implemented the history network related features, incl. serving & storing content headers
- Prepare to integrate the beacon network to track the head of chain and handle ephemeral headers
- Question regarding the spec
- The current spec requires storing the last 8,192 consecutive headers, which might be unnecessary and could potentially cause issues
- Need further exploration/ clarification on how to handle headers once a sync period is finalized and historicalSummeries are pushed to the network
- Update on Nethermind Portal implementation by [FLCL](https://github.com/flcl42)
- Plan to prepare the config and integrate Nethermind Portal Client into Portal Hive test
### 2. Discussion on the spec change
- Relevant PR: https://github.com/ethereum/portal-network-specs/pull/370
- Discussion over adding detailed offer decline codes to the spec
- Concern: Adding the additional decline info might not be actionable and could overload the protocol
- Beneift: Could be useful for optimizing content offering strategies and improving bridge operations
- Team consensus
- Would be better to clarify the purpose of adding the response codes
- Will move forward with the change
<br>
## Mar 10-11th, 2025 - Portal Summit Berlin
- Portal Summit notes: https://hackmd.io/DWsDCFooT-u7skmgAb-uSA?view
<br>
## Mar 3rd, 2025 - Call #47
- No call update this week as most of the team are travelling
- There will be no call update next week (Mar 10th) due to in-person Berlin Summit
## Feb 24th, 2025 - Call #46
### 1. General update
- Update on Berlin summit by [Piper](https://github.com/pipermerriam)
- Working on multiple talks for the summit
- Portal implementer call schedule for the next 2 weeks
- March 3rd: Client team attendance uncertain; Confirmation of the call will be posted on the ethereum/pm github issue
- March 10th: No call expected due to the Berlin in-person event
### 2. Team update
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Grapepapa](https://github.com/GrapeBaBa) on EthR&D Discord
- Ephemeral headers: Implemented the spec changes, incl. SSZ union removal, None removal in BlockHeaderWithProof, and add validation for post-Capella proof
- trace_offer API: Work in progress
- Geth integration: No updates this week
- Berlin event: All team members have their visa ready
- Update on [Trin](https://github.com/ethereum/trin) and [Glados](https://github.com/ethereum/glados) by [Jason Carver](https://github.com/carver), [Milos](https://github.com/morph-dev) and [Nick](https://github.com/njgheorghita)
- Trusted block root: Now embedded instead of requiring command-line input
- Database migration
- Added progress tracking to display stats during the migration
- Decided not to migrate post-merge headers with proofs, but still keep the post-merge block & receipts
- Beacon network: Added a pruning task to remove outdated light client bootstrap data
- Glados
- Now able to track database entries for every transfer failure, even if the audit succeeds
- Working on the state audits for block 21 million, expected to have a PR soon
- Add e2hs file format proposal
- Proposed a new file format to be used in the History Network for storing pre & post-merge history data
- Feedback from the Nimbus team is needed to understand why receipts were excl. and whether should be incl. directly or stored separately
- Further discussions will take place in Berlin to gather feedback and finalize decisions on this format
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [acolytec3](https://github.com/acolytec3)
- SSZ container discrepancy: Found and fixed a mismatch between the implementation and the spec for post-merge pre-Capella headers; Now passed all related portal spec tests
- Hive tests
- Aim to rerun the hive tests to verfiy the fix works
- Noticed that some gossip tests for pre-merge blocks are failing, pending further investigation
- Ephemeral headers
- PR is ~25% complete, with fundamental work completed, incl. storing and advertising headers via the ping extension
- Work remains on handling gossip and responses for content retrieval
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Hive tests: Passed 50+ tests related to the offer input, while some still failing
- Recursive lookup: Work on implementing and finalizing the necessary endpoints
- Additional endpoints: Implemented endpoints needed for testing the offer endpoint, including local content and history store
- Besu integration: Planning to start research and integration in the coming weeks
### 3. Review ephemeral headers deployment plan
- Deployment target for this week
- Aim to remove SSZ union and enforce proofs for pre-merge headers
- Client readiness
- On the call, Trin and Ultralight are ready to deploy the change
- Pending coordination with Fluffy and Shisui
- Next steps
- Confirm readiness from Fluffy and Shisui on discord
- Team will move forward if the majority of the network is ready, even if some clients are temporarily offline
<br>
## Feb 17th, 2025 - Call #45
### 1. General update
- Update on Berlin summit by [Piper](https://github.com/pipermerriam)
- Organization & Deck preparation: Working on a new deck to present Portal from first principle, focusing on a deep dive into technical aspects
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) by [Milos](https://github.com/morph-dev)
- History content migration: Progress on migrating history content to new types, incl. introducing ephemeral headers and updating the encodings for headers with proofs
- Performance optimizations: Continued discussions on improving performance for syncing history network data
- Glados: No major updates this week
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Union removal: Working on a PR to remove the bucket/ proof type and update data types
- Ephemeral headers: Developing support for ephemeral headers with a PR in progress
- Execution client rebuild: Discussed rebuilding the EthereumJS client based on Portal, potentially starting from the Ultralight client
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Ban list: PR merged, but choose to not activate it by default due to potential contact availability impacts
- EVM integration: Basic eth_call support is functional, but no support for recursive call yet; testing shows similar performance to Trin
- UTP benchmarks: Improved block processing, achieving 40 blocks/second at the 14M block height mark; noticed a UTP decoding error from Ultralight nodes
- Historical Summaries: Updated a previous PR to add historical summaries to the REST API for Nimbus, pending to be merged
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Geth integration: Waiting on Geth devs to review PRs for integration
- History network: Worked on the new specs for the history network changes, incl. the nouns and SSZ union removal; code is ready, pending deployment plans
- Beacon network: Progressed on beacon network integration, pending debug on some Hive tests
- Update on [Samba](https://github.com/meldsun0/samba) by [Derek](https://github.com/Dsorken)
- Ping Extension: Completed the implementation of Ping extension
- Next step: Setup infra to support ephemeral headers and recursive search
- Explore collaboration with Besu: Considering align with Besu to maintain synchronization until beacon network integration is complete
### 3. Discussion on ephemeral bodies and receipts handling
- General consensus
- Ephemeral bodies and receipts should be gossiped when created and be proven using ephemeral headers
- If the ephemeral bodies and receipts become invalid later, they can be deleted
- No need for a separate content type for ephemeral bodies and receipts
- Security concerns
- DDoS attacks where the network could be flooded with invalid ephemeral bodies and receipts
- The risk is generally low as reorgs are rare and shallow in the beacon chain (typically 1-2 blocks)
- Invalid data wouldn't be propagated; it might linger in some clients but wouldn't infect the network
- Next step
- Update specs to clarify client behavior on handling ephemeral bodies and receipts
### 4. Coordination on ephemeral headers deployment plan
- Merged the [PR](https://github.com/ethereum/portal-network-specs/pull/362) to remove the SSZ union from header with proofs
- Post-merge bodies & receipts handling
- General consensus
- It's a client-specific decision on how to handle post-merge bodies and receipts that are not verified using proofs
- Since invalid data would only affect the individual client, it shouldn't impact the overall network
- Different handling approaches
- Pruning approach: Use files with block header hashes to identify and prune invalid data, but that could require significant effort
- Leave-as-it-is approach: Assume the data is valid and take no action, potentially cleaning up later if issues arise
- Missing test vectors
- Comprehensive test vectors for post-merge headers with proofs (eg. historical rules and summaries) are missing
- Current tests only cover partial proofs, not the entire encoded content
- Next step: Generate and verify complete test vectors before full implementation
- Implementation status by client
- Trin: Can implement new encoding and union removal by next week but won’t support ephemeral content until after Berlin summit
- Fluffy: Supports pre-merge headers but hasn’t integrated new post-merge types; Limited availability next week for debugging issues
- Ultralight: Ready for union removal and new encoding by next Monday
- **Deployment plan**
- Proposed order
- Phase 1: Remove union types and enforce proofs for pre-merge headers
- Phase 2: Add support for post-merge headers with new proof types
- Phase 3: Implement ephemeral headers once each team is ready
- Timeline
- Teams agree to **proceed with Phase 1 by next Monday**
- Each client will implement Phase 2 & 3 at their own pace
<br>
## Feb 10th, 2025 - Call #44
### 1. General update
- Update on Berlin summit by [Piper](https://github.com/pipermerriam)
- Preparing the opening talk for the Berlin event, aiming to provide a top-down overview of the Portal Network and get everyone onto the same page
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) by [Nick](https://github.com/njgheorghita) & [Ognyan](https://github.com/ogenev)
- Performance improvements: Enabled WAL mode in SQLite databases, improving performance by 1.5x to 2x
- UTP bug fix: Fixed a bug in the UTP library, which has been deployed
- Hive testing: Merged a basic sync test for syncing light clients and added new JSON-RPC endpoints to the specs; portal clients will need to implement the new endpoints to ensure compatibility with the test
- Minor refactor and new version of the Portal API
- Header proof change: Preparing for the deployment of the new header with proof type, with the plan to convert/ update old data in the production database rather than trashing the database
- Discussion on [experiment with history network data download](https://github.com/ethereum/trin/pull/1627)
- Goal: To measure how fast data can be retrieved sequentially from the history network compared to geth sync
- Results
- Average download rate: c.5 blocks per second (c.20-23x slower than geth via devp2p).
- UTP bottlenecks: Struggles with >60 connections and caps at 2-3 MB/s.
- find_content latency: ~5 seconds (95th percentile).
- Comparison with Fluffy
- Can handle 50+ simultaneous transfer with larger batches
- Performance is limited by chunked downloads and connection ramp-up time
- UTP performance bottleneck: Currently struggled with inbound connection scaling, and encryption overhead
- State network implication: The state network is much larger than the history network, requiring 10x more performance; current performance improvements (eg. range queries) may not suffice for state network requirements
- Next step
- Focus on UTP improvements, incl. improve UTP implementation and testing frameworks, and explore native discv5 connection methods
- Further discussion on performance improvement strategy at Berlin summit
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- UTP benchmarks: Improved UTP benchmarks to handle more nodes sending data simultaneously
- Union removal & database migration: Optimized SQL statements for faster database migration, pending for further testing
- EVM integration: Exploring EVM integration, potentially using EVMC API, allowing other EVMs to be plugged in
- Others: Finished the bandwidth implementation, which is read to merge; working on a discv5 issue as part of ongoing improvement
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Geth integration: Most PRs are submmitted, pending for review
- Discv5 issue: Addressed discrepancies between Portal and Geth’s discv5 implementations, particularly around request-response handling
- Glados issue: Fixed an issue of Glados, which now allows timestamp as sequence number
- UTP benchmark & improvement: Significantly reduced memory footprint (from ~60 GB to ~100 MB) and improved performance (able to handle up to 2000 concurrent UTP streams, up from 500) with peak memory usage of c. 80 GB during high traffic
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- UTP Implementation: Completed the first version of UTP, enabling read/write file exchange & the getContent endpoint, though some validation is still needed
- Hive testing progress: Passing more Hive test, but currently still using an old version of the instance due to delay in ping extension implementation; expected to finish the update by the end of the week
- Next step: Push a new instance of Samba, work on the implementation of offer endpoint, and continue discussion with Besu for integration
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [acolytec3](https://github.com/acolytec3)
- Hive sync test: Implemented and merged new Hive sync tests for the beacon network
- Header proof change: Ready to remove the union from block header proofs, passing all test factors; plan to start work on ephemeral headers this week
- Browser client: Plan to reboot the browser client with help from the new contributor [Justin](https://github.com/cjustinobi)
### 3. Coordination on ephemeral headers deployment plan
- Timeline: Teams agreed to target 14 days from the call for deploying the ephemeral headers change
- Database migration
- Plan to delete headers without proof and convert pre-merge headers to the new format
- Discussed whether to delete or keep post-merge block bodies and receipts; consensus leaned toward deleting the post-merge data due to lower importance for now
- A temporary availability blip during migration is expected but considered acceptable
- Beacon network dependency
- Historical summaries from the beacon chain are required to verify headers with proofs, and team is ensuring the beacon network is ready before the migration
- Clients will stop accepting headers without proofs and only accept those with valid proofs once the Beacon Network is ready
<br>
## Feb 3rd, 2025 - Call #43
### 1. General update
- Update on Berlin summit by [Piper](https://github.com/pipermerriam)
- A planning document is now available: https://notes.ethereum.org/_qEGASgDTLK4_EOAMSHctg?view
- Team are encouraged to add topics for presentations & discussion
- Expected attendance
- Apart from Portal teams, members from Geth, Reth, Nimbus, Nethermind, and Besu are also expected to participate. Erigon won’t aattend due to a scheduling conflict.
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Jason Carver](https://github.com/carver) and [Nick](https://github.com/njgheorghita)
- Ping extension deployment
- The deployment went smoothly, though ~30 nodes were lost, likely due to lack of upgrades
- Debug improvements
- Focused on fixing issues incl. setting gas_price when handling eth_call and resolving bugs in content storage checks
- Node radius adjustment
- Nodes starting at 100% radius were causing excessive work for state nodes
- A fix to reduce the max-radiums param to 5% is in progress
- Hive testing
- Sync tests for the beacon network are being developed
- Feedback and feature suggestions for Hive are welcome to drop in the #hive channel
- Glados Metrics:
- Improvements in global metrics were noted, with fewer failures observed recently
- The exact cause is unclear but may relate to latest changes in header acceptance logic. Further investigation are welcome
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi) and [acolytec3](https://github.com/acolytec3)
- Glados metrics
- Also observed a significant improvement in boot node census response rates on Glados
- Ping extension
- Discussed how to respond to unexpected type 2 pings without requiring a prior type 0 ping
- Concluded that nodes will respond with the matching type without penalizing peers for unexpected type 2 pings
- SSZ union removal
- Worked on a PR to remove the union in BlockHeaderWithProof
- Ephemeral headers
- Plan to work on it later in the week, targeting a working implementation before the Berlin event
- New contributor
- A new contributor may join Ultralight soon to explore brower-based implementation
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Ban lists
- A more generic, lower-level approach has been implemented, which can be applied on both discv5 and portal wire protocol
- The part for discv5 has been merged, the part for portal wire is expected to be merged soon
- Database pruning
- A simple implementation is being tested, but it's inefficient due to the database layout
- Challenges are the current approach is time-consuming, and pruning could potentially affect Glados metrics as nodes with pruned databases might behave differently
- Input is needed from other clients (eg. Trin, Shisui) regarding whether to implement pruning or to delete & re-inject data to determine a consistant approach
- Discv5 native stream: Start to explore and benchmark it
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- UTP Integration
- Partically completed the getContent & store endpoints, and successfully started receiving content via UTP
- Plan to enable writing content through UTP and finalize changes for the ping extension
- Aim to start passing more Hive tests by the end of the week
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Integration with Geth: Several PRs have been submitted, incl.
- Make APIs public for reuse in Portal Network
- Introduce timeout parameters in discv5
- Introduce node caching
- Remove redundant ping challenges
- Time consideration: Some changes may require updates to the discv5 spec, which could take additional time
- Prepare for Berlin event
- Team members are applying for visas and aim to resolve outstanding issues during in-person meetings in Berlin
<br>
## Jan 27th, 2025 - Call #42
### 1. General update
- Update on Berlin summit by [Piper](https://github.com/pipermerriam)
- Venue confirmed
- More details, incl. event agenda, will be shared soon
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) by [Ognyan](https://github.com/ogenev) and [Milos](https://github.com/morph-dev)
- Added UTP duration metrics to measure performance
- Fixed issues with the gas_price when handling eth_call
- Experimented with block fetching from the network, generated metrics which could be further optimized
- Made progress on developing testing for light client nodes on the beacon network
- Initialized the big storage nodes, with basic tests (eg. eth_call, getbalance) showed some flakiness, indicating intermittent issues with content retrieval
- Need mechanisms to propagate retrieved data back into the network for broader availability
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Worked on addressing issues with package exchanging using UTP
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [acolytec3](https://github.com/acolytec3)
- Completed a fully working prototype for verifying post-Capella headers on Ultralight
- Developed a bridge script to pull historical data, construct proofs, and push them to the nodes
- Local multi-node gossip testing is planned to ensure proper header propagation
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Added support for ephemeral headers, incl. encoding/decoding
- Created PR with test-vectors regarding the content key
- Proposed removal of SSZ unions in BlockHeaderWithProof type by making the proof an SSZ encoded ByteList
- Fixed bugs related to UTP socket handling and improved data validation process
- Experimented running Glados within the Nimbus infra, but encountered a dependency on PandaOps
- Identified an undefined failures field in the trace object spec, causing issues when running Fluffy
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Most of the team members are on national holidays starting from last weekend, which may cause delays in responses
- Merged the PR on ping extension and ready for deployment
- 1st PR (adding stun protocol) submmit to Geth merged successfully
- Prepared for the next PR to update the discv5 APIs, which will allow Shisui to run on top of Geth without the need to merge or modify Geth code directly
### 3. Coordination on Ping extension
- Relevant link: https://github.com/ethereum/portal-network-specs/issues/360
- Update by [Kolby](https://github.com/KolbyML)
- All clients have passed the Hive tests and no further comments from the team
- Confired to deploy ping extension post today's weekly call
### 4. Coordiantion on ephemeral headers implementation and SSZ union removal
- Relevant link: https://github.com/ethereum/portal-network-specs/pull/362
- Background
- Multiple breaking changes, incl. getting ephemeral headers alive, remove SSZ union, and database migration, needs team coordination to avoid repeated operation
- High priority task, as portal network approaches history network adoption
- Goal
- Setup a tracking issue to define timelines, migration plans, and readiness checks for these updates
- Coordinate different teams to ensure client readiness and minimize disruption during the transition
- Ideally within the next few weeks, before March
- [Kim](https://github.com/kdeme) will take the lead on coordination
<br>
## Jan 20th, 2025
### 1. General update
- Berlin Event update by [Piper](https://github.com/pipermerriam)
- Working on finalizing the event venue
- Prepared event materials, incl. agenda, documentation etc.
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Ognyan](https://github.com/ogenev), [Kolby](https://github.com/KolbyML)
- Trin
- General
- Refactored the code to improve the repo structure
- Improved test coverage for light clients and improved the content lookup service to check the local database at OverlayService level
- Identified and working on a bug where queries persist during UTP transfer
- Ping Extensions
- Streamlined the ping extension by removing a serialization layer through combining the custom ping payload with the actual ping message (PR pending to be merged)
- State Network
- Trin node performance currently is the primary bottleneck
- Working on achieving 10x performance improvement
- Glados
- Updated node visualization with weekly census tracking
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Ping Extensions
- Proposed the streamline suggestion in the portal discord and implemented the ping extension
- Pending team coordination for deployment
- Peer Banning List: Working on implementing the temporary peer ban list (conditions for banning: validation failures and invalid offers)
- UTP Reset: Identified a bug where connections timed out without sending a FIN or RESET packet
- Node Deployment: Planning to deploy c.100 small nodes (2-4 GB) to test default user config
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi)
- Ping Extensions
- Implemented and ready for deployment
- Pending team coordination for deployment
- UTP Reset: Implemented the reset packet to match team expectations and align with other clients' behavior
- Peer Banning: Implemented peer banning at the UDP level using a mechanism discovered in discv5
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- UTP Library: Completed a new version. Aim to integrate & pass through the hive tests, and refine the UTP library based on feedback
- Coordination on Ping Extension
- Deployment date: Aim to deploy next Monday, pending [Shisui](https://github.com/zen-eth/shisui)'s readiness
- Hive test: Coordinate to set up experimental Hive tests with merged client branches to validate changes before deployment
### 3. Other discussion
- [Chloe](https://github.com/Chloezhu010) raised the point of making Portal's weekly meeting agenda and notes more publicly accessible through ethereum/pm github and Magician forum
### 4. Next week's call agenda
- Jan 27, 16:30 UTC: https://github.com/ethereum/pm/issues/1257
<br>
## Jan 13th, 2025
### 1. General update
- Upcoming Event update by [Piper](https://github.com/pipermerriam)
- Near confirmed dates for March 10th & 11th in Berlin. It will focus on collaboration with execution client teams for Portal integrations
- Details will be confirmed and finalized soon
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Kolby](https://github.com/KolbyML), [Nick](https://github.com/njgheorghita)
- Trin
- State Diff Bridges: Deployed to gather data, but high traffic and bandwidth bottlenecks seen on Trin nodes may hinder research on implementing range queries
- State Nodes Deployment: Full state data from block 21 million will be deployed this Tuesday
- Trin desktop: Added account-related features, allowing users to save accounts across sessions and look up data by account address
- Ping Extensions: Planned for deployment alongside Fluffy, and will coordinate the update across all teams, incl. Ultralight, Samba, and Shisui
- Glados
- Fixed visualization crashes and added a weekly census count to track node fluctuations
- Update on [Fluffy](https://github.com/status-im/nimbus-eth1/tree/master/fluffy) by [Kim](https://github.com/kdeme)
- Portal sync: Worked on the portal sync proof of concept for execution client
- JSON-RPC Methods
- Added content validation + local storing to Portal history JSON-RPC methods
- Raised the issue of validation requirements for getContent and putContent, where the spces are ambiguous and full validation significantly impacts bridge performance
- Proposed adding a validation flag to toggle between different validation levels
- Ping Extensions: Initial exploration completed, with plans to develop a basic version supporting standard extension types
- Noticed unusual traffic patterns in metrics
- Significant increase in UTP connections but decrease in connection duration
- High session cache miss ratio (spiked to 40-50%), indicating many new nodes are connecting but not staying long
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- UTP Library: Continued working to improve test coverage and synchronization. Aimed to expose getContent and offer
s for Hive testing next week
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- UTP Performance: Testing a new UTP library in Glados, showing significant improvements (e.g., memory usage reduced from 10GB to <1GB).
- Public APIs: Created reusable public APIs of the discv5 in node discovery, with plans to merge the PR into upstream
- Update on [Ultralight](https://github.com/ethereumjs/ultralight/tree/master) by [ScottyPoi](https://github.com/ScottyPoi) & [acolytec3](https://github.com/acolytec3)
- LIbrary update: Work with ChainSafe (maintainer of discv5 lib in TS) to update the cryptography library used in EthereumJS
- UTP transfer issue
- Identified issue of receiving out-of-order packets from Trin nodes, causing duplicate responses and clogging the UTP stream
- Current solution involved slowing down transfers and implementing packet queuing/ resorting
- Ping extension: Will prioritize the implementation of ping extension
- Hive test failure issue
- All hive tests failed currently due to a low-level bug between Hive and the discv5 lib
- Bug location has been identified and the fix is in progress
<br>
## Jan 6th, 2025
### 1. General update
- Upcoming team event: The event may either be a Portal Summit or an Execution client interop event, depending on attendance. The event is currently scheduled for March 10th & 11th in Berlin.
### 2. Team update
- Update on [Trin](https://github.com/ethereum/trin) & [Glados](https://github.com/ethereum/glados) by [Michael Ferris](https://github.com/mrferris), [Kolby](https://github.com/KolbyML), and [Milos](https://github.com/morph-dev)
- Trin
- Update portal_*Gossip to portal_*PutContent based spec
- Work on implementing ping extensions
- State network
- Hardware availability & node deployment: Hardware delays are resolved, and 20 nodes are being deployed to gossip state data from block 20 million to the latest. Initialization of the nodes with a snapshot is expected to take a day, with gossiping completion estimated in 15-20 days.
- Bridges & Testing: A few bridge nodes are being setup to help gossip heads and address missing state data during primary testing, ensuring smoother gossiping and synchronization.
- Timeline: Near-head state is expected to be live by the end of Jan
- Glados
- No major updates on Glados over the holidays
- A few PRs were merged, including a graph visualization for node census over time, helping track network dips and activity
- Update on [Samba](https://github.com/meldsun0/samba) by [Meld](https://github.com/meldsun0)
- Work is ongoing on the UTP library to improve coverage and test
- Work on content serialization and integration into the testing framework
- Update on [Shisui](https://github.com/zen-eth/shisui) by [Qi Zhou](https://github.com/qizhou)
- Merge code updates to align with the latest PutContent spec
- Pass all tests for the UPP code migrated from Trin
- Fix issues with concurrency and large data transfers in the Go implementation
- Test nodes on Glados to ensure stability
### 3. Other discussion
- Hive test failure issue raised by [Jason Carver](https://github.com/carver)
- Hive has been pinging with failures since Christmas Eve, likely due to clients updating to the new PutContent spec
- Teams are encouraged to investigate and resolve these failures to ensure test stability