OpenZeppelin / OpenZeppelin/openzeppelin-contracts
Airdrop contract(s) using SignatureBouncer
Nobody has claimed this yet.
- Dominant language
- Solidity
- Stars
- 27.2k
- Forks
- 12.4k
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 33
Description
🎉 Description
It'd be cool if we had a simple Airdrop contract that used SignatureBouncer.sol to issue tokens (with emission variants like the crowdsale's Mintable/Allowance types) to those with valid signatures from a server.
Bonus points for a nodejs script that runs across a list of addresses and generates signatures for each of them.
More bonus points for a simple rails/express based api endpoint for generating these signatures which follows a flow like:
- user signs some challenge data using metamask/hardware-wallet/whatever
- user submits that signature to the server
- server recovers the address from the signature
- server checks to see if address is in off-chain whitelist
- if so, server signs a SignatureBouncer hash allowing the address to call the
Airdropcontract - user can then submit that signature to the airdrop contract and receive their tokens
- 🐛 This is a bug report.
- 📈 This is a feature request.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read SignatureBouncer.sol and the crowdsale's Mintable/Allowance variants first. Scope the core Airdrop contract around valid server signatures and token issuance, then consider the separately described Node.js signer and Rails/Express API flow. Done means the requested contract behavior and any selected bonus tooling cover the issue's six-step signature and whitelist flow.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- express, nodejs, rails, solidity
- Domain
- backend-api-design, blockchain, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100