tx · Ey95ev4ZQjzjxifq5tnLJ3VFZQkinZJpDAYq35oyXxuo

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.05000000 Waves

2023.07.28 14:27 [2685653] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "Ey95ev4ZQjzjxifq5tnLJ3VFZQkinZJpDAYq35oyXxuo", "fee": 5000000, "feeAssetId": null, "timestamp": 1690543652550, "version": 2, "chainId": 84, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "3T8Hv2aaZDYrV94qkDe1oLjHDD2cg2XEqNQdDkFcEcZoaMkikhGM2iPTcTHxDSjHt76eoqyz9Ajq2DkzZhH3Boyx" ], "script": "base64:BgIfCAISAwoBARIAEgMKAQgSAwoBARIDCgEIEgASAwoBCC4ADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVABD2tleVVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICDHVzZXJMcEFtb3VudAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAADXRvdGFsTHBBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQa2V5VG90YWxMcEFtb3VudAAAABB0b3RhbEFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVRvdGFsQXNzZXRBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPaGVpZ2h0SW5QZXJpb2RzCQBrAwUGaGVpZ2h0AAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MAD0FETUlOX0xJU1RfU0laRQAFAAZRVU9SVU0AAwARVFhJRF9CWVRFU19MRU5HVEgAIAEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCWFsbG93VHhJZAkAzAgCBQR0eElkBQNuaWwFA1NFUAEQa2V5RnVsbEFkbWluVm90ZQIGcHJlZml4DGFkbWluQWRkcmVzcwkAuQkCCQDMCAIFBnByZWZpeAkAzAgCBQxhZG1pbkFkZHJlc3MFA25pbAUDU0VQARNrZXlBZG1pbkFkZHJlc3NMaXN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAQ5rZXlBbGxvd2VkVHhJZAAJALkJAgkAzAgCAgIlcwkAzAgCAgR0eElkBQNuaWwFA1NFUAEMZ2V0QWRtaW5Wb3RlAgZwcmVmaXgFYWRtaW4EB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABDWdldEFkbWluc0xpc3QABAckbWF0Y2gwCQCdCAIFBHRoaXMJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUDU0VQBQNuaWwBDWlzSW5BZG1pbkxpc3QBB2FkZHJlc3MJAQ9jb250YWluc0VsZW1lbnQCCQENZ2V0QWRtaW5zTGlzdAAFB2FkZHJlc3MBEmdlblZvdGVzS2V5c0hlbHBlcgIBYQxhZG1pbkFkZHJlc3MECyR0MDI2MzkyNjYzBQFhBAZyZXN1bHQIBQskdDAyNjM5MjY2MwJfMQQGcHJlZml4CAULJHQwMjYzOTI2NjMCXzIJAJQKAgkAzQgCBQZyZXN1bHQJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQxhZG1pbkFkZHJlc3MFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBE2tleUFkbWluQWRkcmVzc0xpc3QABAskdDAyODEwMjg5NAoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAZyZXN1bHQIBQskdDAyODEwMjg5NAJfMQQGcHJlZml4CAULJHQwMjgxMDI4OTQCXzIFBnJlc3VsdAEQY291bnRWb3Rlc0hlbHBlcgIGcmVzdWx0B3ZvdGVLZXkJAGQCBQZyZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQpjb3VudFZvdGVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjb3VudFZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEQY2xlYXJWb3Rlc0hlbHBlcgIGcmVzdWx0A2tleQkAzQgCBQZyZXN1bHQJAQtEZWxldGVFbnRyeQEFA2tleQETZ2V0Q2xlYXJWb3RlRW50cmllcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBDHZvdGVJTlRFUk5BTAQTY2FsbGVyQWRkcmVzc1N0cmluZwlrZXlQcmVmaXgIbWluVm90ZXMKdm90ZVJlc3VsdAQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEEGFkbWluQ3VycmVudFZvdGUJAQxnZXRBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEA2VycgMJAQEhAQkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QDCQAAAgUQYWRtaW5DdXJyZW50Vm90ZQABCQEIdGhyb3dFcnIBCQCsAgIFB3ZvdGVLZXkCEiB5b3UgYWxyZWFkeSB2b3RlZAUEdW5pdAMJAAACBQNlcnIFA2VycgQFdm90ZXMJAQpjb3VudFZvdGVzAQUJa2V5UHJlZml4AwkAZwIJAGQCBQV2b3RlcwABBQhtaW5Wb3RlcwQQY2xlYXJWb3RlRW50cmllcwkBE2dldENsZWFyVm90ZUVudHJpZXMBBQlrZXlQcmVmaXgJAM4IAgUQY2xlYXJWb3RlRW50cmllcwUKdm90ZVJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdm90ZUtleQABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BD2NhbGNUb3RhbFByb2ZpdAAECnN0YXJ0QmxvY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5U3RhcnRCbG9jawAABAtzdGFydFBlcmlvZAkAawMFCnN0YXJ0QmxvY2sAAQUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwQOZWxhcHNlZFBlcmlvZHMJAGUCBQ9oZWlnaHRJblBlcmlvZHMFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQBrAwkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQZzY2FsZTgFDXRvdGFsTHBBbW91bnQJAGgCAAEFBnNjYWxlOAEPZ2V0VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MAAAEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBC3VzZXJBZGRyZXNzBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkAawMFDHVzZXJMcEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFBnNjYWxlOAMJAGYCAAAFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcAAAUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwEPZ2V0U3Rha2VBY3Rpb25zAgFpC3VzZXJBZGRyZXNzBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhhzaG91bGQgaW5jbHVkZSAxIHBheW1lbnQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDGFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJAKwCAgIVcGF5bWVudCBzaG91bGQgYmUgaW4gBQ1hc3NldElkU3RyaW5nCQDMCAIDCQBmAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAAYCJ3BheW1lbnQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA1wYXltZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQPcGF5bWVudExwQW1vdW50CQBrAwUNcGF5bWVudEFtb3VudAUGc2NhbGU4CQEPZ2V0Q3VycmVudFByaWNlAAQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBBuZXdUb3RhbExwQW1vdW50CQBkAgUNdG90YWxMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQBkAgUQdG90YWxBc3NldEFtb3VudAUNcGF5bWVudEFtb3VudAQPbmV3VXNlckxwQW1vdW50CQBkAgUMdXNlckxwQW1vdW50BQ9wYXltZW50THBBbW91bnQEGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAkAZAIFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUNcGF5bWVudEFtb3VudAQXdXBkYXRlU3RhcnRIZWlnaHRBY3Rpb24DCQAAAgUNdG90YWxMcEFtb3VudAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwUYbmV3VXNlclRvdGFsU3Rha2VkQW1vdW50BQNuaWwFF3VwZGF0ZVN0YXJ0SGVpZ2h0QWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARJnZXRXaXRoZHJhd0FjdGlvbnMCAWkVbHBBc3NldFdpdGhkcmF3QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBAVjaGVjawkAzAgCAwkAZgIFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAAABgkBCHRocm93RXJyAQIfTFAgYW1vdW50IHNob3VsZCBiZSBtb3JlIHRoYW4gMAkAzAgCAwkAZwIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICKGNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gYXZhaWxhYmxlIExQICgJAKQDAQUMdXNlckxwQW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrBA9uZXdVc2VyTHBBbW91bnQJAGUCBQx1c2VyTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQTd2l0aGRyYXdBc3NldEFtb3VudAkAawMFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAkBD2dldEN1cnJlbnRQcmljZQAFBnNjYWxlOAQQbmV3VG90YWxMcEFtb3VudAkAZQIFDXRvdGFsTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAawMFEG5ld1RvdGFsTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQZzY2FsZTgEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAEGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQBkAgUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24FE3dpdGhkcmF3QXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwUabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE3dpdGhkcmF3QXNzZXRBbW91bnQFDGFzc2V0SWRCeXRlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBwFpARNzZXRFbWlzc2lvblBlckJsb2NrARBlbWlzc2lvblBlckJsb2NrBAVjaGVjawkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5RW1pc3Npb25QZXJCbG9jawkAlgMBCQDMCAIAAAkAzAgCBRBlbWlzc2lvblBlckJsb2NrBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpCQClCAEIBQFpBmNhbGxlcgFpAQhzdGFrZUZvcgELdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQAAAgkAyAEBCQDZBAEFC3VzZXJBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhRhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARN3aXRoZHJhd0Fzc2V0QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJscEFtb3VudFRvV2l0aGRyYXcJAGsDBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQZzY2FsZTgJAQ9nZXRDdXJyZW50UHJpY2UABBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQWbWluV2l0aGRyYXdBc3NldEFtb3VudAkAbgQJAQ9nZXRDdXJyZW50UHJpY2UAAAEFBnNjYWxlOAUHQ0VJTElORwQFY2hlY2sJAMwIAgMJAGYCBRN3aXRoZHJhd0Fzc2V0QW1vdW50AAAGCQEIdGhyb3dFcnIBAiV3aXRoZHJhdyBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwUTd2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiVjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSAoCQCkAwEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcCASkJAMwIAgMJAGcCBRN3aXRoZHJhd0Fzc2V0QW1vdW50BRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJHdpdGhkcmF3IGFtb3VudCBpcyB0b28gc21hbGwuIE1pbjogKAkApAMBBRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQESZ2V0V2l0aGRyYXdBY3Rpb25zAgUBaQUSbHBBbW91bnRUb1dpdGhkcmF3CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWdldFVzZXJBc3NldHNSRUFET05MWQELdXNlckFkZHJlc3MEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQVdXNlclRvdGFsU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARdrZXlVc2VyVG90YWxBc3NldFN0YWtlZAEFC3VzZXJBZGRyZXNzAAAEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAJAJQKAgUDbmlsCQCXCgUFDHVzZXJMcEFtb3VudAUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBD2dldEN1cnJlbnRQcmljZQAFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24BaQEWZ2V0VG90YWxBc3NldHNSRUFET05MWQAJAJQKAgUDbmlsCQCVCgMFDXRvdGFsTHBBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkBD2dldEN1cnJlbnRQcmljZQABaQELdm90ZUZvclR4SWQBBHR4SWQEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJa2V5UHJlZml4CQEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQUEdHhJZAQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBbGxvd2VkVHhJZAAFBHR4SWQFA25pbAQRYWxsb3dlZFR4SWRPcHRpb24JAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAQDZXJyCQDMCAIDCQAAAgkAyAEBCQDZBAEFBHR4SWQFEVRYSURfQllURVNfTEVOR1RIBgkBCHRocm93RXJyAQkArAICBQR0eElkAhIgaXMgbm90IHZhbGlkIHR4SWQJAMwIAgMDCQAAAgURYWxsb3dlZFR4SWRPcHRpb24FBHVuaXQGCQECIT0CCQEFdmFsdWUBBRFhbGxvd2VkVHhJZE9wdGlvbgUEdHhJZAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAITIGlzIGFscmVhZHkgYWxsb3dlZAUDbmlsAwkAAAIFA2VycgUDZXJyCQEMdm90ZUlOVEVSTkFMBAUTY2FsbGVyQWRkcmVzc1N0cmluZwUJa2V5UHJlZml4BQZRVU9SVU0FBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAECGJ5QWRtaW5zCQAAAggFAnR4AmlkCQDZBAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleUFsbG93ZWRUeElkAAIABAdieU93bmVyAwkAZwIJAJADAQkBDWdldEFkbWluc0xpc3QABQZRVU9SVU0HCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5AwUIYnlBZG1pbnMGBQdieU93bmVyDjHUaQ==", "height": 2685653, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: vHYMbbJP8uE7VcxZnHFz9nBMBeSLdy1SCisTgNfkDs3 Next: DcnuuFfkHwSRmQJz4b88tRFeeyGNbMcGQ8Tetory6KJB Diff:
OldNewDifferences
77
88 let c = 100000000
99
10-let d = 1000000000000000000
10+let d = 26
1111
12-let e = toBigInt(d)
12+let e = 1440
1313
14-let f = 26
15-
16-let g = 1440
17-
18-func h (i) = throw(((a + ": ") + i))
14+func f (g) = throw(((a + ": ") + g))
1915
2016
21-let j = makeString(["%s", "assetId"], b)
17+let h = makeString(["%s", "assetId"], b)
2218
23-let k = makeString(["%s", "emissionPerBlock"], b)
19+let i = makeString(["%s", "emissionPerBlock"], b)
2420
25-let l = makeString(["%s", "emissionPeriodInBlocks"], b)
21+let j = makeString(["%s", "emissionPeriodInBlocks"], b)
2622
27-let m = makeString(["%s", "startBlock"], b)
23+let k = makeString(["%s", "startBlock"], b)
2824
29-let n = makeString(["%s", "totalLpAmount"], b)
25+let l = makeString(["%s", "totalLpAmount"], b)
3026
31-let o = makeString(["%s", "totalAssetAmount"], b)
27+let m = makeString(["%s", "totalAssetAmount"], b)
3228
33-func p (q) = makeString(["%s%s", "userLpAmount", q], b)
29+func n (o) = makeString(["%s%s", "userLpAmount", o], b)
3430
3531
36-func r (q) = makeString(["%s%s", "totalAssetWithdrawn", q], b)
32+func p (o) = makeString(["%s%s", "totalAssetWithdrawn", o], b)
3733
3834
39-func s (q) = makeString(["%s%s", "totalAssetStaked", q], b)
35+func q (o) = makeString(["%s%s", "totalAssetStaked", o], b)
4036
4137
42-func t (u,q,v) = makeString(["%s%s%s", u, q, toBase58String(v)], b)
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)
4361
4462
45-func w (x,y,z,A) = makeString(["%d%d", toString(x), toString(y), toString(z), toString(A)], b)
63+func D (E,F) = makeString([E, F], b)
4664
4765
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)
66+func G () = makeString(["%s", "adminAddressList"], b)
6967
7068
71-func J (K,L) = makeString([K, L], b)
69+func H () = makeString(["%s", "txId"], b)
7270
7371
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)
72+func I (E,J) = {
73+ let K = D(E, J)
74+ valueOrElse(getInteger(K), 0)
8375 }
8476
8577
86-func R () = {
87- let S = getString(this, M())
88- if ($isInstanceOf(S, "String"))
78+func L () = {
79+ let M = getString(this, G())
80+ if ($isInstanceOf(M, "String"))
8981 then {
90- let T = S
91- split(T, b)
82+ let N = M
83+ split(N, b)
9284 }
9385 else nil
9486 }
9587
9688
97-func U (V) = containsElement(R(), V)
89+func O (P) = containsElement(L(), P)
9890
9991
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)
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)
10597 }
10698
10799
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])
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])
117109
118- func ak (ai,aj) = if ((aj >= af))
119- then ai
110+ func ae (ac,ad) = if ((ad >= Z))
111+ then ac
120112 else throw("List size exceeds 5")
121113
122- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
114+ ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
123115 }
124- let Z = ad._1
125- let K = ad._2
126- Z
116+ let T = X._1
117+ let E = X._2
118+ T
127119 }
128120
129121
130-func al (Z,Q) = (Z + valueOrElse(getInteger(Q), 0))
122+func af (T,K) = (T + valueOrElse(getInteger(K), 0))
131123
132124
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])
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])
141133
142- func ak (ai,aj) = if ((aj >= af))
143- then ai
134+ func ae (ac,ad) = if ((ad >= Z))
135+ then ac
144136 else throw("List size exceeds 5")
145137
146- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
138+ ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
147139 }
148140
149141
150-func ao (Z,ap) = (Z :+ DeleteEntry(ap))
142+func ai (T,aj) = (T :+ DeleteEntry(aj))
151143
152144
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])
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])
161153
162- func ak (ai,aj) = if ((aj >= af))
163- then ai
154+ func ae (ac,ad) = if ((ad >= Z))
155+ then ac
164156 else throw("List size exceeds 5")
165157
166- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
158+ ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
167159 }
168160
169161
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"))
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"))
177169 else unit
178- if ((aw == aw))
170+ if ((aq == aq))
179171 then {
180- let an = am(ab)
181- if (((an + 1) >= at))
172+ let ah = ag(V)
173+ if (((ah + 1) >= an))
182174 then {
183- let ax = aq(ab)
184- (ax ++ au)
175+ let ar = ak(V)
176+ (ar ++ ao)
185177 }
186- else [IntegerEntry(Q, 1)]
178+ else [IntegerEntry(K, 1)]
187179 }
188180 else throw("Strict value is not equal to itself.")
189181 }
190182
191183
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)])
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)])
197189 }
198190
199191
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"))
192+func aw () = {
193+ let ax = (s + as())
194+ let ay = {
195+ let M = u
196+ if ($isInstanceOf(M, "Unit"))
208197 then {
209- let aH = S
210- min([aF, wavesBalance(this).available])
198+ let az = M
199+ min([ax, wavesBalance(this).available])
211200 }
212- else if ($isInstanceOf(S, "ByteVector"))
201+ else if ($isInstanceOf(M, "ByteVector"))
213202 then {
214- let aI = S
215- min([aF, assetBalance(this, aI)])
203+ let aA = M
204+ min([ax, assetBalance(this, aA)])
216205 }
217206 else throw("Match error")
218207 }
219- if ((A == 0))
208+ if ((r == 0))
220209 then 0
221- else aG
210+ else ay
222211 }
223212
224213
225-func aJ () = if ((A != 0))
226- then fraction(toBigInt(aE()), e, toBigInt(A))
227- else e
214+func aB () = if ((r != 0))
215+ then fraction(aw(), c, r)
216+ else (1 * c)
228217
229218
230-func aK (q) = valueOrElse(getInteger(this, p(q)), 0)
219+func aC (o) = valueOrElse(getInteger(this, n(o)), 0)
231220
232221
233-func aL (q) = {
234- let aM = aK(q)
235- let aN = toInt(fraction(toBigInt(aM), aJ(), e))
236- if ((0 > aN))
222+func aD (o) = {
223+ let aE = aC(o)
224+ let aF = fraction(aE, aB(), c)
225+ if ((0 > aF))
237226 then 0
238- else aN
227+ else aF
239228 }
240229
241230
242-func aO (aP,q) = {
243- let aQ = [if ((size(aP.payments) == 1))
231+func aG (aH,o) = {
232+ let aI = [if ((size(aH.payments) == 1))
244233 then true
245- else h("should include 1 payment"), if ((aP.payments[0].assetId == C))
234+ else f("should include 1 payment"), if ((aH.payments[0].assetId == u))
246235 then true
247- else h(("payment should be in " + B)), if ((aP.payments[0].amount > 0))
236+ else f(("payment should be in " + t)), if ((aH.payments[0].amount > 0))
248237 then true
249238 else "payment amount should be greater than 0"]
250- if ((aQ == aQ))
239+ if ((aI == aI))
251240 then {
252- let aR = aP.payments[0].amount
253- let aS = toInt(fraction(toBigInt(aR), e, aJ()))
254- let aM = aK(q)
255- let aT = valueOrElse(getInteger(this, s(q)), 0)
256- let aU = (A + aS)
257- let aV = (z + aR)
258- let aW = (aM + aS)
259- let aX = (aT + aR)
260- let aY = if ((A == 0))
261- then [IntegerEntry(m, height)]
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)]
262251 else nil
263- ([StringEntry(t("stake", q, aP.transactionId), w(aD(), aJ(), A, z)), IntegerEntry(n, aU), IntegerEntry(o, aV), IntegerEntry(p(q), aW), IntegerEntry(s(q), aX)] ++ aY)
252+ ([IntegerEntry(l, aM), IntegerEntry(m, aN), IntegerEntry(n(o), aO), IntegerEntry(q(o), aP)] ++ aQ)
264253 }
265254 else throw("Strict value is not equal to itself.")
266255 }
267256
268257
269-func aZ (aP,ba) = {
270- let q = toString(aP.caller)
271- let aM = aK(q)
272- let bb = [if ((ba > 0))
258+func aR (aH,aS) = {
259+ let o = toString(aH.caller)
260+ let aE = aC(o)
261+ let aT = [if ((aS > 0))
273262 then true
274- else h("LP amount should be more than 0"), if ((aM >= ba))
263+ else f("LP amount should be more than 0"), if ((aE >= aS))
275264 then true
276- else h((("cannot withdraw more than available LP (" + toString(aM)) + ")"))]
277- if ((bb == bb))
265+ else f((("cannot withdraw more than available LP (" + toString(aE)) + ")"))]
266+ if ((aT == aT))
278267 then {
279- let aW = (aM - ba)
280- let bc = toInt(fraction(toBigInt(ba), aJ(), e))
281- let aU = (A - ba)
282- let aV = toInt(fraction(toBigInt(aU), aJ(), e))
283- let bd = valueOrElse(getInteger(this, r(q)), 0)
284- let be = (bd + bc)
285-[StringEntry(t("withdraw", q, aP.transactionId), w(aD(), aJ(), z, A)), IntegerEntry(n, aU), IntegerEntry(o, aV), IntegerEntry(p(q), aW), IntegerEntry(r(q), be), IntegerEntry(m, height), ScriptTransfer(aP.caller, bc, C)]
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)]
286275 }
287276 else throw("Strict value is not equal to itself.")
288277 }
289278
290279
291-@Callable(aP)
292-func setEmissionPerBlock (bf) = {
293- let bb = [if ((aP.caller == this))
280+@Callable(aH)
281+func setEmissionPerBlock (aX) = {
282+ let aT = [if ((aH.caller == this))
294283 then true
295- else h("permission denied")]
296- if ((bb == bb))
297- then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(k, max([0, bf]))]
284+ else f("permission denied")]
285+ if ((aT == aT))
286+ then [IntegerEntry(m, aw()), IntegerEntry(k, height), IntegerEntry(i, max([0, aX]))]
298287 else throw("Strict value is not equal to itself.")
299288 }
300289
301290
302291
303-@Callable(aP)
304-func stake () = aO(aP, toString(aP.caller))
292+@Callable(aH)
293+func stake () = aG(aH, toString(aH.caller))
305294
306295
307296
308-@Callable(aP)
309-func stakeFor (q) = {
310- let bb = [if ((size(fromBase58String(q)) == f))
297+@Callable(aH)
298+func stakeFor (o) = {
299+ let aT = [if ((size(fromBase58String(o)) == d))
311300 then true
312- else h("address is not valid")]
313- if ((bb == bb))
314- then aO(aP, q)
301+ else f("address is not valid")]
302+ if ((aT == aT))
303+ then aG(aH, o)
315304 else throw("Strict value is not equal to itself.")
316305 }
317306
318307
319308
320-@Callable(aP)
321-func withdraw (bc) = {
322- let q = toString(aP.caller)
323- let aM = aK(q)
324- let bg = toInt(fraction(toBigInt(bc), e, aJ()))
325- let aN = aL(q)
326- let bh = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
327- let bb = [if ((bc > 0))
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))
328317 then true
329- else h("withdraw amount should be more than 0"), if ((aN >= bc))
318+ else f("withdraw amount should be more than 0"), if ((aF >= aU))
330319 then true
331- else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((bc >= bh))
320+ else f((("cannot withdraw more than available (" + toString(aF)) + ")")), if ((aU >= aZ))
332321 then true
333- else h((("withdraw amount is too small. Min: (" + toString(bh)) + ")"))]
334- if ((bb == bb))
335- then aZ(aP, bg)
322+ else f((("withdraw amount is too small. Min: (" + toString(aZ)) + ")"))]
323+ if ((aT == aT))
324+ then aR(aH, aY)
336325 else throw("Strict value is not equal to itself.")
337326 }
338327
339328
340329
341-@Callable(aP)
342-func getUserAssetsREADONLY (q) = {
343- let aM = aK(q)
344- let aN = aL(q)
345- let aT = valueOrElse(getInteger(this, s(q)), 0)
346- let bd = valueOrElse(getInteger(this, r(q)), 0)
347- $Tuple2(nil, $Tuple5(aM, aN, aJ(), aT, bd))
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))
348337 }
349338
350339
351340
352-@Callable(aP)
353-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(A, aE(), aJ()))
341+@Callable(aH)
342+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(r, aw(), aB()))
354343
355344
356345
357-@Callable(aP)
358-func voteForTxId (v) = {
359- let as = toBase58String(aP.caller.bytes)
360- let ab = I(v)
361- let Z = [StringEntry(N(), v)]
362- let bi = getString(this, N())
363- let aw = [if ((size(fromBase58String(v)) == H))
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))
364353 then true
365- else h((v + " is not valid txId")), if (if ((bi == unit))
354+ else f((C + " is not valid txId")), if (if ((ba == unit))
366355 then true
367- else (value(bi) != v))
356+ else (value(ba) != C))
368357 then true
369- else h((v + " is already allowed"))]
370- if ((aw == aw))
371- then ar(as, ab, G, Z)
358+ else f((C + " is already allowed"))]
359+ if ((aq == aq))
360+ then al(am, V, z, T)
372361 else throw("Strict value is not equal to itself.")
373362 }
374363
375364
376-@Verifier(bj)
377-func bk () = {
378- let bl = (bj.id == fromBase58String(valueOrElse(getString(this, N()), "")))
379- let bm = if ((size(R()) >= G))
365+@Verifier(bb)
366+func bc () = {
367+ let bd = (bb.id == fromBase58String(valueOrElse(getString(this, H()), "")))
368+ let be = if ((size(L()) >= z))
380369 then false
381- else sigVerify(bj.bodyBytes, bj.proofs[0], bj.senderPublicKey)
382- if (bl)
370+ else sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
371+ if (bd)
383372 then true
384- else bm
373+ else be
385374 }
386375
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 = 1000000000000000000
10+let d = 26
1111
12-let e = toBigInt(d)
12+let e = 1440
1313
14-let f = 26
15-
16-let g = 1440
17-
18-func h (i) = throw(((a + ": ") + i))
14+func f (g) = throw(((a + ": ") + g))
1915
2016
21-let j = makeString(["%s", "assetId"], b)
17+let h = makeString(["%s", "assetId"], b)
2218
23-let k = makeString(["%s", "emissionPerBlock"], b)
19+let i = makeString(["%s", "emissionPerBlock"], b)
2420
25-let l = makeString(["%s", "emissionPeriodInBlocks"], b)
21+let j = makeString(["%s", "emissionPeriodInBlocks"], b)
2622
27-let m = makeString(["%s", "startBlock"], b)
23+let k = makeString(["%s", "startBlock"], b)
2824
29-let n = makeString(["%s", "totalLpAmount"], b)
25+let l = makeString(["%s", "totalLpAmount"], b)
3026
31-let o = makeString(["%s", "totalAssetAmount"], b)
27+let m = makeString(["%s", "totalAssetAmount"], b)
3228
33-func p (q) = makeString(["%s%s", "userLpAmount", q], b)
29+func n (o) = makeString(["%s%s", "userLpAmount", o], b)
3430
3531
36-func r (q) = makeString(["%s%s", "totalAssetWithdrawn", q], b)
32+func p (o) = makeString(["%s%s", "totalAssetWithdrawn", o], b)
3733
3834
39-func s (q) = makeString(["%s%s", "totalAssetStaked", q], b)
35+func q (o) = makeString(["%s%s", "totalAssetStaked", o], b)
4036
4137
42-func t (u,q,v) = makeString(["%s%s%s", u, q, toBase58String(v)], b)
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)
4361
4462
45-func w (x,y,z,A) = makeString(["%d%d", toString(x), toString(y), toString(z), toString(A)], b)
63+func D (E,F) = makeString([E, F], b)
4664
4765
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)
66+func G () = makeString(["%s", "adminAddressList"], b)
6967
7068
71-func J (K,L) = makeString([K, L], b)
69+func H () = makeString(["%s", "txId"], b)
7270
7371
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)
72+func I (E,J) = {
73+ let K = D(E, J)
74+ valueOrElse(getInteger(K), 0)
8375 }
8476
8577
86-func R () = {
87- let S = getString(this, M())
88- if ($isInstanceOf(S, "String"))
78+func L () = {
79+ let M = getString(this, G())
80+ if ($isInstanceOf(M, "String"))
8981 then {
90- let T = S
91- split(T, b)
82+ let N = M
83+ split(N, b)
9284 }
9385 else nil
9486 }
9587
9688
97-func U (V) = containsElement(R(), V)
89+func O (P) = containsElement(L(), P)
9890
9991
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)
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)
10597 }
10698
10799
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])
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])
117109
118- func ak (ai,aj) = if ((aj >= af))
119- then ai
110+ func ae (ac,ad) = if ((ad >= Z))
111+ then ac
120112 else throw("List size exceeds 5")
121113
122- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
114+ ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
123115 }
124- let Z = ad._1
125- let K = ad._2
126- Z
116+ let T = X._1
117+ let E = X._2
118+ T
127119 }
128120
129121
130-func al (Z,Q) = (Z + valueOrElse(getInteger(Q), 0))
122+func af (T,K) = (T + valueOrElse(getInteger(K), 0))
131123
132124
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])
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])
141133
142- func ak (ai,aj) = if ((aj >= af))
143- then ai
134+ func ae (ac,ad) = if ((ad >= Z))
135+ then ac
144136 else throw("List size exceeds 5")
145137
146- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
138+ ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
147139 }
148140
149141
150-func ao (Z,ap) = (Z :+ DeleteEntry(ap))
142+func ai (T,aj) = (T :+ DeleteEntry(aj))
151143
152144
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])
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])
161153
162- func ak (ai,aj) = if ((aj >= af))
163- then ai
154+ func ae (ac,ad) = if ((ad >= Z))
155+ then ac
164156 else throw("List size exceeds 5")
165157
166- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
158+ ae(ab(ab(ab(ab(ab(aa, 0), 1), 2), 3), 4), 5)
167159 }
168160
169161
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"))
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"))
177169 else unit
178- if ((aw == aw))
170+ if ((aq == aq))
179171 then {
180- let an = am(ab)
181- if (((an + 1) >= at))
172+ let ah = ag(V)
173+ if (((ah + 1) >= an))
182174 then {
183- let ax = aq(ab)
184- (ax ++ au)
175+ let ar = ak(V)
176+ (ar ++ ao)
185177 }
186- else [IntegerEntry(Q, 1)]
178+ else [IntegerEntry(K, 1)]
187179 }
188180 else throw("Strict value is not equal to itself.")
189181 }
190182
191183
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)])
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)])
197189 }
198190
199191
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"))
192+func aw () = {
193+ let ax = (s + as())
194+ let ay = {
195+ let M = u
196+ if ($isInstanceOf(M, "Unit"))
208197 then {
209- let aH = S
210- min([aF, wavesBalance(this).available])
198+ let az = M
199+ min([ax, wavesBalance(this).available])
211200 }
212- else if ($isInstanceOf(S, "ByteVector"))
201+ else if ($isInstanceOf(M, "ByteVector"))
213202 then {
214- let aI = S
215- min([aF, assetBalance(this, aI)])
203+ let aA = M
204+ min([ax, assetBalance(this, aA)])
216205 }
217206 else throw("Match error")
218207 }
219- if ((A == 0))
208+ if ((r == 0))
220209 then 0
221- else aG
210+ else ay
222211 }
223212
224213
225-func aJ () = if ((A != 0))
226- then fraction(toBigInt(aE()), e, toBigInt(A))
227- else e
214+func aB () = if ((r != 0))
215+ then fraction(aw(), c, r)
216+ else (1 * c)
228217
229218
230-func aK (q) = valueOrElse(getInteger(this, p(q)), 0)
219+func aC (o) = valueOrElse(getInteger(this, n(o)), 0)
231220
232221
233-func aL (q) = {
234- let aM = aK(q)
235- let aN = toInt(fraction(toBigInt(aM), aJ(), e))
236- if ((0 > aN))
222+func aD (o) = {
223+ let aE = aC(o)
224+ let aF = fraction(aE, aB(), c)
225+ if ((0 > aF))
237226 then 0
238- else aN
227+ else aF
239228 }
240229
241230
242-func aO (aP,q) = {
243- let aQ = [if ((size(aP.payments) == 1))
231+func aG (aH,o) = {
232+ let aI = [if ((size(aH.payments) == 1))
244233 then true
245- else h("should include 1 payment"), if ((aP.payments[0].assetId == C))
234+ else f("should include 1 payment"), if ((aH.payments[0].assetId == u))
246235 then true
247- else h(("payment should be in " + B)), if ((aP.payments[0].amount > 0))
236+ else f(("payment should be in " + t)), if ((aH.payments[0].amount > 0))
248237 then true
249238 else "payment amount should be greater than 0"]
250- if ((aQ == aQ))
239+ if ((aI == aI))
251240 then {
252- let aR = aP.payments[0].amount
253- let aS = toInt(fraction(toBigInt(aR), e, aJ()))
254- let aM = aK(q)
255- let aT = valueOrElse(getInteger(this, s(q)), 0)
256- let aU = (A + aS)
257- let aV = (z + aR)
258- let aW = (aM + aS)
259- let aX = (aT + aR)
260- let aY = if ((A == 0))
261- then [IntegerEntry(m, height)]
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)]
262251 else nil
263- ([StringEntry(t("stake", q, aP.transactionId), w(aD(), aJ(), A, z)), IntegerEntry(n, aU), IntegerEntry(o, aV), IntegerEntry(p(q), aW), IntegerEntry(s(q), aX)] ++ aY)
252+ ([IntegerEntry(l, aM), IntegerEntry(m, aN), IntegerEntry(n(o), aO), IntegerEntry(q(o), aP)] ++ aQ)
264253 }
265254 else throw("Strict value is not equal to itself.")
266255 }
267256
268257
269-func aZ (aP,ba) = {
270- let q = toString(aP.caller)
271- let aM = aK(q)
272- let bb = [if ((ba > 0))
258+func aR (aH,aS) = {
259+ let o = toString(aH.caller)
260+ let aE = aC(o)
261+ let aT = [if ((aS > 0))
273262 then true
274- else h("LP amount should be more than 0"), if ((aM >= ba))
263+ else f("LP amount should be more than 0"), if ((aE >= aS))
275264 then true
276- else h((("cannot withdraw more than available LP (" + toString(aM)) + ")"))]
277- if ((bb == bb))
265+ else f((("cannot withdraw more than available LP (" + toString(aE)) + ")"))]
266+ if ((aT == aT))
278267 then {
279- let aW = (aM - ba)
280- let bc = toInt(fraction(toBigInt(ba), aJ(), e))
281- let aU = (A - ba)
282- let aV = toInt(fraction(toBigInt(aU), aJ(), e))
283- let bd = valueOrElse(getInteger(this, r(q)), 0)
284- let be = (bd + bc)
285-[StringEntry(t("withdraw", q, aP.transactionId), w(aD(), aJ(), z, A)), IntegerEntry(n, aU), IntegerEntry(o, aV), IntegerEntry(p(q), aW), IntegerEntry(r(q), be), IntegerEntry(m, height), ScriptTransfer(aP.caller, bc, C)]
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)]
286275 }
287276 else throw("Strict value is not equal to itself.")
288277 }
289278
290279
291-@Callable(aP)
292-func setEmissionPerBlock (bf) = {
293- let bb = [if ((aP.caller == this))
280+@Callable(aH)
281+func setEmissionPerBlock (aX) = {
282+ let aT = [if ((aH.caller == this))
294283 then true
295- else h("permission denied")]
296- if ((bb == bb))
297- then [IntegerEntry(o, aE()), IntegerEntry(m, height), IntegerEntry(k, max([0, bf]))]
284+ else f("permission denied")]
285+ if ((aT == aT))
286+ then [IntegerEntry(m, aw()), IntegerEntry(k, height), IntegerEntry(i, max([0, aX]))]
298287 else throw("Strict value is not equal to itself.")
299288 }
300289
301290
302291
303-@Callable(aP)
304-func stake () = aO(aP, toString(aP.caller))
292+@Callable(aH)
293+func stake () = aG(aH, toString(aH.caller))
305294
306295
307296
308-@Callable(aP)
309-func stakeFor (q) = {
310- let bb = [if ((size(fromBase58String(q)) == f))
297+@Callable(aH)
298+func stakeFor (o) = {
299+ let aT = [if ((size(fromBase58String(o)) == d))
311300 then true
312- else h("address is not valid")]
313- if ((bb == bb))
314- then aO(aP, q)
301+ else f("address is not valid")]
302+ if ((aT == aT))
303+ then aG(aH, o)
315304 else throw("Strict value is not equal to itself.")
316305 }
317306
318307
319308
320-@Callable(aP)
321-func withdraw (bc) = {
322- let q = toString(aP.caller)
323- let aM = aK(q)
324- let bg = toInt(fraction(toBigInt(bc), e, aJ()))
325- let aN = aL(q)
326- let bh = toInt(fraction(aJ(), toBigInt(1), e, CEILING))
327- let bb = [if ((bc > 0))
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))
328317 then true
329- else h("withdraw amount should be more than 0"), if ((aN >= bc))
318+ else f("withdraw amount should be more than 0"), if ((aF >= aU))
330319 then true
331- else h((("cannot withdraw more than available (" + toString(aN)) + ")")), if ((bc >= bh))
320+ else f((("cannot withdraw more than available (" + toString(aF)) + ")")), if ((aU >= aZ))
332321 then true
333- else h((("withdraw amount is too small. Min: (" + toString(bh)) + ")"))]
334- if ((bb == bb))
335- then aZ(aP, bg)
322+ else f((("withdraw amount is too small. Min: (" + toString(aZ)) + ")"))]
323+ if ((aT == aT))
324+ then aR(aH, aY)
336325 else throw("Strict value is not equal to itself.")
337326 }
338327
339328
340329
341-@Callable(aP)
342-func getUserAssetsREADONLY (q) = {
343- let aM = aK(q)
344- let aN = aL(q)
345- let aT = valueOrElse(getInteger(this, s(q)), 0)
346- let bd = valueOrElse(getInteger(this, r(q)), 0)
347- $Tuple2(nil, $Tuple5(aM, aN, aJ(), aT, bd))
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))
348337 }
349338
350339
351340
352-@Callable(aP)
353-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(A, aE(), aJ()))
341+@Callable(aH)
342+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(r, aw(), aB()))
354343
355344
356345
357-@Callable(aP)
358-func voteForTxId (v) = {
359- let as = toBase58String(aP.caller.bytes)
360- let ab = I(v)
361- let Z = [StringEntry(N(), v)]
362- let bi = getString(this, N())
363- let aw = [if ((size(fromBase58String(v)) == H))
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))
364353 then true
365- else h((v + " is not valid txId")), if (if ((bi == unit))
354+ else f((C + " is not valid txId")), if (if ((ba == unit))
366355 then true
367- else (value(bi) != v))
356+ else (value(ba) != C))
368357 then true
369- else h((v + " is already allowed"))]
370- if ((aw == aw))
371- then ar(as, ab, G, Z)
358+ else f((C + " is already allowed"))]
359+ if ((aq == aq))
360+ then al(am, V, z, T)
372361 else throw("Strict value is not equal to itself.")
373362 }
374363
375364
376-@Verifier(bj)
377-func bk () = {
378- let bl = (bj.id == fromBase58String(valueOrElse(getString(this, N()), "")))
379- let bm = if ((size(R()) >= G))
365+@Verifier(bb)
366+func bc () = {
367+ let bd = (bb.id == fromBase58String(valueOrElse(getString(this, H()), "")))
368+ let be = if ((size(L()) >= z))
380369 then false
381- else sigVerify(bj.bodyBytes, bj.proofs[0], bj.senderPublicKey)
382- if (bl)
370+ else sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
371+ if (bd)
383372 then true
384- else bm
373+ else be
385374 }
386375

github/deemru/w8io/169f3d6 
150.53 ms