tx · GRurAS6w5quEQFY2bEiB4F8jNAPmWxTUs3xH8MSURBEh

3MpMuGN8rW9EpPwzETAQz88Pe9TQhSwiriq:  -0.01400000 Waves

2023.07.21 14:57 [2675581] smart account 3MpMuGN8rW9EpPwzETAQz88Pe9TQhSwiriq > SELF 0.00000000 Waves

{ "type": 13, "id": "GRurAS6w5quEQFY2bEiB4F8jNAPmWxTUs3xH8MSURBEh", "fee": 1400000, "feeAssetId": null, "timestamp": 1689940660374, "version": 2, "chainId": 84, "sender": "3MpMuGN8rW9EpPwzETAQz88Pe9TQhSwiriq", "senderPublicKey": "57SkjQUEwC1ayCqLbXLuzBqifK6B6SR6rfxtGsbAo3zW", "proofs": [ "3AZya94uZFyd2jFckzse9EdqR9PmxBUgR7rvDGaCFiWaRSSBuVMnHD8CbTq2Mbx6DnHivewtocUJKxZFy5bxo1AR" ], "script": "base64:BgIfCAISAwoBARIAEgMKAQgSAwoBARIDCgEIEgASAwoBCCwADGNvbnRyYWN0RmlsZQIQbXB0X3N0YWtpbmcucmlkZQADU0VQAgJfXwAGc2NhbGU4AIDC1y8AEkFERFJFU1NfQllURVNfU0laRQAaAA1CTE9DS1NfSU5fREFZAKALAQh0aHJvd0VycgEDbXNnCQACAQkArAICCQCsAgIFDGNvbnRyYWN0RmlsZQICOiAFA21zZwAKa2V5QXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICB2Fzc2V0SWQFA25pbAUDU0VQABNrZXlFbWlzc2lvblBlckJsb2NrCQC5CQIJAMwIAgICJXMJAMwIAgIQZW1pc3Npb25QZXJCbG9jawUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVABD2tleVVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICDHVzZXJMcEFtb3VudAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAADXRvdGFsTHBBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQa2V5VG90YWxMcEFtb3VudAAAABB0b3RhbEFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVRvdGFsQXNzZXRBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcADmVtaXNzaW9uUGVyRGF5CQBoAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlFbWlzc2lvblBlckJsb2NrAAAFDUJMT0NLU19JTl9EQVkADGhlaWdodEluRGF5cwkAawMFBmhlaWdodAABBQ1CTE9DS1NfSU5fREFZAA9BRE1JTl9MSVNUX1NJWkUABQAGUVVPUlVNAAMAEVRYSURfQllURVNfTEVOR1RIACABGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAglhbGxvd1R4SWQJAMwIAgUEdHhJZAUDbmlsBQNTRVABEGtleUZ1bGxBZG1pblZvdGUCBnByZWZpeAxhZG1pbkFkZHJlc3MJALkJAgkAzAgCBQZwcmVmaXgJAMwIAgUMYWRtaW5BZGRyZXNzBQNuaWwFA1NFUAETa2V5QWRtaW5BZGRyZXNzTGlzdAAJALkJAgkAzAgCAgIlcwkAzAgCAhBhZG1pbkFkZHJlc3NMaXN0BQNuaWwFA1NFUAEOa2V5QWxsb3dlZFR4SWQACQC5CQIJAMwIAgICJXMJAMwIAgIEdHhJZAUDbmlsBQNTRVABDGdldEFkbWluVm90ZQIGcHJlZml4BWFkbWluBAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFBnByZWZpeAUFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQ1nZXRBZG1pbnNMaXN0AAQHJG1hdGNoMAkAnQgCBQR0aGlzCQETa2V5QWRtaW5BZGRyZXNzTGlzdAADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQC1CQIFAXMFA1NFUAUDbmlsAQ1pc0luQWRtaW5MaXN0AQdhZGRyZXNzCQEPY29udGFpbnNFbGVtZW50AgkBDWdldEFkbWluc0xpc3QABQdhZGRyZXNzARJnZW5Wb3Rlc0tleXNIZWxwZXICAWEMYWRtaW5BZGRyZXNzBAskdDAyNDEwMjQzNAUBYQQGcmVzdWx0CAULJHQwMjQxMDI0MzQCXzEEBnByZWZpeAgFCyR0MDI0MTAyNDM0Al8yCQCUCgIJAM0IAgUGcmVzdWx0CQEQa2V5RnVsbEFkbWluVm90ZQIFBnByZWZpeAUMYWRtaW5BZGRyZXNzBQZwcmVmaXgBDGdlblZvdGVzS2V5cwEJa2V5UHJlZml4BAlhZG1pbkxpc3QJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAQLJHQwMjU4MTI2NjUKAAIkbAkBDWdldEFkbWluc0xpc3QACgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFCWtleVByZWZpeAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQESZ2VuVm90ZXNLZXlzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQGcmVzdWx0CAULJHQwMjU4MTI2NjUCXzEEBnByZWZpeAgFCyR0MDI1ODEyNjY1Al8yBQZyZXN1bHQBEGNvdW50Vm90ZXNIZWxwZXICBnJlc3VsdAd2b3RlS2V5CQBkAgUGcmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAEKY291bnRWb3RlcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY291bnRWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBEGNsZWFyVm90ZXNIZWxwZXICBnJlc3VsdANrZXkJAM0IAgUGcmVzdWx0CQELRGVsZXRlRW50cnkBBQNrZXkBE2dldENsZWFyVm90ZUVudHJpZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNsZWFyVm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAQx2b3RlSU5URVJOQUwEE2NhbGxlckFkZHJlc3NTdHJpbmcJa2V5UHJlZml4CG1pblZvdGVzCnZvdGVSZXN1bHQEB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUJa2V5UHJlZml4BRNjYWxsZXJBZGRyZXNzU3RyaW5nBBBhZG1pbkN1cnJlbnRWb3RlCQEMZ2V0QWRtaW5Wb3RlAgUJa2V5UHJlZml4BRNjYWxsZXJBZGRyZXNzU3RyaW5nBANlcnIDCQEBIQEJAQ1pc0luQWRtaW5MaXN0AQUTY2FsbGVyQWRkcmVzc1N0cmluZwkBCHRocm93RXJyAQkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwISIG5vdCBpbiBBZG1pbiBsaXN0AwkAAAIFEGFkbWluQ3VycmVudFZvdGUAAQkBCHRocm93RXJyAQkArAICBQd2b3RlS2V5AhIgeW91IGFscmVhZHkgdm90ZWQFBHVuaXQDCQAAAgUDZXJyBQNlcnIEBXZvdGVzCQEKY291bnRWb3RlcwEFCWtleVByZWZpeAMJAGcCCQBkAgUFdm90ZXMAAQUIbWluVm90ZXMEEGNsZWFyVm90ZUVudHJpZXMJARNnZXRDbGVhclZvdGVFbnRyaWVzAQUJa2V5UHJlZml4CQDOCAIFEGNsZWFyVm90ZUVudHJpZXMFCnZvdGVSZXN1bHQJAMwIAgkBDEludGVnZXJFbnRyeQIFB3ZvdGVLZXkAAQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9jYWxjVG90YWxQcm9maXQABApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sAAAQIc3RhcnREYXkJAGsDBQpzdGFydEJsb2NrAAEFDUJMT0NLU19JTl9EQVkEC2VsYXBzZWREYXlzCQBlAgUMaGVpZ2h0SW5EYXlzBQhzdGFydERheQkAlgMBCQDMCAIAAAkAzAgCCQBoAgUOZW1pc3Npb25QZXJEYXkFC2VsYXBzZWREYXlzBQNuaWwBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABBp0b3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdAkAZAIFEHRvdGFsQXNzZXRBbW91bnQJAQ9jYWxjVG90YWxQcm9maXQABAt0b3RhbEFtb3VudAQHJG1hdGNoMAUMYXNzZXRJZEJ5dGVzAwkAAQIFByRtYXRjaDACBFVuaXQEAXUFByRtYXRjaDAJAJcDAQkAzAgCBRp0b3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdAkAzAgCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUDbmlsAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAJcDAQkAzAgCBRp0b3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdAkAzAgCCQDwBwIFBHRoaXMFAWIFA25pbAkAAgECC01hdGNoIGVycm9yAwkAAAIFDXRvdGFsTHBBbW91bnQAAAAABQt0b3RhbEFtb3VudAEPZ2V0Q3VycmVudFByaWNlAAMJAQIhPQIFDXRvdGFsTHBBbW91bnQAAAkAawMJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAUGc2NhbGU4BQ10b3RhbExwQW1vdW50CQBoAgABBQZzY2FsZTgBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJAGsDBQx1c2VyTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQZzY2FsZTgDCQBmAgkBD2dldEN1cnJlbnRQcmljZQAJAGgCBRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3BQZzY2FsZTgAAAUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwEPZ2V0U3Rha2VBY3Rpb25zAgFpC3VzZXJBZGRyZXNzBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhhzaG91bGQgaW5jbHVkZSAxIHBheW1lbnQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDGFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJAKwCAgIVcGF5bWVudCBzaG91bGQgYmUgaW4gBQ1hc3NldElkU3RyaW5nCQDMCAIDCQBmAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAAYCJ3BheW1lbnQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA1wYXltZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQPcGF5bWVudExwQW1vdW50CQBrAwUNcGF5bWVudEFtb3VudAUGc2NhbGU4CQEPZ2V0Q3VycmVudFByaWNlAAQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBBuZXdUb3RhbExwQW1vdW50CQBkAgUNdG90YWxMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQBkAgUQdG90YWxBc3NldEFtb3VudAUNcGF5bWVudEFtb3VudAQPbmV3VXNlckxwQW1vdW50CQBkAgUMdXNlckxwQW1vdW50BQ9wYXltZW50THBBbW91bnQEGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAkAZAIFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUNcGF5bWVudEFtb3VudAQXdXBkYXRlU3RhcnRIZWlnaHRBY3Rpb24DCQAAAgUNdG90YWxMcEFtb3VudAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwUYbmV3VXNlclRvdGFsU3Rha2VkQW1vdW50BQNuaWwFF3VwZGF0ZVN0YXJ0SGVpZ2h0QWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARJnZXRXaXRoZHJhd0FjdGlvbnMCAWkVbHBBc3NldFdpdGhkcmF3QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBAVjaGVjawkAzAgCAwkAZgIFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAAABgkBCHRocm93RXJyAQIcYW1vdW50IHNob3VsZCBiZSBtb3JlIHRoYW4gMAkAzAgCAwkAZwIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJWNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gYXZhaWxhYmxlICgJAKQDAQUMdXNlckxwQW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrBA9uZXdVc2VyTHBBbW91bnQJAGUCBQx1c2VyTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQTd2l0aGRyYXdBc3NldEFtb3VudAkAawMFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAkBD2dldEN1cnJlbnRQcmljZQAFBnNjYWxlOAQQbmV3VG90YWxMcEFtb3VudAkAZQIFDXRvdGFsTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkAawMFEG5ld1RvdGFsTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQZzY2FsZTgEF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzAAAEGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQBkAgUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24FE3dpdGhkcmF3QXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwUabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE3dpdGhkcmF3QXNzZXRBbW91bnQFDGFzc2V0SWRCeXRlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBwFpARNzZXRFbWlzc2lvblBlckJsb2NrARBlbWlzc2lvblBlckJsb2NrBAVjaGVjawkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5RW1pc3Npb25QZXJCbG9jawkAlgMBCQDMCAIAAAkAzAgCBRBlbWlzc2lvblBlckJsb2NrBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpCQClCAEIBQFpBmNhbGxlcgFpAQhzdGFrZUZvcgELdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQAAAgkAyAEBCQDZBAEFC3VzZXJBZGRyZXNzBRJBRERSRVNTX0JZVEVTX1NJWkUGCQEIdGhyb3dFcnIBAhRhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARN3aXRoZHJhd0Fzc2V0QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJscEFtb3VudFRvV2l0aGRyYXcJAGsDBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQZzY2FsZTgJAQ9nZXRDdXJyZW50UHJpY2UABBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQFY2hlY2sJAMwIAgMJAGYCBRN3aXRoZHJhd0Fzc2V0QW1vdW50AAAGCQEIdGhyb3dFcnIBAiV3aXRoZHJhdyBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwUTd2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiVjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSAoCQCkAwEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcCASkFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJARJnZXRXaXRoZHJhd0FjdGlvbnMCBQFpBRJscEFtb3VudFRvV2l0aGRyYXcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVZ2V0VXNlckFzc2V0c1JFQURPTkxZAQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJASBnZXRVc2VyQXZhaWxhYmxlQXNzZXRzVG9XaXRoZHJhdwEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MAAAkAlAoCBQNuaWwJAJcKBQUMdXNlckxwQW1vdW50BRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEPZ2V0Q3VycmVudFByaWNlAAUVdXNlclRvdGFsU3Rha2VkQW1vdW50BRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgFpARZnZXRUb3RhbEFzc2V0c1JFQURPTkxZAAkAlAoCBQNuaWwJAJUKAwUNdG90YWxMcEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQEPZ2V0Q3VycmVudFByaWNlAAFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXJfo0xY", "height": 2675581, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8HvaFzBZdGMTEy4mA3ZfQZNcQJXywSRjMpEbNT9Mqz9B Next: J3tJi6bV1jGFPYQ4Z4eqyjZ4ZoQvHHE8P5BJQ9dQf2bS Diff:
OldNewDifferences
4747
4848 let v = fraction(height, 1, e)
4949
50-func w (n) = valueOrElse(getInteger(this, m(n)), 0)
50+let w = 5
51+
52+let x = 3
53+
54+let y = 32
55+
56+func z (A) = makeString(["%s%s%s", "allowTxId", A], b)
5157
5258
53-let x = 5
54-
55-let y = 3
56-
57-let z = 32
58-
59-func A (B) = makeString(["%s%s%s", "allowTxId", B], b)
59+func B (C,D) = makeString([C, D], b)
6060
6161
62-func C (D,E) = makeString([D, E], b)
62+func E () = makeString(["%s", "adminAddressList"], b)
6363
6464
65-func F () = makeString(["%s", "adminAddressList"], b)
65+func F () = makeString(["%s", "txId"], b)
6666
6767
68-func G () = makeString(["%s", "txId"], b)
69-
70-
71-func H (D,I) = {
72- let J = C(D, I)
73- valueOrElse(getInteger(J), 0)
68+func G (C,H) = {
69+ let I = B(C, H)
70+ valueOrElse(getInteger(I), 0)
7471 }
7572
7673
77-func K () = {
78- let L = getString(this, F())
79- if ($isInstanceOf(L, "String"))
74+func J () = {
75+ let K = getString(this, E())
76+ if ($isInstanceOf(K, "String"))
8077 then {
81- let M = L
82- split(M, b)
78+ let L = K
79+ split(L, b)
8380 }
8481 else nil
8582 }
8683
8784
88-func N (O) = containsElement(K(), O)
85+func M (N) = containsElement(J(), N)
8986
9087
91-func P (Q,E) = {
92- let R = Q
93- let S = R._1
94- let D = R._2
95- $Tuple2((S :+ C(D, E)), D)
88+func O (P,D) = {
89+ let Q = P
90+ let R = Q._1
91+ let C = Q._2
92+ $Tuple2((R :+ B(C, D)), C)
9693 }
9794
9895
99-func T (U) = {
100- let V = F()
101- let W = {
102- let X = K()
103- let Y = size(X)
104- let Z = $Tuple2(nil, U)
105- func aa (ab,ac) = if ((ac >= Y))
106- then ab
107- else P(ab, X[ac])
96+func S (T) = {
97+ let U = E()
98+ let V = {
99+ let W = J()
100+ let X = size(W)
101+ let Y = $Tuple2(nil, T)
102+ func Z (aa,ab) = if ((ab >= X))
103+ then aa
104+ else O(aa, W[ab])
108105
109- func ad (ab,ac) = if ((ac >= Y))
110- then ab
106+ func ac (aa,ab) = if ((ab >= X))
107+ then aa
111108 else throw("List size exceeds 5")
112109
113- ad(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5)
110+ ac(Z(Z(Z(Z(Z(Y, 0), 1), 2), 3), 4), 5)
114111 }
115- let S = W._1
116- let D = W._2
117- S
112+ let R = V._1
113+ let C = V._2
114+ R
118115 }
119116
120117
121-func ae (S,J) = (S + valueOrElse(getInteger(J), 0))
118+func ad (R,I) = (R + valueOrElse(getInteger(I), 0))
122119
123120
124-func af (D) = {
125- let ag = T(D)
126- let X = ag
127- let Y = size(X)
128- let Z = 0
129- func aa (ab,ac) = if ((ac >= Y))
130- then ab
131- else ae(ab, X[ac])
121+func ae (C) = {
122+ let af = S(C)
123+ let W = af
124+ let X = size(W)
125+ let Y = 0
126+ func Z (aa,ab) = if ((ab >= X))
127+ then aa
128+ else ad(aa, W[ab])
132129
133- func ad (ab,ac) = if ((ac >= Y))
134- then ab
130+ func ac (aa,ab) = if ((ab >= X))
131+ then aa
135132 else throw("List size exceeds 5")
136133
137- ad(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5)
134+ ac(Z(Z(Z(Z(Z(Y, 0), 1), 2), 3), 4), 5)
138135 }
139136
140137
141-func ah (S,ai) = (S :+ DeleteEntry(ai))
138+func ag (R,ah) = (R :+ DeleteEntry(ah))
142139
143140
144-func aj (D) = {
145- let ag = T(D)
146- let X = ag
147- let Y = size(X)
148- let Z = nil
149- func aa (ab,ac) = if ((ac >= Y))
150- then ab
151- else ah(ab, X[ac])
141+func ai (C) = {
142+ let af = S(C)
143+ let W = af
144+ let X = size(W)
145+ let Y = nil
146+ func Z (aa,ab) = if ((ab >= X))
147+ then aa
148+ else ag(aa, W[ab])
152149
153- func ad (ab,ac) = if ((ac >= Y))
154- then ab
150+ func ac (aa,ab) = if ((ab >= X))
151+ then aa
155152 else throw("List size exceeds 5")
156153
157- ad(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5)
154+ ac(Z(Z(Z(Z(Z(Y, 0), 1), 2), 3), 4), 5)
158155 }
159156
160157
161-func ak (al,U,am,an) = {
162- let J = C(U, al)
163- let ao = H(U, al)
164- let ap = if (!(N(al)))
165- then f((("Address: " + al) + " not in Admin list"))
166- else if ((ao == 1))
167- then f((J + " you already voted"))
158+func aj (ak,T,al,am) = {
159+ let I = B(T, ak)
160+ let an = G(T, ak)
161+ let ao = if (!(M(ak)))
162+ then f((("Address: " + ak) + " not in Admin list"))
163+ else if ((an == 1))
164+ then f((I + " you already voted"))
168165 else unit
169- if ((ap == ap))
166+ if ((ao == ao))
170167 then {
171- let ag = af(U)
172- if (((ag + 1) >= am))
168+ let af = ae(T)
169+ if (((af + 1) >= al))
173170 then {
174- let aq = aj(U)
175- (aq ++ an)
171+ let ap = ai(T)
172+ (ap ++ am)
176173 }
177- else [IntegerEntry(J, 1)]
174+ else [IntegerEntry(I, 1)]
178175 }
179176 else throw("Strict value is not equal to itself.")
180177 }
181178
182179
183-func ar () = {
184- let as = valueOrElse(getInteger(this, j), 0)
185- let at = fraction(as, 1, e)
186- let au = (v - at)
187- max([0, (u * au)])
180+func aq () = {
181+ let ar = valueOrElse(getInteger(this, j), 0)
182+ let as = fraction(ar, 1, e)
183+ let at = (v - as)
184+ max([0, (u * at)])
188185 }
189186
190187
191-func av () = {
192- let aw = (r + ar())
193- let ax = {
194- let L = t
195- if ($isInstanceOf(L, "Unit"))
188+func au () = {
189+ let av = (r + aq())
190+ let aw = {
191+ let K = t
192+ if ($isInstanceOf(K, "Unit"))
196193 then {
197- let ay = L
198- min([aw, wavesBalance(this).available])
194+ let ax = K
195+ min([av, wavesBalance(this).available])
199196 }
200- else if ($isInstanceOf(L, "ByteVector"))
197+ else if ($isInstanceOf(K, "ByteVector"))
201198 then {
202- let az = L
203- min([aw, assetBalance(this, az)])
199+ let ay = K
200+ min([av, assetBalance(this, ay)])
204201 }
205202 else throw("Match error")
206203 }
207204 if ((q == 0))
208205 then 0
209- else ax
206+ else aw
210207 }
211208
212209
213-func aA () = if ((q != 0))
214- then fraction(av(), c, q)
210+func az () = if ((q != 0))
211+ then fraction(au(), c, q)
215212 else (1 * c)
216213
217214
218-func aB (aC,n) = {
219- let aD = [if ((size(aC.payments) == 1))
215+func aA (n) = valueOrElse(getInteger(this, m(n)), 0)
216+
217+
218+func aB (n) = {
219+ let aC = aA(n)
220+ let aD = fraction(aC, az(), c)
221+ if ((az() > (aD * c)))
222+ then 0
223+ else aD
224+ }
225+
226+
227+func aE (aF,n) = {
228+ let aG = [if ((size(aF.payments) == 1))
220229 then true
221- else f("should include 1 payment"), if ((aC.payments[0].assetId == t))
230+ else f("should include 1 payment"), if ((aF.payments[0].assetId == t))
222231 then true
223- else f(("payment should be in " + s)), if ((aC.payments[0].amount > 0))
232+ else f(("payment should be in " + s)), if ((aF.payments[0].amount > 0))
224233 then true
225234 else "payment amount should be greater than 0"]
226- if ((aD == aD))
235+ if ((aG == aG))
227236 then {
228- let aE = aC.payments[0].amount
229- let aF = fraction(aE, c, aA())
230- let aG = w(n)
231- let aH = valueOrElse(getInteger(this, p(n)), 0)
232- let aI = (q + aF)
233- let aJ = (r + aE)
234- let aK = (aG + aF)
235- let aL = (aH + aE)
236- let aM = if ((q == 0))
237+ let aH = aF.payments[0].amount
238+ let aI = fraction(aH, c, az())
239+ let aC = aA(n)
240+ let aJ = valueOrElse(getInteger(this, p(n)), 0)
241+ let aK = (q + aI)
242+ let aL = (r + aH)
243+ let aM = (aC + aI)
244+ let aN = (aJ + aH)
245+ let aO = if ((q == 0))
237246 then [IntegerEntry(j, height)]
238247 else nil
239- ([IntegerEntry(k, aI), IntegerEntry(l, aJ), IntegerEntry(m(n), aK), IntegerEntry(p(n), aL)] ++ aM)
248+ ([IntegerEntry(k, aK), IntegerEntry(l, aL), IntegerEntry(m(n), aM), IntegerEntry(p(n), aN)] ++ aO)
240249 }
241250 else throw("Strict value is not equal to itself.")
242251 }
243252
244253
245-func aN (aC,aO) = {
246- let n = toString(aC.caller)
247- let aG = w(n)
248- let aP = [if ((aO > 0))
254+func aP (aF,aQ) = {
255+ let n = toString(aF.caller)
256+ let aC = aA(n)
257+ let aR = [if ((aQ > 0))
249258 then true
250- else f("amount should be more than 0"), if ((aG >= aO))
259+ else f("amount should be more than 0"), if ((aC >= aQ))
251260 then true
252- else f((("cannot withdraw more than available (" + toString(aG)) + ")"))]
253- if ((aP == aP))
261+ else f((("cannot withdraw more than available (" + toString(aC)) + ")"))]
262+ if ((aR == aR))
254263 then {
255- let aK = (aG - aO)
256- let aQ = fraction(aO, aA(), c)
257- let aI = (q - aO)
258- let aJ = fraction(aI, aA(), c)
259- let aR = valueOrElse(getInteger(this, o(n)), 0)
260- let aS = (aR + aQ)
261-[IntegerEntry(k, aI), IntegerEntry(l, aJ), IntegerEntry(m(n), aK), IntegerEntry(o(n), aS), IntegerEntry(j, height), ScriptTransfer(aC.caller, aQ, t)]
264+ let aM = (aC - aQ)
265+ let aS = fraction(aQ, az(), c)
266+ let aK = (q - aQ)
267+ let aL = fraction(aK, az(), c)
268+ let aT = valueOrElse(getInteger(this, o(n)), 0)
269+ let aU = (aT + aS)
270+[IntegerEntry(k, aK), IntegerEntry(l, aL), IntegerEntry(m(n), aM), IntegerEntry(o(n), aU), IntegerEntry(j, height), ScriptTransfer(aF.caller, aS, t)]
262271 }
263272 else throw("Strict value is not equal to itself.")
264273 }
265274
266275
267-@Callable(aC)
268-func setEmissionPerBlock (aT) = {
269- let aP = [if ((aC.caller == this))
276+@Callable(aF)
277+func setEmissionPerBlock (aV) = {
278+ let aR = [if ((aF.caller == this))
270279 then true
271280 else f("permission denied")]
272- if ((aP == aP))
273- then [IntegerEntry(l, av()), IntegerEntry(j, height), IntegerEntry(i, max([0, aT]))]
281+ if ((aR == aR))
282+ then [IntegerEntry(l, au()), IntegerEntry(j, height), IntegerEntry(i, max([0, aV]))]
274283 else throw("Strict value is not equal to itself.")
275284 }
276285
277286
278287
279-@Callable(aC)
280-func stake () = aB(aC, toString(aC.caller))
288+@Callable(aF)
289+func stake () = aE(aF, toString(aF.caller))
281290
282291
283292
284-@Callable(aC)
293+@Callable(aF)
285294 func stakeFor (n) = {
286- let aP = [if ((size(fromBase58String(n)) == d))
295+ let aR = [if ((size(fromBase58String(n)) == d))
287296 then true
288297 else f("address is not valid")]
289- if ((aP == aP))
290- then aB(aC, n)
298+ if ((aR == aR))
299+ then aE(aF, n)
291300 else throw("Strict value is not equal to itself.")
292301 }
293302
294303
295304
296-@Callable(aC)
297-func withdraw (aQ) = {
298- let n = toString(aC.caller)
299- let aG = w(n)
300- let aU = fraction(aQ, c, aA())
301- let aV = fraction(aG, aA(), c)
302- let aP = [if ((aQ > 0))
305+@Callable(aF)
306+func withdraw (aS) = {
307+ let n = toString(aF.caller)
308+ let aC = aA(n)
309+ let aW = fraction(aS, c, az())
310+ let aD = aB(n)
311+ let aR = [if ((aS > 0))
303312 then true
304- else f("withdraw amount should be more than 0"), if ((aV >= aQ))
313+ else f("withdraw amount should be more than 0"), if ((aD >= aS))
305314 then true
306- else f((("cannot withdraw more than available (" + toString(aV)) + ")"))]
307- if ((aP == aP))
308- then {
309- let aW = aN(aC, aU)
310- aW
311- }
315+ else f((("cannot withdraw more than available (" + toString(aD)) + ")"))]
316+ if ((aR == aR))
317+ then aP(aF, aW)
312318 else throw("Strict value is not equal to itself.")
313319 }
314320
315321
316322
317-@Callable(aC)
323+@Callable(aF)
318324 func getUserAssetsREADONLY (n) = {
319- let aG = w(n)
320- let aV = fraction(aG, aA(), c)
321- let aH = valueOrElse(getInteger(this, p(n)), 0)
322- let aR = valueOrElse(getInteger(this, o(n)), 0)
323- $Tuple2(nil, $Tuple5(aG, aV, aA(), aH, aR))
325+ let aC = aA(n)
326+ let aD = aB(n)
327+ let aJ = valueOrElse(getInteger(this, p(n)), 0)
328+ let aT = valueOrElse(getInteger(this, o(n)), 0)
329+ $Tuple2(nil, $Tuple5(aC, aD, az(), aJ, aT))
324330 }
325331
326332
327333
328-@Callable(aC)
329-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(q, av(), aA()))
334+@Callable(aF)
335+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(q, au(), az()))
330336
331337
332338
333-@Callable(aC)
334-func voteForTxId (B) = {
335- let al = toBase58String(aC.caller.bytes)
336- let U = A(B)
337- let S = [StringEntry(G(), B)]
338- let aX = getString(this, G())
339- let ap = [if ((size(fromBase58String(B)) == z))
339+@Callable(aF)
340+func voteForTxId (A) = {
341+ let ak = toBase58String(aF.caller.bytes)
342+ let T = z(A)
343+ let R = [StringEntry(F(), A)]
344+ let aX = getString(this, F())
345+ let ao = [if ((size(fromBase58String(A)) == y))
340346 then true
341- else f((B + " is not valid txId")), if (if ((aX == unit))
347+ else f((A + " is not valid txId")), if (if ((aX == unit))
342348 then true
343- else (value(aX) != B))
349+ else (value(aX) != A))
344350 then true
345- else f((B + " is already allowed"))]
346- if ((ap == ap))
347- then ak(al, U, y, S)
351+ else f((A + " is already allowed"))]
352+ if ((ao == ao))
353+ then aj(ak, T, x, R)
348354 else throw("Strict value is not equal to itself.")
349355 }
350356
351357
352358 @Verifier(aY)
353359 func aZ () = {
354- let ba = (aY.id == fromBase58String(valueOrElse(getString(this, G()), "")))
355- let bb = if ((size(K()) >= y))
360+ let ba = (aY.id == fromBase58String(valueOrElse(getString(this, F()), "")))
361+ let bb = if ((size(J()) >= x))
356362 then false
357363 else sigVerify(aY.bodyBytes, aY.proofs[0], aY.senderPublicKey)
358364 if (ba)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "mpt_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
1010 let d = 26
1111
1212 let e = 1440
1313
1414 func f (g) = throw(((a + ": ") + g))
1515
1616
1717 let h = makeString(["%s", "assetId"], b)
1818
1919 let i = makeString(["%s", "emissionPerBlock"], b)
2020
2121 let j = makeString(["%s", "startBlock"], b)
2222
2323 let k = makeString(["%s", "totalLpAmount"], b)
2424
2525 let l = makeString(["%s", "totalAssetAmount"], b)
2626
2727 func m (n) = makeString(["%s%s", "userLpAmount", n], b)
2828
2929
3030 func o (n) = makeString(["%s%s", "totalAssetWithdrawn", n], b)
3131
3232
3333 func p (n) = makeString(["%s%s", "totalAssetStaked", n], b)
3434
3535
3636 let q = valueOrElse(getInteger(this, k), 0)
3737
3838 let r = valueOrElse(getInteger(this, l), 0)
3939
4040 let s = valueOrElse(getString(this, h), "WAVES")
4141
4242 let t = if ((s == "WAVES"))
4343 then unit
4444 else fromBase58String(s)
4545
4646 let u = (valueOrElse(getInteger(this, i), 0) * e)
4747
4848 let v = fraction(height, 1, e)
4949
50-func w (n) = valueOrElse(getInteger(this, m(n)), 0)
50+let w = 5
51+
52+let x = 3
53+
54+let y = 32
55+
56+func z (A) = makeString(["%s%s%s", "allowTxId", A], b)
5157
5258
53-let x = 5
54-
55-let y = 3
56-
57-let z = 32
58-
59-func A (B) = makeString(["%s%s%s", "allowTxId", B], b)
59+func B (C,D) = makeString([C, D], b)
6060
6161
62-func C (D,E) = makeString([D, E], b)
62+func E () = makeString(["%s", "adminAddressList"], b)
6363
6464
65-func F () = makeString(["%s", "adminAddressList"], b)
65+func F () = makeString(["%s", "txId"], b)
6666
6767
68-func G () = makeString(["%s", "txId"], b)
69-
70-
71-func H (D,I) = {
72- let J = C(D, I)
73- valueOrElse(getInteger(J), 0)
68+func G (C,H) = {
69+ let I = B(C, H)
70+ valueOrElse(getInteger(I), 0)
7471 }
7572
7673
77-func K () = {
78- let L = getString(this, F())
79- if ($isInstanceOf(L, "String"))
74+func J () = {
75+ let K = getString(this, E())
76+ if ($isInstanceOf(K, "String"))
8077 then {
81- let M = L
82- split(M, b)
78+ let L = K
79+ split(L, b)
8380 }
8481 else nil
8582 }
8683
8784
88-func N (O) = containsElement(K(), O)
85+func M (N) = containsElement(J(), N)
8986
9087
91-func P (Q,E) = {
92- let R = Q
93- let S = R._1
94- let D = R._2
95- $Tuple2((S :+ C(D, E)), D)
88+func O (P,D) = {
89+ let Q = P
90+ let R = Q._1
91+ let C = Q._2
92+ $Tuple2((R :+ B(C, D)), C)
9693 }
9794
9895
99-func T (U) = {
100- let V = F()
101- let W = {
102- let X = K()
103- let Y = size(X)
104- let Z = $Tuple2(nil, U)
105- func aa (ab,ac) = if ((ac >= Y))
106- then ab
107- else P(ab, X[ac])
96+func S (T) = {
97+ let U = E()
98+ let V = {
99+ let W = J()
100+ let X = size(W)
101+ let Y = $Tuple2(nil, T)
102+ func Z (aa,ab) = if ((ab >= X))
103+ then aa
104+ else O(aa, W[ab])
108105
109- func ad (ab,ac) = if ((ac >= Y))
110- then ab
106+ func ac (aa,ab) = if ((ab >= X))
107+ then aa
111108 else throw("List size exceeds 5")
112109
113- ad(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5)
110+ ac(Z(Z(Z(Z(Z(Y, 0), 1), 2), 3), 4), 5)
114111 }
115- let S = W._1
116- let D = W._2
117- S
112+ let R = V._1
113+ let C = V._2
114+ R
118115 }
119116
120117
121-func ae (S,J) = (S + valueOrElse(getInteger(J), 0))
118+func ad (R,I) = (R + valueOrElse(getInteger(I), 0))
122119
123120
124-func af (D) = {
125- let ag = T(D)
126- let X = ag
127- let Y = size(X)
128- let Z = 0
129- func aa (ab,ac) = if ((ac >= Y))
130- then ab
131- else ae(ab, X[ac])
121+func ae (C) = {
122+ let af = S(C)
123+ let W = af
124+ let X = size(W)
125+ let Y = 0
126+ func Z (aa,ab) = if ((ab >= X))
127+ then aa
128+ else ad(aa, W[ab])
132129
133- func ad (ab,ac) = if ((ac >= Y))
134- then ab
130+ func ac (aa,ab) = if ((ab >= X))
131+ then aa
135132 else throw("List size exceeds 5")
136133
137- ad(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5)
134+ ac(Z(Z(Z(Z(Z(Y, 0), 1), 2), 3), 4), 5)
138135 }
139136
140137
141-func ah (S,ai) = (S :+ DeleteEntry(ai))
138+func ag (R,ah) = (R :+ DeleteEntry(ah))
142139
143140
144-func aj (D) = {
145- let ag = T(D)
146- let X = ag
147- let Y = size(X)
148- let Z = nil
149- func aa (ab,ac) = if ((ac >= Y))
150- then ab
151- else ah(ab, X[ac])
141+func ai (C) = {
142+ let af = S(C)
143+ let W = af
144+ let X = size(W)
145+ let Y = nil
146+ func Z (aa,ab) = if ((ab >= X))
147+ then aa
148+ else ag(aa, W[ab])
152149
153- func ad (ab,ac) = if ((ac >= Y))
154- then ab
150+ func ac (aa,ab) = if ((ab >= X))
151+ then aa
155152 else throw("List size exceeds 5")
156153
157- ad(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5)
154+ ac(Z(Z(Z(Z(Z(Y, 0), 1), 2), 3), 4), 5)
158155 }
159156
160157
161-func ak (al,U,am,an) = {
162- let J = C(U, al)
163- let ao = H(U, al)
164- let ap = if (!(N(al)))
165- then f((("Address: " + al) + " not in Admin list"))
166- else if ((ao == 1))
167- then f((J + " you already voted"))
158+func aj (ak,T,al,am) = {
159+ let I = B(T, ak)
160+ let an = G(T, ak)
161+ let ao = if (!(M(ak)))
162+ then f((("Address: " + ak) + " not in Admin list"))
163+ else if ((an == 1))
164+ then f((I + " you already voted"))
168165 else unit
169- if ((ap == ap))
166+ if ((ao == ao))
170167 then {
171- let ag = af(U)
172- if (((ag + 1) >= am))
168+ let af = ae(T)
169+ if (((af + 1) >= al))
173170 then {
174- let aq = aj(U)
175- (aq ++ an)
171+ let ap = ai(T)
172+ (ap ++ am)
176173 }
177- else [IntegerEntry(J, 1)]
174+ else [IntegerEntry(I, 1)]
178175 }
179176 else throw("Strict value is not equal to itself.")
180177 }
181178
182179
183-func ar () = {
184- let as = valueOrElse(getInteger(this, j), 0)
185- let at = fraction(as, 1, e)
186- let au = (v - at)
187- max([0, (u * au)])
180+func aq () = {
181+ let ar = valueOrElse(getInteger(this, j), 0)
182+ let as = fraction(ar, 1, e)
183+ let at = (v - as)
184+ max([0, (u * at)])
188185 }
189186
190187
191-func av () = {
192- let aw = (r + ar())
193- let ax = {
194- let L = t
195- if ($isInstanceOf(L, "Unit"))
188+func au () = {
189+ let av = (r + aq())
190+ let aw = {
191+ let K = t
192+ if ($isInstanceOf(K, "Unit"))
196193 then {
197- let ay = L
198- min([aw, wavesBalance(this).available])
194+ let ax = K
195+ min([av, wavesBalance(this).available])
199196 }
200- else if ($isInstanceOf(L, "ByteVector"))
197+ else if ($isInstanceOf(K, "ByteVector"))
201198 then {
202- let az = L
203- min([aw, assetBalance(this, az)])
199+ let ay = K
200+ min([av, assetBalance(this, ay)])
204201 }
205202 else throw("Match error")
206203 }
207204 if ((q == 0))
208205 then 0
209- else ax
206+ else aw
210207 }
211208
212209
213-func aA () = if ((q != 0))
214- then fraction(av(), c, q)
210+func az () = if ((q != 0))
211+ then fraction(au(), c, q)
215212 else (1 * c)
216213
217214
218-func aB (aC,n) = {
219- let aD = [if ((size(aC.payments) == 1))
215+func aA (n) = valueOrElse(getInteger(this, m(n)), 0)
216+
217+
218+func aB (n) = {
219+ let aC = aA(n)
220+ let aD = fraction(aC, az(), c)
221+ if ((az() > (aD * c)))
222+ then 0
223+ else aD
224+ }
225+
226+
227+func aE (aF,n) = {
228+ let aG = [if ((size(aF.payments) == 1))
220229 then true
221- else f("should include 1 payment"), if ((aC.payments[0].assetId == t))
230+ else f("should include 1 payment"), if ((aF.payments[0].assetId == t))
222231 then true
223- else f(("payment should be in " + s)), if ((aC.payments[0].amount > 0))
232+ else f(("payment should be in " + s)), if ((aF.payments[0].amount > 0))
224233 then true
225234 else "payment amount should be greater than 0"]
226- if ((aD == aD))
235+ if ((aG == aG))
227236 then {
228- let aE = aC.payments[0].amount
229- let aF = fraction(aE, c, aA())
230- let aG = w(n)
231- let aH = valueOrElse(getInteger(this, p(n)), 0)
232- let aI = (q + aF)
233- let aJ = (r + aE)
234- let aK = (aG + aF)
235- let aL = (aH + aE)
236- let aM = if ((q == 0))
237+ let aH = aF.payments[0].amount
238+ let aI = fraction(aH, c, az())
239+ let aC = aA(n)
240+ let aJ = valueOrElse(getInteger(this, p(n)), 0)
241+ let aK = (q + aI)
242+ let aL = (r + aH)
243+ let aM = (aC + aI)
244+ let aN = (aJ + aH)
245+ let aO = if ((q == 0))
237246 then [IntegerEntry(j, height)]
238247 else nil
239- ([IntegerEntry(k, aI), IntegerEntry(l, aJ), IntegerEntry(m(n), aK), IntegerEntry(p(n), aL)] ++ aM)
248+ ([IntegerEntry(k, aK), IntegerEntry(l, aL), IntegerEntry(m(n), aM), IntegerEntry(p(n), aN)] ++ aO)
240249 }
241250 else throw("Strict value is not equal to itself.")
242251 }
243252
244253
245-func aN (aC,aO) = {
246- let n = toString(aC.caller)
247- let aG = w(n)
248- let aP = [if ((aO > 0))
254+func aP (aF,aQ) = {
255+ let n = toString(aF.caller)
256+ let aC = aA(n)
257+ let aR = [if ((aQ > 0))
249258 then true
250- else f("amount should be more than 0"), if ((aG >= aO))
259+ else f("amount should be more than 0"), if ((aC >= aQ))
251260 then true
252- else f((("cannot withdraw more than available (" + toString(aG)) + ")"))]
253- if ((aP == aP))
261+ else f((("cannot withdraw more than available (" + toString(aC)) + ")"))]
262+ if ((aR == aR))
254263 then {
255- let aK = (aG - aO)
256- let aQ = fraction(aO, aA(), c)
257- let aI = (q - aO)
258- let aJ = fraction(aI, aA(), c)
259- let aR = valueOrElse(getInteger(this, o(n)), 0)
260- let aS = (aR + aQ)
261-[IntegerEntry(k, aI), IntegerEntry(l, aJ), IntegerEntry(m(n), aK), IntegerEntry(o(n), aS), IntegerEntry(j, height), ScriptTransfer(aC.caller, aQ, t)]
264+ let aM = (aC - aQ)
265+ let aS = fraction(aQ, az(), c)
266+ let aK = (q - aQ)
267+ let aL = fraction(aK, az(), c)
268+ let aT = valueOrElse(getInteger(this, o(n)), 0)
269+ let aU = (aT + aS)
270+[IntegerEntry(k, aK), IntegerEntry(l, aL), IntegerEntry(m(n), aM), IntegerEntry(o(n), aU), IntegerEntry(j, height), ScriptTransfer(aF.caller, aS, t)]
262271 }
263272 else throw("Strict value is not equal to itself.")
264273 }
265274
266275
267-@Callable(aC)
268-func setEmissionPerBlock (aT) = {
269- let aP = [if ((aC.caller == this))
276+@Callable(aF)
277+func setEmissionPerBlock (aV) = {
278+ let aR = [if ((aF.caller == this))
270279 then true
271280 else f("permission denied")]
272- if ((aP == aP))
273- then [IntegerEntry(l, av()), IntegerEntry(j, height), IntegerEntry(i, max([0, aT]))]
281+ if ((aR == aR))
282+ then [IntegerEntry(l, au()), IntegerEntry(j, height), IntegerEntry(i, max([0, aV]))]
274283 else throw("Strict value is not equal to itself.")
275284 }
276285
277286
278287
279-@Callable(aC)
280-func stake () = aB(aC, toString(aC.caller))
288+@Callable(aF)
289+func stake () = aE(aF, toString(aF.caller))
281290
282291
283292
284-@Callable(aC)
293+@Callable(aF)
285294 func stakeFor (n) = {
286- let aP = [if ((size(fromBase58String(n)) == d))
295+ let aR = [if ((size(fromBase58String(n)) == d))
287296 then true
288297 else f("address is not valid")]
289- if ((aP == aP))
290- then aB(aC, n)
298+ if ((aR == aR))
299+ then aE(aF, n)
291300 else throw("Strict value is not equal to itself.")
292301 }
293302
294303
295304
296-@Callable(aC)
297-func withdraw (aQ) = {
298- let n = toString(aC.caller)
299- let aG = w(n)
300- let aU = fraction(aQ, c, aA())
301- let aV = fraction(aG, aA(), c)
302- let aP = [if ((aQ > 0))
305+@Callable(aF)
306+func withdraw (aS) = {
307+ let n = toString(aF.caller)
308+ let aC = aA(n)
309+ let aW = fraction(aS, c, az())
310+ let aD = aB(n)
311+ let aR = [if ((aS > 0))
303312 then true
304- else f("withdraw amount should be more than 0"), if ((aV >= aQ))
313+ else f("withdraw amount should be more than 0"), if ((aD >= aS))
305314 then true
306- else f((("cannot withdraw more than available (" + toString(aV)) + ")"))]
307- if ((aP == aP))
308- then {
309- let aW = aN(aC, aU)
310- aW
311- }
315+ else f((("cannot withdraw more than available (" + toString(aD)) + ")"))]
316+ if ((aR == aR))
317+ then aP(aF, aW)
312318 else throw("Strict value is not equal to itself.")
313319 }
314320
315321
316322
317-@Callable(aC)
323+@Callable(aF)
318324 func getUserAssetsREADONLY (n) = {
319- let aG = w(n)
320- let aV = fraction(aG, aA(), c)
321- let aH = valueOrElse(getInteger(this, p(n)), 0)
322- let aR = valueOrElse(getInteger(this, o(n)), 0)
323- $Tuple2(nil, $Tuple5(aG, aV, aA(), aH, aR))
325+ let aC = aA(n)
326+ let aD = aB(n)
327+ let aJ = valueOrElse(getInteger(this, p(n)), 0)
328+ let aT = valueOrElse(getInteger(this, o(n)), 0)
329+ $Tuple2(nil, $Tuple5(aC, aD, az(), aJ, aT))
324330 }
325331
326332
327333
328-@Callable(aC)
329-func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(q, av(), aA()))
334+@Callable(aF)
335+func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple3(q, au(), az()))
330336
331337
332338
333-@Callable(aC)
334-func voteForTxId (B) = {
335- let al = toBase58String(aC.caller.bytes)
336- let U = A(B)
337- let S = [StringEntry(G(), B)]
338- let aX = getString(this, G())
339- let ap = [if ((size(fromBase58String(B)) == z))
339+@Callable(aF)
340+func voteForTxId (A) = {
341+ let ak = toBase58String(aF.caller.bytes)
342+ let T = z(A)
343+ let R = [StringEntry(F(), A)]
344+ let aX = getString(this, F())
345+ let ao = [if ((size(fromBase58String(A)) == y))
340346 then true
341- else f((B + " is not valid txId")), if (if ((aX == unit))
347+ else f((A + " is not valid txId")), if (if ((aX == unit))
342348 then true
343- else (value(aX) != B))
349+ else (value(aX) != A))
344350 then true
345- else f((B + " is already allowed"))]
346- if ((ap == ap))
347- then ak(al, U, y, S)
351+ else f((A + " is already allowed"))]
352+ if ((ao == ao))
353+ then aj(ak, T, x, R)
348354 else throw("Strict value is not equal to itself.")
349355 }
350356
351357
352358 @Verifier(aY)
353359 func aZ () = {
354- let ba = (aY.id == fromBase58String(valueOrElse(getString(this, G()), "")))
355- let bb = if ((size(K()) >= y))
360+ let ba = (aY.id == fromBase58String(valueOrElse(getString(this, F()), "")))
361+ let bb = if ((size(J()) >= x))
356362 then false
357363 else sigVerify(aY.bodyBytes, aY.proofs[0], aY.senderPublicKey)
358364 if (ba)
359365 then true
360366 else bb
361367 }
362368

github/deemru/w8io/169f3d6 
141.66 ms