Skip to content
On this page

S1C1: The Greeting

1. 问题

玩家需要在 CTF 系统中注册,才能参与后续挑战。合约 Season1Challenge1 提供了一个 registerMe(string) 函数,调用后会记录玩家名字并 mint 一个 S1C1 NFT 作为注册凭证。

2. 原因

Season 1 的所有挑战合约共享同一个 Season1NFTFlags 合约。后续挑战(如 S1C10, S2 系列)会检查调用者是否已完成 S1C1 注册(hasMinted[address][1] == true),未注册则拒绝。

3. 方案

直接调用 registerMe("your_name") 即可:

bash
cast send <S1C1_ADDRESS> "registerMe(string)" "player_name" --private-key $PK --rpc-url $RPC

4. 遇到的陷阱

无明显陷阱。这是入门关卡。

5. 陷阱的原因

N/A

6. 如何解决

N/A

7. 技术要点

要点说明
CTF 注册机制通过 NFT mint 记录玩家完成状态,hasMinted mapping 用于跨挑战验证
无权限检查registerMe 无任何访问控制,任何人都可注册任意次数(但 NFTFlags 会检查重复 mint)
Solidity 基础mapping(address => string), emit 事件

Built with AiAda