ralexandrec/vrf-lotto

GitHub: ralexandrec/vrf-lotto

基于 Solidity 和 Chainlink VRF v2.5 构建的去中心化智能合约彩票,利用可验证随机函数确保开奖过程透明且不可篡改。

Stars: 0 | Forks: 0

# 可审计的投注彩票 (Chainlink VRF v2.5) 本项目是一个去中心化的彩票/投注智能合约,使用 **Solidity** 和 **Hardhat** 构建,并利用 **Chainlink VRF v2.5 (可验证随机函数)** 来确保开奖过程具备安全的随机性,在区块链上可审计,且完全无法被第三方或合约管理员操纵。 本项目默认配置为 **Base Sepolia Testnet**,但也可以轻松适配至 Ethereum Sepolia、BNB Chain、Polygon 或主网 (Mainnets)。 ## 🚀 功能 * **去中心化投注:** 任何钱包都可以通过发送为该次抽奖设定的准确金额来购买彩票。 * **可验证随机性:** 原生集成 Chainlink VRF v2.5,通过链下生成随机数,并由链上的密码学证明进行验证。 * **自动奖金分配:** * 累积奖金的 **95%** 将直接发送给获胜者。 * **5%** 作为管理费转交给管理员。 * **完整的测试套件:** 包含单元测试和集成测试,使用 Chainlink 的 mock 模拟完整的开奖流程。 ## 🛠️ 前置条件 * [Node.js](https://nodejs.org/) (版本 >= 18) * Web3 钱包(例如:MetaMask),需备有用于支付测试 gas 的余额以及用于 Chainlink VRF 的 LINK。 ## 📦 安装与编译 1. 安装项目的所有依赖项: ./scripts.sh install 2. 编译智能合约: ./scripts.sh compile ## 💻 本地测试 要执行模拟 Chainlink oracle 的本地测试(单元测试和集成测试): ``` npm test ``` 要在模拟节点上运行并测试本地 deploy: 1. 在一个终端中,启动 Hardhat 节点: ./scripts.sh node 2. 在另一个终端中,执行本地 deploy: ./scripts.sh deploy-local ## 🌐 在测试网部署 (Base Sepolia / Sepolia) ### 1. 配置 `.env` 将 `.env.example` 文件复制为 `.env` 并填写环境变量: ``` # 与网络连接的 RPC URL(例如:Base Sepolia) SEPOLIA_RPC_URL=https://sepolia.base.org # 将执行 Deploy 的 Wallet 私钥 PRIVATE_KEY=0x... # 所选网络的 Chainlink VRF Coordinator (v2.5) 数据 VRF_COORDINATOR=0x5c210ef41cd1a72de73bf76ec39637bb0d3d7bee VRF_KEY_HASH=0x9e1344a1247c8a1785d0a4681a27152bffdb43666ae5bf7d14d24a5efd44bf71 VRF_SUBSCRIPTION_ID=SeuIDCompletoDaSuaInscricaoChainlink ``` ### 2. 创建订阅 (Chainlink) 1. 访问 [Chainlink VRF Subscription Manager](https://vrf.chain.link/) 面板。 2. 在所需网络上创建版本为 **2.5** 的订阅。 3. 为您的订阅充值 **LINK**。 4. 将完整的 ID 保存在 `.env` 的 `VRF_SUBSCRIPTION_ID` 变量中。 ### 3. 部署 执行发布命令: ``` ./scripts.sh deploy-sepolia ``` ### 4. 添加 Consumer deploy 后,**复制生成的智能合约地址**,并在 Chainlink VRF 面板中将其作为 **Consumer** 添加到您的订阅中。这将授权该合约消耗随机数。 ## 🧪 在 Testnet 上进行交互式测试 在完成 deploy 和 Chainlink 授权后,您可以简单地测试购买投注和实际抽奖: 1. 在您的终端中设置合约地址: export CONTRACT_ADDRESS=0xEndereçoDoContratoDeployado 2. 执行交互脚本: npm run interact-sepolia *该脚本将购买一张彩票,请求开奖,并等待 Base Sepolia 上的 oracle 回调。* ## 📄 许可证 本项目采用 [MIT](LICENSE) 许可协议。
标签:Chainlink VRF, Hardhat, MITM代理, Solidity, Web3, 区块链, 抽奖合约, 智能合约, 自定义脚本