Skip to content

Commit b5b6eeb

Browse files
committed
FaucetTOTP.md
1 parent 07d32ef commit b5b6eeb

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed

applications/FaucetTOTP.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# Faucet-TOTP
2+
3+
- **Team Name:** TurnaLabs
4+
- **Payment Details:**
5+
- **DOT**: 13YqVAq8Yihh9FWHLT91wzKU7okFQueg4fgDGDVK4WZ8bi3k (Polkadot:DOT)
6+
- **Level:** 1
7+
8+
## Project Overview :page_facing_up:
9+
10+
### Overview
11+
12+
A secure, sybil-resistant faucet for the Westend and Paseo testnets, enabling verified token claims using Google Authenticator.
13+
14+
The Westend & Paseo Testnet Faucet is a lightweight application designed for developers building on Polkadot. It enables them to receive test tokens securely by verifying their identity via TOTP (Time-based One-Time Password) using Google Authenticator. To prevent abuse, the system includes Redis-powered rate limiting to enforce a 24-hour claim cooldown per user.
15+
16+
We built this faucet to streamline the developer experience in the Polkadot ecosystem. Test tokens are essential for building and testing parachains and dApps, yet distributing them manually or with insecure faucets leads to sybil attacks or spam. Our solution offers a modern, developer-friendly and secure approach.
17+
18+
### Project Details
19+
20+
#### UI & Stack
21+
22+
- Frontend: React (Vite) + Material UI
23+
24+
- Backend: NestJS + Redis + Polkadot.js API
25+
26+
- Auth: TOTP (Google Authenticator)
27+
28+
- Redis: Used for storing OTP verifications and enforcing rate limits
29+
30+
- Polkadot RPCs: Westend and Paseo endpoints via WSS
31+
32+
![Image1](https://raw.githubusercontent.com/labturna/Faucet-TOTP/refs/heads/master/assets/ui.png)
33+
34+
#### Data Flow
35+
36+
1. User scans QR → Adds secret to Authenticator
37+
38+
2. User enters OTP + wallet address
39+
40+
3. Backend verifies OTP using speakeasy
41+
42+
4. If valid, backend sends tokens via Polkadot.js API
43+
44+
#### Deliverables Include
45+
46+
* Responsive web frontend
47+
48+
* Backend with RESTful endpoints:
49+
50+
* /setup (generate secret)
51+
52+
* /claim (verify TOTP and send tokens)
53+
54+
* Redis integration for 24h cooldown per user
55+
56+
* Support for both Westend and Paseo
57+
58+
### Ecosystem Fit
59+
60+
* Fit: This faucet is a direct utility dApp to support the growth and testing of parachains and dApps on Polkadot. It supports both current testnets: Westend and Paseo.
61+
62+
* Audience: Primarily developers building with Substrate/Polkadot who need test tokens for deployment, transactions, or parachain testing.
63+
64+
* Needs Met: Provides a secure, developer-friendly faucet with sybil resistance. Eliminates the need for social login, wallet signature, or captchas.
65+
66+
* Need Validation: This need is consistently raised on Element channels and GitHub repos for testnet projects (e.g., Polkadot-JS Apps, Ink! playgrounds). Existing faucets often suffer from abuse or manual verification delays.
67+
68+
* Similar Projects: Few public faucets exist, and they often use simplistic verification (e.g. reCAPTCHA or none). Our project uses TOTP, which is more secure and scalable.
69+
* [Substrate Faucet](https://github.com/OAXFoundation/substrate-faucet)
70+
* [Polkadot Testnet Faucet](https://github.com/paritytech/polkadot-testnet-faucet)
71+
* [Sybil Resistant Substrate Faucet](https://github.com/karooolis/sybil-resistant-substrate-faucet)
72+
73+
## Team :busts_in_silhouette:
74+
75+
### Team members
76+
77+
- Arslan Bilecen - Core Developer
78+
79+
### Contact
80+
81+
- **Contact Name:** Arslan Bilecen
82+
- **Contact Email:** arslanblcn@proton.me
83+
84+
### Legal Structure
85+
86+
- **Registered Address:** Ankara / Turkiye
87+
- **Registered Legal Entity:** -
88+
89+
### Team's experience
90+
91+
As a security engineer with 2 years of professional experience, I have developed a strong foundation in application security, including penetration testing, vulnerability assessment, and secure development practices. Alongside my professional role, I have explored full-stack development as a hobby, building various Web2 projects using technologies like React, Node.js, and Express.
92+
93+
Recently, I have shifted my focus toward the Web3 ecosystem, driven by a growing interest in decentralized technologies. I am actively learning and building within the Polkadot ecosystem, and this faucet project represents both my technical curiosity and my desire to contribute to meaningful infrastructure in the space.
94+
95+
In addition to this project, I received a grant from the DFINITY Foundation for my work on MoDojo, a learn-to-earn platform designed to teach developers the Motoko programming language through interactive coding challenges and dApp projects. This experience has further strengthened my ability to architect secure, developer-friendly applications within decentralized ecosystems.
96+
97+
### Team Code Repos
98+
99+
- [TurnaLabs](https://github.com/labturna)
100+
101+
Please also provide the GitHub accounts of all team members. If they contain no activity, references to projects hosted elsewhere or live are also fine.
102+
103+
- [arslanblcn](https://github.com/arslanblcn)
104+
105+
### Team LinkedIn Profiles (if available)
106+
107+
- [Arslan Bilecen](https://www.linkedin.com/in/arslan-bilecen-27020a172/)
108+
109+
110+
## Development Status :open_book:
111+
112+
- Public repo: [Faucet-TOTP](https://github.com/labturna/Faucet-TOTP)
113+
- Core functionality implemented (frontend, backend, TOTP verification)
114+
- QR generation, OTP verification, and token transfer working
115+
- Deployed locally for testing; preparing for hosted version on Vercel/Fly.io
116+
- Frontend and backend separation complete (Docker coming soon)
117+
118+
## Development Roadmap :nut_and_bolt:
119+
120+
### Overview
121+
122+
- **Total Estimated Duration:** 1 month
123+
- **Full-Time Equivalent (FTE):** 1 FTE
124+
- **Total Costs:** 6000 USD
125+
126+
### Milestone 1 Example — Basic functionality
127+
128+
- **Estimated duration:** 1 month
129+
- **FTE:** 1
130+
- **Costs:** 6,000 USD
131+
132+
| Number | Deliverable | Specification |
133+
| -----: | ----------- | ------------- |
134+
| **0a.** | License | Apache 2.0 |
135+
| **0b.** | Documentation | README, detailed usage guide including backend setup instructions, API usage documentation, frontend interaction flow, and inline code comments for both frontend and backend components |
136+
| **0c.** | Testing and Testing Guide | Unit tests for backend OTP and Redis functions |
137+
| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. |
138+
| 0e. | Article | We will publish an **article**/workshop that explains [...] (what was done/achieved as part of the grant). (Content, language, and medium should reflect your target audience described above.) |
139+
| 1. | Backend API | NestJS API with /setup and /claim endpoints |
140+
| 2. | OTP Auth | TOTP-based Google Authenticator flow with speakeasy |
141+
| 3. | Redis Logic | User-based rate limiter (24h claim cooldown) |
142+
| 4. | Frontend UI | React + MUI claim form, QR generation, and OTP input |
143+
| 5. | Faucet Transfers | Token transfers using Polkadot.js API on Westend & Paseo |
144+
145+
## Future Plans
146+
147+
- Add admin dashboard to track claim volume and abuse prevention
148+
- Support other networks (e.g. Kusama testnets, parachain localnets)
149+
- Integrate optional email-based OTP (for broader accessibility)
150+
151+
## Additional Information :heavy_plus_sign:
152+
153+
- Project is actively maintained and continuously tested locally.
154+
- We plan to open-source it fully and invite community contributions after milestone 1.
155+
156+
**How did you hear about the Grants Program?** Web3 Foundation Dev Forum
157+

0 commit comments

Comments
 (0)