tx · F8T3oZf5rg8yhCFrpxmCddnhUKogcYZ5Njw2ywvTszpw 3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ: -0.01400000 Waves 2022.05.23 17:55 [2064473] smart account 3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ > SELF 0.00000000 Waves
{ "type": 13, "id": "F8T3oZf5rg8yhCFrpxmCddnhUKogcYZ5Njw2ywvTszpw", "fee": 1400000, "feeAssetId": null, "timestamp": 1653317739013, "version": 2, "chainId": 84, "sender": "3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ", "senderPublicKey": "ApEZSyUFWsckB3mZSWm3spfm6UPyDhMdrpxNhydohYs1", "proofs": [ "3PEr43NQm1MQCn6FduBuKmnCqKJyukJWFNUMaszXFLr54EWQ1CoinvooemjET1WcWer3ut6N5C9EddLXG36B3hBT" ], "script": "base64:AAIFAAAAAAAAAAQIAhIAAAAATAAAAAAJc2VwYXJhdG9yAgAAAAFfAAAAAAZnb3ZBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNNeXhmd3ZidWVVQnluWUhmUXN1dE5YWk5xTm96R2lNbnNHAAAAAAhjaGFyc0FwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM05BM0xSU2lnazZrbkxaMTZ1VHpjZExOb3cyRVFadFhUYUoAAAAACGxhbmRzQXBwCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzTXhpSkxyWTZRYTViU1l4eFNGSFNHNWJWVjJuNTl4MU1HbgAAAAAKYmF0dGxlc0FwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM011SDlOZ3BvR2FTUXVmRVFMUFJpa1hOUzlQWGhraGNMenAAAAAAFWtleUVjb3N5c3RlbUFkZHJlc3NlcwIAAAATZWNvc3lzdGVtX2FkZHJlc3NlcwAAAAAKa2V5VG9rZW5JZAIAAAAIdG9rZW5faWQAAAAAFGtleVRva2VuRW1pc3Npb25SYXRlAgAAABN0b2tlbl9lbWlzc2lvbl9yYXRlAAAAABFrZXlUb2tlbkdlbmVyYXRlZAIAAAAPdG9rZW5fZ2VuZXJhdGVkAAAAABtrZXlUb2tlbkdlbmVyYXRlZExhc3RVcGRhdGUCAAAAG3Rva2VuX2dlbmVyYXRlZF9sYXN0X3VwZGF0ZQAAAAASa2V5Q2hhcnNCb2R5QW1vdW50AgAAABFjaGFyc19ib2R5X2Ftb3VudAAAAAASa2V5Q2hhcnNFeWVzQW1vdW50AgAAABFjaGFyc19leWVzX2Ftb3VudAAAAAATa2V5Q2hhcnNNb3V0aEFtb3VudAIAAAASY2hhcnNfbW91dGhfYW1vdW50AAAAABhrZXlDaGFyc1N0YXRzVGllcnNSYW5nZXMCAAAAGGNoYXJzX3N0YXRzX3RpZXJzX3JhbmdlcwAAAAAea2V5Q2hhcnNOYXR1cmFsRWxlbUJvbnVzUmFuZ2VzAgAAAB9jaGFyc19uYXR1cmFsX2VsZW1fYm9udXNfcmFuZ2VzAAAAACBrZXlDaGFyc05hdHVyYWxCYXR0bGVCb251c1JhbmdlcwIAAAAhY2hhcnNfbmF0dXJhbF9iYXR0bGVfYm9udXNfcmFuZ2VzAAAAACRrZXlDaGFyc05hdHVyYWxHZW5lcmF0aW5nQm9udXNSYW5nZXMCAAAAJWNoYXJzX25hdHVyYWxfZ2VuZXJhdGluZ19ib251c19yYW5nZXMAAAAADWtleVRvdGFsTGFuZHMCAAAAC3RvdGFsX2xhbmRzAAAAABNrZXlCYXR0bGVSZXN0UGVyaW9kAgAAABJiYXR0bGVfcmVzdF9wZXJpb2QAAAAAGWtleUJhdHRsZVdpbkNoYW5jZUhhcmRjYXACAAAAGWJhdHRsZV93aW5fY2hhbmNlX2hhcmRjYXAAAAAAHmtleUJhdHRsZVdpbkNoYW5jZUluY3JQZXJCbG9jawIAAAAgYmF0dGxlX3dpbl9jaGFuY2VfaW5jcl9wZXJfYmxvY2sAAAAAGWtleUJhdHRsZUxvb3RSYXJpdHlSYW5nZXMCAAAAGWJhdHRsZV9sb290X3Jhcml0eV9yYW5nZXMAAAAAEmtleUl0ZW1zQ2F0ZWdvcmllcwIAAAAQaXRlbXNfY2F0ZWdvcmllcwAAAAATa2V5SXRlbXNUeXBlc1BlckNhdAIAAAATaXRlbXNfdHlwZXNfcGVyX2NhdAAAAAAVa2V5SXRlbXNFZmZlY3RzQW1vdW50AgAAABRpdGVtc19lZmZlY3RzX2Ftb3VudAAAAAAYa2V5aXRlbXNFZmZlY3RzTWF4UmFuZ2VzAgAAABdpdGVtc19lZmZlY3RzX21heF9yYW5nZQAAAAANa2V5Q2hhcnNDb3VudAIAAAALY2hhcnNfY291bnQAAAAACGtleU93bmVyAgAAAAVvd25lcgAAAAANa2V5QXBwZWFyYW5jZQIAAAAKYXBwZWFyYW5jZQAAAAATa2V5TmF0dXJhbFB5cm9Cb251cwIAAAASbmF0dXJhbF9weXJvX2JvbnVzAAAAABNrZXlOYXR1cmFsQXF1YUJvbnVzAgAAABJuYXR1cmFsX2FxdWFfYm9udXMAAAAAFGtleU5hdHVyYWxUZXJyYUJvbnVzAgAAABNuYXR1cmFsX3RlcnJhX2JvbnVzAAAAABNrZXlOYXR1cmFsQWVyb0JvbnVzAgAAABJuYXR1cmFsX2Flcm9fYm9udXMAAAAAFWtleU5hdHVyYWxCYXR0bGVCb251cwIAAAAUbmF0dXJhbF9iYXR0bGVfYm9udXMAAAAAGWtleU5hdHVyYWxHZW5lcmF0aW5nQm9udXMCAAAAGG5hdHVyYWxfZ2VuZXJhdGluZ19ib251cwAAAAASa2V5Q2hhckN1cnJlbnRMYW5kAgAAABFjaGFyX2N1cnJlbnRfbGFuZAAAAAAQa2V5TGFuZFB5cm9Qb3dlcgIAAAAPbGFuZF9weXJvX3Bvd2VyAAAAABBrZXlMYW5kQXF1YVBvd2VyAgAAAA9sYW5kX2FxdWFfcG93ZXIAAAAAEWtleUxhbmRUZXJyYVBvd2VyAgAAABBsYW5kX3RlcnJhX3Bvd2VyAAAAABBrZXlMYW5kQWVyb1Bvd2VyAgAAAA9sYW5kX2Flcm9fcG93ZXIAAAAAEmtleUNoYXJUb3RhbEluY29tZQIAAAARY2hhcl90b3RhbF9pbmNvbWUAAAAAFWtleUFkZHJlc3NUb3RhbEluY29tZQIAAAAUYWRkcmVzc190b3RhbF9pbmNvbWUAAAAAEGtleUNoYXJQeXJvUG93ZXICAAAAD2NoYXJfcHlyb19wb3dlcgAAAAAQa2V5Q2hhckFxdWFQb3dlcgIAAAAPY2hhcl9hcXVhX3Bvd2VyAAAAABFrZXlDaGFyVGVycmFQb3dlcgIAAAAQY2hhcl90ZXJyYV9wb3dlcgAAAAAQa2V5Q2hhckFlcm9Qb3dlcgIAAAAPY2hhcl9hZXJvX3Bvd2VyAAAAABhrZXlDaGFySW5pdGlhbFB5cm9TaGFyZXMCAAAAGGNoYXJfaW5pdGlhbF9weXJvX3NoYXJlcwAAAAAYa2V5Q2hhckluaXRpYWxBcXVhU2hhcmVzAgAAABhjaGFyX2luaXRpYWxfYXF1YV9zaGFyZXMAAAAAGWtleUNoYXJJbml0aWFsVGVycmFTaGFyZXMCAAAAGWNoYXJfaW5pdGlhbF90ZXJyYV9zaGFyZXMAAAAAGGtleUNoYXJJbml0aWFsQWVyb1NoYXJlcwIAAAAYY2hhcl9pbml0aWFsX2Flcm9fc2hhcmVzAAAAACNrZXlDaGFySW5pdGlhbExhbmRQeXJvR3JhbnRlZFRva2VucwIAAAAlY2hhcl9pbml0aWFsX2xhbmRfcHlyb19ncmFudGVkX3Rva2VucwAAAAAja2V5Q2hhckluaXRpYWxMYW5kQXF1YUdyYW50ZWRUb2tlbnMCAAAAJWNoYXJfaW5pdGlhbF9sYW5kX2FxdWFfZ3JhbnRlZF90b2tlbnMAAAAAJGtleUNoYXJJbml0aWFsTGFuZFRlcnJhR3JhbnRlZFRva2VucwIAAAAmY2hhcl9pbml0aWFsX2xhbmRfdGVycmFfZ3JhbnRlZF90b2tlbnMAAAAAI2tleUNoYXJJbml0aWFsTGFuZEFlcm9HcmFudGVkVG9rZW5zAgAAACVjaGFyX2luaXRpYWxfbGFuZF9hZXJvX2dyYW50ZWRfdG9rZW5zAAAAACJrZXlMYW5kTGFzdFRva2VuRGlzdHJpYnV0aW9uVXBkYXRlAgAAACNsYW5kX21hc3RfdG9rZW5fZGlzdHJpYnV0aW9uX3VwZGF0ZQAAAAAda2V5TGFuZFB5cm9Ub3RhbEdyYW50ZWRUb2tlbnMCAAAAHmxhbmRfcHlyb190b3RhbF9ncmFudGVkX3Rva2VucwAAAAAda2V5TGFuZEFxdWFUb3RhbEdyYW50ZWRUb2tlbnMCAAAAHmxhbmRfYXF1YV90b3RhbF9ncmFudGVkX3Rva2VucwAAAAAea2V5TGFuZFRlcnJhVG90YWxHcmFudGVkVG9rZW5zAgAAAB9sYW5kX3RlcnJhX3RvdGFsX2dyYW50ZWRfdG9rZW5zAAAAAB1rZXlMYW5kQWVyb1RvdGFsR3JhbnRlZFRva2VucwIAAAAebGFuZF9hZXJvX3RvdGFsX2dyYW50ZWRfdG9rZW5zAAAAABNrZXlMYXN0QmF0dGxlSGVpZ2h0AgAAABJsYXN0X2JhdHRsZV9oZWlnaHQAAAAADWtleUl0ZW1zQ291bnQCAAAAC2l0ZW1zX2NvdW50AAAAAAxrZXlJdGVtT3duZXICAAAACml0ZW1fb3duZXIAAAAAD2tleUl0ZW1DYXRlZ29yeQIAAAANaXRlbV9jYXRlZ29yeQAAAAALa2V5SXRlbVR5cGUCAAAACWl0ZW1fdHlwZQAAAAAOa2V5SXRlbUVmZmVjdHMCAAAADGl0ZW1fZWZmZWN0cwAAAAATa2V5SXRlbUlzRXF1aXBwZWRCeQIAAAATaXRlbV9pc19lcXVpcHBlZF9ieQAAAAANa2V5Q2hhcldlYXBvbgIAAAALY2hhcl93ZWFwb24AAAAADGtleUNoYXJBcm1vcgIAAAAKY2hhcl9h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Z05vbmNlAAAAAAAAAAAGAAAAAQAAAAFpAQAAAApjcmVhdGVDaGFyAAAAAAMJAQAAAAIhPQAAAAIJAQAAAAxpbnZva2VDaGVja3MAAAABCAUAAAABaQAAAAZjYWxsZXIGCQEAAAAFdGhyb3cAAAAABAAAAAR0eElkCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAApjYWxsZXJBZGRyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABmNoYXJJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlDaGFyc0NvdW50AAAAAAAAAAABBAAAAAxib2RpZXNBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABmdvdkFwcAUAAAASa2V5Q2hhcnNCb2R5QW1vdW50BAAAAApleWVzQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZnb3ZBcHAFAAAAEmtleUNoYXJzRXllc0Ftb3VudAQAAAAMbW91dGhzQW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAZnb3ZBcHAFAAAAE2tleUNoYXJzTW91dGhBbW91bnQEAAAAEHN0YXRzVGllcnNSYW5nZXMJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAGZ292QXBwBQAAABhrZXlDaGFyc1N0YXRzVGllcnNSYW5nZXMFAAAACXNlcGFyYXRvcgQAAAASbmF0RWxlbUJvbnVzUmFuZ2VzCQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABmdvdkFwcAUAAAAea2V5Q2hhcnNOYXR1cmFsRWxlbUJvbnVzUmFuZ2VzBQAAAAlzZXBhcmF0b3IEAAAAFG5hdEJhdHRsZUJvbnVzUmFuZ2VzCQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABmdvdkFwcAUAAAAga2V5Q2hhcnNOYXR1cmFsQmF0dGxlQm9udXNSYW5nZXMFAAAACXNlcGFyYXRvcgQAAAAYbmF0R2VuZXJhdGluZ0JvbnVzUmFuZ2VzCQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABmdvdkFwcAUAAAAka2V5Q2hhcnNOYXR1cmFsR2VuZXJhdGluZ0JvbnVzUmFuZ2VzBQAAAAlzZXBhcmF0b3IEAAAACmFwcGVhcmFuY2UJAAS5AAAAAgkABEwAAAACCQABpAAAAAEJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQUAAAAMYm9kaWVzQW1vdW50BQAAAAR0eElkAAAAAAAAAAAACQAETAAAAAIJAAGkAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABBQAAAApleWVzQW1vdW50BQAAAAR0eElkAAAAAAAAAAABCQAETAAAAAIJAAGkAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABBQAAAAxtb3V0aHNBbW91bnQFAAAABHR4SWQAAAAAAAAAAAIFAAAAA25pbAUAAAAJc2VwYXJhdG9yBAAAAAxuYXRQeXJvQm9udXMJAQAAABVnZW5SYW5kb21OYXR1cmFsQm9udXMAAAAEBQAAABBzdGF0c1RpZXJzUmFuZ2VzBQAAABJuYXRFbGVtQm9udXNSYW5nZXMAAAAAAAAAAAMFAAAABHR4SWQEAAAADG5hdEFxdWFCb251cwkBAAAAFWdlblJhbmRvbU5hdHVyYWxCb251cwAAAAQFAAAAEHN0YXRzVGllcnNSYW5nZXMFAAAAEm5hdEVsZW1Cb251c1JhbmdlcwAAAAAAAAAACgUAAAAEdHhJZAQAAAANbmF0VGVycmFCb251cwkBAAAAFWdlblJhbmRvbU5hdHVyYWxCb251cwAAAAQFAAAAEHN0YXRzVGllcnNSYW5nZXMFAAAAEm5hdEVsZW1Cb251c1JhbmdlcwAAAAAAAAAAEQUAAAAEdHhJZAQAAAAMbmF0QWVyb0JvbnVzCQEAAAAVZ2VuUmFuZG9tTmF0dXJhbEJvbnVzAAAABAUAAAAQc3RhdHNUaWVyc1JhbmdlcwUAAAASbmF0RWxlbUJvbnVzUmFuZ2VzAAAAAAAAAAAYBQAAAAR0eElkBAAAABJuYXRHZW5lcmF0aW5nQm9udXMJAQAAABVnZW5SYW5kb21OYXR1cmFsQm9udXMAAAAEBQAAABBzdGF0c1RpZXJzUmFuZ2VzBQAAABhuYXRHZW5lcmF0aW5nQm9udXNSYW5nZXMAAAAAAAAAAB8FAAAABHR4SWQEAAAADm5hdEJhdHRsZUJvbnVzCQEAAAAVZ2VuUmFuZG9tTmF0dXJhbEJvbnVzAAAABAUAAAAQc3RhdHNUaWVyc1JhbmdlcwUAAAAUbmF0QmF0dGxlQm9udXNSYW5nZXMAAAAAAAAAACYFAAAABHR4SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAAAhrZXlPd25lcgUAAAAGY2hhcklkBQAAAApjYWxsZXJBZGRyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAANa2V5QXBwZWFyYW5jZQUAAAAGY2hhcklkBQAAAAphcHBlYXJhbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAE2tleU5hdHVyYWxQeXJvQm9udXMFAAAABmNoYXJJZAUAAAAMbmF0UHlyb0JvbnVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAE2tleU5hdHVyYWxBcXVhQm9udXMFAAAABmNoYXJJZAUAAAAMbmF0QXF1YUJvbnVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAFGtleU5hdHVyYWxUZXJyYUJvbnVzBQAAAAZjaGFySWQFAAAADW5hdFRlcnJhQm9udXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAATa2V5TmF0dXJhbEFlcm9Cb251cwUAAAAGY2hhcklkBQAAAAxuYXRBZXJvQm9udXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAVa2V5TmF0dXJhbEJhdHRsZUJvbnVzBQAAAAZjaGFySWQFAAAADm5hdEJhdHRsZUJvbnVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAGWtleU5hdHVyYWxHZW5lcmF0aW5nQm9udXMFAAAABmNoYXJJZAUAAAASbmF0R2VuZXJhdGluZ0JvbnVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlDaGFyc0NvdW50CQAAZAAAAAIFAAAABmNoYXJJZAAAAAAAAAAAAQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkg3HZk", "height": 2064473, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EXwNpFyQTMEuMj5jXgaWK39M2TgcavB8UCLZmGcD4mxU Next: none Diff:
Old | New | Differences | |
---|---|---|---|
151 | 151 | } | |
152 | 152 | ||
153 | 153 | ||
154 | - | func ecosystemCheck (caller) = if ((contains(getStringValue( | |
154 | + | func ecosystemCheck (caller) = if ((contains(getStringValue(govApp, keyEcosystemAddresses), toBase58String(caller.bytes)) != true)) | |
155 | 155 | then throw("Access denied ") | |
156 | 156 | else true | |
157 | 157 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let separator = "_" | |
5 | 5 | ||
6 | 6 | let govApp = addressFromStringValue("3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG") | |
7 | 7 | ||
8 | 8 | let charsApp = addressFromStringValue("3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ") | |
9 | 9 | ||
10 | 10 | let landsApp = addressFromStringValue("3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn") | |
11 | 11 | ||
12 | 12 | let battlesApp = addressFromStringValue("3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp") | |
13 | 13 | ||
14 | 14 | let keyEcosystemAddresses = "ecosystem_addresses" | |
15 | 15 | ||
16 | 16 | let keyTokenId = "token_id" | |
17 | 17 | ||
18 | 18 | let keyTokenEmissionRate = "token_emission_rate" | |
19 | 19 | ||
20 | 20 | let keyTokenGenerated = "token_generated" | |
21 | 21 | ||
22 | 22 | let keyTokenGeneratedLastUpdate = "token_generated_last_update" | |
23 | 23 | ||
24 | 24 | let keyCharsBodyAmount = "chars_body_amount" | |
25 | 25 | ||
26 | 26 | let keyCharsEyesAmount = "chars_eyes_amount" | |
27 | 27 | ||
28 | 28 | let keyCharsMouthAmount = "chars_mouth_amount" | |
29 | 29 | ||
30 | 30 | let keyCharsStatsTiersRanges = "chars_stats_tiers_ranges" | |
31 | 31 | ||
32 | 32 | let keyCharsNaturalElemBonusRanges = "chars_natural_elem_bonus_ranges" | |
33 | 33 | ||
34 | 34 | let keyCharsNaturalBattleBonusRanges = "chars_natural_battle_bonus_ranges" | |
35 | 35 | ||
36 | 36 | let keyCharsNaturalGeneratingBonusRanges = "chars_natural_generating_bonus_ranges" | |
37 | 37 | ||
38 | 38 | let keyTotalLands = "total_lands" | |
39 | 39 | ||
40 | 40 | let keyBattleRestPeriod = "battle_rest_period" | |
41 | 41 | ||
42 | 42 | let keyBattleWinChanceHardcap = "battle_win_chance_hardcap" | |
43 | 43 | ||
44 | 44 | let keyBattleWinChanceIncrPerBlock = "battle_win_chance_incr_per_block" | |
45 | 45 | ||
46 | 46 | let keyBattleLootRarityRanges = "battle_loot_rarity_ranges" | |
47 | 47 | ||
48 | 48 | let keyItemsCategories = "items_categories" | |
49 | 49 | ||
50 | 50 | let keyItemsTypesPerCat = "items_types_per_cat" | |
51 | 51 | ||
52 | 52 | let keyItemsEffectsAmount = "items_effects_amount" | |
53 | 53 | ||
54 | 54 | let keyitemsEffectsMaxRanges = "items_effects_max_range" | |
55 | 55 | ||
56 | 56 | let keyCharsCount = "chars_count" | |
57 | 57 | ||
58 | 58 | let keyOwner = "owner" | |
59 | 59 | ||
60 | 60 | let keyAppearance = "appearance" | |
61 | 61 | ||
62 | 62 | let keyNaturalPyroBonus = "natural_pyro_bonus" | |
63 | 63 | ||
64 | 64 | let keyNaturalAquaBonus = "natural_aqua_bonus" | |
65 | 65 | ||
66 | 66 | let keyNaturalTerraBonus = "natural_terra_bonus" | |
67 | 67 | ||
68 | 68 | let keyNaturalAeroBonus = "natural_aero_bonus" | |
69 | 69 | ||
70 | 70 | let keyNaturalBattleBonus = "natural_battle_bonus" | |
71 | 71 | ||
72 | 72 | let keyNaturalGeneratingBonus = "natural_generating_bonus" | |
73 | 73 | ||
74 | 74 | let keyCharCurrentLand = "char_current_land" | |
75 | 75 | ||
76 | 76 | let keyLandPyroPower = "land_pyro_power" | |
77 | 77 | ||
78 | 78 | let keyLandAquaPower = "land_aqua_power" | |
79 | 79 | ||
80 | 80 | let keyLandTerraPower = "land_terra_power" | |
81 | 81 | ||
82 | 82 | let keyLandAeroPower = "land_aero_power" | |
83 | 83 | ||
84 | 84 | let keyCharTotalIncome = "char_total_income" | |
85 | 85 | ||
86 | 86 | let keyAddressTotalIncome = "address_total_income" | |
87 | 87 | ||
88 | 88 | let keyCharPyroPower = "char_pyro_power" | |
89 | 89 | ||
90 | 90 | let keyCharAquaPower = "char_aqua_power" | |
91 | 91 | ||
92 | 92 | let keyCharTerraPower = "char_terra_power" | |
93 | 93 | ||
94 | 94 | let keyCharAeroPower = "char_aero_power" | |
95 | 95 | ||
96 | 96 | let keyCharInitialPyroShares = "char_initial_pyro_shares" | |
97 | 97 | ||
98 | 98 | let keyCharInitialAquaShares = "char_initial_aqua_shares" | |
99 | 99 | ||
100 | 100 | let keyCharInitialTerraShares = "char_initial_terra_shares" | |
101 | 101 | ||
102 | 102 | let keyCharInitialAeroShares = "char_initial_aero_shares" | |
103 | 103 | ||
104 | 104 | let keyCharInitialLandPyroGrantedTokens = "char_initial_land_pyro_granted_tokens" | |
105 | 105 | ||
106 | 106 | let keyCharInitialLandAquaGrantedTokens = "char_initial_land_aqua_granted_tokens" | |
107 | 107 | ||
108 | 108 | let keyCharInitialLandTerraGrantedTokens = "char_initial_land_terra_granted_tokens" | |
109 | 109 | ||
110 | 110 | let keyCharInitialLandAeroGrantedTokens = "char_initial_land_aero_granted_tokens" | |
111 | 111 | ||
112 | 112 | let keyLandLastTokenDistributionUpdate = "land_mast_token_distribution_update" | |
113 | 113 | ||
114 | 114 | let keyLandPyroTotalGrantedTokens = "land_pyro_total_granted_tokens" | |
115 | 115 | ||
116 | 116 | let keyLandAquaTotalGrantedTokens = "land_aqua_total_granted_tokens" | |
117 | 117 | ||
118 | 118 | let keyLandTerraTotalGrantedTokens = "land_terra_total_granted_tokens" | |
119 | 119 | ||
120 | 120 | let keyLandAeroTotalGrantedTokens = "land_aero_total_granted_tokens" | |
121 | 121 | ||
122 | 122 | let keyLastBattleHeight = "last_battle_height" | |
123 | 123 | ||
124 | 124 | let keyItemsCount = "items_count" | |
125 | 125 | ||
126 | 126 | let keyItemOwner = "item_owner" | |
127 | 127 | ||
128 | 128 | let keyItemCategory = "item_category" | |
129 | 129 | ||
130 | 130 | let keyItemType = "item_type" | |
131 | 131 | ||
132 | 132 | let keyItemEffects = "item_effects" | |
133 | 133 | ||
134 | 134 | let keyItemIsEquippedBy = "item_is_equipped_by" | |
135 | 135 | ||
136 | 136 | let keyCharWeapon = "char_weapon" | |
137 | 137 | ||
138 | 138 | let keyCharArmor = "char_armor" | |
139 | 139 | ||
140 | 140 | let keyCharJewel = "char_jewel" | |
141 | 141 | ||
142 | 142 | let keyItemEffectsValuesPerTypes = "item_effects_values_per_types" | |
143 | 143 | ||
144 | 144 | func invokeChecks (callerAddr) = if ((isDataStorageUntouched(govApp) != false)) | |
145 | 145 | then throw("Governing app not ready") | |
146 | 146 | else { | |
147 | 147 | let ecosystemAddresses = getStringValue(govApp, keyEcosystemAddresses) | |
148 | 148 | if ((contains(ecosystemAddresses, toString(callerAddr)) != false)) | |
149 | 149 | then throw("Access denied") | |
150 | 150 | else true | |
151 | 151 | } | |
152 | 152 | ||
153 | 153 | ||
154 | - | func ecosystemCheck (caller) = if ((contains(getStringValue( | |
154 | + | func ecosystemCheck (caller) = if ((contains(getStringValue(govApp, keyEcosystemAddresses), toBase58String(caller.bytes)) != true)) | |
155 | 155 | then throw("Access denied ") | |
156 | 156 | else true | |
157 | 157 | ||
158 | 158 | ||
159 | 159 | func with (a,b) = makeString([toString(b), a], separator) | |
160 | 160 | ||
161 | 161 | ||
162 | 162 | func withStr (a,b) = makeString([b, a], separator) | |
163 | 163 | ||
164 | 164 | ||
165 | 165 | func randInt (min,max,txId,nonce) = { | |
166 | 166 | let hash = value(sha256_16Kb(((value(value(blockInfoByHeight(height)).vrf) + txId) + toBytes(nonce)))) | |
167 | 167 | value(((value(toInt(hash)) % ((max - min) + 1)) + min)) | |
168 | 168 | } | |
169 | 169 | ||
170 | 170 | ||
171 | 171 | func genRandomNaturalBonus (statsTierRanges,bonusRanges,startingNonce,txId) = { | |
172 | 172 | let sT1 = parseIntValue(statsTierRanges[0]) | |
173 | 173 | let sT2 = parseIntValue(statsTierRanges[1]) | |
174 | 174 | let sT3 = parseIntValue(statsTierRanges[2]) | |
175 | 175 | let sT4 = parseIntValue(statsTierRanges[3]) | |
176 | 176 | let sT5 = parseIntValue(statsTierRanges[4]) | |
177 | 177 | let sT6 = parseIntValue(statsTierRanges[5]) | |
178 | 178 | let bT1 = parseIntValue(bonusRanges[0]) | |
179 | 179 | let bT2 = parseIntValue(bonusRanges[1]) | |
180 | 180 | let bT3 = parseIntValue(bonusRanges[2]) | |
181 | 181 | let bT4 = parseIntValue(bonusRanges[3]) | |
182 | 182 | let bT5 = parseIntValue(bonusRanges[4]) | |
183 | 183 | let bT6 = parseIntValue(bonusRanges[5]) | |
184 | 184 | let tierResult = randInt(0, 10000, txId, startingNonce) | |
185 | 185 | if ((sT1 >= tierResult)) | |
186 | 186 | then randInt(0, bT1, txId, (startingNonce + 1)) | |
187 | 187 | else if ((sT2 >= tierResult)) | |
188 | 188 | then randInt((bT1 + 1), bT2, txId, (startingNonce + 2)) | |
189 | 189 | else if ((sT3 >= tierResult)) | |
190 | 190 | then randInt((bT2 + 1), bT3, txId, (startingNonce + 3)) | |
191 | 191 | else if ((sT4 >= tierResult)) | |
192 | 192 | then randInt((bT3 + 1), bT4, txId, (startingNonce + 4)) | |
193 | 193 | else if ((sT5 >= tierResult)) | |
194 | 194 | then randInt((bT4 + 1), bT5, txId, (startingNonce + 5)) | |
195 | 195 | else randInt((bT5 + 1), bT6, txId, (startingNonce + 6)) | |
196 | 196 | } | |
197 | 197 | ||
198 | 198 | ||
199 | 199 | @Callable(i) | |
200 | 200 | func createChar () = if ((invokeChecks(i.caller) != true)) | |
201 | 201 | then throw() | |
202 | 202 | else { | |
203 | 203 | let txId = i.transactionId | |
204 | 204 | let callerAddr = toBase58String(i.caller.bytes) | |
205 | 205 | let charId = valueOrElse(getInteger(this, keyCharsCount), 1) | |
206 | 206 | let bodiesAmount = getIntegerValue(govApp, keyCharsBodyAmount) | |
207 | 207 | let eyesAmount = getIntegerValue(govApp, keyCharsEyesAmount) | |
208 | 208 | let mouthsAmount = getIntegerValue(govApp, keyCharsMouthAmount) | |
209 | 209 | let statsTiersRanges = split(getStringValue(govApp, keyCharsStatsTiersRanges), separator) | |
210 | 210 | let natElemBonusRanges = split(getStringValue(govApp, keyCharsNaturalElemBonusRanges), separator) | |
211 | 211 | let natBattleBonusRanges = split(getStringValue(govApp, keyCharsNaturalBattleBonusRanges), separator) | |
212 | 212 | let natGeneratingBonusRanges = split(getStringValue(govApp, keyCharsNaturalGeneratingBonusRanges), separator) | |
213 | 213 | let appearance = makeString([toString(randInt(1, bodiesAmount, txId, 0)), toString(randInt(1, eyesAmount, txId, 1)), toString(randInt(1, mouthsAmount, txId, 2))], separator) | |
214 | 214 | let natPyroBonus = genRandomNaturalBonus(statsTiersRanges, natElemBonusRanges, 3, txId) | |
215 | 215 | let natAquaBonus = genRandomNaturalBonus(statsTiersRanges, natElemBonusRanges, 10, txId) | |
216 | 216 | let natTerraBonus = genRandomNaturalBonus(statsTiersRanges, natElemBonusRanges, 17, txId) | |
217 | 217 | let natAeroBonus = genRandomNaturalBonus(statsTiersRanges, natElemBonusRanges, 24, txId) | |
218 | 218 | let natGeneratingBonus = genRandomNaturalBonus(statsTiersRanges, natGeneratingBonusRanges, 31, txId) | |
219 | 219 | let natBattleBonus = genRandomNaturalBonus(statsTiersRanges, natBattleBonusRanges, 38, txId) | |
220 | 220 | [StringEntry(with(keyOwner, charId), callerAddr), StringEntry(with(keyAppearance, charId), appearance), IntegerEntry(with(keyNaturalPyroBonus, charId), natPyroBonus), IntegerEntry(with(keyNaturalAquaBonus, charId), natAquaBonus), IntegerEntry(with(keyNaturalTerraBonus, charId), natTerraBonus), IntegerEntry(with(keyNaturalAeroBonus, charId), natAeroBonus), IntegerEntry(with(keyNaturalBattleBonus, charId), natBattleBonus), IntegerEntry(with(keyNaturalGeneratingBonus, charId), natGeneratingBonus), IntegerEntry(keyCharsCount, (charId + 1))] | |
221 | 221 | } | |
222 | 222 | ||
223 | 223 | ||
224 | 224 | @Verifier(tx) | |
225 | 225 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
226 | 226 |
github/deemru/w8io/169f3d6 31.85 ms ◑