tx · JB12vMuVWqZxXqS7ciXoKer2SNFgmjDBMxXQjF9DSX3e

3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy:  -0.01600000 Waves

2023.03.13 13:18 [2488123] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves

{ "type": 13, "id": "JB12vMuVWqZxXqS7ciXoKer2SNFgmjDBMxXQjF9DSX3e", "fee": 1600000, "feeAssetId": null, "timestamp": 1678702763840, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "4EsNBYfM7eAozWh1z4gfAWe8iiBczpBEuUGwtM1jZzPh2ycRfVabsieHByLinbZ5faU8xtJV3Cv2artjP1uWpHMP" ], "script": "base64:BgI5CAISBQoDCAgIEgMKAQgSBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEYOQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZG5Bc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QMJAAACAQFUBQckbWF0Y2gwASD3dur394PKZdtuE+4CO89YKZWpwdGN8kvabNgdYoDI3gkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAMbrwL8XAwkAAAIBAVQFByRtYXRjaDAA8M2JHgkAAgECDVVua25vd24gY2hhaW4ACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sAA1NFUAICX18ACkFSVFBSRVNBTEUCB1BSRVNBTEUAD0RBSUxZUkVTQllQSUVDRQCA+NIBAAlEQVlNSUxMSVMAgLiZKQAGTlVNUkVTAAYABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMACHdoSWR4Vm9sAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcAEUlkeENmZ1N0YWtpbmdEYXBwAAEAEUlkeENmZ0Vjb25vbXlEYXBwAAIAFElkeENmZ0dvdmVybmFuY2VEYXBwAAMBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAARFyZWFkUmVzdENmZ09yRmFpbAAJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAD2Vjb25vbXlDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwABJnb3Zlcm5hbmNlQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIgc3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcl8FB25mdFR5cGUCAV8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKd2FyZUhvdXNlXwULbGFuZEFzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBDWtleUR1Y2tIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICC2R1Y2tIZWFsdGhfBQtkdWNrQXNzZXRJZAEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICDWxhbmRBcnRTdGF0dXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BH2tleVByZXNhbGVBcnRBY3RpdmF0ZWRCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIUcHJlc2FsZUFydEFjdGl2YXRlZF8FB2Fzc2V0SWQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nARJhc0xpc3RJbnRDb21wYWN0ZWQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55TGlzdAUHJG1hdGNoMAMJAQIhPQIJAJADAQUKdmFsQW55TGlzdAUGTlVNUkVTCQACAQkArAICAg5BcnJheSBzaXplIGlzIAkApAMBCQCQAwEFCnZhbEFueUxpc3QKAQRjb252AgNhY2MEaXRlbQQHJG1hdGNoMQUEaXRlbQMJAAECBQckbWF0Y2gxAgNJbnQEAml0BQckbWF0Y2gxCQDNCAIFA2FjYwkApAMBBQJpdAkAAgECFExpc3QgdHlwZSBpcyBub3QgSW50BAFyCgACJGwFCnZhbEFueUxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGNvbnYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJALkJAgUBcgIBXwkAAgECFmZhaWwgdG8gY2FzdCBpbnRvIExpc3QBDWFzU3BsaXRSZXN1bHQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACFihMaXN0W0FueV0sIExpc3RbQW55XSkEAnQyBQckbWF0Y2gwCQCUCgIJARJhc0xpc3RJbnRDb21wYWN0ZWQBCAUCdDICXzEJARJhc0xpc3RJbnRDb21wYWN0ZWQBCAUCdDICXzIJAAIBAh5mYWlsIHRvIGNhc3QgaW50byAoTGlzdCwgTGlzdCkBDndhbGxldEludGVybmFsAQ51c2VyQWRkcmVzc09wdAQEYWRkcgkApggBBQ51c2VyQWRkcmVzc09wdAQHYmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDvBwEJAQV2YWx1ZQEFBGFkZHIJAQ5CYWxhbmNlRGV0YWlscwQAAAAAAAAAAAQLdXNkbkJhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA8AcCCQEFdmFsdWUBBQRhZGRyBQt1c2RuQXNzZXRJZAAACQC5CQIJAMwIAgIGJXMlZCVkCQDMCAICBndhbGxldAkAzAgCCQCkAwEIBQdiYWxhbmNlCWF2YWlsYWJsZQkAzAgCCQCkAwEFC3VzZG5CYWxhbmNlBQNuaWwFA1NFUAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9zdGFraW5nQ29udHJhY3QJAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQULbGFuZEFzc2V0SWQHBQZwaWVjZXMAAAkAlQoDBQppbmZyYUxldmVsBQlhcnRQaWVjZXMJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQppbmZyYUxldmVsAAQJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGgCBQlhcnRQaWVjZXMAAwkAaAIFBnBpZWNlcwAUAQ9udW1QaWVjZXNCeVNpemUBCGxhbmRTaXplBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwBQVTU0laRQMJAAACAgFNBQckbWF0Y2gwBQVNU0laRQMJAAACAgFMBQckbWF0Y2gwBQVMU0laRQMJAAACAgJYTAUHJG1hdGNoMAUGWExTSVpFAwkAAAICA1hYTAUHJG1hdGNoMAUHWFhMU0laRQkAAgECEVVua25vd24gbGFuZCBzaXplAQxnZXRXYXJlaG91c2UDBXdoS2V5CWxhbmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAFwCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFd2hLZXkJAKwCAgUJdm9sUHJlZml4Ahk6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6AgE6CQDMCAIJAJEDAgUBcAUId2hJZHhWb2wJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCHdoSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCHdoSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJd2hJZHhQcm9kBQNuaWwBDWR1Y2tJbmZvVHVwbGUBC2R1Y2tBc3NldElkCQCXCgUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2R1Y2tBc3NldElkAP///////////wEICQEFdmFsdWUBCQDsBwEJANkEAQULZHVja0Fzc2V0SWQEbmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAIACQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAD///////////8BCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAITZ2V0QmFja3BhY2tSRUFET05MWQkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWR1Y2tJbmZvQXJyYXkDC2R1Y2tBc3NldElkBW93bmVyB2R1Y2tJbmYJAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2R1Y2tBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQgFB2R1Y2tJbmYCXzEJAMwIAgkArAICAgwlcyVzX19uYW1lX18IBQdkdWNrSW5mAl8yCQDMCAIJAKwCAgIQJXMlc19fbG9jYXRpb25fXwgFB2R1Y2tJbmYCXzMJAMwIAgkArAICAg4lcyVkX19oZWFsdGhfXwkApAMBCAUHZHVja0luZgJfNAkAzAgCCQCsAgICECVzJXNfX2JhY2tQYWNrX18IBQdkdWNrSW5mAl81BQNuaWwBDWxhbmRJbmZvQXJyYXkDC2xhbmRBc3NldElkBW93bmVyCnN0YWtlZFRpbWUDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EB2xhbmROdW0DCQBmAggFAWEIcXVhbnRpdHkAAAkAkQMCBQFkBQpyZWNMYW5kTnVtCQCsAgICAS0JAJEDAgUBZAUKcmVjTGFuZE51bQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCnN0YWtlZFRpbWUECGF2YWlsUmVzAwkAZgIFCnN0YWtlZFRpbWUAAAkAawMFCWRlbHRhVGltZQkAaAIIBQxwcm9kdWN0aXZpdHkCXzMFBnBpZWNlcwUJREFZTUlMTElTAAAEB25lZWRNYXQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwkAZAIIBQxwcm9kdWN0aXZpdHkCXzEAAQUFU1NJWkUEDmdsb2JhbEFuZExvY2FsAwkAZgIFCnN0YWtlZFRpbWUAAAkBDWFzU3BsaXRSZXN1bHQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZCQDMCAIFB25lZWRNYXQJAMwIAgUIYXZhaWxSZXMJAMwIAgkAkQMCBQFkBQtyZWNUZXJyYWlucwUDbmlsBQNuaWwJAJQKAgkBEmFzTGlzdEludENvbXBhY3RlZAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZCQDMCAIFB25lZWRNYXQFA25pbAUDbmlsAgAJAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2xhbmRBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQUKc3Rha2VkVGltZQkAzAgCCQCsAgICEyVzJXNfX2Rlc2NyaXB0aW9uX18JALkJAgkAzAgCBQdsYW5kTnVtCQDMCAIJAJEDAgUBZAULcmVjTGFuZFNpemUJAMwIAgkAkQMCBQFkBQtyZWNUZXJyYWlucwkAzAgCCQCRAwIFAWQFDHJlY0NvbnRpbmVudAUDbmlsAgFfCQDMCAIJAKwCAgISJXMlZF9faW5mcmFMZXZlbF9fCQCkAwEIBQxwcm9kdWN0aXZpdHkCXzEJAMwIAgkArAICAhYlcyVzX19hdmFpbFJlc0J5VHlwZV9fCAUOZ2xvYmFsQW5kTG9jYWwCXzIJAMwIAgkArAICAhUlcyVkX19hdmFpbFJlc1RvdGFsX18JAKQDAQUIYXZhaWxSZXMJAMwIAgkArAICAhQlcyVzX19uZWVkTWF0ZXJpYWxfXwgFDmdsb2JhbEFuZExvY2FsAl8xCQDMCAIJALkJAgkAzAgCAgQlcyVzCQDMCAICDWxhbmRBcnRlZmFjdHMJAMwIAgkArAICAghQUkVTQUxFOgkApAMBCAUMcHJvZHVjdGl2aXR5Al8yBQNuaWwFA1NFUAkAzAgCCQCsAgICESVzJXNfX3dhcmVIb3VzZV9fCQC5CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAGkCBQZwaWVjZXMFBVNTSVpFCAUMcHJvZHVjdGl2aXR5Al8xAgE6BQNuaWwKAWkBDWNvbnN0cnVjdG9yVjEDD3N0YWtpbmdDb250cmFjdA9lY29ub215Q29udHJhY3QSZ292ZXJuYW5jZUNvbnRyYWN0AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEmdvdmVybmFuY2VDb250cmFjdAUDbmlsBQNTRVAFA25pbAFpARJ3YWxsZXRJbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0CQCUCgIFA25pbAkBDndhbGxldEludGVybmFsAQUOdXNlckFkZHJlc3NPcHQBaQEQZHVja0luZm9SRUFET05MWQILZHVja0Fzc2V0SWQOdXNlckFkZHJlc3NPcHQEBGFkZHIJAKYIAQUOdXNlckFkZHJlc3NPcHQECWR1Y2tBc3NldAkA2QQBBQtkdWNrQXNzZXRJZAMJAAACBQtkdWNrQXNzZXRJZAIACQACAQIXZHVja0Fzc2V0SWQgaXMgcmVxdWlyZWQECWR1Y2tPd25lcgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQEBW93bmVyAwkBCWlzRGVmaW5lZAEFCWR1Y2tPd25lcgkBBXZhbHVlAQUJZHVja093bmVyAwMJAQlpc0RlZmluZWQBBQRhZGRyCQAAAgkA8AcCCQEFdmFsdWUBBQRhZGRyBQlkdWNrQXNzZXQAAQcFDnVzZXJBZGRyZXNzT3B0AgAJAJQKAgUDbmlsCQCUCgIJAQ1kdWNrSW5mb0FycmF5AwULZHVja0Fzc2V0SWQFBW93bmVyCQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkCQEOd2FsbGV0SW50ZXJuYWwBBQ51c2VyQWRkcmVzc09wdAFpARBsYW5kSW5mb1JFQURPTkxZAgtsYW5kQXNzZXRJZA51c2VyQWRkcmVzc09wdAQEYWRkcgkApggBBQ51c2VyQWRkcmVzc09wdAQJbGFuZEFzc2V0CQDZBAEFC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAwMJAQlpc0RlZmluZWQBBQRhZGRyCQAAAgkA8AcCCQEFdmFsdWUBBQRhZGRyBQlsYW5kQXNzZXQAAQcFDnVzZXJBZGRyZXNzT3B0AgAECnN0YWtlZER1Y2sJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQ51c2VyQWRkcmVzc09wdAQHZHVja0luZgMDCQEJaXNEZWZpbmVkAQUEYWRkcgkBCWlzRGVmaW5lZAEFCnN0YWtlZER1Y2sHBAtkdWNrQXNzZXRJZAkBBXZhbHVlAQUKc3Rha2VkRHVjawkAlAoCBQtkdWNrQXNzZXRJZAkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAkAlAoCAgAJAJcKBQD///////////8BAgACAAD///////////8BAgAJAJQKAgUDbmlsCQCVCgMJAQ1sYW5kSW5mb0FycmF5AwULbGFuZEFzc2V0SWQFBW93bmVyBQpzdGFrZWRUaW1lCQENZHVja0luZm9BcnJheQMIBQdkdWNrSW5mAl8xBQ51c2VyQWRkcmVzc09wdAgFB2R1Y2tJbmYCXzIJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AWkBF3N0YWtlZExhbmRzSW5mb1JFQURPTkxZAglteUFkZHJlc3MQbGFuZE93bmVyQWRkcmVzcwMJAAACBRBsYW5kT3duZXJBZGRyZXNzAgAJAAIBAhxsYW5kT3duZXJBZGRyZXNzIGlzIHJlcXVpcmVkBAZteUFkZHIJAKYIAQUJbXlBZGRyZXNzBAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBRBsYW5kT3duZXJBZGRyZXNzBAVsYW5kcwMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwUDbmlsCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkBAlsYW5kQXNzZXQJANkEAQULbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAVkZXNjcggJAQV2YWx1ZQEJAOwHAQUJbGFuZEFzc2V0C2Rlc2NyaXB0aW9uBAFkCQC1CQIFBWRlc2NyAgFfBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIFAWQFC3JlY0xhbmRTaXplBAxwcm9kdWN0aXZpdHkJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2Nr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ZHIJAQlpc0RlZmluZWQBBQpzdGFrZWREdWNrBwQLZHVja0Fzc2V0SWQJAQV2YWx1ZQEFCnN0YWtlZER1Y2sJAJQKAgULZHVja0Fzc2V0SWQJAQ1kdWNrSW5mb1R1cGxlAQULZHVja0Fzc2V0SWQJAJQKAgIACQCXCgUA////////////AQIAAgAA////////////AQIACQCUCgIFA25pbAkAlQoDBQFyCQENZHVja0luZm9BcnJheQMIBQdkdWNrSW5mAl8xBQlteUFkZHJlc3MIBQdkdWNrSW5mAl8yCQEOd2FsbGV0SW50ZXJuYWwBBQlteUFkZHJlc3MBaQEXZHVja0J5T3duZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBApzdGFrZWREdWNrCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQULdXNlckFkZHJlc3MJAJQKAgUDbmlsAwMJAQlpc0RlZmluZWQBCQCmCAEFC3VzZXJBZGRyZXNzCQEJaXNEZWZpbmVkAQUKc3Rha2VkRHVjawcEC2R1Y2tBc3NldElkCQEFdmFsdWUBBQpzdGFrZWREdWNrCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkBQt1c2VyQWRkcmVzcwkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAkBDWR1Y2tJbmZvQXJyYXkDAgAFC3VzZXJBZGRyZXNzCQCXCgUA////////////AQIAAgAA////////////AQIAAWkBGWR1Y2tCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2R1Y2tBc3NldElkBAVvd25lcgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQEB2R1Y2tJbmYJAQ1kdWNrSW5mb1R1cGxlAQULZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQENZHVja0luZm9BcnJheQMFC2R1Y2tBc3NldElkAwkBCWlzRGVmaW5lZAEFBW93bmVyCQEFdmFsdWUBBQVvd25lcgIACQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkAWkBGWxhbmRCeUFzc2V0SWRJbmZvUkVBRE9OTFkBC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAJQKAgUDbmlsCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQFpAR5zdGFrZWRMYW5kc0J5T3duZXJJbmZvUkVBRE9OTFkBEGxhbmRPd25lckFkZHJlc3MDCQAAAgUQbGFuZE93bmVyQWRkcmVzcwIACQACAQIcbGFuZE93bmVyQWRkcmVzcyBpcyByZXF1aXJlZAQIbGFuZHNTdHIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUQbGFuZE93bmVyQWRkcmVzcwQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBRBsYW5kT3duZXJBZGRyZXNzBQpzdGFrZWRUaW1lBAFyCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlAoCBQNuaWwFAXIBaQEWbGFuZHNCeUlkc0luZm9SRUFET05MWQEMbGFuZEFzc2V0SWRzCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIFA25pbAUBcgAUqOt3", "height": 2488123, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: YF4t7ssAW2unMGdVYKvF2qnYsMT9ikYz9vLmVZUf7UJ Next: Arot5aPvrtF9Z1biDvDoErRFbBsukgRshkNKh6Puwi2q Diff:
OldNewDifferences
213213
214214
215215 func getWarehouse (whKey,landIndex,infraLevel) = {
216- let vol = ((3 * (infraLevel + 1)) * landIndex)
217- let p = split(valueOrElse(getString(stakingContract, whKey), (toString(vol) + ":0_0_0_0_0_0:0_0_0_0_0_0:")), ":")
218-[toString(parseIntValue(p[whIdxVol])), if ((size(split(p[whIdxRes], "_")) == NUMRES))
216+ let volPrefix = ((toString(landIndex) + "_") + toString(infraLevel))
217+ let p = split(valueOrElse(getString(whKey), (volPrefix + ":0_0_0_0_0_0:0_0_0_0_0_0:")), ":")
218+[p[whIdxVol], if ((size(split(p[whIdxRes], "_")) == NUMRES))
219219 then p[whIdxRes]
220220 else "0_0_0_0_0_0", if ((size(split(p[whIdxMat], "_")) == NUMRES))
221221 then p[whIdxMat]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let chain = take(drop(this.bytes, 1), 1)
55
66 let usdnAssetId = match chain {
77 case _ =>
88 if ((base58'2W' == $match0))
99 then base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1010 else if ((base58'2T' == $match0))
1111 then base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
1212 else throw("Unknown chain")
1313 }
1414
1515 let InfraUpgradeCostS = match chain {
1616 case _ =>
1717 if ((base58'2W' == $match0))
1818 then 6307198406
1919 else if ((base58'2T' == $match0))
2020 then 63071984
2121 else throw("Unknown chain")
2222 }
2323
2424 let LANDPREFIX = "LAND"
2525
2626 let DUCKPREFIX = "DUCK"
2727
2828 let SEP = "__"
2929
3030 let ARTPRESALE = "PRESALE"
3131
3232 let DAILYRESBYPIECE = 3456000
3333
3434 let DAYMILLIS = 86400000
3535
3636 let NUMRES = 6
3737
3838 let SSIZE = 25
3939
4040 let MSIZE = 100
4141
4242 let LSIZE = 225
4343
4444 let XLSIZE = 400
4545
4646 let XXLSIZE = 625
4747
4848 let recLandNum = 0
4949
5050 let recLandSize = 1
5151
5252 let recTerrains = 2
5353
5454 let recContinent = 3
5555
5656 let whIdxVol = 0
5757
5858 let whIdxRes = 1
5959
6060 let whIdxMat = 2
6161
6262 let whIdxProd = 3
6363
6464 func keyRestCfg () = "%s__restConfig"
6565
6666
6767 let IdxCfgStakingDapp = 1
6868
6969 let IdxCfgEconomyDapp = 2
7070
7171 let IdxCfgGovernanceDapp = 3
7272
7373 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
7474
7575
7676 func readRestCfgOrFail () = split_4C(getStringOrFail(this, keyRestCfg()), SEP)
7777
7878
7979 func getContractAddressOrFail (restCfg,idx) = valueOrErrorMessage(addressFromString(restCfg[idx]), ("Rest cfg doesn't contain address at index " + toString(idx)))
8080
8181
8282 let restCfg = readRestCfgOrFail()
8383
8484 let stakingContract = getContractAddressOrFail(restCfg, IdxCfgStakingDapp)
8585
8686 let economyContract = getContractAddressOrFail(restCfg, IdxCfgEconomyDapp)
8787
8888 let governanceContract = getContractAddressOrFail(restCfg, IdxCfgEconomyDapp)
8989
9090 func keyDuckIdToOwner (assetId) = ("duckOwner_" + assetId)
9191
9292
9393 func keyStakedTimeByAssetId (assetId) = ("stakedTime_" + assetId)
9494
9595
9696 func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
9797
9898
9999 func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
100100
101101
102102 func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
103103
104104
105105 func keyWarehouseByLand (landAssetId) = ("wareHouse_" + landAssetId)
106106
107107
108108 func keyDuckLocation (duckAssetId) = ("duckLocation_" + duckAssetId)
109109
110110
111111 func keyDuckHealth (duckAssetId) = ("duckHealth_" + duckAssetId)
112112
113113
114114 func keyLandAssetIdToOwner (assetId) = ("nftOwner_" + assetId)
115115
116116
117117 func keyInfraLevelByAssetId (assetId) = ("infraLevel_" + assetId)
118118
119119
120120 func keyLandArtStatusByTypeAndAssetId (type,assetId) = makeString(["landArtStatus", type, assetId], "_")
121121
122122
123123 func keyPresaleArtActivatedByAssetId (assetId) = ("presaleArtActivated_" + assetId)
124124
125125
126126 func keyStakedLandsByOwner (ownerAddr) = ("stakedLandsByOwner_" + ownerAddr)
127127
128128
129129 func asString (v) = match v {
130130 case s: String =>
131131 s
132132 case _ =>
133133 throw("fail to cast into String")
134134 }
135135
136136
137137 func asListIntCompacted (val) = match val {
138138 case valAnyList: List[Any] =>
139139 if ((size(valAnyList) != NUMRES))
140140 then throw(("Array size is " + toString(size(valAnyList))))
141141 else {
142142 func conv (acc,item) = match item {
143143 case it: Int =>
144144 (acc :+ toString(it))
145145 case _ =>
146146 throw("List type is not Int")
147147 }
148148
149149 let r = {
150150 let $l = valAnyList
151151 let $s = size($l)
152152 let $acc0 = nil
153153 func $f0_1 ($a,$i) = if (($i >= $s))
154154 then $a
155155 else conv($a, $l[$i])
156156
157157 func $f0_2 ($a,$i) = if (($i >= $s))
158158 then $a
159159 else throw("List size exceeds 6")
160160
161161 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
162162 }
163163 makeString(r, "_")
164164 }
165165 case _ =>
166166 throw("fail to cast into List")
167167 }
168168
169169
170170 func asSplitResult (val) = match val {
171171 case t2: (List[Any], List[Any]) =>
172172 $Tuple2(asListIntCompacted(t2._1), asListIntCompacted(t2._2))
173173 case _ =>
174174 throw("fail to cast into (List, List)")
175175 }
176176
177177
178178 func walletInternal (userAddressOpt) = {
179179 let addr = addressFromString(userAddressOpt)
180180 let balance = if (isDefined(addr))
181181 then wavesBalance(value(addr))
182182 else BalanceDetails(0, 0, 0, 0)
183183 let usdnBalance = if (isDefined(addr))
184184 then assetBalance(value(addr), usdnAssetId)
185185 else 0
186186 makeString(["%s%d%d", "wallet", toString(balance.available), toString(usdnBalance)], SEP)
187187 }
188188
189189
190190 func applyBonuses (landAssetId,pieces) = {
191191 let infraLevel = valueOrElse(getInteger(stakingContract, keyInfraLevelByAssetId(landAssetId)), 0)
192192 let artPieces = valueOrElse(getInteger(stakingContract, keyLandArtStatusByTypeAndAssetId(ARTPRESALE, landAssetId)), if (valueOrElse(getBoolean(stakingContract, keyPresaleArtActivatedByAssetId(landAssetId)), false))
193193 then pieces
194194 else 0)
195195 $Tuple3(infraLevel, artPieces, ((DAILYRESBYPIECE + fraction(DAILYRESBYPIECE, infraLevel, 4)) + fraction(DAILYRESBYPIECE, (artPieces * 3), (pieces * 20))))
196196 }
197197
198198
199199 func numPiecesBySize (landSize) = match landSize {
200200 case _ =>
201201 if (("S" == $match0))
202202 then SSIZE
203203 else if (("M" == $match0))
204204 then MSIZE
205205 else if (("L" == $match0))
206206 then LSIZE
207207 else if (("XL" == $match0))
208208 then XLSIZE
209209 else if (("XXL" == $match0))
210210 then XXLSIZE
211211 else throw("Unknown land size")
212212 }
213213
214214
215215 func getWarehouse (whKey,landIndex,infraLevel) = {
216- let vol = ((3 * (infraLevel + 1)) * landIndex)
217- let p = split(valueOrElse(getString(stakingContract, whKey), (toString(vol) + ":0_0_0_0_0_0:0_0_0_0_0_0:")), ":")
218-[toString(parseIntValue(p[whIdxVol])), if ((size(split(p[whIdxRes], "_")) == NUMRES))
216+ let volPrefix = ((toString(landIndex) + "_") + toString(infraLevel))
217+ let p = split(valueOrElse(getString(whKey), (volPrefix + ":0_0_0_0_0_0:0_0_0_0_0_0:")), ":")
218+[p[whIdxVol], if ((size(split(p[whIdxRes], "_")) == NUMRES))
219219 then p[whIdxRes]
220220 else "0_0_0_0_0_0", if ((size(split(p[whIdxMat], "_")) == NUMRES))
221221 then p[whIdxMat]
222222 else "0_0_0_0_0_0", p[whIdxProd]]
223223 }
224224
225225
226226 func duckInfoTuple (duckAssetId) = $Tuple5(valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(duckAssetId)), -1), value(assetInfo(fromBase58String(duckAssetId))).name, valueOrElse(getString(stakingContract, keyDuckLocation(duckAssetId)), ""), valueOrElse(getInteger(stakingContract, keyDuckHealth(duckAssetId)), -1), asString(invoke(stakingContract, "getBackpackREADONLY", [duckAssetId], nil)))
227227
228228
229229 func duckInfoArray (duckAssetId,owner,duckInf) = [("%s%s__assetId__" + duckAssetId), ("%s%s__owner__" + owner), ("%s%d__stakedTime__" + toString(duckInf._1)), ("%s%s__name__" + duckInf._2), ("%s%s__location__" + duckInf._3), ("%s%d__health__" + toString(duckInf._4)), ("%s%s__backPack__" + duckInf._5)]
230230
231231
232232 func landInfoArray (landAssetId,owner,stakedTime) = if ((landAssetId == ""))
233233 then throw("landAssetId is required")
234234 else {
235235 let a = value(assetInfo(fromBase58String(landAssetId)))
236236 let d = split(a.description, "_")
237237 let landNum = if ((a.quantity > 0))
238238 then d[recLandNum]
239239 else ("-" + d[recLandNum])
240240 let pieces = numPiecesBySize(d[recLandSize])
241241 let productivity = applyBonuses(landAssetId, pieces)
242242 let deltaTime = (lastBlock.timestamp - stakedTime)
243243 let availRes = if ((stakedTime > 0))
244244 then fraction(deltaTime, (productivity._3 * pieces), DAYMILLIS)
245245 else 0
246246 let needMat = fraction(InfraUpgradeCostS, (pieces * (productivity._1 + 1)), SSIZE)
247247 let globalAndLocal = if ((stakedTime > 0))
248248 then asSplitResult(invoke(stakingContract, "splitByGlobalAndLocalWeightsREADONLY", [needMat, availRes, d[recTerrains]], nil))
249249 else $Tuple2(asListIntCompacted(invoke(stakingContract, "splitByGlobalWeightsREADONLY", [needMat], nil)), "")
250250 [("%s%s__assetId__" + landAssetId), ("%s%s__owner__" + owner), ("%s%d__stakedTime__" + toString(stakedTime)), ("%s%s__description__" + makeString([landNum, d[recLandSize], d[recTerrains], d[recContinent]], "_")), ("%s%d__infraLevel__" + toString(productivity._1)), ("%s%s__availResByType__" + globalAndLocal._2), ("%s%d__availResTotal__" + toString(availRes)), ("%s%s__needMaterial__" + globalAndLocal._1), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(productivity._2))], SEP), ("%s%s__wareHouse__" + makeString(getWarehouse(keyWarehouseByLand(landAssetId), (pieces / SSIZE), productivity._1), ":"))]
251251 }
252252
253253
254254 @Callable(i)
255255 func constructorV1 (stakingContract,economyContract,governanceContract) = if ((i.caller != this))
256256 then throw("permissions denied")
257257 else [StringEntry(keyRestCfg(), makeString(["%s%s%s", stakingContract, economyContract, governanceContract], SEP))]
258258
259259
260260
261261 @Callable(i)
262262 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
263263
264264
265265
266266 @Callable(i)
267267 func duckInfoREADONLY (duckAssetId,userAddressOpt) = {
268268 let addr = addressFromString(userAddressOpt)
269269 let duckAsset = fromBase58String(duckAssetId)
270270 if ((duckAssetId == ""))
271271 then throw("duckAssetId is required")
272272 else {
273273 let duckOwner = getString(stakingContract, keyDuckIdToOwner(duckAssetId))
274274 let owner = if (isDefined(duckOwner))
275275 then value(duckOwner)
276276 else if (if (isDefined(addr))
277277 then (assetBalance(value(addr), duckAsset) == 1)
278278 else false)
279279 then userAddressOpt
280280 else ""
281281 $Tuple2(nil, $Tuple2(duckInfoArray(duckAssetId, owner, duckInfoTuple(duckAssetId)), walletInternal(userAddressOpt)))
282282 }
283283 }
284284
285285
286286
287287 @Callable(i)
288288 func landInfoREADONLY (landAssetId,userAddressOpt) = {
289289 let addr = addressFromString(userAddressOpt)
290290 let landAsset = fromBase58String(landAssetId)
291291 if ((landAssetId == ""))
292292 then throw("landAssetId is required")
293293 else {
294294 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), 0)
295295 let owner = if ((stakedTime > 0))
296296 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
297297 else if (if (isDefined(addr))
298298 then (assetBalance(value(addr), landAsset) == 1)
299299 else false)
300300 then userAddressOpt
301301 else ""
302302 let stakedDuck = getString(stakingContract, keyStakedDuckByOwner(userAddressOpt))
303303 let duckInf = if (if (isDefined(addr))
304304 then isDefined(stakedDuck)
305305 else false)
306306 then {
307307 let duckAssetId = value(stakedDuck)
308308 $Tuple2(duckAssetId, duckInfoTuple(duckAssetId))
309309 }
310310 else $Tuple2("", $Tuple5(-1, "", "", -1, ""))
311311 $Tuple2(nil, $Tuple3(landInfoArray(landAssetId, owner, stakedTime), duckInfoArray(duckInf._1, userAddressOpt, duckInf._2), walletInternal(userAddressOpt)))
312312 }
313313 }
314314
315315
316316
317317 @Callable(i)
318318 func stakedLandsInfoREADONLY (myAddress,landOwnerAddress) = if ((landOwnerAddress == ""))
319319 then throw("landOwnerAddress is required")
320320 else {
321321 let myAddr = addressFromString(myAddress)
322322 let landsStr = getString(stakingContract, keyStakedLandsByOwner(landOwnerAddress))
323323 let lands = if (isDefined(landsStr))
324324 then split_51C(value(landsStr), "_")
325325 else nil
326326 func oneLand (acc,landAssetId) = {
327327 let landAsset = fromBase58String(landAssetId)
328328 if ((landAssetId == ""))
329329 then throw("landAssetId is required")
330330 else {
331331 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), 0)
332332 let descr = value(assetInfo(landAsset)).description
333333 let d = split(descr, "_")
334334 let pieces = numPiecesBySize(d[recLandSize])
335335 let productivity = applyBonuses(landAssetId, pieces)
336336 let deltaTime = (lastBlock.timestamp - stakedTime)
337337 let availRes = fraction(deltaTime, (productivity._3 * pieces), DAYMILLIS)
338338 (acc :+ [("%s%s__landAssetId__" + landAssetId), ("%s%d__stakedTime__" + toString(stakedTime)), ("%s%s__description__" + descr), ("%s%d__infraLevel__" + toString(productivity._1)), makeString(["%s%s", "landArtefacts", ("PRESALE:" + toString(productivity._2))], SEP), ("%s%s__availRes__" + toString(availRes))])
339339 }
340340 }
341341
342342 let r = {
343343 let $l = lands
344344 let $s = size($l)
345345 let $acc0 = nil
346346 func $f0_1 ($a,$i) = if (($i >= $s))
347347 then $a
348348 else oneLand($a, $l[$i])
349349
350350 func $f0_2 ($a,$i) = if (($i >= $s))
351351 then $a
352352 else throw("List size exceeds 100")
353353
354354 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
355355 }
356356 let stakedDuck = getString(stakingContract, keyStakedDuckByOwner(myAddress))
357357 let duckInf = if (if (isDefined(myAddr))
358358 then isDefined(stakedDuck)
359359 else false)
360360 then {
361361 let duckAssetId = value(stakedDuck)
362362 $Tuple2(duckAssetId, duckInfoTuple(duckAssetId))
363363 }
364364 else $Tuple2("", $Tuple5(-1, "", "", -1, ""))
365365 $Tuple2(nil, $Tuple3(r, duckInfoArray(duckInf._1, myAddress, duckInf._2), walletInternal(myAddress)))
366366 }
367367
368368
369369
370370 @Callable(i)
371371 func duckByOwnerInfoREADONLY (userAddress) = {
372372 let stakedDuck = getString(stakingContract, keyStakedDuckByOwner(userAddress))
373373 $Tuple2(nil, if (if (isDefined(addressFromString(userAddress)))
374374 then isDefined(stakedDuck)
375375 else false)
376376 then {
377377 let duckAssetId = value(stakedDuck)
378378 duckInfoArray(duckAssetId, userAddress, duckInfoTuple(duckAssetId))
379379 }
380380 else duckInfoArray("", userAddress, $Tuple5(-1, "", "", -1, "")))
381381 }
382382
383383
384384
385385 @Callable(i)
386386 func duckByAssetIdInfoREADONLY (duckAssetId) = {
387387 let owner = getString(stakingContract, keyDuckIdToOwner(duckAssetId))
388388 let duckInf = duckInfoTuple(duckAssetId)
389389 $Tuple2(nil, duckInfoArray(duckAssetId, if (isDefined(owner))
390390 then value(owner)
391391 else "", duckInfoTuple(duckAssetId)))
392392 }
393393
394394
395395
396396 @Callable(i)
397397 func landByAssetIdInfoREADONLY (landAssetId) = if ((landAssetId == ""))
398398 then throw("landAssetId is required")
399399 else {
400400 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
401401 let owner = if ((stakedTime > 0))
402402 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
403403 else ""
404404 $Tuple2(nil, landInfoArray(landAssetId, owner, stakedTime))
405405 }
406406
407407
408408
409409 @Callable(i)
410410 func stakedLandsByOwnerInfoREADONLY (landOwnerAddress) = if ((landOwnerAddress == ""))
411411 then throw("landOwnerAddress is required")
412412 else {
413413 let landsStr = getString(stakingContract, keyStakedLandsByOwner(landOwnerAddress))
414414 let lands = if (isDefined(landsStr))
415415 then split_51C(value(landsStr), "_")
416416 else nil
417417 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
418418 then throw("landAssetId is required")
419419 else {
420420 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
421421 (acc :+ landInfoArray(landAssetId, landOwnerAddress, stakedTime))
422422 }
423423
424424 let r = {
425425 let $l = lands
426426 let $s = size($l)
427427 let $acc0 = nil
428428 func $f0_1 ($a,$i) = if (($i >= $s))
429429 then $a
430430 else oneLand($a, $l[$i])
431431
432432 func $f0_2 ($a,$i) = if (($i >= $s))
433433 then $a
434434 else throw("List size exceeds 100")
435435
436436 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
437437 }
438438 $Tuple2(nil, r)
439439 }
440440
441441
442442
443443 @Callable(i)
444444 func landsByIdsInfoREADONLY (landAssetIds) = {
445445 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
446446 then throw("landAssetId is required")
447447 else {
448448 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
449449 let owner = if ((stakedTime > 0))
450450 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
451451 else ""
452452 (acc :+ landInfoArray(landAssetId, owner, stakedTime))
453453 }
454454
455455 let r = {
456456 let $l = landAssetIds
457457 let $s = size($l)
458458 let $acc0 = nil
459459 func $f0_1 ($a,$i) = if (($i >= $s))
460460 then $a
461461 else oneLand($a, $l[$i])
462462
463463 func $f0_2 ($a,$i) = if (($i >= $s))
464464 then $a
465465 else throw("List size exceeds 100")
466466
467467 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
468468 }
469469 $Tuple2(nil, r)
470470 }
471471
472472

github/deemru/w8io/026f985 
98.96 ms