Polkadot Infrastructure Directory

I'm building a thing that creates a bridge between web2/web3 and allows users to experiment with decentralized on-chain governance and voting games. To do so I'm learning everything about Substrate/Polkadot and the ecosystem, and the more I learn... the more I'm stoked by all the cool stuff I'm discovering. Thing is, that discovery process is very expensive in terms of time/energy.

I know it's early days, but it would be great to have a directory of projects building on Polkadot that you can categorize by type. For example: Web3 has a page of "projects building on Polkadot"

and it would be great to augment this by tagging projects by the infrastructure layer (1, 2, cross-chain, etc...), by type (oracle, end-user interface, voting mechanism, dex, etc...), or something else entirely like whether or not they've undergone a security audit. The more the merrier so content discovery is easy (and fun!) and people can build stuff faster.

Here's my thinking:

Being how the main feature of Substrate is that it's modular af and reduces repetitive code/mechanisms, it would be amazing to extend that with a directory of protocols/tools that you can just "plug in" to make your Substrate chain come alive. Like a pantry full of ingredients you can combine into a recipe.

For example: browsing through the blog and docs I've realized that Speckle OS is creating a modular UI so I probably don't have to worry about that, and Aragon and Edgeware are building stuff to experiment with the governance mechanisms themselves so I probably don't have to worry about that, and Substrate has all the chain logic so I don't have to worry about that, so then I can focus on just the unique novel things I want to innovate on :)

Imagination Vacation: it could be kind of like the current Substrate Runtime Recipes doc, https://hackmd.io/s/SJ6K_UnyV, but in a drag and drop template where you have a UI sketch of the chain and can drag and drop and swap the modules you want. It would then give you a codebase that you can launch or modify further. Also, if there was a standard format, people could new submit modules to the directory as they create them (like Rust's crates.io system)

To take that even further, then you could have recipes for everything: templates for fully baked (connected/working) blockchains that you can modify for various use cases. The ML world already does this with "model zoos" (templates for caffe and tensorflow models) and it would be so cool to have this for web3 too!

Edit: looks like the idea of a library of plugable/swapable blockchain components that has a drag and drop UI was actually mentioned here in "A Tale of Two Technologies", but specifically in relation to Substrate and the internal logic of a chain. It would be great to extend that to all the things your chain might want to connect with in the broader Polkadot ecosystem

Don't be put off! The bounty pot can be easily topped up. We are still working on reviewing the submissions too, and it is reasonable to guess that not all submissions will be awarded.

I wonder if such a directory can have a shopping cart. You pick the items you want, then go to check out and the download puts all the items together. The shopping cart is just the visual I had in mind, obviously the price is zero for open source products!

Yeah like a "Polkadot App Store". Drag and drop components to create a decentralized application/chain. Projects could even be incentivized to contribute by A) making it easy to integrate, but also B) listing the costs for using their protocol (computation speed/complexity as well as if you need to pay fees via a token).

You'd just need to create a framework for it like Rust did:

easy/automatic docs creation/integration

decentralized library (like crates.io) to easily find stuff

live code book templates (like mdBook) to make it easy to create tutorials and explanations of things

community portal to brainstorm, get help/feedback, and address problems or upgrades to the system

Then any project that wants to create a tool for the broader ecosystem has a clear roadmap:

make a thing

make sure it plays nicely with other components and can drag and drop into a chain based on a standard modules format

create examples/templates of the thing in the app store so people can explore a pre-built chain based on intended usecases and even a recommended UX flow

This would be opt-in of course so if someone wanted to just do their own thing that's fine, but if a team wanted something that's easy for other people to use and integrate they'd have a clear path for doing so. It would also help the community because if there's a module or thing we want (like a simple/cheap zk voting protocol), the community could just post a request for development, then people can stake a bounty to it, and then if someone builds and integrates it into the "app store" it can be reviewed and/or voted on, and if accepted anyone can then use in their Polkadot/Substrate chain/app.

If this were a thing, my first proposal would be to fund a security/audit team/process that can give ratings on expected security properties of modules in the app store. Note: not everything needs to be bullet proof for every use case, but I'd like to know what's what before making my decisions.

You could also maybe have a "testnet store" for stuff that's a WIP. That way people building things can get early feedback on their modules, and people doing research or experimenting with various mechanisms/architectures can have a wider variety of weird/cool/fun stuff to play with. Then if something is clearly useful or has high demand it can be funded to become "production ready" with more optimized code and a security audit and whatnot

Hard to roadmap it out as I'm not a UI/UX dev. But I think a 2D visualization with a relay-chain at the center (only one for now :) ) and some parachains attached as spokes. I'm guessing you would "drag-and-drop" the parachains off from some kind of sidebar and attach them to the relay chain.

The parachains would all be associated with some message types and some basic logic like "if message A comes in, log this event, and send these messages out". They would also have "triggers" that DApps can use.

Then you would be able to attach DApp pieces to the parachains and script some conditions under which they can cause triggers of the attached parachains.

Some of these conditions might be user intervention of some kind, so the UI could generate buttons for those. Other conditions might be on witnessing logs on an attached parachain.

