参考文档
Remix: https://remix.ethereum.org/
领取 LINK 测试币 :https://faucets.chain.link/bnb-chain-testnet
VRF 订阅账号:https://vrf.chain.link/
ChainLink VRF 2.5官网:https://vrf.chain.link/bnb-chain-testnet
ChainLink VRF 合约源码:https://github.com/smartcontractkit/chainlink/tree/contracts-v1.3.0/contracts/src/v0.8/vrf/dev
目录
引言
在区块链开发中,我们常常需要安全、可信且不可预测的随机数。无论是链上游戏、NFT 空投、还是去中心化抽奖应用,“随机性” 都是公平性和用户信任的核心。而 Chainlink 的 VRF(Verifiable Random Function)2.5,正是为此设计的一种链上可验证的随机数生成服务。
本文将从原理出发,结合开发者流程,为你详细讲解 Chainlink VRF 2.5 的工作机制、使用步骤和代码实践。
一、什么是 Chainlink VRF?
Chainlink VRF 是 Chainlink 提供的 可验证随机数生成器,全称为 Verifiable Random Function。它能在链上提供:
- 不可预测性:任何人在请求发出前无法预测结果。
- 可验证性:结果附带签名,任何人都能验证是否被篡改。
- 去信任化:不依赖中心化服务器,结果来自去中心化的 Chainlink 节点。
VRF 2.5 是什么?
VRF 2.5 是 VRF v2 的升级版本:
- 优化费用结构
- 支持 订阅模式 和 direct funding(直接付费)模式
- 支持更多链(BNB Chain、Polygon、Arbitrum 等)
- 接口更友好,集成更简单
二、Chainlink VRF 的核心工作机制
Chainlink VRF 的本质是:加密生成 + 签名验证。流程如下:
1. 用户合约发起请求
智能合约向 Chainlink 的 VRF Coordinator 发起请求(需要支付 LINK),包含:
- 请求者地址
- keyHash(节点密钥标识)
- subscriptionId(订阅账户 ID)
- gas 限制与回调参数等
2. Chainlink 节点生成随机数
Chainlink VRF 节点接收请求后,生成如下内容:
- 使用私钥签名某个随机值
- 生成一个 VRF proof(证明)和随机数结果
此过程完全由 Chainlink 节点处理,用户无法预测其结果。
3. 节点将结果返回 VRF Coordinator
Chainlink 节点将生成的随机数及其证明提交至链上的 VRF Coordinator。
4. Coordinator 验证随机数签名
VRF Coordinator 合约在链上验证随机数是否由 Chainlink 节点合法生成。
- 验证签名是否匹配 keyHash
- 校验随机数生成过程是否符合 VRF 加密标准
5. 用户合约接收并处理随机数
验证通过后,VRF Coordinator 会调用用户合约的 fulfillRandomWords() 函数,将最终的随机数数组发送回去。
你可以在此回调中执行各种逻辑,如:彩票开奖、NFT mint 随机分配、游戏中生成掉落奖励等。
三、使用 Chainlink VRF v2.5 的完整开发流程
使用 VRF v2.5 的两种方式
✅ 订阅模式(subscription):先充值 LINK 到订阅账户,每次请求消耗订阅里的余额
✅ direct funding(直接付费):每次请求时直接支付 LINK 或原生代币,无需提前充值
下面我们用两种模式都实战一遍。
(一)使用 subscription 模式
3.1 创建订阅
创建订阅账号 传送🚪

输入电子邮箱(可选)和项目名称(可选)来创建订阅。

创建一个订阅账户的第一步(点击Create Subscription) 交易请求,点击确认。

创建一个订阅账户的第二步,会收到确认交易,你也可以点开看。
3.2 申请订阅 ID
创建订阅 ID 传送🚪

点击订阅,然后输入电子邮箱(可选)和项目名称(可选)来创建订阅。

创建一个订阅账户的第一步(点击Create Subscription) 交易请求,点击确认。

创建一个订阅账户的第二步,会收到确认交易,你也可以点开看。

创建一个订阅账户的最后一步,请求签名。

3.2 查看订阅
创建好订阅之后,你可以看到在这个面板上有刚刚创建的订阅账户。

3.3 查看 Subscription lD
点进这个订阅账户,可以查看到 Subscription lD。把这个ID 复制下来,等会儿我们合约要用到。

3.4 申请 LINK 代币和订阅 ID
如果是测试网,需要申请测试 LINK 代币和订阅 ID。申请测试LINK代币点击传送🚪我这里把接收LINK测试币的钱包地址复制进去了。然后根据提示领取就可以了,成功之后,我们可以去BSC浏览器查看,账户地址,看是否有LINK测试币。

3.4.1 MetaMask里添加代币
为方便起见,我们在MetaMask里面添加代币。找到在BNB链上的 Chainlink 代币地址,复制。传送🚪

点击 MetaMask,连接的是BSC测试网络,找到添加代币。

我这里选择的是BNB Smart Chain Testnet 网络,然后代币地址复制进来,我这里已经添加了。

最低0.47元/天 解锁文章
567





