tx · Ej5mXpi8bmLQ8jkfvvxwTSaZ9LkQi4nqSUtVocHjGMfE

3MpMuGN8rW9EpPwzETAQz88Pe9TQhSwiriq:  -0.16000000 Waves

2023.07.31 15:24 [2690055] smart account 3MpMuGN8rW9EpPwzETAQz88Pe9TQhSwiriq > SELF 0.00000000 Waves

{ "type": 13, "id": "Ej5mXpi8bmLQ8jkfvvxwTSaZ9LkQi4nqSUtVocHjGMfE", "fee": 16000000, "feeAssetId": null, "timestamp": 1690806218192, "version": 2, "chainId": 84, "sender": "3MpMuGN8rW9EpPwzETAQz88Pe9TQhSwiriq", "senderPublicKey": "57SkjQUEwC1ayCqLbXLuzBqifK6B6SR6rfxtGsbAo3zW", "proofs": [ "4Etp4civJHTYPSdUykKSz2PM32GtAQHf9q65A6afM2ED8fNxkB9hainyEXxDaU5QspAY9o4BLz8xXSz54RqKxTKU" ], "script": "base64:BgIkCAISAwoBARIDCgEBEgASAwoBCBIDCgEBEgMKAQgSABIDCgEIMgAMY29udHJhY3RGaWxlAhFsMm1wX3N0YWtpbmcucmlkZQADU0VQAgJfXwAGc2NhbGU4AIDC1y8AB3NjYWxlMTgAgICQu7rWrfANAA1zY2FsZTE4QmlnSW50CQC2AgEFB3NjYWxlMTgAEkFERFJFU1NfQllURVNfU0laRQAaAA1CTE9DS1NfSU5fREFZAKALAQh0aHJvd0VycgEDbXNnCQACAQkArAICCQCsAgIFDGNvbnRyYWN0RmlsZQICOiAFA21zZwAKa2V5QXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICB2Fzc2V0SWQFA25pbAUDU0VQABNrZXlFbWlzc2lvblBlckJsb2NrCQC5CQIJAMwIAgICJXMJAMwIAgIQZW1pc3Npb25QZXJCbG9jawUDbmlsBQNTRVAAGWtleUVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJALkJAgkAzAgCAgIlcwkAzAgCAhZlbWlzc2lvblBlcmlvZEluQmxvY2tzBQNuaWwFA1NFUAANa2V5U3RhcnRCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICCnN0YXJ0QmxvY2sFA25pbAUDU0VQABBrZXlUb3RhbExwQW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgINdG90YWxMcEFtb3VudAUDbmlsBQNTRVAAE2tleVRvdGFsQXNzZXRBbW91bnQJALkJAgkAzAgCAgIlcwkAzAgCAhB0b3RhbEFzc2V0QW1vdW50BQNuaWwFA1NFUAEPa2V5VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIMdXNlckxwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhN0b3RhbEFzc2V0V2l0aGRyYXduCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhB0b3RhbEFzc2V0U3Rha2VkCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEKa2V5SGlzdG9yeQMEdHlwZQt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFBHR5cGUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkA2AQBBQR0eElkBQNuaWwFA1NFUAENZm9ybWF0SGlzdG9yeQQLdG90YWxQcm9maXQFcHJpY2UQdG90YWxBc3NldEFtb3VudA10b3RhbExwQW1vdW50CQC5CQIJAMwIAgIEJWQlZAkAzAgCCQCkAwEFC3RvdGFsUHJvZml0CQDMCAIJAKYDAQUFcHJpY2UJAMwIAgkApAMBBRB0b3RhbEFzc2V0QW1vdW50CQDMCAIJAKQDAQUNdG90YWxMcEFtb3VudAUDbmlsBQNTRVAADXRvdGFsTHBBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQa2V5VG90YWxMcEFtb3VudAAAABB0b3RhbEFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVRvdGFsQXNzZXRBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMzA0NTMwNjkFAWEEBnJlc3VsdAgFCyR0MDMwNDUzMDY5Al8xBAZwcmVmaXgIBQskdDAzMDQ1MzA2OQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDMyMTYzMzAwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDMyMTYzMzAwAl8xBAZwcmVmaXgIBQskdDAzMjE2MzMwMAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sAAAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQC8AgMJALYCAQkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQ1zY2FsZTE4QmlnSW50CQC2AgEFDXRvdGFsTHBBbW91bnQFDXNjYWxlMThCaWdJbnQBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFDHVzZXJMcEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQEHHJvdW5kZWRMcEFtb3VudEZyb21BdmFpbGFibGUJAKADAQkAvAIDCQC2AgEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABCByb3VuZGVkQXNzZXRzQXZhaWxhYmxlVG9XaXRoZHJhdwkAoAMBCQC8AgMJALYCAQUccm91bmRlZExwQW1vdW50RnJvbUF2YWlsYWJsZQkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQJAJYDAQkAzAgCAAAJAMwIAgkAlwMBCQDMCAIFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAMwIAgUccm91bmRlZExwQW1vdW50RnJvbUF2YWlsYWJsZQUDbmlsBQNuaWwBD2dldFN0YWtlQWN0aW9ucwIBaQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNcGF5bWVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQED3BheW1lbnRMcEFtb3VudAkAoAMBCQC8AgMJALYCAQUNcGF5bWVudEFtb3VudAUNc2NhbGUxOEJpZ0ludAkBD2dldEN1cnJlbnRQcmljZQAEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQQbmV3VG90YWxMcEFtb3VudAkAZAIFDXRvdGFsTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAZAIFEHRvdGFsQXNzZXRBbW91bnQFDXBheW1lbnRBbW91bnQED25ld1VzZXJMcEFtb3VudAkAZAIFDHVzZXJMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQFDXBheW1lbnRBbW91bnQEF3VwZGF0ZVN0YXJ0SGVpZ2h0QWN0aW9uAwkAAAIFDXRvdGFsTHBBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlIaXN0b3J5AwIFc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQENZm9ybWF0SGlzdG9yeQQJAQ9jYWxjVG90YWxQcm9maXQACQEPZ2V0Q3VycmVudFByaWNlAAUNdG90YWxMcEFtb3VudAUQdG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxMcEFtb3VudAUQbmV3VG90YWxMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAUTbmV3VG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBQ9uZXdVc2VyTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzBRhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQFA25pbAUXdXBkYXRlU3RhcnRIZWlnaHRBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEmdldFdpdGhkcmF3QWN0aW9ucwIBaRVscEFzc2V0V2l0aGRyYXdBbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQBmAgUVbHBBc3NldFdpdGhkcmF3QW1vdW50AAAGCQEIdGhyb3dFcnIBAh9MUCBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIoY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgTFAgKAkApAMBBQx1c2VyTHBBbW91bnQCASkFA25pbAMJAAACBQVjaGVjawUFY2hlY2sED25ld1VzZXJMcEFtb3VudAkAZQIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBN3aXRoZHJhd0Fzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBRVscEFzc2V0V2l0aGRyYXdBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BBBuZXdUb3RhbExwQW1vdW50CQBlAgUNdG90YWxMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBRBuZXdUb3RhbExwQW1vdW50CQEPZ2V0Q3VycmVudFByaWNlAAUNc2NhbGUxOEJpZ0ludAQXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MAAAQabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAGQCBRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgUTd2l0aGRyYXdBc3NldEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5SGlzdG9yeQMCCHdpdGhkcmF3BQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkBDWZvcm1hdEhpc3RvcnkECQEPY2FsY1RvdGFsUHJvZml0AAkBD2dldEN1cnJlbnRQcmljZQAFDXRvdGFsTHBBbW91bnQFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwUabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE3dpdGhkcmF3QXNzZXRBbW91bnQFDGFzc2V0SWRCeXRlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCAFpARNzZXRFbWlzc2lvblBlckJsb2NrARBlbWlzc2lvblBlckJsb2NrBAVjaGVjawkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5RW1pc3Npb25QZXJCbG9jawkAlgMBCQDMCAIAAAkAzAgCBRBlbWlzc2lvblBlckJsb2NrBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlzZXRFbWlzc2lvblBlcmlvZEluQmxvY2tzAQFwBAVjaGVjawkAzAgCAwkAZgIFAXAAAAYJAQh0aHJvd0VycgECKGVtaXNzaW9uIHBlcmlvZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtleUVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFAXAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpCQClCAEIBQFpBmNhbGxlcgFpAQhzdGFrZUZvcgELdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQAAAgkAyAEBCQDZBAEFC3VzZXJBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhRhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARN3aXRoZHJhd0Fzc2V0QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJscEFtb3VudFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFE3dpdGhkcmF3QXNzZXRBbW91bnQFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQWbWluV2l0aGRyYXdBc3NldEFtb3VudAkAoAMBCQC9AgQJAQ9nZXRDdXJyZW50UHJpY2UACQC2AgEAAQUNc2NhbGUxOEJpZ0ludAUHQ0VJTElORwQFY2hlY2sJAMwIAgMJAGYCBRN3aXRoZHJhd0Fzc2V0QW1vdW50AAAGCQEIdGhyb3dFcnIBAiV3aXRoZHJhdyBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwUTd2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiVjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSAoCQCkAwEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcCASkJAMwIAgMJAGcCBRN3aXRoZHJhd0Fzc2V0QW1vdW50BRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJHdpdGhkcmF3IGFtb3VudCBpcyB0b28gc21hbGwuIE1pbjogKAkApAMBBRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQESZ2V0V2l0aGRyYXdBY3Rpb25zAgUBaQUSbHBBbW91bnRUb1dpdGhkcmF3CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWdldFVzZXJBc3NldHNSRUFET05MWQELdXNlckFkZHJlc3MEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQVdXNlclRvdGFsU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzAAAEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAJAJQKAgUDbmlsCQCXCgUFDHVzZXJMcEFtb3VudAUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBD2dldEN1cnJlbnRQcmljZQAFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24BaQEWZ2V0VG90YWxBc3NldHNSRUFET05MWQAJAJQKAgUDbmlsCQCVCgMFDXRvdGFsTHBBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkBD2dldEN1cnJlbnRQcmljZQABaQELdm90ZUZvclR4SWQBBHR4SWQEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJa2V5UHJlZml4CQEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQUEdHhJZAQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBbGxvd2VkVHhJZAAFBHR4SWQFA25pbAQRYWxsb3dlZFR4SWRPcHRpb24JAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAQDZXJyCQDMCAIDCQAAAgkAyAEBCQDZBAEFBHR4SWQFEVRYSURfQllURVNfTEVOR1RIBgkBCHRocm93RXJyAQkArAICBQR0eElkAhIgaXMgbm90IHZhbGlkIHR4SWQJAMwIAgMDCQAAAgURYWxsb3dlZFR4SWRPcHRpb24FBHVuaXQGCQECIT0CCQEFdmFsdWUBBRFhbGxvd2VkVHhJZE9wdGlvbgUEdHhJZAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAITIGlzIGFscmVhZHkgYWxsb3dlZAUDbmlsAwkAAAIFA2VycgUDZXJyCQEMdm90ZUlOVEVSTkFMBAUTY2FsbGVyQWRkcmVzc1N0cmluZwUJa2V5UHJlZml4BQZRVU9SVU0FBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAECGJ5QWRtaW5zCQAAAggFAnR4AmlkCQDZBAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAIABAdieU93bmVyAwkAZwIJAJADAQkBDWdldEFkbWluc0xpc3QABQZRVU9SVU0HCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5AwUIYnlBZG1pbnMGBQdieU93bmVyRoGTgQ==", "height": 2690055, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GNgVpsstBv7bavKTgTETGZYsy6cQaeSpTNXBXTYkAZgf Next: 7vWYwan9jcdEdRYtSZsqJWFF7WB9HV4sY8WE5PbwmLuB Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "mpt_staking.ride"
4+let a = "l2mp_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
10-let d = 26
10+let d = 1000000000000000000
1111
12-let e = 1440
12+let e = toBigInt(d)
1313
14-func f (g) = throw(((a + ": ") + g))
14+let f = 26
15+
16+let g = 1440
17+
18+func h (i) = throw(((a + ": ") + i))
1519
1620
17-let h = makeString(["%s", "assetId"], b)
21+let j = makeString(["%s", "assetId"], b)
1822
19-let i = makeString(["%s", "emissionPerBlock"], b)
23+let k = makeString(["%s", "emissionPerBlock"], b)
2024
21-let j = makeString(["%s", "emissionPeriodInBlocks"], b)
25+let l = makeString(["%s", "emissionPeriodInBlocks"], b)
2226
23-let k = makeString(["%s", "startBlock"], b)
27+let m = makeString(["%s", "startBlock"], b)
2428
25-let l = makeString(["%s", "totalLpAmount"], b)
29+let n = makeString(["%s", "totalLpAmount"], b)
2630
27-let m = makeString(["%s", "totalAssetAmount"], b)
31+let o = makeString(["%s", "totalAssetAmount"], b)
2832
29-func n (o) = makeString(["%s%s", "userLpAmount", o], b)
33+func p (q) = makeString(["%s%s", "userLpAmount", q], b)
3034
3135
32-func p (o) = makeString(["%s%s", "totalAssetWithdrawn", o], b)
36+func r (q) = makeString(["%s%s", "totalAssetWithdrawn", q], b)
3337
3438
35-func q (o) = makeString(["%s%s", "totalAssetStaked", o], b)
39+func s (q) = makeString(["%s%s", "totalAssetStaked", q], b)
3640
3741
38-let r = valueOrElse(getInteger(this, l), 0)
39-
40-let s = valueOrElse(getInteger(this, m), 0)
41-
42-let t = valueOrElse(getString(this, h), "WAVES")
43-
44-let u = if ((t == "WAVES"))
45- then unit
46- else fromBase58String(t)
47-
48-let v = valueOrElse(getInteger(this, j), e)
49-
50-let w = (valueOrElse(getInteger(this, i), 0) * v)
51-
52-let x = fraction(height, 1, v)
53-
54-let y = 5
55-
56-let z = 3
57-
58-let A = 32
59-
60-func B (C) = makeString(["%s%s%s", "allowTxId", C], b)
42+func t (u,q,v) = makeString(["%s%s%s", u, q, toBase58String(v)], b)
6143
6244
63-func D (E,F) = makeString([E, F], b)
45+func w (x,y,z,A) = makeString(["%d%d", toString(x), toString(y), toString(z), toString(A)], b)
6446
6547
66-func G () = makeString(["%s", "adminAddressList"], b)
48+let A = valueOrElse(getInteger(this, n), 0)
49+
50+let z = valueOrElse(getInteger(this, o), 0)
51+
52+let B = valueOrElse(getString(this, j), "WAVES")
53+
54+let C = if ((B == "WAVES"))
55+ then unit
56+ else fromBase58String(B)
57+
58+let D = valueOrElse(getInteger(this, l), g)
59+
60+let E = (valueOrElse(getInteger(this, k), 0) * D)
61+
62+let F = 5
63+
64+let G = 3
65+
66+let H = 32
67+
68+func I (v) = makeString(["%s%s%s", "allowTxId", v], b)
6769
6870
69-func H () = makeString(["%s", "txId"], b)
71+func J (K,L) = makeString([K, L], b)
7072
7173
72-func I (E,J) = {
73- let K = D(E, J)
74- valueOrElse(getInteger(K), 0)
74+func M () = makeString(["%s", "adminAddressList"], b)
75+
76+
77+func N () = makeString(["%s", "txId"], b)
78+
79+
80+func O (K,P) = {
81+ let Q = J(K, P)
82+ valueOrElse(getInteger(Q), 0)
7583 }
7684
7785
78-func L () = {
79- let M = getString(this, G())
80- if ($isInstanceOf(M, "String"))
86+func R () = {
87+ let S = getString(this, M())
88+ if ($isInstanceOf(S, "String"))
8189 then {
82- let N = M
83- split(N, b)
90+ let T = S
91+ split(T, b)
8492 }
8593 else nil
8694 }
8795
8896
89-func O (P) = containsElement(L(), P)
97+func U (V) = containsElement(R(), V)
9098
9199
92-func Q (R,F) = {
93- let S = R
94- let T = S._1
95- let E = S._2
96- $Tuple2((T :+ D(E, F)), E)
100+func W (X,L) = {
101+ let Y = X
102+ let Z = Y._1
103+ let K = Y._2
104+ $Tuple2((Z :+ J(K, L)), K)
97105 }
98106
99107
100-func U (V) = {
101- let W = G()
102- let X = {
103- let Y = L()
104- let Z = size(Y)
105- let aa = $Tuple2(nil, V)
106- func ab (ac,ad) = if ((ad >= Z))
107- then ac
108- else Q(ac, Y[ad])
108+func aa (ab) = {
109+ let ac = M()
110+ let ad = {
111+ let ae = R()
112+ let af = size(ae)
113+ let ag = $Tuple2(nil, ab)
114+ func ah (ai,aj) = if ((aj >= af))
115+ then ai
116+ else W(ai, ae[aj])
109117
110- func ae (ac,ad) = if ((ad >= Z))
111- then ac
118+ func ak (ai,aj) = if ((aj >= af))
119+ then ai
112120 else throw("List size exceeds 5")
113121
114- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
122+ ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
115123 }
116- let T = X._1
117- let E = X._2
118- T
124+ let Z = ad._1
125+ let K = ad._2
126+ Z
119127 }
120128
121129
122-func af (T,K) = (T + valueOrElse(getInteger(K), 0))
130+func al (Z,Q) = (Z + valueOrElse(getInteger(Q), 0))
123131
124132
125-func ag (E) = {
126- let ah = U(E)
127- let Y = ah
128- let Z = size(Y)
129- let aa = 0
130- func ab (ac,ad) = if ((ad >= Z))
131- then ac
132- else af(ac, Y[ad])
133+func am (K) = {
134+ let an = aa(K)
135+ let ae = an
136+ let af = size(ae)
137+ let ag = 0
138+ func ah (ai,aj) = if ((aj >= af))
139+ then ai
140+ else al(ai, ae[aj])
133141
134- func ae (ac,ad) = if ((ad >= Z))
135- then ac
142+ func ak (ai,aj) = if ((aj >= af))
143+ then ai
136144 else throw("List size exceeds 5")
137145
138- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
146+ ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
139147 }
140148
141149
142-func ai (T,aj) = (T :+ DeleteEntry(aj))
150+func ao (Z,ap) = (Z :+ DeleteEntry(ap))
143151
144152
145-func ak (E) = {
146- let ah = U(E)
147- let Y = ah
148- let Z = size(Y)
149- let aa = nil
150- func ab (ac,ad) = if ((ad >= Z))
151- then ac
152- else ai(ac, Y[ad])
153+func aq (K) = {
154+ let an = aa(K)
155+ let ae = an
156+ let af = size(ae)
157+ let ag = nil
158+ func ah (ai,aj) = if ((aj >= af))
159+ then ai
160+ else ao(ai, ae[aj])
153161
154- func ae (ac,ad) = if ((ad >= Z))
155- then ac
162+ func ak (ai,aj) = if ((aj >= af))
163+ then ai
156164 else throw("List size exceeds 5")
157165
158- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
166+ ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
159167 }
160168
161169
162-func al (am,V,an,ao) = {
163- let K = D(V, am)
164- let ap = I(V, am)
165- let aq = if (!(O(am)))
166- then f((("Address: " + am) + " not in Admin list"))
167- else if ((ap == 1))
168- then f((K + " you already voted"))
170+func ar (as,ab,at,au) = {
171+ let Q = J(ab, as)
172+ let av = O(ab, as)
173+ let aw = if (!(U(as)))
174+ then h((("Address: " + as) + " not in Admin list"))
175+ else if ((av == 1))
176+ then h((Q + " you already voted"))
169177 else unit
170- if ((aq == aq))
178+ if ((aw == aw))
171179 then {
172- let ah = ag(V)
173- if (((ah + 1) >= an))
180+ let an = am(ab)
181+ if (((an + 1) >= at))
174182 then {
175- let ar = ak(V)
176- (ar ++ ao)
183+ let ax = aq(ab)
184+ (ax ++ au)
177185 }
178- else [IntegerEntry(K, 1)]
186+ else [IntegerEntry(Q, 1)]
179187 }
180188 else throw("Strict value is not equal to itself.")
181189 }
182190
183191
184-func as () = {
185- let at = valueOrElse(getInteger(this, k), 0)
186- let au = fraction(at, 1, v)
187- let av = (x - au)
188- max([0, (w * av)])
192+func ay (az) = {
193+ let aA = valueOrElse(getInteger(this, m), 0)
194+ let aB = fraction(aA, 1, D)
195+ let aC = ((az / D) - aB)
196+ max([0, (E * aC)])
189197 }
190198
191199
192-func aw () = {
193- let ax = (s + as())
194- let ay = {
195- let M = u
196- if ($isInstanceOf(M, "Unit"))
200+func aD () = ay(height)
201+
202+
203+func aE () = {
204+ let aF = (z + aD())
205+ let aG = {
206+ let S = C
207+ if ($isInstanceOf(S, "Unit"))
197208 then {
198- let az = M
199- min([ax, wavesBalance(this).available])
209+ let aH = S
210+ min([aF, wavesBalance(this).available])
200211 }
201- else if ($isInstanceOf(M, "ByteVector"))
212+ else if ($isInstanceOf(S, "ByteVector"))
202213 then {
203- let aA = M
204- min([ax, assetBalance(this, aA)])
214+ let aI = S
215+ min([aF, assetBalance(this, aI)])
205216 }
206217 else throw("Match error")
207218 }
208- if ((r == 0))
219+ if ((A == 0))
209220 then 0
210- else ay
221+ else aG
211222 }
212223
213224
214-func aB () = if ((r != 0))
215- then fraction(aw(), c, r)
216- else (1 * c)
225+func aJ () = if ((A != 0))
226+ then fraction(toBigInt(aE()), e, toBigInt(A))
227+ else e
217228
218229
219-func aC (o) = valueOrElse(getInteger(this, n(o)), 0)
230+func aK (q) = valueOrElse(getInteger(this, p(q)), 0)
220231
221232
222-func aD (o) = {
223- let aE = aC(o)
224- let aF = fraction(aE, aB(), c)
225- if ((aB() > (aF * c)))
226- then 0
227- else aF
233+func aL (q) = {
234+ let aM = aK(q)
235+ let aN = toInt(fraction(toBigInt(aM), aJ(), e))
236+ let aO = toInt(fraction(toBigInt(aN), e, aJ()))
237+ let aP = toInt(fraction(toBigInt(aO), aJ(), e))
238+ max([0, min([aN, aO])])
228239 }
229240
230241
231-func aG (aH,o) = {
232- let aI = [if ((size(aH.payments) == 1))
242+func aQ (aR,q) = {
243+ let aS = [if ((size(aR.payments) == 1))
233244 then true
234- else f("should include 1 payment"), if ((aH.payments[0].assetId == u))
245+ else h("should include 1 payment"), if ((aR.payments[0].assetId == C))
235246 then true
236- else f(("payment should be in " + t)), if ((aH.payments[0].amount > 0))
247+ else h(("payment should be in " + B)), if ((aR.payments[0].amount > 0))
237248 then true
238249 else "payment amount should be greater than 0"]
239- if ((aI == aI))
250+ if ((aS == aS))
240251 then {
241- let aJ = aH.payments[0].amount
242- let aK = fraction(aJ, c, aB())
243- let aE = aC(o)
244- let aL = valueOrElse(getInteger(this, q(o)), 0)
245- let aM = (r + aK)
246- let aN = (s + aJ)
247- let aO = (aE + aK)
248- let aP = (aL + aJ)
249- let aQ = if ((r == 0))
250- then [IntegerEntry(k, height)]
252+ let aT = aR.payments[0].amount
253+ let aU = toInt(fraction(toBigInt(aT), e, aJ()))
254+ let aM = aK(q)
255+ let aV = valueOrElse(getInteger(this, s(q)), 0)
256+ let aW = (A + aU)
257+ let aX = (z + aT)
258+ let aY = (aM + aU)
259+ let aZ = (aV + aT)
260+ let ba = if ((A == 0))
261+ then [IntegerEntry(m, height)]
251262 else nil
252- ([IntegerEntry(l, aM), IntegerEntry(m, aN), IntegerEntry(n(o), aO), IntegerEntry(q(o), aP)] ++ aQ)
263+ ([StringEntry(t("stake", q, aR.transactionId), w(aD(), aJ(), A, z)), IntegerEntry(n, aW), IntegerEntry(o, aX), IntegerEntry(p(q), aY), IntegerEntry(s(q), aZ)] ++ ba)
253264 }
254265 else throw("Strict value is not equal to itself.")
255266 }
256267
257268
258-func aR (aH,aS) = {
259- let o = toString(aH.caller)
260- let aE = aC(o)
261- let aT = [if ((aS > 0))
269+func bb (aR,bc) = {
270+ let q = toString(aR.caller)
271+ let aM = aK(q)
272+ let bd = [if ((bc > 0))
262273 then true
263- else f("LP amount should be more than 0"), if ((aE >= aS))
274+ else h("LP amount should be more than 0"), if ((aM >= bc))
264275 then true
265- else f((("cannot withdraw more than available LP (" + toString(aE)) + ")"))]
266- if ((aT == aT))
276+ else h((("cannot withdraw more than available LP (" + toString(aM)) + ")"))]
277+ if ((bd == bd))
267278 then {
268- let aO = (aE - aS)
269- let aU = fraction(aS, aB(), c)
270- let aM = (r - aS)
271- let aN = fraction(aM, aB(), c)
272- let aV = valueOrElse(getInteger(this, p(o)), 0)
273- let aW = (aV + aU)
274-[IntegerEntry(l, aM), IntegerEntry(m, aN), IntegerEntry(n(o), aO), IntegerEntry(p(o), aW), IntegerEntry(k, height), ScriptTransfer(aH.caller, aU, u)]
279+ let aY = (aM - bc)
280+ let be = toInt(fraction(toBigInt(bc), aJ(), e))
281+ let aW = (A - bc)
282+ let aX = toInt(fraction(toBigInt(aW), aJ(), e))
283+ let bf = valueOrElse(getInteger(this, r(q)), 0)
284+ let bg = (bf + be)
285+[StringEntry(t("withdraw", q, aR.transactionId), w(aD(), aJ(), A, z)), IntegerEntry(n, aW), IntegerEntry(o, aX), IntegerEntry(p(q), aY), IntegerEntry(r(q), bg), IntegerEntry(m, height), ScriptTransfer(aR.caller, be, C)]
275286 }
276287 else throw("Strict value is not equal to itself.")
277288 }
278289
279290
280-@Callable(aH)
281-func setEmissionPerBlock (aX) = {
282- let aT = [if ((aH.caller == this))
291+@Callable(aR)
292+func setEmissionPerBlock (bh) = {
293+ let bd = [if ((aR.caller == this))
283294 then true
284- else f("permission denied")]
285- if ((aT == aT))
286- then [IntegerEntry(m, aw()), IntegerEntry(k, height), IntegerEntry(i, max([0, aX]))]
295+ else h("permission denied")]
296+ if ((bd == bd))
297+ then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(k, max([0, bh]))]
287298 else throw("Strict value is not equal to itself.")
288299 }
289300
290301
291302
292-@Callable(aH)
293-func stake () = aG(aH, toString(aH.caller))
294-
295-
296-
297-@Callable(aH)
298-func stakeFor (o) = {
299- let aT = [if ((size(fromBase58String(o)) == d))
303+@Callable(aR)
304+func setEmissionPeriodInBlocks (bi) = {
305+ let bd = [if ((bi > 0))
300306 then true
301- else f("address is not valid")]
302- if ((aT == aT))
303- then aG(aH, o)
307+ else h("emission period should be greater than 0"), if ((aR.caller == this))
308+ then true
309+ else h("permission denied")]
310+ if ((bd == bd))
311+ then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(l, bi)]
304312 else throw("Strict value is not equal to itself.")
305313 }
306314
307315
308316
309-@Callable(aH)
310-func withdraw (aU) = {
311- let o = toString(aH.caller)
312- let aE = aC(o)
313- let aY = fraction(aU, c, aB())
314- let aF = aD(o)
315- let aZ = fraction(aB(), 1, c, CEILING)
316- let aT = [if ((aU > 0))
317+@Callable(aR)
318+func stake () = aQ(aR, toString(aR.caller))
319+
320+
321+
322+@Callable(aR)
323+func stakeFor (q) = {
324+ let bd = [if ((size(fromBase58String(q)) == f))
317325 then true
318- else f("withdraw amount should be more than 0"), if ((aF >= aU))
319- then true
320- else f((("cannot withdraw more than available (" + toString(aF)) + ")")), if ((aU >= aZ))
321- then true
322- else f((("withdraw amount is too small. Min: (" + toString(aZ)) + ")"))]
323- if ((aT == aT))
324- then aR(aH, aY)
326+ else h("address is not valid")]
327+ if ((bd == bd))
328+ then aQ(aR, q)
325329 else throw("Strict value is not equal to itself.")
326330 }
327331
328332
329333
330-@Callable(aH)
331-func getUserAssetsREADONLY (o) = {
332- let aE = aC(o)
333- let aF = aD(o)
334- let aL = valueOrElse(getInteger(this, q(o)), 0)
335- let aV = valueOrElse(getInteger(this, p(o)), 0)
336- $Tuple2(nil, $Tuple5(aE, aF, aB(), aL, aV))
334+@Callable(aR)
335+func withdraw (be) = {
336+ let q = toString(aR.caller)
337+ let aM = aK(q)
338+ let bj = toInt(fraction(toBigInt(be), e, aJ()))
339+ let aN = aL(q)
340+ let bk = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
341+ let bd = [if ((be > 0))
342+ then true
343+ else h("withdraw amount should be more than 0"), if ((aN >= be))
344+ then true
345+ else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((be >= bk))
346+ then true
347+ else h((("withdraw amount is too small. Min: (" + toString(bk)) + ")"))]
348+ if ((bd == bd))
349+ then bb(aR, bj)
350+ else throw("Strict value is not equal to itself.")
337351 }
338352
339353
340354
341-@Callable(aH)
342-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(r, aw(), aB()))
355+@Callable(aR)
356+func getUserAssetsREADONLY (q) = {
357+ let aM = aK(q)
358+ let aN = aL(q)
359+ let aV = valueOrElse(getInteger(this, s(q)), 0)
360+ let bf = valueOrElse(getInteger(this, r(q)), 0)
361+ $Tuple2(nil, $Tuple5(aM, aN, aJ(), aV, bf))
362+ }
343363
344364
345365
346-@Callable(aH)
347-func voteForTxId (C) = {
348- let am = toBase58String(aH.caller.bytes)
349- let V = B(C)
350- let T = [StringEntry(H(), C)]
351- let ba = getString(this, H())
352- let aq = [if ((size(fromBase58String(C)) == A))
366+@Callable(aR)
367+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(A, aE(), aJ()))
368+
369+
370+
371+@Callable(aR)
372+func voteForTxId (v) = {
373+ let as = toBase58String(aR.caller.bytes)
374+ let ab = I(v)
375+ let Z = [StringEntry(N(), v)]
376+ let bl = getString(this, N())
377+ let aw = [if ((size(fromBase58String(v)) == H))
353378 then true
354- else f((C + " is not valid txId")), if (if ((ba == unit))
379+ else h((v + " is not valid txId")), if (if ((bl == unit))
355380 then true
356- else (value(ba) != C))
381+ else (value(bl) != v))
357382 then true
358- else f((C + " is already allowed"))]
359- if ((aq == aq))
360- then al(am, V, z, T)
383+ else h((v + " is already allowed"))]
384+ if ((aw == aw))
385+ then ar(as, ab, G, Z)
361386 else throw("Strict value is not equal to itself.")
362387 }
363388
364389
365-@Verifier(bb)
366-func bc () = {
367- let bd = (bb.id == fromBase58String(valueOrElse(getString(this, H()), "")))
368- let be = if ((size(L()) >= z))
390+@Verifier(bm)
391+func bn () = {
392+ let bo = (bm.id == fromBase58String(valueOrElse(getString(this, N()), "")))
393+ let bp = if ((size(R()) >= G))
369394 then false
370- else sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
371- if (bd)
395+ else sigVerify(bm.bodyBytes, bm.proofs[0], bm.senderPublicKey)
396+ if (bo)
372397 then true
373- else be
398+ else bp
374399 }
375400

github/deemru/w8io/169f3d6 
134.61 ms