Inspiration
I've been working on a project that's called FanSociety - a web3 crowd funding protocol for musicians. It aims at solving funding issues for musicians that are operating in today's music business paradigm, and also aims to be a web3 app that has a purpose outside of the blockchain ecosystem, "a dapp for normies".
With a working protocol, the question was, where to deploy? I was moving forward with the idea that the protocol could be deployed to many networks and that the end user could then decide which chain they wanted to deploy to. This multi-chain deployment seemed like the right solution until I was introduced to PolkadotSDK The best option for the FanSociety protocol is a chain that is operated by the end users themselves, and Polkadot 2.0 makes that more accessible than ever before.
What it does
QNCH is an EVM app chain that hosts the FanSociety protocol that I previously engineered with a Solidity Proxy Contract Factory architecture. In addition, a custom pallet limits accounts that can externally deploy smart contracts to the chain, but the approved factory contract allows for FanSociety proxy contracts to deployed internally from within the chain.
How we built it
The custom pallet validates if an external 'create' call was signed by an approved account. Sudo has the ability to add approved accounts.
Challenges we ran into
I first tried a solution in which the validation step was performed after going through the mempool. The problem though was that the transaction wasn't sending an error to the external caller. Instead, the transaction would get sent back to the mempool and would get stuck in a loop, never getting finalized and never getting rejected. I then moved the deployment-control validation step to a location that happens before letting the transaction enter the mempool. This fixed the problem, provides a rejection error to the external caller and prevents the mempool from getting filled with transaction calls that will never get included in a block.
Accomplishments that we're proud of
First time building a parachain with PolkadotSDK and was able build to the spec I needed and submit on time!
What we learned
Tried multiple tools within the ecosystem, pop cli, and the polkadotSDK. Got more familiar with polkadot.js. Learned the whole process of deploying a parachain including building, generating keys, chain spec, registering a parathread, uploading wasm code and state code, deploying a collator and obtaining coretime. There's also a nice tool for ondemand coretime that can read the state of the transaction pool and call the extrinsic to pay and create a block based on parameters of the blockchain such as the last time a block was called or the state of the transaction pool. I'm looking forward to contributing to the tool with a few ideas that could increase customization options.
What's next for QNCH
Very happy with the progress that was made during the hackathon. The QNCH parachain is the logical next step for the FanSociety story. It allows the project to move forward in the Polkadot ecosystem with low startup costs given the new On Demand Coretime that is now available. We have a protocol that solves a real world problem in which web2 created the problem, a front-end web app, support services such as indexing which is much easier on a chain that only runs the FanSociety protocol, and now, a specialized blockchain network that is capable of being run by the users (musicians) of that very blockchain.
In order to expedite the development, I need support. I'm looking for mentors and financial support to focus solely on this service which I believe is a great match of a need and a technological solution.
This has been an on-and-off, part-time endeavor of the last couple of years and this hackathon project has brought clarity on next steps forward. There are additional, adjacent services which I'm also developing that can take advantage of QNCH/FanSociety, such as the next iteration of music distribution. Polkadot 2.0 makes it more accessible for a project like this to go live than ever before.
You can DEMO the app on the sepolia testnet. My vision has always been to provide a web3 service for non-web3 users.
Built With
- ethers
- frame
- hardhat
- papi
- polkadot-api
- polkadotsdk
- pop-cli
- rust
Log in or sign up for Devpost to join the conversation.