/u/jarinsThe Great Reddit Scaling Bake-OffEthereum

The Great Reddit Scaling Bake-Off

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.

https://preview.redd.it/q7hhi6lzlp551.png?width=1200&format=png&auto=webp&s=cdb26cbbe59e26f4fc73da5740da1308e2a87579

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.

  • Over a 5 day period, your scaling PoC should be able to handle:
    • 100,000 point claims (minting & distributing points)
    • 25,000 subscriptions
    • 75,000 one-off points burning
    • 100,000 transfers

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:
    • Users should be able to view their balances & transactions via a blockchain explorer-style interface
    • Exiting is fast & simple

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

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.

https://preview.redd.it/lunpaj18mp551.png?width=1120&format=png&auto=webp&s=da31db1db07cfe4f327692a7398772019b8eb7bd

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.

https://preview.redd.it/bqnvt50amp551.png?width=1120&format=png&auto=webp&s=812f46a0308aea370908eb73ca93abac810e58ba

***

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

submitted by /u/jarins
[link] [comments]

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. https://preview.redd.it/q7hhi6lzlp551.png?width=1200&format=png&auto=webp&s=cdb26cbbe59e26f4fc73da5740da1308e2a87579 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: 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. 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. 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. 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: A live proof of concept showing hundreds of thousands of transactions 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 Documentation How it works & scales Cost estimates (on-chain and off-chain) How to run it Architecture APIs (on chain & off) Known issues or tradeoffs 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. Over a 5 day period, your scaling PoC should be able to handle: 100,000 point claims (minting & distributing points) 25,000 subscriptions 75,000 one-off points burning 100,000 transfers 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: Users should be able to view their balances & transactions via a blockchain explorer-style interface Exiting is fast & simple 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: SubredditPoints: the ERC20 token Distributions: manages token supply & token claims 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 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. https://preview.redd.it/lunpaj18mp551.png?width=1120&format=png&auto=webp&s=da31db1db07cfe4f327692a7398772019b8eb7bd 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. https://preview.redd.it/bqnvt50amp551.png?width=1120&format=png&auto=webp&s=812f46a0308aea370908eb73ca93abac810e58ba *** We’ll be watching this thread and answering questions. Looking forward to what comes out of this! submitted by /u/jarins [link] [comments]Read Morer/ethereumEthereum

Advertisements

Leave a Reply