当前位置: 首页 > news >正文

逸学区块链【solidity】真随机数

参考Get a Random Number | Chainlink Documentation

但是很贵,价格

  • Gas Price:当前gas价格,根据网络状况而波动。
  • Callback gas :返回您所请求的随机值时,回调请求消耗的gas 量。
  • 验证gas :量gas 用于验证链上的随机性。

我们可以定义两个内容限制总价格,也就是限制当前gas价格和回调请求消耗的gas 量

keyHash:Gas通道(最大gas价格您愿意为请求支付的价格(以 wei 为单位)

callbackGasLimit:回调上限 示例中100000是愿意为请求花费的上限,限制价格

有计算器VRF Billing | Chainlink Documentation

// SPDX-License-Identifier: MIT
// 一个依靠订阅获得资金的消费者合同的例子
pragma solidity ^0.8.7;import "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol";
import "@chainlink/contracts/src/v0.8/VRFConsumerBaseV2.sol";contract VRFv2Consumer is VRFConsumerBaseV2 {VRFCoordinatorV2Interface COORDINATOR;// 您的订阅ID.//https://vrf.chain.link/uint64 s_subscriptionId;// Rinkeby协调员。对于其他网络,// 参照 <https://docs.chain.link/docs/vrf-contracts/#configurations>address vrfCoordinator = 0xc587d9053cd1118f25F645F9E08BB98c9712A4EE;// 要使用的gas通道,每个网络不一样.// 参照 <https://docs.chain.link/docs/vrf-contracts/#configurations>//交换地址https://pegswap.chain.link/bytes32 keyHash = 0x114f3da0a805b6a67d6e9cd2ec746f7028f1b7376365af575cfea3550dd1aa04;//取决于要发送到的请求值的数量//对于fulfillRandomWords()函数。存储一个数值需要消耗20000wei,//因此,对于这个示例合同,100000是个安全的默认值uint32 callbackGasLimit = 30000;// 请求的信息数量,默认是3,你可以设置更高uint16 requestConfirmations = 3;//此用例中,默认-次获得2个随机数uint32 numWords =  1;uint256[] public s_randomWords;uint256 public s_requestId;address s_owner;constructor(uint64 subscriptionId) VRFConsumerBaseV2(vrfCoordinator) {COORDINATOR = VRFCoordinatorV2Interface(vrfCoordinator);s_owner = msg.sender;s_subscriptionId = subscriptionId;}// /假设Link充足的情况下,执行此函数function requestRandomWords() external onlyOwner {// 如果没设置订阅的相关关系,就会报错s_requestId = COORDINATOR.requestRandomWords(keyHash,s_subscriptionId,requestConfirmations,callbackGasLimit,numWords);}function fulfillRandomWords(uint256, uint256[] memory randomWords) internal override {s_randomWords = randomWords;}modifier onlyOwner() {require(msg.sender == s_owner);_;}
}

需要配置网路和订阅

Supported Networks - Subscription Method | Chainlink Documentation

订阅

VRF | Subscription Management

部署的时候对应上

Remix - Ethereum IDE

http://www.lryc.cn/news/292922.html

相关文章:

  • 【WPF.NET开发】优化性能:对象行为
  • uniapp中封装一个svg转base64的组件
  • QT播放gstreamer命令(三)---使用QMediaPlayer
  • Ubuntu22扩大分区
  • 数据结构篇-05:哈希表解决字母异位词分组
  • 添加了gateway之后远程调用失败
  • C#,哥伦布数(Golomb Number)的算法与源代码
  • JVM学习
  • Visual Studio 20XX中utf-8中文在控制台显示乱码
  • 拥抱个人成长与社会进步:自我认知与开放心态的相互影响
  • 【PostgreSQL内核学习(二十五) —— (DBMS存储空间管理)】
  • 2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍 第5天
  • SpringBoot使用Kafka详解含完整代码
  • 解决:java -jar 在cmd中运行 程序卡顿,卡死的 问题。BIO和NIO案例保存
  • LeetCode第824题 - 山羊拉丁文
  • [Python] 什么是逻辑回归模型?使用scikit-learn中的LogisticRegression来解决乳腺癌数据集上的二分类问题
  • 那些不输于乙游男主人设的国漫男主
  • Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询
  • 关于华为应用市场上架,申请权限未告知目的被驳回问题的简单处理方式
  • 【ElasticSearch】概述
  • 十进制转十六进制 C/C++蓝桥杯基础试题BASIC-10
  • 【LVGL环境搭建】
  • 【c语言】简单贪吃蛇的实现
  • 2023年09月CCF-GESP编程能力等级认证Python编程六级真题解析
  • Flink中StateBackend(工作状态)与Checkpoint(状态快照)的关系
  • 【C语言刷题系列】喝汽水问题
  • [C++] C++ 11的functional模块介绍和使用案例
  • kubernetes基本概念和操作
  • 20240128周报-网络太杂,Tomcat太难
  • DES加密原理