tx · Gw4tHsR5m5y3eyCb5SDjPTizFmi1VNoGJdJUzrLfgqSa

3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn:  -0.03100000 Waves

2022.05.23 17:48 [2064464] smart account 3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn > SELF 0.00000000 Waves

{ "type": 13, "id": "Gw4tHsR5m5y3eyCb5SDjPTizFmi1VNoGJdJUzrLfgqSa", "fee": 3100000, "feeAssetId": null, "timestamp": 1653317316283, "version": 2, "chainId": 84, "sender": "3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn", "senderPublicKey": "9M1hAsbWkVP73NKHvZezCkamwZfSdkejc3b8sejqT98D", "proofs": [ "4T5WSmM3FQ9DdV2GRpWg62hqJT2ofDsjeXiicPJoydiPXBDTqmdpEYiQF8W6SZ97m9FHSeg35hSC9SYcuEqNsShU" ], "script": "base64:AAIFAAAAAAAAAAsIAhIHCgUBAQEBAQAAAFQAAAAACXNlcGFyYXRvcgIAAAABXwAAAAAGZ292QXBwCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzTXl4Znd2YnVlVUJ5bllIZlFzdXROWFpOcU5vekdpTW5zRwAAAAAIY2hhcnNBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNOQTNMUlNpZ2s2a25MWjE2dVR6Y2RMTm93MkVRWnRYVGFKAAAAAAhsYW5kc0FwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM014aUpMclk2UWE1YlNZeHhTRkhTRzViVlYybjU5eDFNR24AAAAACmJhdHRsZXNBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNNdUg5Tmdwb0dhU1F1ZkVRTFBSaWtYTlM5UFhoa2hjTHpwAAAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMCAAAAE2Vjb3N5c3RlbV9hZGRyZXNzZXMAAAAACmtleVRva2VuSWQCAAAACHRva2VuX2lkAAAAABRrZXlUb2tlbkVtaXNzaW9uUmF0ZQIAAAATdG9rZW5fZW1pc3Npb25fcmF0ZQAAAAARa2V5VG9rZW5HZW5lcmF0ZWQCAAAAD3Rva2VuX2dlbmVyYXRlZAAAAAAba2V5VG9rZW5HZW5lcmF0ZWRMYXN0VXBkYXRlAgAAABt0b2tlbl9nZW5lcmF0ZWRfbGFzdF91cGRhdGUAAAAAEmtleUNoYXJzQm9keUFtb3VudAIAAAARY2hhcnNfYm9keV9hbW91bnQAAAAAEmtleUNoYXJzRXllc0Ftb3VudAIAAAARY2hhcnNfZXllc19hbW91bnQAAAAAE2tleUNoYXJzTW91dGhBbW91bnQCAAAAEmNoYXJzX21vdXRoX2Ftb3VudAAAAAAYa2V5Q2hhcnNTdGF0c1RpZXJzUmFuZ2VzAgAAABhjaGFyc19zdGF0c190aWVyc19yYW5nZXMAAAAAHmtleUNoYXJzTmF0dXJhbEVsZW1Cb251c1JhbmdlcwIAAAAfY2hhcnNfbmF0dXJhbF9lbGVtX2JvbnVzX3JhbmdlcwAAAAAga2V5Q2hhcnNOYXR1cmFsQmF0dGxlQm9udXNSYW5nZXMCAAAAIWNoYXJzX25hdHVyYWxfYmF0dGxlX2JvbnVzX3JhbmdlcwAAAAAka2V5Q2hhcnNOYXR1cmFsR2VuZXJhdGluZ0JvbnVzUmFuZ2VzAgAAACVjaGFyc19uYXR1cmFsX2dlbmVyYXRpbmdfYm9udXNfcmFuZ2VzAAAAAA1rZXlUb3RhbExhbmRzAgAAAAt0b3RhbF9sYW5kcwAAAAATa2V5QmF0dGxlUmVzdFBlcmlvZAIAAAASYmF0dGxlX3Jlc3RfcGVyaW9kAAAAABlrZXlCYXR0bGVXaW5DaGFuY2VIYXJkY2FwAgAAABliYXR0bGVfd2luX2NoYW5jZV9oYXJkY2FwAAAAAB5rZXlCYXR0bGVXaW5DaGFuY2VJbmNyUGVyQmxvY2sCAAAAIGJhdHRsZV93aW5fY2hhbmNlX2luY3JfcGVyX2Jsb2NrAAAAABlrZXlCYXR0bGVMb290UmFyaXR5UmFuZ2VzAgAAABliYXR0bGVfbG9vdF9yYXJpdHlfcmFuZ2VzAAAAABJrZXlJdGVtc0NhdGVnb3JpZXMCAAAAEGl0ZW1zX2NhdGVnb3JpZXMAAAAAE2tleUl0ZW1zVHlwZXNQZXJDYXQCAAAAE2l0ZW1zX3R5cGVzX3Blcl9jYXQAAAAAFWtleUl0ZW1zRWZmZWN0c0Ftb3VudAIAAAAUaXRlbXNfZWZmZWN0c19hbW91bnQAAAAAGGtleWl0ZW1zRWZmZWN0c01heFJhbmdlcwIAAAAXaXRlbXNfZWZmZWN0c19tYXhfcmFuZ2UAAAAADWtleUNoYXJzQ291bnQCAAAAC2NoYXJzX2NvdW50AAAAAAhrZXlPd25lcgIAAAAFb3duZXIAAAAADWtleUFwcGVhcmFuY2UCAAAACmFwcGVhcmFuY2UAAAAAE2tleU5hdHVyYWxQeXJvQm9udXMCAAAAEm5hdHVyYWxfcHlyb19ib251cwAAAAATa2V5TmF0dXJhbEFxdWFCb251cwIAAAASbmF0dXJhbF9hcXVhX2JvbnVzAAAAABRrZXlOYXR1cmFsVGVycmFCb251cwIAAAATbmF0dXJhbF90ZXJyYV9ib251cwAAAAATa2V5TmF0dXJhbEFlcm9Cb251cwIAAAASbmF0dXJhbF9hZXJvX2JvbnVzAAAAABVrZXlOYXR1cmFsQmF0dGxlQm9udXMCAAAAFG5hdHVyYWxfYmF0dGxlX2JvbnVzAAAAABlrZXlOYXR1cmFsR2VuZXJhdGluZ0JvbnVzAgAAABhuYXR1cmFsX2dlbmVyYXRpbmdfYm9udXMAAAAAEmtleUNoYXJDdXJyZW50TGFuZAIAAAARY2hhcl9jdXJyZW50X2xhbmQAAAAAEGtleUxhbmRQeXJvUG93ZXICAAAAD2xhbmRfcHlyb19wb3dlcgAAAAAQa2V5TGFuZEFxdWFQb3dlcgIAAAAPbGFuZF9hcXVhX3Bvd2VyAAAAABFrZXlMYW5kVGVycmFQb3dlcgIAAAAQbGFuZF90ZXJyYV9wb3dlcgAAAAAQa2V5TGFuZEFlcm9Qb3dlcgIAAAAPbGFuZF9hZXJvX3Bvd2VyAAAAABJrZXlDaGFyVG90YWxJbmNvbWUCAAAAEWNoYXJfdG90YWxfaW5jb21lAAAAABVrZXlBZGRyZXNzVG90YWxJbmNvbWUCAAAAFGFkZHJlc3NfdG90YWxfaW5jb21lAAAAABBrZXlDaGFyUHlyb1Bvd2VyAgAAAA9jaGFyX3B5cm9fcG93ZXIAAAAAEGtleUNoYXJBcXVhUG93ZXICAAAAD2NoYXJfYXF1YV9wb3dlcgAAAAARa2V5Q2hhclRlcnJhUG93ZXICAAAAEGNoYXJfdGVycmFfcG93ZXIAAAAAEGtleUNoYXJBZXJvUG93ZXICAAAAD2NoYXJfYWVyb19wb3dlcgAAAAAYa2V5Q2hhckluaXRpYWxQeXJvU2hhcmVzAgAAABhjaGFyX2luaXRpYWxfcHlyb19zaGFyZXMAAAAAGGtleUNoYXJJbml0aWFsQXF1YVNoYXJlcwIAAAAYY2hhcl9pbml0aWFsX2FxdWFfc2hhcmVzAAAAABlrZXlDaGFySW5pdGlhbFRlcnJhU2hhcmVzAgAAABljaGFyX2luaXRpYWxfdGVycmFfc2hhcmVzAAAAABhrZXlDaGFySW5pdGlhbEFlcm9TaGFyZXMCAAAAGGNoYXJfaW5pdGlhbF9hZXJvX3NoYXJlcwAAAAAja2V5Q2hhckluaXRpYWxMYW5kUHlyb0dyYW50ZWRUb2tlbnMCAAAAJWNoYXJfaW5pdGlhbF9sYW5kX3B5cm9fZ3JhbnRlZF90b2tlbnMAAAAAI2tleUNoYXJJbml0aWFsTGFuZEFxdWFHcmFudGVkVG9rZW5zAgAAACVjaGFyX2luaXRpYWxfbGFuZF9hcXVhX2dyYW50ZWRfdG9rZW5zAAAAACRrZXlDaGFySW5pdGlhbExhbmRUZXJyYUdyYW50ZWRUb2tlbnMCAAAAJmNoYXJfaW5pdGlhbF9sYW5kX3RlcnJhX2dyYW50ZWRfdG9rZW5zAAAAACNrZXlDaGFySW5pdGlhbExhbmRBZXJvR3JhbnRlZFRva2VucwIAAAAlY2hhcl9pbml0aWFsX2xhbmRfYWVyb19ncmFudGVkX3Rva2VucwAAAAAia2V5TGFuZExhc3RUb2tlbkRpc3RyaWJ1dGlvblVwZGF0ZQIAAAAjbGFuZF9tYXN0X3Rva2VuX2Rpc3RyaWJ1dGlvbl91cGRhdGUAAAAAHWtleUxhbmRQeXJvVG90YWxHcmFudGVkVG9rZW5zAgAAAB5sYW5kX3B5cm9fdG90YWxfZ3JhbnRlZF90b2tlbnMAAAAAHWtleUxhbmRBcXVhVG90YWxHcmFudGVkVG9rZW5zAgAAAB5sYW5kX2FxdWFfdG90YWxfZ3JhbnRlZF90b2tlbnMAAAAAHmtleUxhbmRUZXJyYVRvdGFsR3JhbnRlZFRva2VucwIAAAAfbGFuZF90ZXJyYV90b3RhbF9ncmFudGVkX3Rva2VucwAAAAAda2V5TGFuZEFlcm9Ub3RhbEdyYW50ZWRUb2tlbnMCAAAAHmxhbmRfYWVyb190b3RhbF9ncmFudGVkX3Rva2VucwAAAAATa2V5TGFzdEJhdHRsZUhlaWdodAIAAAASbGFzdF9iYXR0bGVfaGVpZ2h0AAAAAA1rZXlJdGVtc0NvdW50AgAAAAtpdGVtc19jb3VudAAAAAAMa2V5SXRlbU93bmVyAgAAAAppdGVtX293bmVyAAAAAA9rZXlJdGVtQ2F0ZWdvcnkCAAAADWl0ZW1fY2F0ZWdvcnkAAAAAC2tleUl0ZW1UeXBlAgAAAAlpdGVtX3R5cGUAAAAADmtleUl0ZW1FZmZlY3RzAgAAAAxpdGVtX2VmZmVjdHMAAAAAE2tleUl0ZW1Jc0VxdWlwcGVkQnkCAAAAE2l0ZW1faXNfZXF1aXBwZWRfYnkAAAAADWtleUNoYXJXZWFwb24CAAAAC2NoYXJfd2VhcG9uAAAAAAxrZXlDaGFyQXJtb3ICAAAA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CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAhjaGFyc0FwcAkBAAAABHdpdGgAAAACBQAAAAhrZXlPd25lcgUAAAAGY2hhcklkBQAAAApjYWxsZXJBZGRyCQAAAgAAAAECAAAAHENhbGxlciBkb2Vzbid0IG93biB0aGlzIGNoYXIDAwkAAGYAAAACAAAAAAAAAAAABQAAAAluZXdMYW5kSWQGCQAAZgAAAAIFAAAACW5ld0xhbmRJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAGZ292QXBwBQAAAA1rZXlUb3RhbExhbmRzCQAAAgAAAAECAAAACk5vdCBhIGxhbmQEAAAADWN1cnJlbnRMYW5kSWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAABHdpdGgAAAACBQAAABJrZXlDaGFyQ3VycmVudExhbmQFAAAABmNoYXJJZAAAAAAAAAAAAAMJAAAAAAAAAgUAAAANY3VycmVudExhbmRJZAUAAAAJbmV3TGFuZElkCQAAAgAAAAECAAAAGUNoYXIgYWxyZWFkeSBvbiB0aGF0IGxhbmQEAAAAFGN1cnJlbnRMYW5kRWxlbVBvd2VyCQEAAAAQZ2V0TGFuZEVsZW1Qb3dlcgAAAAEFAAAADWN1cnJlbnRMYW5kSWQEAAAAEWVsZW1HcmFudGVkVG9rZW5zCQEAAAAZY2FsY0xhbmRFbGVtR3JhbnRlZFRva2VucwAAAAIFAAAADWN1cnJlbnRMYW5kSWQFAAAAFGN1cnJlbnRMYW5kRWxlbVBvd2VyBAAAABlsZWF2aW5nQ3VycmVudExhbmRBY3Rpb25zAwkBAAAAAiE9AAAAAgUAAAANY3VycmVudExhbmRJZAAAAAAAAAAAAAQAAAAXY3VycmVudEVxdWlwbWVudEVmZmVjdHMJAQAAABNnZXRFcXVpcG1lbnRFZmZlY3RzAAAAAQkABEwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAApiYXR0bGVzQXBwCQEAAAAEd2l0aAAAAAIFAAAADWtleUNoYXJXZWFwb24FAAAABmNoYXJJZAkABEwAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAApiYXR0bGVzQXBwCQEAAAAEd2l0aAAAAAIFAAAADGtleUNoYXJBcm1vcgUAAAAGY2hhcklkCQAETAAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACmJhdHRsZXNBcHAJAQAAAAR3aXRoAAAAAgUAAAAMa2V5Q2hhckpld2VsBQAAAAZjaGFySWQFAAAAA25pbAQAAAAUY3VycmVudENoYXJFbGVtUG93ZXIJAQAAABBnZXRDaGFyRWxlbVBvd2VyAAAAAQUAAAAGY2hhcklkBAAAAA9zZW5kVG9rZW5zVG9BcHAJAAP8AAAABAUAAAAGZ292QXBwAgAAAA9zZW5kVG9rZW5zdG9BcHAJAARMAAAAAgkBAAAADmNhbGNDaGFySW5jb21lAAAABAUAAAAGY2hhcklkBQAAABRjdXJyZW50TGFuZEVsZW1Qb3dlcgUAAAAUY3VycmVudENoYXJFbGVtUG93ZXIFAAAAEWVsZW1HcmFudGVkVG9rZW5zBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAPc2VuZFRva2Vuc1RvQXBwBQAAAA9zZW5kVG9rZW5zVG9BcHAEAAAAD2NoYXJUb2tlbkluY29tZQQAAAAHJG1hdGNoMAUAAAAPc2VuZFRva2Vuc1RvQXBwAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWlzSW50BQAAAAckbWF0Y2gwBQAAAAVpc0ludAkAAAIAAAABAgAAAAxJbnZva2UgaXNzdWUEAAAAEm5ld0NoYXJUb3RhbEluY29tZQkAAGQAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAR3aXRoAAAAAgUAAAASa2V5Q2hhclRvdGFsSW5jb21lBQAAAAZjaGFySWQAAAAAAAAAAAAFAAAAD2NoYXJUb2tlbkluY29tZQQAAAAVbmV3QWRkcmVzc1RvdGFsSW5jb21lCQAAZAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAB3dpdGhTdHIAAAACBQAAABVrZXlBZGRyZXNzVG90YWxJbmNvbWUFAAAACmNhbGxlckFkZHIAAAAAAAAAAAAFAAAAD2NoYXJUb2tlbkluY29tZQQAAAAZbGFuZEVsZW1Qb3dlckFmdGVyTGVhdmluZwkBAAAAEWNhbGNMYW5kRWxlbVBvd2VyAAAABAUAAAANY3VycmVudExhbmRJZAcFAAAAFGN1cnJlbnRDaGFyRWxlbVBvd2VyBQAAABdjdXJyZW50RXF1aXBtZW50RWZmZWN0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAD2NoYXJUb2tlbkluY29tZQkBAAAAEUBleHRyTmF0aXZlKDEwNTIpAAAAAgUAAAAGZ292QXBwBQAAAAprZXlUb2tlbklkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEmtleUNoYXJUb3RhbEluY29tZQUAAAAGY2hhcklkBQAAABJuZXdDaGFyVG90YWxJbmNvbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAd3aXRoU3RyAAAAAgUAAAAVa2V5QWRkcmVzc1RvdGFsSW5jb21lBQAAAApjYWxsZXJBZGRyBQAAABJuZXdDaGFyVG90YWxJbmNvbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAQa2V5TGFuZFB5cm9Qb3dlcgUAAAANY3VycmVudExhbmRJZAkAAZEAAAACBQAAABlsYW5kRWxlbVBvd2VyQWZ0ZXJMZWF2aW5nAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRBcXVhUG93ZXIFAAAADWN1cnJlbnRMYW5kSWQJAAGRAAAAAgUAAAAZbGFuZEVsZW1Qb3dlckFmdGVyTGVhdmluZwAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABFrZXlMYW5kVGVycmFQb3dlcgUAAAANY3VycmVudExhbmRJZAkAAZEAAAACBQAAABlsYW5kRWxlbVBvd2VyQWZ0ZXJMZWF2aW5nAAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRBZXJvUG93ZXIFAAAADWN1cnJlbnRMYW5kSWQJAAGRAAAAAgUAAAAZbGFuZEVsZW1Qb3dlckFmdGVyTGVhdmluZwAAAAAAAAAAAwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUAAAADbmlsBAAAABVqb2luaW5nTmV3TGFuZEFjdGlvbnMDCQEAAAACIT0AAAACBQAAAAluZXdMYW5kSWQAAAAAAAAAAAAEAAAAFGNoYXJSZXN0UGVyaW9kVXBkYXRlCQAD/AAAAAQFAAAACmJhdHRsZXNBcHACAAAAFnVwZGF0ZUxhc3RCYXR0bGVIZWlnaHQJAARMAAAAAgUAAAAGY2hhcklkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAUY2hhclJlc3RQZXJpb2RVcGRhdGUFAAAAFGNoYXJSZXN0UGVyaW9kVXBkYXRlBAAAAA5jaGFyUmVzdFBlcmlvZAQAAAAHJG1hdGNoMAUAAAAUY2hhclJlc3RQZXJpb2RVcGRhdGUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFaXNJbnQFAAAAByRtYXRjaDAFAAAABWlzSW50CQAAAgAAAAECAAAAG2NoYXJSZXN0UGVyaW9kVXBkYXRlIGZhaWxlZAQAAAATc2V0RXF1aXBtZW50UmVxdWVzdAkAA/wAAAAEBQAAAApiYXR0bGVzQXBwAgAAAAxzZXRFcXVpcG1lbnQJAARMAAAAAgUAAAAKY2FsbGVyQWRkcgkABEwAAAACBQAAAAZjaGFySWQJAARMAAAAAgUAAAAId2VhcG9uSWQJAARMAAAAAgUAAAAHYXJtb3JJZAkABEwAAAACBQAAAAdqZXdlbElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAATc2V0RXF1aXBtZW50UmVxdWVzdAUAAAATc2V0RXF1aXBtZW50UmVxdWVzdAQAAAATbmV3RXF1aXBtZW50RWZmZWN0cwQAAAAHJG1hdGNoMAUAAAATc2V0RXF1aXBtZW50UmVxdWVzdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAVpc1N0cgUAAAAHJG1hdGNoMAQAAAAKaXNTdHJTcGxpdAkABLUAAAACBQAAAAVpc1N0cgUAAAAJc2VwYXJhdG9yCQEAAAATZ2V0RXF1aXBtZW50RWZmZWN0cwAAAAEJAARMAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmlzU3RyU3BsaXQAAAAAAAAAAAAJAARMAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmlzU3RyU3BsaXQAAAAAAAAAAAEJAARMAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmlzU3RyU3BsaXQAAAAAAAAAAAIFAAAAA25pbAkAAAIAAAABAgAAAA9Xcm9uZyBlcXVpcG1lbnQEAAAAGWNoYXJFbGVtUG93ZXJBZnRlckpvaW5pbmcJAQAAABFjYWxjQ2hhckVsZW1Qb3dlcgAAAAIFAAAABmNoYXJJZAUAAAATbmV3RXF1aXBtZW50RWZmZWN0cwQAAAAZbGFuZEVsZW1Qb3dlckFmdGVySm9pbmluZwkBAAAAEWNhbGNMYW5kRWxlbVBvd2VyAAAABAUAAAAJbmV3TGFuZElkBgUAAAAZY2hhckVsZW1Qb3dlckFmdGVySm9pbmluZwUAAAATbmV3RXF1aXBtZW50RWZmZWN0cwQAAAAOY2hhckVsZW1TaGFyZXMJAQAAABJjYWxjQ2hhckVsZW1TaGFyZXMAAAACBQAAABljaGFyRWxlbVBvd2VyQWZ0ZXJKb2luaW5nBQAAABlsYW5kRWxlbVBvd2VyQWZ0ZXJKb2luaW5nCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRQeXJvUG93ZXIFAAAACW5ld0xhbmRJZAkAAZEAAAACBQAAABlsYW5kRWxlbVBvd2VyQWZ0ZXJKb2luaW5nAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUxhbmRBcXVhUG93ZXIFAAAACW5ld0xhbmRJZAkAAZEAAAACBQAAABlsYW5kRWxlbVBvd2VyQWZ0ZXJKb2luaW5nAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEWtleUxhbmRUZXJyYVBvd2VyBQAAAAluZXdMYW5kSWQJAAGRAAAAAgUAAAAZbGFuZEVsZW1Qb3dlckFmdGVySm9pbmluZwAAAAAAAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABBrZXlMYW5kQWVyb1Bvd2VyBQAAAAluZXdMYW5kSWQJAAGRAAAAAgUAAAAZbGFuZEVsZW1Qb3dlckFmdGVySm9pbmluZwAAAAAAAAAAAwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABhrZXlDaGFySW5pdGlhbFB5cm9TaGFyZXMFAAAABmNoYXJJZAkAAZEAAAACBQAAAA5jaGFyRWxlbVNoYXJlcwAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABhrZXlDaGFySW5pdGlhbEFxdWFTaGFyZXMFAAAABmNoYXJJZAkAAZEAAAACBQAAAA5jaGFyRWxlbVNoYXJlcwAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABlrZXlDaGFySW5pdGlhbFRlcnJhU2hhcmVzBQAAAAZjaGFySWQJAAGRAAAAAgUAAAAOY2hhckVsZW1TaGFyZXMAAAAAAAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAYa2V5Q2hhckluaXRpYWxBZXJvU2hhcmVzBQAAAAZjaGFySWQJAAGRAAAAAgUAAAAOY2hhckVsZW1TaGFyZXMAAAAAAAAAAAMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAja2V5Q2hhckluaXRpYWxMYW5kUHlyb0dyYW50ZWRUb2tlbnMFAAAABmNoYXJJZAkAAZEAAAACBQAAABFlbGVtR3JhbnRlZFRva2VucwAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAACNrZXlDaGFySW5pdGlhbExhbmRBcXVhR3JhbnRlZFRva2VucwUAAAAGY2hhcklkCQABkQAAAAIFAAAAEWVsZW1HcmFudGVkVG9rZW5zAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAJGtleUNoYXJJbml0aWFsTGFuZFRlcnJhR3JhbnRlZFRva2VucwUAAAAGY2hhcklkCQABkQAAAAIFAAAAEWVsZW1HcmFudGVkVG9rZW5zAAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAI2tleUNoYXJJbml0aWFsTGFuZEFlcm9HcmFudGVkVG9rZW5zBQAAAAZjaGFySWQJAAGRAAAAAgUAAAARZWxlbUdyYW50ZWRUb2tlbnMAAAAAAAAAAAMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAQa2V5Q2hhclB5cm9Qb3dlcgUAAAAGY2hhcklkCQABkQAAAAIFAAAAGWNoYXJFbGVtUG93ZXJBZnRlckpvaW5pbmcAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAQa2V5Q2hhckFxdWFQb3dlcgUAAAAGY2hhcklkCQABkQAAAAIFAAAAGWNoYXJFbGVtUG93ZXJBZnRlckpvaW5pbmcAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAARa2V5Q2hhclRlcnJhUG93ZXIFAAAABmNoYXJJZAkAAZEAAAACBQAAABljaGFyRWxlbVBvd2VyQWZ0ZXJKb2luaW5nAAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEGtleUNoYXJBZXJvUG93ZXIFAAAABmNoYXJJZAkAAZEAAAACBQAAABljaGFyRWxlbVBvd2VyQWZ0ZXJKb2luaW5nAAAAAAAAAAADBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQAAAAWcmVtb3ZlRXF1aXBtZW50UmVxdWVzdAkAA/wAAAAEBQAAAApiYXR0bGVzQXBwAgAAAA9yZW1vdmVFcXVpcG1lbnQJAARMAAAAAgUAAAAKY2FsbGVyQWRkcgkABEwAAAACBQAAAAZjaGFySWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABZyZW1vdmVFcXVpcG1lbnRSZXF1ZXN0BQAAABZyZW1vdmVFcXVpcG1lbnRSZXF1ZXN0BAAAABByZW1vdmVkRXF1aXBtZW50BAAAAAckbWF0Y2gwBQAAABZyZW1vdmVFcXVpcG1lbnRSZXF1ZXN0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABWlzU3RyBQAAAAckbWF0Y2gwBQAAAAVpc1N0cgkAAAIAAAABAgAAABhJc3N1ZSByZW1vdmluZyBlcXVpcG1lbnQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAABHdpdGgAAAACBQAAABhrZXlDaGFySW5pdGlhbFB5cm9TaGFyZXMFAAAABmNoYXJJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAEd2l0aAAAAAIFAAAAGGtleUNoYXJJbml0aWFsQXF1YVNoYXJlcwUAAAAGY2hhcklkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAR3aXRoAAAAAgUAAAAZa2V5Q2hhckluaXRpYWxUZXJyYVNoYXJlcwUAAAAGY2hhcklkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAR3aXRoAAAAAgUAAAAYa2V5Q2hhckluaXRpYWxBZXJvU2hhcmVzBQAAAAZjaGFySWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAABHdpdGgAAAACBQAAACNrZXlDaGFySW5pdGlhbExhbmRQeXJvR3JhbnRlZFRva2VucwUAAAAGY2hhcklkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAR3aXRoAAAAAgUAAAAja2V5Q2hhckluaXRpYWxMYW5kQXF1YUdyYW50ZWRUb2tlbnMFAAAABmNoYXJJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAEd2l0aAAAAAIFAAAAJGtleUNoYXJJbml0aWFsTGFuZFRlcnJhR3JhbnRlZFRva2VucwUAAAAGY2hhcklkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAR3aXRoAAAAAgUAAAAja2V5Q2hhckluaXRpYWxMYW5kQWVyb0dyYW50ZWRUb2tlbnMFAAAABmNoYXJJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAEd2l0aAAAAAIFAAAAEGtleUNoYXJQeXJvUG93ZXIFAAAABmNoYXJJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAEd2l0aAAAAAIFAAAAEGtleUNoYXJBcXVhUG93ZXIFAAAABmNoYXJJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAEd2l0aAAAAAIFAAAAEWtleUNoYXJUZXJyYVBvd2VyBQAAAAZjaGFySWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAABHdpdGgAAAACBQAAABBrZXlDaGFyQWVyb1Bvd2VyBQAAAAZjaGFySWQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAROAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAEmtleUNoYXJDdXJyZW50TGFuZAUAAAAGY2hhcklkBQAAAAluZXdMYW5kSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAia2V5TGFuZExhc3RUb2tlbkRpc3RyaWJ1dGlvblVwZGF0ZQUAAAANY3VycmVudExhbmRJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAHWtleUxhbmRQeXJvVG90YWxHcmFudGVkVG9rZW5zBQAAAA1jdXJyZW50TGFuZElkCQABkQAAAAIFAAAAEWVsZW1HcmFudGVkVG9rZW5zAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAHWtleUxhbmRBcXVhVG90YWxHcmFudGVkVG9rZW5zBQAAAA1jdXJyZW50TGFuZElkCQABkQAAAAIFAAAAEWVsZW1HcmFudGVkVG9rZW5zAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAEd2l0aAAAAAIFAAAAHmtleUxhbmRUZXJyYVRvdGFsR3JhbnRlZFRva2VucwUAAAANY3VycmVudExhbmRJZAkAAZEAAAACBQAAABFlbGVtR3JhbnRlZFRva2VucwAAAAAAAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAAB1rZXlMYW5kQWVyb1RvdGFsR3JhbnRlZFRva2VucwUAAAANY3VycmVudExhbmRJZAkAAZEAAAACBQAAABFlbGVtR3JhbnRlZFRva2VucwAAAAAAAAAAAwUAAAADbmlsBQAAABVqb2luaW5nTmV3TGFuZEFjdGlvbnMFAAAAGWxlYXZpbmdDdXJyZW50TGFuZEFjdGlvbnMAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleY/g8pY=", "height": 2064464, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J6CdtCk4bLD8Sb8iihxPxJ4qHbpqd3N3ai85pWXZrarj Next: 8raB13H7iiRDBpMvHeV8tAVEkmDDufoCPsqJ4CJrMuXC Diff:
OldNewDifferences
217217
218218 func calcLandElemGrantedTokens (landId,landElemPower) = {
219219 let landTokenEmissionPerBlock = fraction(10000, getIntegerValue(govApp, keyTokenEmissionRate), getIntegerValue(govApp, keyTotalLands))
220- let lastUpdateHeight = getIntegerValue(this, with(keyLandLastTokenDistributionUpdate, landId))
220+ let lastUpdateHeight = valueOrElse(getInteger(this, with(keyLandLastTokenDistributionUpdate, landId)), height)
221221 let landGrantedTokens = ((height - lastUpdateHeight) * landTokenEmissionPerBlock)
222- let totalPower = (((landElemPower[0] + landElemPower[1]) + landElemPower[2]) + landElemPower[3])
223- let pyroNewGrantedTokens = fraction(fraction(10000, landElemPower[0], totalPower), landGrantedTokens, 10000)
224- let aquaNewGrantedTokens = fraction(fraction(10000, landElemPower[1], totalPower), landGrantedTokens, 10000)
225- let terraNewGrantedTokens = fraction(fraction(10000, landElemPower[2], totalPower), landGrantedTokens, 10000)
226- let aeroNewGrantedTokens = fraction(fraction(10000, landElemPower[3], totalPower), landGrantedTokens, 10000)
227222 let pyroCurrentTotal = valueOrElse(getInteger(this, with(keyLandPyroTotalGrantedTokens, landId)), 0)
228223 let aquaCurrentTotal = valueOrElse(getInteger(this, with(keyLandAquaTotalGrantedTokens, landId)), 0)
229224 let terraCurrentTotal = valueOrElse(getInteger(this, with(keyLandTerraTotalGrantedTokens, landId)), 0)
230225 let aeroCurrentTotal = valueOrElse(getInteger(this, with(keyLandAeroTotalGrantedTokens, landId)), 0)
226+ if ((landGrantedTokens != 0))
227+ then {
228+ let totalPower = (((landElemPower[0] + landElemPower[1]) + landElemPower[2]) + landElemPower[3])
229+ let pyroNewGrantedTokens = fraction(fraction(10000, landElemPower[0], totalPower), landGrantedTokens, 10000)
230+ let aquaNewGrantedTokens = fraction(fraction(10000, landElemPower[1], totalPower), landGrantedTokens, 10000)
231+ let terraNewGrantedTokens = fraction(fraction(10000, landElemPower[2], totalPower), landGrantedTokens, 10000)
232+ let aeroNewGrantedTokens = fraction(fraction(10000, landElemPower[3], totalPower), landGrantedTokens, 10000)
231233 [(pyroCurrentTotal + pyroNewGrantedTokens), (aquaCurrentTotal + aquaNewGrantedTokens), (terraCurrentTotal + terraNewGrantedTokens), (aeroCurrentTotal + aeroNewGrantedTokens)]
234+ }
235+ else [pyroCurrentTotal, aquaCurrentTotal, terraCurrentTotal, aeroCurrentTotal]
232236 }
233237
234238
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "_"
55
66 let govApp = addressFromStringValue("3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG")
77
88 let charsApp = addressFromStringValue("3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ")
99
1010 let landsApp = addressFromStringValue("3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn")
1111
1212 let battlesApp = addressFromStringValue("3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp")
1313
1414 let keyEcosystemAddresses = "ecosystem_addresses"
1515
1616 let keyTokenId = "token_id"
1717
1818 let keyTokenEmissionRate = "token_emission_rate"
1919
2020 let keyTokenGenerated = "token_generated"
2121
2222 let keyTokenGeneratedLastUpdate = "token_generated_last_update"
2323
2424 let keyCharsBodyAmount = "chars_body_amount"
2525
2626 let keyCharsEyesAmount = "chars_eyes_amount"
2727
2828 let keyCharsMouthAmount = "chars_mouth_amount"
2929
3030 let keyCharsStatsTiersRanges = "chars_stats_tiers_ranges"
3131
3232 let keyCharsNaturalElemBonusRanges = "chars_natural_elem_bonus_ranges"
3333
3434 let keyCharsNaturalBattleBonusRanges = "chars_natural_battle_bonus_ranges"
3535
3636 let keyCharsNaturalGeneratingBonusRanges = "chars_natural_generating_bonus_ranges"
3737
3838 let keyTotalLands = "total_lands"
3939
4040 let keyBattleRestPeriod = "battle_rest_period"
4141
4242 let keyBattleWinChanceHardcap = "battle_win_chance_hardcap"
4343
4444 let keyBattleWinChanceIncrPerBlock = "battle_win_chance_incr_per_block"
4545
4646 let keyBattleLootRarityRanges = "battle_loot_rarity_ranges"
4747
4848 let keyItemsCategories = "items_categories"
4949
5050 let keyItemsTypesPerCat = "items_types_per_cat"
5151
5252 let keyItemsEffectsAmount = "items_effects_amount"
5353
5454 let keyitemsEffectsMaxRanges = "items_effects_max_range"
5555
5656 let keyCharsCount = "chars_count"
5757
5858 let keyOwner = "owner"
5959
6060 let keyAppearance = "appearance"
6161
6262 let keyNaturalPyroBonus = "natural_pyro_bonus"
6363
6464 let keyNaturalAquaBonus = "natural_aqua_bonus"
6565
6666 let keyNaturalTerraBonus = "natural_terra_bonus"
6767
6868 let keyNaturalAeroBonus = "natural_aero_bonus"
6969
7070 let keyNaturalBattleBonus = "natural_battle_bonus"
7171
7272 let keyNaturalGeneratingBonus = "natural_generating_bonus"
7373
7474 let keyCharCurrentLand = "char_current_land"
7575
7676 let keyLandPyroPower = "land_pyro_power"
7777
7878 let keyLandAquaPower = "land_aqua_power"
7979
8080 let keyLandTerraPower = "land_terra_power"
8181
8282 let keyLandAeroPower = "land_aero_power"
8383
8484 let keyCharTotalIncome = "char_total_income"
8585
8686 let keyAddressTotalIncome = "address_total_income"
8787
8888 let keyCharPyroPower = "char_pyro_power"
8989
9090 let keyCharAquaPower = "char_aqua_power"
9191
9292 let keyCharTerraPower = "char_terra_power"
9393
9494 let keyCharAeroPower = "char_aero_power"
9595
9696 let keyCharInitialPyroShares = "char_initial_pyro_shares"
9797
9898 let keyCharInitialAquaShares = "char_initial_aqua_shares"
9999
100100 let keyCharInitialTerraShares = "char_initial_terra_shares"
101101
102102 let keyCharInitialAeroShares = "char_initial_aero_shares"
103103
104104 let keyCharInitialLandPyroGrantedTokens = "char_initial_land_pyro_granted_tokens"
105105
106106 let keyCharInitialLandAquaGrantedTokens = "char_initial_land_aqua_granted_tokens"
107107
108108 let keyCharInitialLandTerraGrantedTokens = "char_initial_land_terra_granted_tokens"
109109
110110 let keyCharInitialLandAeroGrantedTokens = "char_initial_land_aero_granted_tokens"
111111
112112 let keyLandLastTokenDistributionUpdate = "land_mast_token_distribution_update"
113113
114114 let keyLandPyroTotalGrantedTokens = "land_pyro_total_granted_tokens"
115115
116116 let keyLandAquaTotalGrantedTokens = "land_aqua_total_granted_tokens"
117117
118118 let keyLandTerraTotalGrantedTokens = "land_terra_total_granted_tokens"
119119
120120 let keyLandAeroTotalGrantedTokens = "land_aero_total_granted_tokens"
121121
122122 let keyLastBattleHeight = "last_battle_height"
123123
124124 let keyItemsCount = "items_count"
125125
126126 let keyItemOwner = "item_owner"
127127
128128 let keyItemCategory = "item_category"
129129
130130 let keyItemType = "item_type"
131131
132132 let keyItemEffects = "item_effects"
133133
134134 let keyItemIsEquippedBy = "item_is_equipped_by"
135135
136136 let keyCharWeapon = "char_weapon"
137137
138138 let keyCharArmor = "char_armor"
139139
140140 let keyCharJewel = "char_jewel"
141141
142142 let keyItemEffectsValuesPerTypes = "item_effects_values_per_types"
143143
144144 func invokeChecks (callerAddr) = if ((isDataStorageUntouched(govApp) != false))
145145 then throw("Governing app not ready")
146146 else {
147147 let ecosystemAddresses = getStringValue(govApp, keyEcosystemAddresses)
148148 if ((contains(ecosystemAddresses, toString(callerAddr)) != false))
149149 then throw("Access denied")
150150 else true
151151 }
152152
153153
154154 func ecosystemCheck (caller) = if ((contains(getStringValue(this, keyEcosystemAddresses), toBase58String(caller.bytes)) != true))
155155 then throw("Access denied ")
156156 else true
157157
158158
159159 func with (a,b) = makeString([toString(b), a], separator)
160160
161161
162162 func withStr (a,b) = makeString([b, a], separator)
163163
164164
165165 func randInt (min,max,txId,nonce) = {
166166 let hash = value(sha256_16Kb(((value(value(blockInfoByHeight(height)).vrf) + txId) + toBytes(nonce))))
167167 value(((value(toInt(hash)) % ((max - min) + 1)) + min))
168168 }
169169
170170
171171 let shareDecimals = 1000000000000000000
172172
173173 func calcCharElemPower (charId,equipmentEffects) = {
174174 let naturalElemBonus = [getIntegerValue(charsApp, with(keyNaturalPyroBonus, charId)), getIntegerValue(charsApp, with(keyNaturalAquaBonus, charId)), getIntegerValue(charsApp, with(keyNaturalTerraBonus, charId)), getIntegerValue(charsApp, with(keyNaturalAeroBonus, charId))]
175175 let powerFromEffects = [(((((equipmentEffects[0][9] + equipmentEffects[1][9]) + equipmentEffects[2][9]) - equipmentEffects[0][13]) - equipmentEffects[1][13]) - equipmentEffects[2][13]), (((((equipmentEffects[0][10] + equipmentEffects[1][10]) + equipmentEffects[2][10]) - equipmentEffects[0][14]) - equipmentEffects[1][14]) - equipmentEffects[2][14]), (((((equipmentEffects[0][11] + equipmentEffects[1][11]) + equipmentEffects[2][11]) - equipmentEffects[0][15]) - equipmentEffects[1][15]) - equipmentEffects[2][15]), (((((equipmentEffects[0][12] + equipmentEffects[1][12]) + equipmentEffects[2][12]) - equipmentEffects[0][16]) - equipmentEffects[1][16]) - equipmentEffects[2][16])]
176176 [(powerFromEffects[0] + fraction(powerFromEffects[0], naturalElemBonus[0], 10000)), (powerFromEffects[1] + fraction(powerFromEffects[1], naturalElemBonus[1], 10000)), (powerFromEffects[2] + fraction(powerFromEffects[2], naturalElemBonus[2], 10000)), (powerFromEffects[3] + fraction(powerFromEffects[3], naturalElemBonus[3], 10000))]
177177 }
178178
179179
180180 func calcCharElemShares (charElemPower,landElemPower) = [fraction(shareDecimals, charElemPower[0], landElemPower[0]), fraction(shareDecimals, charElemPower[1], landElemPower[1]), fraction(shareDecimals, charElemPower[2], landElemPower[2]), fraction(shareDecimals, charElemPower[3], landElemPower[3])]
181181
182182
183183 func getCharElemPower (charId) = [getIntegerValue(this, with(keyCharPyroPower, charId)), getIntegerValue(this, with(keyCharAquaPower, charId)), getIntegerValue(this, with(keyCharTerraPower, charId)), getIntegerValue(this, with(keyCharAeroPower, charId))]
184184
185185
186186 func getLandElemPower (landId) = [valueOrElse(getInteger(this, with(keyLandPyroPower, landId)), 1), valueOrElse(getInteger(this, with(keyLandAquaPower, landId)), 1), valueOrElse(getInteger(this, with(keyLandTerraPower, landId)), 1), valueOrElse(getInteger(this, with(keyLandAeroPower, landId)), 1)]
187187
188188
189189 func calcLandElemPower (landId,charIsJoiningOrLeaving,charElemPower,equipmentEffects) = {
190190 let currentElemPowers = getLandElemPower(landId)
191191 let powerFromEffects = [(((((equipmentEffects[0][1] + equipmentEffects[1][1]) + equipmentEffects[2][1]) - equipmentEffects[0][5]) - equipmentEffects[1][5]) - equipmentEffects[2][5]), (((((equipmentEffects[0][2] + equipmentEffects[1][2]) + equipmentEffects[2][2]) - equipmentEffects[0][6]) - equipmentEffects[1][6]) - equipmentEffects[2][6]), (((((equipmentEffects[0][3] + equipmentEffects[1][3]) + equipmentEffects[2][3]) - equipmentEffects[0][7]) - equipmentEffects[1][7]) - equipmentEffects[2][7]), (((((equipmentEffects[0][4] + equipmentEffects[1][4]) + equipmentEffects[2][4]) - equipmentEffects[0][8]) - equipmentEffects[1][8]) - equipmentEffects[2][8])]
192192 if (charIsJoiningOrLeaving)
193193 then [((currentElemPowers[0] + charElemPower[0]) + powerFromEffects[0]), ((currentElemPowers[1] + charElemPower[1]) + powerFromEffects[1]), ((currentElemPowers[2] + charElemPower[2]) + powerFromEffects[2]), ((currentElemPowers[3] + charElemPower[3]) + powerFromEffects[3])]
194194 else [((currentElemPowers[0] - charElemPower[0]) - powerFromEffects[0]), ((currentElemPowers[1] - charElemPower[1]) - powerFromEffects[1]), ((currentElemPowers[2] - charElemPower[2]) - powerFromEffects[2]), ((currentElemPowers[3] - charElemPower[3]) - powerFromEffects[3])]
195195 }
196196
197197
198198 func calcCharIncome (charId,landElemPower,charElemPower,elemGrantedTokens) = {
199199 let currentCharElemShares = calcCharElemShares(charElemPower, landElemPower)
200200 let averageElemShares = [((getIntegerValue(this, with(keyCharInitialPyroShares, charId)) + currentCharElemShares[0]) / 2), ((getIntegerValue(this, with(keyCharInitialAquaShares, charId)) + currentCharElemShares[1]) / 2), ((getIntegerValue(this, with(keyCharInitialTerraShares, charId)) + currentCharElemShares[2]) / 2), ((getIntegerValue(this, with(keyCharInitialAeroShares, charId)) + currentCharElemShares[3]) / 2)]
201201 let eligibleGrantedTokens = [(elemGrantedTokens[0] - getIntegerValue(this, with(keyCharInitialLandPyroGrantedTokens, charId))), (elemGrantedTokens[1] - getIntegerValue(this, with(keyCharInitialLandAquaGrantedTokens, charId))), (elemGrantedTokens[2] - getIntegerValue(this, with(keyCharInitialLandTerraGrantedTokens, charId))), (elemGrantedTokens[3] - getIntegerValue(this, with(keyCharInitialLandAeroGrantedTokens, charId)))]
202202 (((fraction(eligibleGrantedTokens[0], averageElemShares[0], shareDecimals) + fraction(eligibleGrantedTokens[1], averageElemShares[1], shareDecimals)) + fraction(eligibleGrantedTokens[2], averageElemShares[2], shareDecimals)) + fraction(eligibleGrantedTokens[3], averageElemShares[3], shareDecimals))
203203 }
204204
205205
206206 func getEquipmentEffects (equipment) = {
207207 func getItemEffects (itemId) = if ((itemId != 0))
208208 then {
209209 let itemEffects = split(getStringValue(battlesApp, with(keyItemEffectsValuesPerTypes, itemId)), separator)
210210 [parseIntValue(itemEffects[0]), parseIntValue(itemEffects[1]), parseIntValue(itemEffects[2]), parseIntValue(itemEffects[3]), parseIntValue(itemEffects[4]), parseIntValue(itemEffects[5]), parseIntValue(itemEffects[6]), parseIntValue(itemEffects[7]), parseIntValue(itemEffects[8]), parseIntValue(itemEffects[9]), parseIntValue(itemEffects[10]), parseIntValue(itemEffects[11]), parseIntValue(itemEffects[12]), parseIntValue(itemEffects[13]), parseIntValue(itemEffects[14]), parseIntValue(itemEffects[15]), parseIntValue(itemEffects[16]), parseIntValue(itemEffects[17]), parseIntValue(itemEffects[18]), parseIntValue(itemEffects[19]), parseIntValue(itemEffects[20]), parseIntValue(itemEffects[21]), parseIntValue(itemEffects[22]), parseIntValue(itemEffects[23]), parseIntValue(itemEffects[24]), parseIntValue(itemEffects[25]), parseIntValue(itemEffects[26]), parseIntValue(itemEffects[27]), parseIntValue(itemEffects[28]), parseIntValue(itemEffects[29]), parseIntValue(itemEffects[30]), parseIntValue(itemEffects[31]), parseIntValue(itemEffects[32])]
211211 }
212212 else [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
213213
214214 [getItemEffects(equipment[0]), getItemEffects(equipment[1]), getItemEffects(equipment[2])]
215215 }
216216
217217
218218 func calcLandElemGrantedTokens (landId,landElemPower) = {
219219 let landTokenEmissionPerBlock = fraction(10000, getIntegerValue(govApp, keyTokenEmissionRate), getIntegerValue(govApp, keyTotalLands))
220- let lastUpdateHeight = getIntegerValue(this, with(keyLandLastTokenDistributionUpdate, landId))
220+ let lastUpdateHeight = valueOrElse(getInteger(this, with(keyLandLastTokenDistributionUpdate, landId)), height)
221221 let landGrantedTokens = ((height - lastUpdateHeight) * landTokenEmissionPerBlock)
222- let totalPower = (((landElemPower[0] + landElemPower[1]) + landElemPower[2]) + landElemPower[3])
223- let pyroNewGrantedTokens = fraction(fraction(10000, landElemPower[0], totalPower), landGrantedTokens, 10000)
224- let aquaNewGrantedTokens = fraction(fraction(10000, landElemPower[1], totalPower), landGrantedTokens, 10000)
225- let terraNewGrantedTokens = fraction(fraction(10000, landElemPower[2], totalPower), landGrantedTokens, 10000)
226- let aeroNewGrantedTokens = fraction(fraction(10000, landElemPower[3], totalPower), landGrantedTokens, 10000)
227222 let pyroCurrentTotal = valueOrElse(getInteger(this, with(keyLandPyroTotalGrantedTokens, landId)), 0)
228223 let aquaCurrentTotal = valueOrElse(getInteger(this, with(keyLandAquaTotalGrantedTokens, landId)), 0)
229224 let terraCurrentTotal = valueOrElse(getInteger(this, with(keyLandTerraTotalGrantedTokens, landId)), 0)
230225 let aeroCurrentTotal = valueOrElse(getInteger(this, with(keyLandAeroTotalGrantedTokens, landId)), 0)
226+ if ((landGrantedTokens != 0))
227+ then {
228+ let totalPower = (((landElemPower[0] + landElemPower[1]) + landElemPower[2]) + landElemPower[3])
229+ let pyroNewGrantedTokens = fraction(fraction(10000, landElemPower[0], totalPower), landGrantedTokens, 10000)
230+ let aquaNewGrantedTokens = fraction(fraction(10000, landElemPower[1], totalPower), landGrantedTokens, 10000)
231+ let terraNewGrantedTokens = fraction(fraction(10000, landElemPower[2], totalPower), landGrantedTokens, 10000)
232+ let aeroNewGrantedTokens = fraction(fraction(10000, landElemPower[3], totalPower), landGrantedTokens, 10000)
231233 [(pyroCurrentTotal + pyroNewGrantedTokens), (aquaCurrentTotal + aquaNewGrantedTokens), (terraCurrentTotal + terraNewGrantedTokens), (aeroCurrentTotal + aeroNewGrantedTokens)]
234+ }
235+ else [pyroCurrentTotal, aquaCurrentTotal, terraCurrentTotal, aeroCurrentTotal]
232236 }
233237
234238
235239 @Callable(i)
236240 func charMovingLand (charId,newLandId,weaponId,armorId,jewelId) = if (!(invokeChecks(i.caller)))
237241 then throw()
238242 else {
239243 let callerAddr = toBase58String(i.caller.bytes)
240244 if ((getStringValue(charsApp, with(keyOwner, charId)) != callerAddr))
241245 then throw("Caller doesn't own this char")
242246 else if (if ((0 > newLandId))
243247 then true
244248 else (newLandId > getIntegerValue(govApp, keyTotalLands)))
245249 then throw("Not a land")
246250 else {
247251 let currentLandId = valueOrElse(getInteger(this, with(keyCharCurrentLand, charId)), 0)
248252 if ((currentLandId == newLandId))
249253 then throw("Char already on that land")
250254 else {
251255 let currentLandElemPower = getLandElemPower(currentLandId)
252256 let elemGrantedTokens = calcLandElemGrantedTokens(currentLandId, currentLandElemPower)
253257 let leavingCurrentLandActions = if ((currentLandId != 0))
254258 then {
255259 let currentEquipmentEffects = getEquipmentEffects([getIntegerValue(battlesApp, with(keyCharWeapon, charId)), getIntegerValue(battlesApp, with(keyCharArmor, charId)), getIntegerValue(battlesApp, with(keyCharJewel, charId))])
256260 let currentCharElemPower = getCharElemPower(charId)
257261 let sendTokensToApp = invoke(govApp, "sendTokenstoApp", [calcCharIncome(charId, currentLandElemPower, currentCharElemPower, elemGrantedTokens)], nil)
258262 if ((sendTokensToApp == sendTokensToApp))
259263 then {
260264 let charTokenIncome = match sendTokensToApp {
261265 case isInt: Int =>
262266 isInt
263267 case _ =>
264268 throw("Invoke issue")
265269 }
266270 let newCharTotalIncome = (valueOrElse(getInteger(this, with(keyCharTotalIncome, charId)), 0) + charTokenIncome)
267271 let newAddressTotalIncome = (valueOrElse(getInteger(this, withStr(keyAddressTotalIncome, callerAddr)), 0) + charTokenIncome)
268272 let landElemPowerAfterLeaving = calcLandElemPower(currentLandId, false, currentCharElemPower, currentEquipmentEffects)
269273 [ScriptTransfer(i.caller, charTokenIncome, getBinaryValue(govApp, keyTokenId)), IntegerEntry(with(keyCharTotalIncome, charId), newCharTotalIncome), IntegerEntry(withStr(keyAddressTotalIncome, callerAddr), newCharTotalIncome), IntegerEntry(with(keyLandPyroPower, currentLandId), landElemPowerAfterLeaving[0]), IntegerEntry(with(keyLandAquaPower, currentLandId), landElemPowerAfterLeaving[1]), IntegerEntry(with(keyLandTerraPower, currentLandId), landElemPowerAfterLeaving[2]), IntegerEntry(with(keyLandAeroPower, currentLandId), landElemPowerAfterLeaving[3])]
270274 }
271275 else throw("Strict value is not equal to itself.")
272276 }
273277 else nil
274278 let joiningNewLandActions = if ((newLandId != 0))
275279 then {
276280 let charRestPeriodUpdate = invoke(battlesApp, "updateLastBattleHeight", [charId], nil)
277281 if ((charRestPeriodUpdate == charRestPeriodUpdate))
278282 then {
279283 let charRestPeriod = match charRestPeriodUpdate {
280284 case isInt: Int =>
281285 isInt
282286 case _ =>
283287 throw("charRestPeriodUpdate failed")
284288 }
285289 let setEquipmentRequest = invoke(battlesApp, "setEquipment", [callerAddr, charId, weaponId, armorId, jewelId], nil)
286290 if ((setEquipmentRequest == setEquipmentRequest))
287291 then {
288292 let newEquipmentEffects = match setEquipmentRequest {
289293 case isStr: String =>
290294 let isStrSplit = split(isStr, separator)
291295 getEquipmentEffects([parseIntValue(isStrSplit[0]), parseIntValue(isStrSplit[1]), parseIntValue(isStrSplit[2])])
292296 case _ =>
293297 throw("Wrong equipment")
294298 }
295299 let charElemPowerAfterJoining = calcCharElemPower(charId, newEquipmentEffects)
296300 let landElemPowerAfterJoining = calcLandElemPower(newLandId, true, charElemPowerAfterJoining, newEquipmentEffects)
297301 let charElemShares = calcCharElemShares(charElemPowerAfterJoining, landElemPowerAfterJoining)
298302 [IntegerEntry(with(keyLandPyroPower, newLandId), landElemPowerAfterJoining[0]), IntegerEntry(with(keyLandAquaPower, newLandId), landElemPowerAfterJoining[1]), IntegerEntry(with(keyLandTerraPower, newLandId), landElemPowerAfterJoining[2]), IntegerEntry(with(keyLandAeroPower, newLandId), landElemPowerAfterJoining[3]), IntegerEntry(with(keyCharInitialPyroShares, charId), charElemShares[0]), IntegerEntry(with(keyCharInitialAquaShares, charId), charElemShares[1]), IntegerEntry(with(keyCharInitialTerraShares, charId), charElemShares[2]), IntegerEntry(with(keyCharInitialAeroShares, charId), charElemShares[3]), IntegerEntry(with(keyCharInitialLandPyroGrantedTokens, charId), elemGrantedTokens[0]), IntegerEntry(with(keyCharInitialLandAquaGrantedTokens, charId), elemGrantedTokens[1]), IntegerEntry(with(keyCharInitialLandTerraGrantedTokens, charId), elemGrantedTokens[2]), IntegerEntry(with(keyCharInitialLandAeroGrantedTokens, charId), elemGrantedTokens[3]), IntegerEntry(with(keyCharPyroPower, charId), charElemPowerAfterJoining[0]), IntegerEntry(with(keyCharAquaPower, charId), charElemPowerAfterJoining[1]), IntegerEntry(with(keyCharTerraPower, charId), charElemPowerAfterJoining[2]), IntegerEntry(with(keyCharAeroPower, charId), charElemPowerAfterJoining[3])]
299303 }
300304 else throw("Strict value is not equal to itself.")
301305 }
302306 else throw("Strict value is not equal to itself.")
303307 }
304308 else {
305309 let removeEquipmentRequest = invoke(battlesApp, "removeEquipment", [callerAddr, charId], nil)
306310 if ((removeEquipmentRequest == removeEquipmentRequest))
307311 then {
308312 let removedEquipment = match removeEquipmentRequest {
309313 case isStr: String =>
310314 isStr
311315 case _ =>
312316 throw("Issue removing equipment")
313317 }
314318 [DeleteEntry(with(keyCharInitialPyroShares, charId)), DeleteEntry(with(keyCharInitialAquaShares, charId)), DeleteEntry(with(keyCharInitialTerraShares, charId)), DeleteEntry(with(keyCharInitialAeroShares, charId)), DeleteEntry(with(keyCharInitialLandPyroGrantedTokens, charId)), DeleteEntry(with(keyCharInitialLandAquaGrantedTokens, charId)), DeleteEntry(with(keyCharInitialLandTerraGrantedTokens, charId)), DeleteEntry(with(keyCharInitialLandAeroGrantedTokens, charId)), DeleteEntry(with(keyCharPyroPower, charId)), DeleteEntry(with(keyCharAquaPower, charId)), DeleteEntry(with(keyCharTerraPower, charId)), DeleteEntry(with(keyCharAeroPower, charId))]
315319 }
316320 else throw("Strict value is not equal to itself.")
317321 }
318322 (([IntegerEntry(with(keyCharCurrentLand, charId), newLandId), IntegerEntry(with(keyLandLastTokenDistributionUpdate, currentLandId), height), IntegerEntry(with(keyLandPyroTotalGrantedTokens, currentLandId), elemGrantedTokens[0]), IntegerEntry(with(keyLandAquaTotalGrantedTokens, currentLandId), elemGrantedTokens[1]), IntegerEntry(with(keyLandTerraTotalGrantedTokens, currentLandId), elemGrantedTokens[2]), IntegerEntry(with(keyLandAeroTotalGrantedTokens, currentLandId), elemGrantedTokens[3])] ++ joiningNewLandActions) ++ leavingCurrentLandActions)
319323 }
320324 }
321325 }
322326
323327
324328 @Verifier(tx)
325329 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
326330

github/deemru/w8io/169f3d6 
57.36 ms