tx · 7jn4StSpD6Dd28GGEMTFie6XYkEahk3rr7iUr8wsaB7c

3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1:  -0.01100000 Waves

2024.01.09 15:53 [2923972] smart account 3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1 > SELF 0.00000000 Waves

{ "type": 13, "id": "7jn4StSpD6Dd28GGEMTFie6XYkEahk3rr7iUr8wsaB7c", "fee": 1100000, "feeAssetId": null, "timestamp": 1704804870240, "version": 1, "sender": "3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1", "senderPublicKey": "7c3qLtcJ7EaPS2JDjXv8MBbd4kpyc6R27wcn5GgvZhur", "proofs": [ "2Mh7GwYsYPk71a1CuDrMZbriXPWyhAb8WGbmSUjvSMWYx8Yg2tb5v5EPruFUdrikXppq3h2KSRkspRJBKh79eYvc" ], "script": "base64:CAIWCAISBgoECAEBARIAEgMKAQgSAwoBCBwADGNvbnRyYWN0RmlsZQIQdmVzdGluZ19uZW8ucmlkZQADU0VQAgJfXwAISURTX0xJU1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQJAMwIAgAVCQDMCAIAFgkAzAgCABcJAMwIAgAYCQDMCAIAGQkAzAgCABoJAMwIAgAbCQDMCAIAHAkAzAgCAB0FA25pbAARTUFYX1ZFU1RJTkdfQ09VTlQJAJADAQUISURTX0xJU1QBCHRocm93RXJyAQNtc2cJAAIBCQCsAgIJAKwCAgUMY29udHJhY3RGaWxlAgI6IAUDbXNnAAprZXlBc3NldElkCQC5CQIJAMwIAgICJXMJAMwIAgIHYXNzZXRJZAUDbmlsBQNTRVAADWFzc2V0SWRTdHJpbmcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUKa2V5QXNzZXRJZAIFV0FWRVMADGFzc2V0SWRCeXRlcwMJAAACBQ1hc3NldElkU3RyaW5nAgVXQVZFUwUEdW5pdAkA2QQBBQ1hc3NldElkU3RyaW5nAAxrZXlBZG1pbkxpc3QJALkJAgkAzAgCAgIlcwkAzAgCAglhZG1pbkxpc3QFA25pbAUDU0VQAAprZXlCYW5MaXN0CQC5CQIJAMwIAgICJXMJAMwIAgIHYmFuTGlzdAUDbmlsBQNTRVAACWFkbWluTGlzdAQHJG1hdGNoMAkAnQgCBQR0aGlzBQxrZXlBZG1pbkxpc3QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQC1CQIFAXMFA1NFUAUDbmlsAAdiYW5MaXN0BAckbWF0Y2gwCQCdCAIFBHRoaXMFCmtleUJhbkxpc3QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwAwkAAAIFAXMCAAUDbmlsCQC9CQIFAXMFA1NFUAUDbmlsARRpc1ZhbGlkQWRkcmVzc1N0cmluZwENYWRkcmVzc1N0cmluZwQHJG1hdGNoMAkApggBBQ1hZGRyZXNzU3RyaW5nAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAGBwEOa2V5VXNlclZlc3RpbmcCC3VzZXJBZGRyZXNzAmlkBAZjaGVja3MJAMwIAgMJARRpc1ZhbGlkQWRkcmVzc1N0cmluZwEFC3VzZXJBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICFWFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgCQDMCAIDAwkAZwIFAmlkAAAJAGYCBRFNQVhfVkVTVElOR19DT1VOVAUCaWQHBgkBCHRocm93RXJyAQkAuQkCCQDMCAICFmlkIHNob3VsZCBiZSBsZXNzIHRoYW4JAMwIAgkApAMBBRFNQVhfVkVTVElOR19DT1VOVAkAzAgCAgRnb3Q6CQDMCAIJAKQDAQUCaWQFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICB3Zlc3RpbmcJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkApAMBBQJpZAUDbmlsBQNTRVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEmtleVVzZXJBY2N1bXVsYXRlZAELdXNlckFkZHJlc3MEBmNoZWNrcwkAzAgCAwkBFGlzVmFsaWRBZGRyZXNzU3RyaW5nAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIVYWRkcmVzcyBpcyBub3QgdmFsaWQ6CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwCASAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAuQkCCQDMCAICBCVzJXMJAMwIAgILYWNjdW11bGF0ZWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFmb3JtYXRVc2VyVmVzdGluZwMNdmVzdGluZ0Ftb3VudApzdGFydEJsb2NrCmxvY2tMZW5ndGgEBmNoZWNrcwkAzAgCAwkAZwIFDXZlc3RpbmdBbW91bnQAAAYJAQh0aHJvd0VycgECIXZlc3RpbmcgYW1vdW50IGNhbm5vdCBiZSBuZWdhdGl2ZQkAzAgCAwkAZwIFCnN0YXJ0QmxvY2sAAAYJAQh0aHJvd0VycgECHnN0YXJ0IGJsb2NrIGNhbm5vdCBiZSBuZWdhdGl2ZQkAzAgCAwkAZwIFCmxvY2tMZW5ndGgAAAYJAQh0aHJvd0VycgECHmxvY2sgbGVuZ3RoIGNhbm5vdCBiZSBuZWdhdGl2ZQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCCQCkAwEFDXZlc3RpbmdBbW91bnQJAMwIAgkApAMBBQpzdGFydEJsb2NrCQDMCAIJAKQDAQUKbG9ja0xlbmd0aAUDbmlsBQNTRVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEHBhcnNlVXNlclZlc3RpbmcCC3VzZXJBZGRyZXNzAmlkBAckbWF0Y2gwCQCdCAIFBHRoaXMJAQ5rZXlVc2VyVmVzdGluZwIFC3VzZXJBZGRyZXNzBQJpZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcECXJhd1N0cmluZwUHJG1hdGNoMAQLc3BsaXRTdHJpbmcJALUJAgUJcmF3U3RyaW5nBQNTRVAEDXZlc3RpbmdBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtzcGxpdFN0cmluZwABBApzdGFydEJsb2NrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULc3BsaXRTdHJpbmcAAgQKbG9ja0xlbmd0aAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC3NwbGl0U3RyaW5nAAMJAJUKAwUNdmVzdGluZ0Ftb3VudAUKc3RhcnRCbG9jawUKbG9ja0xlbmd0aAkAlQoDAAAAAAAAARFrZXlWZXN0aW5nSGlzdG9yeQMGYWN0aW9uC3VzZXJBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgdoaXN0b3J5CQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFBmFjdGlvbgkAzAgCBQR0eElkBQNuaWwFA1NFUAESY2FsY1VubG9ja2VkQW1vdW50AwZhbW91bnQKc3RhcnRCbG9jawpsb2NrTGVuZ3RoBA1lbGFwc2VkQmxvY2tzCQBlAgUGaGVpZ2h0BQpzdGFydEJsb2NrBA51bmxvY2tlZEFtb3VudAMDCQECIT0CBQpsb2NrTGVuZ3RoAAAJAGYCBQ1lbGFwc2VkQmxvY2tzAAAHCQCXAwEJAMwIAgkAawMFBmFtb3VudAUNZWxhcHNlZEJsb2NrcwUKbG9ja0xlbmd0aAkAzAgCBQZhbW91bnQFA25pbAAACQCUCgIFDnVubG9ja2VkQW1vdW50CQBlAgUGYW1vdW50BQ51bmxvY2tlZEFtb3VudAEVZ2V0VXNlclVubG9ja2VkQW1vdW50Agt1c2VyQWRkcmVzcwJpZAQLJHQwMzIxMzMyOTIJARBwYXJzZVVzZXJWZXN0aW5nAgULdXNlckFkZHJlc3MFAmlkBA12ZXN0aW5nQW1vdW50CAULJHQwMzIxMzMyOTICXzEECnN0YXJ0QmxvY2sIBQskdDAzMjEzMzI5MgJfMgQKbG9ja0xlbmd0aAgFCyR0MDMyMTMzMjkyAl8zBAskdDAzMjk1MzM5MgkBEmNhbGNVbmxvY2tlZEFtb3VudAMFDXZlc3RpbmdBbW91bnQFCnN0YXJ0QmxvY2sFCmxvY2tMZW5ndGgEDnVubG9ja2VkQW1vdW50CAULJHQwMzI5NTMzOTICXzEED3JlbWFpbmluZ0Ftb3VudAgFCyR0MDMyOTUzMzkyAl8yCQCUCgIFDnVubG9ja2VkQW1vdW50BQ9yZW1haW5pbmdBbW91bnQBF2dldFVwZGF0ZVZlc3RpbmdBY3Rpb25zAgt1c2VyQWRkcmVzcwJpZAQLJHQwMzQ5OTM1NzgJARBwYXJzZVVzZXJWZXN0aW5nAgULdXNlckFkZHJlc3MFAmlkBA12ZXN0aW5nQW1vdW50CAULJHQwMzQ5OTM1NzgCXzEECnN0YXJ0QmxvY2sIBQskdDAzNDk5MzU3OAJfMgQKbG9ja0xlbmd0aAgFCyR0MDM0OTkzNTc4Al8zBAskdDAzNTgxMzY1OQkBFWdldFVzZXJVbmxvY2tlZEFtb3VudAIFC3VzZXJBZGRyZXNzBQJpZAQOdW5sb2NrZWRBbW91bnQIBQskdDAzNTgxMzY1OQJfMQQPcmVtYWluaW5nQW1vdW50CAULJHQwMzU4MTM2NTkCXzIED3JlbWFpbmluZ0Jsb2NrcwkAlgMBCQDMCAIJAGUCCQBkAgUKc3RhcnRCbG9jawUKbG9ja0xlbmd0aAUGaGVpZ2h0CQDMCAIAAAUDbmlsBBR1cGRhdGVWZXN0aW5nQWN0aW9ucwMJAQIhPQIFDnVubG9ja2VkQW1vdW50AAADCQECIT0CBQ9yZW1haW5pbmdCbG9ja3MAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5VXNlclZlc3RpbmcCBQt1c2VyQWRkcmVzcwUCaWQJARFmb3JtYXRVc2VyVmVzdGluZwMFD3JlbWFpbmluZ0Ftb3VudAUGaGVpZ2h0BQ9yZW1haW5pbmdCbG9ja3MFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5VXNlclZlc3RpbmcCBQt1c2VyQWRkcmVzcwUCaWQFA25pbAUDbmlsCQCUCgIFFHVwZGF0ZVZlc3RpbmdBY3Rpb25zBQ51bmxvY2tlZEFtb3VudAETZ2V0VXNlckNsYWltQWN0aW9ucwILdXNlckFkZHJlc3MCaWQECyR0MDQxMjM0MjA4CQEXZ2V0VXBkYXRlVmVzdGluZ0FjdGlvbnMCBQt1c2VyQWRkcmVzcwUCaWQEFHVwZGF0ZVZlc3RpbmdBY3Rpb25zCAULJHQwNDEyMzQyMDgCXzEEDnVubG9ja2VkQW1vdW50CAULJHQwNDEyMzQyMDgCXzIED3RyYW5zZmVyQWN0aW9ucwMJAQIhPQIFDnVubG9ja2VkQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFDnVubG9ja2VkQW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAUDbmlsCQCUCgIJAM4IAgUUdXBkYXRlVmVzdGluZ0FjdGlvbnMFD3RyYW5zZmVyQWN0aW9ucwUOdW5sb2NrZWRBbW91bnQBFmdldEFsbFVzZXJDbGFpbUFjdGlvbnMBC3VzZXJBZGRyZXNzCgENYWN0aW9uc0hlbHBlcgIDYWNjAWEECyR0MDQ1ODI0NjIyBQNhY2MEF2FsbFZlc3RpbmdzQ2xhaW1BY3Rpb25zCAULJHQwNDU4MjQ2MjICXzEEA3N1bQgFCyR0MDQ1ODI0NjIyAl8yBAskdDA0NjI3NDcwMwkBE2dldFVzZXJDbGFpbUFjdGlvbnMCBQt1c2VyQWRkcmVzcwUBYQQTdmVzdGluZ0NsYWltQWN0aW9ucwgFCyR0MDQ2Mjc0NzAzAl8xBAtjbGFpbUFtb3VudAgFCyR0MDQ2Mjc0NzAzAl8yCQCUCgIJAM4IAgUXYWxsVmVzdGluZ3NDbGFpbUFjdGlvbnMFE3Zlc3RpbmdDbGFpbUFjdGlvbnMJAGQCBQNzdW0FC2NsYWltQW1vdW50CgACJGwFCElEU19MSVNUCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENYWN0aW9uc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMzAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4BJmdldE1vdmVBbGxVbmxvY2tlZFRvQWNjdW11bGF0b3JBY3Rpb25zAQt1c2VyQWRkcmVzcwoBDWFjdGlvbnNIZWxwZXICA2FjYwFhBAskdDA0OTk1NTAzNgUDYWNjBBh1cGRhdGVBbGxWZXN0aW5nc0FjdGlvbnMIBQskdDA0OTk1NTAzNgJfMQQDc3VtCAULJHQwNDk5NTUwMzYCXzIECyR0MDUwNDE1MTI1CQEXZ2V0VXBkYXRlVmVzdGluZ0FjdGlvbnMCBQt1c2VyQWRkcmVzcwUBYQQUdXBkYXRlVmVzdGluZ0FjdGlvbnMIBQskdDA1MDQxNTEyNQJfMQQOdW5sb2NrZWRBbW91bnQIBQskdDA1MDQxNTEyNQJfMgkAlAoCCQDOCAIFGHVwZGF0ZUFsbFZlc3RpbmdzQWN0aW9ucwUUdXBkYXRlVmVzdGluZ0FjdGlvbnMJAGQCBQNzdW0FDnVubG9ja2VkQW1vdW50BAskdDA1MjExNTI5OQoAAiRsBQhJRFNfTElTVAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWFjdGlvbnNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeBBh1cGRhdGVBbGxWZXN0aW5nc0FjdGlvbnMIBQskdDA1MjExNTI5OQJfMQQLdW5sb2NrZWRTdW0IBQskdDA1MjExNTI5OQJfMgQOb2xkQWNjdW11bGF0ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBEmtleVVzZXJBY2N1bXVsYXRlZAEFC3VzZXJBZGRyZXNzAAAEGHVwZGF0ZUFjY3VtdWxhdGVkQWN0aW9ucwMJAQIhPQIFC3VubG9ja2VkU3VtAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyQWNjdW11bGF0ZWQBBQt1c2VyQWRkcmVzcwkAZAIFDm9sZEFjY3VtdWxhdGVkBQt1bmxvY2tlZFN1bQUDbmlsBQNuaWwJAJQKAgkAzggCBRh1cGRhdGVBbGxWZXN0aW5nc0FjdGlvbnMFGHVwZGF0ZUFjY3VtdWxhdGVkQWN0aW9ucwULdW5sb2NrZWRTdW0BGmdldENsYWltQWNjdW11bGF0ZWRBY3Rpb25zAQt1c2VyQWRkcmVzcwQOb2xkQWNjdW11bGF0ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBEmtleVVzZXJBY2N1bXVsYXRlZAEFC3VzZXJBZGRyZXNzAAADCQECIT0CBQ5vbGRBY2N1bXVsYXRlZAAACQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFDm9sZEFjY3VtdWxhdGVkBQxhc3NldElkQnl0ZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVVzZXJBY2N1bXVsYXRlZAEFC3VzZXJBZGRyZXNzBQNuaWwFDm9sZEFjY3VtdWxhdGVkCQCUCgIFA25pbAAAARJnZXRDbGFpbUFsbEFjdGlvbnMBC3VzZXJBZGRyZXNzBAskdDA2MDY3NjIwMAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFB2Jhbkxpc3QFC3VzZXJBZGRyZXNzCQEWZ2V0QWxsVXNlckNsYWltQWN0aW9ucwEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAAABAxjbGFpbUFjdGlvbnMIBQskdDA2MDY3NjIwMAJfMQQOdW5sb2NrZWRBbW91bnQIBQskdDA2MDY3NjIwMAJfMgQLJHQwNjIwMzYyOTMJARpnZXRDbGFpbUFjY3VtdWxhdGVkQWN0aW9ucwEFC3VzZXJBZGRyZXNzBBdjbGFpbUFjY3VtdWxhdGVkQWN0aW9ucwgFCyR0MDYyMDM2MjkzAl8xBBFhY2N1bXVsYXRlZEFtb3VudAgFCyR0MDYyMDM2MjkzAl8yBAt0b3RhbEFtb3VudAkAZAIFDnVubG9ja2VkQW1vdW50BRFhY2N1bXVsYXRlZEFtb3VudAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwUXY2xhaW1BY2N1bXVsYXRlZEFjdGlvbnMFC3RvdGFsQW1vdW50ARVnZXRBdmFpbGFibGVWZXN0aW5nSWQBC3VzZXJBZGRyZXNzCgEGaGVscGVyAgthdmFpbGFibGVJZAJpZAQLJHQwNjUxMjY1OTEJARBwYXJzZVVzZXJWZXN0aW5nAgULdXNlckFkZHJlc3MFAmlkBA12ZXN0aW5nQW1vdW50CAULJHQwNjUxMjY1OTECXzEECnN0YXJ0QmxvY2sIBQskdDA2NTEyNjU5MQJfMgQKbG9ja0xlbmd0aAgFCyR0MDY1MTI2NTkxAl8zAwkAZgIFDXZlc3RpbmdBbW91bnQAAAULYXZhaWxhYmxlSWQDCQAAAgULYXZhaWxhYmxlSWQA////////////AQUCaWQJAJcDAQkAzAgCBQthdmFpbGFibGVJZAkAzAgCBQJpZAUDbmlsBAthdmFpbGFibGVJZAoAAiRsBQhJRFNfTElTVAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAA////////////AQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEGaGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgMJAAACBQthdmFpbGFibGVJZAD///////////8BCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIodXNlciBleGNlZWRlZCBtYXggYWN0aXZlIHZlc3RpbmcgY291bnQ6IAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQthdmFpbGFibGVJZAEUZ2V0TmV3VmVzdGluZ0FjdGlvbnMFC3VzZXJBZGRyZXNzAmlkDXZlc3RpbmdBbW91bnQKc3RhcnRCbG9jawpsb2NrTGVuZ3RoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlVc2VyVmVzdGluZwIFC3VzZXJBZGRyZXNzBQJpZAkBEWZvcm1hdFVzZXJWZXN0aW5nAwUNdmVzdGluZ0Ftb3VudAUKc3RhcnRCbG9jawUKbG9ja0xlbmd0aAUDbmlsBAFpAQ52ZXN0aW5nRm9yVXNlcgQLdXNlckFkZHJlc3MNdmVzdGluZ0Ftb3VudApzdGFydEJsb2NrCmxvY2tMZW5ndGgEBWNoZWNrCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIgc2hvdWxkIGJlIHdpdGggZXhhY3RseSAxIHBheW1lbnQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDGFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhtwYXltZW50IGFzc2V0SWQgc2hvdWxkIGJlOiAJAMwIAgUNYXNzZXRJZFN0cmluZwUDbmlsAgEgCQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFDXZlc3RpbmdBbW91bnQGCQEIdGhyb3dFcnIBAi9wYXltZW50IGFtb3VudCBzaG91bGQgYmUgZXF1YWwgdG8gdmVzdGluZ0Ftb3VudAkAzAgCAwMJAAACBQlhZG1pbkxpc3QFA25pbAYJAQ9jb250YWluc0VsZW1lbnQCBQlhZG1pbkxpc3QJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIReW91IG11c3QgYmUgYWRtaW4FA25pbAMJAAACBQVjaGVjawUFY2hlY2sEAmlkCQEVZ2V0QXZhaWxhYmxlVmVzdGluZ0lkAQULdXNlckFkZHJlc3MEDmhpc3RvcnlBY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERa2V5VmVzdGluZ0hpc3RvcnkDAgZ2ZXN0ZWQFC3VzZXJBZGRyZXNzCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFDXZlc3RpbmdBbW91bnQFA25pbAkAzggCCQEUZ2V0TmV3VmVzdGluZ0FjdGlvbnMFBQt1c2VyQWRkcmVzcwUCaWQFDXZlc3RpbmdBbW91bnQFCnN0YXJ0QmxvY2sFCmxvY2tMZW5ndGgFDmhpc3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGNsYWltQWxsAAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAskdDA4MDY3ODEzMgkBEmdldENsYWltQWxsQWN0aW9ucwEFC3VzZXJBZGRyZXNzBAxjbGFpbUFjdGlvbnMIBQskdDA4MDY3ODEzMgJfMQQLdG90YWxBbW91bnQIBQskdDA4MDY3ODEzMgJfMgQOaGlzdG9yeUFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIJARFrZXlWZXN0aW5nSGlzdG9yeQMCB2NsYWltZWQFC3VzZXJBZGRyZXNzCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFC3RvdGFsQW1vdW50BQNuaWwDCQBmAgULdG90YWxBbW91bnQAAAkAzggCBQxjbGFpbUFjdGlvbnMFDmhpc3RvcnlBY3Rpb25zCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltAWkBA2JhbgELdXNlckFkZHJlc3MEBmNoZWNrcwkAzAgCAwMJAAACBQlhZG1pbkxpc3QFA25pbAYJAQ9jb250YWluc0VsZW1lbnQCBQlhZG1pbkxpc3QJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIReW91IG11c3QgYmUgYWRtaW4JAMwIAgMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFB2Jhbkxpc3QFC3VzZXJBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICG3VzZXIgYWxyZWFkeSBpbiBhIGJhbiBsaXN0OgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECyR0MDg2Nzk4NzY3CQEmZ2V0TW92ZUFsbFVubG9ja2VkVG9BY2N1bXVsYXRvckFjdGlvbnMBBQt1c2VyQWRkcmVzcwQYbW92ZVRvQWNjdW11bGF0ZWRBY3Rpb25zCAULJHQwODY3OTg3NjcCXzEEAl9hCAULJHQwODY3OTg3NjcCXzIEE2FkZFRvQmFuTGlzdEFjdGlvbnMJAMwIAgkBC1N0cmluZ0VudHJ5AgUKa2V5QmFuTGlzdAkAuwkCCQDNCAIFB2Jhbkxpc3QFC3VzZXJBZGRyZXNzAgJfXwUDbmlsCQDOCAIFGG1vdmVUb0FjY3VtdWxhdGVkQWN0aW9ucwUTYWRkVG9CYW5MaXN0QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQV1bmJhbgELdXNlckFkZHJlc3MEBmNoZWNrcwkAzAgCAwMJAAACBQlhZG1pbkxpc3QFA25pbAYJAQ9jb250YWluc0VsZW1lbnQCBQlhZG1pbkxpc3QJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIReW91IG11c3QgYmUgYWRtaW4JAMwIAgMJAQ9jb250YWluc0VsZW1lbnQCBQdiYW5MaXN0BQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhd1c2VyIG5vdCBpbiBhIGJhbiBsaXN0OgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECm5ld0Jhbkxpc3QEByRtYXRjaDAJAM8IAgUHYmFuTGlzdAULdXNlckFkZHJlc3MDCQABAgUHJG1hdGNoMAIDSW50BANpbmQFByRtYXRjaDAJANEIAgUHYmFuTGlzdAUDaW5kCQEIdGhyb3dFcnIBAit1c2VyIGFkZHJlc3MgaW5kZXggaW4gYmFuIGxpc3QgaXMgbm90IGZvdW5kAwkAAAIFCm5ld0Jhbkxpc3QFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQprZXlCYW5MaXN0BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUKa2V5QmFuTGlzdAkAuwkCBQpuZXdCYW5MaXN0AgJfXwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAGPDKCc=", "chainId": 84, "height": 2923972, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 98X4ibmc8qTMJqFX8dmgmz29qeHfKGDuGTUmuxGqagi8 Next: DWqrgmBr8MS9DmXUHuPDBtB5P6PbayEXpCsG6kEtXAZu Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 6 #-}
1+{-# STDLIB_VERSION 8 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "vesting_neo.ride"
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 6 #-}
1+{-# STDLIB_VERSION 8 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "vesting_neo.ride"
55
66 let b = "__"
77
88 let c = [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]
99
1010 let d = size(c)
1111
1212 func e (f) = throw(((a + ": ") + f))
1313
1414
1515 let g = makeString(["%s", "assetId"], b)
1616
1717 let h = valueOrElse(getString(this, g), "WAVES")
1818
1919 let i = if ((h == "WAVES"))
2020 then unit
2121 else fromBase58String(h)
2222
2323 let j = makeString(["%s", "adminList"], b)
2424
2525 let k = makeString(["%s", "banList"], b)
2626
2727 let l = {
2828 let m = getString(this, j)
2929 if ($isInstanceOf(m, "String"))
3030 then {
3131 let n = m
3232 split(n, b)
3333 }
3434 else nil
3535 }
3636
3737 let o = {
3838 let m = getString(this, k)
3939 if ($isInstanceOf(m, "String"))
4040 then {
4141 let n = m
4242 if ((n == ""))
4343 then nil
4444 else split_51C(n, b)
4545 }
4646 else nil
4747 }
4848
4949 func p (q) = {
5050 let m = addressFromString(q)
5151 if ($isInstanceOf(m, "Address"))
5252 then {
5353 let r = m
5454 true
5555 }
5656 else false
5757 }
5858
5959
6060 func s (t,u) = {
6161 let v = [if (p(t))
6262 then true
6363 else e(makeString(["address is not valid:", t], " ")), if (if ((u >= 0))
6464 then (d > u)
6565 else false)
6666 then true
6767 else e(makeString(["id should be less than", toString(d), "got:", toString(u)], " "))]
6868 if ((v == v))
6969 then makeString(["%s%s%d", "vesting", t, toString(u)], b)
7070 else throw("Strict value is not equal to itself.")
7171 }
7272
7373
7474 func w (t) = {
7575 let v = [if (p(t))
7676 then true
7777 else e(makeString(["address is not valid:", t], " "))]
7878 if ((v == v))
7979 then makeString(["%s%s", "accumulated", t], b)
8080 else throw("Strict value is not equal to itself.")
8181 }
8282
8383
8484 func x (y,z,A) = {
8585 let v = [if ((y >= 0))
8686 then true
8787 else e("vesting amount cannot be negative"), if ((z >= 0))
8888 then true
8989 else e("start block cannot be negative"), if ((A >= 0))
9090 then true
9191 else e("lock length cannot be negative")]
9292 if ((v == v))
9393 then makeString(["%d%d%d%d%d", toString(y), toString(z), toString(A)], b)
9494 else throw("Strict value is not equal to itself.")
9595 }
9696
9797
9898 func B (t,u) = {
9999 let m = getString(this, s(t, u))
100100 if ($isInstanceOf(m, "String"))
101101 then {
102102 let C = m
103103 let D = split(C, b)
104104 let y = parseIntValue(D[1])
105105 let z = parseIntValue(D[2])
106106 let A = parseIntValue(D[3])
107107 $Tuple3(y, z, A)
108108 }
109109 else $Tuple3(0, 0, 0)
110110 }
111111
112112
113113 func E (F,t,G) = makeString(["%s%s%s%s", "history", t, F, G], b)
114114
115115
116116 func H (I,z,A) = {
117117 let J = (height - z)
118118 let K = if (if ((A != 0))
119119 then (J > 0)
120120 else false)
121121 then min([fraction(I, J, A), I])
122122 else 0
123123 $Tuple2(K, (I - K))
124124 }
125125
126126
127127 func L (t,u) = {
128128 let M = B(t, u)
129129 let y = M._1
130130 let z = M._2
131131 let A = M._3
132132 let N = H(y, z, A)
133133 let K = N._1
134134 let O = N._2
135135 $Tuple2(K, O)
136136 }
137137
138138
139139 func P (t,u) = {
140140 let Q = B(t, u)
141141 let y = Q._1
142142 let z = Q._2
143143 let A = Q._3
144144 let R = L(t, u)
145145 let K = R._1
146146 let O = R._2
147147 let S = max([((z + A) - height), 0])
148148 let T = if ((K != 0))
149149 then if ((S != 0))
150150 then [StringEntry(s(t, u), x(O, height, S))]
151151 else [DeleteEntry(s(t, u))]
152152 else nil
153153 $Tuple2(T, K)
154154 }
155155
156156
157157 func U (t,u) = {
158158 let V = P(t, u)
159159 let T = V._1
160160 let K = V._2
161161 let W = if ((K != 0))
162162 then [ScriptTransfer(addressFromStringValue(t), K, i)]
163163 else nil
164164 $Tuple2((T ++ W), K)
165165 }
166166
167167
168168 func X (t) = {
169169 func Y (Z,r) = {
170170 let aa = Z
171171 let ab = aa._1
172172 let ac = aa._2
173173 let ad = U(t, r)
174174 let ae = ad._1
175175 let af = ad._2
176176 $Tuple2((ab ++ ae), (ac + af))
177177 }
178178
179179 let ag = c
180180 let ah = size(ag)
181181 let ai = $Tuple2(nil, 0)
182182 func aj (ak,al) = if ((al >= ah))
183183 then ak
184184 else Y(ak, ag[al])
185185
186186 func am (ak,al) = if ((al >= ah))
187187 then ak
188188 else throw("List size exceeds 30")
189189
190190 am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 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)
191191 }
192192
193193
194194 func an (t) = {
195195 func Y (Z,r) = {
196196 let ao = Z
197197 let ap = ao._1
198198 let ac = ao._2
199199 let aq = P(t, r)
200200 let T = aq._1
201201 let K = aq._2
202202 $Tuple2((ap ++ T), (ac + K))
203203 }
204204
205205 let ar = {
206206 let ag = c
207207 let ah = size(ag)
208208 let ai = $Tuple2(nil, 0)
209209 func aj (ak,al) = if ((al >= ah))
210210 then ak
211211 else Y(ak, ag[al])
212212
213213 func am (ak,al) = if ((al >= ah))
214214 then ak
215215 else throw("List size exceeds 30")
216216
217217 am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 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)
218218 }
219219 let ap = ar._1
220220 let as = ar._2
221221 let at = valueOrElse(getInteger(this, w(t)), 0)
222222 let au = if ((as != 0))
223223 then [IntegerEntry(w(t), (at + as))]
224224 else nil
225225 $Tuple2((ap ++ au), as)
226226 }
227227
228228
229229 func av (t) = {
230230 let at = valueOrElse(getInteger(this, w(t)), 0)
231231 if ((at != 0))
232232 then $Tuple2([ScriptTransfer(addressFromStringValue(t), at, i), DeleteEntry(w(t))], at)
233233 else $Tuple2(nil, 0)
234234 }
235235
236236
237237 func aw (t) = {
238238 let ax = if (!(containsElement(o, t)))
239239 then X(t)
240240 else $Tuple2(nil, 0)
241241 let ay = ax._1
242242 let K = ax._2
243243 let az = av(t)
244244 let aA = az._1
245245 let aB = az._2
246246 let aC = (K + aB)
247247 $Tuple2((ay ++ aA), aC)
248248 }
249249
250250
251251 func aD (t) = {
252252 func aE (aF,u) = {
253253 let aG = B(t, u)
254254 let y = aG._1
255255 let z = aG._2
256256 let A = aG._3
257257 if ((y > 0))
258258 then aF
259259 else if ((aF == -1))
260260 then u
261261 else min([aF, u])
262262 }
263263
264264 let aF = {
265265 let ag = c
266266 let ah = size(ag)
267267 let ai = -1
268268 func aj (ak,al) = if ((al >= ah))
269269 then ak
270270 else aE(ak, ag[al])
271271
272272 func am (ak,al) = if ((al >= ah))
273273 then ak
274274 else throw("List size exceeds 30")
275275
276276 am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 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)
277277 }
278278 if ((aF == -1))
279279 then e(makeString(["user exceeded max active vesting count: ", t], " "))
280280 else aF
281281 }
282282
283283
284284 func aH (t,u,y,z,A) = [StringEntry(s(t, u), x(y, z, A))]
285285
286286
287287 @Callable(aI)
288288 func vestingForUser (t,y,z,A) = {
289289 let aJ = [if ((size(aI.payments) == 1))
290290 then true
291291 else e("should be with exactly 1 payment"), if ((aI.payments[0].assetId == i))
292292 then true
293293 else e(makeString(["payment assetId should be: ", h], " ")), if ((aI.payments[0].amount == y))
294294 then true
295295 else e("payment amount should be equal to vestingAmount"), if (if ((l == nil))
296296 then true
297297 else containsElement(l, toString(aI.caller)))
298298 then true
299299 else e("you must be admin")]
300300 if ((aJ == aJ))
301301 then {
302302 let u = aD(t)
303303 let aK = [IntegerEntry(E("vested", t, toBase58String(aI.transactionId)), y)]
304304 (aH(t, u, y, z, A) ++ aK)
305305 }
306306 else throw("Strict value is not equal to itself.")
307307 }
308308
309309
310310
311311 @Callable(aI)
312312 func claimAll () = {
313313 let t = toString(aI.caller)
314314 let aL = aw(t)
315315 let ay = aL._1
316316 let aC = aL._2
317317 let aK = [IntegerEntry(E("claimed", t, toBase58String(aI.transactionId)), aC)]
318318 if ((aC > 0))
319319 then (ay ++ aK)
320320 else e("nothing to claim")
321321 }
322322
323323
324324
325325 @Callable(aI)
326326 func ban (t) = {
327327 let v = [if (if ((l == nil))
328328 then true
329329 else containsElement(l, toString(aI.caller)))
330330 then true
331331 else e("you must be admin"), if (!(containsElement(o, t)))
332332 then true
333333 else e(makeString(["user already in a ban list:", t], " "))]
334334 if ((v == v))
335335 then {
336336 let aM = an(t)
337337 let aN = aM._1
338338 let aO = aM._2
339339 let aP = [StringEntry(k, makeString_11C((o :+ t), "__"))]
340340 (aN ++ aP)
341341 }
342342 else throw("Strict value is not equal to itself.")
343343 }
344344
345345
346346
347347 @Callable(aI)
348348 func unban (t) = {
349349 let v = [if (if ((l == nil))
350350 then true
351351 else containsElement(l, toString(aI.caller)))
352352 then true
353353 else e("you must be admin"), if (containsElement(o, t))
354354 then true
355355 else e(makeString(["user not in a ban list:", t], " "))]
356356 if ((v == v))
357357 then {
358358 let aQ = {
359359 let m = indexOf(o, t)
360360 if ($isInstanceOf(m, "Int"))
361361 then {
362362 let aR = m
363363 removeByIndex(o, aR)
364364 }
365365 else e("user address index in ban list is not found")
366366 }
367367 if ((aQ == nil))
368368 then [DeleteEntry(k)]
369369 else [StringEntry(k, makeString_11C(aQ, "__"))]
370370 }
371371 else throw("Strict value is not equal to itself.")
372372 }
373373
374374

github/deemru/w8io/169f3d6 
90.67 ms