Follow Us

Header Ad

Latest Posts

Categories

The Great Reddit Scaling Bake-Off : ethereum

tl;dr: Do you believe your Ethereum scaling technology can handle Reddit’s scale? It’s time to let the Ethereum community hear about it. Send your demo in the comments by July 31, 2020.

This is your chance to earn some fame but, to be clear, there is no prize if your solution is chosen or modified to meet Reddit’s needs. Our lawyer made us write this.

The Goal

In conjunction with the Ethereum Foundation, Reddit is inviting Ethereum scaling projects to show the community how your scaling solution can be used to bring Community Points to mainnet. Our goal is to find a solution that will support hundreds of thousands of Community Points users on mainnet today, and can eventually scale to all of Reddit (430 million monthly users).

We’ve evaluated some of the most promising scaling solutions, and have learned a few things:

  1. There are plenty of awesome projects that we don’t know about yet. We seem to learn about a promising new scaling solution every day.

  2. Most existing scaling solutions focus on the exchange use case, which favors optimizing for transfers. Many of these designs don’t take into consideration the costs of obtaining tokens or entering the scaling system, which can be significant. Community Points distributions have cost an order of magnitude more gas than all other operations combined, primarily due to on-chain storage costs associated with onboarding new users.

  3. It’s unclear how to determine the best solution. There is a lot of code, a lot of documentation, and a lot of hype out there. But there are very few objective real-world reviews or comparisons of various products/implementations.

  4. We need the Ethereum community’s help to figure this out.

Do you have a scaling project that meets the criteria below? If so, share your demo in the comments of this post by July 31, 2020. Please note that all demos need to simulate Community Points usage for 100,000 users.

We also invite all scaling experts in the Ethereum community to comment on any demos submitted to enable a better understanding of the trade-offs and compromises between different solutions.

We will review the demos and plan to share any updates by September. While we don’t expect any novel scaling projects, we hope that you, the Ethereum scaling expert, can show us how to scale Community Points.

Demos should include:

  1. A live proof of concept showing hundreds of thousands of transactions

  2. Source code (for on & off-chain components as well tooling used for the PoC). The source code does not have to be shared publicly, but if Reddit decides to use a particular solution it will need to be shared with Reddit at some point

  3. Documentation

    1. How it works & scales

    2. Cost estimates (on-chain and off-chain)

    3. How to run it

    4. Architecture

    5. APIs (on chain & off)

    6. Known issues or tradeoffs

  4. Summary of cost & resource information for both on-chain & off-chain components used in the PoC, as well as cost & resource estimates for further scaling. If your PoC is not on mainnet, make note of any mainnet caveats (such as congestion issues).

Requirements

Scaling. This PoC should scale to the numbers below with minimal costs (both on & off-chain). There should also be a clear path to supporting hundreds of millions of users.

Decentralization. Solutions should not depend on any single third-party provider.

  • We prefer solutions that do not depend on specific entities such as Reddit or another provider, and solutions with no single point of control or failure in off-chain components, but recognize there are numerous trade-offs to consider

Usability. Scaling solutions should have a simple end user experience.

  • Users shouldn’t have to maintain any extra state/proofs, regularly monitor activity, keep track of extra keys, or sign anything other than their normal transactions

  • Transactions complete in a reasonable amount of time (seconds or minutes, not hours or days)

  • Free to use for end users (no gas fees, or fixed/minimal fees that Reddit can pay on their behalf)

  • Bonus points:

Interoperability. Compatibility with third party apps (wallets/contracts/etc) is necessary.

  • Scaling solutions should be extensible and allow third parties to build on top of it

  • APIs should be well documented and stable

  • Documentation should be clear and complete

  • Third-party permissionless integrations should be possible & straightforward

  • Simple is better. Learning an uncommon or proprietary language should not be necessary. Advanced knowledge of mathematics, cryptography, or L2 scaling should not be required. Compatibility with common utilities & toolchains is expected.

  • Bonus Points: Show us how it works. Do you have an idea for a cool new use case for Community Points? Build it!

Security. Users have full ownership & control of their points.

  • Balances and transactions cannot be forged, manipulated, or blocked by Reddit or anyone else

  • Users should own their points and be able to get on-chain ERC20 tokens without permission from anyone else

  • Points should be recoverable to on-chain ERC20 tokens even if all third-parties involved go offline

  • A public, third-party review attesting to the soundness of the design should be available

  • Bonus points:

    • Public, third-party implementation review available or in progress

    • Compatibility with HSMs & hardware wallets

Other Considerations

  • Minting/distributing tokens is not performed by Reddit directly [1]

  • One off point burning, as well as recurring, non-interactive point burning (for subreddit memberships [2]) should be possible and scalable

  • Fully open-source solutions are strongly preferred

[1] In the current implementation, Reddit provides signed data for claims, but does not submit the actual claim transaction for the user (the user does that themselves). Note that smart contracts are considered independent of Reddit provided there is a path to decentralizing control over them.

[2] Subreddit memberships are currently implemented as a contract acting as an ERC777-style operator that can burn points on a monthly basis, but we are open to changing that implementation.

Community Points Overview

To help you get started, this is an overview of how Community Points work today and some stats on how it’s used. We are open to changing most implementation details, provided the basic requirements (above) are met.

Usage stats over the past month

Number of Community Points holders: ~17,500

Number of transfers: ~20,000

(reference: reddit.dappradar.com)

Number of subreddit memberships: ~800

Contracts

Community Points is built around 3 contracts:

  1. SubredditPoints: the ERC20 token

  2. Distributions: manages token supply & token claims

  3. Subscriptions: enables membership subscriptions in the form of recurring token burn

Deployed Contracts & Source Code

r/FortniteBR

SubredditPoints: https://rinkeby.etherscan.io/address/0xe0d8d7b8273de14e628d2f2a4a10f719f898450a

Subscriptions: https://rinkeby.etherscan.io/address/0x396b89db5e9317ff25360c86bd4e2aae3bbc62ea

Distributions: https://rinkeby.etherscan.io/address/0xc0c08af3f2a3f8d6730118e0d2de4367053ebddf

r/CryptoCurrency

SubredditPoints: https://rinkeby.etherscan.io/address/0xdf82c9014f127243ce1305dfe54151647d74b27a

Subscriptions: https://rinkeby.etherscan.io/address/0x77cb2dbeadb7313242d7f3070ce8fc98e96080e4

Distributions: https://rinkeby.etherscan.io/address/0x1c5122bfeba106eea33cf5bdf2004ab22213ca20

Implementation Contracts

From these proxy addresses, you can find the implementation contracts and source code using Etherscan’s Proxy Contract Verification tool or Read Proxy Contract interface.

Points Distribution & Claims

Token supply is controlled by distribution rounds managed in the Distributions contract and triggered by Reddit. For each round (occurring ~monthly), Reddit submits a proposal for points distribution to a subreddit for approval. Once approved, Reddit issues signed claims for individual users according to the agreed upon points distribution. These claims can be redeemed on-chain. Claims are obtained from Reddit, and submitted to the Distributions contract, which validates the claim and calls the Subreddit Points contract to mint points.

Post image

Memberships

Subreddit memberships are obtained by burning points via the Subscriptions contract. Redditors can optionally configure their membership to be renewable on a monthly basis without additional interaction. The Subscriptions contract is granted permission to burn points by being configured as an ERC777-style default operator in the Subreddit Points contract.

Post image

***

We’ll be watching this thread and answering questions. Looking forward to what comes out of this!

    Leave Your Comment

    Your email address will not be published.*

    Forgot Password