文章
问答
讲堂
百科图谱
线下集训
更多
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
20
在合约里能实现读取指定高度块的存储的数值吗?
回答问题即可获得
5
贡献值,回答被采纳后即可获得
23
学分。
在合约里能实现读取指定高度块的存储的数值吗?
在合约里能实现读取指定高度块的存储的数值吗?
0 条评论
分类:
智能合约
请先
登录
后评论
默认排序
时间排序
2 个回答
七哥
- 独立开发者
2023-02-05 17:53
擅长:Defi
无法读取的,合约中只能读取当前时刻的状态数据,不可能读取历史状态。你可以理解在执行交易时,EVM会开辟一块内存,并将当前最新状态(state)准备一份供合约读取操作。
请先
登录
后评论
×
如果觉得我的回答对您有用,请随意打赏。你的支持将鼓励我继续创作!
路路通了
2023-02-05 22:01
是的,在智能合约中可以读取特定区块高度的存储数值。可以使用区块链状态API或Web3库来读取合约存储的数据。这需要在合约代码中编写相应的函数并在客户端调用该函数。 以下是使用 Solidity 编写的一个示例合约,该合约可以读取特定区块高度的存储数值: pragma solidity ^0.8.0; contract Example { uint256 public storedValue; function setValue(uint256 _value) public { storedValue = _value; } function getValueAtBlock(uint256 blockNumber) public view returns (uint256) { return uint256(block.blockhash(blockNumber)); } } 在这个合约中,有一个公共变量 storedValue,可以用 setValue 函数设置值。同时,使用 getValueAtBlock 函数可以读取某一特定块高度的哈希值,块高度可以作为参数传递给该函数。
请先
登录
后评论
您需要登录后才可以回答问题,
登录
关注
2
关注
收藏
0
收藏,
2552
浏览
提出于 2023-02-04 22:47
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: