智能合约的开发中常常会用到随机数,例如 Lottery 和现在流行的 NFT 数字藏品的属性等都需要用到随机数。目前来说常见的随机数获取有两种:使用区块变量生成随机数,使用预言机来生成随机数。

使用区块变量生成随机数,常见的区块变量有:

  • block.basefee(uint):当前区块的基本费用
  • block.chainid(uint):当前链 id
  • block.coinbase():当前区块矿工地址 address payable
  • block.difficulty(uint):当前区块难度
  • block.gaslimit(uint):当前区块 gaslimit
  • block.number(uint):当前区块号
  • block.timestamp(uint):自 Unix 纪元以来的当前区块时间戳(以秒为单位)
  • blockhash(uint blockNumber) returns (bytes32):给定区块的哈希

其中 block.difficulty, blockhash, block.number 和 block.timestamp 这四个是用得比较多的。

1.合约示例

一个随机数合约 GuessTheRandomNumber 

  1. 这是一个游戏,如果你能猜到从块哈希和时间戳生成的伪随机数就赢;

一个攻击合约 Attack

  1. 攻击通过简单复制计算随机数的代码来计算正确答案;
// SPDX-Li

第157篇 合约安全-随机数相关推荐

  1. 以太坊solidity智能合约-生成随机数

    Solidity随机数生成 在以太坊的只能合约中,没有提供像其他面向对象编程一样的生成随机数的工具类或方法.其实,所谓的随机数也是伪随机的,没有哪一种语言能够真正的生成随机数. 对于solidity来 ...

  2. 以太坊智能合约中随机数预测

    一.前言 作为首次币发行(ICO)的平台,以太坊已经获得了极大的普及. 但是,它不仅仅用于 ERC20 通证,轮盘,彩票和纸牌游戏都可以使用以太坊区块链实现. 与任何区块链实施一样,以太坊是不可逆的, ...

  3. rand()函数100000随机数_Excel 核心函数篇:常用随机数生成函数

    各位伙伴大家好!我是归一!通过本文你将了解以下Excel随机函数的使用: 1. RAND() RAND()函数没有参数,它返回的是大于等于0,小于1的随机数. 下面,我们使用RAND()函数随机生成一 ...

  4. SPSS(基础篇07)--随机数生成器

    随机数生成器 文章目录 随机数生成器 前言 COMPUTE的函数 随机数生成器--设定随机种子 前言 概述: 真随机数:(1)完全不可重现.不可预测的数据序列:(2)实际上,只要给定了边界条件,真随机 ...

  5. 区块链安全—随机数安全分析(上)

    一.前言 "随机数"在计算机程序中并不少见,开发人员也会经常使用随机数进行数值的模拟.预测.在C++程序里,我们经常使用一定的种子来进行随机数的生成过程.在计算机程序中,随机数可以 ...

  6. 51篇最新CV领域综述论文速递!涵盖14个方向:目标检测/图像分割/医学影像/人脸识别等方向...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文共汇总了从2020年4月至今的计算机视觉领域综述性论文,共54篇,涵盖图像分割. 图像识别.人脸识 ...

  7. java让用户输入3个随机数_3-流程控制、随机数、键盘输入

    目录 数据类型转换 问:不同数据类型能否一起运算? 答:能 1.1 自动类型转换(隐式) 概念:不同数据类型运算时,数据范围小的数据类型会自动转换成范围大的数据类型 byte->short-&g ...

  8. 【CV】54篇最新CV领域综述论文速递!涵盖14个方向:目标检测/图像分割/医学影像/人脸识别等方向...

    文章来源于极市平台,作者CV开发者都爱看的 [导读]本文共汇总了从2020年4月至今的计算机视觉领域综述性论文,共54篇,涵盖图像分割. 图像识别.人脸识别/检测.医学影像.目标检测.3D方向(自动驾 ...

  9. 硬核 - Java 随机数相关 API 的演进与思考(上)

    本系列将 Java 17 之前的随机数 API 以及 Java 17 之后的统一 API 都做了比较详细的说明,并且将随机数的特性以及实现思路也做了一些简单的分析,帮助大家明白为何会有这么多的随机数算 ...

最新文章

  1. iOS SwiftUI篇-6 专题TabView
  2. 【MM模块】 Blanket PO 框架订单
  3. python中二维数组如何按索引找元素_按索引或坐标访问二维数组中的元素
  4. 混合模型简介与高斯混合模型
  5. KDD Cup2020 正式开赛,天池诚邀各路豪杰来挑战!!
  6. 概率论符号_考研概率论知识点总结1
  7. dao层如何调用对象_如何实现DBCP数据库连接池工具类&mvc分层开发web流程操作?...
  8. MCP2515在8M晶振控制器下配置1M波特率的配置
  9. java各种优秀开源库收集
  10. MatLab中多项式数据拟合(ployfit函数与polyval函数)
  11. 微信小程序实现文件上传
  12. win10快速关机_WIN10系统这几个关机方式,值得收藏
  13. fcpx插件:Stupid raisins show pop for Mac(20个专业设计徽标动画)
  14. 仙侠游戏改编电视剧为什么很火?
  15. 文件头文件尾全面总结
  16. X-MAN丨华为郑叶来:不畏浮云遮望眼,做有信仰的云
  17. 第十二章: 项目采购管理
  18. 基于 SSM 的网上购物系统(源码 + 开发文档 已开源)
  19. 异步电机与同步电机的发电机状态与电动机状态理解
  20. 兔子是如何吃掉狼和野猪

热门文章

  1. 《那些年啊,那些事——一个程序员的奋斗史》——100
  2. APP机型兼容测试的手机选择
  3. JAVA计算机毕业设计阿尔兹海默病Mybatis+系统+数据库+调试部署
  4. numpy.insert用法以及内插插0的方法
  5. 服务端开发框架及技术(转)
  6. HTML5网页设计图片如何,网页设计中优化图片的6个技巧
  7. FTP上传文件提示550错误原因分析。
  8. 彻底搞懂阻抗控制、导纳控制、力位混合控制
  9. 网上一位仁兄关于项目管理的总结
  10. 经典:基因组测序数据从头拼接或组装算法的原理