The unique features of the IC (permissionless, censorship-resistance, public governance, recursive incentives and capture-resistance) allowed the idea of shared ownership to take form. Without the IC, it's not possible for a truly democratic ownership model to be developed with such ease. As a result we decided to take on the most broken system of all, the music industry, which is ready for a disruptive technology. This lead to the formation of MUSALL. Our aim is to lower the barrier to entry for musicians to create art, as well as for fans to become investors. We also wish to incentivise engagement in the arts. Thus through shared ownership in art, consumers and musicians share in profits, which practically means fans will play music on repeat. Our hope at MUSALL is to see a flattened structure in our society, and we believe smart contracts on the IC, and shared-ownership is the fastest way to our vision.
What it does
Musicians who access MUSALL are able to see other contracts they might like to investment in. They may also create a contract on the platform. The requirement is that the contract is well specified and includes fields for "Description of work", "Scope of work", "Terms of ownership" and cost of shared ownership. These fields provide enough information to ascertain whether the contract is a good investment; and as we grow at MUSALL we hope to develop our contracts to be binding for all parties concerned. Fans may also access MUSALL and provided they have a wallet attached to their account they may also buy a part of the shared contract. In this way ownership and royalties is shared between fans and musicians.
How we built it
First we built the contract on the backend using Motoko. We needed to figure out what a legally binding contract is in the "real-world" and try to translate that to a smart contract. Once we had this definition we made the contract canister in code and called it MUSALL. Then we made the FileLoader, a separate canister to store and retrieve files on chain using a url. We pass the url to MUSALL when we create a contract. The result is that every contract is self-contained and associated files can be easily retrieved. This also means that larger files can be uploaded while not risk lose of associated contract data. The front end UI we did in ReactJS and where needed we used the
didc bind command to build and subsequently call backend services from the frontend.
Challenges we ran into
We found that .wasm files would not build without an error code 5 on some machines and so we learned how to use
didc bind to build TS and JS definitions to call external canisters locally. We successfully deployed all three canisters (MUSALL, FileLoader, MUSALL_ASSETS) to the main net, but our frontend did not display and so we had to do adjustments on the frontend to render correctly.
Accomplishments that we're proud of
We are two guys who were new to Motoko, and learned it very fast. This is a testimony to how well the language is designed, but we also feel proud that we could produce this product in such short time. We are happy with this, but as you can tell from our presentation pitch, we are keen to keep developing and implementing more features to extend MUSALL to a streaming service and ultimately develop shared-ownership into a model for a wide range of contract types: especially those not traditionally done on chain.
What we learned
We learned the IC and it's benefits: governance model, privacy and security features, borderless, global access properties, and crypto-economics. We learned what both of us were best at doing and we executed on this. We taught each other whatever the other did not know, and gave feedback regularly with the aim of improving MUSALL. In addition we learned how to write Motoko and Rust, learned how to use the Ledger and II. Finally we learned how to scope a project and iterate fast between testing, so that we can deliver a coherent prototype, but also design our prototype to scale to fit more extensive features that are planned.
What's next for MUSALL
First up is the completion of in app-purchases of contracts using the nns-Ledger, which we aim to complete 26 June 2022. Then we will refine the UI and improve it. We plan our next big feature of music file uploading and streaming on MUSALL for the 20th July 2022. Followed by the feature of paid royalties to our contract owners via the nns-Ledger. We will then market MUSALL and might outsource this part, as well as leverage the IC community to encourage use of the Dapp. Finally we will extend the MUSALL contract to include other types of contracts, notably in Film and Media.