Appearance
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 事件 |