tx · 73hjnEhyV2ymvnqzgk9ZRiyehmwq1qR7KKTUjUBwbvLE

3P9vKqQKjUdmpXAfiWau8krREYAY1Xr69pE:  -0.01900000 Waves

2023.04.06 15:50 [3588357] smart account 3P9vKqQKjUdmpXAfiWau8krREYAY1Xr69pE > SELF 0.00000000 Waves

{ "type": 13, "id": "73hjnEhyV2ymvnqzgk9ZRiyehmwq1qR7KKTUjUBwbvLE", "fee": 1900000, "feeAssetId": null, "timestamp": 1680787540403, "version": 1, "sender": "3P9vKqQKjUdmpXAfiWau8krREYAY1Xr69pE", "senderPublicKey": "7AUMX54ukYMYvPmma7yoFf5NjZhs4Bu5nz3Ez9EV8sur", "proofs": [ "54KnumZ4Ho3UiiHTEFMYDAQmpM2Jf4CRNMqLEQmsr19MP2SHb1nZSe1qJtcHLHaHxVo2ocVbjYyD5bZeDdSfJjVb" ], "script": "base64:BgIrCAISBwoFAQgIAQESBQoDCAgIEgASAwoBCBIDCgEIEgYKBAgIAQESAwoBCEIAA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAKV0FWRVNJRFNUUgIFV0FWRVMAB1dBVkVTSUQJANkEAQUKV0FWRVNJRFNUUgEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9NYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRTdHJPckVsc2UDB2FkZHJlc3MDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUHYWRkcmVzcwUDa2V5BQpkZWZhdWx0VmFsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgIPTWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEQZ2V0QWRkcmVzc09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMFA2tleQkArAICCQCsAgICFUZhaWwgdG8gY29udmVydCB0aGlzLgUDa2V5AhMgdmFsdWUgaW50byBBZGRyZXNzAQlhc0FueUxpc3QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55TGlzdAUHJG1hdGNoMAUKdmFsQW55TGlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFpBQckbWF0Y2gwBQFpCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQthc0J5dGVWZWNvdAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFpBQckbWF0Y2gwBQFpCQACAQIcZmFpbCB0byBjYXN0IGludG8gQnl0ZVZlY3RvcgEVdmFsaWRhdGVBZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyBAdhZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAh1mYWlsIHRvIGNvbnZlcnQgaW50byBhZGRyZXNzIAUKYWRkcmVzc1N0cgMJAGYCAAAICQDvBwEFB2FkZHJlc3MJYXZhaWxhYmxlCQEFdGhyb3cABQphZGRyZXNzU3RyAQ9rZXlOb2RlUmVnaXN0cnkBB2FkZHJlc3MJAKwCAgIEJXNfXwUHYWRkcmVzcwEUa2V5Tm9kZVJld2FyZHNUb3RhbHMBB2FkZHJlc3MJAKwCAgIOJXMlc19fdG90YWxzX18FB2FkZHJlc3MBE2tleUFwcHJvdmVkTm9kZUxpc3QAAhQlc19fYXBwcm92ZWROb2RlTGlzdAEQa2V5RGVwb3NpdEFtb3VudAACGCVzJXNfX2NmZ19fZGVwb3NpdEFtb3VudAEVa2V5TmV1dHJpbm9BZGRyZXNzU3RyAAIaJXMlc19fY2ZnX19uZXV0cmlub0FkZHJlc3MBF2tleU1hc3Rlck5vZGVBZGRyZXNzU3RyAAIiJXMlc19fY2ZnX19tYWluTmV1dHJpbm9Ob2RlQWRkcmVzcwERa2V5UHJvdG9jb2xQYXJ0WDYAAhklcyVzX19jZmdfX3Byb3RvY29sUGFydFg2ARNrZXlCZW5pZmljYXJ5UGFydFg2AAIbJXMlc19fY2ZnX19iZW5pZmljYXJ5UGFydFg2ARZrZXlNaW5EaXN0cmlidXRlQW1vdW50AAIeJXMlc19fY2ZnX19taW5EaXN0cmlidXRlQW1vdW50ARxrZXlTd29wZmlVc2R0VXNkblBvb2xBZGRyZXNzAAIkJXMlc19fY2ZnX19zd29wZmlVc2R0VXNkblBvb2xBZGRyZXNzARBrZXlXeFN3YXBBZGRyZXNzAAIYJXMlc19fY2ZnX193eFN3YXBBZGRyZXNzARFrZXlTYXZpbmdzQWRkcmVzcwACGSVzJXNfX2NmZ19fc2F2aW5nc0FkZHJlc3MBFWtleUJlbmVmaWNpYXJ5QWRkcmVzcwACHSVzJXNfX2NmZ19fYmVuZWZpY2lhcnlBZGRyZXNzABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAEAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAACABRJZHhDb250cm9sQ2ZnUnBkRGFwcAADABVJZHhDb250cm9sQ2ZnTWF0aERhcHAABAAcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAAFABVJZHhDb250cm9sQ2ZnUmVzdERhcHAABgAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAABwAcSWR4Q29udHJvbENmZ05zYnRTdGFraW5nRGFwcAAIABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAkAHElkeENvbnRyb2xDZmdTdXJmU3Rha2luZ0RhcHAACgAgSWR4Q29udHJvbENmZ0duc2J0Q29udHJvbGxlckRhcHAACwAXSWR4Q29udHJvbENmZ1Jlc3RWMkRhcHAADAAbSWR4Q29udHJvbENmZ0dvdmVybmFuY2VEYXBwAA0BEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnAQ5rZXlVc2RuQXNzZXRJZAACEW5ldXRyaW5vX2Fzc2V0X2lkARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM1A1QmZkNThQUGZOdkJNMkh5OFFmYmNEcU1lTnR6ZzdLZlAACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAQbmV1dHJpbm9Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAADnVzZG5Bc3NldElkU3RyCQEMZ2V0U3RyT3JFbHNlAwUQbmV1dHJpbm9Db250cmFjdAkBDmtleVVzZG5Bc3NldElkAAIsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAAC3VzZG5Bc3NldElkCQDZBAEFDnVzZG5Bc3NldElkU3RyAAxuUmVnSWR4VHhBZGQAAQAQblJlZ0lkeEhlaWdodEFkZAACAA5uUmVnSWR4VGltZUFkZAADAA5uUmVnSWR4RGVwb0FtdAAEABJuUmVnSWR4RGVwb0FtdExlZnQABQANblJlZ0lkeFN0YXR1cwAGABluUmVnSWR4U3RhdHVzQ2hhbmdlSGVpZ2h0AAcAF25SZWdJZHhTdGF0dXNDaGFuZ2VUaW1lAAgBEGZvcm1hdERlcG9zaXRBZGQEB3R4SWRTdHINZGVwb3NpdEFtb3VudBZyZW1haW5pbmdEZXBvc2l0QW1vdW50BnN0YXR1cwkAuQkCCQDMCAICECVzJWQlZCVkJWQlcyVkJWQJAMwIAgUHdHhJZFN0cgkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQ1kZXBvc2l0QW1vdW50CQDMCAIJAKQDAQUWcmVtYWluaW5nRGVwb3NpdEFtb3VudAkAzAgCBQZzdGF0dXMJAMwIAgIBMAkAzAgCAgEwBQNuaWwFA1NFUAEZZm9ybWF0RGVwb3NpdENoYW5nZVN0YXR1cwIFb3JpZ1MJbmV3U3RhdHVzBARvcmlnCQC1CQIFBW9yaWdTBQNTRVAJALkJAgkAzAgCAhAlcyVkJWQlZCVkJXMlZCVkCQDMCAIJAJEDAgUEb3JpZwUMblJlZ0lkeFR4QWRkCQDMCAIJAJEDAgUEb3JpZwUQblJlZ0lkeEhlaWdodEFkZAkAzAgCCQCRAwIFBG9yaWcFDm5SZWdJZHhUaW1lQWRkCQDMCAIJAJEDAgUEb3JpZwUOblJlZ0lkeERlcG9BbXQJAMwIAgkAkQMCBQRvcmlnBRJuUmVnSWR4RGVwb0FtdExlZnQJAMwIAgUJbmV3U3RhdHVzCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsBQNTRVABEGtleVJld2FyZEhpc3RvcnkCC25vZGVBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIHaGlzdG9yeQkAzAgCCQClCAEFC25vZGVBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABEWRhdGFSZXdhcmRIaXN0b3J5BRB3YXZlc0Ftb3VudFRvdGFsDmJlbmVmaWNpYXJ5QW10C3Byb3RvY29sQW10EHByb3RvY29sQW10UGFydDEQcHJvdG9jb2xBbXRQYXJ0MgkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFEHdhdmVzQW1vdW50VG90YWwJAMwIAgkApAMBBQ5iZW5lZmljaWFyeUFtdAkAzAgCCQCkAwEFC3Byb3RvY29sQW10CQDMCAIJAKQDAQUQcHJvdG9jb2xBbXRQYXJ0MQkAzAgCCQCkAwEFEHByb3RvY29sQW10UGFydDIFA25pbAUDU0VQARJSZXdhcmRIaXN0b3J5RW50cnkHC25vZGVBZGRyZXNzBHR4SWQIbWluZWRBbXQOYmVuZWZpY2lhcnlBbXQLcHJvdG9jb2xBbXQMcHJvdG9jb2xBbXQxDHByb3RvY29sQW10MgkBC1N0cmluZ0VudHJ5AgkBEGtleVJld2FyZEhpc3RvcnkCBQtub2RlQWRkcmVzcwUEdHhJZAkBEWRhdGFSZXdhcmRIaXN0b3J5BQUIbWluZWRBbXQFDmJlbmVmaWNpYXJ5QW10BQtwcm90b2NvbEFtdAUMcHJvdG9jb2xBbXQxBQxwcm90b2NvbEFtdDIBEGRhdGFSZXdhcmRUb3RhbHMFCG1pbmVkQW10DmJlbmVmaWNpYXJ5QW10C3Byb3RvY29sQW10EHByb3RvY29sQW10UGFydDEQcHJvdG9jb2xBbXRQYXJ0MgkAuQkCCQDMCAICCiVkJWQlZCVkJWQJAMwIAgkApAMBBQhtaW5lZEFtdAkAzAgCCQCkAwEFDmJlbmVmaWNpYXJ5QW10CQDMCAIJAKQDAQULcHJvdG9jb2xBbXQJAMwIAgkApAMBBRBwcm90b2NvbEFtdFBhcnQxCQDMCAIJAKQDAQUQcHJvdG9jb2xBbXRQYXJ0MgUDbmlsBQNTRVABEVJld2FyZFRvdGFsc0VudHJ5BgVtaW5lcghtaW5lZEFtdA5iZW5lZmljaWFyeUFtdAtwcm90b2NvbEFtdBBwcm90b2NvbEFtdFBhcnQxEHByb3RvY29sQW10UGFydDIEFG5vZGVSZXdhcmRzVG90YWxzS0VZCQEUa2V5Tm9kZVJld2FyZHNUb3RhbHMBCQClCAEFBW1pbmVyBBBub2RlUmV3YXJkc0FycmF5CQC1CQIJAQxnZXRTdHJPckVsc2UDBQR0aGlzBRRub2RlUmV3YXJkc1RvdGFsc0tFWQkBEGRhdGFSZXdhcmRUb3RhbHMFAAAAAAAAAAAAAAUDU0VQBAtuZXdNaW5lZEFtdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBRBub2RlUmV3YXJkc0FycmF5AAEFCG1pbmVkQW10BBFuZXdCZW5lZmljaWFyeUFtdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBRBub2RlUmV3YXJkc0FycmF5AAIFDmJlbmVmaWNpYXJ5QW10BA5uZXdQcm90b2NvbEFtdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBRBub2RlUmV3YXJkc0FycmF5AAMFC3Byb3RvY29sQW10BBNuZXdQcm90b2NvbEFtdFBhcnQxCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFEG5vZGVSZXdhcmRzQXJyYXkABAUQcHJvdG9jb2xBbXRQYXJ0MQQTbmV3UHJvdG9jb2xBbXRQYXJ0MgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBRBub2RlUmV3YXJkc0FycmF5AAUFEHByb3RvY29sQW10UGFydDIJAQtTdHJpbmdFbnRyeQIFFG5vZGVSZXdhcmRzVG90YWxzS0VZCQEQZGF0YVJld2FyZFRvdGFscwUFC25ld01pbmVkQW10BRFuZXdCZW5lZmljaWFyeUFtdAUObmV3UHJvdG9jb2xBbXQFE25ld1Byb3RvY29sQW10UGFydDEFE25ld1Byb3RvY29sQW10UGFydDIBFHJlc29sdmVCZW5lZmljaWFyaWVzAgxtaW5lckFkZHJlc3MUYmVuZWZpY2lhcnlGcm9tUGFyYW0EGWJlbmVmaWNpYXJ5RnJvbU1pbmVyU3RhdGUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwCBQxtaW5lckFkZHJlc3MJARVrZXlCZW5lZmljaWFyeUFkZHJlc3MAAwkAAAIJAPEHAQUMbWluZXJBZGRyZXNzBQR1bml0BRRiZW5lZmljaWFyeUZyb21QYXJhbQUZYmVuZWZpY2lhcnlGcm9tTWluZXJTdGF0ZQEdcmVhZE5vZGVEYXRhQW5kVmFsaWRhdGVTdGF0dXMCCG5vZGVBZGRyDmV4cGVjdGVkU3RhdHVzBAtub2RlRGF0YU9wdAkAoggBCQEPa2V5Tm9kZVJlZ2lzdHJ5AQUIbm9kZUFkZHIDCQEBIQEJAQlpc0RlZmluZWQBBQtub2RlRGF0YU9wdAkAAgEJAKwCAgINVW5rbm93biBOb2RlIAUIbm9kZUFkZHIEC25vZGVEYXRhU3RyCQEFdmFsdWUBBQtub2RlRGF0YU9wdAQIbm9kZURhdGEJALUJAgULbm9kZURhdGFTdHIFA1NFUAQKbm9kZVN0YXR1cwMJAGcCCQCQAwEFCG5vZGVEYXRhAAkJAJEDAgUIbm9kZURhdGEFDW5SZWdJZHhTdGF0dXMCB1BFTkRJTkcDCQECIT0CBQpub2RlU3RhdHVzBQ5leHBlY3RlZFN0YXR1cwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgVOb2RlIAUIbm9kZUFkZHICEiBzdGF0dXMgc2hvdWxkIGJlIAUOZXhwZWN0ZWRTdGF0dXMCDywgYnV0IGFjdHVhbGx5IAUKbm9kZVN0YXR1cwULbm9kZURhdGFTdHIHAWkBDWNvbnN0cnVjdG9yVjEFDWRlcG9zaXRBbW91bnQSbmV1dHJpbm9BZGRyZXNzU3RyFG1hc3Rlck5vZGVBZGRyZXNzU3RyDnByb3RvY29sUGFydFg2EGJlbmlmaWNhcnlQYXJ0WDYDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQDCQBmAgAABQ1kZXBvc2l0QW1vdW50CQACAQIcZGVwb3NpdEFtb3VudCBsZXNzIHRoZW4gemVybwMJAGYCAAAFDnByb3RvY29sUGFydFg2CQACAQIdcHJvdG9jb2xQYXJ0WDYgbGVzcyB0aGVuIHplcm8DCQBmAgAABRBiZW5pZmljYXJ5UGFydFg2CQACAQIfYmVuaWZpY2FyeVBhcnRYNiBsZXNzIHRoZW4gemVybwMJAQIhPQIJAGQCBQ5wcm90b2NvbFBhcnRYNgUQYmVuaWZpY2FyeVBhcnRYNgUFTVVMVDYJAAIBAhNwYXJ0cyBzdW0gbXVzdCBiZSAxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5RGVwb3NpdEFtb3VudAAFDWRlcG9zaXRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleU5ldXRyaW5vQWRkcmVzc1N0cgAJARV2YWxpZGF0ZUFkZHJlc3NPckZhaWwBBRJuZXV0cmlub0FkZHJlc3NTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF2tleU1hc3Rlck5vZGVBZGRyZXNzU3RyAAkBFXZhbGlkYXRlQWRkcmVzc09yRmFpbAEFFG1hc3Rlck5vZGVBZGRyZXNzU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERa2V5UHJvdG9jb2xQYXJ0WDYABQ5wcm90b2NvbFBhcnRYNgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleUJlbmlmaWNhcnlQYXJ0WDYABRBiZW5pZmljYXJ5UGFydFg2BQNuaWwBaQENY29uc3RydWN0b3JWMgMQc3dvcGZpQWRkcmVzc1N0chFjb250cm9sQWRkcmVzc1N0chFzYXZpbmdzQWRkcmVzc1N0cgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEca2V5U3dvcGZpVXNkdFVzZG5Qb29sQWRkcmVzcwAJARV2YWxpZGF0ZUFkZHJlc3NPckZhaWwBBRBzd29wZmlBZGRyZXNzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlDb250cm9sQWRkcmVzcwAJARV2YWxpZGF0ZUFkZHJlc3NPckZhaWwBBRFjb250cm9sQWRkcmVzc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5U2F2aW5nc0FkZHJlc3MACQEVdmFsaWRhdGVBZGRyZXNzT3JGYWlsAQURc2F2aW5nc0FkZHJlc3NTdHIFA25pbAFpARFzdW1iaXRBcHBsaWNhdGlvbgADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiBleGFjdCAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAMJAQIhPQIIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCQACAQIiZGFwcCB0byBkYXBwIGNhbGxzIGFyZSBub3QgYWxsb3dlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2RlcG9zaXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQELdmFsdWVPckVsc2UCCAUDcG10B2Fzc2V0SWQFB1dBVkVTSUQEFWV4cGVjdGVkRGVwb3NpdEFtb3VudAkBDGdldEludE9yRmFpbAEJARBrZXlEZXBvc2l0QW1vdW50AAQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAtub2RlQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIED25vZGVSZWdpc3RyeUtFWQkBD2tleU5vZGVSZWdpc3RyeQEFC25vZGVBZGRyZXNzAwkBAiE9AgUKcG10QXNzZXRJZAUHV0FWRVNJRAkAAgECIm9ubHkgV2F2ZXMgY2FuIGJlIHVzZWQgZm9yIGRlcG9zaXQDCQECIT0CBQdkZXBvc2l0BRVleHBlY3RlZERlcG9zaXRBbW91bnQJAAIBCQCsAgIJAKwCAgIIZXhhY3RseSAJAKQDAQUVZXhwZWN0ZWREZXBvc2l0QW1vdW50AhYgV2F2ZWxldHMgYXJlIGV4cGVjdGVkAwkBAiE9AgkBDGdldFN0ck9yRWxzZQMFBHRoaXMFD25vZGVSZWdpc3RyeUtFWQIAAgAJAAIBAhx5b3VyIG5vZGUgYWxyZWFkeSByZWdpc3RlcmVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFD25vZGVSZWdpc3RyeUtFWQkBEGZvcm1hdERlcG9zaXRBZGQEBQR0eElkBQdkZXBvc2l0BQdkZXBvc2l0AgdQRU5ESU5HBQNuaWwBaQEVZGlzdHJpYnV0ZU1pbmVyUmV3YXJkARViZW5lZmljaWFyeUFkZHJlc3NTdHIEE21pbkRpc3RyaWJ1dGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFmtleU1pbkRpc3RyaWJ1dGVBbW91bnQACQBoAgAYBQVNVUxUOAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECIGV4YWN0IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkAwkBAiE9AggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIJAAIBAiJkYXBwIHRvIGRhcHAgY2FsbHMgYXJlIG5vdCBhbGxvd2VkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBC3ZhbHVlT3JFbHNlAggFA3BtdAdhc3NldElkBQdXQVZFU0lEBAZmZWVBbXQIBQFpA2ZlZQQKZmVlQXNzZXRJZAkBC3ZhbHVlT3JFbHNlAggFAWkKZmVlQXNzZXRJZAUHV0FWRVNJRAQKY2FsbFJld2FyZAkAaAIFBmZlZUFtdAADBAhtaW5lZEFtdAkAZQIIBQNwbXQGYW1vdW50BQpjYWxsUmV3YXJkAwkBAiE9AggFA3BtdAZhbW91bnQFE21pbkRpc3RyaWJ1dGVBbW91bnQJAAIBCQCsAgIJAKwCAgIfYXR0YWNoZWQgcGF5bWVudCBtdXN0IGJlIGV4YWN0IAkApAMBBRNtaW5EaXN0cmlidXRlQW1vdW50AgkgV2F2ZWxldHMDCQECIT0CBQpwbXRBc3NldElkBQdXQVZFU0lECQACAQIhb25seSBXYXZlcyBjYW4gYmUgdXNlZCBpbiBwYXltZW50AwkBAiE9AgUKZmVlQXNzZXRJZAUHV0FWRVNJRAkAAgECHm9ubHkgV2F2ZXMgY2FuIGJlIHVzZWQgaW4gZmVlcwMJAQIhPQIFBmZlZUFtdAkAaQIJAGgCAAUFBU1VTFQ4AOgHCQACAQIgZmVlIGFtb3VudCBjb3VsZG4ndCBleGNlZWQgMC4wMDUED25ldXRyaW5vQWRkcmVzcwkBEGdldEFkZHJlc3NPckZhaWwBCQEVa2V5TmV1dHJpbm9BZGRyZXNzU3RyAAQRbWFzdGVyTm9kZUFkZHJlc3MJARBnZXRBZGRyZXNzT3JGYWlsAQkBF2tleU1hc3Rlck5vZGVBZGRyZXNzU3RyAAQMbWluZXJBZGRyZXNzCAUBaQZjYWxsZXIEFGJlbmVmaWNpYXJ5RnJvbVBhcmFtCQERQGV4dHJOYXRpdmUoMTA2MikBBRViZW5lZmljaWFyeUFkZHJlc3NTdHIEEmJlbmVmaWNpYXJ5QWRkcmVzcwkBFHJlc29sdmVCZW5lZmljaWFyaWVzAgUMbWluZXJBZGRyZXNzBRRiZW5lZmljaWFyeUZyb21QYXJhbQQQdHhSZXdhcmRSZWNlaXZlcgUUYmVuZWZpY2lhcnlGcm9tUGFyYW0EDHByb3RvY29sUGFydAkBDGdldEludE9yRmFpbAEJARFrZXlQcm90b2NvbFBhcnRYNgAED2JlbmVmaWNpYXJ5UGFydAkBDGdldEludE9yRmFpbAEJARNrZXlCZW5pZmljYXJ5UGFydFg2AAQOYmVuZWZpY2lhcnlBbXQJAGsDBQhtaW5lZEFtdAUPYmVuZWZpY2lhcnlQYXJ0BQVNVUxUNgQLcHJvdG9jb2xBbXQJAGUCBQhtaW5lZEFtdAUOYmVuZWZpY2lhcnlBbXQECmJ1eUJhY2tBbXQJAGgCAHgFBU1VTFQ4BA5zYXZpbmdzQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRWxzZQMFBHRoaXMJARFrZXlTYXZpbmdzQWRkcmVzcwACIzNQQzdEQmltYXV5S3l0eDh0WGhLbzV1MkVDYjZGc25kWUtIBApzYXZpbmdzQW10CQEFYXNJbnQBCQD8BwQFDnNhdmluZ3NBZGRyZXNzAgh3aXRoZHJhdwkAzAgCBQpidXlCYWNrQW10BQNuaWwFA25pbAQMd3hBc3NldElkU3RyAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgQNd3hTd2FwQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRWxzZQMFBHRoaXMJARBrZXlXeFN3YXBBZGRyZXNzAAIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMECnN3YXBSZXN1bHQJAPwHBAUNd3hTd2FwQWRkcmVzcwIEc3dhcAkAzAgCAAEJAMwIAgUMd3hBc3NldElkU3RyCQDMCAIJAKUIAQUQbmV1dHJpbm9Db250cmFjdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQpidXlCYWNrQW10BQNuaWwDCQAAAgUKc3dhcFJlc3VsdAUKc3dhcFJlc3VsdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRJiZW5lZmljaWFyeUFkZHJlc3MFDmJlbmVmaWNpYXJ5QW10BQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEG5ldXRyaW5vQ29udHJhY3QFC3Byb3RvY29sQW10BQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEHR4UmV3YXJkUmVjZWl2ZXIFCmNhbGxSZXdhcmQFBHVuaXQJAMwIAgkBElJld2FyZEhpc3RvcnlFbnRyeQcFDG1pbmVyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUIbWluZWRBbXQFDmJlbmVmaWNpYXJ5QW10BQtwcm90b2NvbEFtdAULcHJvdG9jb2xBbXQAAAkAzAgCCQERUmV3YXJkVG90YWxzRW50cnkGBQxtaW5lckFkZHJlc3MFCG1pbmVkQW10BQ5iZW5lZmljaWFyeUFtdAULcHJvdG9jb2xBbXQFC3Byb3RvY29sQW10AAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARp2YWxpZGF0ZUFuZEFwcHJvdmVMZWFzaW5ncwEGbkxpc3RTBAVuSWR4cwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHBQNuaWwEBW5MaXN0CQC1CQIFBm5MaXN0UwUDU0VQBA1leHBlY3RlZENvdW50CQCQAwEFBW5JZHhzBA9uZXV0cmlub0FkZHJlc3MJARBnZXRBZGRyZXNzT3JGYWlsAQkBFWtleU5ldXRyaW5vQWRkcmVzc1N0cgADCQECIT0CCAUBaQZjYWxsZXIFD25ldXRyaW5vQWRkcmVzcwkAAgECKXZhbGlkYXRlQW5kQXBwcm92ZUxlYXNpbmdzIG5vdCBhdXRob3JpemVkAwkBAiE9AgkAagIJAJADAQUFbkxpc3QAAgAACQACAQIkT25seSBldmVuIG51bWJlciBvZiBub2RlcyBpcyBhbGxvd2VkAwkBAiE9AgkAkAMBBQVuTGlzdAUNZXhwZWN0ZWRDb3VudAkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQ1leHBlY3RlZENvdW50AiIgb2Ygbm9kZXMnIGFkZHJlc3NlcyBjYW4gYmUgcGFzc2VkCgEXZm9yRWFjaE5vZGVDaGFuZ2VTdGF0dXMCA2FjYwFpBAhub2RlQWRkcgkAkQMCBQVuTGlzdAUBaQQLbm9kZURhdGFTdHIJAR1yZWFkTm9kZURhdGFBbmRWYWxpZGF0ZVN0YXR1cwIFCG5vZGVBZGRyAgdQRU5ESU5HCQDNCAIFA2FjYwkBC1N0cmluZ0VudHJ5AgkBD2tleU5vZGVSZWdpc3RyeQEFCG5vZGVBZGRyCQEZZm9ybWF0RGVwb3NpdENoYW5nZVN0YXR1cwIFC25vZGVEYXRhU3RyAghBUFBST1ZFRAQRYXBwcm92ZWROb2Rlc0RhdGEKAAIkbAUFbklkeHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBF2ZvckVhY2hOb2RlQ2hhbmdlU3RhdHVzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA4CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAkAlAoCBRFhcHByb3ZlZE5vZGVzRGF0YQUDbmlsAWkBE3JlcGxhY2VBcHByb3ZlZE5vZGUEDm9sZE5vZGVBZGRyU3RyDm5ld05vZGVBZGRyU3RyCGdyb3VwTnVtDXBlbmFsdHlBbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFEG5ldXRyaW5vQ29udHJhY3QJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQECm9sZERhdGFTdHIJAR1yZWFkTm9kZURhdGFBbmRWYWxpZGF0ZVN0YXR1cwIFDm9sZE5vZGVBZGRyU3RyAghBUFBST1ZFRAQKbmV3RGF0YVN0cgkBHXJlYWROb2RlRGF0YUFuZFZhbGlkYXRlU3RhdHVzAgUObmV3Tm9kZUFkZHJTdHICB1BFTkRJTkcEEWFwcHJvdmVkTm9kZUxpc3RTCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBE2tleUFwcHJvdmVkTm9kZUxpc3QAAwkBASEBCQEIY29udGFpbnMCBRFhcHByb3ZlZE5vZGVMaXN0UwUOb2xkTm9kZUFkZHJTdHIJAAIBCQCsAgICImFwcHJvdmVkTm9kZUxpc3QgZG9lcyBub3QgY29udGFpbiAFDm9sZE5vZGVBZGRyU3RyBBB1cGRhdGVkTm9kZUxpc3RTCQC6CQIJALwJAgURYXBwcm92ZWROb2RlTGlzdFMFDm9sZE5vZGVBZGRyU3RyBQ5uZXdOb2RlQWRkclN0cgQLb2xkTm9kZUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDm9sZE5vZGVBZGRyU3RyBBJiZW5lZmljaWFyeUFkZHJlc3MJARRyZXNvbHZlQmVuZWZpY2lhcmllcwIFC29sZE5vZGVBZGRyBQtvbGROb2RlQWRkcgQKZGVwb0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUKb2xkRGF0YVN0cgUDU0VQBQ5uUmVnSWR4RGVwb0FtdAQHYWN0aW9ucwkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5QXBwcm92ZWROb2RlTGlzdAAFEHVwZGF0ZWROb2RlTGlzdFMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleU5vZGVSZWdpc3RyeQEFDm9sZE5vZGVBZGRyU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlOb2RlUmVnaXN0cnkBBQ5uZXdOb2RlQWRkclN0cgkBGWZvcm1hdERlcG9zaXRDaGFuZ2VTdGF0dXMCBQpuZXdEYXRhU3RyAghBUFBST1ZFRAUDbmlsCQCUCgIDCQBmAgUKZGVwb0Ftb3VudAUNcGVuYWx0eUFtb3VudAkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBRJiZW5lZmljaWFyeUFkZHJlc3MJAGUCBQpkZXBvQW1vdW50BQ1wZW5hbHR5QW1vdW50BQR1bml0BQdhY3Rpb25zBQR1bml0AWkBDXJldHVybkRlcG9zaXQBDm5vZGVBZGRyZXNzU3RyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITTm8gcGF5bWVudHMgYWxsb3dlZAQNY2FsbGVyQWRkcmVzcwgFAWkGY2FsbGVyBA9ub2RlUmVnaXN0cnlLRVkJAQ9rZXlOb2RlUmVnaXN0cnkBBQ5ub2RlQWRkcmVzc1N0cgQLbm9kZURhdGFPcHQJAJ0IAgUEdGhpcwUPbm9kZVJlZ2lzdHJ5S0VZAwkBASEBCQEJaXNEZWZpbmVkAQULbm9kZURhdGFPcHQJAAIBCQCsAgICKUFkZHJlc3MgaXMgbm90IGFwcGxpZWQgYXMgbmV1dHJpbm8gbm9kZTogBQ5ub2RlQWRkcmVzc1N0cgQQYXBwcm92ZWROb2RlTGlzdAkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARNrZXlBcHByb3ZlZE5vZGVMaXN0AAMJAQhjb250YWlucwIFEGFwcHJvdmVkTm9kZUxpc3QFDm5vZGVBZGRyZXNzU3RyCQACAQJMSW1wb3NzaWJsZSB0byByZXR1cm4gZGVwb3NpdCBmcm9tIGFwcHJvdmVkIE5vZGUsIHBsZWFzZSBjb250YWN0IHN1cHBvcnQgdGVhbQQIbm9kZURhdGEJALUJAgkBBXZhbHVlAQULbm9kZURhdGFPcHQFA1NFUAQGc3RhdHVzAwkAZwIJAJADAQUIbm9kZURhdGEACQkAkQMCBQhub2RlRGF0YQUNblJlZ0lkeFN0YXR1cwIHUEVORElORwMJAQIhPQIFBnN0YXR1cwIHUEVORElORwkAAgECIkFwcGxpY2F0aW9uIHN0YXR1cyBpcyBub3QgUEVORElORyEECmRlcG9BbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhub2RlRGF0YQUOblJlZ0lkeERlcG9BbXQEC25vZGVBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ5ub2RlQWRkcmVzc1N0cgQSYmVuZWZpY2lhcnlBZGRyZXNzCQEUcmVzb2x2ZUJlbmVmaWNpYXJpZXMCBQtub2RlQWRkcmVzcwULbm9kZUFkZHJlc3MDCQEBIQEDAwkAAAIFDWNhbGxlckFkZHJlc3MFBHRoaXMGAwkBAiE9AgUSYmVuZWZpY2lhcnlBZGRyZXNzBQtub2RlQWRkcmVzcwkAAAIFDWNhbGxlckFkZHJlc3MFEmJlbmVmaWNpYXJ5QWRkcmVzcwcGAwkAAAIFEmJlbmVmaWNpYXJ5QWRkcmVzcwULbm9kZUFkZHJlc3MJAAACBQ1jYWxsZXJBZGRyZXNzBQtub2RlQWRkcmVzcwcJAAIBAiByZXR1cm5EZXBvc2l0IHBlcm1pc3Npb25zIGRlbmllZAkAzAgCCQELRGVsZXRlRW50cnkBBQ9ub2RlUmVnaXN0cnlLRVkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUSYmVuZWZpY2lhcnlBZGRyZXNzBQpkZXBvQW1vdW50BQR1bml0BQNuaWwAkMiGug==", "chainId": 87, "height": 3588357, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FZxsn7ucPK356GPvvijWgkXFbuGx4Nn3Un5c29ahxgwj Next: tyeGHVqBvsGEjbhFt1uvbbGpEBde22TJF4rmBrHLxWp Diff:
OldNewDifferences
9494 func F () = "%s%s__cfg__swopfiUsdtUsdnPoolAddress"
9595
9696
97-func G () = "%s%s__cfg__savingsAddress"
97+func G () = "%s%s__cfg__wxSwapAddress"
9898
9999
100-func H () = "%s%s__cfg__beneficiaryAddress"
100+func H () = "%s%s__cfg__savingsAddress"
101101
102102
103-let I = 1
104-
105-let J = 2
106-
107-let K = 3
108-
109-let L = 4
110-
111-let M = 5
112-
113-let N = 6
114-
115-let O = 7
116-
117-let P = 8
118-
119-let Q = 9
120-
121-let R = 10
122-
123-let S = 11
124-
125-let T = 12
126-
127-let U = 13
128-
129-func V () = "%s%s__config__controlAddress"
103+func I () = "%s%s__cfg__beneficiaryAddress"
130104
131105
132-func W () = "%s__controlConfig"
106+let J = 1
107+
108+let K = 2
109+
110+let L = 3
111+
112+let M = 4
113+
114+let N = 5
115+
116+let O = 6
117+
118+let P = 7
119+
120+let Q = 8
121+
122+let R = 9
123+
124+let S = 10
125+
126+let T = 11
127+
128+let U = 12
129+
130+let V = 13
131+
132+func W () = "%s%s__config__controlAddress"
133133
134134
135-func X () = "neutrino_asset_id"
135+func X () = "%s__controlConfig"
136136
137137
138-func Y (Z) = split_4C(k(Z, W()), a)
138+func Y () = "neutrino_asset_id"
139139
140140
141-func aa (ab,ac) = valueOrErrorMessage(addressFromString(ab[ac]), ("Control cfg doesn't contain address at index " + toString(ac)))
141+func Z (aa) = split_4C(k(aa, X()), a)
142142
143143
144-let ad = addressFromStringValue(valueOrElse(getString(this, V()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
145-
146-let ab = Y(ad)
147-
148-let ae = aa(ab, I)
149-
150-let af = h(ae, X(), "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
151-
152-let ag = fromBase58String(af)
153-
154-let ah = 1
155-
156-let ai = 2
157-
158-let aj = 3
159-
160-let ak = 4
161-
162-let al = 5
163-
164-let am = 6
165-
166-let an = 7
167-
168-let ao = 8
169-
170-func ap (aq,ar,as,at) = makeString(["%s%d%d%d%d%s%d%d", aq, toString(lastBlock.height), toString(lastBlock.timestamp), toString(ar), toString(as), at, "0", "0"], a)
144+func ab (ac,ad) = valueOrErrorMessage(addressFromString(ac[ad]), ("Control cfg doesn't contain address at index " + toString(ad)))
171145
172146
173-func au (av,aw) = {
174- let ax = split(av, a)
175- makeString(["%s%d%d%d%d%s%d%d", ax[ah], ax[ai], ax[aj], ax[ak], ax[al], aw, toString(lastBlock.height), toString(lastBlock.timestamp)], a)
147+let ae = addressFromStringValue(valueOrElse(getString(this, W()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
148+
149+let ac = Z(ae)
150+
151+let af = ab(ac, J)
152+
153+let ag = h(af, Y(), "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
154+
155+let ah = fromBase58String(ag)
156+
157+let ai = 1
158+
159+let aj = 2
160+
161+let ak = 3
162+
163+let al = 4
164+
165+let am = 5
166+
167+let an = 6
168+
169+let ao = 7
170+
171+let ap = 8
172+
173+func aq (ar,as,at,au) = makeString(["%s%d%d%d%d%s%d%d", ar, toString(lastBlock.height), toString(lastBlock.timestamp), toString(as), toString(at), au, "0", "0"], a)
174+
175+
176+func av (aw,ax) = {
177+ let ay = split(aw, a)
178+ makeString(["%s%d%d%d%d%s%d%d", ay[ai], ay[aj], ay[ak], ay[al], ay[am], ax, toString(lastBlock.height), toString(lastBlock.timestamp)], a)
176179 }
177180
178181
179-func ay (az,aA) = makeString(["%s%s%s", "history", toString(az), toBase58String(aA)], a)
182+func az (aA,aB) = makeString(["%s%s%s", "history", toString(aA), toBase58String(aB)], a)
180183
181184
182-func aB (aC,aD,aE,aF,aG) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG)], a)
185+func aC (aD,aE,aF,aG,aH) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH)], a)
183186
184187
185-func aH (az,aA,aI,aD,aE,aJ,aK) = StringEntry(ay(az, aA), aB(aI, aD, aE, aJ, aK))
188+func aI (aA,aB,aJ,aE,aF,aK,aL) = StringEntry(az(aA, aB), aC(aJ, aE, aF, aK, aL))
186189
187190
188-func aL (aI,aD,aE,aF,aG) = makeString(["%d%d%d%d%d", toString(aI), toString(aD), toString(aE), toString(aF), toString(aG)], a)
191+func aM (aJ,aE,aF,aG,aH) = makeString(["%d%d%d%d%d", toString(aJ), toString(aE), toString(aF), toString(aG), toString(aH)], a)
189192
190193
191-func aM (aN,aI,aD,aE,aF,aG) = {
192- let aO = x(toString(aN))
193- let aP = split(h(this, aO, aL(0, 0, 0, 0, 0)), a)
194- let aQ = (parseIntValue(aP[1]) + aI)
195- let aR = (parseIntValue(aP[2]) + aD)
196- let aS = (parseIntValue(aP[3]) + aE)
197- let aT = (parseIntValue(aP[4]) + aF)
198- let aU = (parseIntValue(aP[5]) + aG)
199- StringEntry(aO, aL(aQ, aR, aS, aT, aU))
194+func aN (aO,aJ,aE,aF,aG,aH) = {
195+ let aP = x(toString(aO))
196+ let aQ = split(h(this, aP, aM(0, 0, 0, 0, 0)), a)
197+ let aR = (parseIntValue(aQ[1]) + aJ)
198+ let aS = (parseIntValue(aQ[2]) + aE)
199+ let aT = (parseIntValue(aQ[3]) + aF)
200+ let aU = (parseIntValue(aQ[4]) + aG)
201+ let aV = (parseIntValue(aQ[5]) + aH)
202+ StringEntry(aP, aM(aR, aS, aT, aU, aV))
200203 }
201204
202205
203-func aV (aW,aX) = {
204- let aY = addressFromStringValue(k(aW, H()))
205- if ((scriptHash(aW) == unit))
206- then aX
207- else aY
206+func aW (aX,aY) = {
207+ let aZ = addressFromStringValue(k(aX, I()))
208+ if ((scriptHash(aX) == unit))
209+ then aY
210+ else aZ
208211 }
209212
210213
211-func aZ (ba,bb) = {
212- let bc = getString(w(ba))
213- if (!(isDefined(bc)))
214- then throw(("Unknown Node " + ba))
214+func ba (bb,bc) = {
215+ let bd = getString(w(bb))
216+ if (!(isDefined(bd)))
217+ then throw(("Unknown Node " + bb))
215218 else {
216- let bd = value(bc)
217- let be = split(bd, a)
218- let bf = if ((size(be) >= 9))
219- then be[am]
219+ let be = value(bd)
220+ let bf = split(be, a)
221+ let bg = if ((size(bf) >= 9))
222+ then bf[an]
220223 else "PENDING"
221- if ((bf != bb))
222- then throw(((((("Node " + ba) + " status should be ") + bb) + ", but actually ") + bf))
223- else bd
224+ if ((bg != bc))
225+ then throw(((((("Node " + bb) + " status should be ") + bc) + ", but actually ") + bg))
226+ else be
224227 }
225228 }
226229
227230
228231 @Callable(s)
229-func constructorV1 (ar,bg,bh,bi,bj) = if ((s.caller != this))
232+func constructorV1 (as,bh,bi,bj,bk) = if ((s.caller != this))
230233 then throw("permissions denied")
231- else if ((0 > ar))
234+ else if ((0 > as))
232235 then throw("depositAmount less then zero")
233- else if ((0 > bi))
236+ else if ((0 > bj))
234237 then throw("protocolPartX6 less then zero")
235- else if ((0 > bj))
238+ else if ((0 > bk))
236239 then throw("benificaryPartX6 less then zero")
237- else if (((bi + bj) != b))
240+ else if (((bj + bk) != b))
238241 then throw("parts sum must be 1")
239- else [IntegerEntry(z(), ar), StringEntry(A(), u(bg)), StringEntry(B(), u(bh)), IntegerEntry(C(), bi), IntegerEntry(D(), bj)]
242+ else [IntegerEntry(z(), as), StringEntry(A(), u(bh)), StringEntry(B(), u(bi)), IntegerEntry(C(), bj), IntegerEntry(D(), bk)]
240243
241244
242245
243246 @Callable(s)
244-func constructorV2 (bk,bl,bm) = if ((s.caller != this))
247+func constructorV2 (bl,bm,bn) = if ((s.caller != this))
245248 then throw("permissions denied")
246- else [StringEntry(F(), u(bk)), StringEntry(V(), u(bl)), StringEntry(G(), u(bm))]
249+ else [StringEntry(F(), u(bl)), StringEntry(W(), u(bm)), StringEntry(H(), u(bn))]
247250
248251
249252
253256 else if ((s.caller != s.originCaller))
254257 then throw("dapp to dapp calls are not allowed")
255258 else {
256- let bn = s.payments[0]
257- let bo = bn.amount
258- let bp = valueOrElse(bn.assetId, e)
259- let bq = f(z())
260- let aA = toBase58String(s.transactionId)
261- let az = toString(s.caller)
262- let br = w(az)
263- if ((bp != e))
259+ let bo = s.payments[0]
260+ let bp = bo.amount
261+ let bq = valueOrElse(bo.assetId, e)
262+ let br = f(z())
263+ let aB = toBase58String(s.transactionId)
264+ let aA = toString(s.caller)
265+ let bs = w(aA)
266+ if ((bq != e))
264267 then throw("only Waves can be used for deposit")
265- else if ((bo != bq))
266- then throw((("exactly " + toString(bq)) + " Wavelets are expected"))
267- else if ((h(this, br, "") != ""))
268+ else if ((bp != br))
269+ then throw((("exactly " + toString(br)) + " Wavelets are expected"))
270+ else if ((h(this, bs, "") != ""))
268271 then throw("your node already registered")
269- else [StringEntry(br, ap(aA, bo, bo, "PENDING"))]
272+ else [StringEntry(bs, aq(aB, bp, bp, "PENDING"))]
270273 }
271274
272275
273276
274277 @Callable(s)
275-func distributeMinerReward (bs) = {
276- let bt = valueOrElse(getInteger(this, E()), (24 * c))
278+func distributeMinerReward (bt) = {
279+ let bu = valueOrElse(getInteger(this, E()), (24 * c))
277280 if ((size(s.payments) != 1))
278281 then throw("exact 1 payment must be attached")
279282 else if ((s.caller != s.originCaller))
280283 then throw("dapp to dapp calls are not allowed")
281284 else {
282- let bn = s.payments[0]
283- let bp = valueOrElse(bn.assetId, e)
284- let bu = s.fee
285- let bv = valueOrElse(s.feeAssetId, e)
286- let bw = (bu * 3)
287- let aI = (bn.amount - bw)
288- if ((bn.amount != bt))
289- then throw((("attached payment must be exact " + toString(bt)) + " Wavelets"))
290- else if ((bp != e))
285+ let bo = s.payments[0]
286+ let bq = valueOrElse(bo.assetId, e)
287+ let bv = s.fee
288+ let bw = valueOrElse(s.feeAssetId, e)
289+ let bx = (bv * 3)
290+ let aJ = (bo.amount - bx)
291+ if ((bo.amount != bu))
292+ then throw((("attached payment must be exact " + toString(bu)) + " Wavelets"))
293+ else if ((bq != e))
291294 then throw("only Waves can be used in payment")
292- else if ((bv != e))
295+ else if ((bw != e))
293296 then throw("only Waves can be used in fees")
294- else if ((bu != ((5 * c) / 1000)))
297+ else if ((bv != ((5 * c) / 1000)))
295298 then throw("fee amount couldn't exceed 0.005")
296299 else {
297- let bx = l(A())
298- let by = l(B())
299- let aW = s.caller
300- let aX = addressFromStringValue(bs)
301- let bz = aV(aW, aX)
302- let bA = aX
303- let bB = f(C())
304- let bC = f(D())
305- let aD = fraction(aI, bC, b)
306- let aE = (aI - aD)
307-[ScriptTransfer(bz, aD, unit), ScriptTransfer(ae, aE, unit), ScriptTransfer(bA, bw, unit), aH(aW, s.transactionId, aI, aD, aE, aE, 0), aM(aW, aI, aD, aE, aE, 0)]
300+ let by = l(A())
301+ let bz = l(B())
302+ let aX = s.caller
303+ let aY = addressFromStringValue(bt)
304+ let bA = aW(aX, aY)
305+ let bB = aY
306+ let bC = f(C())
307+ let bD = f(D())
308+ let aE = fraction(aJ, bD, b)
309+ let aF = (aJ - aE)
310+ let bE = (120 * c)
311+ let bF = addressFromStringValue(h(this, H(), "3PC7DBimauyKytx8tXhKo5u2ECb6FsndYKH"))
312+ let bG = q(invoke(bF, "withdraw", [bE], nil))
313+ let bH = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"
314+ let bI = addressFromStringValue(h(this, G(), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93"))
315+ let bJ = invoke(bI, "swap", [1, bH, toString(af)], [AttachedPayment(unit, bE)])
316+ if ((bJ == bJ))
317+ then [ScriptTransfer(bA, aE, unit), ScriptTransfer(af, aF, unit), ScriptTransfer(bB, bx, unit), aI(aX, s.transactionId, aJ, aE, aF, aF, 0), aN(aX, aJ, aE, aF, aF, 0)]
318+ else throw("Strict value is not equal to itself.")
308319 }
309320 }
310321 }
312323
313324
314325 @Callable(s)
315-func validateAndApproveLeasings (bD) = {
316- let bE = [0, 1, 2, 3, 4, 5, 6, 7]
317- let bF = split(bD, a)
318- let bG = size(bE)
319- let bx = l(A())
320- if ((s.caller != bx))
326+func validateAndApproveLeasings (bK) = {
327+ let bL = [0, 1, 2, 3, 4, 5, 6, 7]
328+ let bM = split(bK, a)
329+ let bN = size(bL)
330+ let by = l(A())
331+ if ((s.caller != by))
321332 then throw("validateAndApproveLeasings not authorized")
322- else if (((size(bF) % 2) != 0))
333+ else if (((size(bM) % 2) != 0))
323334 then throw("Only even number of nodes is allowed")
324- else if ((size(bF) != bG))
325- then throw((("Only " + toString(bG)) + " of nodes' addresses can be passed"))
335+ else if ((size(bM) != bN))
336+ then throw((("Only " + toString(bN)) + " of nodes' addresses can be passed"))
326337 else {
327- func bH (bI,s) = {
328- let ba = bF[s]
329- let bd = aZ(ba, "PENDING")
330- (bI :+ StringEntry(w(ba), au(bd, "APPROVED")))
338+ func bO (bP,s) = {
339+ let bb = bM[s]
340+ let be = ba(bb, "PENDING")
341+ (bP :+ StringEntry(w(bb), av(be, "APPROVED")))
331342 }
332343
333- let bJ = {
334- let bK = bE
335- let bL = size(bK)
336- let bM = nil
337- func bN (bO,bP) = if ((bP >= bL))
338- then bO
339- else bH(bO, bK[bP])
344+ let bQ = {
345+ let bR = bL
346+ let bS = size(bR)
347+ let bT = nil
348+ func bU (bV,bW) = if ((bW >= bS))
349+ then bV
350+ else bO(bV, bR[bW])
340351
341- func bQ (bO,bP) = if ((bP >= bL))
342- then bO
352+ func bX (bV,bW) = if ((bW >= bS))
353+ then bV
343354 else throw("List size exceeds 8")
344355
345- bQ(bN(bN(bN(bN(bN(bN(bN(bN(bM, 0), 1), 2), 3), 4), 5), 6), 7), 8)
356+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8)
346357 }
347- $Tuple2(bJ, nil)
358+ $Tuple2(bQ, nil)
348359 }
349360 }
350361
351362
352363
353364 @Callable(s)
354-func replaceApprovedNode (bR,bS,bT,bU) = if ((s.caller != ae))
365+func replaceApprovedNode (bY,bZ,ca,cb) = if ((s.caller != af))
355366 then throw("permissions denied")
356367 else {
357- let bV = aZ(bR, "APPROVED")
358- let bW = aZ(bS, "PENDING")
359- let bX = k(this, y())
360- if (!(contains(bX, bR)))
361- then throw(("approvedNodeList does not contain " + bR))
368+ let cc = ba(bY, "APPROVED")
369+ let cd = ba(bZ, "PENDING")
370+ let ce = k(this, y())
371+ if (!(contains(ce, bY)))
372+ then throw(("approvedNodeList does not contain " + bY))
362373 else {
363- let bY = makeString_2C(split_4C(bX, bR), bS)
364- let bZ = addressFromStringValue(bR)
365- let bz = aV(bZ, bZ)
366- let ca = parseIntValue(split(bV, a)[ak])
367- let cb = [StringEntry(y(), bY), DeleteEntry(w(bR)), StringEntry(w(bS), au(bW, "APPROVED"))]
368- $Tuple2(if ((ca > bU))
369- then (cb :+ ScriptTransfer(bz, (ca - bU), unit))
370- else cb, unit)
374+ let cf = makeString_2C(split_4C(ce, bY), bZ)
375+ let cg = addressFromStringValue(bY)
376+ let bA = aW(cg, cg)
377+ let ch = parseIntValue(split(cc, a)[al])
378+ let ci = [StringEntry(y(), cf), DeleteEntry(w(bY)), StringEntry(w(bZ), av(cd, "APPROVED"))]
379+ $Tuple2(if ((ch > cb))
380+ then (ci :+ ScriptTransfer(bA, (ch - cb), unit))
381+ else ci, unit)
371382 }
372383 }
373384
374385
375386
376387 @Callable(s)
377-func returnDeposit (cc) = if ((size(s.payments) != 0))
388+func returnDeposit (cj) = if ((size(s.payments) != 0))
378389 then throw("No payments allowed")
379390 else {
380- let cd = s.caller
381- let br = w(cc)
382- let bc = getString(this, br)
383- if (!(isDefined(bc)))
384- then throw(("Address is not applied as neutrino node: " + cc))
391+ let ck = s.caller
392+ let bs = w(cj)
393+ let bd = getString(this, bs)
394+ if (!(isDefined(bd)))
395+ then throw(("Address is not applied as neutrino node: " + cj))
385396 else {
386- let ce = k(this, y())
387- if (contains(ce, cc))
397+ let cl = k(this, y())
398+ if (contains(cl, cj))
388399 then throw("Impossible to return deposit from approved Node, please contact support team")
389400 else {
390- let be = split(value(bc), a)
391- let at = if ((size(be) >= 9))
392- then be[am]
401+ let bf = split(value(bd), a)
402+ let au = if ((size(bf) >= 9))
403+ then bf[an]
393404 else "PENDING"
394- if ((at != "PENDING"))
405+ if ((au != "PENDING"))
395406 then throw("Application status is not PENDING!")
396407 else {
397- let ca = parseIntValue(be[ak])
398- let az = addressFromStringValue(cc)
399- let bz = aV(az, az)
400- if (!(if (if ((cd == this))
408+ let ch = parseIntValue(bf[al])
409+ let aA = addressFromStringValue(cj)
410+ let bA = aW(aA, aA)
411+ if (!(if (if ((ck == this))
401412 then true
402- else if ((bz != az))
403- then (cd == bz)
413+ else if ((bA != aA))
414+ then (ck == bA)
404415 else false)
405416 then true
406- else if ((bz == az))
407- then (cd == az)
417+ else if ((bA == aA))
418+ then (ck == aA)
408419 else false))
409420 then throw("returnDeposit permissions denied")
410- else [DeleteEntry(br), ScriptTransfer(bz, ca, unit)]
421+ else [DeleteEntry(bs), ScriptTransfer(bA, ch, unit)]
411422 }
412423 }
413424 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = "WAVES"
1111
1212 let e = fromBase58String(d)
1313
1414 func f (g) = valueOrErrorMessage(getInteger(this, g), (("Mandatory this." + g) + " is not defined"))
1515
1616
1717 func h (i,g,j) = valueOrElse(getString(i, g), j)
1818
1919
2020 func k (i,g) = valueOrErrorMessage(getString(i, g), (("Mandatory this." + g) + " is not defined"))
2121
2222
2323 func l (g) = valueOrErrorMessage(addressFromString(k(this, g)), (("Fail to convert this." + g) + " value into Address"))
2424
2525
2626 func m (n) = {
2727 let o = n
2828 if ($isInstanceOf(o, "List[Any]"))
2929 then {
3030 let p = o
3131 p
3232 }
3333 else throw("fail to cast into List[Any]")
3434 }
3535
3636
3737 func q (r) = {
3838 let o = r
3939 if ($isInstanceOf(o, "Int"))
4040 then {
4141 let s = o
4242 s
4343 }
4444 else throw("fail to cast into Int")
4545 }
4646
4747
4848 func t (r) = {
4949 let o = r
5050 if ($isInstanceOf(o, "ByteVector"))
5151 then {
5252 let s = o
5353 s
5454 }
5555 else throw("fail to cast into ByteVector")
5656 }
5757
5858
5959 func u (v) = {
6060 let i = valueOrErrorMessage(addressFromString(v), ("fail to convert into address " + v))
6161 if ((0 > wavesBalance(i).available))
6262 then throw()
6363 else v
6464 }
6565
6666
6767 func w (i) = ("%s__" + i)
6868
6969
7070 func x (i) = ("%s%s__totals__" + i)
7171
7272
7373 func y () = "%s__approvedNodeList"
7474
7575
7676 func z () = "%s%s__cfg__depositAmount"
7777
7878
7979 func A () = "%s%s__cfg__neutrinoAddress"
8080
8181
8282 func B () = "%s%s__cfg__mainNeutrinoNodeAddress"
8383
8484
8585 func C () = "%s%s__cfg__protocolPartX6"
8686
8787
8888 func D () = "%s%s__cfg__benificaryPartX6"
8989
9090
9191 func E () = "%s%s__cfg__minDistributeAmount"
9292
9393
9494 func F () = "%s%s__cfg__swopfiUsdtUsdnPoolAddress"
9595
9696
97-func G () = "%s%s__cfg__savingsAddress"
97+func G () = "%s%s__cfg__wxSwapAddress"
9898
9999
100-func H () = "%s%s__cfg__beneficiaryAddress"
100+func H () = "%s%s__cfg__savingsAddress"
101101
102102
103-let I = 1
104-
105-let J = 2
106-
107-let K = 3
108-
109-let L = 4
110-
111-let M = 5
112-
113-let N = 6
114-
115-let O = 7
116-
117-let P = 8
118-
119-let Q = 9
120-
121-let R = 10
122-
123-let S = 11
124-
125-let T = 12
126-
127-let U = 13
128-
129-func V () = "%s%s__config__controlAddress"
103+func I () = "%s%s__cfg__beneficiaryAddress"
130104
131105
132-func W () = "%s__controlConfig"
106+let J = 1
107+
108+let K = 2
109+
110+let L = 3
111+
112+let M = 4
113+
114+let N = 5
115+
116+let O = 6
117+
118+let P = 7
119+
120+let Q = 8
121+
122+let R = 9
123+
124+let S = 10
125+
126+let T = 11
127+
128+let U = 12
129+
130+let V = 13
131+
132+func W () = "%s%s__config__controlAddress"
133133
134134
135-func X () = "neutrino_asset_id"
135+func X () = "%s__controlConfig"
136136
137137
138-func Y (Z) = split_4C(k(Z, W()), a)
138+func Y () = "neutrino_asset_id"
139139
140140
141-func aa (ab,ac) = valueOrErrorMessage(addressFromString(ab[ac]), ("Control cfg doesn't contain address at index " + toString(ac)))
141+func Z (aa) = split_4C(k(aa, X()), a)
142142
143143
144-let ad = addressFromStringValue(valueOrElse(getString(this, V()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
145-
146-let ab = Y(ad)
147-
148-let ae = aa(ab, I)
149-
150-let af = h(ae, X(), "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
151-
152-let ag = fromBase58String(af)
153-
154-let ah = 1
155-
156-let ai = 2
157-
158-let aj = 3
159-
160-let ak = 4
161-
162-let al = 5
163-
164-let am = 6
165-
166-let an = 7
167-
168-let ao = 8
169-
170-func ap (aq,ar,as,at) = makeString(["%s%d%d%d%d%s%d%d", aq, toString(lastBlock.height), toString(lastBlock.timestamp), toString(ar), toString(as), at, "0", "0"], a)
144+func ab (ac,ad) = valueOrErrorMessage(addressFromString(ac[ad]), ("Control cfg doesn't contain address at index " + toString(ad)))
171145
172146
173-func au (av,aw) = {
174- let ax = split(av, a)
175- makeString(["%s%d%d%d%d%s%d%d", ax[ah], ax[ai], ax[aj], ax[ak], ax[al], aw, toString(lastBlock.height), toString(lastBlock.timestamp)], a)
147+let ae = addressFromStringValue(valueOrElse(getString(this, W()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
148+
149+let ac = Z(ae)
150+
151+let af = ab(ac, J)
152+
153+let ag = h(af, Y(), "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
154+
155+let ah = fromBase58String(ag)
156+
157+let ai = 1
158+
159+let aj = 2
160+
161+let ak = 3
162+
163+let al = 4
164+
165+let am = 5
166+
167+let an = 6
168+
169+let ao = 7
170+
171+let ap = 8
172+
173+func aq (ar,as,at,au) = makeString(["%s%d%d%d%d%s%d%d", ar, toString(lastBlock.height), toString(lastBlock.timestamp), toString(as), toString(at), au, "0", "0"], a)
174+
175+
176+func av (aw,ax) = {
177+ let ay = split(aw, a)
178+ makeString(["%s%d%d%d%d%s%d%d", ay[ai], ay[aj], ay[ak], ay[al], ay[am], ax, toString(lastBlock.height), toString(lastBlock.timestamp)], a)
176179 }
177180
178181
179-func ay (az,aA) = makeString(["%s%s%s", "history", toString(az), toBase58String(aA)], a)
182+func az (aA,aB) = makeString(["%s%s%s", "history", toString(aA), toBase58String(aB)], a)
180183
181184
182-func aB (aC,aD,aE,aF,aG) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG)], a)
185+func aC (aD,aE,aF,aG,aH) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH)], a)
183186
184187
185-func aH (az,aA,aI,aD,aE,aJ,aK) = StringEntry(ay(az, aA), aB(aI, aD, aE, aJ, aK))
188+func aI (aA,aB,aJ,aE,aF,aK,aL) = StringEntry(az(aA, aB), aC(aJ, aE, aF, aK, aL))
186189
187190
188-func aL (aI,aD,aE,aF,aG) = makeString(["%d%d%d%d%d", toString(aI), toString(aD), toString(aE), toString(aF), toString(aG)], a)
191+func aM (aJ,aE,aF,aG,aH) = makeString(["%d%d%d%d%d", toString(aJ), toString(aE), toString(aF), toString(aG), toString(aH)], a)
189192
190193
191-func aM (aN,aI,aD,aE,aF,aG) = {
192- let aO = x(toString(aN))
193- let aP = split(h(this, aO, aL(0, 0, 0, 0, 0)), a)
194- let aQ = (parseIntValue(aP[1]) + aI)
195- let aR = (parseIntValue(aP[2]) + aD)
196- let aS = (parseIntValue(aP[3]) + aE)
197- let aT = (parseIntValue(aP[4]) + aF)
198- let aU = (parseIntValue(aP[5]) + aG)
199- StringEntry(aO, aL(aQ, aR, aS, aT, aU))
194+func aN (aO,aJ,aE,aF,aG,aH) = {
195+ let aP = x(toString(aO))
196+ let aQ = split(h(this, aP, aM(0, 0, 0, 0, 0)), a)
197+ let aR = (parseIntValue(aQ[1]) + aJ)
198+ let aS = (parseIntValue(aQ[2]) + aE)
199+ let aT = (parseIntValue(aQ[3]) + aF)
200+ let aU = (parseIntValue(aQ[4]) + aG)
201+ let aV = (parseIntValue(aQ[5]) + aH)
202+ StringEntry(aP, aM(aR, aS, aT, aU, aV))
200203 }
201204
202205
203-func aV (aW,aX) = {
204- let aY = addressFromStringValue(k(aW, H()))
205- if ((scriptHash(aW) == unit))
206- then aX
207- else aY
206+func aW (aX,aY) = {
207+ let aZ = addressFromStringValue(k(aX, I()))
208+ if ((scriptHash(aX) == unit))
209+ then aY
210+ else aZ
208211 }
209212
210213
211-func aZ (ba,bb) = {
212- let bc = getString(w(ba))
213- if (!(isDefined(bc)))
214- then throw(("Unknown Node " + ba))
214+func ba (bb,bc) = {
215+ let bd = getString(w(bb))
216+ if (!(isDefined(bd)))
217+ then throw(("Unknown Node " + bb))
215218 else {
216- let bd = value(bc)
217- let be = split(bd, a)
218- let bf = if ((size(be) >= 9))
219- then be[am]
219+ let be = value(bd)
220+ let bf = split(be, a)
221+ let bg = if ((size(bf) >= 9))
222+ then bf[an]
220223 else "PENDING"
221- if ((bf != bb))
222- then throw(((((("Node " + ba) + " status should be ") + bb) + ", but actually ") + bf))
223- else bd
224+ if ((bg != bc))
225+ then throw(((((("Node " + bb) + " status should be ") + bc) + ", but actually ") + bg))
226+ else be
224227 }
225228 }
226229
227230
228231 @Callable(s)
229-func constructorV1 (ar,bg,bh,bi,bj) = if ((s.caller != this))
232+func constructorV1 (as,bh,bi,bj,bk) = if ((s.caller != this))
230233 then throw("permissions denied")
231- else if ((0 > ar))
234+ else if ((0 > as))
232235 then throw("depositAmount less then zero")
233- else if ((0 > bi))
236+ else if ((0 > bj))
234237 then throw("protocolPartX6 less then zero")
235- else if ((0 > bj))
238+ else if ((0 > bk))
236239 then throw("benificaryPartX6 less then zero")
237- else if (((bi + bj) != b))
240+ else if (((bj + bk) != b))
238241 then throw("parts sum must be 1")
239- else [IntegerEntry(z(), ar), StringEntry(A(), u(bg)), StringEntry(B(), u(bh)), IntegerEntry(C(), bi), IntegerEntry(D(), bj)]
242+ else [IntegerEntry(z(), as), StringEntry(A(), u(bh)), StringEntry(B(), u(bi)), IntegerEntry(C(), bj), IntegerEntry(D(), bk)]
240243
241244
242245
243246 @Callable(s)
244-func constructorV2 (bk,bl,bm) = if ((s.caller != this))
247+func constructorV2 (bl,bm,bn) = if ((s.caller != this))
245248 then throw("permissions denied")
246- else [StringEntry(F(), u(bk)), StringEntry(V(), u(bl)), StringEntry(G(), u(bm))]
249+ else [StringEntry(F(), u(bl)), StringEntry(W(), u(bm)), StringEntry(H(), u(bn))]
247250
248251
249252
250253 @Callable(s)
251254 func sumbitApplication () = if ((size(s.payments) != 1))
252255 then throw("exact 1 payment must be attached")
253256 else if ((s.caller != s.originCaller))
254257 then throw("dapp to dapp calls are not allowed")
255258 else {
256- let bn = s.payments[0]
257- let bo = bn.amount
258- let bp = valueOrElse(bn.assetId, e)
259- let bq = f(z())
260- let aA = toBase58String(s.transactionId)
261- let az = toString(s.caller)
262- let br = w(az)
263- if ((bp != e))
259+ let bo = s.payments[0]
260+ let bp = bo.amount
261+ let bq = valueOrElse(bo.assetId, e)
262+ let br = f(z())
263+ let aB = toBase58String(s.transactionId)
264+ let aA = toString(s.caller)
265+ let bs = w(aA)
266+ if ((bq != e))
264267 then throw("only Waves can be used for deposit")
265- else if ((bo != bq))
266- then throw((("exactly " + toString(bq)) + " Wavelets are expected"))
267- else if ((h(this, br, "") != ""))
268+ else if ((bp != br))
269+ then throw((("exactly " + toString(br)) + " Wavelets are expected"))
270+ else if ((h(this, bs, "") != ""))
268271 then throw("your node already registered")
269- else [StringEntry(br, ap(aA, bo, bo, "PENDING"))]
272+ else [StringEntry(bs, aq(aB, bp, bp, "PENDING"))]
270273 }
271274
272275
273276
274277 @Callable(s)
275-func distributeMinerReward (bs) = {
276- let bt = valueOrElse(getInteger(this, E()), (24 * c))
278+func distributeMinerReward (bt) = {
279+ let bu = valueOrElse(getInteger(this, E()), (24 * c))
277280 if ((size(s.payments) != 1))
278281 then throw("exact 1 payment must be attached")
279282 else if ((s.caller != s.originCaller))
280283 then throw("dapp to dapp calls are not allowed")
281284 else {
282- let bn = s.payments[0]
283- let bp = valueOrElse(bn.assetId, e)
284- let bu = s.fee
285- let bv = valueOrElse(s.feeAssetId, e)
286- let bw = (bu * 3)
287- let aI = (bn.amount - bw)
288- if ((bn.amount != bt))
289- then throw((("attached payment must be exact " + toString(bt)) + " Wavelets"))
290- else if ((bp != e))
285+ let bo = s.payments[0]
286+ let bq = valueOrElse(bo.assetId, e)
287+ let bv = s.fee
288+ let bw = valueOrElse(s.feeAssetId, e)
289+ let bx = (bv * 3)
290+ let aJ = (bo.amount - bx)
291+ if ((bo.amount != bu))
292+ then throw((("attached payment must be exact " + toString(bu)) + " Wavelets"))
293+ else if ((bq != e))
291294 then throw("only Waves can be used in payment")
292- else if ((bv != e))
295+ else if ((bw != e))
293296 then throw("only Waves can be used in fees")
294- else if ((bu != ((5 * c) / 1000)))
297+ else if ((bv != ((5 * c) / 1000)))
295298 then throw("fee amount couldn't exceed 0.005")
296299 else {
297- let bx = l(A())
298- let by = l(B())
299- let aW = s.caller
300- let aX = addressFromStringValue(bs)
301- let bz = aV(aW, aX)
302- let bA = aX
303- let bB = f(C())
304- let bC = f(D())
305- let aD = fraction(aI, bC, b)
306- let aE = (aI - aD)
307-[ScriptTransfer(bz, aD, unit), ScriptTransfer(ae, aE, unit), ScriptTransfer(bA, bw, unit), aH(aW, s.transactionId, aI, aD, aE, aE, 0), aM(aW, aI, aD, aE, aE, 0)]
300+ let by = l(A())
301+ let bz = l(B())
302+ let aX = s.caller
303+ let aY = addressFromStringValue(bt)
304+ let bA = aW(aX, aY)
305+ let bB = aY
306+ let bC = f(C())
307+ let bD = f(D())
308+ let aE = fraction(aJ, bD, b)
309+ let aF = (aJ - aE)
310+ let bE = (120 * c)
311+ let bF = addressFromStringValue(h(this, H(), "3PC7DBimauyKytx8tXhKo5u2ECb6FsndYKH"))
312+ let bG = q(invoke(bF, "withdraw", [bE], nil))
313+ let bH = "Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on"
314+ let bI = addressFromStringValue(h(this, G(), "3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93"))
315+ let bJ = invoke(bI, "swap", [1, bH, toString(af)], [AttachedPayment(unit, bE)])
316+ if ((bJ == bJ))
317+ then [ScriptTransfer(bA, aE, unit), ScriptTransfer(af, aF, unit), ScriptTransfer(bB, bx, unit), aI(aX, s.transactionId, aJ, aE, aF, aF, 0), aN(aX, aJ, aE, aF, aF, 0)]
318+ else throw("Strict value is not equal to itself.")
308319 }
309320 }
310321 }
311322
312323
313324
314325 @Callable(s)
315-func validateAndApproveLeasings (bD) = {
316- let bE = [0, 1, 2, 3, 4, 5, 6, 7]
317- let bF = split(bD, a)
318- let bG = size(bE)
319- let bx = l(A())
320- if ((s.caller != bx))
326+func validateAndApproveLeasings (bK) = {
327+ let bL = [0, 1, 2, 3, 4, 5, 6, 7]
328+ let bM = split(bK, a)
329+ let bN = size(bL)
330+ let by = l(A())
331+ if ((s.caller != by))
321332 then throw("validateAndApproveLeasings not authorized")
322- else if (((size(bF) % 2) != 0))
333+ else if (((size(bM) % 2) != 0))
323334 then throw("Only even number of nodes is allowed")
324- else if ((size(bF) != bG))
325- then throw((("Only " + toString(bG)) + " of nodes' addresses can be passed"))
335+ else if ((size(bM) != bN))
336+ then throw((("Only " + toString(bN)) + " of nodes' addresses can be passed"))
326337 else {
327- func bH (bI,s) = {
328- let ba = bF[s]
329- let bd = aZ(ba, "PENDING")
330- (bI :+ StringEntry(w(ba), au(bd, "APPROVED")))
338+ func bO (bP,s) = {
339+ let bb = bM[s]
340+ let be = ba(bb, "PENDING")
341+ (bP :+ StringEntry(w(bb), av(be, "APPROVED")))
331342 }
332343
333- let bJ = {
334- let bK = bE
335- let bL = size(bK)
336- let bM = nil
337- func bN (bO,bP) = if ((bP >= bL))
338- then bO
339- else bH(bO, bK[bP])
344+ let bQ = {
345+ let bR = bL
346+ let bS = size(bR)
347+ let bT = nil
348+ func bU (bV,bW) = if ((bW >= bS))
349+ then bV
350+ else bO(bV, bR[bW])
340351
341- func bQ (bO,bP) = if ((bP >= bL))
342- then bO
352+ func bX (bV,bW) = if ((bW >= bS))
353+ then bV
343354 else throw("List size exceeds 8")
344355
345- bQ(bN(bN(bN(bN(bN(bN(bN(bN(bM, 0), 1), 2), 3), 4), 5), 6), 7), 8)
356+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8)
346357 }
347- $Tuple2(bJ, nil)
358+ $Tuple2(bQ, nil)
348359 }
349360 }
350361
351362
352363
353364 @Callable(s)
354-func replaceApprovedNode (bR,bS,bT,bU) = if ((s.caller != ae))
365+func replaceApprovedNode (bY,bZ,ca,cb) = if ((s.caller != af))
355366 then throw("permissions denied")
356367 else {
357- let bV = aZ(bR, "APPROVED")
358- let bW = aZ(bS, "PENDING")
359- let bX = k(this, y())
360- if (!(contains(bX, bR)))
361- then throw(("approvedNodeList does not contain " + bR))
368+ let cc = ba(bY, "APPROVED")
369+ let cd = ba(bZ, "PENDING")
370+ let ce = k(this, y())
371+ if (!(contains(ce, bY)))
372+ then throw(("approvedNodeList does not contain " + bY))
362373 else {
363- let bY = makeString_2C(split_4C(bX, bR), bS)
364- let bZ = addressFromStringValue(bR)
365- let bz = aV(bZ, bZ)
366- let ca = parseIntValue(split(bV, a)[ak])
367- let cb = [StringEntry(y(), bY), DeleteEntry(w(bR)), StringEntry(w(bS), au(bW, "APPROVED"))]
368- $Tuple2(if ((ca > bU))
369- then (cb :+ ScriptTransfer(bz, (ca - bU), unit))
370- else cb, unit)
374+ let cf = makeString_2C(split_4C(ce, bY), bZ)
375+ let cg = addressFromStringValue(bY)
376+ let bA = aW(cg, cg)
377+ let ch = parseIntValue(split(cc, a)[al])
378+ let ci = [StringEntry(y(), cf), DeleteEntry(w(bY)), StringEntry(w(bZ), av(cd, "APPROVED"))]
379+ $Tuple2(if ((ch > cb))
380+ then (ci :+ ScriptTransfer(bA, (ch - cb), unit))
381+ else ci, unit)
371382 }
372383 }
373384
374385
375386
376387 @Callable(s)
377-func returnDeposit (cc) = if ((size(s.payments) != 0))
388+func returnDeposit (cj) = if ((size(s.payments) != 0))
378389 then throw("No payments allowed")
379390 else {
380- let cd = s.caller
381- let br = w(cc)
382- let bc = getString(this, br)
383- if (!(isDefined(bc)))
384- then throw(("Address is not applied as neutrino node: " + cc))
391+ let ck = s.caller
392+ let bs = w(cj)
393+ let bd = getString(this, bs)
394+ if (!(isDefined(bd)))
395+ then throw(("Address is not applied as neutrino node: " + cj))
385396 else {
386- let ce = k(this, y())
387- if (contains(ce, cc))
397+ let cl = k(this, y())
398+ if (contains(cl, cj))
388399 then throw("Impossible to return deposit from approved Node, please contact support team")
389400 else {
390- let be = split(value(bc), a)
391- let at = if ((size(be) >= 9))
392- then be[am]
401+ let bf = split(value(bd), a)
402+ let au = if ((size(bf) >= 9))
403+ then bf[an]
393404 else "PENDING"
394- if ((at != "PENDING"))
405+ if ((au != "PENDING"))
395406 then throw("Application status is not PENDING!")
396407 else {
397- let ca = parseIntValue(be[ak])
398- let az = addressFromStringValue(cc)
399- let bz = aV(az, az)
400- if (!(if (if ((cd == this))
408+ let ch = parseIntValue(bf[al])
409+ let aA = addressFromStringValue(cj)
410+ let bA = aW(aA, aA)
411+ if (!(if (if ((ck == this))
401412 then true
402- else if ((bz != az))
403- then (cd == bz)
413+ else if ((bA != aA))
414+ then (ck == bA)
404415 else false)
405416 then true
406- else if ((bz == az))
407- then (cd == az)
417+ else if ((bA == aA))
418+ then (ck == aA)
408419 else false))
409420 then throw("returnDeposit permissions denied")
410- else [DeleteEntry(br), ScriptTransfer(bz, ca, unit)]
421+ else [DeleteEntry(bs), ScriptTransfer(bA, ch, unit)]
411422 }
412423 }
413424 }
414425 }
415426
416427

github/deemru/w8io/6500d08 
135.08 ms