# Celestia Hackathon Ideas ### Original Data Square (ODS) visualizer Currently, there isn't an easy way to visualize the original data square of a Celestia block. This idea entails building a visualization tool (either CLI or web app) that visualizes shares in the original data square. The end result should show something like this: ![Screenshot 2024-02-20 at 10.09.45 AM](https://hackmd.io/_uploads/rkdvn1Gh6.png) with unique colors per namespace. We could special-case the reserved namespaces so they always use the same color. The tool could accept chain-id and block height as parameters. The long-term goal of this project could be to get it upstreamed into an explorer. See [celenium-interface#35](https://github.com/celenium-io/celenium-interface/issues/35). ### Rust Consensus Node Currently, the only Celestia consensus full node implementation is written in Go. We could write an experimental consensus full node implementation in Rust. The short-term goal of this project could be something minimal. Rough steps: 1. Start a Rust project that builds a binary with one command line argument for chain-id 2. Connect to the p2p network for that chain-id 3. Fetch a block height from an existing Go consensus full node for that chain-id. Log the block height and hash. The medium-term goal of this project could be to implement [`ProcessProposal`](https://github.com/celestiaorg/celestia-app/blob/main/app/process_proposal.go) in Rust so that it could be fed into [SP1](https://github.com/succinctlabs/sp1). Out of scope: p2p, networking, mempool. The long-term goal of this project would be to have a totally functional consensus full node implementation in Rust. Notable features include: can follow the tip of the chain, propose blocks, and sync from genesis. Name ideas for the binary: rtia, relestia, cars (inspired by Celestia-App RuSt). ### Rust `CreateCommitment` A subset of the previous idea that implemenets [`CreateCommitment`](https://github.com/celestiaorg/go-square/blob/17df7a207fbd75cf83c238618da54a2e3d021c61/inclusion/commitment.go#L14-L19) in Rust. This is important for roll-ups that want to generate the share commitment for some blob in Rust instead of Golang. ### Kurtosis package Currently, there isn't a [Kurtosis package](https://catalog.kurtosis.com/catalog) for Celestia. Kurtosis is a tool that enables developers to spin up local (or remote) test environments with containers. We could build a Kurtosis package for Celestia that includes a container for a consensus validator, a DA bridge node, and a DA light node. We could define a variant of the package with a faucet and local block explorer. This is kind of like [celestia-stack-internal](https://github.com/celestiaorg/celestia-stack-internal/). ### Address watcher [Etherscan](https://etherscan.io/myaddress) offers a service called "Watch list" that enables users to set up email alerts for Ethereum addresses. The user can choose to be notified when an address sends or receives some ETH. A similar service would be beneficial for Celestia users. Ideally a user could elect to monitor multiple Celestia addresses for operations like: - Address received TIA - Address sent TIA - Address delegated TIA - Address claimed TIA rewards from delegation - Address submitted a blob ### File uploader Create a front-end that makes it easy to upload files to Celestia. - Advanced option: explicitly set namespace (by default use hard-coded namespace or deterministic namespace based on file contents) - Advanced option: custom memo field. Can default to something like "submitted by blob.tools" Potential domain names: - blob.tools $23 or $3 on Namecheap - blob.engineer $25