区块链入门-0xGame-Blockchain

[Week 1] 肘,上链!

环境配置

MetaMask

浏览器插件商店搜索并添加即可,然后创建一个账户(建议使用chrome)

Remix

Solidity语言的一个在线ide网站-Remix:Remix - Ethereum IDE

python的web3库

安装命令:pip install web3

开始复现

先nc连上去创建个账户

4c48a0866f564b6cf31e57906c54ab6e.jpeg

第一句话告诉我们,我们的任务是要让isSolved函数的返回值为ture

再nc连接一遍,这次输入2,填入之前给的token获取合约地址(contract address)

c79df5e37b27364db35d8576c1de9243.jpeg

然后打开MetaMask添加到测试网络,并切换到此网络

a13199756ce85fff6417e470aedf8509.jpeg

先到题目所给水龙头地址接点水,因为部署合约需要支付一定的费用

34e7fe04536d92467406157404754f8c.jpeg

511050ece71e3c7ec5d65908af8614ca.jpeg

将自己钱包地址粘贴到框框中,点击Request,稍等一会,测试币就到账了

然后获取此题目的合约代码

c25e1e1eafcdf3e5f31458b8e1802d1c.jpeg

合约代码如下:

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.0;

contract Signin {
  bytes32 signin;

  constructor () {}

  function sign(bytes32 _signin) public {
    signin = _signin;
  }
  
  function isSolved() public view returns (bool) {
    string memory expected = "Hello0xBlockchain";
    return keccak256(abi.encodePacked(expected)) == signin;

  }
}

打开后新建一个名为test的文件(名称随机即可,sol后缀会自动补全),粘贴代码 编译合约,然后选择Injected Provider - MetaMask,如图:

a3688ac3e92f56033196b6726b13c53f.jpeg

这时MetaMask会跳出来,点击连接就好了

然后将之前获取的合约地址(contract address)填入 “At Address”后面的框框中,然后点击 “At Address”

下面一步就是要编写脚本了,这个合约代码不难,要求传的值需要与”Hello0xBlockchain”的keccak256哈希值相同就行,让gpt跑个脚本,需要用到web3的库

安装命令:pip install web3

下面贴一下官方wp里的脚本

from web3 import Web3
s=b"Hello0xBlockchain"
w3 = Web3()
hash_bytes = w3.keccak(s)
hash_hex = hash_bytes.hex()
print(hash_hex)

在得到的结果前面加上0x 然后填到Sign框框中,点击Sign,这时会跳出一个交易的对话框,点击确认

看到绿色的勾勾时就说明成功了,然后点击isSolved,看到成功返回值了

ed6aca702c9d395112928c61ddae3270.jpeg

然后回到nc连接,选择3,输入token就能拿到flag啦

04e5e278566c37c674922416a639531b.jpeg

小结

这是我第一次做Blockchain题目,不足之处还请大佬指出。了解了区块链的一些知识和做题步骤,但这仅仅是开始,以后会多加学习区块链相关知识。

猜你喜欢

转载自blog.csdn.net/GYL143632/article/details/142991007