AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79549616
Accepted
Phc Chu Vaky Ramadan
Phc Chu Vaky Ramadan
Asked: 2025-04-02 11:38:53 +0800 CST2025-04-02 11:38:53 +0800 CST 2025-04-02 11:38:53 +0800 CST

Chainlink VRF:链上和仪表板之间创建订阅 ID 不匹配

  • 772

我遇到一个问题,我的脚本返回的订阅 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 都搞不清楚。有人知道我可能做错了什么吗?任何帮助都将不胜感激!

solidity
  • 1 1 个回答
  • 28 Views

1 个回答

  • Voted
  1. Best Answer
    SYED ASAD KAZMI
    2025-04-02T22:06:52+08:002025-04-02T22:06:52+08:00

    执行 Foundry 脚本时返回的订阅 IDIVRFCoordinatorV2Plus(0x9DdfaCa8183c41ad55329BdeeD9F6A8d53168B1B).createSubscription();不一定是在VRF Dashboard上创建的实际订阅 ID 。

    这是因为返回值是在交易上链确认之前的模拟执行。Foundry 在交易被挖矿之前模拟了返回值,这可能导致模拟值与实际链上值之间存在差异。

    因此,您必须通过区块浏览器从交易日志中或者直接从VRF 仪表板中检索实际值。

    • 0

相关问题

  • Chainlink 函数合约中 Fulfill 函数无法调用外部 API

  • 用于提取余额的 Solidity 简单合约

  • 在我的智能合约中看不到(Chainlink)请求的数据

  • 安全帽安装正在下降安装

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve