在区块链上如何生成随机数。
Chainlink 如何解决以太坊“随机数问题”
在以太坊上使用的随机数来源主要有链上和链下两种途径,其中链上生成核心要解决随机数生成种子的不可预测性。
通过实例学习,建立一个安全的高赌注随机数游戏
随机数的核心是数的随机性。随机性是信息安全领域,尤其是密码学领域一个很关键的研究问题。在密码学中,对一个序列的随机性是这样定义的:“看起来是随机的,即能通过我们所能找到的所有正确的随机性检验。”
研究如何利用 Solidity 新操作码 Prevrandao 获取随机数
如何实现Solidity智能合约的安全随机数?
Libra中采用的椭圆曲线是ED25519,而不是像以太坊比特币使用的是secp256k1. 虽然有不同,但是从本质上来说他们都是椭圆曲线,基本性质都是完全相同的.因此适用于S256曲线的VRF算法在Libra中也是相通的.
Libra
ED25519
secp256k1
S256
在区块链上,由于一切信息都是透明公开的,提供一个安全实用的随机数是一个非常困难的问题。但是随机数是很多应用的基础,比如游戏,博彩,流程控制等。因此,提供一个实用可靠的随机数是基于智能合约的应用的迫切需求。
本文详细介绍了Schnorr签名和Musig的实现原理。首先讲解了与椭圆曲线相关的基础知识,然后深入探讨了Schnorr签名的签名和验证过程,以及为什么需要随机数nonce。接着介绍了Musig的聚合公钥和签名的实现,包括如何通过多轮通信防止关键取消攻击,确保多个参与者的安全和隐私。
在日常生活中,很多场景都需要应用到“随机数”,例如福利彩票、车牌摇号、公租房的分配等等。虽然借助互联网,随机数的应用愈加的方便,但是不可避免中心化的系统带来的弊端,即中心化系统产生的随机数可能是弱随机数。借助区块链以及相关的加密算法,使得拆解、破解随机数几乎不可能,因为需要消耗大量的时间和人力,并且结果也并不理想。因此,使用区块链可以保证竞猜类应用的随机性和公平性。
随机数在密码学体制中,占据重要的位置,如果不正确使用会带来非常大的安全隐患,历史上发生此类事故也不在少数。伪签名是一个弱问题,可能会对不熟悉的人造成欺骗。
Chainlink VRF(可验证随机函数)是一个为智能合约设计的公平的可验证的随机性来源。Solidity 开发人员可以使用它作为防篡改的随机数生成器,为依赖不可预测结果的 Ethereum 应用构建安全可靠的智能合约。
本文总结了智能合约开发中常见的安全漏洞和最佳实践,包括重入攻击、算术精度问题、访问控制不当、非标准协议、原生代币处理、底层调用、随机数问题、存储槽管理以及编译器版本固定。同时,强调使用静态分析工具和编写全面测试的重要性。