{ "name": "AlgoArenaReward", "structs": {}, "methods": [ { "name": "create", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Sets the contract owner to the sender on application creation.", "events": [], "recommendations": {} }, { "name": "reward_user", "args": [ { "type": "address", "name": "recipient_address" }, { "type": "uint64", "name": "algo_reward_amount" }, { "type": "uint64", "name": "nft_asset_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Distributes Algos and an NFT to a recipient.", "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "\n ARC-4 Contract for distributing Algo and NFT rewards to AlgoArena users.\n The contract owner (game server) is the only entity authorized to call \n the reward_user method, which executes two Inner Transactions atomically:\n 1. An Algo payment to the winner.\n 2. An Asset Transfer (NFT) to the winner.\n ", "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 1 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "owner": { "keyType": "AVMString", "valueType": "address", "key": "b3duZXJfYWRkcg==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 36 ], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [ 69 ], "errorMessage": "OnCompletion must be NoOp && can only call when creating" }, { "pc": [ 110 ], "errorMessage": "Only the AlgoArena owner/server can issue rewards." }, { "pc": [ 106 ], "errorMessage": "check self.owner exists" }, { "pc": [ 86 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 94, 102 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgOAogICAgYnl0ZWNibG9jayAib3duZXJfYWRkciIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjE1CiAgICAvLyBzZWxmLm93bmVyID0gR2xvYmFsU3RhdGUoQWRkcmVzcygpLCBrZXk9Im93bmVyX2FkZHIiKQogICAgYnl0ZWNfMCAvLyAib3duZXJfYWRkciIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29fYXJlbmEvY29udHJhY3QucHk6NQogICAgLy8gY2xhc3MgQWxnb0FyZW5hUmV3YXJkKEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxMQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBtdXN0IGJlIE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg0YzVjNjFiYSAweDZhMjk2ZWUyIC8vIG1ldGhvZCAiY3JlYXRlKCl2b2lkIiwgbWV0aG9kICJyZXdhcmRfdXNlcihhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGNyZWF0ZSByZXdhcmRfdXNlcgogICAgZXJyCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDExOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgTm9PcCAmJiBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWxnb19hcmVuYS5jb250cmFjdC5BbGdvQXJlbmFSZXdhcmQuY3JlYXRlW3JvdXRpbmddKCkgLT4gdm9pZDoKY3JlYXRlOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29fYXJlbmEvY29udHJhY3QucHk6MjAKICAgIC8vIHNlbGYub3duZXIudmFsdWUgPSBBZGRyZXNzKFR4bi5zZW5kZXIpCiAgICBieXRlY18wIC8vICJvd25lcl9hZGRyIgogICAgdHhuIFNlbmRlcgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjE3CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWxnb19hcmVuYS5jb250cmFjdC5BbGdvQXJlbmFSZXdhcmQucmV3YXJkX3VzZXJbcm91dGluZ10oKSAtPiB2b2lkOgpyZXdhcmRfdXNlcjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjIyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDMyIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjMwCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBzZWxmLm93bmVyLnZhbHVlLCAiT25seSB0aGUgQWxnb0FyZW5hIG93bmVyL3NlcnZlciBjYW4gaXNzdWUgcmV3YXJkcy4iCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWNfMCAvLyAib3duZXJfYWRkciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5vd25lciBleGlzdHMKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQgLy8gT25seSB0aGUgQWxnb0FyZW5hIG93bmVyL3NlcnZlciBjYW4gaXNzdWUgcmV3YXJkcy4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjMyLTM2CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9cmVjaXBpZW50X2FkZHJlc3MubmF0aXZlLAogICAgLy8gICAgIGFtb3VudD1hbGdvX3Jld2FyZF9hbW91bnQubmF0aXZlCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb19hcmVuYS9jb250cmFjdC5weTozMwogICAgLy8gc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29fYXJlbmEvY29udHJhY3QucHk6MzUKICAgIC8vIGFtb3VudD1hbGdvX3Jld2FyZF9hbW91bnQubmF0aXZlCiAgICB1bmNvdmVyIDIKICAgIGJ0b2kKICAgIGl0eG5fZmllbGQgQW1vdW50CiAgICBkaWcgMgogICAgaXR4bl9maWVsZCBSZWNlaXZlcgogICAgaXR4bl9maWVsZCBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjMyCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzAgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjMyLTM2CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgc2VuZGVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVjZWl2ZXI9cmVjaXBpZW50X2FkZHJlc3MubmF0aXZlLAogICAgLy8gICAgIGFtb3VudD1hbGdvX3Jld2FyZF9hbW91bnQubmF0aXZlCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29fYXJlbmEvY29udHJhY3QucHk6MzgtNDMKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIC8vICAgICBzZW5kZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICBhc3NldF9yZWNlaXZlcj1yZWNpcGllbnRfYWRkcmVzcy5uYXRpdmUsCiAgICAvLyAgICAgeGZlcl9hc3NldD1uZnRfYXNzZXRfaWQubmF0aXZlLAogICAgLy8gICAgIGFzc2V0X2Ftb3VudD1OYXRpdmVVSW50NjQoMSkKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjM5CiAgICAvLyBzZW5kZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb19hcmVuYS9jb250cmFjdC5weTo0MQogICAgLy8geGZlcl9hc3NldD1uZnRfYXNzZXRfaWQubmF0aXZlLAogICAgc3dhcAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29fYXJlbmEvY29udHJhY3QucHk6NDIKICAgIC8vIGFzc2V0X2Ftb3VudD1OYXRpdmVVSW50NjQoMSkKICAgIGludGNfMCAvLyAxCiAgICBpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgaXR4bl9maWVsZCBTZW5kZXIKICAgIGl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29fYXJlbmEvY29udHJhY3QucHk6MzgKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIHB1c2hpbnQgNCAvLyBheGZlcgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb19hcmVuYS9jb250cmFjdC5weTozOC00MwogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIHNlbmRlcj1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPXJlY2lwaWVudF9hZGRyZXNzLm5hdGl2ZSwKICAgIC8vICAgICB4ZmVyX2Fzc2V0PW5mdF9hc3NldF9pZC5uYXRpdmUsCiAgICAvLyAgICAgYXNzZXRfYW1vdW50PU5hdGl2ZVVJbnQ2NCgxKQogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvX2FyZW5hL2NvbnRyYWN0LnB5OjIyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CyADAQAIJgEKb3duZXJfYWRkcjEYQAAEKDIDZzEbQQAdMRkURDEYRIICBExcYboEailu4jYaAI4CAAsAEQAxGRQxGBQQRCJDKDEAZyJDNhoBSRWBIBJENhoCSRUkEkQ2GgNJFSQSRCMoZUQxABJEsTIKTwIXsghLArIHsgAishAjsgGzsTIKTBcishKyEbIAshSBBLIQI7IBsyJD", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 4, "patch": 0 } }, "events": [], "templateVariables": {} }