Game of NFTs (GoN) is a program that provides public environments where the Interchain NFT Transfer technology can be extensively tested with community support and innovations can be created pioneeringly.
The program includes two phases:
- Phase 1 - Public Incentivized Testnets (Kick Off Now!)
- Phase 2 - Hackathon (April 2023)
Phase 1 of GoN now kicks off at 2023-03-01-06:00 UTC, and we have a number of tasks and rewards scheduled. Rewards will be distributed based on a point system, and allocated to winners who have completed certain tasks and submit an entry for dedicated awards.
Table of Contents
- Game of NFTs
Through the several rounds, participants are expected to gain knowledge and build an understanding of the Interchain NFTs feature and assist in the discovery of interesting attack vectors.
The testnet infrastructure includes:
- ICS-721 Enabled SDK and Wasm Chains
- ICS-721 IBC Channels and Ports
- Support Services in Cosmos Discord
- Testnet Faucets
- Testnet Explorers
Participants will utilize all GoN testnets for feature-testing, and for completing multiple tasks.
💬 Event coordinators will be available in the Cosmos Network Discord #🐇┇gon-testnet channel
📍 A leaderboard will be available at https://interchainnfts.dev/gon/scorecard.html
According to information provided via the registration form, eligible participants have been invited into Cosmos Network Discord #🐇┇gon-testnet channel to start coordinating their participation.
Before you start testing, please kindly check the join & evidence submission guidance provided at gon-evidence.
- Step 1. You need to submit qualification evidence to upload basic team information
- Step 2. After that, you need to add each task evidence into your own
info
sheet as required and submit for verification and scoring - Step 3. For special award application, you should submit issues based on award application for judging
- Step 4. During the testing phase, if you find a bug/issue, please report based on bug submission
In order to verify the authenticity of identity, ensure fairness of the game, and protect participants' rights in receiving points and claiming rewards, please make sure to submit evidence as required.
Please note that all submissions will be public, so please make sure to create new addresses of test chains to participate in the public testing.
- The final number of points awarded to each participant is at the discretion of the testnet judges.
- The timeline for all stages and rounds may change depending on the outcome of previous activities.
- Available tasks/awards and points may be adjusted during the course of the testnet program.
- All evidence submitted for scoring points must be submitted to gon-evidence as required.
The Incentivized Testnets has 3 stages with different tasks. Tasks will be revealed gradually as the game progresses.
Participants can refer the installation doc to install the client software and the instruction doc to get familiar with Interchain NFTs Transfer operations.
Start from Mar 1
- Create Collections and NFTs
- Perform Interchain NFTs Transfer
Round 1: Warm-ups
IRISnet, Stargaze, Juno, Uptick and OmniFlix have prepared their testnets, allowing participants to create their collections and NFTs. These NFTs can be used for the next transfer tasks of the game, marking the first time participants can experience Interchain NFT Transfer.
Rules:
- Participant issue their own classes(collections, denoms) and must set class data as the JSON string below
- This allows participants to bind their classes to their GitHub account and prove they have control of the class owner
- All the following tasks related to NFT transfer must be minted under their classes
- Class owner must be the IRISnet address of each pariticipant at the time of registration
{
"github_username": "username, this is a must",
"discord_handle": "discord handle, this is optional",
"team_name": "your team name, this is optional",
"community": "if you come from a community"
}
Tasks: A1, A2, A3, A4, A5, A6
Started from Mar 6
- Perform Interchain NFT Transfer through different flows
Round 2: Journey for One
Participants complete Interchain NFTs Transfer independently, which means they need to perform operations using their own account addresses on each chain. For each task, participants should start transferring with a different NFT. As a result, they need to create multiple NFTs under their collections.
Rules:
- Each NFT can only be used as evidence once for tasks in Round 2.
- Participants must use NFT minted under classes/denoms they issued in Round 1.
- Participants must use their own account addresses provided at the registration stage.
- Flow can be queried off-chain with flow-id.
Tasks: A7~A20
Started from Mar 13
- Competitive individual race
- Quiz game
- ...
In this round, participants will receive NFT airdrops on IRISnet. Each NFT contains Task Data
in its token data, which includes a flow
field with a corresponding flow-id
value that can be used to query the actual flow in flow table. Participants can then perform Interchain NFT Transfer using the specified flows. After completing the interchain NFT transfer, each participant must transfer that NFT to the last_owner
to complete the race. Remember, for the final interchain transfer, transfer the NFT back to your Iris address first, and then transfer it to the last_owner
Task Data
{
"type": "individual race round",
"flow": "the flow id, check flow with flow-id on https://github.com/game-of-nfts/gon-testnets/blob/main/doc/flow-table.md",
"last_owner": "the ultimate owner of this NFT",
"start_height": "transfer before this height are considered invalid"
}
The airdrop has two rounds: In the first round, all participants will go through the same flow, and the airdrop will start at around 2023-03-15 06:00 UTC
. In the second round, all participants will go through different flows, and the airdrop will start at around 2023-03-16 06:00 UTC
. Before that, participants can prepare their strategies. Please ensure that you have been added to the gon-evidence repository and that your information is correct, otherwise you may not receive the airdrop!
Rules:
- The
start_height
is the block height on IRISnet. Any transfer prior to thestart_height
will be considered invalid, which means your first Interchain NFT Transfer must happen after that height. Note thatstart_height
is not used for calculate your grade. - The
last_owner
is an official address on IRISnet, and is the final recipient of the NFT in this game. - Considering the time zone difference, the completion time is calculated by the difference in height between the last NFT transfer (to the
last_owner
) and the first Interchain NFT transfer (notstart_height
) on IRISnet. - The participant with the smallest difference in block height will rank higher, and in case of a tie, the ranking will be based on the height of the last transfer, with the participant having the lower height ranking higher.
- Participants must use their own account addresses provided at the registration stage.
- The third round of the competition will conclude at
2023-03-17 23:59:59 UTC
. After this, you can still complete B1 and B2, but your race rank will not be counted, and you will not be eligible to win B3 and B4. - The top 10 participants in each airdrop round will be awarded B3 and B4 points. Evidence is not required for B3 and B4, as we calculate the height difference from B1 and B2 evidence.
Tasks: B1, B2, B3, B4
Round 4 follows a procedure similar to that of Round 3, with the exception of a different ranking method. Participants will receive three rounds of airdrops simultaneously around 2023-03-21 06:00 UTC
, and then proceed with the Interchain NFT Transfer according to the flow in the Task Data
. For the final interchain transfer, they must first transfer the NFT back to their Iris addresses and then transfer it to the last_owner
. In this round, the ranking is calculated by summing the differences in block heights of each NFT between the last NFT transfer and the first Interchain NFT transfer on IRISnet. If two participants have the same sum, the participant with the lower sum of the first transfer height of each NFT will rank higher. Therefore, if participants have team members, they can transfer the three NFTs in parallel to get higher rank. Note that you must complete all of B5, B6 and B7 in order to be eligible for ranking.
Task Data
{
"type": "team race round",
"flow": "the flow id, check flow with flow-id on https://github.com/game-of-nfts/gon-testnets/blob/main/doc/flow-table.md",
"last_owner": "the ultimate owner of this NFT",
"start_height": "transfer before this height are considered invalid"
}
Rules:
- The
start_height
is the block height on IRISnet. Any transfer prior to thestart_height
will be considered invalid, which means your first Interchain NFT Transfer must happen after that height. Note thatstart_height
is not used for calculate your grade. - The
last_owner
is an official address on IRISnet, and is the final recipient of the NFT in this game. - Considering the time zone difference, the completion time is calculated by the difference in height between the last NFT transfer (to the
last_owner
) and the first Interchain NFT transfer (notstart_height
) on IRISnet. - Participants must use their own account addresses provided at the registration stage.
- Each transfer message must be in a separate tranasction (meaning, you can't bundle transfer messages into a single tranasction - one transfer message per transaction)
- Participants must complete all of B5, B6 and B7 in order to be eligible for the ranking, which is calculated by summing the differences in block heights of each NFT between the last NFT transfer and the first Interchain NFT transfer on IRISnet.
- The fourth round of the competition will conclude at
2023-03-24 23:59:59 UTC
. After this, you can still complete B5, B6 and B7, but your race rank will not be counted, and you will not be eligible to win B8. - The top 10 participants in each airdrop round will be awarded B8 points. Evidence is not required for B8.
Tasks: B5,B6,B7,B8
In the quiz game, the organizers will airdrop 100 Quiz NFTs that are owned by 100 preset addresses around 2023-03-21 08:00 UTC
. Participants are required to guess the answer to the question in Task Data
, which serves as the secret key to decrypt the mnemonics. The participants must then use the mnemonics to generate these preset addresses and transfer the NFT according to the flow.
The quiz questions cover different domains which are related to Cosmos and NFT. All answers are single words containing lowercase characters, hyphens, and Arabic numerals.
Task Data:
{
"question": "the answer of this question is the key to decrpyt the mnemonics",
"mnemonics_encrypted": "aes encrypted mnemonics",
"flow": "the flow id, check the flow off-chain"
}
Rules:
- The answer is a single word of lowercase characters, hyphens and numbers. The possible format are
abc
,abc-10
,10-abc
,10abc
,abc10
and1234
. - To ensure fairness, any DMs to the coordinators regarding quiz game will not be responded to.
- A uniform encryption and decryption tool is provided to ensure that the answers can be correctly decrypted.
- The total number of NFTs is only 100, and each player can solve as many questions as possible to get points.
- The final owner of the NFT must be participants’ own addresses on IRISnet. Otherwise, they won’t get points.
Tools:
We provide a tool for decrypting the enrpyted menenocis with the answer of each question. Note that go
is a prerequsite for this tool.
git clone https://github.com/game-of-nfts/gon-toolbox
cd gon-toolbox
make install
gontool aes decrypt [answer] [encrypted_mnemonics]
Tasks: B9
During the activity on the testnet, we found that there were some issues when transferring through the designated channels, possibly caused by defects or attacks. A large number of transactions needed to wait a long time to be smoothly relayed, which has become a recognized challenge.
However, this is also the meaning of the existence of the testnet. By solving these exposed issues, we can operate better in the formal environment. Therefore, we have set up challenge tasks to encourage participants to solve these problems, ensure the stability and normal operation of the channels, and obtain challenge points.
Open an issue on gon-evidence
to show you can solve the challenge!
Provide the most effective strategy and tool for transferring a stuck transaction package to the destination chain, ensuring seamless transaction relay between different blockchains.
Rules:
- Select only two best solutions
- Explain the principle and provide the code
Provide the most effective strategy to ensure smooth and uncongested transfer operation between chains, preventing batches of transactions from getting stuck.
Rules:
- Select only one best solution
- Explain the principle and provide the code
For evidence submission, please refer to gon-evidence. In light of the judges' review and voting, some adjustments made accordingly.
General tasks allow participants to fully experience the NFT-transfer functionality. The deadline for the general task submissions (stage 1&2) originally due on the 13th will be extended to around 27th, considering that more testing would be better.These tasks will be locked once the 3rd stage has begun. Participants must submit evidence generated before then (based on the specified block height). Details of flow and flow style in the task description can be found here.
Id | Point | Task | Details |
---|---|---|---|
A1 | 1 | Create one Collection on IRISnet | Must set ClassUri and ClassData |
A2 | 1 | Mint NFTs on IRISnet | Must set TokenUri and TokenData and mint at least two NFTs |
A3 | 1 | Transfer an NFT from IRISnet to Juno or Stargaze | The NFT must be the one created in A2 |
A4 | 1 | Transfer an NFT from IRISnet to Uptick or OmniFlix | The NFT must be the one created in A2 |
A5 | 1 | Transfer the NFT on Stargaze or Juno back to IRISnet | The NFT must be the one transferred in A3 Transfer back through the same channel in A3 |
A6 | 1 | Transfer the NFT on Uptick or OmniFlix back to IRISnet | The NFT must be the one transferred in A4 Transfer back through the same channel in A4 |
A7 | 2 | Perform cross-chain NFT transfer as flow-a1 | Transfer in a never-go-back style. |
A8 | 2 | Perform cross-chain NFT transfer as flow-a2 | Transfer in a never-go-back style. |
A9 | 2 | Perform cross-chain NFT transfer as flow-a3 | Transfer in a never-go-back style. |
A10 | 2 | Perform cross-chain NFT transfer as flow-a4 | Transfer in a never-go-back style. |
A11 | 3 | Perform cross-chain NFT transfer as flow-a5 | Transfer in a never-go-back style. |
A12 | 3 | Perform cross-chain NFT transfer as flow-a6 | Transfer in a never-go-back style. |
A13 | 2 | Perform cross-chain NFT transfer as flow-b1 | Transfer in a revisit style. |
A14 | 2 | Perform cross-chain NFT transfer as flow-b2 | Transfer in a revisit style. |
A15 | 2 | Perform cross-chain NFT transfer as flow-b3 | Transfer in a revisit style. |
A16 | 2 | Perform cross-chain NFT transfer as flow-b4 | Transfer in a revisit style. |
A17 | 2 | Perform cross-chain NFT transfer as flow-c1 | Transfer in a backtrack style. |
A18 | 2 | Perform cross-chain NFT transfer as flow-c2 | Transfer in a backtrack style. |
A19 | 3 | Perform cross-chain NFT transfer as flow-c3 | Transfer in a backtrack style. |
A20 | 3 | Perform cross-chain NFT transfer as flow-c4 | Transfer in a backtrack style. |
Id | Point | Task | Details |
---|---|---|---|
B1 | 5 | Competitive! Individual Race Round 1 | Each participant will go through the same flow |
B2 | 5 | Competitive! Individual Race Round 2 | Each participant will go through the different flow |
B3 | 50 | Competitive! Individual Race Round 1 Winners | The top 10 participants will get 50 points each. |
B4 | 50 | Competitive! Individual Race Round 2 Winners | The top 10 participants will get 50 points each. |
B5 | 10 | Competitive! Team Race Round 1 | Each participant will go through the same flow |
B6 | 10 | Competitive! Team Race Round 2 | Each participant will go through the same flow |
B7 | 10 | Competitive! Team Race Round 3 | Each participant will go through the same flow |
B8 | 150 | Competitive! Team Race Winner | The top 10 participants will get 150 points each. |
B9 | Quiz! Solve the quiz | This is a repeatable task |
Id | Point | Task | Details |
---|---|---|---|
C1 | 350 | Challenge! Relay your stucking package | At most two winners |
C2 | 800 | Challenge! Prevent bunch stuck txs | At most one winner |
Id | Points | Award | Details |
---|---|---|---|
1 | 1200 | Best Auditor | Discover the most serious potential protocol and code vulnerabilities. |
2 | 800 | Public Good Awards | Provide the tools to help test Interchain Transfer NFT, including interchain explorers, NFT path visualization tools, wallets, dashboards, etc. At most two. |
3 | 350 | Community Star | Provide the most help for the game and participants. |
4 | 250 | Best Promoter | Create the best GoN promotional content on social media. We will take views and other metrics into consideration. |
5 | Bug Hunters | Find bugs that affect the functionality of ICS-721. At most five. | |
6 | 100 | Best NFT Memes | Create the most popular NFT memes. |
The Game of NFTs Phase 1 testing aims to provide mainnet-like environments for participants to better understand and become familiar with Interchain NFTs, and idenetify potential issues. Breaking the rules listed below will result in disqualification.
The rules for Game of NFTs Phase 1 are subject to change at any time through launch, and any changes will be committed here.
To participate, please note that:
- Employees of Organizer Teams (IRISnet, Stargaze, Juno, Uptick, OmniFlix) are eligible to participate, but ineligible for rewards.
- GitHub account used for testing must be registered more than one year.
The following behavior will result in disqualification from Game of NFTs Phase 1 Incentivized Testnets:
- Registering multiple teams in order to win more testnet prizes than you otherwise would.
- Copying or tampering with any information of other participants to join testing and win rewards.
- Engaging in any prohibited behavior.
- Engaging in any behaviour that might be unethical / not in line with the community ethics of the Cosmos Hub, IRISnet, Stargaze, Juno, Uptick and OmniFlix.
- Any attack against a node that violates the acceptable use policy outlined by that node's cloud service provider. Please familiarize yourself with those policies (such as Google's, Amazon's, or Digital Ocean's).
- Social engineering attacks against organizer-operated nodes. This includes but is not limited to phishing, compromising cloud account credentials, malware, and physical security attacks on data centers.
- Exploiting application-level security vulnerabilities in Cosmos and Tendermint code.
We are grateful to the individuals and teams who have contributed their time and expertise to assist in updating and enhancing this repo and the GoN event.