Aetherna

Aetherna is a place where audio content creators are able to upload their audio files and showcase it. Listeners are able to discover their content and reward them directly on an attention payed basis and optionally tip them if they really like it. The combination of time and money I think gives a better value of how quality content is measured instead of traditional likes and stream quantities. So in the end users don't pay a monthly subscription, but is completely based on usage of the platform. Creators pay the current prices for uploading their content. I believe these will go down in time. Listeners will eventually also be able to get rewarded in BSV by enhancing their experience on Aetherna with upcoming features. Last but not least users should be able to take their creations and statistics with them and leave Aetherna if they choose so.

Development

The app is developed using the following technologies:

  • Nextjs/React frontend framework
  • BAAS (Bitcoin as a service) through _unwriters bitbus and bitsocket apis. So there's no self hosted database.
  • Moneybutton for authentication and handling payments (attention time & tips) between listeners and creators
  • Txforge from libitx for building custom Metanet transactions. These are build upon account creation, audio content upload, profile info creation/update and audio statistic records like the attention time and tips. On account creation a root transaction node is created together with children transactions for the profile information and the content folder for the audio. They are funded with a proxy wallet and the data is signed with a Moneybutton signature. Relationships are figured out by the parent txId in the Metanet protocol. So using proper Metanet input signatures and writing to someones else's meta graph are things that still need to be worked on.
  • B-protocol and Author Identity Protocol are used in the Metanet transactions so the format of the OP_Return data approaches the current standards.

Challenges

I ran into several challenges during this learning process:

  • I started 3 months ago into Bitcoin development so catching up and understanding bitcoin and its complexity was a big challenge for me.
  • Creating a proper Metanet structure according to the white paper was another big challenge. Building custom transactions with inputs pointing to their parent signatures and signing it with Moneybutton was hard. Will improve these in the future.
  • Adding relationships between BProtocol data and keys to form data structures to be used in the application, I've built myself. That's why I didn't use the Map protocol yet, but will be improved.

Lessons

The last two months I went through an array of new and complicated topics. From the anatomy of Bitcoin to using it in an actual application. A little list of all the things I went through:

  • Keys/Addresses/Wallets/HD/Cryptography
  • Transactions/Inputs/Ouputs/Opcodes/Signatures/SigHashes/Merkel Trees
  • Bitcoin network/Propagation/SPVs
  • Miners/Mempools/Hashrates/Difficulties/Forking/Markets
  • Bitcoin dev tools (Moneybutton, _unwriter, libitx)
  • OP_Return Protocols
  • Metanet
  • Sharpening up my frontend skills

Achievements

The things I'm proud of in short are:

  • Gaining a better understanding on Bitcoin
  • All the little failed experiments in the process of learning and using the dev tools
  • Delivering a working Aetherna in two months

Future

Even though I learned a lot, I probably made mistakes. Therefor I'll need to do and rethink some things going towards an alpha. Some of these are:

  • Use full potential of the OP_Return protocols or if needed come up with new ones
  • Create better, meaningful Metanet transactions with proper signatures
  • Figure out delegations of Metanet transaction keys
  • Encryption of data for making content private
  • Combining Metanet with Moneybutton without a proxy wallet
  • Feature saleshop for enhancing platform experience
  • General performance like improving read times from Bitcoin
  • Improved webAudio implementation and streaming
  • Ponder on legal implications

Built With

  • author-identity-protocol
  • b-protocol
  • bitbus
  • bitsocket
  • bsv
  • css3
  • datapay
  • html5
  • moneybutton
  • nextjs
  • paymail
  • react
  • theme-ui
  • txforge
  • typescript
Share this project:

Updates