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

news2024/11/18 15:51:14

参考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.coloradmin.cn/o/1428579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ADI 知识库】X 波段相控阵开发平台 硬件 2

ADAR1000EVAL1Z (Stingray) ADAR1000-EVAL1Z评估板是一款模拟波束成形前端&#xff0c;设计用于测试ADAR1000和ADTR1107的性能。ADAR1000 是一款 8 GHz 至 16 GHz、4 通道、X 波段和 Ku 波段波束成形器 IC。ADTR1107是 6 GHz 至 18 GHz 前端发送/接收模块。 ADAR1000-EVAL1Z板…

理解网站的账号和密码构成

什么是baolipojie 使用暴力的方式进行用户名或密码的破解&#xff0c;反复试错的方式 为什么 最终的目的:获取用户名和密码 网站的权限划分:超级管理员 管理员 VIP 普通用户 baolipojie的准备工作 1、学习的靶场(DVWA) 2、字典 3、Burp suite 如何进行baolipojie 本来说…

力扣461. 汉明距离(位运算)

Problem: 461. 汉明距离 文章目录 题目描述思路复杂度Code 题目描述 思路 Problem: 力扣191. 位1的个数&#xff08;位运算&#xff09; 该题只需要在上题的基础上先对两个数进行一次异或操作即可 复杂度 时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( 1 ) O(1) O(1) Code …

【python接口自动化】- 对接各大数据库

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

C:\Users\ShuYixiao>mysql ‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

这个错误信息表明 mysql 命令在你的系统中没有被识别。这通常意味着 MySQL 没有安装在你的电脑上&#xff0c;或者它的可执行文件路径没有添加到系统的环境变量中。以下是一些解决这个问题的步骤&#xff1a; 确认 MySQL 是否已安装&#xff1a; 如果你还没有安装 MySQL&#x…

LLM(3) | 自注意力机制 (self-attention mechanisms)

LLM(3) | 自注意力机制 (self-attention mechanisms) self-attention 是 transformer 的基础&#xff0c; 而 LLMs 大语言模型也都是 transformer 模型&#xff0c; 理解 self-attention, 才能理解为什么 LLM 能够处理好上下文关联性。 本篇是对于 Must-Read Starter Guide t…

LISN究竟是什么?有什么作用?

在电子领域中&#xff0c;LISN是一个充满神秘感的工具&#xff0c;常常被用于电磁兼容性测试。本文将深入探讨LISN的本质是什么&#xff0c;以及它在电子领域中扮演的关键角色。 1. 认识LISN LISN&#xff0c;全称为Line Impedance Stabilization Network&#xff0c;即线路阻…

Jetpack Compose系列(1)-初识Jetpck

Jetpack Compose是什么 2019年的I/O大会上&#xff0c;Google宣布Kotlin成为Android开发首选语言&#xff08;这次不是第一次说了&#xff09;&#xff0c;且后续会有新的Jetpack API和功能将在Kotlin中提供&#xff0c;并同时开源Jetpack Compose。 简介 Jetpack是一套库、…

骨传导耳机的原理是什么?骨传导耳机是如何传输声音的

随着生活质量的日益提升&#xff0c;可穿戴智能设备的种类和款式也愈发丰富多彩。特别是耳机产业的快速演变&#xff0c;不仅在类型上多样化&#xff0c;其外观设计也呈现出各式各样的趋势。然而&#xff0c;对于运动爱好者来说&#xff0c;真正合适的运动耳机却并不多见。在众…

Acwing---802.区间和

区间和 1.题目2.基本思想3.代码实现 1.题目 假定有一个无限长的数轴&#xff0c;数轴上每个坐标上的数都是 0。 现在&#xff0c;我们首先进行 n 次操作&#xff0c;每次操作将某一位置 x 上的数加 c。 接下来&#xff0c;进行 m次询问&#xff0c;每个询问包含两个整数 l 和…

Pycharm安装插件

经常用Pycharm写代码的话&#xff0c;时不时的就会接触到一些好用的插件&#xff0c;如何安装插件呢&#xff1f;经常使用的是两种方式&#xff0c;分别是在线安装和离线安装。 在线安装 在线安装比较简单&#xff0c;打开Pycharm&#xff0c;在左上角【文件】->【设置】-…

深度学习入门笔记(四)函数与优化方法

深度学习有三大部分 模型表征(包括模型设计、网络表示等)模型评估(上一篇文章提到的准确召回和损失函数等)优化算法(模型如何学习或更新)本节我们就来介绍模型是如何学习或更新的。 4.1 损失函数 模型的学习,实际上就是对参数的学习。参数学习的过程需要一系列的约束,…

构建LLM辅助生物威胁制造预警系统 人类越发展获取的超能力越大,破坏力越大,威胁越大。我们需要什么样的预警系统?既克服威胁又具有超能力 安全基础

https://openai.com/research/building-an-early-warning-system-for-llm-aided-biological-threat-creation 人类越发展获取的超能力越大&#xff0c;破坏力就越大&#xff0c;威胁越大。 人工智能就是为了赋予人人都能有超能力&#xff0c;而一旦被恶意或无意使用又威胁到人…

如何在Shopee平台上进行手机类目选品?

在Shopee平台上进行手机类目的选品是一个关键而复杂的任务。卖家需要经过一系列的策略和步骤&#xff0c;以确保选品的成功和销售业绩的提升。下面将介绍一些有效的策略&#xff0c;帮助卖家在Shopee平台上进行手机类目选品。 先给大家推荐一款shopee知虾数据运营工具知虾免费…

tqdm双进度条训练模型

效果图 from tqdm import tqdm import time pbar1 tqdm(total5, position0, desc"Epoch", leaveFalse, colourgreen, ncols100,unit"epoch") for i in range(5):pbar2 tqdm(total10, position1, desc"Iteration", leaveFalse, colourred, ncol…

宠物商业数据分析

一、宠物热销品类分布 欧睿国际更有一份数据表明&#xff0c;宠物食品在所有“它经济”中占比是最大&#xff0c;仅仅是猫狗食品就达到了59.1%&#xff0c;增速也远高于其他宠物用品。 2018年&#xff0c;中国就已经有超7700万独居成年人口&#xff0c;国内养宠主力军中90后占…

C语言——标准输出函数(printf、putchar和puts)

目录 1. 标准输入输函数出头文件2. printf2.1 函数申明2.2 基本用法2.3 占位符2.4 输出格式2.4.1 限定宽度2.4.2 总是显示正负号2.4.3 限定小数位数2.4.4 输出部分字符串 3. putchar3.1 函数申明3.2 基本用法 4. puts4.1 函数申明4.2 基本用法 1. 标准输入输函数出头文件 #inc…

应急响应事件处理过程参考手册

D盾介绍及下载 下载地址&#xff1a;http://www.d99net.net/ 使用步骤与杀毒软件类似&#xff0c;下面简要说一下 D盾使用步骤 更新规则库 点击检测更新&#xff0c;自动更新到最新的规则库 更新后在底部会显示当前规则库版本&#xff1a; 选择网站根目录&#xff0c;进行w…

Linux下grep命令详解

grep #文件内容过滤显示 #在指定的普通文件中查找并显示含有指定字符串的行&#xff0c;也可与管道符一起使用格式&#xff1a; grep-参数 查找条件 文件名 参数&#xff1a; 示例&#xff1a; [rootnode1 ~]# grep -n "root" /etc/passwd # -n&a…

OpenCV 14 - 自定义线性滤波

1 卷积 1-1概念 卷积是图像处理中一个操作,kernel在图像的每个像素上的操作。 Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点 1-2 卷积如何工作 把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。 …