tx · 2aZeoHP3a2z3yLTV4qw1dWXX1Lo8hpWK8xHnNXHpyb4L

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.01500000 Waves

2023.07.27 18:02 [2684420] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "2aZeoHP3a2z3yLTV4qw1dWXX1Lo8hpWK8xHnNXHpyb4L", "fee": 1500000, "feeAssetId": null, "timestamp": 1690470147987, "version": 2, "chainId": 84, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "21wUuJ7jVPCb8vWd2YAyKSmMfyJPystq3ngoxZ8ryR6ZzdpXMgQxBL8cZ7LGoeZAndVxypan2x1sF6qHrCC1cFVd" ], "script": "base64:BgIfCAISAwoBARIAEgMKAQgSAwoBARIDCgEIEgASAwoBCDAADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4ABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVABD2tleVVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICDHVzZXJMcEFtb3VudAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAADXRvdGFsTHBBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQa2V5VG90YWxMcEFtb3VudAAAABB0b3RhbEFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVRvdGFsQXNzZXRBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMjY1MjI2NzYFAWEEBnJlc3VsdAgFCyR0MDI2NTIyNjc2Al8xBAZwcmVmaXgIBQskdDAyNjUyMjY3NgJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDI4MjMyOTA3CgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDI4MjMyOTA3Al8xBAZwcmVmaXgIBQskdDAyODIzMjkwNwJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sAAAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQC8AgMJALYCAQkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQ1zY2FsZTE4QmlnSW50CQC2AgEFDXRvdGFsTHBBbW91bnQFDXNjYWxlMThCaWdJbnQBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFDHVzZXJMcEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQDCQBmAgAABRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3AAAFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcBD2dldFN0YWtlQWN0aW9ucwIBaQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNcGF5bWVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQED3BheW1lbnRMcEFtb3VudAkAoAMBCQC8AgMJALYCAQUNcGF5bWVudEFtb3VudAUNc2NhbGUxOEJpZ0ludAkBD2dldEN1cnJlbnRQcmljZQAEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQQbmV3VG90YWxMcEFtb3VudAkAZAIFDXRvdGFsTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAZAIFEHRvdGFsQXNzZXRBbW91bnQFDXBheW1lbnRBbW91bnQED25ld1VzZXJMcEFtb3VudAkAZAIFDHVzZXJMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQFDXBheW1lbnRBbW91bnQEF3VwZGF0ZVN0YXJ0SGVpZ2h0QWN0aW9uAwkAAAIFDXRvdGFsTHBBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MFGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAUDbmlsBRd1cGRhdGVTdGFydEhlaWdodEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgESZ2V0V2l0aGRyYXdBY3Rpb25zAgFpFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQFY2hlY2sJAMwIAgMJAGYCBRVscEFzc2V0V2l0aGRyYXdBbW91bnQAAAYJAQh0aHJvd0VycgECH0xQIGFtb3VudCBzaG91bGQgYmUgbW9yZSB0aGFuIDAJAMwIAgMJAGcCBQx1c2VyTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAihjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSBMUCAoCQCkAwEFDHVzZXJMcEFtb3VudAIBKQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawQPbmV3VXNlckxwQW1vdW50CQBlAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQEE3dpdGhkcmF3QXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQEEG5ld1RvdGFsTHBBbW91bnQJAGUCBQ10b3RhbExwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQEE25ld1RvdGFsQXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFEG5ld1RvdGFsTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAABBpuZXdVc2VyVG90YWxBc3NldFdpdGhkcmF3bgkAZAIFF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduBRN3aXRoZHJhd0Fzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MFGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgcBaQETc2V0RW1pc3Npb25QZXJCbG9jawEQZW1pc3Npb25QZXJCbG9jawQFY2hlY2sJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleUVtaXNzaW9uUGVyQmxvY2sJAJYDAQkAzAgCAAAJAMwIAgUQZW1pc3Npb25QZXJCbG9jawUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UACQEPZ2V0U3Rha2VBY3Rpb25zAgUBaQkApQgBCAUBaQZjYWxsZXIBaQEIc3Rha2VGb3IBC3VzZXJBZGRyZXNzBAVjaGVjawkAzAgCAwkAAAIJAMgBAQkA2QQBBQt1c2VyQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIUYWRkcmVzcyBpcyBub3QgdmFsaWQFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpBQt1c2VyQWRkcmVzcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwETd2l0aGRyYXdBc3NldEFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQSbHBBbW91bnRUb1dpdGhkcmF3CQCgAwEJALwCAwkAtgIBBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQ1zY2FsZTE4QmlnSW50CQEPZ2V0Q3VycmVudFByaWNlAAQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFm1pbldpdGhkcmF3QXNzZXRBbW91bnQJAKADAQkAvQIECQEPZ2V0Q3VycmVudFByaWNlAAkAtgIBAAEFDXNjYWxlMThCaWdJbnQFB0NFSUxJTkcEBWNoZWNrCQDMCAIDCQBmAgUTd2l0aGRyYXdBc3NldEFtb3VudAAABgkBCHRocm93RXJyAQIld2l0aGRyYXcgYW1vdW50IHNob3VsZCBiZSBtb3JlIHRoYW4gMAkAzAgCAwkAZwIFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcFE3dpdGhkcmF3QXNzZXRBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIlY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgKAkApAMBBRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3AgEpCQDMCAIDCQBnAgUTd2l0aGRyYXdBc3NldEFtb3VudAUWbWluV2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiR3aXRoZHJhdyBhbW91bnQgaXMgdG9vIHNtYWxsLiBNaW46ICgJAKQDAQUWbWluV2l0aGRyYXdBc3NldEFtb3VudAIBKQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBEmdldFdpdGhkcmF3QWN0aW9ucwIFAWkFEmxwQW1vdW50VG9XaXRoZHJhdwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVnZXRVc2VyQXNzZXRzUkVBRE9OTFkBC3VzZXJBZGRyZXNzBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAACQCUCgIFA25pbAkAlwoFBQx1c2VyTHBBbW91bnQFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAQ9nZXRDdXJyZW50UHJpY2UABRV1c2VyVG90YWxTdGFrZWRBbW91bnQFF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduAWkBFmdldFRvdGFsQXNzZXRzUkVBRE9OTFkACQCUCgIFA25pbAkAlQoDBQ10b3RhbExwQW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAQ9nZXRDdXJyZW50UHJpY2UAAWkBC3ZvdGVGb3JUeElkAQR0eElkBBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEFBHR4SWQEBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QWxsb3dlZFR4SWQABQR0eElkBQNuaWwEEWFsbG93ZWRUeElkT3B0aW9uCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAAEA2VycgkAzAgCAwkAAAIJAMgBAQkA2QQBBQR0eElkBRFUWElEX0JZVEVTX0xFTkdUSAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAISIGlzIG5vdCB2YWxpZCB0eElkCQDMCAIDAwkAAAIFEWFsbG93ZWRUeElkT3B0aW9uBQR1bml0BgkBAiE9AgkBBXZhbHVlAQURYWxsb3dlZFR4SWRPcHRpb24FBHR4SWQGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEyBpcyBhbHJlYWR5IGFsbG93ZWQFA25pbAMJAAACBQNlcnIFA2VycgkBDHZvdGVJTlRFUk5BTAQFE2NhbGxlckFkZHJlc3NTdHJpbmcFCWtleVByZWZpeAUGUVVPUlVNBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAhieUFkbWlucwkAAAIIBQJ0eAJpZAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAACAAQHYnlPd25lcgMJAGcCCQCQAwEJAQ1nZXRBZG1pbnNMaXN0AAUGUVVPUlVNBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQMFCGJ5QWRtaW5zBgUHYnlPd25lchn2uM8=", "height": 2684420, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AGjL9A1ko7nEeKS1JH8h3fobUpARHArxZAdiyw2x6Vse Next: 8rvLBMe4H7H1KYnkRLw6wCCTPSGzADDoMX6DVNnx3No4 Diff:
OldNewDifferences
5353
5454 let y = (valueOrElse(getInteger(this, k), 0) * x)
5555
56-let z = fraction(height, 1, x)
56+let z = 5
5757
58-let A = 5
58+let A = 3
5959
60-let B = 3
60+let B = 32
6161
62-let C = 32
63-
64-func D (E) = makeString(["%s%s%s", "allowTxId", E], b)
62+func C (D) = makeString(["%s%s%s", "allowTxId", D], b)
6563
6664
67-func F (G,H) = makeString([G, H], b)
65+func E (F,G) = makeString([F, G], b)
6866
6967
70-func I () = makeString(["%s", "adminAddressList"], b)
68+func H () = makeString(["%s", "adminAddressList"], b)
7169
7270
73-func J () = makeString(["%s", "txId"], b)
71+func I () = makeString(["%s", "txId"], b)
7472
7573
76-func K (G,L) = {
77- let M = F(G, L)
78- valueOrElse(getInteger(M), 0)
74+func J (F,K) = {
75+ let L = E(F, K)
76+ valueOrElse(getInteger(L), 0)
7977 }
8078
8179
82-func N () = {
83- let O = getString(this, I())
84- if ($isInstanceOf(O, "String"))
80+func M () = {
81+ let N = getString(this, H())
82+ if ($isInstanceOf(N, "String"))
8583 then {
86- let P = O
87- split(P, b)
84+ let O = N
85+ split(O, b)
8886 }
8987 else nil
9088 }
9189
9290
93-func Q (R) = containsElement(N(), R)
91+func P (Q) = containsElement(M(), Q)
9492
9593
96-func S (T,H) = {
97- let U = T
98- let V = U._1
99- let G = U._2
100- $Tuple2((V :+ F(G, H)), G)
94+func R (S,G) = {
95+ let T = S
96+ let U = T._1
97+ let F = T._2
98+ $Tuple2((U :+ E(F, G)), F)
10199 }
102100
103101
104-func W (X) = {
105- let Y = I()
106- let Z = {
107- let aa = N()
108- let ab = size(aa)
109- let ac = $Tuple2(nil, X)
110- func ad (ae,af) = if ((af >= ab))
111- then ae
112- else S(ae, aa[af])
102+func V (W) = {
103+ let X = H()
104+ let Y = {
105+ let Z = M()
106+ let aa = size(Z)
107+ let ab = $Tuple2(nil, W)
108+ func ac (ad,ae) = if ((ae >= aa))
109+ then ad
110+ else R(ad, Z[ae])
113111
114- func ag (ae,af) = if ((af >= ab))
115- then ae
112+ func af (ad,ae) = if ((ae >= aa))
113+ then ad
116114 else throw("List size exceeds 5")
117115
118- ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
116+ af(ac(ac(ac(ac(ac(ab, 0), 1), 2), 3), 4), 5)
119117 }
120- let V = Z._1
121- let G = Z._2
122- V
118+ let U = Y._1
119+ let F = Y._2
120+ U
123121 }
124122
125123
126-func ah (V,M) = (V + valueOrElse(getInteger(M), 0))
124+func ag (U,L) = (U + valueOrElse(getInteger(L), 0))
127125
128126
129-func ai (G) = {
130- let aj = W(G)
131- let aa = aj
132- let ab = size(aa)
133- let ac = 0
134- func ad (ae,af) = if ((af >= ab))
135- then ae
136- else ah(ae, aa[af])
127+func ah (F) = {
128+ let ai = V(F)
129+ let Z = ai
130+ let aa = size(Z)
131+ let ab = 0
132+ func ac (ad,ae) = if ((ae >= aa))
133+ then ad
134+ else ag(ad, Z[ae])
137135
138- func ag (ae,af) = if ((af >= ab))
139- then ae
136+ func af (ad,ae) = if ((ae >= aa))
137+ then ad
140138 else throw("List size exceeds 5")
141139
142- ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
140+ af(ac(ac(ac(ac(ac(ab, 0), 1), 2), 3), 4), 5)
143141 }
144142
145143
146-func ak (V,al) = (V :+ DeleteEntry(al))
144+func aj (U,ak) = (U :+ DeleteEntry(ak))
147145
148146
149-func am (G) = {
150- let aj = W(G)
151- let aa = aj
152- let ab = size(aa)
153- let ac = nil
154- func ad (ae,af) = if ((af >= ab))
155- then ae
156- else ak(ae, aa[af])
147+func al (F) = {
148+ let ai = V(F)
149+ let Z = ai
150+ let aa = size(Z)
151+ let ab = nil
152+ func ac (ad,ae) = if ((ae >= aa))
153+ then ad
154+ else aj(ad, Z[ae])
157155
158- func ag (ae,af) = if ((af >= ab))
159- then ae
156+ func af (ad,ae) = if ((ae >= aa))
157+ then ad
160158 else throw("List size exceeds 5")
161159
162- ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
160+ af(ac(ac(ac(ac(ac(ab, 0), 1), 2), 3), 4), 5)
163161 }
164162
165163
166-func an (ao,X,ap,aq) = {
167- let M = F(X, ao)
168- let ar = K(X, ao)
169- let as = if (!(Q(ao)))
170- then h((("Address: " + ao) + " not in Admin list"))
171- else if ((ar == 1))
172- then h((M + " you already voted"))
164+func am (an,W,ao,ap) = {
165+ let L = E(W, an)
166+ let aq = J(W, an)
167+ let ar = if (!(P(an)))
168+ then h((("Address: " + an) + " not in Admin list"))
169+ else if ((aq == 1))
170+ then h((L + " you already voted"))
173171 else unit
174- if ((as == as))
172+ if ((ar == ar))
175173 then {
176- let aj = ai(X)
177- if (((aj + 1) >= ap))
174+ let ai = ah(W)
175+ if (((ai + 1) >= ao))
178176 then {
179- let at = am(X)
180- (at ++ aq)
177+ let as = al(W)
178+ (as ++ ap)
181179 }
182- else [IntegerEntry(M, 1)]
180+ else [IntegerEntry(L, 1)]
183181 }
184182 else throw("Strict value is not equal to itself.")
185183 }
186184
187185
188-func au () = {
186+func at (au) = {
189187 let av = valueOrElse(getInteger(this, m), 0)
190188 let aw = fraction(av, 1, x)
191- let ax = (z - aw)
189+ let ax = ((au / x) - aw)
192190 max([0, (y * ax)])
193191 }
194192
195193
196-func ay () = {
197- let az = (u + au())
198- let aA = {
199- let O = w
200- if ($isInstanceOf(O, "Unit"))
194+func ay () = at(height)
195+
196+
197+func az () = {
198+ let aA = (u + ay())
199+ let aB = {
200+ let N = w
201+ if ($isInstanceOf(N, "Unit"))
201202 then {
202- let aB = O
203- min([az, wavesBalance(this).available])
203+ let aC = N
204+ min([aA, wavesBalance(this).available])
204205 }
205- else if ($isInstanceOf(O, "ByteVector"))
206+ else if ($isInstanceOf(N, "ByteVector"))
206207 then {
207- let aC = O
208- min([az, assetBalance(this, aC)])
208+ let aD = N
209+ min([aA, assetBalance(this, aD)])
209210 }
210211 else throw("Match error")
211212 }
212213 if ((t == 0))
213214 then 0
214- else aA
215+ else aB
215216 }
216217
217218
218-func aD () = if ((t != 0))
219- then fraction(toBigInt(ay()), e, toBigInt(t))
219+func aE () = if ((t != 0))
220+ then fraction(toBigInt(az()), e, toBigInt(t))
220221 else e
221222
222223
223-func aE (q) = valueOrElse(getInteger(this, p(q)), 0)
224+func aF (q) = valueOrElse(getInteger(this, p(q)), 0)
224225
225226
226-func aF (q) = {
227- let aG = aE(q)
228- let aH = toInt(fraction(toBigInt(aG), aD(), e))
229- if ((0 > aH))
227+func aG (q) = {
228+ let aH = aF(q)
229+ let aI = toInt(fraction(toBigInt(aH), aE(), e))
230+ if ((0 > aI))
230231 then 0
231- else aH
232+ else aI
232233 }
233234
234235
235-func aI (aJ,q) = {
236- let aK = [if ((size(aJ.payments) == 1))
236+func aJ (aK,q) = {
237+ let aL = [if ((size(aK.payments) == 1))
237238 then true
238- else h("should include 1 payment"), if ((aJ.payments[0].assetId == w))
239+ else h("should include 1 payment"), if ((aK.payments[0].assetId == w))
239240 then true
240- else h(("payment should be in " + v)), if ((aJ.payments[0].amount > 0))
241+ else h(("payment should be in " + v)), if ((aK.payments[0].amount > 0))
241242 then true
242243 else "payment amount should be greater than 0"]
243- if ((aK == aK))
244+ if ((aL == aL))
244245 then {
245- let aL = aJ.payments[0].amount
246- let aM = toInt(fraction(toBigInt(aL), e, aD()))
247- let aG = aE(q)
248- let aN = valueOrElse(getInteger(this, s(q)), 0)
249- let aO = (t + aM)
250- let aP = (u + aL)
251- let aQ = (aG + aM)
252- let aR = (aN + aL)
253- let aS = if ((t == 0))
246+ let aM = aK.payments[0].amount
247+ let aN = toInt(fraction(toBigInt(aM), e, aE()))
248+ let aH = aF(q)
249+ let aO = valueOrElse(getInteger(this, s(q)), 0)
250+ let aP = (t + aN)
251+ let aQ = (u + aM)
252+ let aR = (aH + aN)
253+ let aS = (aO + aM)
254+ let aT = if ((t == 0))
254255 then [IntegerEntry(m, height)]
255256 else nil
256- ([IntegerEntry(n, aO), IntegerEntry(o, aP), IntegerEntry(p(q), aQ), IntegerEntry(s(q), aR)] ++ aS)
257+ ([IntegerEntry(n, aP), IntegerEntry(o, aQ), IntegerEntry(p(q), aR), IntegerEntry(s(q), aS)] ++ aT)
257258 }
258259 else throw("Strict value is not equal to itself.")
259260 }
260261
261262
262-func aT (aJ,aU) = {
263- let q = toString(aJ.caller)
264- let aG = aE(q)
265- let aV = [if ((aU > 0))
263+func aU (aK,aV) = {
264+ let q = toString(aK.caller)
265+ let aH = aF(q)
266+ let aW = [if ((aV > 0))
266267 then true
267- else h("LP amount should be more than 0"), if ((aG >= aU))
268+ else h("LP amount should be more than 0"), if ((aH >= aV))
268269 then true
269- else h((("cannot withdraw more than available LP (" + toString(aG)) + ")"))]
270- if ((aV == aV))
270+ else h((("cannot withdraw more than available LP (" + toString(aH)) + ")"))]
271+ if ((aW == aW))
271272 then {
272- let aQ = (aG - aU)
273- let aW = toInt(fraction(toBigInt(aU), aD(), e))
274- let aO = (t - aU)
275- let aP = toInt(fraction(toBigInt(aO), aD(), e))
276- let aX = valueOrElse(getInteger(this, r(q)), 0)
277- let aY = (aX + aW)
278-[IntegerEntry(n, aO), IntegerEntry(o, aP), IntegerEntry(p(q), aQ), IntegerEntry(r(q), aY), IntegerEntry(m, height), ScriptTransfer(aJ.caller, aW, w)]
273+ let aR = (aH - aV)
274+ let aX = toInt(fraction(toBigInt(aV), aE(), e))
275+ let aP = (t - aV)
276+ let aQ = toInt(fraction(toBigInt(aP), aE(), e))
277+ let aY = valueOrElse(getInteger(this, r(q)), 0)
278+ let aZ = (aY + aX)
279+[IntegerEntry(n, aP), IntegerEntry(o, aQ), IntegerEntry(p(q), aR), IntegerEntry(r(q), aZ), IntegerEntry(m, height), ScriptTransfer(aK.caller, aX, w)]
279280 }
280281 else throw("Strict value is not equal to itself.")
281282 }
282283
283284
284-@Callable(aJ)
285-func setEmissionPerBlock (aZ) = {
286- let aV = [if ((aJ.caller == this))
285+@Callable(aK)
286+func setEmissionPerBlock (ba) = {
287+ let aW = [if ((aK.caller == this))
287288 then true
288289 else h("permission denied")]
289- if ((aV == aV))
290- then [IntegerEntry(o, ay()), IntegerEntry(m, height), IntegerEntry(k, max([0, aZ]))]
290+ if ((aW == aW))
291+ then [IntegerEntry(o, az()), IntegerEntry(m, height), IntegerEntry(k, max([0, ba]))]
291292 else throw("Strict value is not equal to itself.")
292293 }
293294
294295
295296
296-@Callable(aJ)
297-func stake () = aI(aJ, toString(aJ.caller))
297+@Callable(aK)
298+func stake () = aJ(aK, toString(aK.caller))
298299
299300
300301
301-@Callable(aJ)
302+@Callable(aK)
302303 func stakeFor (q) = {
303- let aV = [if ((size(fromBase58String(q)) == f))
304+ let aW = [if ((size(fromBase58String(q)) == f))
304305 then true
305306 else h("address is not valid")]
306- if ((aV == aV))
307- then aI(aJ, q)
307+ if ((aW == aW))
308+ then aJ(aK, q)
308309 else throw("Strict value is not equal to itself.")
309310 }
310311
311312
312313
313-@Callable(aJ)
314-func withdraw (aW) = {
315- let q = toString(aJ.caller)
316- let aG = aE(q)
317- let ba = toInt(fraction(toBigInt(aW), e, aD()))
314+@Callable(aK)
315+func withdraw (aX) = {
316+ let q = toString(aK.caller)
318317 let aH = aF(q)
319- let bb = toInt(fraction(aD(), toBigInt(1), e, CEILING))
320- let aV = [if ((aW > 0))
318+ let bb = toInt(fraction(toBigInt(aX), e, aE()))
319+ let aI = aG(q)
320+ let bc = toInt(fraction(aE(), toBigInt(1), e, CEILING))
321+ let aW = [if ((aX > 0))
321322 then true
322- else h("withdraw amount should be more than 0"), if ((aH >= aW))
323+ else h("withdraw amount should be more than 0"), if ((aI >= aX))
323324 then true
324- else h((("cannot withdraw more than available (" + toString(aH)) + ")")), if ((aW >= bb))
325+ else h((("cannot withdraw more than available (" + toString(aI)) + ")")), if ((aX >= bc))
325326 then true
326- else h((("withdraw amount is too small. Min: (" + toString(bb)) + ")"))]
327- if ((aV == aV))
328- then aT(aJ, ba)
327+ else h((("withdraw amount is too small. Min: (" + toString(bc)) + ")"))]
328+ if ((aW == aW))
329+ then aU(aK, bb)
329330 else throw("Strict value is not equal to itself.")
330331 }
331332
332333
333334
334-@Callable(aJ)
335+@Callable(aK)
335336 func getUserAssetsREADONLY (q) = {
336- let aG = aE(q)
337337 let aH = aF(q)
338- let aN = valueOrElse(getInteger(this, s(q)), 0)
339- let aX = valueOrElse(getInteger(this, r(q)), 0)
340- $Tuple2(nil, $Tuple5(aG, aH, aD(), aN, aX))
338+ let aI = aG(q)
339+ let aO = valueOrElse(getInteger(this, s(q)), 0)
340+ let aY = valueOrElse(getInteger(this, r(q)), 0)
341+ $Tuple2(nil, $Tuple5(aH, aI, aE(), aO, aY))
341342 }
342343
343344
344345
345-@Callable(aJ)
346-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(t, ay(), aD()))
346+@Callable(aK)
347+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(t, az(), aE()))
347348
348349
349350
350-@Callable(aJ)
351-func voteForTxId (E) = {
352- let ao = toBase58String(aJ.caller.bytes)
353- let X = D(E)
354- let V = [StringEntry(J(), E)]
355- let bc = getString(this, J())
356- let as = [if ((size(fromBase58String(E)) == C))
351+@Callable(aK)
352+func voteForTxId (D) = {
353+ let an = toBase58String(aK.caller.bytes)
354+ let W = C(D)
355+ let U = [StringEntry(I(), D)]
356+ let bd = getString(this, I())
357+ let ar = [if ((size(fromBase58String(D)) == B))
357358 then true
358- else h((E + " is not valid txId")), if (if ((bc == unit))
359+ else h((D + " is not valid txId")), if (if ((bd == unit))
359360 then true
360- else (value(bc) != E))
361+ else (value(bd) != D))
361362 then true
362- else h((E + " is already allowed"))]
363- if ((as == as))
364- then an(ao, X, B, V)
363+ else h((D + " is already allowed"))]
364+ if ((ar == ar))
365+ then am(an, W, A, U)
365366 else throw("Strict value is not equal to itself.")
366367 }
367368
368369
369-@Verifier(bd)
370-func be () = {
371- let bf = (bd.id == fromBase58String(valueOrElse(getString(this, J()), "")))
372- let bg = if ((size(N()) >= B))
370+@Verifier(be)
371+func bf () = {
372+ let bg = (be.id == fromBase58String(valueOrElse(getString(this, I()), "")))
373+ let bh = if ((size(M()) >= A))
373374 then false
374- else sigVerify(bd.bodyBytes, bd.proofs[0], bd.senderPublicKey)
375- if (bf)
375+ else sigVerify(be.bodyBytes, be.proofs[0], be.senderPublicKey)
376+ if (bg)
376377 then true
377- else bg
378+ else bh
378379 }
379380
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 let f = 26
1515
1616 let g = 1440
1717
1818 func h (i) = throw(((a + ": ") + i))
1919
2020
2121 let j = makeString(["%s", "assetId"], b)
2222
2323 let k = makeString(["%s", "emissionPerBlock"], b)
2424
2525 let l = makeString(["%s", "emissionPeriodInBlocks"], b)
2626
2727 let m = makeString(["%s", "startBlock"], b)
2828
2929 let n = makeString(["%s", "totalLpAmount"], b)
3030
3131 let o = makeString(["%s", "totalAssetAmount"], b)
3232
3333 func p (q) = makeString(["%s%s", "userLpAmount", q], b)
3434
3535
3636 func r (q) = makeString(["%s%s", "totalAssetWithdrawn", q], b)
3737
3838
3939 func s (q) = makeString(["%s%s", "totalAssetStaked", q], b)
4040
4141
4242 let t = valueOrElse(getInteger(this, n), 0)
4343
4444 let u = valueOrElse(getInteger(this, o), 0)
4545
4646 let v = valueOrElse(getString(this, j), "WAVES")
4747
4848 let w = if ((v == "WAVES"))
4949 then unit
5050 else fromBase58String(v)
5151
5252 let x = valueOrElse(getInteger(this, l), g)
5353
5454 let y = (valueOrElse(getInteger(this, k), 0) * x)
5555
56-let z = fraction(height, 1, x)
56+let z = 5
5757
58-let A = 5
58+let A = 3
5959
60-let B = 3
60+let B = 32
6161
62-let C = 32
63-
64-func D (E) = makeString(["%s%s%s", "allowTxId", E], b)
62+func C (D) = makeString(["%s%s%s", "allowTxId", D], b)
6563
6664
67-func F (G,H) = makeString([G, H], b)
65+func E (F,G) = makeString([F, G], b)
6866
6967
70-func I () = makeString(["%s", "adminAddressList"], b)
68+func H () = makeString(["%s", "adminAddressList"], b)
7169
7270
73-func J () = makeString(["%s", "txId"], b)
71+func I () = makeString(["%s", "txId"], b)
7472
7573
76-func K (G,L) = {
77- let M = F(G, L)
78- valueOrElse(getInteger(M), 0)
74+func J (F,K) = {
75+ let L = E(F, K)
76+ valueOrElse(getInteger(L), 0)
7977 }
8078
8179
82-func N () = {
83- let O = getString(this, I())
84- if ($isInstanceOf(O, "String"))
80+func M () = {
81+ let N = getString(this, H())
82+ if ($isInstanceOf(N, "String"))
8583 then {
86- let P = O
87- split(P, b)
84+ let O = N
85+ split(O, b)
8886 }
8987 else nil
9088 }
9189
9290
93-func Q (R) = containsElement(N(), R)
91+func P (Q) = containsElement(M(), Q)
9492
9593
96-func S (T,H) = {
97- let U = T
98- let V = U._1
99- let G = U._2
100- $Tuple2((V :+ F(G, H)), G)
94+func R (S,G) = {
95+ let T = S
96+ let U = T._1
97+ let F = T._2
98+ $Tuple2((U :+ E(F, G)), F)
10199 }
102100
103101
104-func W (X) = {
105- let Y = I()
106- let Z = {
107- let aa = N()
108- let ab = size(aa)
109- let ac = $Tuple2(nil, X)
110- func ad (ae,af) = if ((af >= ab))
111- then ae
112- else S(ae, aa[af])
102+func V (W) = {
103+ let X = H()
104+ let Y = {
105+ let Z = M()
106+ let aa = size(Z)
107+ let ab = $Tuple2(nil, W)
108+ func ac (ad,ae) = if ((ae >= aa))
109+ then ad
110+ else R(ad, Z[ae])
113111
114- func ag (ae,af) = if ((af >= ab))
115- then ae
112+ func af (ad,ae) = if ((ae >= aa))
113+ then ad
116114 else throw("List size exceeds 5")
117115
118- ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
116+ af(ac(ac(ac(ac(ac(ab, 0), 1), 2), 3), 4), 5)
119117 }
120- let V = Z._1
121- let G = Z._2
122- V
118+ let U = Y._1
119+ let F = Y._2
120+ U
123121 }
124122
125123
126-func ah (V,M) = (V + valueOrElse(getInteger(M), 0))
124+func ag (U,L) = (U + valueOrElse(getInteger(L), 0))
127125
128126
129-func ai (G) = {
130- let aj = W(G)
131- let aa = aj
132- let ab = size(aa)
133- let ac = 0
134- func ad (ae,af) = if ((af >= ab))
135- then ae
136- else ah(ae, aa[af])
127+func ah (F) = {
128+ let ai = V(F)
129+ let Z = ai
130+ let aa = size(Z)
131+ let ab = 0
132+ func ac (ad,ae) = if ((ae >= aa))
133+ then ad
134+ else ag(ad, Z[ae])
137135
138- func ag (ae,af) = if ((af >= ab))
139- then ae
136+ func af (ad,ae) = if ((ae >= aa))
137+ then ad
140138 else throw("List size exceeds 5")
141139
142- ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
140+ af(ac(ac(ac(ac(ac(ab, 0), 1), 2), 3), 4), 5)
143141 }
144142
145143
146-func ak (V,al) = (V :+ DeleteEntry(al))
144+func aj (U,ak) = (U :+ DeleteEntry(ak))
147145
148146
149-func am (G) = {
150- let aj = W(G)
151- let aa = aj
152- let ab = size(aa)
153- let ac = nil
154- func ad (ae,af) = if ((af >= ab))
155- then ae
156- else ak(ae, aa[af])
147+func al (F) = {
148+ let ai = V(F)
149+ let Z = ai
150+ let aa = size(Z)
151+ let ab = nil
152+ func ac (ad,ae) = if ((ae >= aa))
153+ then ad
154+ else aj(ad, Z[ae])
157155
158- func ag (ae,af) = if ((af >= ab))
159- then ae
156+ func af (ad,ae) = if ((ae >= aa))
157+ then ad
160158 else throw("List size exceeds 5")
161159
162- ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
160+ af(ac(ac(ac(ac(ac(ab, 0), 1), 2), 3), 4), 5)
163161 }
164162
165163
166-func an (ao,X,ap,aq) = {
167- let M = F(X, ao)
168- let ar = K(X, ao)
169- let as = if (!(Q(ao)))
170- then h((("Address: " + ao) + " not in Admin list"))
171- else if ((ar == 1))
172- then h((M + " you already voted"))
164+func am (an,W,ao,ap) = {
165+ let L = E(W, an)
166+ let aq = J(W, an)
167+ let ar = if (!(P(an)))
168+ then h((("Address: " + an) + " not in Admin list"))
169+ else if ((aq == 1))
170+ then h((L + " you already voted"))
173171 else unit
174- if ((as == as))
172+ if ((ar == ar))
175173 then {
176- let aj = ai(X)
177- if (((aj + 1) >= ap))
174+ let ai = ah(W)
175+ if (((ai + 1) >= ao))
178176 then {
179- let at = am(X)
180- (at ++ aq)
177+ let as = al(W)
178+ (as ++ ap)
181179 }
182- else [IntegerEntry(M, 1)]
180+ else [IntegerEntry(L, 1)]
183181 }
184182 else throw("Strict value is not equal to itself.")
185183 }
186184
187185
188-func au () = {
186+func at (au) = {
189187 let av = valueOrElse(getInteger(this, m), 0)
190188 let aw = fraction(av, 1, x)
191- let ax = (z - aw)
189+ let ax = ((au / x) - aw)
192190 max([0, (y * ax)])
193191 }
194192
195193
196-func ay () = {
197- let az = (u + au())
198- let aA = {
199- let O = w
200- if ($isInstanceOf(O, "Unit"))
194+func ay () = at(height)
195+
196+
197+func az () = {
198+ let aA = (u + ay())
199+ let aB = {
200+ let N = w
201+ if ($isInstanceOf(N, "Unit"))
201202 then {
202- let aB = O
203- min([az, wavesBalance(this).available])
203+ let aC = N
204+ min([aA, wavesBalance(this).available])
204205 }
205- else if ($isInstanceOf(O, "ByteVector"))
206+ else if ($isInstanceOf(N, "ByteVector"))
206207 then {
207- let aC = O
208- min([az, assetBalance(this, aC)])
208+ let aD = N
209+ min([aA, assetBalance(this, aD)])
209210 }
210211 else throw("Match error")
211212 }
212213 if ((t == 0))
213214 then 0
214- else aA
215+ else aB
215216 }
216217
217218
218-func aD () = if ((t != 0))
219- then fraction(toBigInt(ay()), e, toBigInt(t))
219+func aE () = if ((t != 0))
220+ then fraction(toBigInt(az()), e, toBigInt(t))
220221 else e
221222
222223
223-func aE (q) = valueOrElse(getInteger(this, p(q)), 0)
224+func aF (q) = valueOrElse(getInteger(this, p(q)), 0)
224225
225226
226-func aF (q) = {
227- let aG = aE(q)
228- let aH = toInt(fraction(toBigInt(aG), aD(), e))
229- if ((0 > aH))
227+func aG (q) = {
228+ let aH = aF(q)
229+ let aI = toInt(fraction(toBigInt(aH), aE(), e))
230+ if ((0 > aI))
230231 then 0
231- else aH
232+ else aI
232233 }
233234
234235
235-func aI (aJ,q) = {
236- let aK = [if ((size(aJ.payments) == 1))
236+func aJ (aK,q) = {
237+ let aL = [if ((size(aK.payments) == 1))
237238 then true
238- else h("should include 1 payment"), if ((aJ.payments[0].assetId == w))
239+ else h("should include 1 payment"), if ((aK.payments[0].assetId == w))
239240 then true
240- else h(("payment should be in " + v)), if ((aJ.payments[0].amount > 0))
241+ else h(("payment should be in " + v)), if ((aK.payments[0].amount > 0))
241242 then true
242243 else "payment amount should be greater than 0"]
243- if ((aK == aK))
244+ if ((aL == aL))
244245 then {
245- let aL = aJ.payments[0].amount
246- let aM = toInt(fraction(toBigInt(aL), e, aD()))
247- let aG = aE(q)
248- let aN = valueOrElse(getInteger(this, s(q)), 0)
249- let aO = (t + aM)
250- let aP = (u + aL)
251- let aQ = (aG + aM)
252- let aR = (aN + aL)
253- let aS = if ((t == 0))
246+ let aM = aK.payments[0].amount
247+ let aN = toInt(fraction(toBigInt(aM), e, aE()))
248+ let aH = aF(q)
249+ let aO = valueOrElse(getInteger(this, s(q)), 0)
250+ let aP = (t + aN)
251+ let aQ = (u + aM)
252+ let aR = (aH + aN)
253+ let aS = (aO + aM)
254+ let aT = if ((t == 0))
254255 then [IntegerEntry(m, height)]
255256 else nil
256- ([IntegerEntry(n, aO), IntegerEntry(o, aP), IntegerEntry(p(q), aQ), IntegerEntry(s(q), aR)] ++ aS)
257+ ([IntegerEntry(n, aP), IntegerEntry(o, aQ), IntegerEntry(p(q), aR), IntegerEntry(s(q), aS)] ++ aT)
257258 }
258259 else throw("Strict value is not equal to itself.")
259260 }
260261
261262
262-func aT (aJ,aU) = {
263- let q = toString(aJ.caller)
264- let aG = aE(q)
265- let aV = [if ((aU > 0))
263+func aU (aK,aV) = {
264+ let q = toString(aK.caller)
265+ let aH = aF(q)
266+ let aW = [if ((aV > 0))
266267 then true
267- else h("LP amount should be more than 0"), if ((aG >= aU))
268+ else h("LP amount should be more than 0"), if ((aH >= aV))
268269 then true
269- else h((("cannot withdraw more than available LP (" + toString(aG)) + ")"))]
270- if ((aV == aV))
270+ else h((("cannot withdraw more than available LP (" + toString(aH)) + ")"))]
271+ if ((aW == aW))
271272 then {
272- let aQ = (aG - aU)
273- let aW = toInt(fraction(toBigInt(aU), aD(), e))
274- let aO = (t - aU)
275- let aP = toInt(fraction(toBigInt(aO), aD(), e))
276- let aX = valueOrElse(getInteger(this, r(q)), 0)
277- let aY = (aX + aW)
278-[IntegerEntry(n, aO), IntegerEntry(o, aP), IntegerEntry(p(q), aQ), IntegerEntry(r(q), aY), IntegerEntry(m, height), ScriptTransfer(aJ.caller, aW, w)]
273+ let aR = (aH - aV)
274+ let aX = toInt(fraction(toBigInt(aV), aE(), e))
275+ let aP = (t - aV)
276+ let aQ = toInt(fraction(toBigInt(aP), aE(), e))
277+ let aY = valueOrElse(getInteger(this, r(q)), 0)
278+ let aZ = (aY + aX)
279+[IntegerEntry(n, aP), IntegerEntry(o, aQ), IntegerEntry(p(q), aR), IntegerEntry(r(q), aZ), IntegerEntry(m, height), ScriptTransfer(aK.caller, aX, w)]
279280 }
280281 else throw("Strict value is not equal to itself.")
281282 }
282283
283284
284-@Callable(aJ)
285-func setEmissionPerBlock (aZ) = {
286- let aV = [if ((aJ.caller == this))
285+@Callable(aK)
286+func setEmissionPerBlock (ba) = {
287+ let aW = [if ((aK.caller == this))
287288 then true
288289 else h("permission denied")]
289- if ((aV == aV))
290- then [IntegerEntry(o, ay()), IntegerEntry(m, height), IntegerEntry(k, max([0, aZ]))]
290+ if ((aW == aW))
291+ then [IntegerEntry(o, az()), IntegerEntry(m, height), IntegerEntry(k, max([0, ba]))]
291292 else throw("Strict value is not equal to itself.")
292293 }
293294
294295
295296
296-@Callable(aJ)
297-func stake () = aI(aJ, toString(aJ.caller))
297+@Callable(aK)
298+func stake () = aJ(aK, toString(aK.caller))
298299
299300
300301
301-@Callable(aJ)
302+@Callable(aK)
302303 func stakeFor (q) = {
303- let aV = [if ((size(fromBase58String(q)) == f))
304+ let aW = [if ((size(fromBase58String(q)) == f))
304305 then true
305306 else h("address is not valid")]
306- if ((aV == aV))
307- then aI(aJ, q)
307+ if ((aW == aW))
308+ then aJ(aK, q)
308309 else throw("Strict value is not equal to itself.")
309310 }
310311
311312
312313
313-@Callable(aJ)
314-func withdraw (aW) = {
315- let q = toString(aJ.caller)
316- let aG = aE(q)
317- let ba = toInt(fraction(toBigInt(aW), e, aD()))
314+@Callable(aK)
315+func withdraw (aX) = {
316+ let q = toString(aK.caller)
318317 let aH = aF(q)
319- let bb = toInt(fraction(aD(), toBigInt(1), e, CEILING))
320- let aV = [if ((aW > 0))
318+ let bb = toInt(fraction(toBigInt(aX), e, aE()))
319+ let aI = aG(q)
320+ let bc = toInt(fraction(aE(), toBigInt(1), e, CEILING))
321+ let aW = [if ((aX > 0))
321322 then true
322- else h("withdraw amount should be more than 0"), if ((aH >= aW))
323+ else h("withdraw amount should be more than 0"), if ((aI >= aX))
323324 then true
324- else h((("cannot withdraw more than available (" + toString(aH)) + ")")), if ((aW >= bb))
325+ else h((("cannot withdraw more than available (" + toString(aI)) + ")")), if ((aX >= bc))
325326 then true
326- else h((("withdraw amount is too small. Min: (" + toString(bb)) + ")"))]
327- if ((aV == aV))
328- then aT(aJ, ba)
327+ else h((("withdraw amount is too small. Min: (" + toString(bc)) + ")"))]
328+ if ((aW == aW))
329+ then aU(aK, bb)
329330 else throw("Strict value is not equal to itself.")
330331 }
331332
332333
333334
334-@Callable(aJ)
335+@Callable(aK)
335336 func getUserAssetsREADONLY (q) = {
336- let aG = aE(q)
337337 let aH = aF(q)
338- let aN = valueOrElse(getInteger(this, s(q)), 0)
339- let aX = valueOrElse(getInteger(this, r(q)), 0)
340- $Tuple2(nil, $Tuple5(aG, aH, aD(), aN, aX))
338+ let aI = aG(q)
339+ let aO = valueOrElse(getInteger(this, s(q)), 0)
340+ let aY = valueOrElse(getInteger(this, r(q)), 0)
341+ $Tuple2(nil, $Tuple5(aH, aI, aE(), aO, aY))
341342 }
342343
343344
344345
345-@Callable(aJ)
346-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(t, ay(), aD()))
346+@Callable(aK)
347+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(t, az(), aE()))
347348
348349
349350
350-@Callable(aJ)
351-func voteForTxId (E) = {
352- let ao = toBase58String(aJ.caller.bytes)
353- let X = D(E)
354- let V = [StringEntry(J(), E)]
355- let bc = getString(this, J())
356- let as = [if ((size(fromBase58String(E)) == C))
351+@Callable(aK)
352+func voteForTxId (D) = {
353+ let an = toBase58String(aK.caller.bytes)
354+ let W = C(D)
355+ let U = [StringEntry(I(), D)]
356+ let bd = getString(this, I())
357+ let ar = [if ((size(fromBase58String(D)) == B))
357358 then true
358- else h((E + " is not valid txId")), if (if ((bc == unit))
359+ else h((D + " is not valid txId")), if (if ((bd == unit))
359360 then true
360- else (value(bc) != E))
361+ else (value(bd) != D))
361362 then true
362- else h((E + " is already allowed"))]
363- if ((as == as))
364- then an(ao, X, B, V)
363+ else h((D + " is already allowed"))]
364+ if ((ar == ar))
365+ then am(an, W, A, U)
365366 else throw("Strict value is not equal to itself.")
366367 }
367368
368369
369-@Verifier(bd)
370-func be () = {
371- let bf = (bd.id == fromBase58String(valueOrElse(getString(this, J()), "")))
372- let bg = if ((size(N()) >= B))
370+@Verifier(be)
371+func bf () = {
372+ let bg = (be.id == fromBase58String(valueOrElse(getString(this, I()), "")))
373+ let bh = if ((size(M()) >= A))
373374 then false
374- else sigVerify(bd.bodyBytes, bd.proofs[0], bd.senderPublicKey)
375- if (bf)
375+ else sigVerify(be.bodyBytes, be.proofs[0], be.senderPublicKey)
376+ if (bg)
376377 then true
377- else bg
378+ else bh
378379 }
379380

github/deemru/w8io/169f3d6 
118.49 ms