【问题标题】:Solidity code for getting raw data from blockchain based on blocknumber/Hash基于blocknumber/Hash从区块链获取原始数据的Solidity代码
【发布时间】:2020-04-11 04:08:32
【问题描述】:

请您制作视频/代码或任何基于块号/哈希的可靠代码示例,以获取存储在区块链中的原始数据。如果有人知道,请提供帮助。

【问题讨论】:

    标签: solidity


    【解决方案1】:

    solidity 中没有这样的函数来获取原始块数据。
    但是看看这个Official documentation link,这将有助于获取块信息

    blockhash(uint blockNumber) 返回 (bytes32):给定块的哈希
    block.coinbase(应付地址):当前区块矿工的地址
    block.difficulty (uint): 当前区块难度
    block.gaslimit (uint): 当前区块gaslimit
    block.number (uint): 当前区块号
    block.timestamp (uint): 当前 区块时间戳为自 unix 纪元以来的秒数

    【讨论】:

    • 好的,感谢您的回复,如果我第一次使用唯一 id 发送数据我有一个疑问,我第一次给出 id=100 name="lucky",然后再次 id =100 name="sonu" 而获取它给出的最新数据。是否有可能不允许在区块链中两次使用相同的 id。
    • 据我了解,我假设您正在替换值,您可以使用数组来存储值。提供您的代码示例,有助于了解您在做什么并解决问题
    • pragma solidity ^0.5.0;合同产品 { struct ProductInfo { uint256 id;字符串 jsoninfo; } 映射(uint256 => ProductInfo)产品列表; function writeInfo(uint256 idL,string memory infoL) public { ProductInfo storage pin=productsList[idL]; pin.id=idL; pin.jsoninfo=infoL; } function getInfo(uint256 idL) public view 返回(字符串内存){ return productsList[idL].jsoninfo; } }
    • 正如你所说的它是唯一的 id,它将只有一个,你正在使用映射来存储价值。因此,如果您再次传递相同的 id,则信息将被替换。要限制它,您可以在 ProductInfo 中进行布尔检查。
    • 试试这个代码:pragma solidity ^0.5.0;contract Product{struct ProductInfo{uint256 id;字符串 jsoninfo; bool valueCheck;}映射(uint256=> ProductInfo) productsList;函数writeInfo(uint256 idL,string memory infoL) public{require(!productsList[idL].valueCheck);ProductInfo存储pin=productsList[idL];pin.id=idL ;pin.jsoninfo=infoL;pin.valueCheck=true;}function getInfo(uint256 idL) public view返回(字符串内存){return productsList[idL].jsoninfo;}}
    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 2022-06-16
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2021-12-16
    相关资源
    最近更新 更多