Change the list of approved subscription consumers with addConsumer(uint64 subId, address consumer) or removeConsumer(uint64 subId, address consumer).
Transfer the subscription ownership with requestSubscriptionOwnerTransfer(uint64 subId, address newOwner) and acceptSubscriptionOwnerTransfer(uint64 subId).
View the subscription with getSubscription(uint64 subId).
Cancel the subscription with cancelSubscription(uint64 subId).
To send LINK to the subscription balance, use the LINK token interface with LINKTOKEN.transferAndCall(address(COORDINATOR), amount, abi.encode(subId));. Any wallet can fund a subscription.
ChainLink提供VRF服务的介绍
目前ChainLink VRF只在以太坊上有支持
V2协议规定了几个角色:
使用VRF服务的账户,一般是smart contract的地址
支付VRF服务费的账户,我们称之为Subscription account,对应于一个Subscription ID.
管理VRF订阅的账户,我们称之为Subscription Owner,只有它有权限,把新的smart contract地址加入到subscript account的账户列表中和从账户列表中删除smart contract地址
所以这样的模型,把支付者, 使用者,管理者的角色分开了,能支持客户灵活的业务逻辑
Chainlink还有每次使用VRF的gas和费用的limit的更详细的规定,这里就不讲述了。
使用VRF也很简单,在以太坊上部署一个合约,可以参考ChainLink的demo, 我添加一些简单的描述:
至于Subscription Owner的角色,基本操作就是创建Subscription account,为Subscription account充值,维护将要使用VRF smart contract的地址列表,我们可以从web页面(Subscription Manager page)上来做,也可以用合约代码来做
总体来说,ChainLink的文档写的很棒