Metarss
Metarss is a rss feed hub where contents are stored on the blockchain. Users have the incentive to store and promote their favorite content on chain, they can promote or flag content they like / dislike and add comments, positive or negative votes and tags on news channels and individual feeds/articles.
The problem
In these times there is a great amount of news and information flooding the internet, a great amount of that is propaganda and biased viewpoints which can be modified or deleted or have forged origin/authorship. Itβs also not easy to discover interesting information or knowing what are the positive and negative viewpoints of the information provided.
A solution
Many news providers use RSS (or atom) feeds to publish their content on the internet, rss feeds provide the latest news on channels by accessing a url. This format is also provided by major sites (google news, reddit, twitter) and for many types of content (news, blogs, podcasts, papers, etc). By storing these channels on the blockchain, a record of many news and content providers can be stored on chain, commented, rated and easily accessed by anyone.
Incentives Model
Users fund these rss channels through the website, funded channels publish the channel information and news feeds (while funds are available) on the blockchain. Users also fund comments / posts / votes, the remaining of these funds can be used to publish new feeds.
To incentive users to open new channels, a percentage of the interaction funds on the channel or any item of the channel can be rewarded to the user who funds the channel, up to a certain amount.
Authors can also be rewarded by including a xml field with their bitcoin address on the rss and receiving a percentage of the interaction rewards.
RSS Metanet protocol
OP_RETURN meta <πππππ> <ππ₯πΌπ·ππππππ‘>
rss | rss.item | rss.item.comment | rss.item.vote | rss.item.tag
metadata | NULL
payload
To maximize compatibility with existing readers the rss information is posted as-is inside a metanet node/transaction, with the exception that xml items are split into individual metanet nodes. Newer versions of the channel or posts correspond to new versions of the related metanet node.
The payload field contains the rss channel or item xml, if its a vote or comment it contains the corresponding content.
Current state
While the execution/coding of the program is decent its still half-way, in the demo provided the frontend is not connected to the backend so the channels cannot be published yet. The first release is expected to allow users to publish/fund channels, the second release to allow them to tag, comment and vote contents.
There is also plan to release open-source libraries from this work for example to split utxos and chain transactions.
How I built it
The site is built using svelte on the frontend and express.js on the backend.
Challenges I ran into
Quickly firing up to hundreds of transactions. Rss parsing (without modifying) and versioning, others.
Accomplishments that I'm proud of
Figuring a robust way to publish channels (initial publish may contain hundreds of articles), by spliting utxos and only on the next block publishing lists of txs for each utxo. The versioning of rss channels and items also works well (by creating unique ids based on required fields).
What I learned
Metanet protocol, rss/atom protocol, xml/html parsing on frontend and backend, utxo splitting, svelte framework, others.
What's next for Metarss
1.0 - Users can fund/publish channels 2.0 - Users can vote, comment, tag contents.
Built With
- express.js
- node.js
- svelte
Log in or sign up for Devpost to join the conversation.