tx · BHEjHgmBh55akQ9VE6ibfAYhfiSwqmW8uNYMb2gh8n63

3Mvsbd5G4Xoyy4ib7gLCVSix21CyMr4K7jb:  -0.01500000 Waves

2023.07.27 12:32 [2684077] smart account 3Mvsbd5G4Xoyy4ib7gLCVSix21CyMr4K7jb > SELF 0.00000000 Waves

{ "type": 13, "id": "BHEjHgmBh55akQ9VE6ibfAYhfiSwqmW8uNYMb2gh8n63", "fee": 1500000, "feeAssetId": null, "timestamp": 1690450378670, "version": 2, "chainId": 84, "sender": "3Mvsbd5G4Xoyy4ib7gLCVSix21CyMr4K7jb", "senderPublicKey": "8fnW16MobFGpeokNqZLUEqPaJUXn5zaSGf4ch9A3Ctk7", "proofs": [ "241ctTGE99zkczDrKeRS6fd8RJ9kbYhUF9NmuvceUFj6pK7F9LSJA5cSnfcXHNk2zKwvHHyYgNNEt3yLGCNv8Rke" ], "script": "base64:BgIfCAISAwoBARIAEgMKAQgSAwoBARIDCgEIEgASAwoBCDAADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4ABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVABD2tleVVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICDHVzZXJMcEFtb3VudAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAADXRvdGFsTHBBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQa2V5VG90YWxMcEFtb3VudAAAABB0b3RhbEFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVRvdGFsQXNzZXRBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPaGVpZ2h0SW5QZXJpb2RzCQBrAwUGaGVpZ2h0AAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MAD0FETUlOX0xJU1RfU0laRQAFAAZRVU9SVU0AAwARVFhJRF9CWVRFU19MRU5HVEgAIAEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCWFsbG93VHhJZAkAzAgCBQR0eElkBQNuaWwFA1NFUAEQa2V5RnVsbEFkbWluVm90ZQIGcHJlZml4DGFkbWluQWRkcmVzcwkAuQkCCQDMCAIFBnByZWZpeAkAzAgCBQxhZG1pbkFkZHJlc3MFA25pbAUDU0VQARNrZXlBZG1pbkFkZHJlc3NMaXN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAQ5rZXlBbGxvd2VkVHhJZAAJALkJAgkAzAgCAgIlcwkAzAgCAgR0eElkBQNuaWwFA1NFUAEMZ2V0QWRtaW5Wb3RlAgZwcmVmaXgFYWRtaW4EB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABDWdldEFkbWluc0xpc3QABAckbWF0Y2gwCQCdCAIFBHRoaXMJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUDU0VQBQNuaWwBDWlzSW5BZG1pbkxpc3QBB2FkZHJlc3MJAQ9jb250YWluc0VsZW1lbnQCCQENZ2V0QWRtaW5zTGlzdAAFB2FkZHJlc3MBEmdlblZvdGVzS2V5c0hlbHBlcgIBYQxhZG1pbkFkZHJlc3MECyR0MDI3MTgyNzQyBQFhBAZyZXN1bHQIBQskdDAyNzE4Mjc0MgJfMQQGcHJlZml4CAULJHQwMjcxODI3NDICXzIJAJQKAgkAzQgCBQZyZXN1bHQJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQxhZG1pbkFkZHJlc3MFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBE2tleUFkbWluQWRkcmVzc0xpc3QABAskdDAyODg5Mjk3MwoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAZyZXN1bHQIBQskdDAyODg5Mjk3MwJfMQQGcHJlZml4CAULJHQwMjg4OTI5NzMCXzIFBnJlc3VsdAEQY291bnRWb3Rlc0hlbHBlcgIGcmVzdWx0B3ZvdGVLZXkJAGQCBQZyZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQpjb3VudFZvdGVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjb3VudFZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEQY2xlYXJWb3Rlc0hlbHBlcgIGcmVzdWx0A2tleQkAzQgCBQZyZXN1bHQJAQtEZWxldGVFbnRyeQEFA2tleQETZ2V0Q2xlYXJWb3RlRW50cmllcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBDHZvdGVJTlRFUk5BTAQTY2FsbGVyQWRkcmVzc1N0cmluZwlrZXlQcmVmaXgIbWluVm90ZXMKdm90ZVJlc3VsdAQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEEGFkbWluQ3VycmVudFZvdGUJAQxnZXRBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEA2VycgMJAQEhAQkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QDCQAAAgUQYWRtaW5DdXJyZW50Vm90ZQABCQEIdGhyb3dFcnIBCQCsAgIFB3ZvdGVLZXkCEiB5b3UgYWxyZWFkeSB2b3RlZAUEdW5pdAMJAAACBQNlcnIFA2VycgQFdm90ZXMJAQpjb3VudFZvdGVzAQUJa2V5UHJlZml4AwkAZwIJAGQCBQV2b3RlcwABBQhtaW5Wb3RlcwQQY2xlYXJWb3RlRW50cmllcwkBE2dldENsZWFyVm90ZUVudHJpZXMBBQlrZXlQcmVmaXgJAM4IAgUQY2xlYXJWb3RlRW50cmllcwUKdm90ZVJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdm90ZUtleQABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BD2NhbGNUb3RhbFByb2ZpdAAECnN0YXJ0QmxvY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5U3RhcnRCbG9jawAABAtzdGFydFBlcmlvZAkAawMFCnN0YXJ0QmxvY2sAAQUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwQOZWxhcHNlZFBlcmlvZHMJAGUCBQ9oZWlnaHRJblBlcmlvZHMFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQC8AgMJALYCAQkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQ1zY2FsZTE4QmlnSW50CQC2AgEFDXRvdGFsTHBBbW91bnQFDXNjYWxlMThCaWdJbnQBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFDHVzZXJMcEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQDCQBmAgAABRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3AAAFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcBD2dldFN0YWtlQWN0aW9ucwIBaQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNcGF5bWVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQED3BheW1lbnRMcEFtb3VudAkAoAMBCQC8AgMJALYCAQUNcGF5bWVudEFtb3VudAUNc2NhbGUxOEJpZ0ludAkBD2dldEN1cnJlbnRQcmljZQAEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQQbmV3VG90YWxMcEFtb3VudAkAZAIFDXRvdGFsTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAZAIFEHRvdGFsQXNzZXRBbW91bnQFDXBheW1lbnRBbW91bnQED25ld1VzZXJMcEFtb3VudAkAZAIFDHVzZXJMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQFDXBheW1lbnRBbW91bnQEF3VwZGF0ZVN0YXJ0SGVpZ2h0QWN0aW9uAwkAAAIFDXRvdGFsTHBBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MFGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAUDbmlsBRd1cGRhdGVTdGFydEhlaWdodEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgESZ2V0V2l0aGRyYXdBY3Rpb25zAgFpFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQFY2hlY2sJAMwIAgMJAGYCBRVscEFzc2V0V2l0aGRyYXdBbW91bnQAAAYJAQh0aHJvd0VycgECH0xQIGFtb3VudCBzaG91bGQgYmUgbW9yZSB0aGFuIDAJAMwIAgMJAGcCBQx1c2VyTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAihjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSBMUCAoCQCkAwEFDHVzZXJMcEFtb3VudAIBKQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawQPbmV3VXNlckxwQW1vdW50CQBlAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQEE3dpdGhkcmF3QXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQEEG5ld1RvdGFsTHBBbW91bnQJAGUCBQ10b3RhbExwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQEE25ld1RvdGFsQXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFEG5ld1RvdGFsTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAABBpuZXdVc2VyVG90YWxBc3NldFdpdGhkcmF3bgkAZAIFF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduBRN3aXRoZHJhd0Fzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MFGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgcBaQETc2V0RW1pc3Npb25QZXJCbG9jawEQZW1pc3Npb25QZXJCbG9jawQFY2hlY2sJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleUVtaXNzaW9uUGVyQmxvY2sJAJYDAQkAzAgCAAAJAMwIAgUQZW1pc3Npb25QZXJCbG9jawUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UACQEPZ2V0U3Rha2VBY3Rpb25zAgUBaQkApQgBCAUBaQZjYWxsZXIBaQEIc3Rha2VGb3IBC3VzZXJBZGRyZXNzBAVjaGVjawkAzAgCAwkAAAIJAMgBAQkA2QQBBQt1c2VyQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIUYWRkcmVzcyBpcyBub3QgdmFsaWQFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpBQt1c2VyQWRkcmVzcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwETd2l0aGRyYXdBc3NldEFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQSbHBBbW91bnRUb1dpdGhkcmF3CQCgAwEJALwCAwkAtgIBBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQ1zY2FsZTE4QmlnSW50CQEPZ2V0Q3VycmVudFByaWNlAAQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFm1pbldpdGhkcmF3QXNzZXRBbW91bnQJAKADAQkAvQIECQEPZ2V0Q3VycmVudFByaWNlAAkAtgIBAAEFDXNjYWxlMThCaWdJbnQFB0NFSUxJTkcEBWNoZWNrCQDMCAIDCQBmAgUTd2l0aGRyYXdBc3NldEFtb3VudAAABgkBCHRocm93RXJyAQIld2l0aGRyYXcgYW1vdW50IHNob3VsZCBiZSBtb3JlIHRoYW4gMAkAzAgCAwkAZwIFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcFE3dpdGhkcmF3QXNzZXRBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIlY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgKAkApAMBBRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3AgEpCQDMCAIDCQBnAgUTd2l0aGRyYXdBc3NldEFtb3VudAUWbWluV2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiR3aXRoZHJhdyBhbW91bnQgaXMgdG9vIHNtYWxsLiBNaW46ICgJAKQDAQUWbWluV2l0aGRyYXdBc3NldEFtb3VudAIBKQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBEmdldFdpdGhkcmF3QWN0aW9ucwIFAWkFEmxwQW1vdW50VG9XaXRoZHJhdwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVnZXRVc2VyQXNzZXRzUkVBRE9OTFkBC3VzZXJBZGRyZXNzBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAACQCUCgIFA25pbAkAlwoFBQx1c2VyTHBBbW91bnQFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAQ9nZXRDdXJyZW50UHJpY2UABRV1c2VyVG90YWxTdGFrZWRBbW91bnQFF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduAWkBFmdldFRvdGFsQXNzZXRzUkVBRE9OTFkACQCUCgIFA25pbAkAlQoDBQ10b3RhbExwQW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAQ9nZXRDdXJyZW50UHJpY2UAAWkBC3ZvdGVGb3JUeElkAQR0eElkBBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEFBHR4SWQEBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QWxsb3dlZFR4SWQABQR0eElkBQNuaWwEEWFsbG93ZWRUeElkT3B0aW9uCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAAEA2VycgkAzAgCAwkAAAIJAMgBAQkA2QQBBQR0eElkBRFUWElEX0JZVEVTX0xFTkdUSAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAISIGlzIG5vdCB2YWxpZCB0eElkCQDMCAIDAwkAAAIFEWFsbG93ZWRUeElkT3B0aW9uBQR1bml0BgkBAiE9AgkBBXZhbHVlAQURYWxsb3dlZFR4SWRPcHRpb24FBHR4SWQGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEyBpcyBhbHJlYWR5IGFsbG93ZWQFA25pbAMJAAACBQNlcnIFA2VycgkBDHZvdGVJTlRFUk5BTAQFE2NhbGxlckFkZHJlc3NTdHJpbmcFCWtleVByZWZpeAUGUVVPUlVNBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAhieUFkbWlucwkAAAIIBQJ0eAJpZAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAACAAQHYnlPd25lcgMJAGcCCQCQAwEJAQ1nZXRBZG1pbnNMaXN0AAUGUVVPUlVNBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQMFCGJ5QWRtaW5zBgUHYnlPd25lckhMyrM=", "height": 2684077, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ha51a6tmTwi8QBQAPQiLmMvVdmnNyQRYii4b7W4iV2Gp Next: none Diff:
OldNewDifferences
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)
42+let t = valueOrElse(getInteger(this, n), 0)
3943
40-let s = valueOrElse(getInteger(this, m), 0)
44+let u = valueOrElse(getInteger(this, o), 0)
4145
42-let t = valueOrElse(getString(this, h), "WAVES")
46+let v = valueOrElse(getString(this, j), "WAVES")
4347
44-let u = if ((t == "WAVES"))
48+let w = if ((v == "WAVES"))
4549 then unit
46- else fromBase58String(t)
50+ else fromBase58String(v)
4751
48-let v = valueOrElse(getInteger(this, j), e)
52+let x = valueOrElse(getInteger(this, l), g)
4953
50-let w = (valueOrElse(getInteger(this, i), 0) * v)
54+let y = (valueOrElse(getInteger(this, k), 0) * x)
5155
52-let x = fraction(height, 1, v)
56+let z = fraction(height, 1, x)
5357
54-let y = 5
58+let A = 5
5559
56-let z = 3
60+let B = 3
5761
58-let A = 32
62+let C = 32
5963
60-func B (C) = makeString(["%s%s%s", "allowTxId", C], b)
64+func D (E) = makeString(["%s%s%s", "allowTxId", E], b)
6165
6266
63-func D (E,F) = makeString([E, F], b)
67+func F (G,H) = makeString([G, H], b)
6468
6569
66-func G () = makeString(["%s", "adminAddressList"], b)
70+func I () = makeString(["%s", "adminAddressList"], b)
6771
6872
69-func H () = makeString(["%s", "txId"], b)
73+func J () = makeString(["%s", "txId"], b)
7074
7175
72-func I (E,J) = {
73- let K = D(E, J)
74- valueOrElse(getInteger(K), 0)
76+func K (G,L) = {
77+ let M = F(G, L)
78+ valueOrElse(getInteger(M), 0)
7579 }
7680
7781
78-func L () = {
79- let M = getString(this, G())
80- if ($isInstanceOf(M, "String"))
82+func N () = {
83+ let O = getString(this, I())
84+ if ($isInstanceOf(O, "String"))
8185 then {
82- let N = M
83- split(N, b)
86+ let P = O
87+ split(P, b)
8488 }
8589 else nil
8690 }
8791
8892
89-func O (P) = containsElement(L(), P)
93+func Q (R) = containsElement(N(), R)
9094
9195
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)
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)
97101 }
98102
99103
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])
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])
109113
110- func ae (ac,ad) = if ((ad >= Z))
111- then ac
114+ func ag (ae,af) = if ((af >= ab))
115+ then ae
112116 else throw("List size exceeds 5")
113117
114- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
118+ ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
115119 }
116- let T = X._1
117- let E = X._2
118- T
120+ let V = Z._1
121+ let G = Z._2
122+ V
119123 }
120124
121125
122-func af (T,K) = (T + valueOrElse(getInteger(K), 0))
126+func ah (V,M) = (V + valueOrElse(getInteger(M), 0))
123127
124128
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])
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])
133137
134- func ae (ac,ad) = if ((ad >= Z))
135- then ac
138+ func ag (ae,af) = if ((af >= ab))
139+ then ae
136140 else throw("List size exceeds 5")
137141
138- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
142+ ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
139143 }
140144
141145
142-func ai (T,aj) = (T :+ DeleteEntry(aj))
146+func ak (V,al) = (V :+ DeleteEntry(al))
143147
144148
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])
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])
153157
154- func ae (ac,ad) = if ((ad >= Z))
155- then ac
158+ func ag (ae,af) = if ((af >= ab))
159+ then ae
156160 else throw("List size exceeds 5")
157161
158- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
162+ ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
159163 }
160164
161165
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"))
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"))
169173 else unit
170- if ((aq == aq))
174+ if ((as == as))
171175 then {
172- let ah = ag(V)
173- if (((ah + 1) >= an))
176+ let aj = ai(X)
177+ if (((aj + 1) >= ap))
174178 then {
175- let ar = ak(V)
176- (ar ++ ao)
179+ let at = am(X)
180+ (at ++ aq)
177181 }
178- else [IntegerEntry(K, 1)]
182+ else [IntegerEntry(M, 1)]
179183 }
180184 else throw("Strict value is not equal to itself.")
181185 }
182186
183187
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)])
188+func au () = {
189+ let av = valueOrElse(getInteger(this, m), 0)
190+ let aw = fraction(av, 1, x)
191+ let ax = (z - aw)
192+ max([0, (y * ax)])
189193 }
190194
191195
192-func aw () = {
193- let ax = (s + as())
194- let ay = {
195- let M = u
196- if ($isInstanceOf(M, "Unit"))
196+func ay () = {
197+ let az = (u + au())
198+ let aA = {
199+ let O = w
200+ if ($isInstanceOf(O, "Unit"))
197201 then {
198- let az = M
199- min([ax, wavesBalance(this).available])
202+ let aB = O
203+ min([az, wavesBalance(this).available])
200204 }
201- else if ($isInstanceOf(M, "ByteVector"))
205+ else if ($isInstanceOf(O, "ByteVector"))
202206 then {
203- let aA = M
204- min([ax, assetBalance(this, aA)])
207+ let aC = O
208+ min([az, assetBalance(this, aC)])
205209 }
206210 else throw("Match error")
207211 }
208- if ((r == 0))
212+ if ((t == 0))
209213 then 0
210- else ay
214+ else aA
211215 }
212216
213217
214-func aB () = if ((r != 0))
215- then fraction(aw(), c, r)
216- else (1 * c)
218+func aD () = if ((t != 0))
219+ then fraction(toBigInt(ay()), e, toBigInt(t))
220+ else e
217221
218222
219-func aC (o) = valueOrElse(getInteger(this, n(o)), 0)
223+func aE (q) = valueOrElse(getInteger(this, p(q)), 0)
220224
221225
222-func aD (o) = {
223- let aE = aC(o)
224- let aF = fraction(aE, aB(), c)
225- if ((0 > aF))
226+func aF (q) = {
227+ let aG = aE(q)
228+ let aH = toInt(fraction(toBigInt(aG), aD(), e))
229+ if ((0 > aH))
226230 then 0
227- else aF
231+ else aH
228232 }
229233
230234
231-func aG (aH,o) = {
232- let aI = [if ((size(aH.payments) == 1))
235+func aI (aJ,q) = {
236+ let aK = [if ((size(aJ.payments) == 1))
233237 then true
234- else f("should include 1 payment"), if ((aH.payments[0].assetId == u))
238+ else h("should include 1 payment"), if ((aJ.payments[0].assetId == w))
235239 then true
236- else f(("payment should be in " + t)), if ((aH.payments[0].amount > 0))
240+ else h(("payment should be in " + v)), if ((aJ.payments[0].amount > 0))
237241 then true
238242 else "payment amount should be greater than 0"]
239- if ((aI == aI))
243+ if ((aK == aK))
240244 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)]
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))
254+ then [IntegerEntry(m, height)]
251255 else nil
252- ([IntegerEntry(l, aM), IntegerEntry(m, aN), IntegerEntry(n(o), aO), IntegerEntry(q(o), aP)] ++ aQ)
256+ ([IntegerEntry(n, aO), IntegerEntry(o, aP), IntegerEntry(p(q), aQ), IntegerEntry(s(q), aR)] ++ aS)
253257 }
254258 else throw("Strict value is not equal to itself.")
255259 }
256260
257261
258-func aR (aH,aS) = {
259- let o = toString(aH.caller)
260- let aE = aC(o)
261- let aT = [if ((aS > 0))
262+func aT (aJ,aU) = {
263+ let q = toString(aJ.caller)
264+ let aG = aE(q)
265+ let aV = [if ((aU > 0))
262266 then true
263- else f("LP amount should be more than 0"), if ((aE >= aS))
267+ else h("LP amount should be more than 0"), if ((aG >= aU))
264268 then true
265- else f((("cannot withdraw more than available LP (" + toString(aE)) + ")"))]
266- if ((aT == aT))
269+ else h((("cannot withdraw more than available LP (" + toString(aG)) + ")"))]
270+ if ((aV == aV))
267271 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)]
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)]
275279 }
276280 else throw("Strict value is not equal to itself.")
277281 }
278282
279283
280-@Callable(aH)
281-func setEmissionPerBlock (aX) = {
282- let aT = [if ((aH.caller == this))
284+@Callable(aJ)
285+func setEmissionPerBlock (aZ) = {
286+ let aV = [if ((aJ.caller == this))
283287 then true
284- else f("permission denied")]
285- if ((aT == aT))
286- then [IntegerEntry(m, aw()), IntegerEntry(k, height), IntegerEntry(i, max([0, aX]))]
288+ else h("permission denied")]
289+ if ((aV == aV))
290+ then [IntegerEntry(o, ay()), IntegerEntry(m, height), IntegerEntry(k, max([0, aZ]))]
287291 else throw("Strict value is not equal to itself.")
288292 }
289293
290294
291295
292-@Callable(aH)
293-func stake () = aG(aH, toString(aH.caller))
296+@Callable(aJ)
297+func stake () = aI(aJ, toString(aJ.caller))
294298
295299
296300
297-@Callable(aH)
298-func stakeFor (o) = {
299- let aT = [if ((size(fromBase58String(o)) == d))
301+@Callable(aJ)
302+func stakeFor (q) = {
303+ let aV = [if ((size(fromBase58String(q)) == f))
300304 then true
301- else f("address is not valid")]
302- if ((aT == aT))
303- then aG(aH, o)
305+ else h("address is not valid")]
306+ if ((aV == aV))
307+ then aI(aJ, q)
304308 else throw("Strict value is not equal to itself.")
305309 }
306310
307311
308312
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))
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()))
318+ let aH = aF(q)
319+ let bb = toInt(fraction(aD(), toBigInt(1), e, CEILING))
320+ let aV = [if ((aW > 0))
317321 then true
318- else f("withdraw amount should be more than 0"), if ((aF >= aU))
322+ else h("withdraw amount should be more than 0"), if ((aH >= aW))
319323 then true
320- else f((("cannot withdraw more than available (" + toString(aF)) + ")")), if ((aU >= aZ))
324+ else h((("cannot withdraw more than available (" + toString(aH)) + ")")), if ((aW >= bb))
321325 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((("withdraw amount is too small. Min: (" + toString(bb)) + ")"))]
327+ if ((aV == aV))
328+ then aT(aJ, ba)
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(aJ)
335+func getUserAssetsREADONLY (q) = {
336+ let aG = aE(q)
337+ 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))
337341 }
338342
339343
340344
341-@Callable(aH)
342-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(r, aw(), aB()))
345+@Callable(aJ)
346+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(t, ay(), aD()))
343347
344348
345349
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))
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))
353357 then true
354- else f((C + " is not valid txId")), if (if ((ba == unit))
358+ else h((E + " is not valid txId")), if (if ((bc == unit))
355359 then true
356- else (value(ba) != C))
360+ else (value(bc) != E))
357361 then true
358- else f((C + " is already allowed"))]
359- if ((aq == aq))
360- then al(am, V, z, T)
362+ else h((E + " is already allowed"))]
363+ if ((as == as))
364+ then an(ao, X, B, V)
361365 else throw("Strict value is not equal to itself.")
362366 }
363367
364368
365-@Verifier(bb)
366-func bc () = {
367- let bd = (bb.id == fromBase58String(valueOrElse(getString(this, H()), "")))
368- let be = if ((size(L()) >= z))
369+@Verifier(bd)
370+func be () = {
371+ let bf = (bd.id == fromBase58String(valueOrElse(getString(this, J()), "")))
372+ let bg = if ((size(N()) >= B))
369373 then false
370- else sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
371- if (bd)
374+ else sigVerify(bd.bodyBytes, bd.proofs[0], bd.senderPublicKey)
375+ if (bf)
372376 then true
373- else be
377+ else bg
374378 }
375379
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
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)
42+let t = valueOrElse(getInteger(this, n), 0)
3943
40-let s = valueOrElse(getInteger(this, m), 0)
44+let u = valueOrElse(getInteger(this, o), 0)
4145
42-let t = valueOrElse(getString(this, h), "WAVES")
46+let v = valueOrElse(getString(this, j), "WAVES")
4347
44-let u = if ((t == "WAVES"))
48+let w = if ((v == "WAVES"))
4549 then unit
46- else fromBase58String(t)
50+ else fromBase58String(v)
4751
48-let v = valueOrElse(getInteger(this, j), e)
52+let x = valueOrElse(getInteger(this, l), g)
4953
50-let w = (valueOrElse(getInteger(this, i), 0) * v)
54+let y = (valueOrElse(getInteger(this, k), 0) * x)
5155
52-let x = fraction(height, 1, v)
56+let z = fraction(height, 1, x)
5357
54-let y = 5
58+let A = 5
5559
56-let z = 3
60+let B = 3
5761
58-let A = 32
62+let C = 32
5963
60-func B (C) = makeString(["%s%s%s", "allowTxId", C], b)
64+func D (E) = makeString(["%s%s%s", "allowTxId", E], b)
6165
6266
63-func D (E,F) = makeString([E, F], b)
67+func F (G,H) = makeString([G, H], b)
6468
6569
66-func G () = makeString(["%s", "adminAddressList"], b)
70+func I () = makeString(["%s", "adminAddressList"], b)
6771
6872
69-func H () = makeString(["%s", "txId"], b)
73+func J () = makeString(["%s", "txId"], b)
7074
7175
72-func I (E,J) = {
73- let K = D(E, J)
74- valueOrElse(getInteger(K), 0)
76+func K (G,L) = {
77+ let M = F(G, L)
78+ valueOrElse(getInteger(M), 0)
7579 }
7680
7781
78-func L () = {
79- let M = getString(this, G())
80- if ($isInstanceOf(M, "String"))
82+func N () = {
83+ let O = getString(this, I())
84+ if ($isInstanceOf(O, "String"))
8185 then {
82- let N = M
83- split(N, b)
86+ let P = O
87+ split(P, b)
8488 }
8589 else nil
8690 }
8791
8892
89-func O (P) = containsElement(L(), P)
93+func Q (R) = containsElement(N(), R)
9094
9195
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)
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)
97101 }
98102
99103
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])
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])
109113
110- func ae (ac,ad) = if ((ad >= Z))
111- then ac
114+ func ag (ae,af) = if ((af >= ab))
115+ then ae
112116 else throw("List size exceeds 5")
113117
114- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
118+ ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
115119 }
116- let T = X._1
117- let E = X._2
118- T
120+ let V = Z._1
121+ let G = Z._2
122+ V
119123 }
120124
121125
122-func af (T,K) = (T + valueOrElse(getInteger(K), 0))
126+func ah (V,M) = (V + valueOrElse(getInteger(M), 0))
123127
124128
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])
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])
133137
134- func ae (ac,ad) = if ((ad >= Z))
135- then ac
138+ func ag (ae,af) = if ((af >= ab))
139+ then ae
136140 else throw("List size exceeds 5")
137141
138- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
142+ ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
139143 }
140144
141145
142-func ai (T,aj) = (T :+ DeleteEntry(aj))
146+func ak (V,al) = (V :+ DeleteEntry(al))
143147
144148
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])
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])
153157
154- func ae (ac,ad) = if ((ad >= Z))
155- then ac
158+ func ag (ae,af) = if ((af >= ab))
159+ then ae
156160 else throw("List size exceeds 5")
157161
158- ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
162+ ag(ad(ad(ad(ad(ad(ac, 0), 1), 2), 3), 4), 5)
159163 }
160164
161165
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"))
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"))
169173 else unit
170- if ((aq == aq))
174+ if ((as == as))
171175 then {
172- let ah = ag(V)
173- if (((ah + 1) >= an))
176+ let aj = ai(X)
177+ if (((aj + 1) >= ap))
174178 then {
175- let ar = ak(V)
176- (ar ++ ao)
179+ let at = am(X)
180+ (at ++ aq)
177181 }
178- else [IntegerEntry(K, 1)]
182+ else [IntegerEntry(M, 1)]
179183 }
180184 else throw("Strict value is not equal to itself.")
181185 }
182186
183187
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)])
188+func au () = {
189+ let av = valueOrElse(getInteger(this, m), 0)
190+ let aw = fraction(av, 1, x)
191+ let ax = (z - aw)
192+ max([0, (y * ax)])
189193 }
190194
191195
192-func aw () = {
193- let ax = (s + as())
194- let ay = {
195- let M = u
196- if ($isInstanceOf(M, "Unit"))
196+func ay () = {
197+ let az = (u + au())
198+ let aA = {
199+ let O = w
200+ if ($isInstanceOf(O, "Unit"))
197201 then {
198- let az = M
199- min([ax, wavesBalance(this).available])
202+ let aB = O
203+ min([az, wavesBalance(this).available])
200204 }
201- else if ($isInstanceOf(M, "ByteVector"))
205+ else if ($isInstanceOf(O, "ByteVector"))
202206 then {
203- let aA = M
204- min([ax, assetBalance(this, aA)])
207+ let aC = O
208+ min([az, assetBalance(this, aC)])
205209 }
206210 else throw("Match error")
207211 }
208- if ((r == 0))
212+ if ((t == 0))
209213 then 0
210- else ay
214+ else aA
211215 }
212216
213217
214-func aB () = if ((r != 0))
215- then fraction(aw(), c, r)
216- else (1 * c)
218+func aD () = if ((t != 0))
219+ then fraction(toBigInt(ay()), e, toBigInt(t))
220+ else e
217221
218222
219-func aC (o) = valueOrElse(getInteger(this, n(o)), 0)
223+func aE (q) = valueOrElse(getInteger(this, p(q)), 0)
220224
221225
222-func aD (o) = {
223- let aE = aC(o)
224- let aF = fraction(aE, aB(), c)
225- if ((0 > aF))
226+func aF (q) = {
227+ let aG = aE(q)
228+ let aH = toInt(fraction(toBigInt(aG), aD(), e))
229+ if ((0 > aH))
226230 then 0
227- else aF
231+ else aH
228232 }
229233
230234
231-func aG (aH,o) = {
232- let aI = [if ((size(aH.payments) == 1))
235+func aI (aJ,q) = {
236+ let aK = [if ((size(aJ.payments) == 1))
233237 then true
234- else f("should include 1 payment"), if ((aH.payments[0].assetId == u))
238+ else h("should include 1 payment"), if ((aJ.payments[0].assetId == w))
235239 then true
236- else f(("payment should be in " + t)), if ((aH.payments[0].amount > 0))
240+ else h(("payment should be in " + v)), if ((aJ.payments[0].amount > 0))
237241 then true
238242 else "payment amount should be greater than 0"]
239- if ((aI == aI))
243+ if ((aK == aK))
240244 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)]
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))
254+ then [IntegerEntry(m, height)]
251255 else nil
252- ([IntegerEntry(l, aM), IntegerEntry(m, aN), IntegerEntry(n(o), aO), IntegerEntry(q(o), aP)] ++ aQ)
256+ ([IntegerEntry(n, aO), IntegerEntry(o, aP), IntegerEntry(p(q), aQ), IntegerEntry(s(q), aR)] ++ aS)
253257 }
254258 else throw("Strict value is not equal to itself.")
255259 }
256260
257261
258-func aR (aH,aS) = {
259- let o = toString(aH.caller)
260- let aE = aC(o)
261- let aT = [if ((aS > 0))
262+func aT (aJ,aU) = {
263+ let q = toString(aJ.caller)
264+ let aG = aE(q)
265+ let aV = [if ((aU > 0))
262266 then true
263- else f("LP amount should be more than 0"), if ((aE >= aS))
267+ else h("LP amount should be more than 0"), if ((aG >= aU))
264268 then true
265- else f((("cannot withdraw more than available LP (" + toString(aE)) + ")"))]
266- if ((aT == aT))
269+ else h((("cannot withdraw more than available LP (" + toString(aG)) + ")"))]
270+ if ((aV == aV))
267271 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)]
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)]
275279 }
276280 else throw("Strict value is not equal to itself.")
277281 }
278282
279283
280-@Callable(aH)
281-func setEmissionPerBlock (aX) = {
282- let aT = [if ((aH.caller == this))
284+@Callable(aJ)
285+func setEmissionPerBlock (aZ) = {
286+ let aV = [if ((aJ.caller == this))
283287 then true
284- else f("permission denied")]
285- if ((aT == aT))
286- then [IntegerEntry(m, aw()), IntegerEntry(k, height), IntegerEntry(i, max([0, aX]))]
288+ else h("permission denied")]
289+ if ((aV == aV))
290+ then [IntegerEntry(o, ay()), IntegerEntry(m, height), IntegerEntry(k, max([0, aZ]))]
287291 else throw("Strict value is not equal to itself.")
288292 }
289293
290294
291295
292-@Callable(aH)
293-func stake () = aG(aH, toString(aH.caller))
296+@Callable(aJ)
297+func stake () = aI(aJ, toString(aJ.caller))
294298
295299
296300
297-@Callable(aH)
298-func stakeFor (o) = {
299- let aT = [if ((size(fromBase58String(o)) == d))
301+@Callable(aJ)
302+func stakeFor (q) = {
303+ let aV = [if ((size(fromBase58String(q)) == f))
300304 then true
301- else f("address is not valid")]
302- if ((aT == aT))
303- then aG(aH, o)
305+ else h("address is not valid")]
306+ if ((aV == aV))
307+ then aI(aJ, q)
304308 else throw("Strict value is not equal to itself.")
305309 }
306310
307311
308312
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))
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()))
318+ let aH = aF(q)
319+ let bb = toInt(fraction(aD(), toBigInt(1), e, CEILING))
320+ let aV = [if ((aW > 0))
317321 then true
318- else f("withdraw amount should be more than 0"), if ((aF >= aU))
322+ else h("withdraw amount should be more than 0"), if ((aH >= aW))
319323 then true
320- else f((("cannot withdraw more than available (" + toString(aF)) + ")")), if ((aU >= aZ))
324+ else h((("cannot withdraw more than available (" + toString(aH)) + ")")), if ((aW >= bb))
321325 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((("withdraw amount is too small. Min: (" + toString(bb)) + ")"))]
327+ if ((aV == aV))
328+ then aT(aJ, ba)
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(aJ)
335+func getUserAssetsREADONLY (q) = {
336+ let aG = aE(q)
337+ 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))
337341 }
338342
339343
340344
341-@Callable(aH)
342-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(r, aw(), aB()))
345+@Callable(aJ)
346+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(t, ay(), aD()))
343347
344348
345349
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))
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))
353357 then true
354- else f((C + " is not valid txId")), if (if ((ba == unit))
358+ else h((E + " is not valid txId")), if (if ((bc == unit))
355359 then true
356- else (value(ba) != C))
360+ else (value(bc) != E))
357361 then true
358- else f((C + " is already allowed"))]
359- if ((aq == aq))
360- then al(am, V, z, T)
362+ else h((E + " is already allowed"))]
363+ if ((as == as))
364+ then an(ao, X, B, V)
361365 else throw("Strict value is not equal to itself.")
362366 }
363367
364368
365-@Verifier(bb)
366-func bc () = {
367- let bd = (bb.id == fromBase58String(valueOrElse(getString(this, H()), "")))
368- let be = if ((size(L()) >= z))
369+@Verifier(bd)
370+func be () = {
371+ let bf = (bd.id == fromBase58String(valueOrElse(getString(this, J()), "")))
372+ let bg = if ((size(N()) >= B))
369373 then false
370- else sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
371- if (bd)
374+ else sigVerify(bd.bodyBytes, bd.proofs[0], bd.senderPublicKey)
375+ if (bf)
372376 then true
373- else be
377+ else bg
374378 }
375379

github/deemru/w8io/169f3d6 
149.21 ms