tx · B1G2PLdwxLXmf5TaBc9NLUiLWo1UN1j6bi9PYzE7Xw9K

3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy:  -0.01500000 Waves

2023.06.02 19:47 [2605318] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves

{ "type": 13, "id": "B1G2PLdwxLXmf5TaBc9NLUiLWo1UN1j6bi9PYzE7Xw9K", "fee": 1500000, "feeAssetId": null, "timestamp": 1685724434472, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "4H2BHNgDSvpBAfM9qtYtGhLgsihKyNstDHFNwHRA7zi58MWFwovA4pHypH5vi7pZwQqRKmYwL8ZJDkWE7eSo1X7r" ], "script": "base64:BgJACAISBQoDCAgIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEYEgMKAQgSAwoBGBIDCgEYEgMKARgSAwoBCD0ABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABFJbmZyYVVwZ3JhZGVDb3N0UwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACAyK+gJQMJAAACAQFUBQckbWF0Y2gwAIDC1y8JAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAA9EQUlMWVJFU0JZUElFQ0UAgPjSAQAJREFZTUlMTElTAIC4mSkADFdITVVMVElQTElFUgCAyK+gJQAKcmVjTGFuZE51bQAAAAtyZWNMYW5kU2l6ZQABAAtyZWNUZXJyYWlucwACAAxyZWNDb250aW5lbnQAAwANVVNEVFBSSVpFUEFSVACgwh4BCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABEXJlYWRSZXN0Q2ZnT3JGYWlsAAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIHcmVzdENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB3Jlc3RDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwAAA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAEmdvdmVybmFuY2VDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ0Vjb25vbXlEYXBwAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCndhcmVIb3VzZV8FC2xhbmRBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQdhc3NldElkCQCsAgICGGxhbmRDdXN0b21OYW1lQnlBc3NldElkXwUHYXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgETa2V5QWRkcmVzc1JlZmVycmFscwEEYWRkcgkArAICAg1hY2NSZWZlcnJhbHNfBQRhZGRyARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgINbGFuZEFydFN0YXR1cwkAzAgCBQR0eXBlCQDMCAIFB2Fzc2V0SWQFA25pbAIBXwEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBDmtleU9yZGVyQnlMYW5kAQtsYW5kQXNzZXRJZAkArAICAgpsYW5kT3JkZXJfBQtsYW5kQXNzZXRJZAEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BEmFzTGlzdEludENvbXBhY3RlZAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAp2YWxBbnlMaXN0BQckbWF0Y2gwAwkBAiE9AgkAkAMBBQp2YWxBbnlMaXN0BQZOVU1SRVMJAAIBCQCsAgICDkFycmF5IHNpemUgaXMgCQCkAwEJAJADAQUKdmFsQW55TGlzdAoBBGNvbnYCA2FjYwRpdGVtBAckbWF0Y2gxBQRpdGVtAwkAAQIFByRtYXRjaDECA0ludAQCaXQFByRtYXRjaDEJAM0IAgUDYWNjCQCkAwEFAml0CQACAQIUTGlzdCB0eXBlIGlzIG5vdCBJbnQEAXIKAAIkbAUKdmFsQW55TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEY29udgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAuQkCBQFyAgFfCQACAQIWZmFpbCB0byBjYXN0IGludG8gTGlzdAENYXNTcGxpdFJlc3VsdAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIWKExpc3RbQW55XSwgTGlzdFtBbnldKQQCdDIFByRtYXRjaDAJAJQKAgkBEmFzTGlzdEludENvbXBhY3RlZAEIBQJ0MgJfMQkBEmFzTGlzdEludENvbXBhY3RlZAEIBQJ0MgJfMgkAAgECHmZhaWwgdG8gY2FzdCBpbnRvIChMaXN0LCBMaXN0KQEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAt1c2R0QmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC3VzZHRBc3NldElkAAAECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5QWRkcmVzc1RvQ3VzdG9tTmFtZQEFDnVzZXJBZGRyZXNzT3B0BQ51c2VyQWRkcmVzc09wdAQFcmVmQnkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5QWRkcmVzc1JlZkJ5AQUOdXNlckFkZHJlc3NPcHQCAAQEcmVmcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUOdXNlckFkZHJlc3NPcHQCAAQIbGFzdFR4SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5TGFzdFR4SWRCeVVzZXIBBQ51c2VyQWRkcmVzc09wdAIACQDMCAIJAKwCAgISJXMlc19fY3VzdG9tTmFtZV9fBQpjdXN0b21OYW1lCQDMCAIJAKwCAgISJXMlc19fcmVmZXJyZWRCeV9fBQVyZWZCeQkAzAgCCQCsAgICESVzJXNfX3JlZmVycmFsc19fBQRyZWZzCQDMCAIJAKwCAgIQJXMlc19fbGFzdFR4SWRfXwUIbGFzdFR4SWQJAMwIAgkArAICAhYlcyVzJWRfX3dhdmVzQmFsYW5jZV9fCQCkAwEIBQdiYWxhbmNlCWF2YWlsYWJsZQkAzAgCCQCsAgICFSVzJXMlZF9fdXNkdEJhbGFuY2VfXwkApAMBBQt1c2R0QmFsYW5jZQUDbmlsAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQJYXJ0UGllY2VzCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAlQoDBQppbmZyYUxldmVsBQlhcnRQaWVjZXMJAGQCCQBkAgUPREFJTFlSRVNCWVBJRUNFCQBrAwUPREFJTFlSRVNCWVBJRUNFCQBkAgkAZAIFCmluZnJhTGV2ZWwFBGFkZDYJAGgCAAIFBGFkZDcABQkAawMFD0RBSUxZUkVTQllQSUVDRQUJYXJ0UGllY2VzCQBoAgUGcGllY2VzAAUBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEMZ2V0V2FyZWhvdXNlAwV3aEtleQlsYW5kSW5kZXgKaW5mcmFMZXZlbAQJdm9sUHJlZml4CQCsAgIJAKwCAgkApAMBBQlsYW5kSW5kZXgCAV8JAKQDAQUKaW5mcmFMZXZlbAQEdG90UwkApAMBCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUFd2hLZXkJAKwCAgkArAICCQCsAgIJAKwCAgUJdm9sUHJlZml4Ah46MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6OjBfMF8FBHRvdFMCAV8FBHRvdFMJALUJAgUFd2hTdHICAToBDWR1Y2tJbmZvVHVwbGUBC2R1Y2tBc3NldElkCQCXCgUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2R1Y2tBc3NldElkAP///////////wEICQEFdmFsdWUBCQDsBwEJANkEAQULZHVja0Fzc2V0SWQEbmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAIACQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAD///////////8BCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAITZ2V0QmFja3BhY2tSRUFET05MWQkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDWR1Y2tJbmZvQXJyYXkDC2R1Y2tBc3NldElkBW93bmVyB2R1Y2tJbmYECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQtkdWNrQXNzZXRJZAgFB2R1Y2tJbmYCXzIJAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2R1Y2tBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQgFB2R1Y2tJbmYCXzEJAMwIAgkArAICAgwlcyVzX19uYW1lX18IBQdkdWNrSW5mAl8yCQDMCAIJAKwCAgIQJXMlc19fbG9jYXRpb25fXwgFB2R1Y2tJbmYCXzMJAMwIAgkArAICAg4lcyVkX19oZWFsdGhfXwkApAMBCAUHZHVja0luZgJfNAkAzAgCCQCsAgICECVzJXNfX2JhY2tQYWNrX18IBQdkdWNrSW5mAl81BQNuaWwBDWxhbmRJbmZvQXJyYXkDC2xhbmRBc3NldElkBW93bmVyCnN0YWtlZFRpbWUDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EB2xhbmROdW0DCQBmAggFAWEIcXVhbnRpdHkAAAkAkQMCBQFkBQpyZWNMYW5kTnVtCQCsAgICAS0JAJEDAgUBZAUKcmVjTGFuZE51bQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQMcHJvZHVjdGl2aXR5CQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCnN0YWtlZFRpbWUECGF2YWlsUmVzAwkAZgIFCnN0YWtlZFRpbWUAAAkAawMFCWRlbHRhVGltZQkAaAIIBQxwcm9kdWN0aXZpdHkCXzMFBnBpZWNlcwUJREFZTUlMTElTAAAEB25lZWRNYXQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwkAZAIIBQxwcm9kdWN0aXZpdHkCXzEAAQUFU1NJWkUEDmdsb2JhbEFuZExvY2FsAwkAZgIFCnN0YWtlZFRpbWUAAAkBDWFzU3BsaXRSZXN1bHQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZCQDMCAIFB25lZWRNYXQJAMwIAgUIYXZhaWxSZXMJAMwIAgkAkQMCBQFkBQtyZWNUZXJyYWlucwUDbmlsBQNuaWwJAJQKAgkBEmFzTGlzdEludENvbXBhY3RlZAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZCQDMCAIFB25lZWRNYXQFA25pbAUDbmlsAgAECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAkArAICCQCsAgIJAJEDAgUBZAUMcmVjQ29udGluZW50AgEtCQCRAwIFAWQFCnJlY0xhbmROdW0JAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2xhbmRBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVkX19zdGFrZWRUaW1lX18JAKQDAQUKc3Rha2VkVGltZQkAzAgCCQCsAgICEyVzJXNfX2Rlc2NyaXB0aW9uX18JALkJAgkAzAgCBQdsYW5kTnVtCQDMCAIJAJEDAgUBZAULcmVjTGFuZFNpemUJAMwIAgkAkQMCBQFkBQtyZWNUZXJyYWlucwkAzAgCCQCRAwIFAWQFDHJlY0NvbnRpbmVudAUDbmlsAgFfCQDMCAIJAKwCAgISJXMlZF9faW5mcmFMZXZlbF9fCQCkAwEIBQxwcm9kdWN0aXZpdHkCXzEJAMwIAgkArAICAhYlcyVzX19hdmFpbFJlc0J5VHlwZV9fCAUOZ2xvYmFsQW5kTG9jYWwCXzIJAMwIAgkArAICAhUlcyVkX19hdmFpbFJlc1RvdGFsX18JAKQDAQUIYXZhaWxSZXMJAMwIAgkArAICAhQlcyVzX19uZWVkTWF0ZXJpYWxfXwgFDmdsb2JhbEFuZExvY2FsAl8xCQDMCAIJALkJAgkAzAgCAgQlcyVzCQDMCAICDWxhbmRBcnRlZmFjdHMJAMwIAgkArAICAghQUkVTQUxFOgkApAMBCAUMcHJvZHVjdGl2aXR5Al8yBQNuaWwFA1NFUAkAzAgCCQCsAgICESVzJXNfX3dhcmVob3VzZV9fCQC5CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQJAGkCBQZwaWVjZXMFBVNTSVpFCAUMcHJvZHVjdGl2aXR5Al8xAgE6CQDMCAIJAKwCAgIRJXMlc19fbGFuZE9yZGVyX18JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPZWNvbm9teUNvbnRyYWN0CQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAIwMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6MEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6BQNuaWwBEmxhbmRPcmRlckluZm9BcnJheQILbGFuZEFzc2V0SWQFb3duZXIDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBAFhCQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEAWQJALUJAggFAWELZGVzY3JpcHRpb24CAV8EBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUEDHByb2R1Y3Rpdml0eQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMJAMwIAgkArAICAg8lcyVzX19hc3NldElkX18FC2xhbmRBc3NldElkCQDMCAIJAKwCAgINJXMlc19fb3duZXJfXwUFb3duZXIJAMwIAgkArAICAhElcyVzX193YXJlaG91c2VfXwkAuQkCCQEMZ2V0V2FyZWhvdXNlAwkBEmtleVdhcmVob3VzZUJ5TGFuZAEFC2xhbmRBc3NldElkCQBpAgUGcGllY2VzBQVTU0laRQgFDHByb2R1Y3Rpdml0eQJfMQIBOgkAzAgCCQCsAgICESVzJXNfX2xhbmRPcmRlcl9fCQELdmFsdWVPckVsc2UCCQCdCAIFD2Vjb25vbXlDb250cmFjdAkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgUDbmlsDAFpAQ1jb25zdHJ1Y3RvclYxAw9zdGFraW5nQ29udHJhY3QPZWNvbm9teUNvbnRyYWN0EmdvdmVybmFuY2VDb250cmFjdAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5UmVzdENmZwAJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUPc3Rha2luZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBRJnb3Zlcm5hbmNlQ29udHJhY3QFA25pbAUDU0VQBQNuaWwBaQESd2FsbGV0SW5mb1JFQURPTkxZAQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AWkBF2R1Y2tCeU93bmVySW5mb1JFQURPTkxZAQt1c2VyQWRkcmVzcwQKc3Rha2VkRHVjawkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAMDCQEJaXNEZWZpbmVkAQkApggBBQt1c2VyQWRkcmVzcwkBCWlzRGVmaW5lZAEFCnN0YWtlZER1Y2sHBAtkdWNrQXNzZXRJZAkBBXZhbHVlAQUKc3Rha2VkRHVjawkBDWR1Y2tJbmZvQXJyYXkDBQtkdWNrQXNzZXRJZAULdXNlckFkZHJlc3MJAQ1kdWNrSW5mb1R1cGxlAQULZHVja0Fzc2V0SWQJAQ1kdWNrSW5mb0FycmF5AwIABQt1c2VyQWRkcmVzcwkAlwoFAP///////////wECAAIAAP///////////wECAAFpARlkdWNrQnlBc3NldElkSW5mb1JFQURPTkxZAQtkdWNrQXNzZXRJZAQFb3duZXIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEQa2V5RHVja0lkVG9Pd25lcgEFC2R1Y2tBc3NldElkBAdkdWNrSW5mCQENZHVja0luZm9UdXBsZQEFC2R1Y2tBc3NldElkCQCUCgIFA25pbAkBDWR1Y2tJbmZvQXJyYXkDBQtkdWNrQXNzZXRJZAMJAQlpc0RlZmluZWQBBQVvd25lcgkBBXZhbHVlAQUFb3duZXICAAkBDWR1Y2tJbmZvVHVwbGUBBQtkdWNrQXNzZXRJZAFpARlsYW5kQnlBc3NldElkSW5mb1JFQURPTkxZAQtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEEBW93bmVyAwkAZgIFCnN0YWtlZFRpbWUAAAkBBXZhbHVlAQkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAIACQCUCgIFA25pbAkBDWxhbmRJbmZvQXJyYXkDBQtsYW5kQXNzZXRJZAUFb3duZXIFCnN0YWtlZFRpbWUBaQEec3Rha2VkTGFuZHNCeU93bmVySW5mb1JFQURPTkxZARBsYW5kT3duZXJBZGRyZXNzAwkAAAIFEGxhbmRPd25lckFkZHJlc3MCAAkAAgECHGxhbmRPd25lckFkZHJlc3MgaXMgcmVxdWlyZWQECGxhbmRzU3RyCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFEGxhbmRPd25lckFkZHJlc3MEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBApzdGFrZWRUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAD///////////8BCQDNCAIFA2FjYwkBDWxhbmRJbmZvQXJyYXkDBQtsYW5kQXNzZXRJZAUQbGFuZE93bmVyQWRkcmVzcwUKc3Rha2VkVGltZQQBcgoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAkAlAoCBQNuaWwFAXIBaQEWbGFuZHNCeUlkc0luZm9SRUFET05MWQEMbGFuZEFzc2V0SWRzCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQKc3Rha2VkVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQA////////////AQQFb3duZXIDCQBmAgUKc3Rha2VkVGltZQAACQEFdmFsdWUBCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkAgAJAM0IAgUDYWNjCQENbGFuZEluZm9BcnJheQMFC2xhbmRBc3NldElkBQVvd25lcgUKc3Rha2VkVGltZQQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDQwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgJAJQKAgUDbmlsBQFyAWkBI3dhcmVob3VzZU9yZGVyQnlBc3NldElkSW5mb1JFQURPTkxZAQtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEEBW93bmVyAwkAZgIFCnN0YWtlZFRpbWUAAAkBBXZhbHVlAQkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAIACQCUCgIFA25pbAkBEmxhbmRPcmRlckluZm9BcnJheQIFC2xhbmRBc3NldElkBQVvd25lcgFpARtvcmRlcnNCeUxhbmRJZHNJbmZvUkVBRE9OTFkBDGxhbmRBc3NldElkcwoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQECnN0YWtlZFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAP///////////wEEBW93bmVyAwkAZgIFCnN0YWtlZFRpbWUAAAkBBXZhbHVlAQkAnQgCBQ9zdGFraW5n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", "height": 2605318, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7DptgZx8jc7x8JymQETQCdic6ekM9y6htfEwrYDKznAS Next: 6evH9J7evrdaJasjmZ3DG8VcGjafqo3SVUdyirMKpiBX Diff:
OldNewDifferences
2121 else throw("Unknown chain")
2222 }
2323
24+let SEP = "__"
25+
2426 let MULT6 = 1000000
2527
26-let MULT8 = 100000000
27-
28-let LANDPREFIX = "LAND"
29-
30-let DUCKPREFIX = "DUCK"
31-
32-let SEP = "__"
33-
3428 let ARTPRESALE = "PRESALE"
35-
36-let DAILYRESBYPIECE = 3456000
37-
38-let DAYMILLIS = 86400000
3929
4030 let NUMRES = 6
4131
4939
5040 let XXLSIZE = 625
5141
52-let USDTPRIZEPART = 500000
42+let DAILYRESBYPIECE = 3456000
43+
44+let DAYMILLIS = 86400000
5345
5446 let WHMULTIPLIER = 10000000000
5547
6153
6254 let recContinent = 3
6355
64-let whIdxLevels = 0
65-
66-let whIdxRes = 1
67-
68-let whIdxMat = 2
69-
70-let whIdxProd = 3
71-
72-let whIdxLOFT = 4
73-
74-let volLocked = 0
75-
76-let volOccupied = 1
77-
78-let volFree = 2
79-
80-let volTotal = 3
56+let USDTPRIZEPART = 500000
8157
8258 func keyRestCfg () = "%s__restConfig"
8359
8561 let IdxCfgStakingDapp = 1
8662
8763 let IdxCfgEconomyDapp = 2
88-
89-let IdxCfgGovernanceDapp = 3
90-
91-let productPackages = [10, 10, 10, 100, 100, 100, 10, 10, 10, 100, 100, 100, 10, 10, 10]
9264
9365 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
9466
11789
11890
11991 func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
120-
121-
122-func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
123-
124-
125-func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
12692
12793
12894 func keyWarehouseByLand (landAssetId) = ("wareHouse_" + landAssetId)
158124 func keyLandArtStatusByTypeAndAssetId (type,assetId) = makeString(["landArtStatus", type, assetId], "_")
159125
160126
161-func keyPresaleArtActivatedByAssetId (assetId) = ("presaleArtActivated_" + assetId)
162-
163-
164127 func keyStakedLandsByOwner (ownerAddr) = ("stakedLandsByOwner_" + ownerAddr)
165128
166129
175138 s
176139 case _ =>
177140 throw("fail to cast into String")
178-}
179-
180-
181-func asInt (v) = match v {
182- case n: Int =>
183- n
184- case _ =>
185- throw("fail to cast into Int")
186141 }
187142
188143
253208
254209 func applyBonuses (landAssetId,pieces) = {
255210 let infraLevel = valueOrElse(getInteger(stakingContract, keyInfraLevelByAssetId(landAssetId)), 0)
256- let artPieces = valueOrElse(getInteger(stakingContract, keyLandArtStatusByTypeAndAssetId(ARTPRESALE, landAssetId)), if (valueOrElse(getBoolean(stakingContract, keyPresaleArtActivatedByAssetId(landAssetId)), false))
257- then pieces
258- else 0)
211+ let artPieces = valueOrElse(getInteger(stakingContract, keyLandArtStatusByTypeAndAssetId(ARTPRESALE, landAssetId)), 0)
259212 let add6 = (infraLevel / 6)
260213 let add7 = (infraLevel / 7)
261214 $Tuple3(infraLevel, artPieces, ((DAILYRESBYPIECE + fraction(DAILYRESBYPIECE, ((infraLevel + add6) + (2 * add7)), 5)) + fraction(DAILYRESBYPIECE, artPieces, (pieces * 5))))
284237 }
285238
286239
287-func getWarehouseOccupiedVol (currentWh) = {
288- let goods = currentWh[whIdxProd]
289- func sumResMat (acc,item) = (acc + parseIntValue(item))
290-
291- func sumProd (acc,item) = {
292- let idx = acc._1
293- let pkgSize = productPackages[idx]
294- let pkgs = (((parseIntValue(item) + pkgSize) - 1) / pkgSize)
295- $Tuple2((idx + 1), (acc._2 + (pkgs * MULT8)))
296- }
297-
298- let whResVol = {
299- let $l = split(currentWh[whIdxRes], "_")
300- let $s = size($l)
301- let $acc0 = 0
302- func $f0_1 ($a,$i) = if (($i >= $s))
303- then $a
304- else sumResMat($a, $l[$i])
305-
306- func $f0_2 ($a,$i) = if (($i >= $s))
307- then $a
308- else throw("List size exceeds 6")
309-
310- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
311- }
312- let whMatVol = {
313- let $l = split(currentWh[whIdxMat], "_")
314- let $s = size($l)
315- let $acc0 = 0
316- func $f1_1 ($a,$i) = if (($i >= $s))
317- then $a
318- else sumResMat($a, $l[$i])
319-
320- func $f1_2 ($a,$i) = if (($i >= $s))
321- then $a
322- else throw("List size exceeds 6")
323-
324- $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6)
325- }
326- let whGoodsVol = if ((goods == ""))
327- then 0
328- else ( let $l = split_4C(goods, "_")
329- let $s = size($l)
330- let $acc0 = $Tuple2(0, 0)
331- func $f2_1 ($a,$i) = if (($i >= $s))
332- then $a
333- else sumProd($a, $l[$i])
334-
335- func $f2_2 ($a,$i) = if (($i >= $s))
336- then $a
337- else throw("List size exceeds 50")
338-
339- $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_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))._2
340- ((whResVol + whMatVol) + whGoodsVol)
341- }
342-
343-
344240 func getWarehouse (whKey,landIndex,infraLevel) = {
345241 let volPrefix = ((toString(landIndex) + "_") + toString(infraLevel))
346- let whTotal = getWarehouseTotalVolume(volPrefix)
347- let whStr = valueOrElse(getString(stakingContract, whKey), (volPrefix + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
348- let wh = split(whStr, ":")
349- let whOccupied = getWarehouseOccupiedVol(wh)
350- let whLoft = if ((5 > size(wh)))
351- then makeString(["0", toString(whOccupied), toString((whTotal - whOccupied)), toString(whTotal)], "_")
352- else {
353- let loft = split(wh[whIdxLOFT], "_")
354- let whLocked = parseIntValue(loft[volLocked])
355- let occ = if ((size(loft) > 1))
356- then parseIntValue(loft[volOccupied])
357- else whOccupied
358- makeString([toString(whLocked), toString(occ), toString(((whTotal - whLocked) - occ)), toString(whTotal)], "_")
359- }
360-[wh[whIdxLevels], if ((size(split(wh[whIdxRes], "_")) == NUMRES))
361- then wh[whIdxRes]
362- else "0_0_0_0_0_0", if ((size(split(wh[whIdxMat], "_")) == NUMRES))
363- then wh[whIdxMat]
364- else "0_0_0_0_0_0", wh[whIdxProd], whLoft]
242+ let totS = toString(getWarehouseTotalVolume(volPrefix))
243+ let whStr = valueOrElse(getString(stakingContract, whKey), ((((volPrefix + ":0_0_0_0_0_0:0_0_0_0_0_0::0_0_") + totS) + "_") + totS))
244+ split(whStr, ":")
365245 }
366246
367247
612492
613493
614494 @Callable(i)
615-func replaceBooleanArtifacts (landAssetIds) = if ((i.caller != this))
616- then throw("permission denied")
617- else {
618- func oneLand (acc,landAssetId) = if ((landAssetId == ""))
619- then throw("landAssetId is required")
620- else if (isDefined(getBoolean(stakingContract, keyPresaleArtActivatedByAssetId(landAssetId))))
621- then (acc + asInt(invoke(stakingContract, "replaceBooleanArtifact", [landAssetId], nil)))
622- else acc
623-
624- let r = {
625- let $l = landAssetIds
626- let $s = size($l)
627- let $acc0 = 0
628- func $f0_1 ($a,$i) = if (($i >= $s))
629- then $a
630- else oneLand($a, $l[$i])
631-
632- func $f0_2 ($a,$i) = if (($i >= $s))
633- then $a
634- else throw("List size exceeds 25")
635-
636- $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($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)
637- }
638- $Tuple2(nil, r)
639- }
640-
641-
642-
643-@Callable(i)
644495 func fixWarehouseFormats (landAssetIds) = if ((i.caller != this))
645496 then throw("permission denied")
646497 else {
647498 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
648499 then throw("landAssetId is required")
649- else if (isDefined(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId))))
650- then (acc + size(asString(invoke(stakingContract, "fixWarehouseFormat", [landAssetId], nil))))
651- else acc
500+ else (acc + size(asString(invoke(stakingContract, "fixWarehouseFormat", [landAssetId], nil))))
652501
653502 let r = {
654503 let $l = landAssetIds
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 usdtAssetId = match chain {
77 case _ =>
88 if ((base58'2W' == $match0))
99 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1010 else if ((base58'2T' == $match0))
1111 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
1212 else throw("Unknown chain")
1313 }
1414
1515 let InfraUpgradeCostS = match chain {
1616 case _ =>
1717 if ((base58'2W' == $match0))
1818 then 10000000000
1919 else if ((base58'2T' == $match0))
2020 then 100000000
2121 else throw("Unknown chain")
2222 }
2323
24+let SEP = "__"
25+
2426 let MULT6 = 1000000
2527
26-let MULT8 = 100000000
27-
28-let LANDPREFIX = "LAND"
29-
30-let DUCKPREFIX = "DUCK"
31-
32-let SEP = "__"
33-
3428 let ARTPRESALE = "PRESALE"
35-
36-let DAILYRESBYPIECE = 3456000
37-
38-let DAYMILLIS = 86400000
3929
4030 let NUMRES = 6
4131
4232 let SSIZE = 25
4333
4434 let MSIZE = 100
4535
4636 let LSIZE = 225
4737
4838 let XLSIZE = 400
4939
5040 let XXLSIZE = 625
5141
52-let USDTPRIZEPART = 500000
42+let DAILYRESBYPIECE = 3456000
43+
44+let DAYMILLIS = 86400000
5345
5446 let WHMULTIPLIER = 10000000000
5547
5648 let recLandNum = 0
5749
5850 let recLandSize = 1
5951
6052 let recTerrains = 2
6153
6254 let recContinent = 3
6355
64-let whIdxLevels = 0
65-
66-let whIdxRes = 1
67-
68-let whIdxMat = 2
69-
70-let whIdxProd = 3
71-
72-let whIdxLOFT = 4
73-
74-let volLocked = 0
75-
76-let volOccupied = 1
77-
78-let volFree = 2
79-
80-let volTotal = 3
56+let USDTPRIZEPART = 500000
8157
8258 func keyRestCfg () = "%s__restConfig"
8359
8460
8561 let IdxCfgStakingDapp = 1
8662
8763 let IdxCfgEconomyDapp = 2
88-
89-let IdxCfgGovernanceDapp = 3
90-
91-let productPackages = [10, 10, 10, 100, 100, 100, 10, 10, 10, 100, 100, 100, 10, 10, 10]
9264
9365 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), makeString(["mandatory ", toString(address), ".", key, " is not defined"], ""))
9466
9567
9668 func readRestCfgOrFail () = split_4C(getStringOrFail(this, keyRestCfg()), SEP)
9769
9870
9971 func getContractAddressOrFail (restCfg,idx) = valueOrErrorMessage(addressFromString(restCfg[idx]), ("Rest cfg doesn't contain address at index " + toString(idx)))
10072
10173
10274 let restCfg = readRestCfgOrFail()
10375
10476 let stakingContract = getContractAddressOrFail(restCfg, IdxCfgStakingDapp)
10577
10678 let economyContract = getContractAddressOrFail(restCfg, IdxCfgEconomyDapp)
10779
10880 let governanceContract = getContractAddressOrFail(restCfg, IdxCfgEconomyDapp)
10981
11082 func keyBlocked () = "contractsBlocked"
11183
11284
11385 func keyDuckIdToOwner (assetId) = ("duckOwner_" + assetId)
11486
11587
11688 func keyStakedTimeByAssetId (assetId) = ("stakedTime_" + assetId)
11789
11890
11991 func keyStakedDuckByOwner (ownerAddr) = ("stakedDuckByOwner_" + ownerAddr)
120-
121-
122-func keyStakedTimeByTypeAssetIdAndOwner (nftType,assetId,ownerAddr) = ((((("stakedTimeByTypeAssetIdAndOwner_" + nftType) + "_") + assetId) + "_") + ownerAddr)
123-
124-
125-func keyBackpackByDuck (duckAssetId) = ("backPack_" + duckAssetId)
12692
12793
12894 func keyWarehouseByLand (landAssetId) = ("wareHouse_" + landAssetId)
12995
13096
13197 func keyDuckLocation (duckAssetId) = ("duckLocation_" + duckAssetId)
13298
13399
134100 func keyDuckHealth (duckAssetId) = ("duckHealth_" + duckAssetId)
135101
136102
137103 func keyLandAssetIdToOwner (assetId) = ("nftOwner_" + assetId)
138104
139105
140106 func keyLandAssetIdToCustomName (assetId) = ("landCustomNameByAssetId_" + assetId)
141107
142108
143109 func keyDuckAssetIdToCustomName (assetId) = ("duckCustomNameByAssetId_" + assetId)
144110
145111
146112 func keyAddressToCustomName (addr) = ("accountCustomNameByAddr_" + addr)
147113
148114
149115 func keyAddressRefBy (addr) = ("accRefBy_" + addr)
150116
151117
152118 func keyAddressReferrals (addr) = ("accReferrals_" + addr)
153119
154120
155121 func keyInfraLevelByAssetId (assetId) = ("infraLevel_" + assetId)
156122
157123
158124 func keyLandArtStatusByTypeAndAssetId (type,assetId) = makeString(["landArtStatus", type, assetId], "_")
159125
160126
161-func keyPresaleArtActivatedByAssetId (assetId) = ("presaleArtActivated_" + assetId)
162-
163-
164127 func keyStakedLandsByOwner (ownerAddr) = ("stakedLandsByOwner_" + ownerAddr)
165128
166129
167130 func keyLastTxIdByUser (addr) = ("lastTxIdByUser_" + addr)
168131
169132
170133 func keyOrderByLand (landAssetId) = ("landOrder_" + landAssetId)
171134
172135
173136 func asString (v) = match v {
174137 case s: String =>
175138 s
176139 case _ =>
177140 throw("fail to cast into String")
178-}
179-
180-
181-func asInt (v) = match v {
182- case n: Int =>
183- n
184- case _ =>
185- throw("fail to cast into Int")
186141 }
187142
188143
189144 func asBoolean (v) = match v {
190145 case s: Boolean =>
191146 s
192147 case _ =>
193148 throw("fail to cast into Boolean")
194149 }
195150
196151
197152 func asListIntCompacted (val) = match val {
198153 case valAnyList: List[Any] =>
199154 if ((size(valAnyList) != NUMRES))
200155 then throw(("Array size is " + toString(size(valAnyList))))
201156 else {
202157 func conv (acc,item) = match item {
203158 case it: Int =>
204159 (acc :+ toString(it))
205160 case _ =>
206161 throw("List type is not Int")
207162 }
208163
209164 let r = {
210165 let $l = valAnyList
211166 let $s = size($l)
212167 let $acc0 = nil
213168 func $f0_1 ($a,$i) = if (($i >= $s))
214169 then $a
215170 else conv($a, $l[$i])
216171
217172 func $f0_2 ($a,$i) = if (($i >= $s))
218173 then $a
219174 else throw("List size exceeds 6")
220175
221176 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
222177 }
223178 makeString(r, "_")
224179 }
225180 case _ =>
226181 throw("fail to cast into List")
227182 }
228183
229184
230185 func asSplitResult (val) = match val {
231186 case t2: (List[Any], List[Any]) =>
232187 $Tuple2(asListIntCompacted(t2._1), asListIntCompacted(t2._2))
233188 case _ =>
234189 throw("fail to cast into (List, List)")
235190 }
236191
237192
238193 func walletInternal (userAddressOpt) = {
239194 let addr = addressFromString(userAddressOpt)
240195 let balance = if (isDefined(addr))
241196 then wavesBalance(value(addr))
242197 else BalanceDetails(0, 0, 0, 0)
243198 let usdtBalance = if (isDefined(addr))
244199 then assetBalance(value(addr), usdtAssetId)
245200 else 0
246201 let customName = valueOrElse(getString(stakingContract, keyAddressToCustomName(userAddressOpt)), userAddressOpt)
247202 let refBy = valueOrElse(getString(stakingContract, keyAddressRefBy(userAddressOpt)), "")
248203 let refs = valueOrElse(getString(stakingContract, keyAddressReferrals(userAddressOpt)), "")
249204 let lastTxId = valueOrElse(getString(stakingContract, keyLastTxIdByUser(userAddressOpt)), "")
250205 [("%s%s__customName__" + customName), ("%s%s__referredBy__" + refBy), ("%s%s__referrals__" + refs), ("%s%s__lastTxId__" + lastTxId), ("%s%s%d__wavesBalance__" + toString(balance.available)), ("%s%s%d__usdtBalance__" + toString(usdtBalance))]
251206 }
252207
253208
254209 func applyBonuses (landAssetId,pieces) = {
255210 let infraLevel = valueOrElse(getInteger(stakingContract, keyInfraLevelByAssetId(landAssetId)), 0)
256- let artPieces = valueOrElse(getInteger(stakingContract, keyLandArtStatusByTypeAndAssetId(ARTPRESALE, landAssetId)), if (valueOrElse(getBoolean(stakingContract, keyPresaleArtActivatedByAssetId(landAssetId)), false))
257- then pieces
258- else 0)
211+ let artPieces = valueOrElse(getInteger(stakingContract, keyLandArtStatusByTypeAndAssetId(ARTPRESALE, landAssetId)), 0)
259212 let add6 = (infraLevel / 6)
260213 let add7 = (infraLevel / 7)
261214 $Tuple3(infraLevel, artPieces, ((DAILYRESBYPIECE + fraction(DAILYRESBYPIECE, ((infraLevel + add6) + (2 * add7)), 5)) + fraction(DAILYRESBYPIECE, artPieces, (pieces * 5))))
262215 }
263216
264217
265218 func numPiecesBySize (landSize) = match landSize {
266219 case _ =>
267220 if (("S" == $match0))
268221 then SSIZE
269222 else if (("M" == $match0))
270223 then MSIZE
271224 else if (("L" == $match0))
272225 then LSIZE
273226 else if (("XL" == $match0))
274227 then XLSIZE
275228 else if (("XXL" == $match0))
276229 then XXLSIZE
277230 else throw("Unknown land size")
278231 }
279232
280233
281234 func getWarehouseTotalVolume (volPrefix) = {
282235 let parts = split(volPrefix, "_")
283236 ((WHMULTIPLIER * (parseIntValue(parts[1]) + 1)) * parseIntValue(parts[0]))
284237 }
285238
286239
287-func getWarehouseOccupiedVol (currentWh) = {
288- let goods = currentWh[whIdxProd]
289- func sumResMat (acc,item) = (acc + parseIntValue(item))
290-
291- func sumProd (acc,item) = {
292- let idx = acc._1
293- let pkgSize = productPackages[idx]
294- let pkgs = (((parseIntValue(item) + pkgSize) - 1) / pkgSize)
295- $Tuple2((idx + 1), (acc._2 + (pkgs * MULT8)))
296- }
297-
298- let whResVol = {
299- let $l = split(currentWh[whIdxRes], "_")
300- let $s = size($l)
301- let $acc0 = 0
302- func $f0_1 ($a,$i) = if (($i >= $s))
303- then $a
304- else sumResMat($a, $l[$i])
305-
306- func $f0_2 ($a,$i) = if (($i >= $s))
307- then $a
308- else throw("List size exceeds 6")
309-
310- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
311- }
312- let whMatVol = {
313- let $l = split(currentWh[whIdxMat], "_")
314- let $s = size($l)
315- let $acc0 = 0
316- func $f1_1 ($a,$i) = if (($i >= $s))
317- then $a
318- else sumResMat($a, $l[$i])
319-
320- func $f1_2 ($a,$i) = if (($i >= $s))
321- then $a
322- else throw("List size exceeds 6")
323-
324- $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6)
325- }
326- let whGoodsVol = if ((goods == ""))
327- then 0
328- else ( let $l = split_4C(goods, "_")
329- let $s = size($l)
330- let $acc0 = $Tuple2(0, 0)
331- func $f2_1 ($a,$i) = if (($i >= $s))
332- then $a
333- else sumProd($a, $l[$i])
334-
335- func $f2_2 ($a,$i) = if (($i >= $s))
336- then $a
337- else throw("List size exceeds 50")
338-
339- $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_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))._2
340- ((whResVol + whMatVol) + whGoodsVol)
341- }
342-
343-
344240 func getWarehouse (whKey,landIndex,infraLevel) = {
345241 let volPrefix = ((toString(landIndex) + "_") + toString(infraLevel))
346- let whTotal = getWarehouseTotalVolume(volPrefix)
347- let whStr = valueOrElse(getString(stakingContract, whKey), (volPrefix + ":0_0_0_0_0_0:0_0_0_0_0_0::0"))
348- let wh = split(whStr, ":")
349- let whOccupied = getWarehouseOccupiedVol(wh)
350- let whLoft = if ((5 > size(wh)))
351- then makeString(["0", toString(whOccupied), toString((whTotal - whOccupied)), toString(whTotal)], "_")
352- else {
353- let loft = split(wh[whIdxLOFT], "_")
354- let whLocked = parseIntValue(loft[volLocked])
355- let occ = if ((size(loft) > 1))
356- then parseIntValue(loft[volOccupied])
357- else whOccupied
358- makeString([toString(whLocked), toString(occ), toString(((whTotal - whLocked) - occ)), toString(whTotal)], "_")
359- }
360-[wh[whIdxLevels], if ((size(split(wh[whIdxRes], "_")) == NUMRES))
361- then wh[whIdxRes]
362- else "0_0_0_0_0_0", if ((size(split(wh[whIdxMat], "_")) == NUMRES))
363- then wh[whIdxMat]
364- else "0_0_0_0_0_0", wh[whIdxProd], whLoft]
242+ let totS = toString(getWarehouseTotalVolume(volPrefix))
243+ let whStr = valueOrElse(getString(stakingContract, whKey), ((((volPrefix + ":0_0_0_0_0_0:0_0_0_0_0_0::0_0_") + totS) + "_") + totS))
244+ split(whStr, ":")
365245 }
366246
367247
368248 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)))
369249
370250
371251 func duckInfoArray (duckAssetId,owner,duckInf) = {
372252 let customName = valueOrElse(getString(stakingContract, keyDuckAssetIdToCustomName(duckAssetId)), duckInf._2)
373253 [("%s%s__assetId__" + duckAssetId), ("%s%s__owner__" + owner), ("%s%s__customName__" + customName), ("%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)]
374254 }
375255
376256
377257 func landInfoArray (landAssetId,owner,stakedTime) = if ((landAssetId == ""))
378258 then throw("landAssetId is required")
379259 else {
380260 let a = value(assetInfo(fromBase58String(landAssetId)))
381261 let d = split(a.description, "_")
382262 let landNum = if ((a.quantity > 0))
383263 then d[recLandNum]
384264 else ("-" + d[recLandNum])
385265 let pieces = numPiecesBySize(d[recLandSize])
386266 let productivity = applyBonuses(landAssetId, pieces)
387267 let deltaTime = (lastBlock.timestamp - stakedTime)
388268 let availRes = if ((stakedTime > 0))
389269 then fraction(deltaTime, (productivity._3 * pieces), DAYMILLIS)
390270 else 0
391271 let needMat = fraction(InfraUpgradeCostS, (pieces * (productivity._1 + 1)), SSIZE)
392272 let globalAndLocal = if ((stakedTime > 0))
393273 then asSplitResult(invoke(stakingContract, "splitByGlobalAndLocalWeightsREADONLY", [needMat, availRes, d[recTerrains]], nil))
394274 else $Tuple2(asListIntCompacted(invoke(stakingContract, "splitByGlobalWeightsREADONLY", [needMat], nil)), "")
395275 let customName = valueOrElse(getString(stakingContract, keyLandAssetIdToCustomName(landAssetId)), ((d[recContinent] + "-") + d[recLandNum]))
396276 [("%s%s__assetId__" + landAssetId), ("%s%s__owner__" + owner), ("%s%s__customName__" + customName), ("%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), ":")), ("%s%s__landOrder__" + valueOrElse(getString(economyContract, keyOrderByLand(landAssetId)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
397277 }
398278
399279
400280 func landOrderInfoArray (landAssetId,owner) = if ((landAssetId == ""))
401281 then throw("landAssetId is required")
402282 else {
403283 let a = value(assetInfo(fromBase58String(landAssetId)))
404284 let d = split(a.description, "_")
405285 let pieces = numPiecesBySize(d[recLandSize])
406286 let productivity = applyBonuses(landAssetId, pieces)
407287 [("%s%s__assetId__" + landAssetId), ("%s%s__owner__" + owner), ("%s%s__warehouse__" + makeString(getWarehouse(keyWarehouseByLand(landAssetId), (pieces / SSIZE), productivity._1), ":")), ("%s%s__landOrder__" + valueOrElse(getString(economyContract, keyOrderByLand(landAssetId)), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"))]
408288 }
409289
410290
411291 @Callable(i)
412292 func constructorV1 (stakingContract,economyContract,governanceContract) = if ((i.caller != this))
413293 then throw("permissions denied")
414294 else [StringEntry(keyRestCfg(), makeString(["%s%s%s", stakingContract, economyContract, governanceContract], SEP))]
415295
416296
417297
418298 @Callable(i)
419299 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
420300
421301
422302
423303 @Callable(i)
424304 func duckByOwnerInfoREADONLY (userAddress) = {
425305 let stakedDuck = getString(stakingContract, keyStakedDuckByOwner(userAddress))
426306 $Tuple2(nil, if (if (isDefined(addressFromString(userAddress)))
427307 then isDefined(stakedDuck)
428308 else false)
429309 then {
430310 let duckAssetId = value(stakedDuck)
431311 duckInfoArray(duckAssetId, userAddress, duckInfoTuple(duckAssetId))
432312 }
433313 else duckInfoArray("", userAddress, $Tuple5(-1, "", "", -1, "")))
434314 }
435315
436316
437317
438318 @Callable(i)
439319 func duckByAssetIdInfoREADONLY (duckAssetId) = {
440320 let owner = getString(stakingContract, keyDuckIdToOwner(duckAssetId))
441321 let duckInf = duckInfoTuple(duckAssetId)
442322 $Tuple2(nil, duckInfoArray(duckAssetId, if (isDefined(owner))
443323 then value(owner)
444324 else "", duckInfoTuple(duckAssetId)))
445325 }
446326
447327
448328
449329 @Callable(i)
450330 func landByAssetIdInfoREADONLY (landAssetId) = if ((landAssetId == ""))
451331 then throw("landAssetId is required")
452332 else {
453333 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
454334 let owner = if ((stakedTime > 0))
455335 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
456336 else ""
457337 $Tuple2(nil, landInfoArray(landAssetId, owner, stakedTime))
458338 }
459339
460340
461341
462342 @Callable(i)
463343 func stakedLandsByOwnerInfoREADONLY (landOwnerAddress) = if ((landOwnerAddress == ""))
464344 then throw("landOwnerAddress is required")
465345 else {
466346 let landsStr = getString(stakingContract, keyStakedLandsByOwner(landOwnerAddress))
467347 let lands = if (isDefined(landsStr))
468348 then split_51C(value(landsStr), "_")
469349 else nil
470350 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
471351 then throw("landAssetId is required")
472352 else {
473353 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
474354 (acc :+ landInfoArray(landAssetId, landOwnerAddress, stakedTime))
475355 }
476356
477357 let r = {
478358 let $l = lands
479359 let $s = size($l)
480360 let $acc0 = nil
481361 func $f0_1 ($a,$i) = if (($i >= $s))
482362 then $a
483363 else oneLand($a, $l[$i])
484364
485365 func $f0_2 ($a,$i) = if (($i >= $s))
486366 then $a
487367 else throw("List size exceeds 40")
488368
489369 $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($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)
490370 }
491371 $Tuple2(nil, r)
492372 }
493373
494374
495375
496376 @Callable(i)
497377 func landsByIdsInfoREADONLY (landAssetIds) = {
498378 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
499379 then throw("landAssetId is required")
500380 else {
501381 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
502382 let owner = if ((stakedTime > 0))
503383 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
504384 else ""
505385 (acc :+ landInfoArray(landAssetId, owner, stakedTime))
506386 }
507387
508388 let r = {
509389 let $l = landAssetIds
510390 let $s = size($l)
511391 let $acc0 = nil
512392 func $f0_1 ($a,$i) = if (($i >= $s))
513393 then $a
514394 else oneLand($a, $l[$i])
515395
516396 func $f0_2 ($a,$i) = if (($i >= $s))
517397 then $a
518398 else throw("List size exceeds 40")
519399
520400 $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($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)
521401 }
522402 $Tuple2(nil, r)
523403 }
524404
525405
526406
527407 @Callable(i)
528408 func warehouseOrderByAssetIdInfoREADONLY (landAssetId) = if ((landAssetId == ""))
529409 then throw("landAssetId is required")
530410 else {
531411 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
532412 let owner = if ((stakedTime > 0))
533413 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
534414 else ""
535415 $Tuple2(nil, landOrderInfoArray(landAssetId, owner))
536416 }
537417
538418
539419
540420 @Callable(i)
541421 func ordersByLandIdsInfoREADONLY (landAssetIds) = {
542422 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
543423 then throw("landAssetId is required")
544424 else {
545425 let stakedTime = valueOrElse(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId)), -1)
546426 let owner = if ((stakedTime > 0))
547427 then value(getString(stakingContract, keyLandAssetIdToOwner(landAssetId)))
548428 else ""
549429 (acc :+ landOrderInfoArray(landAssetId, owner))
550430 }
551431
552432 let r = {
553433 let $l = landAssetIds
554434 let $s = size($l)
555435 let $acc0 = nil
556436 func $f0_1 ($a,$i) = if (($i >= $s))
557437 then $a
558438 else oneLand($a, $l[$i])
559439
560440 func $f0_2 ($a,$i) = if (($i >= $s))
561441 then $a
562442 else throw("List size exceeds 40")
563443
564444 $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($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)
565445 }
566446 $Tuple2(nil, r)
567447 }
568448
569449
570450
571451 @Callable(i)
572452 func cancelWarehouseOrders (landAssetIds) = if ((i.caller != this))
573453 then throw("permission denied")
574454 else {
575455 let blocked = getBoolean(stakingContract, keyBlocked())
576456 if (if (!(isDefined(blocked)))
577457 then true
578458 else (value(blocked) == false))
579459 then throw("Contracts should be blocked before canceling orders")
580460 else {
581461 func oneLand (a,landAssetId) = if ((landAssetId == ""))
582462 then throw("landAssetId is required")
583463 else {
584464 let c = asBoolean(invoke(economyContract, "setWarehouseOrder", ["0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:", landAssetId], nil))
585465 if (if (a)
586466 then true
587467 else c)
588468 then !(if (a)
589469 then c
590470 else false)
591471 else false
592472 }
593473
594474 let r = {
595475 let $l = landAssetIds
596476 let $s = size($l)
597477 let $acc0 = false
598478 func $f0_1 ($a,$i) = if (($i >= $s))
599479 then $a
600480 else oneLand($a, $l[$i])
601481
602482 func $f0_2 ($a,$i) = if (($i >= $s))
603483 then $a
604484 else throw("List size exceeds 30")
605485
606486 $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($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)
607487 }
608488 $Tuple2(nil, r)
609489 }
610490 }
611491
612492
613493
614494 @Callable(i)
615-func replaceBooleanArtifacts (landAssetIds) = if ((i.caller != this))
616- then throw("permission denied")
617- else {
618- func oneLand (acc,landAssetId) = if ((landAssetId == ""))
619- then throw("landAssetId is required")
620- else if (isDefined(getBoolean(stakingContract, keyPresaleArtActivatedByAssetId(landAssetId))))
621- then (acc + asInt(invoke(stakingContract, "replaceBooleanArtifact", [landAssetId], nil)))
622- else acc
623-
624- let r = {
625- let $l = landAssetIds
626- let $s = size($l)
627- let $acc0 = 0
628- func $f0_1 ($a,$i) = if (($i >= $s))
629- then $a
630- else oneLand($a, $l[$i])
631-
632- func $f0_2 ($a,$i) = if (($i >= $s))
633- then $a
634- else throw("List size exceeds 25")
635-
636- $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($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)
637- }
638- $Tuple2(nil, r)
639- }
640-
641-
642-
643-@Callable(i)
644495 func fixWarehouseFormats (landAssetIds) = if ((i.caller != this))
645496 then throw("permission denied")
646497 else {
647498 func oneLand (acc,landAssetId) = if ((landAssetId == ""))
648499 then throw("landAssetId is required")
649- else if (isDefined(getInteger(stakingContract, keyStakedTimeByAssetId(landAssetId))))
650- then (acc + size(asString(invoke(stakingContract, "fixWarehouseFormat", [landAssetId], nil))))
651- else acc
500+ else (acc + size(asString(invoke(stakingContract, "fixWarehouseFormat", [landAssetId], nil))))
652501
653502 let r = {
654503 let $l = landAssetIds
655504 let $s = size($l)
656505 let $acc0 = 0
657506 func $f0_1 ($a,$i) = if (($i >= $s))
658507 then $a
659508 else oneLand($a, $l[$i])
660509
661510 func $f0_2 ($a,$i) = if (($i >= $s))
662511 then $a
663512 else throw("List size exceeds 25")
664513
665514 $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($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)
666515 }
667516 $Tuple2(nil, r)
668517 }
669518
670519
671520
672521 @Callable(i)
673522 func sendUsdtPrize (userAddress) = if ((i.caller != stakingContract))
674523 then throw("permission denied")
675524 else {
676525 let amt = fraction(assetBalance(this, usdtAssetId), USDTPRIZEPART, MULT6)
677526 $Tuple2([ScriptTransfer(addressFromStringValue(userAddress), amt, usdtAssetId)], amt)
678527 }
679528
680529

github/deemru/w8io/169f3d6 
76.86 ms