RFC: DIP for Simplifying Testnet Token Distribution for Workshops at DEVCon(nect)?
Before finalizing this as a DIP, we seek feedback from the community. We’re open to suggestions, modifications, and any potential logistical concerns that might need addressing. Since DevCon is approaching fast, we ask the community to consider this as soon as possible.
Authors: kkonrad.eth; hugo0.eth. We would like to thank Ligi for the initial inspiration at EthBerlin3 and idea of potentially implementing this as a DIP.
Abstract
This DIP would propose a method to simplify the process of distributing testnet tokens at DEVCon(nect). Specifically, a token claim link should be send with each registration welcome email. This an incremental improvement over the clever distribution method development for EthBerlin3.
Motivation
At Ethereum workshops, participants often need testnet Ether for their experiments and prototypes. Currently, obtaining these tokens can be an inconvenient process, detracting from the main objectives of the event. At EthBerlin3, an innovative method was used where scratch cards were handed out to distribute Goerli testnet tokens. However, each gift card corresponded to a new externally owned account (EOA), and users had to manually enter a seed phrase to gain access. We aim to further streamline this process.
We want to streamline the process of receiving testnet tokens by sending a claim link to every participant of the workshops in their welcome email.
Specification
Proposal: Distribute testnet tokens by including a link in each registration confirmation email.
Mechanism:
- Participants register for DEVCon(nect).
- Upon successful registration, they receive a confirmation email. This email will contain a unique link or set of unique links.
- By clicking on the link, participants are taken to a webpage where they can directly claim their testnet tokens to their preferred wallet address. Each link is claimable only once (it is not a faucet).
Implementation Details:
We intend to build this functionality as a plugin on the Pretix platform. Pretix already supports merge mailing via Python scripts for attestations (see GitHub - efdevcon/pretix-attestation-placeholder-plugin: Pretix plugin to support placeholders for attestations), a similar mechanism can be used to dispatch unique links to participants. This system will allow us to send thousands of emails with individualized token claiming links efficiently.
Each link is a Peanut link. When a link is created, funds that are being sent are deposited into a Peanut smart contract. This contract holds the funds until they are unlocked using the link in the future. Each time tokens are deposited into a contract a seed is created to protect the funds. This is used to deterministically generate an asymmetric key pair, the public key of which is stored along with the funds in the Peanut smart contract. Each link follows the same basic structure: https://peanut.to/claim?c=CHAIN&i=INDEX&v=VERSION&p=KEY
. See some example links below. You can try generating some yourself here. The tokens being sent along with the public key are stored by calling makeDeposit
in the Peanut smart contract. The on chain function emits a DepositEvent
which contains an index parameter, this is the slot within the Peanut contract where the funds will be stored until claimed.
The Peanut SDK and the Peanut App can be used to mass generate such links for the mailing list.
Rationale
The proposed method removes the need for physical distribution, reduces manual input errors, and ensures that participants have access to testnet tokens as soon as they’re registered. This will lead to smoother onboarding and a better overall experience at the workshops. Given that Devconnect is soon, we believe this proposal, if accepted, can be swiftly implemented and tested.
Implementation
The implementation will require:
- Forking the GitHub - efdevcon/pretix-attestation-placeholder-plugin: Pretix plugin to support placeholders for attestations and integrating the token distribution system using GitHub - peanutprotocol/peanut-sdk: NPM package for the Peanut Protocol SDK (see more here).
- Setting up a system to generate unique links for token claims.
- Implementing the merge mailing script to dispatch these links in registration confirmation emails.
Test Cases
Before final implementation, a smaller test run can be conducted:
- A mock event can be set up on Devconnect’s Pretix.
- The pretix merge mailing system can be utilized to send out testnet token links.
- The links can be tested and other potential issues uncovered.
References
- Ethberlin3 and the scratch card-based token distribution.
- Pretix Documentation.
- Peanut Protocol Documentation.