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

Share this project:

Updates