ethora-team/bnb-faucet

GitHub: ethora-team/bnb-faucet

BNB Smart Chain 上的生产级 BEP-20 测试网代币水龙头,为开发者提供 SDK、REST API 和 CLI 三种方式快速领取测试代币。

Stars: 3 | Forks: 0

# Ethora RPC
Ethora Faucet

[![覆盖率](https://img.shields.io/badge/coverage-94%25-00d4aa)](./packages) [![npm 版本](https://img.shields.io/badge/npm-v1.2.0-f0b90b)](https://www.npmjs.com/package/@ethora/faucet-sdk) [![许可证:MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![合约已审计](https://img.shields.io/badge/contracts-audited-00d4aa)](./audits) **BNB Smart Chain 上最可靠的 BEP-20 水龙头。** 立即领取 USDT、USDC、ETH、WBNB、CAKE 及其他 21 种测试网 token。 对开发者、审计员和区块链学习者免费。 [**→ 在线水龙头**](https://ethora.org) · [**→ API 文档**](https://ethora.org/api-docs) · [**→ SDK 参考**](./packages/sdk) · [**→ Bug 报告**](https://github.com/ethora-team/bnb-faucet/issues/new?template=bug_report.md)
## 概述 Ethora BNB Faucet 是一个开源的、生产级的 BNB Smart Chain token 分发器。它专为构建 DeFi 协议的开发者、验证合约逻辑的审计员以及探索区块链开发的学习者设计 —— 无需触及真实资产。 本项目以 **monorepo** 的形式提供,包含: | 包名 | 描述 | |---------|-------------| | [`@ethora/contracts`](./packages/contracts) | Solidity 水龙头及模拟 token 合约 | | [`@ethora/faucet-sdk`](./packages/sdk) | 用于通过编程方式请求 token 的 TypeScript SDK | | [`@ethora/api`](./packages/api) | Node.js REST API (Fastify + Redis) | | [`@ethora/cli`](./packages/cli) | CLI 工具 — 从终端领取 token | | [`@ethora/indexer`](./packages/indexer) | 链上事件 indexer (ethers.js + PostgreSQL) | | [`apps/web`](./apps/web) | 前端 — 水龙头 UI | | [`apps/docs`](./apps/docs) | 开发者文档网站 | ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ BNB Smart Chain (BSC Mainnet) │ │ │ │ ┌──────────────────┐ ┌─────────────────────────────┐ │ │ │ FaucetController│ │ MockToken (ERC-20 × 24) │ │ │ │ (upgradeable) │──mint─▶│ USDT / USDC / WBNB / ... │ │ │ └──────────┬───────┘ └─────────────────────────────┘ │ │ │ events │ └──────────────┼──────────────────────────────────────────────────┘ │ ┌──────────▼──────────┐ │ @ethora/indexer │ ethers.js · PostgreSQL · BullMQ │ (event pipeline) │ └──────────┬──────────┘ │ REST ┌──────────▼──────────┐ ┌────────────────────┐ │ @ethora/api │◀───────▶│ Redis (cooldown, │ │ (Fastify + Zod) │ │ rate-limit, cache) │ └──────────┬──────────┘ └────────────────────┘ │ ┌──────────┴────────────────────┐ │ │ ▼ ▼ ┌──────────────────┐ ┌─────────────────────┐ │ apps/web │ │ @ethora/faucet-sdk │ │ (Vanilla JS) │ │ (npm package) │ └──────────────────┘ └─────────────────────┘ │ ┌──────────▼──────────┐ │ @ethora/cli │ │ (Node.js CLI) │ └─────────────────────┘ ``` ## 快速开始 ### 前置条件 - Node.js ≥ 18 - pnpm ≥ 8 - Docker(用于本地 API + Redis + Postgres 技术栈) - Foundry 或 Hardhat(用于合约开发) ### 安装 ``` git clone https://github.com/ethora-labs/bnb-faucet.git cd bnb-faucet # 安装所有 workspace 依赖 pnpm install # 复制环境变量 cp .env.example .env ``` ### 本地运行 ``` # 启动基础设施 (Redis, Postgres) docker compose up -d # 构建所有 packages pnpm build # 以 dev 模式运行 API pnpm --filter @ethora/api dev # 运行 frontend pnpm --filter web dev ``` ### 使用 SDK ``` npm install @ethora/faucet-sdk ``` ``` import { EthoraFaucet } from '@ethora/faucet-sdk'; const faucet = new EthoraFaucet({ apiKey: process.env.ETHORA_API_KEY }); const result = await faucet.request({ walletAddress: '0xYourWalletAddress', tokens: ['USDT', 'USDC', 'WBNB'], captchaToken: turnstileToken, }); console.log(result.txHash); // → 0x3f9d2a... ``` ### 使用 CLI ``` npm install -g @ethora/cli ethora-faucet claim \ --address 0xYourWalletAddress \ --tokens USDT,USDC,LINK \ --api-key $ETHORA_API_KEY ``` ## 包 ### `@ethora/contracts` 使用 Hardhat 编译的 Solidity 智能合约。包括: - `FaucetController.sol` — 可升级 (UUPS) 的 drip 控制器,具有冷却强制执行和基于 token 的速率限制 - `MockToken.sol` — 最小化的 ERC-20,`mint()` 仅限 `MINTER_ROLE` 使用 - `FaucetRegistry.sol` — 带有元数据的链上 token 注册表 - 用于 BSC Testnet 的 Hardhat 部署脚本 - 完整的测试套件 (Mocha + Chai + Waffle) - Slither & Mythril CI 集成 [→ contracts README](./packages/contracts/README.md) ### `@ethora/faucet-sdk` TypeScript 优先的 SDK。除 `ethers` 外零运行时依赖。支持 ESM 和 CJS。 [→ SDK README](./packages/sdk/README.md) ### `@ethora/api` 基于 Fastify 的 REST API。特性: - Zod 请求验证 - Cloudflare Turnstile 验证码验证 - 基于 Redis 的冷却和速率限制 - Webhook 派发(HMAC-SHA256 签名) - 自动生成的 OpenAPI 3.1 规范 - 位于 `/metrics` 的 Prometheus 指标 [→ API README](./packages/api/README.md) ### `@ethora/cli` 适用于 CI pipeline 和高级用户的终端工具。 ``` ethora-faucet Commands: claim Request testnet tokens status Check cooldown for an address tokens List available tokens balance Query faucet reserve balance ``` [→ CLI README](./packages/cli/README.md) ### `@ethora/indexer` 后台 worker,监听链上的 `Drip` 事件并将丰富后的记录写入 PostgreSQL。为 `/wallet/history` endpoint 提供支持。 [→ Indexer README](./packages/indexer/README.md) ## 部署 | 合约 | 网络 | 地址 | |----------|---------|---------| | `FaucetController` | BSC Testnet | [`0x41228B7b...`](https://testnet.bscscan.com/address/0x41228B7b96150BB7760087786bC93E6f6f2B8f0f) | | `FaucetRegistry` | BSC Testnet | [`0xAb5801a7...`](https://testnet.bscscan.com/address/0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B) | | `MockUSDT` | BSC Testnet | [`0x337610d2...`](https://testnet.bscscan.com/address/0x337610d27c682E347C9cD60BD4b3b107C9d34dDd) | | `MockUSDC` | BSC Testnet | [`0x64544969...`](https://testnet.bscscan.com/address/0x64544969ed7EBf5f083679233325356EbE738930) | 完整部署清单:[`deployments/bsc-testnet.json`](./deployments/bsc-testnet.json) ## 安全 Ethora BNB Faucet 合约已由 [Halborn Security](https://halborn.com) 审查。审计报告可在 [`./audits`](./audits) 中查看。 **负责任的披露:** 请勿针对安全漏洞发布公开的 GitHub issue。请改为发送邮件至 `security@ethora.io`。 ## 许可证 MIT © [Ethora 团队](https://github.com/ethora-team)
标签:BEP-20, MITM代理, REST API, Solidity, TypeScript SDK, Web3工具, 区块链开发, 后端开发, 搜索引擎查询, 测试用例, 测试网水龙头, 网络测绘, 请求拦截