-
-
Melobyte
-
Invoking the function and approving the mint transaction
-
The NFT marketplace displaying the song assets for sale
-
The creator upload page where the metadata gets uploaded
-
The track waveform and the unique fingerpirntID
-
The track waveform with the first 15 seconds selected as the introduction to be minted
-
Uploading the stem files, which act as the proof of creation
-
Illustration of how the recursive binary tree works
Decentralising Music Assets using Soroban
Melobyte is a decentralised platform built on the Stellar blockchain powered by Soroban that focuses on protecting and decentralising music intellectual property. By allowing artists to upload and mint parts of their songs as royalty-bearing tokens, it ensures their creations are protected while offering fans a unique opportunity to invest directly in these musical assets. The integration with Soroban ensures fast, secure, and transparent transactions, providing an efficient solution to the challenges traditionally faced by music creators in an evolving digital landscape.
Inspiration
Melobyte was inspired by drummer Gregory Coleman, whose iconic 4-bar solo was sampled thousands of times in songs that made over millions of dollars, however he was left without compensation, resulting in him tragically dying homeless on the streets of Atlanta.
Many artists today struggle with issues such as inadequate pay from streaming platforms, intellectual property theft, misattributed song credits, and ambiguous royalty structures. Even the most atomic parts of the song, like an individual beat, often lack protection.
Melobyte addresses these concerns using blockchain technology. It provides artists with a platform to protect their intellectual property all the way down to the individual beats and bars and through the decentralised token system allows artists to earn royalties on their songs ensuring that they are fairly compensated, and for fans to invest in these new assets.
The following research paper also played as an inspiration: https://arxiv.org/abs/1911.08278
What it does
Once the artist selects to mint their track a freighter popup appears asking the user to approve the transaction, which will invoke the host function to mint and ask to transfer 256 XLM from their account. Once the transaction has been approved and signed using the freighter wallet extension the artist is redirected to the creator uploader page. Here they input the metadata of the track, upload the full track and the album cover. They will also have the option to encrypt the upload to IPFS.
The track waveform will then be loaded and the artist annotates the track to identify sections such as Intro, Verse, Chorus etc so specific parts of the composition can be identified within the dataset. They can also view the audio fingerprint. The artist then uploads the multi-channel audio files of their song as a proof of creation to instantiate the creation medatata to a base layer that refers to the encrypted upload of the multiple channel audio files on IPFS. The self-referencing binary tree is split into the stems so at the atomic level a single beat, syllable, note or bass is a piece of intellectual property worth of protection.
Once the metadata is instantiated to the base later and the multichannel audio files are uploaded to IPFS fans and other artists can access these assets in the marketplace. An ERC721 marketplace contract is deployed to perform trust-less validation and execution of NFT trades and these tokens can be sold.
Workflow and Technology
[Rust] Smart Contracts:
- An implementation of ERC721 token demonstrating how to convert an Ethereum standard to Soroban.
- A contract that uses the converted ERC721 implementation.
- A marketplace contract that performs trust-less validation and execution of NFT trades.
[Bash] Deployment and Initialisation Scripts:
- A collection of Bash scripts that facilitate the deployment and initialisation of the smart contract and deployments of the local standalone network.
[Astro] Font end implementation:
- Developed using Astro, mainly as it was a new learning experience working with this framework and is more flexible, which allowed me to build UI with any popular component library.
- Exposes the smart contract functions letting you mint, buy and transfer the tokens.
Security
- A storage crate that allows more convenient api for the Soroban storage access.
- Secure storage using Web3Storage and the CryptoJS library to encrypt uploaded files.
[Typescript]: Components and Hooks
- These are the functions and components that make the functionality of the UI work:
- A recursive binary tree that is used to organise the stems into their individual beats to protect the most atomic part of the song.
- Wavesurfer.js: Used to display the waveform and the unique track fingerprintID.
Payments
- Soroban - used to streamline the payment system and connect to the Stellar blockchain. Useful for scalability and ensuring instant and transparent transactions for artists and stakeholders.
- Through the ERC721 token integration, artists can now benefit from automated token royalties.
What's next for Melobyte
The journey of Melobyte is just starting. My primary focus would be to improve the UI and continue testing and auditing the contracts. Then the platform will be suitable to deploy live around the release of the mainnet this will allow me to onboard artists and fans. Some ideas I want to add in the future:
- Research and implement new token architectures better suited for Music.
- Add an NFT pass using ERC-3643 that allows for early access to songs.
- Add the ability for music streaming.
- Add music streaming bonds to help music creators get advances on their anticipated streaming revenues.
Limitation
Being a solo-developer and this being my first time using Soroban there were several constraints and limitations I had when developing this. Most notably is that the app doesn't work with the latest version of freighter (version 5.5.0 released 16 September 2023) and due to it being a day before submission I couldn't update it. So currently any previous version of the freighter wallet works.
Built With
- astro
- javascript
- react
- rust
- soroban
- typescript
Log in or sign up for Devpost to join the conversation.