我遇到一个问题,我的脚本返回的订阅 ID 与 Sepolia 网络的 vrf.chain.link 上显示的订阅 ID 不同,当我尝试从我的脚本为订阅 ID 提供资金时,将导致 InvalidSubscriptionId。
测试创建订阅.s.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import {Script} from "forge-std/Script.sol";
import {CodeConstants} from "script/HelperConfig.s.sol";
import {IVRFCoordinatorV2Plus} from "@chainlink/contracts/src/v0.8/vrf/dev/interfaces/IVRFCoordinatorV2Plus.sol";
import {console} from "forge-std/console.sol";
contract CreateSubscription is Script,CodeConstants{
function run() public{
createsubscription_onsepolia();
}
function createsubscription_onsepolia() public {
if(block.chainid == ETH_SEPOLIA_CHAN_ID){
vm.startBroadcast(0x57099326F00d72E00dc4416FF638136853E5330e);
uint256 subid = IVRFCoordinatorV2Plus(0x9DdfaCa8183c41ad55329BdeeD9F6A8d53168B1B).createSubscription();
vm.stopBroadcast();
console.log("subid on sepolia: ",subid);
}
}
}
当我运行 Forge 脚本 script/Testcreatesubscription.s.sol:CreateSubscription --rpc-url $SEPOLIA_RPC_URL --account sepolia_testing_account --broadcast -vvvv
sepolia_testing_account 是我的 metamask 帐户,我将其存储在密钥库中。
日志结果:
== 日志 == sepolia 上的 subid: 1756636573672805867076888413.....
设置 1 个 EVM。
模拟链上轨迹:
[88720] VRFCoordinatorV2_5::createSubscription() ═─ 发出 SubscriptionCreated(subId: 175663657367280586707688841388762055..... [1.756e76], 所有者: 0x57099....) └─ ← [返回] 1756636573672805867076888413887... [1.756e76]
==========================
链条 11155111
预计天然气价格:0.724514652 gwei
脚本预计消耗的 gas 总量:151638
预计所需金额:0.000109863952799976 ETH
============================ 输入密钥库密码:⠂ sepolia 上的序列 #1
sepolia ✅ [成功] 哈希:0x93a569514837d5d7dd8f525e1fdf105b541fde506522cf9c6b7d0173779c0da7 区块:8028451 已付款:0.000043162465117744 ETH(109784 gas * 0.393158066 gwei)
✅ sepolia 上的序列#1 | 总付款:0.000043162465117744 ETH(109784 gas * 平均 0.393158066 gwei)
尽管脚本日志显示我的订阅 ID 是 175663657367280586707688841388762055...,但当我在 Sepolia 网络上检查 vrf.chain.link 时,我看到一个完全不同的订阅 ID:426994294831235659204431318963817900788974.....
我已经为此苦苦挣扎了好几个小时,甚至连 ChatGPT 都搞不清楚。有人知道我可能做错了什么吗?任何帮助都将不胜感激!