Skip to content

feat!: add blobstream rpc methods and explorer UI - #9

Open
Ferret-san wants to merge 13 commits into
mainfrom
blobstream-service
Open

feat!: add blobstream rpc methods and explorer UI#9
Ferret-san wants to merge 13 commits into
mainfrom
blobstream-service

Conversation

@Ferret-san

Copy link
Copy Markdown
Collaborator

Overview

Built out a full blobstream + demo stack and refreshed the explorer UI to a glassy, Celestia‑toned map with a fiber bridge and paginated columns. The RPC service now implements blobstream tuple roots/proofs, the CLI has deploy + demo commands, the relayer and mock contracts are integrated, and the UI runs via Bun/Elysia with click‑to‑inspect modals.
Key changes (highlights)

  • Blobstream RPC implementation + validation and proof/root handling in src/rpc/blobstream.rs, wired into src/main.rs and src/rpc/mod.rs, with coverage in tests/compat_blobstream.rs, tests/compat_report.rs, and tests/process_server.rs.
  • CLI and orchestration: localestia blobstream deploy and localestia demo added in src/cli.rs, relayer moved to src/relayer.rs, binary wrapper in src/bin/blobstream_relayer.rs.
  • Mock contract + tooling: Foundry setup and mock contract in contracts/, deploy script in contracts/scripts/deploy_mock_blobstream.sh, plus scripts/setup_anvil.sh.
  • Explorer UI: Bun + Elysia server with map view, fiber video bridge, and paginated columns + modal JSON inspector in ui/src/index.ts and ui/package.json.
  • Added dependencies for CLI and UI (clap, ethers, redis) in Cargo.toml and ui/package.json.
    Docs updated
  • README.md now documents blobstream RPC methods, CLI deploy/demo commands, demo UI usage, and relayer usage. It also reflects the current explorer (map + fiber stream + paginated columns + modal).
    How to use the new features (as documented)
  • Deploy mock contract: localestia blobstream deploy --eth-rpc-url http://127.0.0.1:8545/ --private-key 0x...
  • Run demo stack: localestia demo --relayer-interval-ms 1000 --ui-port 3030
  • Run UI manually: cd ui && bun install && CELESTIA_HTTP_URL=... ETH_RPC_URL=... BLOBSTREAM_CONTRACT_ADDRESS=... bun src/index.ts
    Files of interest
  • src/rpc/blobstream.rs
  • src/cli.rs
  • src/relayer.rs
  • src/bin/blobstream_relayer.rs
  • tests/compat_blobstream.rs
  • contracts/src/MockBlobstream.sol
  • contracts/scripts/deploy_mock_blobstream.sh
  • ui/src/index.ts
  • README.md

Comment thread contracts/cache/solidity-files-cache.json Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

figure contracts/out should be in .gitignore too?

@Ferret-san

Ferret-san commented Feb 24, 2026 via email

Copy link
Copy Markdown
Collaborator Author

@gbarros

gbarros commented Mar 4, 2026

Copy link
Copy Markdown
Contributor

Don't forget to merge #8 and rebase here, so 65731b8
can fix the same issue here.

@Ferret-san

Copy link
Copy Markdown
Collaborator Author

merged main into the branch, plz lmk if you encounter any issues!

@nuke-web3

Copy link
Copy Markdown
Member

pushed up:

  • a fix to a broken Cargo.lock & ran cargo fmt"
  • fixed broken build
  • cargo clippy --fix

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just in the explorer UI? IMHO we don't need the images/logos at all for a devtool 🤷

Comment thread src/rpc/blob.rs
Comment on lines -103 to -122
// async fn share_get_eds(&self, height: u64) -> RpcResult<ExtendedDataSquare> {
// self.storage
// .get_eds_at_height(height)
// .await
// .map_err(|e| jsonrpsee::core::Error::Custom(format!("Failed to get EDS: {}", e)))
// }

// async fn share_get_range(
// &self,
// height: u64,
// start: u64,
// end: u64,
// ) -> RpcResult<GetRangeResponse> {
// self.storage
// .get_share_range(height, start, end)
// .await
// .map_err(|e| {
// jsonrpsee::core::Error::Custom(format!("Failed to get share range: {}", e))
// })
// }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did there methods get moved or replaced?
I see some, but not these, are in src/rpc/header.rs - just want to check 🙏

@gbarros gbarros left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've pushed a couple of smaller fixes, it it's all green now for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants