June 2025 1.- Endpoints: * portal_historyRoutingTableInfo endpoint done. * discv5_ping: In order to implement it there is a refactor to be made on the library we are using: * [Discord conversation](https://discord.com/channels/697535391594446898/1050616638497640548/1381765398889758931) * [Issue open](https://github.com/Consensys/discovery/issues/195) 2.-Besu with Samba Plugin: * There are four endpoints: * samba_getBlockBodyByBlockHash * samba_getBlocHeaderByBlockHash * samba_TransactionReceiptByBlockHash * samba_getBlockHeaderByBlockNumber * There is an interface available to be used: ``` @Unstable public interface HistoryService { Optional<BlockHeader> getBlockHeaderByBlockHash(Hash blockHash); Optional<BlockBody> getBlockBodyByBlockHash(Hash blockHash); Optional<List<TransactionReceipt>> getTransactionReceiptByBlockHash(Hash blockHash); //The characters in the string must all be decimal digits Optional<BlockHeader> getBlockHeaderByBlockNumber(String blockNumber); } ``` 4.-Reduce size of Docker Image and remove unnecessary or duplicate libraries: Done: * The building process for having a fatJar was reevaluated and the original samba-1.0-SNAPSHOT.jar of 208M was reduced depending on the targeted platform. So now we have and there is a gradle task that generates: * samba-1.0-SNAPSHOT-all.jar 208M * samba-1.0-SNAPSHOT-linux-aarch64.jar 176M * samba-1.0-SNAPSHOT-linux-x86_64.jar 176M * samba-1.0-SNAPSHOT-macos.jar 112M * Docker images were evaluated: * standalone: It is **less than 1 GB **and these are the main reasons: * Base Image: ubuntu:24.04 * This image alone weighs around 80–90 MB compressed, but ~200–250 MB uncompressed. * Installed Packages: These add ~250 MB total or more. * openjdk-21-jre-headless=21* → ~120–200 MB * libjemalloc-dev=5.* → ~5–10 MB * adduser=3* → small * Samba JAR: It adds in the worst case 208M. * Besu with Samba as a plugin: It is over 1 GB and these are the main reasons: * Base Image: hyperledger/besu:25.6.0 * This is an official Besu image weighs around ~350–450 MB (compressed) and ~600–800 MB (uncompressed) * Samba JAR: It adds in the worst case 208M. 5.- [Backlog after specs changes](https://ethresear.ch/t/using-portal-network-protocol-for-history-expiry/22658): * Content modification: * Headers should not be considered. We should removed: * Block header by block header hash * Block header by block number * Now it use RLP: * Remove SSZ on content. * Adding a Range Find Content (0x08) and RangeContent (0x09) interaction * Content id function May 2025 1.-Execution block proof SSZ completed 2.-Protocol updtes: * Protocol versioning ready * Update Accept code ready * Add a varint size prefix to the content item send over uTP * Updated the putContent endpoint to latest spec changes 3.-Validations: * Pre-merge HistoricalAccumulator ready * Added Validation for pre-merge Block Body and Receipts completing all pre-merge validation * Added Validation for merge to capella headers, enabling full validation for merge to capella for Block body and Receipts * Added header validation peer fallback mechanism to ensure validation ability in the event bad header data is recieved * Added temporary infrastructure to support beaconStore so that we can now run on the latest version of hive again, though we will still have to determine how we are going to retain the stored summaries 4.- Endpoints: All endpoints are ready except these ones: discv5_recursiveFindnodes,discv5_ping,discv5_lookupEnr,portal_historyRoutingTableInfo. We will finishe them in June. 5. Logs improved. Summary information is also shown we Samba is started. Is it possible to set them by this cl option: --logging= [Screen Shot 2025-05-30 at 09.57.36](https://hackmd.io/_uploads/rJfUi7Dzgl.png) 6. A bug when restarted a Node was address. Now is possible to restart a Node. 7. POKE mechanism completed 8. We have added documention: [* Besu with Samba Plugin](https://github.com/meldsun0/samba/tree/main/besu-plugin) * [Steps to installing on a Server and all availabe CL Options](https://github.com/meldsun0/samba/blob/main/README.md) * [Config files to install Samba using Docker Compose](https://github.com/meldsun0/samba/tree/main/devops) 10. Intances: * Samba standlone: * [Image on DockerHub](https://hub.docker.com/repository/docker/meldsun/instances/tags/samba-standalone-arm64/sha256:4ea19277161b745acb63a8202e18f8400d7f21b27e5843329fa9edb0180f167c) * [Grafana](http://35.86.100.151:3000/). We have Grafana, Prometheus and Loki. It is unstable but will be fixed soon. * [Samba Node](https://glados.ethportal.net/network/node/0xf9dc8bda62dfcc672980b615e18f7eee89a705e9b1c06483f010b6b1ddce5775/) ``` curl --location 'http://ec2-35-86-100-151.us-west-2.compute.amazonaws.com:8545' \ --header 'Content-Type: application/json' \ --data '{ "jsonrpc": "2.0", "method": "discv5_nodeInfo", "params": [], "id": 1 }' ``` * Besu with Samba: * [Image on DockerHub](https://hub.docker.com/repository/docker/meldsun/instances/tags/besu-with-samba-arm64/sha256:bfd98346f276016b6f1abf5dbaa0d6bde02e4096cd5f519c786f393605e68fba) * [Besu-Samba](https://glados.ethportal.net/network/node/0xdebbfd4f91313929c2874a7d2dd9303464fa922ad1bf8331a7132d27d0965d9e). It is not visible right now as Besu is not exposing the correspoding endpoint. * Endpoint: samba_getBlockBodyByBlockHash * Example: ``` curl --location 'http://ec2-34-220-243-94.us-west-2.compute.amazonaws.com:8545' \ --header 'Content-Type: application/json' \ --data '{ "jsonrpc": "2.0", "method": "samba_getBlockBodyByBlockHash", "params": ["0xcb278a973370d2b1ba0cd9e0f25d1329ccb11d7ddca21c9df5ba2362d59ff2d3"], "id": 1 }' ``` April 2025 1. PoC with Besu: * Samba could be used as a library: samba:1.0-SNAPSHOT library. * We have an [image of Besu with Samba on dockerhub](https://hub.docker.com/repository/docker/meldsun/besu-samba-plugin) * The plugin just discovers other portal nodes but nothing else. We are working on making it call the corrsponding endpoints. You can follow steps on [README.md](https://github.com/meldsun0/samba/tree/main/besu-plugin) and run it locally inside docker. 2. UTP Library release[ 2.0-SNAPSHOT](https://github.com/meldsun0/utp/releases/tag/2.0-SNAPSHOT) 3. discv5 endpoints: * discv5_findNodes **Done** * discv5_talkReq **Done** * discv5_routingTableInfo: **Done** * discv5_addEnr: **Done** * discv5_deleteEnr: **Done** * discv5_ping: [WIP](https://github.com/meldsun0/samba/tree/discv5_ping) and some dicussions happening on discord. * discv5_recursiveFindNodes: Pending 4. portal_history endpoints: * portal_hisoryRecursiveFindNodes **Done** * portal_historyTraceGetContent **Done** 5. Other tasks: * Content SSZ Union Update **Done** * Besu will provide us with two intances: *Samba standalone* and *Besu with Samba as a plugin*. So its configuration and everything relative to having them up and running and monitoring them will be task for next coming deliverables. * Two issues were open on [consensys discovery library](https://github.com/Consensys/discovery/): * [LocalNodeRecordStore possible concurrency issue when updated it on DiscoveryManagerImpl](https://github.com/Consensys/discovery/issues/190): * [Updating socketAddress + transportLayer on LocalNodeRecord once DiscoverySystem is started](https://github.com/Consensys/discovery/issues/189) March 2025 1. portal_hisotrylookUpEnr endpoint **Done** 2. portal_historyLocalContent endpoint **Done** 3. Gossip Algorithm ready and correspoding endpoint: portal_historyPutContent. The actual historyGossip endpoint doesnt exist anymore, it was replaced by put content 4. Accumulator WIP. It will be finished next week. 5. Besu PoC ready. It can be found here: https://github.com/meldsun0/samba/tree/main/besu-plugin. We have there the whole structure in place to plug samba as a library when the re architecture of the code is finished. There are instructions where you can easily run a Besu node with the plugin already installed and one endpoint working. 6. Once this is ready we are planning to add a tutorial about Besu plugins on https://epf.wiki/. 7. UTP Library refactors being done and will be available next week. 8. Re architecture of whole node so it can be used as a plugin, as a library and as a standalone solution: 8. WIP: https://github.com/meldsun0/samba/tree/besu-plugin-refactor 10. New things that need to be added as part of on-going updates: 8. Content SSZ Union Update (WIP) Here is the output of running hive test after all the changes: ![Screen Shot 2025-03-28 at 21.59.11](https://hackmd.io/_uploads/Hyhk86N61e.png) There is one error on the portal_historyPutContent that we are working on. February 2025: 1. portal_historyFindContent endpoint **Done** 2. portal_historyOffer endpoint **Done** 3. [UTP library released: 1.0-SNAPSHOT](https://github.com/meldsun0/utp/packages/2417109) 4. porta_historyGetContent (WIP to be finished by mid next week) 5. New things that need to be added as part of on-going updates: Ping extension refactor **Done** Content SSZ Union Update (WIP) Here is the output of running hive test after all the changes. It is visbile the reduction of failing tests with the new endpoints implemented: ![Screen Shot 2025-02-24 at 18.11.20](https://hackmd.io/_uploads/BJwYlDq9Je.png) January 2025: 1. [Finish SSZ deserialization of content received from FindContent-Content](https://github.com/meldsun0/samba/tree/main/core/src/main/java/samba/domain/content) **Done** 2. portal_historyGetContent endpoint not associated with UTP.(WIP) 3. portal_historyStore endpoint not associated with UTP. (WIP) 4. [UTP library PoC](https://github.com/meldsun0/samba/tree/utp-getcontent) You can see from the image uploaded that new test are passing: ![Screen Shot 2025-02-24 at 17.35.29](https://hackmd.io/_uploads/r1xXOU991e.png) 5. FindContent-Content and Offer-Accept implemented not associated with UTP: We almost finished getContent interaction completely, and it is shown on the image above. These endpoint needs UTP so we made certain tasks that we were supposed to do in February. It was a better strategy that just concentrating in things not relative to UTP as we first supposed. 6. Offer-Accept not implement but will go in February. 7 Conversations with Besu are public and happing.