• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ETH-Remix编译器调用硬件随机数案例

相关文章 搞代码 3年前 (2022-04-21) 17次浏览 已收录 0个评论

阐明:
HPB目前自定义的remix solidity编译器只反对到0.5.7的版本,导致不能应用最新的合约代码来编译。

目前的解决方案是,应用HPB remix公布一个硬件随机数合约代码到HPB主网。而后开发者能够在ETH 最新的Remix上编写一般合约,调用这个硬件随机数合约进行拜访随机数。
具体案例如下:

合约中获取随机数的办法如下,随机数的合约代码如下:

pragma solidity ^0.5.1;

contract HRNG {
    function hrand() public view returns (bytes32){
         return block.random;
    }
}

然而这种用法受限于必须应用 hpb-remix 以及 solidity 0.5.7 版本编译器。

为了让开发者可能应用任意版本编译器以及其余合约开发工具,当初将下面的合约部署到了测试网和主网下面,开发者可通过合约调用合约的形式获取随机数。

已部署合约地址:

testnet:0x4fe7d9b3b0b639ccad9c394aa81bc6cbe6acc7f5
mainnet:0x60db1959cc9813c5912c66e66d2299e681ea7764

调用示例:

pragma solidity ^0.6.3;

abstract contract HRNG {            // step 1. add HRNG contract declare
     function hrand() public view virtual returns (bytes32);
}

contract Demo {
    address hrngAddr;
    HRNG hrng;
    constructor (address hrngaddr) public { // step 2. set hrng contract addr by testnet or mainnet.
        hrngAddr = hrngaddr;
        hrng = HRNG(hrngAddr);
     }

    function lastr(int p) public view returns (int) {
         bytes32 r = hrng.hrand();        // step 3. call hrand to get hardware random.
         int q = p + int(r)%10;
         return q;
    }
}

测试后果:

留神:应用不同版本的 solidity 开发时,step 1 地位处的写法会有所不同,这里不一一赘述。

作者:Sagar、Jason

欢送区块链行业气味相投的小伙伴增加小极微信,退出blockgeek区块链技术交换群,独特推动区块链技术遍及和倒退~


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ETH-Remix编译器调用硬件随机数案例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址