The idea is to simulate the relay chain's and parachains' activity at a very high level and create a little scripting engine on top of it to prototype DApp execution flows.

In the future, it might even have a "deploy" feature where it can produce a configuration for creating a local relay chain with these parachains attached and will turn your DApp scripts into some more real source code. The second part in particular would depend on us knowing what kinds of tools will be used to develop cross-chain DApps.

And the parachains would come from a registry of real parachains built on or deployed on Polkadot, with information about category, developers, etc.

Oh interesting. I'm not sure if I fully understand though. To create some context:

in the past (on Ethereum): in order to build a protocol/dApp you'd create a smart contract that has some logic and then that's the protocol backend, and then you'd link it to a UI front end that involves some sort of web3.js or Metamask or whatnot, and then you'd pay tx fees to Ethereum and wait for them to impliment upgrades to lower fees and add functionality.

"currently": people can build their own Substrate chain with it's own functionality and fees (combining FOSS modules like building blocks), then they can plug that chain into L2/3/4 3rd party applications like browsers (Speckle OS or just use the basic UI that ships with Polkadot) or soon a cornucopia of other options as the marketplace matures, and IF they want the security of the Polkadot relay chain they can pay for that in dots and/or an appeal process, but the code all works regardless

and you're envisioning a future where: projects don't just launch their own Substrate chain and connect to the Polkadot network, but they actually launch their own relay chain that creates an ecosystem that connects to the main Polkadot relay chain (or exists as a separate network entirely)? If so, what would be the benefits of doing that vs describing the logic/parameters you want in a Substrate chain, then implementing various apps/protocols on that chain in a scripting language, and then connecting that chain to the broader Polkadot ecosystem to take advantage of things like identity, markets, UIs, etc... ?

I'm talking about a tool for prototyping and architecting multi-chain DApps via a UI and scripting interface -- actual deployment would be on the real relay chain.

Compare to the current Ethereum dev workflow:

Start in the browser with a Solidity/Vyper playground or on paper

Move to a local EVM / Dev Chain environment

Deploy on test network

Deploy on main network

For Polkadot:

Start brainstorming in the "imaginarium" UI which has drag-n-drop preimplemented components for various parachains, so you can test out interactions between many parachains and your DApp

imaginarium generates a deployment script to build a local relay chain with the necessary parachains attached

continue developing locally

migrate to testnet

migrate to mainnet

I'm not suggesting at any point that users each create their own production relay chain, but that they should be able to create "sandboxed" relay chains for testing and developing locally, before moving to the main network.

When you say a "local relay chain" you mean just a toy replica of the other parachains your new chain would interact with right? And presumably since those are chains that are already live on the Polkadot network they'd have representation on the testnet too?

I just got confused because at first I thought you were describing the "Polkadot 2.0" thing where there's a relay chain of relay chains of relay chains... but I think you're just describing a way to test the interaction of a new parachain (aka a Substrate chain) with other parachains in the Polkadot network right?

Also, it would be REALLY great if there was a clearer distinction between a "relay" chain and a "para" chain. I've read the papers, most of the blog posts, and several youtube presentations... but the terms still get mixed around in my brain. Does that happen to anyone else? I'd be willing to bet lots of DOTs that it does...

Is it too late in the game to consider renaming them, or at least somehow making the distinction between relay-chain and para-chain clearer?

I like Reddit because it's a relatively open forum where people can weigh in and add to the conversation. It's more of a live iterative thing than a static document. Medium feels a little one sided where you write, people read, and there's comments but they aren't part of the main experience. I've gotten a lot of value out of reading the posts on Polkadot's Medium page, but I think it would be even more fun if those ideas were presented and discussed in a dynamic environment.

If the bounty pot gets topped up and/or you'd like to create a bounty specifically for a post that refines the ideas in this thread I'd be happy to consider it :)

A fun extension to this would be to add tags for "social goods". For example:

if a token is tied to a chain that has cryptographic applications it might use inflation funding to further research in number theory or efficient cryptographic protocols

if a token is tied to a chain that supports decentralized organization/governance a portion of the inflation/fees might go towards funding research on sustainable public goods or FOSS

if a token has a cool mascot like a DOGE or bear or whatever, a portion of tokens could be sold off and used to support the protection of that species habitat

Obviously these considerations are very extra atm, but as markets create incentives for competition memes might be a legit differentiating factor ¯\_(ツ)_/¯ It worked for early alt coins, and frankly I'd like to see more fun/weird projects emerge. It might also help to get more people involved with projects/communities because people like strong memorable memes more than some arbitrary computer science project with a random name that was created for a handful of grad students to have something to do with their research. Step 1: make something people want. Frankly the fox logo/animation in Metamask is STILL one of my favorite things in the blockchain space because it's fun.

Also, while scaling has been the dominant conversation in the space for a while now... once that is solved (Polkadot, Ethereum 2.0, etc...) then we're going to have to actually start trying stuff out again. There's a YUGE bank of unrealized ideas from the 2014/2015 period before Ethereum became an "official" project and narrowed down their focus. It would be really cool to enable people quickly and easily to start to try out all the crazy things we dreamed about ✨

Anyways, Polkadot/Substrate makes the process of creating new things trivial, so this rant is relevant :)