diff --git a/test3.gno.land/README.md b/test3.gno.land/README.md index 3f25dfd3..963c12a3 100644 --- a/test3.gno.land/README.md +++ b/test3.gno.land/README.md @@ -2,7 +2,7 @@ ## TXs ``` -6529 +6680 ``` ## addpkgs @@ -20,6 +20,7 @@ 8 "gno.land/r/demo/demo" 8 "gno.land/p/duysyland/duysytoken" 8 "gno.land/p/duysygame/gamedemo" + 7 "gno.land/r/test1/tictacgno" 7 "gno.land/r/test/test" 7 "gno.land/r/demo/GemCoin" 7 "gno.land/p/test/test" @@ -30,6 +31,7 @@ 6 "gno.land/r/demo/kazainft" 6 "gno.land/p/demo2/greeting" 6 "gno.land/p/demo/teritori/follow" + 5 "gno.land/r/x1unix/schematest_6" 5 "gno.land/r/tokenno/tokenno" 5 "gno.land/r/test2/occ" 5 "gno.land/r/pirates/banditia" @@ -132,6 +134,8 @@ 2 "gno.land/r/x1unix/whoami/v1" 2 "gno.land/r/x1unix/sf/v5" 2 "gno.land/r/x1unix/sf/v1" + 2 "gno.land/r/x1unix/schematest_4" + 2 "gno.land/r/x1unix/schematest_1" 2 "gno.land/r/x1unix/feedback/v5" 2 "gno.land/r/x1unix/feedback/v11" 2 "gno.land/r/x1unix/feedback/v10" @@ -320,6 +324,9 @@ 1 "gno.land/r/x1unix/sf/v4" 1 "gno.land/r/x1unix/sf/v3" 1 "gno.land/r/x1unix/sf/v2" + 1 "gno.land/r/x1unix/schematest_5" + 1 "gno.land/r/x1unix/schematest_3" + 1 "gno.land/r/x1unix/schematest_2" 1 "gno.land/r/x1unix/gnofeedback/v1" 1 "gno.land/r/x1unix/feedback/v9" 1 "gno.land/r/x1unix/feedback/v8" @@ -346,20 +353,25 @@ 1 "gno.land/r/test98/hello" 1 "gno.land/r/test8/poll_v1" 1 "gno.land/r/test7/hello" + 1 "gno.land/r/test6/tictacgno" 1 "gno.land/r/test50/hello" + 1 "gno.land/r/test5/tictacgno" 1 "gno.land/r/test5/poll_v1" 1 "gno.land/r/test5/hello" 1 "gno.land/r/test42/taoshi" + 1 "gno.land/r/test4/tictacgno" 1 "gno.land/r/test4/poll_v1" 1 "gno.land/r/test4/poll" 1 "gno.land/r/test4/hello" 1 "gno.land/r/test37/hello" 1 "gno.land/r/test30/hello" + 1 "gno.land/r/test3/tictacgno" 1 "gno.land/r/test3/poll_v1" 1 "gno.land/r/test24/hello" 1 "gno.land/r/test23/hello" 1 "gno.land/r/test21/hello" 1 "gno.land/r/test20/hello" + 1 "gno.land/r/test2/tictacgno" 1 "gno.land/r/test2/poll1" 1 "gno.land/r/test2/hello" 1 "gno.land/r/test18/poll" @@ -380,6 +392,7 @@ 1 "gno.land/r/test1/test" 1 "gno.land/r/test1/poll1" 1 "gno.land/r/test1/greeting" + 1 "gno.land/r/test/tictactoe" 1 "gno.land/r/test/test123" 1 "gno.land/r/test/poll3" 1 "gno.land/r/test/panda" @@ -434,6 +447,7 @@ 1 "gno.land/r/namespace/BoomBaby" 1 "gno.land/r/n/n" 1 "gno.land/r/mytoken/mytoken" + 1 "gno.land/r/myhellow/hello" 1 "gno.land/r/mydemo/greeting" 1 "gno.land/r/myNFTtoken/myNFTtoken" 1 "gno.land/r/mpj/greeting" @@ -471,6 +485,7 @@ 1 "gno.land/r/ju/oiu" 1 "gno.land/r/jon/greeting" 1 "gno.land/r/joke/Kent" + 1 "gno.land/r/jj/hello" 1 "gno.land/r/jhkjlhjkhlk/1" 1 "gno.land/r/jetrix/hello" 1 "gno.land/r/jeronimoalbi2/testpoll" @@ -482,6 +497,7 @@ 1 "gno.land/r/ilker/counter" 1 "gno.land/r/huhuhuhuhuh/huhuhuhuhuh" 1 "gno.land/r/hi2/hello" + 1 "gno.land/r/hellow2/hello" 1 "gno.land/r/hellototo/hello" 1 "gno.land/r/hellotestfmt/hellotestfmt" 1 "gno.land/r/hellogoodbye/hellogoodbye" @@ -516,6 +532,9 @@ 1 "gno.land/r/gnoland/16531" 1 "gno.land/r/gno/hello" 1 "gno.land/r/gbenni/hello" + 1 "gno.land/r/game/tictacgno_3" + 1 "gno.land/r/game/tictacgno_2" + 1 "gno.land/r/game/tictacgno" 1 "gno.land/r/gaand/lora" 1 "gno.land/r/fffffffff/event_emitter" 1 "gno.land/r/feedback/feedbackdenystest4" @@ -796,6 +815,7 @@ 1 "gno.land/r/demo/lakat" 1 "gno.land/r/demo/kyvoardworrier" 1 "gno.land/r/demo/kulux" + 1 "gno.land/r/demo/kovach" 1 "gno.land/r/demo/kimmel" 1 "gno.land/r/demo/keyboardvorrier" 1 "gno.land/r/demo/ketto" @@ -1349,41 +1369,44 @@ ## top realm calls ``` 1208 "gno.land/r/demo/minter" - 113 "gno.land/r/test10/poll" + 115 "gno.land/r/test10/poll" 112 "gno.land/r/demo/users" + 111 "gno.land/r/gnoland/faucet" 103 "gno.land/r/demo/tong" 99 "gno.land/r/boom/boom" 87 "gno.land/r/duysygame/test22" 83 "gno.land/r/feedback/simplefeedback" 82 "gno.land/r/demo/boards" - 81 "gno.land/r/gnoland/faucet" 65 "gno.land/r/duysygame/test21" 54 "gno.land/r/gnoland/blog" 49 "gno.land/r/test24/hello" 37 "gno.land/r/hello144/hello" 34 "gno.land/r/jeronimoalbi/poll_v1" + 31 "gno.land/r/gnostudio/gnoyourdate" 26 "gno.land/r/demo/foo20" 21 "gno.land/r/duysygame/test19" 20 "gno.land/r/duysyland/erc20" 19 "gno.land/r/sdm/somedudefeedbacktest_8" 19 "gno.land/r/position" 19 "gno.land/r/demo/foo" + 16 "gno.land/r/gnostudio/feedback_v1" 16 "gno.land/r/demo/gnoph" 13 "gno.land/r/sdm/feedback/v3" - 13 "gno.land/r/gnostudio/feedback_v1" 12 "gno.land/r/x1unix/sf/v5" 11 "gno.land/r/testb/poll" 11 "gno.land/r/test50/hello" - 11 "gno.land/r/gnostudio/gnoyourdate" 10 "gno.land/r/testest2/poll_v1" 10 "gno.land/r/sdm/somedudefeedbacktest_1" 10 "gno.land/r/sdm/feedback/v2" 10 "gno.land/r/pool" 10 "gno.land/r/feedback/feedback" + 9 "gno.land/r/game/tictacgno_3" + 8 "gno.land/r/test6/tictacgno" 8 "gno.land/r/test6/poll_v1" 8 "gno.land/r/test5/poll_v1" 8 "gno.land/r/test15/poll" 8 "gno.land/r/test13/poll_v1" + 7 "gno.land/r/testa1/poll" 7 "gno.land/r/test18/poll" 7 "gno.land/r/test/minter_v1" 7 "gno.land/r/grc20token/mytoken" @@ -1392,6 +1415,7 @@ 6 "gno.land/r/test20/hello" 6 "gno.land/r/test11/poll" 6 "gno.land/r/ilker2/hello" + 6 "gno.land/r/game/tictacgno_2" 5 "gno.land/r/x1unix/gnofeedback/v1" 5 "gno.land/r/michelle/mood" 5 "gno.land/r/foo" @@ -1399,8 +1423,8 @@ 5 "gno.land/p/demo/realmpackagetest" 4 "gno.land/r/x1unix/sf/v3" 4 "gno.land/r/x1unix/feedback/v11" - 4 "gno.land/r/testa1/poll" 4 "gno.land/r/test98/hello" + 4 "gno.land/r/test5/tictacgno" 4 "gno.land/r/test4/poll_v1" 4 "gno.land/r/test4/poll" 4 "gno.land/r/test2/poll1" @@ -1417,6 +1441,7 @@ 3 "gno.land/r/x1unix/feedback/v8" 3 "gno.land/r/x1unix/feedback/v10" 3 "gno.land/r/test/poll3" + 3 "gno.land/r/myhellow/hello" 3 "gno.land/r/malek/whitelistfactory" 3 "gno.land/r/hello35/hello" 3 "gno.land/r/feedback/newfeedback" @@ -1430,6 +1455,7 @@ 2 "gno.land/r/x1unix/sf/v1" 2 "gno.land/r/vadymspace/hello" 2 "gno.land/r/test7/poll_v1" + 2 "gno.land/r/test2/tictacgno" 2 "gno.land/r/test1/poll1" 2 "gno.land/r/test1/greeting" 2 "gno.land/r/stuyk/userinvokes4" @@ -1454,6 +1480,7 @@ 2 "gno.land/r/demo/gemcoin" 2 "g14qvahvnnllzwl9ehn3mkph248uapsehwgfe4pt" 1 "gno.land/r/x1unix/sf/v2" + 1 "gno.land/r/x1unix/schematest_6" 1 "gno.land/r/x1unix/feedback/v9" 1 "gno.land/r/x1unix/feedback/v5" 1 "gno.land/r/test99/hello" diff --git a/test3.gno.land/backup_0391765-0393423.jsonl b/test3.gno.land/backup_0391765-0393423.jsonl new file mode 100755 index 00000000..bc60aeab --- /dev/null +++ b/test3.gno.land/backup_0391765-0393423.jsonl @@ -0,0 +1,151 @@ +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g15wmukt79xymnnu6c4de32trnufudqum60yrxu8","send":"","pkg_path":"gno.land/r/test10/poll","func":"Vote","args":["blue"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A6QxDeE9T4utsKFysdC0JZTyVwnc4UgqQ7vhHJf5pp+p"},"signature":"9Mo3eSaIsfcAsq2rTGxq2foflA/KPbTEdb+uVXq3Lc8bC3iiPLWRl2bNzhSfXqy9zhXDrOeNqZj+WJb++KEERQ=="}],"memo":"Called through gno.studio"},"blockNum":"391905"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g15wmukt79xymnnu6c4de32trnufudqum60yrxu8","send":"","pkg_path":"gno.land/r/test10/poll","func":"Vote","args":["blue"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A6QxDeE9T4utsKFysdC0JZTyVwnc4UgqQ7vhHJf5pp+p"},"signature":"bAIrsI7QGtvOFMCEHOaffACCBN8hNPWZU8xs+Hmx7jEF1/gTmlBe/ZLz3dy/QJvEaABkpXvqlacUUgvwBTTdcw=="}],"memo":"Called through gno.studio"},"blockNum":"391947"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g18l9us6trqaljw39j94wzf5ftxmd9qqkvrxghd2","to_address":"g1vsc4t7d8l8arttauup093njj8qc0eukm6ng8ke","amount":"10000000ugnot"}],"fee":{"gas_wanted":"100000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AxjyQBsJI8CesbgwihvS/eQtYKoezyoA9P+FRlLAKRwg"},"signature":"K/2sseSkcNDr5/0sz+up3UBMIxZ3GXf7uhFfDHwDZl8BClx75waocxjfVXkcXCT5GN2vCJsX9sVAXP+8cKmSpw=="}],"memo":""},"blockNum":"391975"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1vsc4t7d8l8arttauup093njj8qc0eukm6ng8ke","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"05yxP3GGwmkQo1NeMm01WXEfTcJ53ItfSIwk5kJVccQFpCAiEQN2Sq3Ti9VLDtH9MycByE1ZL36a+Obd2/leRw=="}],"memo":""},"blockNum":"392072"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1vsc4t7d8l8arttauup093njj8qc0eukm6ng8ke","package":{"Name":"hello","Path":"gno.land/r/jj/hello","Files":[{"Name":"package.gno","Body":"package hello\n\nfunc Render(path string) string {\n println(path)\n\treturn \"Hello World!\"\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AyX0QnOS9127ryq7Di6BbFmHkygS+DxzK6l4+4UvKoAS"},"signature":"x7VttNwP/aaqPx7EDCImSAAea8WYLdF+QCkU4rBwr/Na6bmAHA684X5j7vYUrQd2pYRwFDurtmqRjakPSfI7vg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392074"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1jfd8ek0eftumadaq267sfkf4uu0u2mc7hj54sp","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"iTnzlZuFghjxq/VWqsZaN3vOfY/D4eNQgGkv/jkS3ugDQDJEqqtRq1CPny/rXUne85FLG3dacyvhrRlew5a0/w=="}],"memo":""},"blockNum":"392259"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1jfd8ek0eftumadaq267sfkf4uu0u2mc7hj54sp","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A433wlBDviMUzFFLDQafDqY4ITTUSoFjEGKMAJqGykz9"},"signature":"ptDXxE0WzgoSvsd5NiOQ7ml5vVVbX50AGvlbOHfBHQtZxMzb0nTgHVJ2rFlXmmgJ1rrvyLS5APaKDv/o/61FJA=="}],"memo":"Called through gno.studio"},"blockNum":"392261"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1lh6ka30a3d27q7gzh5qalffzx7n42tt6wr9wr5","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"K0Cz7QyevfXutmXZpTlWzYZO1eoSUhqP06Z3xWWE1sc6QV2K30EAA0zyt8ajFIX7ycHR2AK71TKKGnfcgIImig=="}],"memo":""},"blockNum":"392271"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1lh6ka30a3d27q7gzh5qalffzx7n42tt6wr9wr5","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"GetAdmin","args":null}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ApP96Yl3gLHgSZC6HPvZNWnDDvXw6SJpVTOxpkP8Bpiy"},"signature":"HmzefGCQNrmPIhFm6idfB6xdJNcSFNOObxNBvoMfUTsQ+hzT2c1PipLJNn0djCam2IfoqO2td6aV1pW26S8euw=="}],"memo":"Called through gno.studio"},"blockNum":"392273"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1lh6ka30a3d27q7gzh5qalffzx7n42tt6wr9wr5","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"kVObqwqvCecMsSAHQO7LVYApP6gaW3GgEXbwQN/7nAAh+/xFunkdm2XXlraeLgQ/8ocDX1WknXUjngMZKa03Mw=="}],"memo":""},"blockNum":"392338"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1lh6ka30a3d27q7gzh5qalffzx7n42tt6wr9wr5","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ApP96Yl3gLHgSZC6HPvZNWnDDvXw6SJpVTOxpkP8Bpiy"},"signature":"Xez7VOTdi7SCro3eOe82YGTGPgL5zm9u0QPQyyVXVlkrQPX35yYYmqYTIvLypSBeYPYVQhmKsWJdw87l3mj2CA=="}],"memo":"Called through gno.studio"},"blockNum":"392340"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fxfw30600yds44rllkke5m2u0zn4u8akm9h23p","send":"","pkg_path":"gno.land/r/testa1/poll","func":"Vote","args":["false","false","false","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AkH5NWnbcJfdqxwoB2gskF6FWh759ecTxYKStf4cel8a"},"signature":"QDB5o83gU3ft+beM5tIxyhQ0z7IvKZg4iGa+lrP77lM2solbyXwUSABtt0siCiucbjY8wvY1kURGi72aRqJxNw=="}],"memo":"Called through gno.studio"},"blockNum":"392409"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fxfw30600yds44rllkke5m2u0zn4u8akm9h23p","send":"","pkg_path":"gno.land/r/testa1/poll","func":"Vote","args":["true","true","true","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AkH5NWnbcJfdqxwoB2gskF6FWh759ecTxYKStf4cel8a"},"signature":"J0g+BQxQjxYWE+6cjImImVMUEppPeQ4waCFDkpfESnI75NCZMZvCwIqyQe16Oj1W1eSnSL+CgE0cdEPhTfnLGQ=="}],"memo":"Called through gno.studio"},"blockNum":"392411"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fxfw30600yds44rllkke5m2u0zn4u8akm9h23p","send":"","pkg_path":"gno.land/r/testa1/poll","func":"Vote","args":["true","false","false","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AkH5NWnbcJfdqxwoB2gskF6FWh759ecTxYKStf4cel8a"},"signature":"YU/bxXb/+aj6A6W4jOBwvBhe4z1LVAQ+Ia8FdIVlsEFE1NYlMnZPzg/szbhcPw27p9QJo7xIZH9KB8FbGWyn4w=="}],"memo":"Called through gno.studio"},"blockNum":"392413"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"qJ2Jn3FupXmwxaYI107jqIpKrOIOJbqtb+dyFIG0YngtKHs6MuC/CuzFKLGlRwp49c+VAMogO8RqsYGkkRG+dw=="}],"memo":"Called through gno.studio"},"blockNum":"392416"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g18cwpdpsqd8mywj8skpsqsg9tn9hudkkpa6ycpe","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArAfE5HkNJtzlmkoKB6QYRfBiulNsrcx2K2TzJhmdzRp"},"signature":"jHT/rZ2rzAV40Ec/PRthwvYNijwYobOjQUQ9AxXswZspoLX62a3zHgVMDzSqrbPVjCO4EjOHoMifsrx1Pzi+IA=="}],"memo":"Called through gno.studio"},"blockNum":"392631"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1yne82ek705lw8efq4d3l3rv3dx69np5v58cmkp","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"fkjgkNsgjJThcitPM54ebo8m5KJLx+Sh5VZQJ7b0JrtvNTHombwhsgPpmAuN47RjEiFmiTtZEc8NBJtknhF0TA=="}],"memo":""},"blockNum":"392633"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1yne82ek705lw8efq4d3l3rv3dx69np5v58cmkp","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"TTDSfyBKqsbQYwR0al0ZOugPrtZrjaTkIqRpNgWYuzVrWpT0cI94jMka5ke/qXi7n6ZZHtNWqXRhHJnQ69uyPg=="}],"memo":""},"blockNum":"392635"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g18l9us6trqaljw39j94wzf5ftxmd9qqkvrxghd2","to_address":"g1sw5xklxjjuv0yvuxy5f5s3l3mnj0nqq626a9wr","amount":"10000000ugnot"}],"fee":{"gas_wanted":"100000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AxjyQBsJI8CesbgwihvS/eQtYKoezyoA9P+FRlLAKRwg"},"signature":"IB/3/mIDv0SggJ40xTzDnDy/TJt0dxSgSzz4H4FpEdx+t5+ZzKJMImnjPmT/bD46IUP/5aLf6Fbn3UmSA7z5pw=="}],"memo":""},"blockNum":"392637"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1jg8mtutu9khhfwc4nxmuhcpftf0pajdhfvsqf5","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A+FhNtsXHjLfSJk1lB8FbiL4mGPjc50Kt81J7EKDnJ2y"},"signature":"G3sHBaYn19Kna/f3xgIEZ0iI87bppnaXMF+LDOTSi7hTBTUlTdFN0Wf/SRMH861lBuCVIvNR6eOEAmBDF7gmXw=="}],"memo":"Called through gno.studio"},"blockNum":"392639"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g19kxd33qkmp5pmn4dtt60l79n8watk7d33xzq45","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"VC+uYLNTG1yvFoMY/PyN/oYRzIX1IUkd2dNGKxqhr1cUqc5y5bIqwr2LVJbtRWl1UoQhfpBkAbG837vWIfsOAg=="}],"memo":""},"blockNum":"392641"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g19kxd33qkmp5pmn4dtt60l79n8watk7d33xzq45","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","true","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AubLvndFsvt0ItmBjF95ARQQg7paon/WiHxY+YfL/mR+"},"signature":"y3IDSrWUxhqbBspNUiU19YFS7QLFIsvYaJjf2YdaO/QSZ1H9cAtC9bkZJdunEcywKWivhwjBTbs4v9S+d9N7fQ=="}],"memo":"Called through gno.studio"},"blockNum":"392643"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g18l9us6trqaljw39j94wzf5ftxmd9qqkvrxghd2","to_address":"g1funduumqq78th3kxktewc32qrwljzd34dqs476","amount":"10000000ugnot"}],"fee":{"gas_wanted":"100000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AxjyQBsJI8CesbgwihvS/eQtYKoezyoA9P+FRlLAKRwg"},"signature":"s9ktSjW7n0OeLXXCFaqRmKrwitlNT8N0S8bDSouZHuhNlhV5R2H0HKosu00TmMaE3tdEp+zDN04IIFht2MbdYA=="}],"memo":""},"blockNum":"392646"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1funduumqq78th3kxktewc32qrwljzd34dqs476","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"B71wNGTfLGmkIEgobYcdo3Awlj+X3ij8hrgL9g48/xEO+iBB6RHXvQarffp2/sN3aB1AJGd0Lfihf2FBpVXUHw=="}],"memo":""},"blockNum":"392648"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1funduumqq78th3kxktewc32qrwljzd34dqs476","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"GetAdmin","args":null}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A1dFEGC1VR7YGsbryGVtKUjvKs0O2B1vpQ8tU59L6tla"},"signature":"5C5MMs3Imwmw/GFw//5s9E20tKMcyCxrPbMEOclUKrJzDpaZ7hcBHfiZs/ICLPmrrKXlnSOhcp9ra/HzAQ2Pnw=="}],"memo":"Called through gno.studio"},"blockNum":"392650"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1funduumqq78th3kxktewc32qrwljzd34dqs476","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","true","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A1dFEGC1VR7YGsbryGVtKUjvKs0O2B1vpQ8tU59L6tla"},"signature":"e4cbJzNL70NA51ItCtTRgsE5z3RJtaeA4oAtQskd9fNTesco2iPE4ui8N6sF9mfIrAQkIT/vRP+eBhigCcuqtw=="}],"memo":"Called through gno.studio"},"blockNum":"392654"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"WCw/57C5rCjagShZ0tvxrDgRCgeo+alsG3vGq9E79mJ6GhIb1it0URsC0pxiHVLcvNwV+PLogNIIepAkq/s3Rw=="}],"memo":""},"blockNum":"392656"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","to_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","amount":"400000000ugnot"}],"fee":{"gas_wanted":"1000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"ajgbfr355Qwfc2LNvGXqwCMO/kAuqDZg/NPjPZRQQpM9PklQmuqYiFim37a18Gim+4uNdrAOaUUwoVNBcShLmQ=="}],"memo":""},"blockNum":"392658"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1lq8cn8kftq0q9ttvnnpy9ye043vca70n3akme3","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","true","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A2cKzqJ7VkOg7PmRUDe0vzont6FEI9hXTelHGRu9ZEsS"},"signature":"3dXn+DDyYLNsh/WxSs0RPUuyx2hJ6seop5klG1Gu7aB+YwYDxRsGmJNpJL30MzZy4OBLtHiQuEV1/InoRjPTjw=="}],"memo":"Called through gno.studio"},"blockNum":"392660"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1funduumqq78th3kxktewc32qrwljzd34dqs476","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"S0Q7IIxOPmuAk15vCHwINeUlQl5xxcWDHjqOYYZHLrlCeKoREbpu4v8rk+CI3YD7US9cpkyg1eMKjV/yKzJbnA=="}],"memo":""},"blockNum":"392663"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1funduumqq78th3kxktewc32qrwljzd34dqs476","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"mwMyLlRovx7zYD2JcWkF66T0Hj7zVmeLgEVzqCrIXL4Cf7kpdujECaLXiCQK/SHkzrdwVSBiJDxhQwvwpzf1sA=="}],"memo":""},"blockNum":"392665"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1h0v3ecnav4dqh8ufraeexeutlvp63g32kh6sfv","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"QLynarW6pB4GD0OFgeoA/q4WBG2xpABZ4Q72pjYSf5VO5FCgW8i7EB/F7M/CnkpovyWlx0jRajM/4lXI1jflVA=="}],"memo":""},"blockNum":"392667"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1h0v3ecnav4dqh8ufraeexeutlvp63g32kh6sfv","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","true","false","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AkxNCd4WSHqCQ+WESs9Q3jSM8xUbK34WXpKN0PZXBvn1"},"signature":"/bUmqCyNhlD+NjUiXHuciWNdMt4Tk2EG36Mp1M0DKzAcuPCMAbNdkcy+ub5iHiYUVQwu5wxbVYcLd88Ad9gSwQ=="}],"memo":"Called through gno.studio"},"blockNum":"392669"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1eahvkxg06c9euu74u2f7m5za6rvtc5x4u4tfxq","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"V52gOOxFy2wdcWDqLFhzjRJHUe/JZ7QYXluWupimw/huZ+9IhUKjwqfyTFRURiFCX6oYKbCykA0d1MdvF0LO4g=="}],"memo":""},"blockNum":"392671"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1eahvkxg06c9euu74u2f7m5za6rvtc5x4u4tfxq","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AuJvij0Oir8qrB4cTJ3EelMxqXW6WbbbYs0vHXYmVz4i"},"signature":"7YZ4J32v5xOUBMm2BoeKdYCquAmDwUsoiO8V4jbv5tpRfhFJ79RZaaBWVX5VZ/15w8sUxLJpItNb2GuIeAUxkA=="}],"memo":"Called through gno.studio"},"blockNum":"392673"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1778y2yphxs2wpuaflsy5y9qwcd4gttn4g5yjx5","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A7MWSLkjf+z/CYfMh6KVHEaHLDWpnfGBRDqFO81j1FRN"},"signature":"7LOPfNyvu0j2voBBxUkCBnngHnQ6MTVlfGFwsV0APqgnnOuag3CkzcKyp8xHooFYQUJr96srGxTsF5yU7OETKw=="}],"memo":"Called through gno.studio"},"blockNum":"392675"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1sw5xklxjjuv0yvuxy5f5s3l3mnj0nqq626a9wr","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"9eW+4kPUTjc0k1s9wR470MC1FtwexUiL8hgXPb4yLKs0VF3ffE50TRzuU9xh6QFAy77DeW9xTzGGGtTQ28e0jQ=="}],"memo":""},"blockNum":"392677"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1qhw2vk7pjq862gx2ffk7ulm7lxycyeptufd757","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"DxRUcfYSHH/DWjDwi+cQtGbT+u/nWxAEewITRzaXcO8yB+HSwcRVe/JhVr+TO/QFbEVNC05VpXRoS2vN5Ouj4Q=="}],"memo":""},"blockNum":"392679"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1qhw2vk7pjq862gx2ffk7ulm7lxycyeptufd757","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Al9tp9uJW+t9D0cjAUUM3YzEnIBDDp685MH6ma4ZWzqU"},"signature":"yk0gHRaA98mG9vlG+uoXvYXpeVaGHH5N5ezRXwrN2pQ9b7fFHw31kKjdmO4XjAAsxiqeQ5tLRNPIbpLmMl1yyQ=="}],"memo":"Called through gno.studio"},"blockNum":"392681"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1sw5xklxjjuv0yvuxy5f5s3l3mnj0nqq626a9wr","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","false","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AuWZgpYDYwjXGDGZ4nZJ6FxqeWB37G3ZTRL8/lKyxWjB"},"signature":"N/RZ1A9Rk34D2UtpaU87GAiu1v0APM+QBbaSt0J+7xcFkRNZVEwZHBY14zrbw0n81EGz38QC6Uj+j+hrjMjucQ=="}],"memo":"Called through gno.studio"},"blockNum":"392683"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g19kxd33qkmp5pmn4dtt60l79n8watk7d33xzq45","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"kWooPBpy20/n4fKtw6nBv+5h1jaNEMY8tkt2+vdGDRZrNzWZ7QZTcLF8QCKdSV4CUb2iiXSf8+Qzfbg2pyRS1Q=="}],"memo":""},"blockNum":"392688"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g19kxd33qkmp5pmn4dtt60l79n8watk7d33xzq45","send":"","pkg_path":"gno.land/r/gnostudio/feedback_v1","func":"SubmitFeedback","args":["FTW"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AubLvndFsvt0ItmBjF95ARQQg7paon/WiHxY+YfL/mR+"},"signature":"jAyDRi/OyjzYGCL7f0O6dCOZGZBh7CaB5P2qCSdRiChKKjfeAy/cdhqPZjhhTlVrZpjKuKu1Falod0n/aoLuLw=="}],"memo":"Called through gno.studio"},"blockNum":"392690"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g18amm3fc00t43dcxsys6udug0czyvqt9e7p23rd","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"r4UujfB2f79ts0sha2BWuft3zkeCxLPvKHujzHDgkktPfgbO42KS8fl6mR7jpgeA/gaJe2aVB/gThSWH7pip9A=="}],"memo":""},"blockNum":"392692"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g18amm3fc00t43dcxsys6udug0czyvqt9e7p23rd","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","true","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A6DYiSfZb3BEW8ZuQQZFv7VU+89at0BbqxSi1QJrZX7s"},"signature":"ssPfouxLEvx+5ptx7xH/912fosOh0fhlI6/9MzOFSWd2tMIiqtDs5+VXMUtDsMqBZQeZKfOysm+s58UPs22wag=="}],"memo":"Called through gno.studio"},"blockNum":"392694"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1wtg2djmh6d5nsw0ua7x5trd8sjly2jt63mcmxv","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"pal1stYK4P9rf5TINZozlFuetjnoFII64qsRysEnSKRsn5A00LeyPqwKfpjsR6UGBnUJWkvre7d9GQcLt2Gdsw=="}],"memo":""},"blockNum":"392696"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1wtg2djmh6d5nsw0ua7x5trd8sjly2jt63mcmxv","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["true","true","true","true"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AsKuwGWyBMfzSK2HkunuuCt/mGKNxs7LC4PV60UnGz0s"},"signature":"EgiSUXNZ+pHdr8G1pgXmU2ePzqLJUJog4lIxNmUJ/EER5bra1il2pKV9cbdE+jJ/w3X2/ZlqfRldCKLH7aqfXA=="}],"memo":"Called through gno.studio"},"blockNum":"392698"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1wtg2djmh6d5nsw0ua7x5trd8sjly2jt63mcmxv","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"vfQ111zDeHVfSBohmaNZpvw9oEKEGXNxp0qWI4SrS9wozvO3GhIBcTrffXpqzRVafs4UIGiNcPgESuPAP0QhXw=="}],"memo":""},"blockNum":"392700"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1wtg2djmh6d5nsw0ua7x5trd8sjly2jt63mcmxv","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","true","false","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AsKuwGWyBMfzSK2HkunuuCt/mGKNxs7LC4PV60UnGz0s"},"signature":"IpbegTrHStav+/CZd5POib7tW/jYv68xpTbuWfQEAXd50w+U6+FxBWiAUnz/QOlO85hpdLgPu/zvp2ZRJk9BWg=="}],"memo":"Called through gno.studio"},"blockNum":"392702"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g152fdl7405zglhjpuy5qgt89t7nm28nf5cxljg7","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"mv5KDBHZjujXRY+011mQ4X1BVNfKDlv7czTderkaT8BN8FFGGcv2Q/0sbKIeIO8/7fPW+MKk85yEt9u0DkIrCg=="}],"memo":""},"blockNum":"392704"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g152fdl7405zglhjpuy5qgt89t7nm28nf5cxljg7","send":"","pkg_path":"gno.land/r/gnostudio/feedback_v1","func":"SubmitFeedback","args":["Woohoo!"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Az4ubp5hOVsxZh5h7EyfL1LyjudhchLS2uZ9o/pheOJr"},"signature":"HNzCfSxhBx2RfltnG37m8+Tj7yaPIcIQBsLXOd79/1kag1u070B8NaJo6jFip1mrwZ83KvIRfemEv4UdxKPdKw=="}],"memo":"Called through gno.studio"},"blockNum":"392706"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1995thtfe5gs47wrrjg9gsq0xs0udq3lrvpvg2m","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"0V3c4pbi9GEDsYohfeHH+LOMm1kIotppj18HNkWswaUPd/ArLkrfbzP73eNHnuISuNZPSsiCoPzIs0nuKQz4yg=="}],"memo":""},"blockNum":"392709"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1995thtfe5gs47wrrjg9gsq0xs0udq3lrvpvg2m","send":"","pkg_path":"gno.land/r/gnostudio/feedback_v1","func":"SubmitFeedback","args":["Alex M. was here :)"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Aphp9CmYjwlDP98KHld85iKeda0lGRO8pyUABIJkxVt6"},"signature":"N+LBSw9WhAMzvJa5ZAYAokbHm07LkhadQv9wkbf+lMpd0MFGP7IDYZbppmS9j56+PC7EnnSVU1V4U7UBDWfCjw=="}],"memo":"Called through gno.studio"},"blockNum":"392711"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"dh9P1hiGVVG8E4gwQvezonhzG/cmSf1cY7CnQOYiuqcpQ0KxaZATu20T5SfcPJYUwUH3L4Svfl6mbrt1MFSjlw=="}],"memo":""},"blockNum":"392716"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","100000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"NVPKv8zz4ByV2WkbVB+h7HiR/nOrKjG1cjXNPR9VYvAkSWsrE3Q2+IXa556FxaLsYmvbTFj4pRV5OBnPj01OwQ=="}],"memo":""},"blockNum":"392720"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","100"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"fz+xuul6m+k5eaz9t8F5B/hJ4vBPGq6C2A4Fo7X892t8+P825uxzFof86k+nkBuEFtIpJV7lq0DEc4ZI2ZfQog=="}],"memo":""},"blockNum":"392722"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","100"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"gEMGEQvI4DPuYFyLStYSx+0+UBWgc46V265mdEt7QxxmNTzSzi4ihmx/kcc6LQqRLfD5vn+naYg1uvEMll+9/w=="}],"memo":""},"blockNum":"392725"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","100"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"ru0PgsSbXldKUX/Pz5mSgCFCWhQXwdXksJGX0ewh2TBK0Vr4K2YJRZ1gerMe0aNodZXLauFJ4TIdWtuHDTio0A=="}],"memo":""},"blockNum":"392730"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","1"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"nQnVIrpL3KNTNVzzOY+64r2AD2DKpR/11rOAP2J3qmBNw/blhiAD/8YC1tAiHBF3gqKAbIOYWyr9iDggUSKIUA=="}],"memo":""},"blockNum":"392735"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","to_address":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","amount":"40000000ugnot"}],"fee":{"gas_wanted":"1000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"QSYfwfJ3jrk4SfHBUegah7klmePKog4LicNFr96QG7JKTr/ucTWTIJQmde4QGlVN/NZZSOk5YUpwLFmEELb4aA=="}],"memo":""},"blockNum":"392737"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"5WQh2KmMSd08NiGmgb6me6+No/F1A0R9s0nYc2NYG1NBvPC8gYoCwNHFuE5/mJBX7brHbTgSb7QcDhBBN0ChxA=="}],"memo":""},"blockNum":"392739"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"8I7v1Mu1bBCQL/pnHhPb/X3brvojjyzc17dJAElUbet2ATmH9af+zfyFKee3gB+5SrGcnCmgU0Aer3oQpwiQgA=="}],"memo":""},"blockNum":"392741"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"FH8peQvKZ1fFfdKOmxr8PIw2+3Y8E058vLeySQeKG/lxVBUcNG486QATqF7TWdtfWaX/WVSp/MmAIAMsPumfuQ=="}],"memo":""},"blockNum":"392743"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"DmJzSZrR5WTFpurV9W4gUbPO4NjuBbxQx5N/YITey5dlXfxbAGwVRjr00sw6RYCXWA2i+nIR9DV4NhPPrzX5UA=="}],"memo":""},"blockNum":"392745"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"IQsA4Yq9qKEkQhDWjd31IEWnDwfY5JpVrvywMvnE6Jo+PPiHw6llNCw5HMoSypjn3t+NRQjkW6lp6oJySqjlUw=="}],"memo":""},"blockNum":"392747"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"h/gpvLkIvTQGFR0mVlHgMhs0jDemBvOK06YMpzj1eF8W4vFWNKi2reZYEhRA3XVnbRe5cz13ePxEoZ+2bcYM+Q=="}],"memo":""},"blockNum":"392749"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"xEcw7iNS32qxkZqvhMnoc/qq9JoSAnfAkx1n3Hn6ghh3CSw+XaKAU14+InkMZdvW6+RLtMZgcQipVD39JQNJ9Q=="}],"memo":""},"blockNum":"392751"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"wm6clmP4p3/8I4iuPM9NoeRbifldlbffFTieCcP40pERxOCLh+2R5SfadRcrXDRUbSskL4HpMN1fz/X7ro9uog=="}],"memo":""},"blockNum":"392753"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"jCu4UKsBhoEUDc/kpZfuDf8xjTraT3rZY6m+geqaeXRJswDc2Z13/MEAUJT3xWg1lfPMz4MkdJLV+XfHgytuqA=="}],"memo":""},"blockNum":"392755"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"ufelz7I8x450VD7osNqOUiwikacXcRc2vag2vOwAZLYcfA2/SrVl/cYo251mHVKVl9DO06O1szqkCR1lYjwYnQ=="}],"memo":""},"blockNum":"392757"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"k5gv9UVzH36iSnvaCvNCWZn93m2CJ9BZnjp53/EOhnMiF54AUh1+XftMjSl7hvfkJ/Qqr3bRuL1y6gX63W/zHA=="}],"memo":""},"blockNum":"392759"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"hGHVsZy5gzQRAFiMDBFTU8WZSosuAZXxiNaE/Y1g5p0B1GhA48D1q7+lqsxX94dPl86Mf0RaHyJXDCfrfTip/w=="}],"memo":""},"blockNum":"392761"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"KjutVIxWyEYe5HbscycISmiL/L4QcHn63sjddsabj5t+2pzOxA1FGX0Qpsi0oB5ORL6KFHbGSviRxeyFiRjCKQ=="}],"memo":""},"blockNum":"392763"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"9egT6MkZQ9VqNizU7XbcxSDJp/lS7MRdkjYetKhFIz1Pgh8bKX6I6ChkIiJACtKfuCRiZe0XGJP7+oR2VG3f9w=="}],"memo":""},"blockNum":"392765"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"cjmUWbFhayBgmVL80PTqHW1W2imnQGFhKkImIMZ03uhGtH2NSm/iKbSKosEp+YWcbVCtIzcCu2R9c/MaJaMt/g=="}],"memo":""},"blockNum":"392767"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"lFsVinW51I/cys3yaxxtHlMb5NqddyQWzodbSWbs27IAgm6MJeiIOMaSpcOdb+BApCjWikOOA4KT4VTE4NrxLQ=="}],"memo":""},"blockNum":"392769"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"tOxOt6BsyFLDF2BmgmnNiastDd0Z3T7r9MNeWs/pMEENaf2h9S11Wt1i7yfD0oX8RICoK5qsSuYnSms9jbYnuQ=="}],"memo":""},"blockNum":"392771"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"9iTh5zIfu7JFSGLkA8/WZWr2W3hsYkciyLXRw5+QtOln6tBp3i/wFzXKPtVeguG1sNzWcHBXM+XdkSf7zJkVHg=="}],"memo":""},"blockNum":"392773"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"dOl8bRbFWKmCBqVly4v4hnJwBfiOVuK/N360mI6D279Vb2AB7ChRyO/zXjaVEPILL2QCW1ubsUCKF7OOjT5h7w=="}],"memo":""},"blockNum":"392775"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"d4nF/01USwL1o20R3MTdGUYpuVjYw+qYXr7oK46r0xIbq5A2whFOOFlWGRRk7KjDVEq6D2UV2qMyTTpOmGNgRA=="}],"memo":""},"blockNum":"392777"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"YlctiupTBkBev3xH3lZLRMcEEgfMInLLE9jAaD7UK+ECS2iMIhsBEgjmyEhCMhL4yzIuAXqnkAENBlvbDgZ1GQ=="}],"memo":""},"blockNum":"392779"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"f2EdNnEofaDpitXt4CUlH0jImeXjV0RaVyAntCNcIPknevwkDmwQ2pHuyihbSZQInrIGNDjXelE7tNqOA6dWmw=="}],"memo":""},"blockNum":"392781"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1q6jrp203fq0239pv38sdq3y3urvd6vt5azacpv","send":"","pkg_path":"gno.land/r/gnoland/faucet","func":"Transfer","args":["g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","350000000"]}],"fee":{"gas_wanted":"5000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Axv4T12NC9y+rRIbPLAlcMlHxmjOGUAqA6pWRfiju7GT"},"signature":"Jhwr1YYiQQ95g1Cs9XQkUQLaXzDXBX2OZU51pLACR4cpDsXFu6UlcOQEW0Ph3VAjSEx0/pDtakp8e6jeAKJ0Hw=="}],"memo":""},"blockNum":"392783"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1476aul2je0p32tj4yu07n56c8ey4029kfnpxe9","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"sa3KVMqn5FIEL0bR4XtwLMR8hDeKNJBoRpB4oqZ6fqpvlJiCbhKqVkgXmhgHg3bHwI+v34Ya8KNSV6T7lv28Bg=="}],"memo":""},"blockNum":"392926"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1476aul2je0p32tj4yu07n56c8ey4029kfnpxe9","package":{"Name":"kovach","Path":"gno.land/r/demo/kovach","Files":[{"Name":"GRC20.gno","Body":"package kovach\r\n\r\nimport (\r\n\t\"std\"\r\n\t\"strings\"\r\n\r\n\t\"gno.land/p/demo/grc/grc20\"\r\n\t\"gno.land/p/demo/ufmt\"\r\n\t\"gno.land/r/demo/users\"\r\n)\r\n\r\nvar (\r\n\tfoo *grc20.AdminToken\r\n\tadmin std.Address = \"g1476aul2je0p32tj4yu07n56c8ey4029kfnpxe9\"\r\n)\r\n\r\nfunc init() {\r\n\tfoo = grc20.NewAdminToken(\"Kovach\", \"KOV\", 6)\r\n\tfoo.Mint(admin, 1000000000) // @administrator\r\n}\r\n\r\n// method proxies as public functions.\r\n//\r\n\r\n// getters.\r\n\r\nfunc TotalSupply() uint64 {\r\n\treturn foo.TotalSupply()\r\n}\r\n\r\nfunc BalanceOf(owner users.AddressOrName) uint64 {\r\n\tbalance, err := foo.BalanceOf(owner.Resolve())\r\n\tif err != nil {\r\n\t\tpanic(err)\r\n\t}\r\n\treturn balance\r\n}\r\n\r\nfunc Allowance(owner, spender users.AddressOrName) uint64 {\r\n\tallowance, err := foo.Allowance(owner.Resolve(), spender.Resolve())\r\n\tif err != nil {\r\n\t\tpanic(err)\r\n\t}\r\n\treturn allowance\r\n}\r\n\r\n// setters.\r\n\r\nfunc Transfer(to users.AddressOrName, amount uint64) {\r\n\tcaller := std.GetOrigCaller()\r\n\tfoo.Transfer(caller, to.Resolve(), amount)\r\n}\r\n\r\nfunc Approve(spender users.AddressOrName, amount uint64) {\r\n\tcaller := std.GetOrigCaller()\r\n\tfoo.Approve(caller, spender.Resolve(), amount)\r\n}\r\n\r\nfunc TransferFrom(from, to users.AddressOrName, amount uint64) {\r\n\tcaller := std.GetOrigCaller()\r\n\tfoo.TransferFrom(caller, from.Resolve(), to.Resolve(), amount)\r\n}\r\n\r\n// administration.\r\n\r\nfunc Mint(address users.AddressOrName, amount uint64) {\r\n\tcaller := std.GetOrigCaller()\r\n\tassertIsAdmin(caller)\r\n\tfoo.Mint(address.Resolve(), amount)\r\n}\r\n\r\nfunc Burn(address users.AddressOrName, amount uint64) {\r\n\tcaller := std.GetOrigCaller()\r\n\tassertIsAdmin(caller)\r\n\tfoo.Burn(address.Resolve(), amount)\r\n}\r\n\r\n// render.\r\n//\r\n\r\nfunc Render(path string) string {\r\n\tparts := strings.Split(path, \"/\")\r\n\tc := len(parts)\r\n\r\n\tswitch {\r\n\tcase path == \"\":\r\n\t\treturn foo.RenderHome()\r\n\tcase c == 2 \u0026\u0026 parts[0] == \"balance\":\r\n\t\towner := users.AddressOrName(parts[1])\r\n\t\tbalance, _ := foo.BalanceOf(owner.Resolve())\r\n\t\treturn ufmt.Sprintf(\"%d\\n\", balance)\r\n\tdefault:\r\n\t\treturn \"404\\n\"\r\n\t}\r\n}\r\n\r\nfunc assertIsAdmin(address std.Address) {\r\n\tif address != admin {\r\n\t\tpanic(\"restricted access\")\r\n\t}\r\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A+vBwR59VdTfSEpffS7bcPTNsfgM3eTnSH3+Szti272c"},"signature":"PINk/UBU/y+PZIk1I1fJAZ5Xy4vPT+CMlDpmTfK0lOYHbpu9rdnxRuSWFtVLWIedIh1Egz9UjhyeBWWW3gDMbQ=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392949"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"ybmTAuOf4+myf9H4unESTucGLX4aeWuOJXruoWMZC9ZKtH/5gZTp+PRKONDRCn8F7LDkMfwX+M0jnIYDvfYu9A=="}],"memo":""},"blockNum":"392958"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictactoe","Path":"gno.land/r/test/tictactoe","Files":[{"Name":"package.gno","Body":"package main\n\nimport (\n\t\"fmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tboard = executePlayerMove(move, player, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn \"Player %s wins!\", winner\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\t// Check for occupied spaces\n\tif b[moveInt] != 0 {\n\t\tfmt.Println(\"Please pick an unoccupied space.\")\n\t\tmoveInt = askForPlay()\n\t\tb = executePlayerMove(moveInt, player, b)\n\t} else {\n\t\tif player == 1 {\n\t\t\tb[moveInt] = 1\n\t\t} else if player == 2 {\n\t\t\tb[moveInt] = 10\n\t\t}\n\t}\n\n\t// Check for out-of-bounds\n\tfor moveInt \u003e 9 {\n\t\tfmt.Println(\"Please enter a number under 10.\")\n\t\tmoveInt = askForPlay()\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"9pLk9sp+x5GFzAbfDGP7rRF6KCHxxT2so5hlZzTYAGNCdBoAMuIaflVlT7XosTf4D7WAGYyvgLO4JCy2KxxPBg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392960"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\t\"fmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tboard = executePlayerMove(move, player, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn \"Player %s wins!\", winner\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\t// Check for occupied spaces\n\tif b[moveInt] != 0 {\n\t\tfmt.Println(\"Please pick an unoccupied space.\")\n\t\tmoveInt = askForPlay()\n\t\tb = executePlayerMove(moveInt, player, b)\n\t} else {\n\t\tif player == 1 {\n\t\t\tb[moveInt] = 1\n\t\t} else if player == 2 {\n\t\t\tb[moveInt] = 10\n\t\t}\n\t}\n\n\t// Check for out-of-bounds\n\tfor moveInt \u003e 9 {\n\t\tfmt.Println(\"Please enter a number under 10.\")\n\t\tmoveInt = askForPlay()\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"gFiCl1e8f6wwbcHu1j/egDjOrcYVUJjahuLDXn7h91JpS8JToeJVXglHqSIEiCW3AqNeUmeswAtLIuEAfy7dsg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392962"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\t\"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tboard = executePlayerMove(move, player, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn \"Player %s wins!\", winner\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\t// Check for occupied spaces\n\tif b[moveInt] != 0 {\n\t\tfmt.Println(\"Please pick an unoccupied space.\")\n\t\tmoveInt = askForPlay()\n\t\tb = executePlayerMove(moveInt, player, b)\n\t} else {\n\t\tif player == 1 {\n\t\t\tb[moveInt] = 1\n\t\t} else if player == 2 {\n\t\t\tb[moveInt] = 10\n\t\t}\n\t}\n\n\t// Check for out-of-bounds\n\tfor moveInt \u003e 9 {\n\t\tfmt.Println(\"Please enter a number under 10.\")\n\t\tmoveInt = askForPlay()\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"prTCdp5ShHGYBabQhL1ClAbZfc2TwVtlDoaHMG68I4IFJ1yLOj5j56/GhhySKBE6zka85qnI3x9cvv60u2F4RA=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392964"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\t\"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn \"Player %s wins!\", winner\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\t// Check for occupied spaces\n\tif b[moveInt] != 0 {\n\t\tfmt.Println(\"Please pick an unoccupied space.\")\n\t\tmoveInt = askForPlay()\n\t\tb = executePlayerMove(moveInt, player, b)\n\t} else {\n\t\tif player == 1 {\n\t\t\tb[moveInt] = 1\n\t\t} else if player == 2 {\n\t\t\tb[moveInt] = 10\n\t\t}\n\t}\n\n\t// Check for out-of-bounds\n\tfor moveInt \u003e 9 {\n\t\tfmt.Println(\"Please enter a number under 10.\")\n\t\tmoveInt = askForPlay()\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"s1HEU/0ASZ9+cNQzBOD4FdkprqkPn8BrNGMu4cEZ7mk5Ep11ENAyb/9BPWHUoBr59NlsVyagR9gVJLSdW+UR+g=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392968"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\t\"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\t// Check for occupied spaces\n\tif b[moveInt] != 0 {\n\t\tfmt.Println(\"Please pick an unoccupied space.\")\n\t\tmoveInt = askForPlay()\n\t\tb = executePlayerMove(moveInt, player, b)\n\t} else {\n\t\tif player == 1 {\n\t\t\tb[moveInt] = 1\n\t\t} else if player == 2 {\n\t\t\tb[moveInt] = 10\n\t\t}\n\t}\n\n\t// Check for out-of-bounds\n\tfor moveInt \u003e 9 {\n\t\tfmt.Println(\"Please enter a number under 10.\")\n\t\tmoveInt = askForPlay()\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"okQJetY1Ewwpzkosu7hCEV0HpAh5lH/cF4NnycdiagNxMIwmm/nXxeS07jh7cpyOX7slCQCLVbYW7UZHRc7aMg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392970"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\t// Check for occupied spaces\n\tif b[moveInt] != 0 {\n\t\tfmt.Println(\"Please pick an unoccupied space.\")\n\t\tmoveInt = askForPlay()\n\t\tb = executePlayerMove(moveInt, player, b)\n\t} else {\n\t\tif player == 1 {\n\t\t\tb[moveInt] = 1\n\t\t} else if player == 2 {\n\t\t\tb[moveInt] = 10\n\t\t}\n\t}\n\n\t// Check for out-of-bounds\n\tfor moveInt \u003e 9 {\n\t\tfmt.Println(\"Please enter a number under 10.\")\n\t\tmoveInt = askForPlay()\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"ElEQ9qJkX2TQ8/89+lzqof197nl4kuRW4Huws6CKnR1gSlt7irlooaLHBU20xUVNDww8muCzuTkq1CcNuND0Qg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392972"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif moveInt \u003e 9 {\n\t\treturn \"Please enter a number under 10.\"\n\t}\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"L850dzCp1BdIGCwiPEzhphUcxJ1sdyLJR1vuFkSE10wZ2OGsI8isknGr/w3hFh0H13MmtEBPltEv1XkgLPTc5g=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392976"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test1/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 9 {\n\t\treturn \"Please enter a number under 10.\"\n\t}\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"NLpL+/kUIrMMKAigKqqg9dO3d6uF4fYuwgcTjfnyw8VT+cl2x3nQcuEsRJ++NdTbm7OtCUxwo2LBlrSTXdJhoQ=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392978"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test2/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar layout string\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(layout)\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"K6nsBoE+auozsDM7GDLJwASS93ju6/vQn09rWoyMiN4h12ZW1wVUXP+/gdltzl2MsnGeMZlY2dXYbw5dMiPjCg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392980"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test3/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"rWt57kJ2oCQAzYvao46+zb25o/EdS6S7ouKW3hrdeBVq7EOvKflWp8TAJS5NxdSPr6jjhOATxpWFmT0qfqU5+A=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392984"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test4/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"8k/yzxFVQh9mUR1diJgeJsiACkUbrWo880KWHXvAcq4Gq1QOCRwo8rfgwISWQMPX4qFov9ObToowF5nGogF1rA=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392987"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test2/tictacgno","func":"Play","args":["1"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"5eI1YeBAKnN1+DtL89BqIac7mhOqLwmandzVUeYBfLN/AaL84DfeJ+X9Tpkx0TZGg4A4/zqHQA6/gp1lqSqn3Q=="}],"memo":"Called through gno.studio"},"blockNum":"392989"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test2/tictacgno","func":"Play","args":["1"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"Y9oMXUBKZkE0FNv4VtmRiNcNE5OomccSr2nDLb1CU1IHuMTNySSqtB4TDENMnvwmzQ+v5jI87lagzis8uu+Ksw=="}],"memo":"Called through gno.studio"},"blockNum":"392991"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/test5/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n\n return \"moved!\"\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"2pFlZhhnM+oGbmkp6hXLb77kIWWnCJDKh/+OnI4SHAY88mrJM/ZRcnB698VeEZvLO1t/JpOpeqjZCAnHUJaPCw=="}],"memo":"Deployed through play.gno.land"},"blockNum":"392993"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test5/tictacgno","func":"Play","args":["1"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"Wnx2p3GXKXuYoSXYFtqsOvVp6afW0qQROVoaSuRDRxAwk5Zs/qL9n/hGr4lkUypstKyZtSvjcQiThvyUFaZR5Q=="}],"memo":"Called through gno.studio"},"blockNum":"392995"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test5/tictacgno","func":"Play","args":["1"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"Z9RdF3GkJqYtvkk1oSQgFo1MpoiOaQZgrhI09QqWkYY1595NLR+6RWPPmbF24ZrovVN/43Lb4hy6otKwTaYMPA=="}],"memo":"Called through gno.studio"},"blockNum":"392997"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","send":"","pkg_path":"gno.land/r/test5/tictacgno","func":"Play","args":["1"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"4Q1EBPQTFodHLUvnlB0YEtUPzkb9RKVAs2w3swx+y8gSZpMiRP6IrjVvH40q0/60xDMXNoFynCZwqXa05VRAgA=="}],"memo":"Called through gno.studio"},"blockNum":"392999"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","send":"","pkg_path":"gno.land/r/test5/tictacgno","func":"Play","args":["2"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"ipAdYAumWaA6NL9YSHPchW1uKoNj766uzRacuYX+PP40eCGCintx0rHcVLrexg9OsYVmEkdRuOunimfQFURHrQ=="}],"memo":"Called through gno.studio"},"blockNum":"393001"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","package":{"Name":"tictacgno","Path":"gno.land/r/test6/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 21:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n\n\treturn \"moved!\"\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"Eekzo9tudm2GmC84FstPdOt9XIvA7jCt5ar2YeB9Q8Ez0eCYRgMEG3Xar9AVHoFQNl7+wCnSJPae+2Vuht6X0Q=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393003"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["2"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"wMn2RkXPyPSMckUBbFM1djSiYlnS5SxzfMMWOEhKNkwslf+pT+ffcRbn/NSdVnlSbhAxTZSH5JaFke6s48oxXw=="}],"memo":"Called through gno.studio"},"blockNum":"393005"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["2"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"UNXSLvsZlr3UAQB/Osptl5nG9K3tFht5LLL39NoShwQUJHQVqSiAT6jYOrVGQJF8sG7ZysgWL792TBwkK+NAew=="}],"memo":"Called through gno.studio"},"blockNum":"393007"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["2"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"94M5ETDzLClgkidVTyf5u2Os9o0xEGGIXpDJtMxM4Sp32uuctZ+TJEgZePXzq6Wn6UwAAr+Ba0bTAdcTiz4X1g=="}],"memo":"Called through gno.studio"},"blockNum":"393009"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["4"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"NdCAr6lU9+dz+5Ulfdk5cL7aMvnLjJySpNOUZGAdxeNQnTFI2k3a6HH+eVkNXj7YH5WmAUrB5tKJv+gbM7jB5A=="}],"memo":"Called through gno.studio"},"blockNum":"393011"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["6"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"4AVTS8YxoCpOQs2JhhXxGaayvgjPTjiG1bEQ+d7cZrV3DzH58ijsPc7cToiiL4BmjQm99+9r4HmyV6tl5QpIiA=="}],"memo":"Called through gno.studio"},"blockNum":"393013"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["5"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"33jdjzWuvoeQutyhif0goPP5XhRFNXDVmTh+dE7RN4pbP0ZqvWGWcwdCvvvEc7xhNi0vVgBy6hiIh+Kb70UliA=="}],"memo":"Called through gno.studio"},"blockNum":"393015"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["7"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"ArpuZWPhPhGbXRDOr5vjwl7Ro++55QZaJ7/jUUbkpMHK"},"signature":"nuulPW+2HTypI/Y5Fqmit0XKOHGLMDWboGuHWmLT7HFwHRqCp6/tLkw5Zb/y/cbbvfIO4qJnoiQR/vjDST7Y1Q=="}],"memo":"Called through gno.studio"},"blockNum":"393017"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/test6/tictacgno","func":"Play","args":["3"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"XsYSxg/jT0hvLaAUgV9MjYL7Xzav/AD9Rc0m6VK2kYBnBFI4nDvCkQogOyYtdNHBKrSS4dktoQU9HdwE+cP5Rw=="}],"memo":"Called through gno.studio"},"blockNum":"393019"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno","Path":"gno.land/r/game/tictacgno","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\nfunc Play(move int) string {\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 2:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n\n\treturn \"moved!\"\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"MM6t1wCuSmod/WNlKPX5Dm5kL5r3ZxVi+USd57qgVGYIZIn4qg7aS0f5gArnmCk/kmRu9FKD8L2r/rrJS2GYLw=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393022"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno_2","Path":"gno.land/r/game/tictacgno_2","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno_2\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\n// Use a between 1-8, unoccupied number.\nfunc Play(move int) string {\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 2:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n\n\treturn \"moved!\"\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"vSQwcoZ4KxGfRQMQx+PIAvRcG1T5EfBNMZa7oyQUOioJVY71e3WrQ4lLLli3pieGuQtSdEWdLpbsXNqQxii4Tw=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393026"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_2","func":"Play","args":["5"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"huphAgHMxwyKjsJJpDDflnJ4kjp8DKAwDs6QXBPhZ/9wfbr5sqROO8AOkckfk3hoO+HUFyjTem2/RpKySC5UNw=="}],"memo":"Called through gno.studio"},"blockNum":"393028"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_2","func":"Play","args":["0"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"ZJBLZos62ggY6jK0OWZQJb9roUCLTp7wR+6XTPHeio9XMKooaTt6n1h1lQK2DiHh95NS+Ikn9Bk22AfWpPjg7A=="}],"memo":"Called through gno.studio"},"blockNum":"393040"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"tictacgno_3","Path":"gno.land/r/game/tictacgno_3","Files":[{"Name":"package.gno","Body":"// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go\n\npackage tictacgno_3\n\nimport (\n\tfmt \"gno.land/p/demo/ufmt\"\n\t\"std\"\n\t\"strings\"\n)\n\nvar board [9]int\nvar gameOver bool\nvar turnNumber int\nvar lastCaller std.Address\nvar playerOne std.Address\nvar playerTwo std.Address\nvar winner std.Address\nvar tieGame bool\n\nfunc Render(string) string {\n\tvar s strings.Builder\n\ts.WriteString(\"### Board\\n\\n\")\n\ts.WriteString(presentBoard(board))\n\ts.WriteString(\"\\n\\n\")\n\n\tif gameOver {\n\t\ts.WriteString(\"### The winner is:\\n\\n\")\n\t\tif tieGame {\n\t\t\ts.WriteString(\"Tie game!\")\n\t\t} else {\n\t\t\ts.WriteString(winner.String())\n\t\t}\n\t} else {\n\t\ts.WriteString(\"### Playing...\")\n\t}\n\n\treturn s.String()\n}\n\n// Use a between 1-8, unoccupied number.\nfunc Play(move int) string {\n\tif board[move] != 0 {\n\t\treturn \"Please pick an unoccupied space.\"\n\t}\n\n\tif move \u003e 8 {\n\t\treturn \"Please enter a number under 9.\"\n\t}\n\n\tif lastCaller == std.GetOrigCaller() {\n\t\treturn \"It's not your turn!\"\n\t}\n\tlastCaller = std.GetOrigCaller()\n\n\tswitch {\n\tcase playerOne == nil:\n\t\tplayerOne = lastCaller\n\tcase playerTwo == nil:\n\t\tplayerTwo = lastCaller\n\tdefault:\n\t\tswitch lastCaller {\n\t\tcase playerOne, playerTwo:\n\t\tdefault:\n\t\t\treturn \"All seats are taken!\"\n\t\t}\n\t}\n\n\tplayerNo := 1\n\tif lastCaller == playerTwo {\n\t\tplayerNo = 2\n\t}\n\n\tboard = executePlayerMove(move, playerNo, board)\n\n\tresult := checkForWin(board)\n\tif result \u003e 0 {\n\t\tgameOver = true\n\t\tswitch result {\n\t\tcase 1:\n\t\t\twinner = playerOne\n\t\tcase 2:\n\t\t\twinner = playerTwo\n\t\t}\n\t\treturn fmt.Sprintf(\"Player %s wins!\", winner)\n\t} else if turnNumber == 9 {\n\t\t// Tie game example: 0 2 1 3 4 7 5 8 6\n\t\ttieGame = true\n\t\tgameOver = true\n\t} else {\n\t\tturnNumber++\n\t}\n\n\treturn \"moved!\"\n}\n\nfunc init() {\n\tboard = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}\n\tturnNumber = 1\n}\n\nfunc executePlayerMove(moveInt int, player int, b [9]int) [9]int {\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\n\tif player == 1 {\n\t\tb[moveInt] = 1\n\t} else if player == 2 {\n\t\tb[moveInt] = 10\n\t}\n\treturn b\n}\n\nfunc presentBoard(b [9]int) string {\n\tvar s strings.Builder\n\tfor i, v := range b {\n\t\tif v == 0 {\n\t\t\t// empty space. Display number\n\t\t\ts.WriteString(fmt.Sprintf(\"%d\", i))\n\t\t} else if v == 1 {\n\t\t\ts.WriteString(\"X\")\n\t\t} else if v == 10 {\n\t\t\ts.WriteString(\"O\")\n\t\t}\n\t\t// And now the decorations\n\t\tif i \u003e 0 \u0026\u0026 (i+1)%3 == 0 {\n\t\t\ts.WriteString(\"\\n\\n\")\n\t\t} else {\n\t\t\ts.WriteString(\" | \")\n\t\t}\n\t}\n\treturn s.String()\n}\n\nfunc checkForWin(b [9]int) int {\n\t// re-calculate sums Array\n\tsums := [8]int{0, 0, 0, 0, 0, 0, 0, 0}\n\t// for _, v := range b[0:2] { sums[7] += v }\n\t// for _, v := range b[3:5] { sums[6] += v }\n\t// for _, v := range b[6:8] { sums[5] += v }\n\n\tsums[0] = b[2] + b[4] + b[6]\n\tsums[1] = b[0] + b[3] + b[6]\n\tsums[2] = b[1] + b[4] + b[7]\n\tsums[3] = b[2] + b[5] + b[8]\n\tsums[4] = b[0] + b[4] + b[8]\n\tsums[5] = b[6] + b[7] + b[8]\n\tsums[6] = b[3] + b[4] + b[5]\n\tsums[7] = b[0] + b[1] + b[2]\n\tfor _, v := range sums {\n\t\tif v == 3 {\n\t\t\treturn 1\n\t\t} else if v == 30 {\n\t\t\treturn 2\n\t\t}\n\t}\n\treturn 0\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"vYq4vFhuPgPfstORtGFeGDSkx+nLi97p5iPpd/QoL9kg+fu3h/jc8gjth5VrXZzVRjWakEFoS6io1dTzPgvV5g=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393043"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","send":"","pkg_path":"gno.land/r/game/tictacgno_2","func":"Play","args":["4"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"qSa3N6WsFV3hxagbf3VbEJMQ9reaZgMEcPqIips5hoszhbQ175XMS3YuIH2x7XzMhy7cA+cOrz0HxGEKApSQ/A=="}],"memo":"Called through gno.studio"},"blockNum":"393052"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g14tg8x2j2j5pjxuyff9zzyaxe0s9qk0shrtxtz4","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["0"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A0LaneHVlDH5Mf/hOM3QlHMGAqZPemXQCt85f9t+Ezdb"},"signature":"BVDVl276bbkw+AU+liM3S2kpWnttGQd8qhz1WE2jH0ByY2FIIv+uBacfU794R/XO1DpkDl6OxtPFCgM2t5HgzA=="}],"memo":"Called through gno.studio"},"blockNum":"393072"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["4"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"+05kniEMyO4teXW1dxk6RO0J/aFXq8tJ2yfIX2Kncy9kzMeC5PjSZr3vb0o+1FynnsedDw8bgTjUn6WLO2y4bQ=="}],"memo":"Called through gno.studio"},"blockNum":"393074"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g14tg8x2j2j5pjxuyff9zzyaxe0s9qk0shrtxtz4","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["6"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A0LaneHVlDH5Mf/hOM3QlHMGAqZPemXQCt85f9t+Ezdb"},"signature":"kBDibqHzFKcCrSFX619ouv47cqN/OUZHqph54l2oOqFwYy5WYcDilmr7IDTk/GPqdwePSTUEKR/WtZXLDqMQ9w=="}],"memo":"Called through gno.studio"},"blockNum":"393076"} +{"tx":{"msg":[{"@type":"/bank.MsgSend","from_address":"g13d7jc32adhc39erm5me38w5v7ej7lpvlnqjk73","to_address":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","amount":"20000000ugnot"}],"fee":{"gas_wanted":"2000000","gas_fee":"1ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A/+cjV0/gZkWzMqCul8aP5hC7M3yliIs17uinn/+66uR"},"signature":"tKMI14bywhXPkxRAHvqb2GFnk/y2Deb7ooBUfprslVgUNtRXcHHas7CxlHdKAJCzQJBr1LhQ/JggygQMJxWS9A=="}],"memo":""},"blockNum":"393078"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["3"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"3nhq3I6VZ7o/Qg+oeh1VZblOsrNnIl8WPeTIDI2bGYgeZaaYdxSBSPxjDWf0/sQUWZnG8uDXhfkQMB1cyVfevg=="}],"memo":"Called through gno.studio"},"blockNum":"393080"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g14tg8x2j2j5pjxuyff9zzyaxe0s9qk0shrtxtz4","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["5"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A0LaneHVlDH5Mf/hOM3QlHMGAqZPemXQCt85f9t+Ezdb"},"signature":"XizdzDAMIMmwd+9EmUmvTdi3P0nfPiABxKdD5sY5Fg1ZoS7gGa9HoJmOEUqWF25wUKNvSKv9p/PoFYxZ4Nz/cQ=="}],"memo":"Called through gno.studio"},"blockNum":"393082"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["1"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"PRH5GKd7GwxYFMTrlH3/RASJluGGaAvYmU+xTd7rqOhfbIMD9IMvfQvlykuycrjC3HocKANyAZzacP0qt0ZePw=="}],"memo":"Called through gno.studio"},"blockNum":"393084"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g14tg8x2j2j5pjxuyff9zzyaxe0s9qk0shrtxtz4","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["7"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A0LaneHVlDH5Mf/hOM3QlHMGAqZPemXQCt85f9t+Ezdb"},"signature":"paW1nsYKrEe5IRINMzZjkalnmiJc5zt9ulCrqk5y8H1dDisdlH8r9+4btue+rjs0ype4U0NyNIcEgHWwlBVpkQ=="}],"memo":"Called through gno.studio"},"blockNum":"393086"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["2"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"L8oIev/qdghi2brZijIhdTG7dI4p4GWMwrGCkcPnodFDnczzzjCMYc7IEP9sUKWNgllHPA6Dg+kMWXJq5pRADg=="}],"memo":"Called through gno.studio"},"blockNum":"393088"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_2","func":"Play","args":["7"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"8SlmX6cq7XplPOSqH/IP+DFsy9v4t+65TKJZOivBbWoc6f/6XtBYdVZzTduiTxTVtW4Z9XAIWQbL2fIN3/SLlw=="}],"memo":"Called through gno.studio"},"blockNum":"393090"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g14tg8x2j2j5pjxuyff9zzyaxe0s9qk0shrtxtz4","send":"","pkg_path":"gno.land/r/game/tictacgno_3","func":"Play","args":["8"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A0LaneHVlDH5Mf/hOM3QlHMGAqZPemXQCt85f9t+Ezdb"},"signature":"Psz6mvFXASCmSnEi2saf3hTJGitMX+OT9FsV94v7JfZEoogNBkGbOxprNHkJdn6PZHTicVqSRMWafS0TEHNRrw=="}],"memo":"Called through gno.studio"},"blockNum":"393092"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1995thtfe5gs47wrrjg9gsq0xs0udq3lrvpvg2m","send":"","pkg_path":"gno.land/r/game/tictacgno_2","func":"Play","args":["8"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Aphp9CmYjwlDP98KHld85iKeda0lGRO8pyUABIJkxVt6"},"signature":"C7pdqCRjaU7jbX9IJRIQ3jUrpm1gzldt5Tso4pDV6X5xvZlxuE9VWh1SPQLtWCTUIHx0OQnX+wRdKya8sE1RZw=="}],"memo":"Called through gno.studio"},"blockNum":"393095"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/game/tictacgno_2","func":"Play","args":["0"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"4SwGG7UEUVKDX9UyJ0HZW+Gan3bklt2BCV0rbzGfJLM3msvrN3b9rKWUolVEfU82+s1HX1X8guLsYzipi+rUUw=="}],"memo":"Called through gno.studio"},"blockNum":"393101"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"hello","Path":"gno.land/r/hellow2/hello","Files":[{"Name":"package.gno","Body":"package hello\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"vg9NTVQK2/bn91DnuRov5gxNrVar5KgTOhgGzanYf40RjwiJNDCGZmVFaZm6Kg92wiXWQxxaE5QR9e1RnxBVxg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393159"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","package":{"Name":"hello","Path":"gno.land/r/myhellow/hello","Files":[{"Name":"package.gno","Body":"package hello\n\nfunc HelloWorld(path string) string {\n return \"Hello World!\"\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"OOnpN8RZx/UBxTrVSySgoowfrA3be2ZwrTyI/KDw6KEtvaycpQ5N7kWkL+kISGM5Et+QZyFARoadTa2gal9UGw=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393161"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/myhellow/hello","func":"HelloWorld","args":[""]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"dCL6FjeFoYfQ0+xXyI28EE+zekT2XbAgwjrDAG+jXepEzTNgPM3Y0FADgoCrtrz1cJd0laxbcSAYLXD5wVr4ZQ=="}],"memo":"Called through gno.studio"},"blockNum":"393163"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/myhellow/hello","func":"HelloWorld","args":[""]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"fzuMAatnx0SkaAGFhpLePXvSuwLmQCVIqdDNvOOimI49uNYgoPz9Nw+j7TOtCsl4T9lFqXotZSpAGkiMQmVPlA=="}],"memo":"Called through gno.studio"},"blockNum":"393166"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","send":"","pkg_path":"gno.land/r/myhellow/hello","func":"HelloWorld","args":[""]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"AitYIWT3az4Jx3hGzTapJ6hyalJ6EYgqQCpYoe7Gx2Sw"},"signature":"nVkGHZBKSfIwUyDt2H52h9rIba9JX7sTspNLv2I5f89y8feupqFg1OWrhyFjB3Rsgq1O3MqgGvOEUDzSDMghhw=="}],"memo":"Called through gno.studio"},"blockNum":"393168"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_1","Path":"gno.land/r/x1unix/schematest_1","Files":[{"Name":"package.gno","Body":"package hello\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\ntype S struct {\n Foo int\n Bar string\n Baz S\n}\n\nfunc TestArgs1(str string, i int, ui uint, u8 uint8, b byte, r rune, bo bool, s []bool, iface interface{}, st S, sts []S) {\n \n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"NDzPPYcfOfS2DeiM2cN9J+6UJbH0PKzE8mb19SBrLhovyT3C9sMiLDB/79bufcnHf4xr7N7sCHYs+uN6GcHeww=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393200"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_1","Path":"gno.land/r/x1unix/schematest_1","Files":[{"Name":"package.gno","Body":"package schematest_1\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\ntype S struct {\n Foo int\n Bar string\n Baz S\n}\n\nfunc TestArgs1(str string, i int, ui uint, u8 uint8, b byte, r rune, bo bool, s []bool, iface interface{}, st S, sts []S) {\n\n}\n"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"TBQu7dKqZuQP4bHQttSOkDOqhwz+IhRQzuFN280VxMgMoGXjqmLL3zS8zrQMQGS3aFLkFu515z1eQKszSvYQbg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393202"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_2","Path":"gno.land/r/x1unix/schematest_2","Files":[{"Name":"package.gno","Body":"package schematest_2\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\nfunc TestPrim(i int, by byte, bo bool, u8 uint8, i32 int32, f32 float32, f64 float64, str string) {}\n\nfunc TestList(strs []string) {}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"ll+6/Affqv7sZcnRfnUW0YEU/OUinbqWnyaKutZCrKAWEuJhSnPd79JOEHBJ3avv641kaG8vCK4oflwDuVgfBA=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393207"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_3","Path":"gno.land/r/x1unix/schematest_3","Files":[{"Name":"package.gno","Body":"package schematest_3\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\nfunc TestPrim(i int, bo bool, u8 uint8, i32 int32, f32 float32, f64 float64, str string) {\n println(i, bo, u8, i32, f32, f64, str)\n}\n\nfunc TestList(strs []uint8) {\n println(strs)\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"MglGicA53gWchXlZVejd8hEYyOCWZIHRnc2LoZTx3sxYCr9zTPFDP9TDfW5CSdCBkn9MHeuBiynnDIhwmTFgkw=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393225"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1v664qx78zhv2edtx6ypdylfpafrqjz8g2rlaea","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","true","false","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"An36kfJTFLYv6qJ18qs3TguyUwiALNgLeCPHsZjzhSdI"},"signature":"7nhHHKkt7uJ1da1OoskduvcQxKkZDO3vu72UAVk33TgCHKyZFC2MQttKwYBkDRM7yc8Ljs7zv+KCa/erZl/UzQ=="}],"memo":"Called through gno.studio"},"blockNum":"393255"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g1xmgnwdpgslxstx0fv3mq23kqgwrrd35e4nywan","send":"","pkg_path":"gno.land/r/gnostudio/gnoyourdate","func":"Vote","args":["false","false","true","false"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"A3oTU8Cwqrp+vIewETEAibtt7YqOCqZA32exXW5rlqNJ"},"signature":"AqoJ0fj0bxe++yt2plyolgRdLemkatm9RWDt7rQOpm1OPliaNRe3Zoli4bdBO9DvtwUeBrPLmnbvevnl69d8FQ=="}],"memo":"Called through gno.studio"},"blockNum":"393265"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_4","Path":"gno.land/r/x1unix/schematest_4","Files":[{"Name":"package.gno","Body":"package schematest_4\n\nimport \"gno.land/p/demo/ufmt\"\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\nfunc TestByte(b byte) string {\n return ufmt.Sprintf(\"%d\", uint8(b))\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI8(i int8) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI16(i int16) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI32(i int32) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI64(i int64) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU(i uint) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU8(i uint8) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU16(i uint16) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU32(i uint32) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU64(i uint64) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(ufmt.Sprintf(\"%d\", v))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"8D2zXhDoxJt0p6kl/Ei05HML9J0yC9cp/qgQFTWBdxIgt7fTr+LoLRAXEgGGIhHlGYfBxunK/Qlohy7crKJBpA=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393298"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_4","Path":"gno.land/r/x1unix/schematest_4","Files":[{"Name":"package.gno","Body":"package schematest_4\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\nfunc TestByte(b byte) string {\n return ufmt.Sprintf(\"%d\", uint8(b))\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI8(i int8) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI16(i int16) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI32(i int32) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI64(i int64) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU(i uint) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU8(i uint8) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU16(i uint16) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU32(i uint32) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU64(i uint64) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(ufmt.Sprintf(\"%d\", v))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"wAwL8+jQW2h4CGVmAZ71kyohiCJdx1GyfxiFx2HcOO9bE35sbQ6CxBx7zJw3AsEDOnqTl4Jg5uxp8naJ/atXng=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393300"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_5","Path":"gno.land/r/x1unix/schematest_5","Files":[{"Name":"package.gno","Body":"package schematest_5\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\nfunc TestSpread(a string, b ...string) string {\n sb := \u0026strings.Builder{}\n sb.WriteString(a)\n for _, v := range b {\n sb.WriteString(\", \")\n sb.WriteString(v)\n }\n\n return sb.String()\n}\n\nfunc TestByte(b byte) string {\n return ufmt.Sprintf(\"%d\", uint8(b))\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI8(i int8) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI16(i int16) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI32(i int32) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestI64(i int64) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU(i uint) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU8(i uint8) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU16(i uint16) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU32(i uint32) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestU64(i uint64) string {\n return ufmt.Sprintf(\"%d\", i)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(ufmt.Sprintf(\"%d\", v))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"DErB9Mn5im3w6M4h1DrhAAPwblzVryJhgCzxUYHe0qhgN/hZkVYG6QDMS6TOt88/mjU3IfMPV9xed/ZwPJpVkQ=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393332"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_6","Path":"gno.land/r/x1unix/schematest_6","Files":[{"Name":"package.gno","Body":"package schematest_6\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strconv\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\n// func TestSpread(a string, b ...string) string {\n// sb := \u0026strings.Builder{}\n// sb.WriteString(a)\n// for _, v := range b {\n// sb.WriteString(\", \")\n// sb.WriteString(v)\n// }\n\n// return sb.String()\n// }\n\nfunc TestByte(b byte) string {\n return strconv.FormatUint(uint64(v), 10)\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI8(i int8) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI16(i int16) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI32(i int32) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI64(i int64) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestU(i uint) string {\n return strconv.FormatUint(uint64(v), 10)\n}\n\nfunc TestU8(i uint8) string {\n return strconv.FormatUint(uint64(v), 10)\n}\n\nfunc TestU16(i uint16) string {\n return strconv.FormatUint(uint64(v), 10)\n}\n\nfunc TestU32(i uint32) string {\n return strconv.FormatUint(uint64(v), 10)\n}\n\nfunc TestU64(i uint64) string {\n return strconv.FormatUint(v, 10)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(strconv.FormatUint(v, 10))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"TzgOO3IYwLJVGgKvEjnXf01yWyNjJxGyk3+9e7/5b+VfUERLlftJvzqI5SdtP1iscXhyzqAkWJU6RKYWabIjOA=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393360"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_6","Path":"gno.land/r/x1unix/schematest_6","Files":[{"Name":"package.gno","Body":"package schematest_6\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strconv\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\n// func TestSpread(a string, b ...string) string {\n// sb := \u0026strings.Builder{}\n// sb.WriteString(a)\n// for _, v := range b {\n// sb.WriteString(\", \")\n// sb.WriteString(v)\n// }\n\n// return sb.String()\n// }\n\nfunc TestByte(b byte) string {\n return strconv.FormatUint(uint64(b), 10)\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI8(i int8) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI16(i int16) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI32(i int32) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI64(i int64) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestU(i uint) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU8(i uint8) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU16(i uint16) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU32(i uint32) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU64(i uint64) string {\n return strconv.FormatUint(i, 10)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(strconv.FormatUint(v, 10))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"aDjQ7dsFuS4CU8E6ozXlFcn3rNR28lvbc8QyUgcHNdxL1QtgaGTb0G/gVPv4gDEVquDV22OKW08HabhW6U8mGQ=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393362"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_6","Path":"gno.land/r/x1unix/schematest_6","Files":[{"Name":"package.gno","Body":"package schematest_6\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strconv\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\n// func TestSpread(a string, b ...string) string {\n// sb := \u0026strings.Builder{}\n// sb.WriteString(a)\n// for _, v := range b {\n// sb.WriteString(\", \")\n// sb.WriteString(v)\n// }\n\n// return sb.String()\n// }\n\nfunc TestByte(b byte) string {\n return strconv.FormatUint(uint64(uint8(b)), 10)\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI8(i int8) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI16(i int16) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI32(i int32) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI64(i int64) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestU(i uint) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU8(i uint8) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU16(i uint16) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU32(i uint32) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU64(i uint64) string {\n return strconv.FormatUint(i, 10)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(strconv.FormatUint(v, 10))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"c4tHSdH/vWE8iN8/XLlW8Mnql9eY6YtzKpcAXwmX9Cd63gB2fr/A7o751yz9gtoEX6yHKsjSIBk7U81JLOHd1g=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393364"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_6","Path":"gno.land/r/x1unix/schematest_6","Files":[{"Name":"package.gno","Body":"package schematest_6\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strconv\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\n// func TestSpread(a string, b ...string) string {\n// sb := \u0026strings.Builder{}\n// sb.WriteString(a)\n// for _, v := range b {\n// sb.WriteString(\", \")\n// sb.WriteString(v)\n// }\n\n// return sb.String()\n// }\n\nfunc TestByte(b byte) string {\n return string([]byte{b})\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI8(i int8) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI16(i int16) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI32(i int32) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI64(i int64) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestU(i uint) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU8(i uint8) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU16(i uint16) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU32(i uint32) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU64(i uint64) string {\n return strconv.FormatUint(i, 10)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(strconv.FormatUint(v, 10))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"IOr+2K6Rn95XO7jwAtSdAZbTBWD0sTrJkUMmMR/HBYBd1aAazaCWwLgs+h1fB3OXrjBYlAXg05Cf7l2cSKZATg=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393367"} +{"tx":{"msg":[{"@type":"/vm.m_addpkg","creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","package":{"Name":"schematest_6","Path":"gno.land/r/x1unix/schematest_6","Files":[{"Name":"package.gno","Body":"package schematest_6\n\nimport (\n \"gno.land/p/demo/ufmt\"\n \"strconv\"\n \"strings\"\n)\n\nfunc Render(path string) string {\n return \"Hello World!\"\n}\n\n// func TestSpread(a string, b ...string) string {\n// sb := \u0026strings.Builder{}\n// sb.WriteString(a)\n// for _, v := range b {\n// sb.WriteString(\", \")\n// sb.WriteString(v)\n// }\n\n// return sb.String()\n// }\n\nfunc TestByte(b byte) string {\n return string([]byte{b})\n}\n\nfunc TestB(b bool) string {\n return ufmt.Sprintf(\"%t\", b)\n}\n\nfunc TestS(s string) string {\n return s\n}\n\nfunc TestI(i int) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI8(i int8) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI16(i int16) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI32(i int32) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestI64(i int64) string {\n return strconv.Itoa(int(i))\n}\n\nfunc TestU(i uint) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU8(i uint8) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU16(i uint16) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU32(i uint32) string {\n return strconv.FormatUint(uint64(i), 10)\n}\n\nfunc TestU64(i uint64) string {\n return strconv.FormatUint(i, 10)\n}\n\nfunc TestF32(f float32) string {\n mantissa := int(f)\n expo := (f - float32(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestF64(f float64) string {\n mantissa := int(f)\n expo := (f - float64(int(f))) * 10000\n if expo \u003c= -1 {\n expo *= -1\n }\n\n return ufmt.Sprintf(\"%d.%d\", mantissa, int(expo))\n}\n\nfunc TestVecU8(vals []uint8) string {\n if len(vals) == 0 {\n return \"\u003cempty\u003e\"\n }\n\n sb := \u0026strings.Builder{}\n for i, v := range vals {\n if i != 0 {\n sb.WriteString(\", \")\n }\n sb.WriteString(strconv.FormatUint(uint64(v), 10))\n }\n \n return sb.String()\n}"}]},"deposit":"1ugnot"}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"8CKVUMWTtWLqxNuAVn7H8upy7v6a1QdGlln5ZrtqdSF/DFw/98BksX0NU2GBmOkLignOU/JsvyySOQWa36aTng=="}],"memo":"Deployed through play.gno.land"},"blockNum":"393370"} +{"tx":{"msg":[{"@type":"/vm.m_call","caller":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","send":"","pkg_path":"gno.land/r/x1unix/schematest_6","func":"TestS","args":["11111"]}],"fee":{"gas_wanted":"10000000","gas_fee":"50000ugnot"},"signatures":[{"pub_key":{"@type":"/tm.PubKeySecp256k1","value":"Ax8dMlyeZTx7/5c7upbCj/sMsgJdjajg4b8kgHZ+d1mV"},"signature":"4LU2ORcItCJztQQcpdZw3cY0mjqZIdnl7fT5hHboANtHp2likU23oLda41+849v4OFgrd3C5Xv0oUAY0leruSQ=="}],"memo":"Called through gno.studio"},"blockNum":"393389"} diff --git a/test3.gno.land/extracted/p/stuyk/test/package.gno b/test3.gno.land/extracted/p/stuyk/test/package.gno index 9ac46482..d36874bc 100644 --- a/test3.gno.land/extracted/p/stuyk/test/package.gno +++ b/test3.gno.land/extracted/p/stuyk/test/package.gno @@ -1,20 +1,5 @@ -package userinvokes +package hello -import "fmt" - -var user_invokes map[string]int - -func Render(name string) string { - if (!user_invokes) { - user_invokes = make(map[string]int) - } - - - if (!user_invokes[name]) { - user_invokes[name] += 1 - } else { - user_invokes = 1 - } - - return fmt.Println("Total user invokes %d", user_invokes[name]) +func Render(path string) string { + return "Hello World!" } diff --git a/test3.gno.land/extracted/p/test/test/package.gno b/test3.gno.land/extracted/p/test/test/package.gno index 3abe3591..deb91233 100644 --- a/test3.gno.land/extracted/p/test/test/package.gno +++ b/test3.gno.land/extracted/p/test/test/package.gno @@ -1,117 +1,17 @@ -package mynonfungibletoken +package counter -import ( - "std" - "gno.land/p/demo/grc/grc721" - "gno.land/p/demo/users" - "gno.land/p/demo/ufmt" -) +import "fmt" -var ( - admin std.Address = "g1us8428u2a5satrlxzagqqa5m6vmuze025anjlj" // set admin account - mynonfungibletoken = grc721.NewBasicNFT("mynonfungibletoken", "MNFT") -) +var count int -func init() { - mintNNFT(admin, 10) // @administrator (initial supply = 10 NFTs) +func Increment() { + count++ } -func mintNNFT(owner std.Address, n uint64) { - count := mynonfungibletoken.TokenCount() - for i := count; i < count+n; i++ { - tid := grc721.TokenID(ufmt.Sprintf("%d", i)) - mynonfungibletoken.Mint(owner, tid) - } +func Decrement() { + count-- } -// Getters - -func BalanceOf(user users.AddressOrName) uint64 { - balance, err := mynonfungibletoken.BalanceOf(user.Resolve()) - if err != nil { - panic(err) - } - return balance -} - -func OwnerOf(tid grc721.TokenID) std.Address { - owner, err := mynonfungibletoken.OwnerOf(tid) - if err != nil { - panic(err) - } - return owner -} - -func IsApprovedForAll(owner, user users.AddressOrName) bool { - return mynonfungibletoken.IsApprovedForAll(owner.Resolve(), user.Resolve()) -} - -func GetApproved(tid grc721.TokenID) std.Address { - addr, err := mynonfungibletoken.GetApproved(tid) - if err != nil { - panic(err) - } - return addr -} - -// Setters - -func Approve(user users.AddressOrName, tid grc721.TokenID) { - err := mynonfungibletoken.Approve(user.Resolve(), tid) - if err != nil { - panic(err) - } -} - -func SetApprovalForAll(user users.AddressOrName, approved bool) { - err := mynonfungibletoken.SetApprovalForAll(user.Resolve(), approved) - if err != nil { - panic(err) - } -} - -func TransferFrom(from, to users.AddressOrName, tid grc721.TokenID) { - err := mynonfungibletoken.TransferFrom(from.Resolve(), to.Resolve(), tid) - if err != nil { - panic(err) - } -} - -// Admin - -func Mint(to users.AddressOrName, tid grc721.TokenID) { - caller := std.PrevRealm().Addr() - assertIsAdmin(caller) - err := mynonfungibletoken.Mint(to.Resolve(), tid) - if err != nil { - panic(err) - } -} - -func Burn(tid grc721.TokenID) { - caller := std.PrevRealm().Addr() - assertIsAdmin(caller) - err := mynonfungibletoken.Burn(tid) - if err != nil { - panic(err) - } -} - -// Render - -func Render(path string) string { - switch { - case path == "": - return mynonfungibletoken.RenderHome() - default: - return "404\n" - } -} - -// Util - -func assertIsAdmin(address std.Address) { - if address != admin { - panic("restricted access") - } -} +func Render(_ string) string { + return fmt.Sprintf("Count: %d", count) +} \ No newline at end of file diff --git a/test3.gno.land/extracted/p/test/test/pkg_metadata.json b/test3.gno.land/extracted/p/test/test/pkg_metadata.json index b48daadc..5a212ab8 100644 --- a/test3.gno.land/extracted/p/test/test/pkg_metadata.json +++ b/test3.gno.land/extracted/p/test/test/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1dnllrdzwfhxv3evyk09y48mgn5phfjvtyrlzm7","deposit":""} \ No newline at end of file +{"creator":"g1ghfakgzr6q77etpg8jtas6llg4uvqnfl8skxxq","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/p/test2/hello/package.gno b/test3.gno.land/extracted/p/test2/hello/package.gno index d36874bc..ad068318 100644 --- a/test3.gno.land/extracted/p/test2/hello/package.gno +++ b/test3.gno.land/extracted/p/test2/hello/package.gno @@ -1,5 +1,13 @@ package hello -func Render(path string) string { - return "Hello World!" +var { + hello string +} + +func SetHello(msg string){ + hello = msg +} + +func GetHello() string { + return hello } diff --git a/test3.gno.land/extracted/p/test2/hello/pkg_metadata.json b/test3.gno.land/extracted/p/test2/hello/pkg_metadata.json index 18bf8ca3..b8bb6355 100644 --- a/test3.gno.land/extracted/p/test2/hello/pkg_metadata.json +++ b/test3.gno.land/extracted/p/test2/hello/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g100xslzk674xuv3s0q8yp44cr63l26z2y4n7ycg","deposit":""} \ No newline at end of file +{"creator":"g1v4e0gv2m6gpqh6mx0auu6x6gmep9yt6cxj6q5f","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/apple/GRC20.gno b/test3.gno.land/extracted/r/demo/apple/GRC20.gno index cd273623..c3867609 100644 --- a/test3.gno.land/extracted/r/demo/apple/GRC20.gno +++ b/test3.gno.land/extracted/r/demo/apple/GRC20.gno @@ -11,7 +11,7 @@ import ( var ( apple *grc20.AdminToken - admin std.Address = "g1hqzeju0p0eup9rgxa0pxvyc0y7wnzjrdvppsy5" + admin std.Address = "g1sycj68ur0n7xytglx0me3f207ktudm80aqpysm" ) func init() { diff --git a/test3.gno.land/extracted/r/demo/apple/pkg_metadata.json b/test3.gno.land/extracted/r/demo/apple/pkg_metadata.json index 59b3c1cc..8a00c6df 100644 --- a/test3.gno.land/extracted/r/demo/apple/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo/apple/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1098kpwkwv3r08cat9ssucrq4mznxyv855jgqvx","deposit":""} \ No newline at end of file +{"creator":"g1sycj68ur0n7xytglx0me3f207ktudm80aqpysm","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/grass/GRC20.gno b/test3.gno.land/extracted/r/demo/grass/GRC20.gno index 73cd23d1..b2f318d6 100644 --- a/test3.gno.land/extracted/r/demo/grass/GRC20.gno +++ b/test3.gno.land/extracted/r/demo/grass/GRC20.gno @@ -11,12 +11,12 @@ import ( var ( grass *grc20.AdminToken - admin std.Address = "g148vmqxzgp4yc996pasredy3v9sw8sxzsgem0qv" + admin std.Address = "g10jtus48tdlp93l9jw9q0tws5jh7gmpjdtyqkxh" ) func init() { grass = grc20.NewAdminToken("grassToken", "grass", 6) - grass.Mint(admin, 2443000) // @administrator + grass.Mint(admin, 1000000000) // @administrator } // method proxies as public functions. diff --git a/test3.gno.land/extracted/r/demo/grass/pkg_metadata.json b/test3.gno.land/extracted/r/demo/grass/pkg_metadata.json index ce87b5bb..10baacc2 100644 --- a/test3.gno.land/extracted/r/demo/grass/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo/grass/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g148vmqxzgp4yc996pasredy3v9sw8sxzsgem0qv","deposit":""} \ No newline at end of file +{"creator":"g10jtus48tdlp93l9jw9q0tws5jh7gmpjdtyqkxh","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/harambe/GRC20.gno b/test3.gno.land/extracted/r/demo/harambe/GRC20.gno index 17e4a290..94992a7d 100644 --- a/test3.gno.land/extracted/r/demo/harambe/GRC20.gno +++ b/test3.gno.land/extracted/r/demo/harambe/GRC20.gno @@ -11,7 +11,7 @@ import ( var ( harambe *grc20.AdminToken - admin std.Address = "g1h6n749m920lvaef2qrpsa2vmssr4sq60ykqks3" + admin std.Address = "g1lk45335udge6nefk733e852rmexrc94m52tdt9" ) func init() { diff --git a/test3.gno.land/extracted/r/demo/harambe/pkg_metadata.json b/test3.gno.land/extracted/r/demo/harambe/pkg_metadata.json index 445b8033..93356881 100644 --- a/test3.gno.land/extracted/r/demo/harambe/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo/harambe/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1h6n749m920lvaef2qrpsa2vmssr4sq60ykqks3","deposit":""} \ No newline at end of file +{"creator":"g1lk45335udge6nefk733e852rmexrc94m52tdt9","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/kovach/GRC20.gno b/test3.gno.land/extracted/r/demo/kovach/GRC20.gno new file mode 100644 index 00000000..f623d909 --- /dev/null +++ b/test3.gno.land/extracted/r/demo/kovach/GRC20.gno @@ -0,0 +1,101 @@ +package kovach + +import ( + "std" + "strings" + + "gno.land/p/demo/grc/grc20" + "gno.land/p/demo/ufmt" + "gno.land/r/demo/users" +) + +var ( + foo *grc20.AdminToken + admin std.Address = "g1476aul2je0p32tj4yu07n56c8ey4029kfnpxe9" +) + +func init() { + foo = grc20.NewAdminToken("Kovach", "KOV", 6) + foo.Mint(admin, 1000000000) // @administrator +} + +// method proxies as public functions. +// + +// getters. + +func TotalSupply() uint64 { + return foo.TotalSupply() +} + +func BalanceOf(owner users.AddressOrName) uint64 { + balance, err := foo.BalanceOf(owner.Resolve()) + if err != nil { + panic(err) + } + return balance +} + +func Allowance(owner, spender users.AddressOrName) uint64 { + allowance, err := foo.Allowance(owner.Resolve(), spender.Resolve()) + if err != nil { + panic(err) + } + return allowance +} + +// setters. + +func Transfer(to users.AddressOrName, amount uint64) { + caller := std.GetOrigCaller() + foo.Transfer(caller, to.Resolve(), amount) +} + +func Approve(spender users.AddressOrName, amount uint64) { + caller := std.GetOrigCaller() + foo.Approve(caller, spender.Resolve(), amount) +} + +func TransferFrom(from, to users.AddressOrName, amount uint64) { + caller := std.GetOrigCaller() + foo.TransferFrom(caller, from.Resolve(), to.Resolve(), amount) +} + +// administration. + +func Mint(address users.AddressOrName, amount uint64) { + caller := std.GetOrigCaller() + assertIsAdmin(caller) + foo.Mint(address.Resolve(), amount) +} + +func Burn(address users.AddressOrName, amount uint64) { + caller := std.GetOrigCaller() + assertIsAdmin(caller) + foo.Burn(address.Resolve(), amount) +} + +// render. +// + +func Render(path string) string { + parts := strings.Split(path, "/") + c := len(parts) + + switch { + case path == "": + return foo.RenderHome() + case c == 2 && parts[0] == "balance": + owner := users.AddressOrName(parts[1]) + balance, _ := foo.BalanceOf(owner.Resolve()) + return ufmt.Sprintf("%d\n", balance) + default: + return "404\n" + } +} + +func assertIsAdmin(address std.Address) { + if address != admin { + panic("restricted access") + } +} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/kovach/pkg_metadata.json b/test3.gno.land/extracted/r/demo/kovach/pkg_metadata.json new file mode 100644 index 00000000..43e317b8 --- /dev/null +++ b/test3.gno.land/extracted/r/demo/kovach/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1476aul2je0p32tj4yu07n56c8ey4029kfnpxe9","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/ripl/GRC20.gno b/test3.gno.land/extracted/r/demo/ripl/GRC20.gno index 5af2d5ef..cc31f72e 100644 --- a/test3.gno.land/extracted/r/demo/ripl/GRC20.gno +++ b/test3.gno.land/extracted/r/demo/ripl/GRC20.gno @@ -1,4 +1,4 @@ -package ripl +package RIPL import ( "std" @@ -10,13 +10,13 @@ import ( ) var ( - ripl *grc20.AdminToken - admin std.Address = "g1jcsmkq74jr6uxfpfcytjvruyuqje7lqk2zfxxp" + RIPL *grc20.AdminToken + admin std.Address = "g1mdgdlen0nzzcycl7fq6dwyqq9qvlnm06gx5h9p" ) func init() { - ripl = grc20.NewAdminToken("RiplToken", "RIPL", 6) - ripl.Mint(admin, 1000000000) // @administrator + RIPL = grc20.NewAdminToken("RIPLToken", "RIPL", 6) + RIPL.Mint(admin, 1000000000) // @administrator } // method proxies as public functions. @@ -25,11 +25,11 @@ func init() { // getters. func TotalSupply() uint64 { - return ripl.TotalSupply() + return RIPL.TotalSupply() } func BalanceOf(owner users.AddressOrName) uint64 { - balance, err := ripl.BalanceOf(owner.Resolve()) + balance, err := RIPL.BalanceOf(owner.Resolve()) if err != nil { panic(err) } @@ -37,7 +37,7 @@ func BalanceOf(owner users.AddressOrName) uint64 { } func Allowance(owner, spender users.AddressOrName) uint64 { - allowance, err := ripl.Allowance(owner.Resolve(), spender.Resolve()) + allowance, err := RIPL.Allowance(owner.Resolve(), spender.Resolve()) if err != nil { panic(err) } @@ -48,17 +48,17 @@ func Allowance(owner, spender users.AddressOrName) uint64 { func Transfer(to users.AddressOrName, amount uint64) { caller := std.GetOrigCaller() - ripl.Transfer(caller, to.Resolve(), amount) + RIPL.Transfer(caller, to.Resolve(), amount) } func Approve(spender users.AddressOrName, amount uint64) { caller := std.GetOrigCaller() - ripl.Approve(caller, spender.Resolve(), amount) + RIPL.Approve(caller, spender.Resolve(), amount) } func TransferFrom(from, to users.AddressOrName, amount uint64) { caller := std.GetOrigCaller() - ripl.TransferFrom(caller, from.Resolve(), to.Resolve(), amount) + RIPL.TransferFrom(caller, from.Resolve(), to.Resolve(), amount) } // administration. @@ -66,13 +66,13 @@ func TransferFrom(from, to users.AddressOrName, amount uint64) { func Mint(address users.AddressOrName, amount uint64) { caller := std.GetOrigCaller() assertIsAdmin(caller) - ripl.Mint(address.Resolve(), amount) + RIPL.Mint(address.Resolve(), amount) } func Burn(address users.AddressOrName, amount uint64) { caller := std.GetOrigCaller() assertIsAdmin(caller) - ripl.Burn(address.Resolve(), amount) + RIPL.Burn(address.Resolve(), amount) } // render. @@ -84,10 +84,10 @@ func Render(path string) string { switch { case path == "": - return ripl.RenderHome() + return RIPL.RenderHome() case c == 2 && parts[0] == "balance": owner := users.AddressOrName(parts[1]) - balance, _ := ripl.BalanceOf(owner.Resolve()) + balance, _ := RIPL.BalanceOf(owner.Resolve()) return ufmt.Sprintf("%d\n", balance) default: return "404\n" diff --git a/test3.gno.land/extracted/r/demo/ripl/pkg_metadata.json b/test3.gno.land/extracted/r/demo/ripl/pkg_metadata.json index d9b539e5..7db432c4 100644 --- a/test3.gno.land/extracted/r/demo/ripl/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo/ripl/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1jcsmkq74jr6uxfpfcytjvruyuqje7lqk2zfxxp","deposit":""} \ No newline at end of file +{"creator":"g1mdgdlen0nzzcycl7fq6dwyqq9qvlnm06gx5h9p","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/test/package.gno b/test3.gno.land/extracted/r/demo/test/package.gno index 8b137891..d36874bc 100644 --- a/test3.gno.land/extracted/r/demo/test/package.gno +++ b/test3.gno.land/extracted/r/demo/test/package.gno @@ -1 +1,5 @@ +package hello +func Render(path string) string { + return "Hello World!" +} diff --git a/test3.gno.land/extracted/r/demo/test/pkg_metadata.json b/test3.gno.land/extracted/r/demo/test/pkg_metadata.json index a420d9f5..ac780b46 100644 --- a/test3.gno.land/extracted/r/demo/test/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo/test/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1eussptehceyrtzw69kek72qy8d40rjrf654rrt","deposit":""} \ No newline at end of file +{"creator":"g1at2h7kdhz2m9lv6azn54mwu4wl95k94wu90uwj","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo/yep/pkg_metadata.json b/test3.gno.land/extracted/r/demo/yep/pkg_metadata.json index 213b87e5..6794c070 100644 --- a/test3.gno.land/extracted/r/demo/yep/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo/yep/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g140pvdhzwxtg8yazp5zfqtmshqnt2mefs764yrw","deposit":""} \ No newline at end of file +{"creator":"g1p809wnm9glgxu8lauaeattqlwh92gd0vcrlm46","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/demo2/greeting/pkg_metadata.json b/test3.gno.land/extracted/r/demo2/greeting/pkg_metadata.json index af85c884..4391adcd 100644 --- a/test3.gno.land/extracted/r/demo2/greeting/pkg_metadata.json +++ b/test3.gno.land/extracted/r/demo2/greeting/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1ds7mk95wdns4u3v36fmetgkqcxzj5zkt0y2k5v","deposit":""} \ No newline at end of file +{"creator":"g12cvhg4mfst27whu6x58vu69zt04j5hfh8kwv5v","deposit":""} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/game/tictacgno/package.gno b/test3.gno.land/extracted/r/game/tictacgno/package.gno new file mode 100644 index 00000000..6d1c4a29 --- /dev/null +++ b/test3.gno.land/extracted/r/game/tictacgno/package.gno @@ -0,0 +1,160 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 2: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } + + return "moved!" +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/game/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/game/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/game/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/game/tictacgno_2/package.gno b/test3.gno.land/extracted/r/game/tictacgno_2/package.gno new file mode 100644 index 00000000..ebd14be0 --- /dev/null +++ b/test3.gno.land/extracted/r/game/tictacgno_2/package.gno @@ -0,0 +1,161 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno_2 + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +// Use a between 1-8, unoccupied number. +func Play(move int) string { + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 2: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } + + return "moved!" +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/game/tictacgno_2/pkg_metadata.json b/test3.gno.land/extracted/r/game/tictacgno_2/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/game/tictacgno_2/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/game/tictacgno_3/package.gno b/test3.gno.land/extracted/r/game/tictacgno_3/package.gno new file mode 100644 index 00000000..3ec9162d --- /dev/null +++ b/test3.gno.land/extracted/r/game/tictacgno_3/package.gno @@ -0,0 +1,161 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno_3 + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +// Use a between 1-8, unoccupied number. +func Play(move int) string { + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 2: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } + + return "moved!" +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/game/tictacgno_3/pkg_metadata.json b/test3.gno.land/extracted/r/game/tictacgno_3/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/game/tictacgno_3/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/hello/hello/pkg_metadata.json b/test3.gno.land/extracted/r/hello/hello/pkg_metadata.json index 0812c2e9..ab25f738 100644 --- a/test3.gno.land/extracted/r/hello/hello/pkg_metadata.json +++ b/test3.gno.land/extracted/r/hello/hello/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g15wmukt79xymnnu6c4de32trnufudqum60yrxu8","deposit":""} \ No newline at end of file +{"creator":"g15wmukt79xymnnu6c4de32trnufudqum60yrxu8","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/hello15/hello/package.gno b/test3.gno.land/extracted/r/hello15/hello/package.gno index 32b4fc2d..d36874bc 100644 --- a/test3.gno.land/extracted/r/hello15/hello/package.gno +++ b/test3.gno.land/extracted/r/hello15/hello/package.gno @@ -1,9 +1,5 @@ package hello -func B(path []string) string { - return "Hello World!" -} - -func A(path string) string { +func Render(path string) string { return "Hello World!" } diff --git a/test3.gno.land/extracted/r/hello15/hello/pkg_metadata.json b/test3.gno.land/extracted/r/hello15/hello/pkg_metadata.json index 292c561e..fe835b60 100644 --- a/test3.gno.land/extracted/r/hello15/hello/pkg_metadata.json +++ b/test3.gno.land/extracted/r/hello15/hello/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1ejrxf88yp390dr48a0wxyaed3vxj0243at292p","deposit":"1ugnot"} \ No newline at end of file +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/hellow2/hello/package.gno b/test3.gno.land/extracted/r/hellow2/hello/package.gno new file mode 100644 index 00000000..d36874bc --- /dev/null +++ b/test3.gno.land/extracted/r/hellow2/hello/package.gno @@ -0,0 +1,5 @@ +package hello + +func Render(path string) string { + return "Hello World!" +} diff --git a/test3.gno.land/extracted/r/hellow2/hello/pkg_metadata.json b/test3.gno.land/extracted/r/hellow2/hello/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/hellow2/hello/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/jj/hello/package.gno b/test3.gno.land/extracted/r/jj/hello/package.gno new file mode 100644 index 00000000..f03b83b4 --- /dev/null +++ b/test3.gno.land/extracted/r/jj/hello/package.gno @@ -0,0 +1,6 @@ +package hello + +func Render(path string) string { + println(path) + return "Hello World!" +} diff --git a/test3.gno.land/extracted/r/jj/hello/pkg_metadata.json b/test3.gno.land/extracted/r/jj/hello/pkg_metadata.json new file mode 100644 index 00000000..f7403b8a --- /dev/null +++ b/test3.gno.land/extracted/r/jj/hello/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1vsc4t7d8l8arttauup093njj8qc0eukm6ng8ke","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/myhellow/hello/package.gno b/test3.gno.land/extracted/r/myhellow/hello/package.gno new file mode 100644 index 00000000..ec9eb97a --- /dev/null +++ b/test3.gno.land/extracted/r/myhellow/hello/package.gno @@ -0,0 +1,5 @@ +package hello + +func HelloWorld(path string) string { + return "Hello World!" +} diff --git a/test3.gno.land/extracted/r/myhellow/hello/pkg_metadata.json b/test3.gno.land/extracted/r/myhellow/hello/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/myhellow/hello/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test/tictactoe/package.gno b/test3.gno.land/extracted/r/test/tictactoe/package.gno new file mode 100644 index 00000000..569c5300 --- /dev/null +++ b/test3.gno.land/extracted/r/test/tictactoe/package.gno @@ -0,0 +1,157 @@ +package main + +import ( + "fmt" + "std" + "strings" +) + +var layout string +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(layout) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + board = executePlayerMove(move, player, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return "Player %s wins!", winner + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + // Check for occupied spaces + if b[moveInt] != 0 { + fmt.Println("Please pick an unoccupied space.") + moveInt = askForPlay() + b = executePlayerMove(moveInt, player, b) + } else { + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + } + + // Check for out-of-bounds + for moveInt > 9 { + fmt.Println("Please enter a number under 10.") + moveInt = askForPlay() + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test/tictactoe/pkg_metadata.json b/test3.gno.land/extracted/r/test/tictactoe/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/test/tictactoe/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test1/tictacgno/package.gno b/test3.gno.land/extracted/r/test1/tictacgno/package.gno new file mode 100644 index 00000000..3b298a4a --- /dev/null +++ b/test3.gno.land/extracted/r/test1/tictacgno/package.gno @@ -0,0 +1,159 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + "fmt" + "std" + "strings" +) + +var layout string +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(layout) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + board = executePlayerMove(move, player, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return "Player %s wins!", winner + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + // Check for occupied spaces + if b[moveInt] != 0 { + fmt.Println("Please pick an unoccupied space.") + moveInt = askForPlay() + b = executePlayerMove(moveInt, player, b) + } else { + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + } + + // Check for out-of-bounds + for moveInt > 9 { + fmt.Println("Please enter a number under 10.") + moveInt = askForPlay() + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/test1/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/test1/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/test1/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test2/tictacgno/package.gno b/test3.gno.land/extracted/r/test2/tictacgno/package.gno new file mode 100644 index 00000000..33b13cb0 --- /dev/null +++ b/test3.gno.land/extracted/r/test2/tictacgno/package.gno @@ -0,0 +1,158 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var layout string +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(layout) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/test2/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/test2/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/test2/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test22/hello/package.gno b/test3.gno.land/extracted/r/test22/hello/package.gno index a0c2f9ce..723d6d20 100644 --- a/test3.gno.land/extracted/r/test22/hello/package.gno +++ b/test3.gno.land/extracted/r/test22/hello/package.gno @@ -1,5 +1,5 @@ - package hello +package hello -func Render(path string) string { +func Test1(option1 []string) string { return "Hello World!" } diff --git a/test3.gno.land/extracted/r/test22/hello/pkg_metadata.json b/test3.gno.land/extracted/r/test22/hello/pkg_metadata.json index 11e3b6de..5235ccf7 100644 --- a/test3.gno.land/extracted/r/test22/hello/pkg_metadata.json +++ b/test3.gno.land/extracted/r/test22/hello/pkg_metadata.json @@ -1 +1 @@ -{"creator":"g1yc0x2kj67mj564zsjyp27t5zya5eynnrdqkpqv","deposit":""} \ No newline at end of file +{"creator":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test3/tictacgno/package.gno b/test3.gno.land/extracted/r/test3/tictacgno/package.gno new file mode 100644 index 00000000..497a42dd --- /dev/null +++ b/test3.gno.land/extracted/r/test3/tictacgno/package.gno @@ -0,0 +1,157 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/test3/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/test3/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/test3/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test4/tictacgno/package.gno b/test3.gno.land/extracted/r/test4/tictacgno/package.gno new file mode 100644 index 00000000..54a7fe2b --- /dev/null +++ b/test3.gno.land/extracted/r/test4/tictacgno/package.gno @@ -0,0 +1,157 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/test4/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/test4/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/test4/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test5/tictacgno/package.gno b/test3.gno.land/extracted/r/test5/tictacgno/package.gno new file mode 100644 index 00000000..22edc5c1 --- /dev/null +++ b/test3.gno.land/extracted/r/test5/tictacgno/package.gno @@ -0,0 +1,159 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } + + return "moved!" +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/test5/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/test5/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..fe835b60 --- /dev/null +++ b/test3.gno.land/extracted/r/test5/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1uf8u5jf2m9l80g0zsfq7tufl3qufqc4393jtkl","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/test6/tictacgno/package.gno b/test3.gno.land/extracted/r/test6/tictacgno/package.gno new file mode 100644 index 00000000..9ca83e38 --- /dev/null +++ b/test3.gno.land/extracted/r/test6/tictacgno/package.gno @@ -0,0 +1,160 @@ +// https://raw.githubusercontent.com/sts10/tic-tac-go/main/game.go + +package tictacgno + +import ( + fmt "gno.land/p/demo/ufmt" + "std" + "strings" +) + +var board [9]int +var gameOver bool +var turnNumber int +var lastCaller std.Address +var playerOne std.Address +var playerTwo std.Address +var winner std.Address +var tieGame bool + +func Render(string) string { + var s strings.Builder + s.WriteString("### Board\n\n") + s.WriteString(presentBoard(board)) + s.WriteString("\n\n") + + if gameOver { + s.WriteString("### The winner is:\n\n") + if tieGame { + s.WriteString("Tie game!") + } else { + s.WriteString(winner.String()) + } + } else { + s.WriteString("### Playing...") + } + + return s.String() +} + +func Play(move int) string { + if board[move] != 0 { + return "Please pick an unoccupied space." + } + + if move > 8 { + return "Please enter a number under 9." + } + + if lastCaller == std.GetOrigCaller() { + return "It's not your turn!" + } + lastCaller = std.GetOrigCaller() + + switch { + case playerOne == nil: + playerOne = lastCaller + case playerTwo == nil: + playerTwo = lastCaller + default: + switch lastCaller { + case playerOne, playerTwo: + default: + return "All seats are taken!" + } + } + + playerNo := 1 + if lastCaller == playerTwo { + playerNo = 2 + } + + board = executePlayerMove(move, playerNo, board) + + result := checkForWin(board) + if result > 0 { + gameOver = true + switch result { + case 1: + winner = playerOne + case 21: + winner = playerTwo + } + return fmt.Sprintf("Player %s wins!", winner) + } else if turnNumber == 9 { + // Tie game example: 0 2 1 3 4 7 5 8 6 + tieGame = true + gameOver = true + } else { + turnNumber++ + } + + return "moved!" +} + +func init() { + board = [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + turnNumber = 1 +} + +func executePlayerMove(moveInt int, player int, b [9]int) [9]int { + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + + if player == 1 { + b[moveInt] = 1 + } else if player == 2 { + b[moveInt] = 10 + } + return b +} + +func presentBoard(b [9]int) string { + var s strings.Builder + for i, v := range b { + if v == 0 { + // empty space. Display number + s.WriteString(fmt.Sprintf("%d", i)) + } else if v == 1 { + s.WriteString("X") + } else if v == 10 { + s.WriteString("O") + } + // And now the decorations + if i > 0 && (i+1)%3 == 0 { + s.WriteString("\n\n") + } else { + s.WriteString(" | ") + } + } + return s.String() +} + +func checkForWin(b [9]int) int { + // re-calculate sums Array + sums := [8]int{0, 0, 0, 0, 0, 0, 0, 0} + // for _, v := range b[0:2] { sums[7] += v } + // for _, v := range b[3:5] { sums[6] += v } + // for _, v := range b[6:8] { sums[5] += v } + + sums[0] = b[2] + b[4] + b[6] + sums[1] = b[0] + b[3] + b[6] + sums[2] = b[1] + b[4] + b[7] + sums[3] = b[2] + b[5] + b[8] + sums[4] = b[0] + b[4] + b[8] + sums[5] = b[6] + b[7] + b[8] + sums[6] = b[3] + b[4] + b[5] + sums[7] = b[0] + b[1] + b[2] + for _, v := range sums { + if v == 3 { + return 1 + } else if v == 30 { + return 2 + } + } + return 0 +} diff --git a/test3.gno.land/extracted/r/test6/tictacgno/pkg_metadata.json b/test3.gno.land/extracted/r/test6/tictacgno/pkg_metadata.json new file mode 100644 index 00000000..5235ccf7 --- /dev/null +++ b/test3.gno.land/extracted/r/test6/tictacgno/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g1fsu3z335h5qngf7t3lmakvpmpwg9ae76tqwh7c","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_1/package.gno b/test3.gno.land/extracted/r/x1unix/schematest_1/package.gno new file mode 100644 index 00000000..f59e8a3e --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_1/package.gno @@ -0,0 +1,15 @@ +package hello + +func Render(path string) string { + return "Hello World!" +} + +type S struct { + Foo int + Bar string + Baz S +} + +func TestArgs1(str string, i int, ui uint, u8 uint8, b byte, r rune, bo bool, s []bool, iface interface{}, st S, sts []S) { + +} diff --git a/test3.gno.land/extracted/r/x1unix/schematest_1/pkg_metadata.json b/test3.gno.land/extracted/r/x1unix/schematest_1/pkg_metadata.json new file mode 100644 index 00000000..a8bc39aa --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_1/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_2/package.gno b/test3.gno.land/extracted/r/x1unix/schematest_2/package.gno new file mode 100644 index 00000000..2675b5ca --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_2/package.gno @@ -0,0 +1,9 @@ +package schematest_2 + +func Render(path string) string { + return "Hello World!" +} + +func TestPrim(i int, by byte, bo bool, u8 uint8, i32 int32, f32 float32, f64 float64, str string) {} + +func TestList(strs []string) {} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_2/pkg_metadata.json b/test3.gno.land/extracted/r/x1unix/schematest_2/pkg_metadata.json new file mode 100644 index 00000000..a8bc39aa --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_2/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_3/package.gno b/test3.gno.land/extracted/r/x1unix/schematest_3/package.gno new file mode 100644 index 00000000..bbe7cb73 --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_3/package.gno @@ -0,0 +1,13 @@ +package schematest_3 + +func Render(path string) string { + return "Hello World!" +} + +func TestPrim(i int, bo bool, u8 uint8, i32 int32, f32 float32, f64 float64, str string) { + println(i, bo, u8, i32, f32, f64, str) +} + +func TestList(strs []uint8) { + println(strs) +} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_3/pkg_metadata.json b/test3.gno.land/extracted/r/x1unix/schematest_3/pkg_metadata.json new file mode 100644 index 00000000..a8bc39aa --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_3/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_4/package.gno b/test3.gno.land/extracted/r/x1unix/schematest_4/package.gno new file mode 100644 index 00000000..b9422554 --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_4/package.gno @@ -0,0 +1,95 @@ +package schematest_4 + +import "gno.land/p/demo/ufmt" + +func Render(path string) string { + return "Hello World!" +} + +func TestByte(b byte) string { + return ufmt.Sprintf("%d", uint8(b)) +} + +func TestB(b bool) string { + return ufmt.Sprintf("%t", b) +} + +func TestS(s string) string { + return s +} + +func TestI(i int) string { + return ufmt.Sprintf("%d", i) +} + +func TestI8(i int8) string { + return ufmt.Sprintf("%d", i) +} + +func TestI16(i int16) string { + return ufmt.Sprintf("%d", i) +} + +func TestI32(i int32) string { + return ufmt.Sprintf("%d", i) +} + +func TestI64(i int64) string { + return ufmt.Sprintf("%d", i) +} + +func TestU(i uint) string { + return ufmt.Sprintf("%d", i) +} + +func TestU8(i uint8) string { + return ufmt.Sprintf("%d", i) +} + +func TestU16(i uint16) string { + return ufmt.Sprintf("%d", i) +} + +func TestU32(i uint32) string { + return ufmt.Sprintf("%d", i) +} + +func TestU64(i uint64) string { + return ufmt.Sprintf("%d", i) +} + +func TestF32(f float32) string { + mantissa := int(f) + expo := (f - float32(int(f))) * 10000 + if expo <= -1 { + expo *= -1 + } + + return ufmt.Sprintf("%d.%d", mantissa, int(expo)) +} + +func TestF64(f float64) string { + mantissa := int(f) + expo := (f - float64(int(f))) * 10000 + if expo <= -1 { + expo *= -1 + } + + return ufmt.Sprintf("%d.%d", mantissa, int(expo)) +} + +func TestVecU8(vals []uint8) string { + if len(vals) == 0 { + return "" + } + + sb := &strings.Builder{} + for i, v := range vals { + if i != 0 { + sb.WriteString(", ") + } + sb.WriteString(ufmt.Sprintf("%d", v)) + } + + return sb.String() +} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_4/pkg_metadata.json b/test3.gno.land/extracted/r/x1unix/schematest_4/pkg_metadata.json new file mode 100644 index 00000000..a8bc39aa --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_4/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_5/package.gno b/test3.gno.land/extracted/r/x1unix/schematest_5/package.gno new file mode 100644 index 00000000..ebededc4 --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_5/package.gno @@ -0,0 +1,109 @@ +package schematest_5 + +import ( + "gno.land/p/demo/ufmt" + "strings" +) + +func Render(path string) string { + return "Hello World!" +} + +func TestSpread(a string, b ...string) string { + sb := &strings.Builder{} + sb.WriteString(a) + for _, v := range b { + sb.WriteString(", ") + sb.WriteString(v) + } + + return sb.String() +} + +func TestByte(b byte) string { + return ufmt.Sprintf("%d", uint8(b)) +} + +func TestB(b bool) string { + return ufmt.Sprintf("%t", b) +} + +func TestS(s string) string { + return s +} + +func TestI(i int) string { + return ufmt.Sprintf("%d", i) +} + +func TestI8(i int8) string { + return ufmt.Sprintf("%d", i) +} + +func TestI16(i int16) string { + return ufmt.Sprintf("%d", i) +} + +func TestI32(i int32) string { + return ufmt.Sprintf("%d", i) +} + +func TestI64(i int64) string { + return ufmt.Sprintf("%d", i) +} + +func TestU(i uint) string { + return ufmt.Sprintf("%d", i) +} + +func TestU8(i uint8) string { + return ufmt.Sprintf("%d", i) +} + +func TestU16(i uint16) string { + return ufmt.Sprintf("%d", i) +} + +func TestU32(i uint32) string { + return ufmt.Sprintf("%d", i) +} + +func TestU64(i uint64) string { + return ufmt.Sprintf("%d", i) +} + +func TestF32(f float32) string { + mantissa := int(f) + expo := (f - float32(int(f))) * 10000 + if expo <= -1 { + expo *= -1 + } + + return ufmt.Sprintf("%d.%d", mantissa, int(expo)) +} + +func TestF64(f float64) string { + mantissa := int(f) + expo := (f - float64(int(f))) * 10000 + if expo <= -1 { + expo *= -1 + } + + return ufmt.Sprintf("%d.%d", mantissa, int(expo)) +} + +func TestVecU8(vals []uint8) string { + if len(vals) == 0 { + return "" + } + + sb := &strings.Builder{} + for i, v := range vals { + if i != 0 { + sb.WriteString(", ") + } + sb.WriteString(ufmt.Sprintf("%d", v)) + } + + return sb.String() +} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_5/pkg_metadata.json b/test3.gno.land/extracted/r/x1unix/schematest_5/pkg_metadata.json new file mode 100644 index 00000000..a8bc39aa --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_5/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_6/package.gno b/test3.gno.land/extracted/r/x1unix/schematest_6/package.gno new file mode 100644 index 00000000..67b91179 --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_6/package.gno @@ -0,0 +1,110 @@ +package schematest_6 + +import ( + "gno.land/p/demo/ufmt" + "strconv" + "strings" +) + +func Render(path string) string { + return "Hello World!" +} + +// func TestSpread(a string, b ...string) string { +// sb := &strings.Builder{} +// sb.WriteString(a) +// for _, v := range b { +// sb.WriteString(", ") +// sb.WriteString(v) +// } + +// return sb.String() +// } + +func TestByte(b byte) string { + return strconv.FormatUint(uint64(v), 10) +} + +func TestB(b bool) string { + return ufmt.Sprintf("%t", b) +} + +func TestS(s string) string { + return s +} + +func TestI(i int) string { + return strconv.Itoa(int(i)) +} + +func TestI8(i int8) string { + return strconv.Itoa(int(i)) +} + +func TestI16(i int16) string { + return strconv.Itoa(int(i)) +} + +func TestI32(i int32) string { + return strconv.Itoa(int(i)) +} + +func TestI64(i int64) string { + return strconv.Itoa(int(i)) +} + +func TestU(i uint) string { + return strconv.FormatUint(uint64(v), 10) +} + +func TestU8(i uint8) string { + return strconv.FormatUint(uint64(v), 10) +} + +func TestU16(i uint16) string { + return strconv.FormatUint(uint64(v), 10) +} + +func TestU32(i uint32) string { + return strconv.FormatUint(uint64(v), 10) +} + +func TestU64(i uint64) string { + return strconv.FormatUint(v, 10) +} + +func TestF32(f float32) string { + mantissa := int(f) + expo := (f - float32(int(f))) * 10000 + if expo <= -1 { + expo *= -1 + } + + return ufmt.Sprintf("%d.%d", mantissa, int(expo)) +} + +func TestF64(f float64) string { + mantissa := int(f) + expo := (f - float64(int(f))) * 10000 + if expo <= -1 { + expo *= -1 + } + + return ufmt.Sprintf("%d.%d", mantissa, int(expo)) +} + +func TestVecU8(vals []uint8) string { + if len(vals) == 0 { + return "" + } + + sb := &strings.Builder{} + for i, v := range vals { + if i != 0 { + sb.WriteString(", ") + } + sb.WriteString(strconv.FormatUint(v, 10)) + } + + return sb.String() +} \ No newline at end of file diff --git a/test3.gno.land/extracted/r/x1unix/schematest_6/pkg_metadata.json b/test3.gno.land/extracted/r/x1unix/schematest_6/pkg_metadata.json new file mode 100644 index 00000000..a8bc39aa --- /dev/null +++ b/test3.gno.land/extracted/r/x1unix/schematest_6/pkg_metadata.json @@ -0,0 +1 @@ +{"creator":"g15ruzptpql4dpuyzej0wkt5rq6r26kw4nxu9fwd","deposit":"1ugnot"} \ No newline at end of file diff --git a/test3.gno.land/metadata.json b/test3.gno.land/metadata.json index 658eee4e..35f94b52 100644 --- a/test3.gno.land/metadata.json +++ b/test3.gno.land/metadata.json @@ -1,3 +1,3 @@ { - "latest_block_height": 391765 + "latest_block_height": 393423 }