Proposal: Decentralized Block Explorer

I’m working with Rick Dudley to build a decentralized block explorer that relies on IPLD-addressed content. This has some significant implications beyond just the block explorer itself. The block explorer itself will ultimately become a public good (which we can each host a node for if we want) but it actually provides some initial utility beyond just being a relatively simple block explorer (at first).

Here’s an initial, rough look at the general architecture. A proper spec will be forthcoming within a few days.

An Extensible Explorer that can grow with community Demands
Currently, the UI will be a relatively simple fork of the EthVM frontend, with the addition of a rudimentary internal transaction view. The reason this is starting out relatively simply is that we’re prioritizing standing up a full stack implementation to start troubleshooting and battle-testing the backend components for use in production since that’s the biggest potential bottleneck for mainnet.

However, we want to make this extensible and pluggable so it can modularly support new features (like contract verification and community-sourced labelling systems) that get progressively merged into core as they evolve if the community decides they should be.

Ultimate Vision: A Sustainable Ecosystem for Dapp Frontends and Underlying Data

The backend for the explorer is specc’d to be much more complex than it minimally needs to be for good reason. We’re working to lay the ground work for a P2P CDN, in a sense.

Data availability for web3 is still in a very nascent stage. Many projects currently follow a more web2-like funding model where you pay subscriptions up front to access tiers of data they’re sourcing or features they offer (see infura, blocknative), or worse, users are the product (see etherscan).

The ultimate vision beyond the explorer itself is infrastructure that instantly flows value in return for requested data. Anyone with hardware and an internet can supply and/or relay the data. Even end users should be able to recoup some of their consumption costs via a P2P connection to the network. This data could be a web frontend or it could be live ethereum state, which can be transformed (aka mapped) to be human-readable and consumable by a frontend, or any other potentially valuable piece of information.

This system provides the foundation for sustainable funding models for frontends as well.

By building a pay-as-you-go system that encourages the egalitarian distribution of data through an auctioning network using layer 2 technology (currently state channels), frontends and data availability can be sustainably incentivized and maintained. The Watcher nodes in the diagram above will be bundled as a dappnode package, which can be configured to host/relay configured data.

The backbone of all this is IPLD-addressable content. this structure is already widely adopted, and supports ethereum data natively, and VulcanizeDB which acts as both a Geth node and an accessible store of decoded Eth state, blocks, and transcations.

What’s needed from MetaCartel

Since this project is meant as a public good, we’re trying to bootstrap it as such. A development grant for a minimally-viable block explorer on the stack laid out (likely sans the payment infrastructure) above has already been procured. What’s needed from MetaCartel at this point is a community of contributors who want to work with me to build the project and perhaps more importantly, sustain this project in the long term beyond this initial work.

The immediate work is clearly very important, and, as I already have fulltime obligations as a core dev as SourceCred, I’ll need some help managing this project and will need developers to help me implement this vision. First right of refusal for these roles goes to Raid Guild members. Roles to Fill (Quantities depend on availability):

  • 1-2 project managers (in addition to myself)
  • 1-3 frontend devs (Vue or React)
  • 2-4 backend devs (mostly typescript, comfortable with databases (we’re using Postgres), IPLDs, and multiformats; willing to at least learn libP2P and webRTC if not already familiar.

Beyond this Raid, I can’t champion this by myself, as much as I would love to. The combination of complexity and a lack of hours in the day makes it impossible for me, and want to submit this for adoption at the doorstep of this community at least for now. Efforts I’ll be taking up in short-mid term, that I will need the community’s help on:

  • setting up a gitcoin grant and helping to find funding to evolve the project beyond this alpha/beta release (probably won’t make the upcoming round at this point but that’s okay)
  • Cultivating the community of people who become passionate about this project and share a desire to see it become a reality
  • Leading discussions with Rick as the project evolves with the purpose of iterating on the architecture