tx · FK36WmgDfwSPewjSdsMDMcJ54zmBJkdNqurVAHhxXN8k

3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG:  -0.01400000 Waves

2022.05.19 15:00 [2058525] smart account 3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG > SELF 0.00000000 Waves

{ "type": 13, "id": "FK36WmgDfwSPewjSdsMDMcJ54zmBJkdNqurVAHhxXN8k", "fee": 1400000, "feeAssetId": null, "timestamp": 1652961711286, "version": 2, "chainId": 84, "sender": "3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG", "senderPublicKey": "A5uPpc5KS7DgroqteAzwUgULhnPuQKdsgxYXJMyji3j8", "proofs": [ "yyi9FUnkFGURSZGUpzgPYNHXVJMFTwGpbTso2hwZbtLgrPjjubtjHCXGCFZafJixL4hS2SdUrS6Rx6AhFyHTRTm" ], "script": "base64:AAIFAAAAAAAAABEIAhIAEgQKAgQIEgASAwoBAQAAACsAAAAACXNlcGFyYXRvcgIAAAABXwAAAAAIREVWX01PREUGAAAAAAl0b2tlbk5hbWUCAAAABkNvdWNvdQAAAAAJdG9rZW5EZXNjAgAAAAdibGEgYmxhAAAAABh0b2tlbkluaXRpYWxFbWlzc2lvblJhdGUAAAAAAAX14QAAAAAAEmxhbmRzSW5pdGlhbEFtb3VudAAAAAAAAAAABgAAAAAbYXBwZWFyYW5jZUluaXRpYWxCb2R5QW1vdW50AAAAAAAAAAAFAAAAABthcHBlYXJhbmNlSW5pdGlhbEV5ZXNBbW91bnQAAAAAAAAAAAUAAAAAHGFwcGVhcmFuY2VJbml0aWFsTW91dGhBbW91bnQAAAAAAAAAAAUAAAAAF3Jhbmdlc0luaXRpYWxTdGF0c1RpZXJzAgAAAB40NTAwXzc1MDBfOTAwMF85NzUwXzk5OTBfMTAwMDAAAAAAGHJhbmdlc0luaXRpYWxOYXR1cmFsRWxlbQIAAAAcNDAwXzEwMDBfMTQwMF8xNjAwXzE3NTBfMjAwMAAAAAAecmFuZ2VzSW5pdGlhbE5hdHVyYWxHZW5lcmF0aW5nAgAAABcyMDBfMzAwXzM3NV80MjVfNDUwXzUwMAAAAAAacmFuZ2VzSW5pdGlhbE5hdHVyYWxCYXR0bGUCAAAAFzIwMF8zMDBfMzc1XzQyNV80NTBfNTAwAAAAABBiYXR0bGVSZXN0UGVyaW9kAAAAAAAAAAAAAAAAABZiYXR0bGVXaW5DaGFuY2VIYXJkY2FwAAAAAAAADDUAAAAAABtiYXR0bGVXaW5DaGFuY2VJbmNyUGVyQmxvY2sAAAAAAAAAAGQAAAAAFWJhdHRsZUxvb3RSYXJpdHlSYW5nZQIAAAAUODAwMF85NTAwXzk5OTBfMTAwMDAAAAAAD2l0ZW1zQ2F0ZWdvcmllcwAAAAAAAAAAAwAAAAAQaXRlbXNUeXBlc1BlckNhdAIAAAAFNl80XzMAAAAADGl0ZW1zRWZmZWN0cwAAAAAAAAAAIAAAAAAUaXRlbXNFZmZlY3RzTWF4UmFuZ2UJAAS5AAAAAgkABEwAAAACAgAAAAQyMDAwCQAETAAAAAICAAAABDIwMDAJAARMAAAAAgIAAAAEMjAwMAkABEwAAAACAgAAAAQyMDAwCQAETAAAAAICAAAABDIwMDAJAARMAAAAAgIAAAAEMjAwMAkABEwAAAACAgAAAAQyMDAwCQAETAAAAAICAAAABDIwMDAJAARMAAAAAgIAAAAEMjAwMAkABEwAAAACAgAAAAQyMDAwCQAETAAAAAICAAAABDIwMDAJAARMAAAAAgIAAAAEMjAwMAkABEwAAAACAgAAAAQyMDAwCQAETAAAAAICAAAABDIwMDAJAARMAAAAAgIAAAAEMjAwMAkABEwAAAACAgAAAAQyMDAwCQAETAAAAAICAAAAAzUwMAkABEwAAAACAgAAAAM1MDAJAARMAAAAAgIAAAADNTAwCQAETAAAAAICAAAAAzUwMAkABEwAAAACAgAAAAMxMDAJAARMAAAAAgIAAAADMTAwCQAETAAAAAICAAAAAzEwMAkABEwAAAACAgAAAAMxMDAJAARMAAAAAgIAAAADMTAwCQAETAAAAAICAAAAAzEwMAkABEwAAAACAgAAAAMxMDAJAARMAAAAAgIAAAADMTAwCQAETAAAAAICAAAAAzEwMAkABEwAAAACAgAAAAMxMDAJAARMAAAAAgIAAAADMTAwCQAETAAAAAICAAAAAzEwMAkABEwAAAACAgAAAAMxMDAJAARMAAAAAgIAAAADMTAwCQAETAAAAAICAAAAAzEwMAkABEwAAAACAgAAAAMxMDAJAARMAAAAAgIAAAACMjUJAARMAAAAAgIAAAACMjUFAAAAA25pbAUAAAAJc2VwYXJhdG9yAAAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMCAAAAE2Vjb3N5c3RlbV9hZGRyZXNzZXMAAAAACmtleVRva2VuSWQCAAAACHRva2VuX2lkAAAAABRrZXlUb2tlbkVtaXNzaW9uUmF0ZQIAAAATdG9rZW5fZW1pc3Npb25fcmF0ZQAAAAARa2V5VG9rZW5HZW5lcmF0ZWQCAAAAD3Rva2VuX2dlbmVyYXRlZAAAAAAba2V5VG9rZW5HZW5lcmF0ZWRMYXN0VXBkYXRlAgAAABt0b2tlbl9nZW5lcmF0ZWRfbGFzdF91cGRhdGUAAAAAEmtleUNoYXJzQm9keUFtb3VudAIAAAARY2hhcnNfYm9keV9hbW91bnQAAAAAEmtleUNoYXJzRXllc0Ftb3VudAIAAAARY2hhcnNfZXllc19hbW91bnQAAAAAE2tleUNoYXJzTW91dGhBbW91bnQCAAAAEmNoYXJzX21vdXRoX2Ftb3VudAAAAAAYa2V5Q2hhcnNTdGF0c1RpZXJzUmFuZ2VzAgAAABhjaGFyc19zdGF0c190aWVyc19yYW5nZXMAAAAAHmtleUNoYXJzTmF0dXJhbEVsZW1Cb251c1JhbmdlcwIAAAAfY2hhcnNfbmF0dXJhbF9lbGVtX2JvbnVzX3JhbmdlcwAAAAAga2V5Q2hhcnNOYXR1cmFsQmF0dGxlQm9udXNSYW5nZXMCAAAAIWNoYXJzX25hdHVyYWxfYmF0dGxlX2JvbnVzX3JhbmdlcwAAAAAka2V5Q2hhcnNOYXR1cmFsR2VuZXJhdGluZ0JvbnVzUmFuZ2VzAgAAACVjaGFyc19uYXR1cmFsX2dlbmVyYXRpbmdfYm9udXNfcmFuZ2VzAAAAAA1rZXlUb3RhbExhbmRzAgAAAAt0b3RhbF9sYW5kcwAAAAATa2V5QmF0dGxlUmVzdFBlcmlvZAIAAAASYmF0dGxlX3Jlc3RfcGVyaW9kAAAAABlrZXlCYXR0bGVXaW5DaGFuY2VIYXJkY2FwAgAAABliYXR0bGVfd2luX2NoYW5jZV9oYXJkY2FwAAAAAB5rZXlCYXR0bGVXaW5DaGFuY2VJbmNyUGVyQmxvY2sCAAAAIGJhdHRsZV93aW5fY2hhbmNlX2luY3JfcGVyX2Jsb2NrAAAAABlrZXlCYXR0bGVMb290UmFyaXR5UmFuZ2VzAgAAABliYXR0bGVfbG9vdF9yYXJpdHlfcmFuZ2VzAAAAABJrZXlJdGVtc0NhdGVnb3JpZXMCAAAAEGl0ZW1zX2NhdGVnb3JpZXMAAAAAE2tleUl0ZW1zVHlwZXNQZXJDYXQCAAAAE2l0ZW1zX3R5cGVzX3Blcl9jYXQAAAAAD2tleUl0ZW1zRWZmZWN0cwIAAAANaXRlbXNfZWZmZWN0cwAAAAAYa2V5aXRlbXNFZmZlY3RzTWF4UmFuZ2VzAgAAABdpdGVtc19lZmZlY3RzX21heF9yYW5nZQEAAAAOZWNvc3lzdGVtQ2hlY2sAAAABAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIJAQAAAAhjb250YWlucwAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAFWtleUVjb3N5c3RlbUFkZHJlc3NlcwkAAlgAAAABCAUAAAAGY2FsbGVyAAAABWJ5dGVzBgkAAAIAAAABCQABLAAAAAICAAAADkFjY2VzcyBkZW5pZWQgCQACWAAAAAEIBQAAAAZjYWxsZXIAAAAFYnl0ZXMGAAAABAAAAAFpAQAAAARpbml0AAAAAAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAAxBY2NlcyBkZW5pZWQDAwkBAAAAAiE9AAAAAgkABB4AAAABBQAAAAR0aGlzBgkBAAAAAiE9AAAAAgUAAAAIREVWX01PREUGBwkAAAIAAAABAgAAABFJbml0IGRvbmUgYWxyZWFkeQQAAAAKdG9rZW5Jc3N1ZQkABEIAAAAFBQAAAAl0b2tlbk5hbWUFAAAACXRva2VuRGVzYwAAAAAAAAAAAQAAAAAAAAAACAYEAAAAB3Rva2VuSWQJAAQ4AAAAAQUAAAAKdG9rZW5Jc3N1ZQkABEwAAAACBQAAAAp0b2tlbklzc3VlCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIFAAAACmtleVRva2VuSWQFAAAAB3Rva2VuSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGtleVRva2VuRW1pc3Npb25SYXRlBQAAABh0b2tlbkluaXRpYWxFbWlzc2lvblJhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleVRva2VuR2VuZXJhdGVkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABtrZXlUb2tlbkdlbmVyYXRlZExhc3RVcGRhdGUFAAAABmhlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMJAAQlAAAAAQUAAAAEdGhpcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VG90YWxMYW5kcwUAAAASbGFuZHNJbml0aWFsQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlDaGFyc0JvZHlBbW91bnQFAAAAG2FwcGVhcmFuY2VJbml0aWFsQm9keUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5Q2hhcnNFeWVzQW1vdW50BQAAABthcHBlYXJhbmNlSW5pdGlhbEV5ZXNBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleUNoYXJzTW91dGhBbW91bnQFAAAAHGFwcGVhcmFuY2VJbml0aWFsTW91dGhBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAYa2V5Q2hhcnNTdGF0c1RpZXJzUmFuZ2VzBQAAABdyYW5nZXNJbml0aWFsU3RhdHNUaWVycwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAB5rZXlDaGFyc05hdHVyYWxFbGVtQm9udXNSYW5nZXMFAAAAGHJhbmdlc0luaXRpYWxOYXR1cmFsRWxlbQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAACRrZXlDaGFyc05hdHVyYWxHZW5lcmF0aW5nQm9udXNSYW5nZXMFAAAAHnJhbmdlc0luaXRpYWxOYXR1cmFsR2VuZXJhdGluZwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAACBrZXlDaGFyc05hdHVyYWxCYXR0bGVCb251c1JhbmdlcwUAAAAacmFuZ2VzSW5pdGlhbE5hdHVyYWxCYXR0bGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleUJhdHRsZVJlc3RQZXJpb2QFAAAAEGJhdHRsZVJlc3RQZXJpb2QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGWtleUJhdHRsZVdpbkNoYW5jZUhhcmRjYXAFAAAAFmJhdHRsZVdpbkNoYW5jZUhhcmRjYXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAHmtleUJhdHRsZVdpbkNoYW5jZUluY3JQZXJCbG9jawUAAAAbYmF0dGxlV2luQ2hhbmNlSW5jclBlckJsb2NrCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAGWtleUJhdHRsZUxvb3RSYXJpdHlSYW5nZXMFAAAAFWJhdHRsZUxvb3RSYXJpdHlSYW5nZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5SXRlbXNDYXRlZ29yaWVzBQAAAA9pdGVtc0NhdGVnb3JpZXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAATa2V5SXRlbXNUeXBlc1BlckNhdAUAAAAQaXRlbXNUeXBlc1BlckNhdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5SXRlbXNFZmZlY3RzBQAAAAxpdGVtc0VmZmVjdHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAYa2V5aXRlbXNFZmZlY3RzTWF4UmFuZ2VzBQAAABRpdGVtc0VmZmVjdHNNYXhSYW5nZQUAAAADbmlsAAAAAWkBAAAAGG1hbmFnZUVjb3N5c3RlbUFkZHJlc3NlcwAAAAIAAAADYWRkAAAABGFkZHIDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAMQWNjZXMgZGVuaWVkBAAAAAVtQWRkcgQAAAAHJG1hdGNoMAkABCYAAAABBQAAAARhZGRyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdBZGRyZXNzBAAAAAZpc0FkZHIFAAAAByRtYXRjaDAFAAAABGFkZHIJAAACAAAAAQIAAAAOTm90IGFuIGFkZHJlc3MEAAAADmN1cnJlbnRFY29BZGRyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMEAAAACmFkZHJJbkxpc3QJAQAAAAhjb250YWlucwAAAAIFAAAADmN1cnJlbnRFY29BZGRyBQAAAAVtQWRkcgMDCQAAAAAAAAIFAAAAA2FkZAYJAAAAAAAAAgUAAAAKYWRkckluTGlzdAYHCQAAAgAAAAECAAAAG0FkZHJlc3MgYWxyZWFkeSBpbiB0aGUgbGlzdAMDCQAAAAAAAAIFAAAAA2FkZAcJAAAAAAAAAgUAAAAKYWRkckluTGlzdAcHCQAAAgAAAAECAAAAH0FkZHJlc3Mgbm90IGluIHRoZSBsaXN0IGFscmVhZHkEAAAACm5ld0Vjb0FkZHIDCQAAAAAAAAIFAAAAA2FkZAYJAAEsAAAAAgkAASwAAAACBQAAAA5jdXJyZW50RWNvQWRkcgUAAAAJc2VwYXJhdG9yBQAAAAVtQWRkcgQAAAALZWNvQWRkckxpc3QJAAS1AAAAAgUAAAAOY3VycmVudEVjb0FkZHIFAAAACXNlcGFyYXRvcgQAAAAJYWRkckluZGV4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAARPAAAAAgUAAAALZWNvQWRkckxpc3QFAAAABW1BZGRyAgAAAA9Vbmtub3duIGFkZHJlc3MJAAS5AAAAAgkABFEAAAACBQAAAAtlY29BZGRyTGlzdAUAAAAJYWRkckluZGV4BQAAAAlzZXBhcmF0b3IJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAVa2V5RWNvc3lzdGVtQWRkcmVzc2VzBQAAAApuZXdFY29BZGRyBQAAAANuaWwAAAABaQEAAAAUZ2V0R2VuZXJhdGVkU3VwcGxpZXMAAAAAAwkBAAAAAiE9AAAAAgkBAAAADmVjb3N5c3RlbUNoZWNrAAAAAQgFAAAAAWkAAAAGY2FsbGVyBgkBAAAABXRocm93AAAAAAQAAAAYY3VycmVudEdlbmVyYXRlZFN1cHBsaWVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAABFrZXlUb2tlbkdlbmVyYXRlZAQAAAAKaGVpZ2h0RGlmZgkAAGUAAAACBQAAAAZoZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAG2tleVRva2VuR2VuZXJhdGVkTGFzdFVwZGF0ZQQAAAAUbmV3R2VuZXJhdGVkU3VwcGxpZXMJAABkAAAAAgUAAAAYY3VycmVudEdlbmVyYXRlZFN1cHBsaWVzCQAAaAAAAAIFAAAACmhlaWdodERpZmYJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAFGtleVRva2VuRW1pc3Npb25SYXRlAwkAAGYAAAACBQAAABhjdXJyZW50R2VuZXJhdGVkU3VwcGxpZXMFAAAAFG5ld0dlbmVyYXRlZFN1cHBsaWVzCQAAAgAAAAECAAAAL25ld0dlbmVyYXRlZFN1cHBsaWVzIDwgY3VycmVudEdlbmVyYXRlZFN1cHBsaWVzAwkAAGYAAAACAAAAAAAAAAAABQAAAApoZWlnaHREaWZmCQAAAgAAAAECAAAADmhlaWdodERpZmYgPCAwCQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleVRva2VuR2VuZXJhdGVkBQAAABRuZXdHZW5lcmF0ZWRTdXBwbGllcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5VG9rZW5HZW5lcmF0ZWRMYXN0VXBkYXRlBQAAAAZoZWlnaHQFAAAAA25pbAUAAAAUbmV3R2VuZXJhdGVkU3VwcGxpZXMAAAABaQEAAAAPc2VuZFRva2Vuc3RvQXBwAAAAAQAAAAZhbW91bnQDCQEAAAACIT0AAAACCQEAAAAOZWNvc3lzdGVtQ2hlY2sAAAABCAUAAAABaQAAAAZjYWxsZXIGCQEAAAAFdGhyb3cAAAAABAAAAAd0b2tlbklkCQEAAAARQGV4dHJOYXRpdmUoMTA1MikAAAACBQAAAAR0aGlzBQAAAAprZXlUb2tlbklkBAAAAAx0b2tlblJlaXNzdWUJAQAAAAdSZWlzc3VlAAAAAwUAAAAHdG9rZW5JZAUAAAAGYW1vdW50BgkABRQAAAACCQAETAAAAAIFAAAADHRva2VuUmVpc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAUAAAAHdG9rZW5JZAUAAAADbmlsBQAAAAZhbW91bnQAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQfTv8c=", "height": 2058525, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2wNmN9E6iQtzZAuurahZzppr6yCUZAkLdjBXueJnJGWa Next: 6qPTFVCgFHMjmDwkrG3qnJasyeaFRej41oXSnTKtuXnr Diff:
OldNewDifferences
8686 let keyitemsEffectsMaxRanges = "items_effects_max_range"
8787
8888 func ecosystemCheck (caller) = if ((contains(getStringValue(this, keyEcosystemAddresses), toBase58String(caller.bytes)) != true))
89- then throw("Access denied")
89+ then throw(("Access denied " + toBase58String(caller.bytes)))
9090 else true
9191
9292
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "_"
55
66 let DEV_MODE = true
77
88 let tokenName = "Coucou"
99
1010 let tokenDesc = "bla bla"
1111
1212 let tokenInitialEmissionRate = 100000000
1313
1414 let landsInitialAmount = 6
1515
1616 let appearanceInitialBodyAmount = 5
1717
1818 let appearanceInitialEyesAmount = 5
1919
2020 let appearanceInitialMouthAmount = 5
2121
2222 let rangesInitialStatsTiers = "4500_7500_9000_9750_9990_10000"
2323
2424 let rangesInitialNaturalElem = "400_1000_1400_1600_1750_2000"
2525
2626 let rangesInitialNaturalGenerating = "200_300_375_425_450_500"
2727
2828 let rangesInitialNaturalBattle = "200_300_375_425_450_500"
2929
3030 let battleRestPeriod = 0
3131
3232 let battleWinChanceHardcap = 800000
3333
3434 let battleWinChanceIncrPerBlock = 100
3535
3636 let battleLootRarityRange = "8000_9500_9990_10000"
3737
3838 let itemsCategories = 3
3939
4040 let itemsTypesPerCat = "6_4_3"
4141
4242 let itemsEffects = 32
4343
4444 let itemsEffectsMaxRange = makeString(["2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000", "500", "500", "500", "500", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "100", "25", "25"], separator)
4545
4646 let keyEcosystemAddresses = "ecosystem_addresses"
4747
4848 let keyTokenId = "token_id"
4949
5050 let keyTokenEmissionRate = "token_emission_rate"
5151
5252 let keyTokenGenerated = "token_generated"
5353
5454 let keyTokenGeneratedLastUpdate = "token_generated_last_update"
5555
5656 let keyCharsBodyAmount = "chars_body_amount"
5757
5858 let keyCharsEyesAmount = "chars_eyes_amount"
5959
6060 let keyCharsMouthAmount = "chars_mouth_amount"
6161
6262 let keyCharsStatsTiersRanges = "chars_stats_tiers_ranges"
6363
6464 let keyCharsNaturalElemBonusRanges = "chars_natural_elem_bonus_ranges"
6565
6666 let keyCharsNaturalBattleBonusRanges = "chars_natural_battle_bonus_ranges"
6767
6868 let keyCharsNaturalGeneratingBonusRanges = "chars_natural_generating_bonus_ranges"
6969
7070 let keyTotalLands = "total_lands"
7171
7272 let keyBattleRestPeriod = "battle_rest_period"
7373
7474 let keyBattleWinChanceHardcap = "battle_win_chance_hardcap"
7575
7676 let keyBattleWinChanceIncrPerBlock = "battle_win_chance_incr_per_block"
7777
7878 let keyBattleLootRarityRanges = "battle_loot_rarity_ranges"
7979
8080 let keyItemsCategories = "items_categories"
8181
8282 let keyItemsTypesPerCat = "items_types_per_cat"
8383
8484 let keyItemsEffects = "items_effects"
8585
8686 let keyitemsEffectsMaxRanges = "items_effects_max_range"
8787
8888 func ecosystemCheck (caller) = if ((contains(getStringValue(this, keyEcosystemAddresses), toBase58String(caller.bytes)) != true))
89- then throw("Access denied")
89+ then throw(("Access denied " + toBase58String(caller.bytes)))
9090 else true
9191
9292
9393 @Callable(i)
9494 func init () = if ((i.caller != this))
9595 then throw("Acces denied")
9696 else if (if ((isDataStorageUntouched(this) != true))
9797 then (DEV_MODE != true)
9898 else false)
9999 then throw("Init done already")
100100 else {
101101 let tokenIssue = Issue(tokenName, tokenDesc, 1, 8, true)
102102 let tokenId = calculateAssetId(tokenIssue)
103103 [tokenIssue, BinaryEntry(keyTokenId, tokenId), IntegerEntry(keyTokenEmissionRate, tokenInitialEmissionRate), IntegerEntry(keyTokenGenerated, 0), IntegerEntry(keyTokenGeneratedLastUpdate, height), StringEntry(keyEcosystemAddresses, toString(this)), IntegerEntry(keyTotalLands, landsInitialAmount), IntegerEntry(keyCharsBodyAmount, appearanceInitialBodyAmount), IntegerEntry(keyCharsEyesAmount, appearanceInitialEyesAmount), IntegerEntry(keyCharsMouthAmount, appearanceInitialMouthAmount), StringEntry(keyCharsStatsTiersRanges, rangesInitialStatsTiers), StringEntry(keyCharsNaturalElemBonusRanges, rangesInitialNaturalElem), StringEntry(keyCharsNaturalGeneratingBonusRanges, rangesInitialNaturalGenerating), StringEntry(keyCharsNaturalBattleBonusRanges, rangesInitialNaturalBattle), IntegerEntry(keyBattleRestPeriod, battleRestPeriod), IntegerEntry(keyBattleWinChanceHardcap, battleWinChanceHardcap), IntegerEntry(keyBattleWinChanceIncrPerBlock, battleWinChanceIncrPerBlock), StringEntry(keyBattleLootRarityRanges, battleLootRarityRange), IntegerEntry(keyItemsCategories, itemsCategories), StringEntry(keyItemsTypesPerCat, itemsTypesPerCat), IntegerEntry(keyItemsEffects, itemsEffects), StringEntry(keyitemsEffectsMaxRanges, itemsEffectsMaxRange)]
104104 }
105105
106106
107107
108108 @Callable(i)
109109 func manageEcosystemAddresses (add,addr) = if ((i.caller != this))
110110 then throw("Acces denied")
111111 else {
112112 let mAddr = match addressFromString(addr) {
113113 case isAddr: Address =>
114114 addr
115115 case _ =>
116116 throw("Not an address")
117117 }
118118 let currentEcoAddr = getStringValue(this, keyEcosystemAddresses)
119119 let addrInList = contains(currentEcoAddr, mAddr)
120120 if (if ((add == true))
121121 then (addrInList == true)
122122 else false)
123123 then throw("Address already in the list")
124124 else if (if ((add == false))
125125 then (addrInList == false)
126126 else false)
127127 then throw("Address not in the list already")
128128 else {
129129 let newEcoAddr = if ((add == true))
130130 then ((currentEcoAddr + separator) + mAddr)
131131 else {
132132 let ecoAddrList = split(currentEcoAddr, separator)
133133 let addrIndex = valueOrErrorMessage(indexOf(ecoAddrList, mAddr), "Unknown address")
134134 makeString(removeByIndex(ecoAddrList, addrIndex), separator)
135135 }
136136 [StringEntry(keyEcosystemAddresses, newEcoAddr)]
137137 }
138138 }
139139
140140
141141
142142 @Callable(i)
143143 func getGeneratedSupplies () = if ((ecosystemCheck(i.caller) != true))
144144 then throw()
145145 else {
146146 let currentGeneratedSupplies = getIntegerValue(this, keyTokenGenerated)
147147 let heightDiff = (height - getIntegerValue(this, keyTokenGeneratedLastUpdate))
148148 let newGeneratedSupplies = (currentGeneratedSupplies + (heightDiff * getIntegerValue(this, keyTokenEmissionRate)))
149149 if ((currentGeneratedSupplies > newGeneratedSupplies))
150150 then throw("newGeneratedSupplies < currentGeneratedSupplies")
151151 else if ((0 > heightDiff))
152152 then throw("heightDiff < 0")
153153 else $Tuple2([IntegerEntry(keyTokenGenerated, newGeneratedSupplies), IntegerEntry(keyTokenGeneratedLastUpdate, height)], newGeneratedSupplies)
154154 }
155155
156156
157157
158158 @Callable(i)
159159 func sendTokenstoApp (amount) = if ((ecosystemCheck(i.caller) != true))
160160 then throw()
161161 else {
162162 let tokenId = getBinaryValue(this, keyTokenId)
163163 let tokenReissue = Reissue(tokenId, amount, true)
164164 $Tuple2([tokenReissue, ScriptTransfer(i.caller, amount, tokenId)], amount)
165165 }
166166
167167
168168 @Verifier(tx)
169169 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
170170

github/deemru/w8io/169f3d6 
35.13 ms