Guess the random number
1. 题目
- 1.1 This time the number is generated based on a couple fairly random sources
- 1.2 题目代码:
1 | // SPDX-License-Identifier: MIT |
2. 分析
2.1 题目代码中的
answer
是随机生成的,及根据创建的时候区块号和当时的时间 now 来打的时间戳。2.2 区块链链上的所有内容都是公开的,我们可以利用与合约交互,获取到合约上存储的值
2.3 又因为合约中只有一个变量,及索引为
0
位置的值,便是我的答案answer
1
var contract = new web.eth.Contract(contract_abi,contract_add);
tips: 为了弄懂这个存储位置,我还特意去阅读相关文献了解了EVM的存储位置和原理,相关文章在这 : storage-slot存储拓展
3. 解题
- 3.1 用 js代码 实现 web3 与合约的交互
1 | let Web3 = require("web3"); |
3.2 在控制台获取 合约 的
answer

3.3 在 remix 中验证

3.4 结果正确