Market based information curation using natively-shortable bonding curves
Crowdsourced voting methods such as ‘Likes’ on Twitter and ‘Upvotes’ on Reddit have become a fundamental tool for curating content online. However, because curation is not incentivised, the majority of people optimise their experience by consume-curating content that has already been curated to some extent by others, for example by following well-known Twitter accounts. This leads to feedback loops wherein the visibility of content from well-known sources is amplified, while high quality content from atypical sources is left undiscovered.
In Heterotope, I propose a curatorial model that uses a market mechanism to incentivise the identification of high quality content from unexpected sources. In this model, instead of simply ‘Liking’ content, curators purchase tokens that signify support of that content. Curators who identify as-of-yet undiscovered high quality content are able to purchase tokens at a lower price, and subsequently sell them for a profit. As such, the price of the ‘Support’ token becomes a measure of how popular a piece of content is. Support Tokens are vulnerable to price-manipulation, because they are endogenously priced rather than being tied to concrete outcomes. To combat this, I introduce the Coupled Bonding Surface (CBS), a new market mechanism that is more resistant to price-manipulation than traditional token issuance algorithms. Using an Inverse CBS, an ‘Opposition’ token is issued alongside the ‘Support’ token. The price of the Support and Opposition tokens are algorithmically coupled, such that purchasing Opposition tokens drives the price of Support tokens down and vice-versa. This increases the risk associated with artificially inflating the price of a Support token, significantly improving curatorial quality.
Errrrrggggggg just a lot of plain-ol react, golang and web3 stuff.
Getting the CBS algorithm to work on a contract was a huggeeeeeee pain in the butt - the algorithm is relatively simple - price = [pro-suppy]^2/( [pro-suppy]^3 + [anti-suppy]^3)^(1/2), but because of the big exponents, there were all kinds of overflow issues on solidity, so the contracts ended up being a lot more complex than i was expecting