Skip to main content

Move on IOTA Capture The Flag (CTF)

The Move on IOTA Capture The Flag (CTF) is a unique learning experience designed to help developers master the Move programming language by solving a series of challenges. These challenges simulate real-world scenarios that require participants to find and exploit vulnerabilities, optimize contract logic, and interact with IOTA’s Testnet. Whether you're new to Move or experienced with smart contract development, this CTF is an excellent way to sharpen your skills.

This CTF features eight challenges, each built on Move, a language optimized for safety and scalability in decentralized applications. Throughout the event, participants are encouraged to explore Move’s features, including its resource-based design and transaction scripting model, in a competitive environment. However, bear in mind that the provided demonstration contracts may intentionally include distractions, poor design, and obscure naming conventions to increase difficulty.

What to Expect

  • Varied Difficulty: The challenges are structured progressively. The lower-numbered challenges are easier, while the difficulty increases as you proceed.
  • No Contract Modification: Participants are prohibited from modifying the provided contracts; the goal is to interact with them via Move scripts, client libraries, or command-line tools.
  • Explore Move in Depth: As you tackle these challenges, you'll get hands-on experience with Move’s key features, such as resource management, transaction scripts, and smart contract modules. Each challenge is designed to push you to think critically and apply Move concepts effectively.

Capturing Flags

Upon successfully completing a challenge, you will receive a "flag," which is a Move object generated as proof of completion. To validate your progress, there will be a submission window where you can enter the ID of the flag object. The system will verify whether the submitted flag is correct or not. Only valid flags will be counted toward your overall score in the CTF.

Setup

The CTF contracts are already deployed on the IOTA Testnet. To get started, you need to install the IOTA CLI tool and connect to the Testnet. If you haven't done so already, follow these steps:

  1. Install the IOTA CLI Tool
  2. Connect to an IOTA Network
  3. Create an Address
  4. Fund Your Address
  5. Get the flags!

Challenge Addresses

ChallengeEntityAddress
challenge_1Package0x9f1aa694741c7bf4c6081718e87df3beb6ed50d16c9729c53452f13ae9b154a4
challenge_2Counter0x03730ebe89151b43e696c7c6ca6e32818ececf12459d8b67a7173dfce361ffa5
Package0xc8bc4a1780bcdfec4ca4a85522c6a2d9f2dad8ce6881fe6bb5d6df21214ffc69
challenge_3TreasuryCap<0xc6f00a2b5ec2d161442b305dcb307ba914e20c5268ec931bd14d7ea3454b262b::mintcoin::MINTCOIN>0x11d7aacb27eb65063dbb6ce0fa07f7807316c5e77763c6f2356d1bd3a34a2741
CoinMetadata0x90ab9599899828a27412b8f77644a5eec5da4b0632c3e53afab236eb7c211c54
Counter0xc3716689fa16bd8d8bf33ce1036b00740c8818ab9826dba846ef736501fd34b7
Package0xc6f00a2b5ec2d161442b305dcb307ba914e20c5268ec931bd14d7ea3454b262b
challenge_4Package0x279681d0791d17b4c6ee628808c9d3228b16abcadb7824da9f6e46df6ec46dd0
Vault0x2f4f182bc43a33c9a7c6f93e33cff63a34e048914edcc181af9df77de49cc767
CoinMetadata0x50b810608878afcfb723670403b3a3a0a3b95860b0aded2ba78ba0c36a0aee48
Counter0x86e9102db7c1c5149a35d9eed945de5de447cab8746594e98156696c72d8f8ae
TreasuryCap0xa36f73a4a7d8530ccc970797d8221d4bfe63a3e0405bc8c16c2caac35635c777
challenge_5Package0xa0fb6be5ee8585e7d512e73739657319dbfe3cb58817c062d0fd67335193fbd5
challenge_6PizzaBoxRecycler0x6b45253a27c915c0604e87c3959934d02c8c6d5304b24da344927a6d32d59b1e
Package0x5196f5b912e20b9b7153c7f4426c902ddaad593fcb1125becc70f3904981ff29
challenge_7Package0x7661363fdfe4cd602711244a8501c17e756a5304bcce0918efcef4af98c09291
challenge_8MintA0xf74d7452f4ed9ba695074813d6482a856d9b6ba7ed676d1c6d811836a2d1ef79
MintB0x467ff8123c47e11a0c467fe8a5708234f53ae8ccfa126ee9ab3dedd333ee9419
Package0xa94921fd4516ec6b8479e08f5f181edf5029d6df327631cf7073603cc24cb207
CoinMetadata<0xa94921fd4516ec6b8479e08f5f181edf5029d6df327631cf7073603cc24cb207::ctfa::CTFA>0x3e8467af29646d8cb7f7238fad52b58531a303011ea6cd2c10c2d8f590161cae
CoinMetadata<0xa94921fd4516ec6b8479e08f5f181edf5029d6df327631cf7073603cc24cb207::ctfb::CTFB>0x475f4444beba1baba0454b137951b3b7ebec2ff703f49b50233db8d3777df1d0
Package ID for Verifier: 0xc8fef254ccb26554b4f59ddeedc107596f022beb00ac71918eb233f99966696b
CTFCap Object ID: 0xb99c8b85df1c53c14bd557f29fb90719301700573c58015966e7252e80ae97ba
Shared Challenges Object ID: 0x52dbeb4d08a0e84b801ae6992b060174bbbb8cffdd33bebe2ea8f5335612f4a4