Building The Supply Side of The Reddit Community Points Engine

In Blog, Community by Darpan Keswani

The following is a highlight reel of the webinar held by Curvegrid x OMG Network on the 28th of August, 2020. The webinar was conducted by Dan Briskin (Software Engineer, Curvegrid), where he discussed how Curvegrid built a fully functioning dashboard for the Reddit Community Points Engine (our submission for The Great Reddit Bake-off) in under 30 days.

Who are Curvegrid?

  • Curvegrid’s MultiBaas aims to reduce the friction that comes with building on the blockchain such as blockchain implementation costs, technical complexity, and more.

  • Blockchain development is an entirely different and special skillset with a steep learning curve, and we feel like it doesn’t need to be there.

  • MultiBaas aims to bridge enterprise to blockchain without the associated costs. It is a ready-made toolkit designed to provide everything you need to build, iterate on your decentralized app, and interact with the blockchain.

  • Curvegrid’s MultiBaas provides a familiar interface that allows normal software engineers to quickly start working on the blockchain — from deploying smart contracts to executing more complex operations like event queries.

  • Enterprise wallets can make heavy use of this as displayed by the Reddit Community Points Engine.

Explaining the Back-End of The Reddit Community Points Engine

  • With MultiBaas we’re able to read data from the blockchain and write to the blockchain through F-transfers or interactions with smart contracts.

  • We’re also able to sign transactions through our enterprise HSM feature. So, instead of signing transactions manually through metamask, you can request the enterprise HSM wallet to securely sign and submit transactions on your behalf, opening the door to building Decentralized Apps.

  • MultiBaas sits between the dApp (Reddit Dashboard) and the blockchain but allows external users (Reddit Mods, Reddit Team) to directly interact with the blockchain through a Rest API. Because every software engineer has a good understanding of how to interact with another application through a Rest API, MultiBaas effectively cuts out the middlemen required for someone to access your dApp via blockchain.

  • The Reddit Community Points Engine dashboard we helped build alongside the OMG Network team is an authenticated dApp that bridges the gap between Ethereum and OMG Network. Now instead of interacting with two different blockchain nodes, you have one smooth interface to work it all from.

  • MultiBaas as a single point of integration allows us to integrate with the blockchain much faster.

  • Not only does the dashboard integrate with the chrome extension, it allows moderators to create and distribute community points at will. The dashboard allows you to distribute points to a single address or do bulk distribution.

  • The front page of the dashboard provides all the functionality required for day-to-day interactions required with the Community Points Smart Contracts — something the Reddit team specified in the Great Reddit Bake-Off post.

DEMO: Reddit Community Points Engine Dashboard

  • The video gives a quick demo of the Reddit Community Points Engine and discusses how Curvegrid went about building it.

  • We’ve deployed a subreddit points smart contract, a distribution points subcontract, and set the distribution contract to be the owner of the subreddit points smart contract.

  • Having done so, subreddit moderators can mint and distribute community points at will through the dashboard.

  • For day-to-day interactions, moderators can simply call the “advance next round” function in the distribution smart contracts, allowing them to mint more points when necessary.

  • After minting points, moderators need to approve the ERC20 vault to spend points on a moderator’s behalf.

OMG Network x Curvegrid: Reddit Community Points Engine Technical QnA

What Javascript Libraries were used to create the Reddit Community Points Engine Dashboard?

We used ethers.js to interact with metamask since we support local signers. In addition, we used the omg.js for some interactions with the OMG Network, though we’re looking to add more functionality in the future. We also used bignumber.js to format some of the data that passed between the OMG Network and the front-end. Altogether, not very javascript-heavy, which is one of the advantages of using the Multibaas middleware.

Will mods be able to use the dashboard without training?

Yes, once initialized every function is available on the dashboard. For day-to-day flow, mods can head to the distribution contract and mint, approve, withdraw, and deposit community points into the OMG Network, after which, they can distribute points to single or multiple people at once.

How did you get up to speed on OMG Network integration?

The OMG Network has a comprehensive developer portal with all the information we needed — from Plasma contracts, payment exits games, and more. We also used the block-explorer to ensure transactions are valid and received by the Watcher. The developer site in conjunction with the Omg.js API and working with the OMG Network team made integration easy.

What were some of the challenges you encountered while building the Reddit Community Points Engine?

On the dashboard side of things, abstracting everything correctly was quite a hurdle. Since we were testing locally, on Ropsten, and final distribution was happening on mainnet. Each environment had its own set of smart contracts — deployed by us or the team at OMG Network. We also had to be mindful of the nuances of the different platforms, for example, on Ropsten payments are made in ETH, but on OMG Network’s Mainnet, payments are made in OMG tokens.

Thanks to the help of the OMG Network as well as the documentation we were able to double-check that everything was set up and ready for production on mainnet.

Why does sending ROCKs through the community points extension not incur a transaction fee?

The way the OMG Network handles transactions via the UTXO model allows us to natively let users make transactions without having to pay for free. We have a fee-relayer server that takes a users transaction and pays on behalf of the user in OMG tokens.

How can point distribution be made faster?

Right now, a single UTXO can be reference only once per block/childchain interval. Through software, if we can split up one asset into multiple UTXO’s be able to distribute points in parallel. For example, if we have a list 1024 people awaiting distribution, we will be able to pre-split up all UTXOs in a binary tree and distribute to all 1024 addresses in one childchain interval. Much faster than the current ‘cap’ which is 500 childchain intervals transferring 2 transactions at a time.

What was the release process around the Reddit Community Points Engine like?

We have an upcoming blog post that details the complete 8-week product development process that went into building, developing, and launching the project!

What was it like working together on this project?

Jeff (CEO, Curvegrid): It’s a pleasure to work with a team that helps everyone move the needle on decentralization and blockchain! Working on this project really reinforced our belief that the OMG Network team and project is serious, comprehensive, and extremely professional.

Pong (Product Manager, OMG Network): From the OMG Network side, as an infrastructure provider there’s this myth of ‘build it and they’ll come (and deliver it to the end-user).’ But we’re happy that Curvegrid and us are aligned with the fact that we have to take the steps needed to make life easy for everyone who uses our product. Both teams believe that usability is number one, and we’re always looking to tighten the feedback loop — constantly conscious that we’re not building in a vacuum.

Want to join more exclusive OMG Network events like this webinar? Sign up for our mailing list and get early-bird invites straight to your inbox!

Subscribe to OMG