tx · 42L6Tm7NcZbaCt25UUHwfcTAmvW37Ms7U5GhsX5KJPLY 3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp: -0.02300000 Waves 2023.08.17 16:17 [2714642] smart account 3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp > SELF 0.00000000 Waves
{ "type": 13, "id": "42L6Tm7NcZbaCt25UUHwfcTAmvW37Ms7U5GhsX5KJPLY", "fee": 2300000, "feeAssetId": null, "timestamp": 1692278257779, "version": 2, "chainId": 84, "sender": "3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp", "senderPublicKey": "86RHVxKovtU7yKnepY8wKsd8niDxGAsiwuA1XA1DNqrS", "proofs": [ "2hDZnFFmK41jZUhKTJBQpfxPbtrZdkUHvfzFHXYxt2BZfizpL8Swq3aMWofsYqgvvBqQUny36pFed2m6KFCr4DeM" ], "script": "base64:BgL6IAgCEgMKAQgSAwoBCBIECgIICBIJCgcBERERGAgYEgcKBRERERgIEgcKBQEBAQgIEgASAwoBCBIECgIIARIECgIIARIECgIIARIDCgEIEgYKBAgBCAESBQoDARgYEgMKARgiBlNDQUxFOCIFTVVMVDgiB1NDQUxFMTgiBk1VTFQxOCIDU0VQIg5QT09MV0VJR0hUTVVMVCIKemVyb0JpZ0ludCIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIg9nZXRTdHJpbmdPckZhaWwiA2tleSIYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsIgdhZGRyZXNzIgxnZXRJbnRPclplcm8iDGdldEludE9yRmFpbCIJYXNBbnlMaXN0IgN2YWwiByRtYXRjaDAiCnZhbEFueUx5c3QiBWFzSW50IgZ2YWxJbnQiCGFzU3RyaW5nIgZ2YWxTdHIiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsIgpyZWFkTHBMaXN0IhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgRmQ2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIgFzIgtrZXlCb29zdENmZyIfa2V5Qm9vc3RpbmdMb2NrUGFyYW1Ub3RhbEFtb3VudCIoa2V5Qm9vc3RpbmdTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyIaa2V5Qm9vc3RpbmdTdGF0c0xvY2tzQ291bnQiGmtleUJvb3N0aW5nU3RhdHNVc2Vyc0NvdW50IhJrZXlVc2VyMk51bU1hcHBpbmciC3VzZXJBZGRyZXNzIhJrZXlOdW0yVXNlck1hcHBpbmciA251bSIWa2V5TG9ja1BhcmFtVXNlckFtb3VudCIHdXNlck51bSIWa2V5TG9ja1BhcmFtU3RhcnRCbG9jayIUa2V5TG9ja1BhcmFtRHVyYXRpb24iDWtleUxvY2tQYXJhbUsiDWtleUxvY2tQYXJhbUIiFWtleUxvY2tQYXJhbUJ5UGVyaW9kSyIGcGVyaW9kIhVrZXlMb2NrUGFyYW1CeVBlcmlvZEIiIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiEWtleVRvdGFsQ2FjaGVkR3d4Ig9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgxscEFzc2V0SWRTdHIiDmtleVN0YWtlZFRvdGFsIhBrZXlDbGFpbWVkQnlVc2VyIhlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkIhtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQiCnJlYWRTdGFrZWQiC3N0YWtpbmdEYXBwIh5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siC2ZhY3RvcnlEYXBwIgpmYWN0b3J5Q2ZnIgxlbWlzc2lvbkRhcHAiDWd3eFJld2FyZERhcHAiDGJvb3N0aW5nRGFwcCIMZ2V0UG9vbEluRmVlIgtwb29sQWRkcmVzcyIBQCINZ2V0UG9vbE91dEZlZSIZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZSIJbHBBc3NldElkIg5wb29sQWRkcmVzc1N0ciIOcG9vbFdlaWdodE11bHQiCnBvb2xXZWlnaHQiEnd4RW1pc3Npb25QZXJCbG9jayIVd3hFbWlzc2lvblBlckJsb2NrTWF4Ig1ib29zdE1heENvZWZmIhZwb29sV3hFbWlzc2lvblBlckJsb2NrIhlwb29sV3hFbWlzc2lvblBlckJsb2NrTWF4IgltYXhGYWN0b3IiDXRvdGFsTHBTdGFrZWQiGmNhbGNHd3hBbW91bnRTdGFydFJFQURPTkxZIgpsb2NrQW1vdW50Igxsb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIHY29lZmZYOCIOZ1d4QW1vdW50U3RhcnQiBmdldEtleSIEYWRkciIEdHlwZSIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiDmZhY3RvcnlBZGRyZXNzIgtjaGVja0NhbGxlciIKcmV3YXJkRGF0YSISdm90aW5nUmVzdWx0U3Rha2VkIg5scFN0YWtlZEJ5VXNlciINdXNlckNsYWltSW5mbyINbWluUmV3YXJkUGFydCIPYm9vc3RSZXdhcmRQYXJ0IgVkZWJ1ZyINYm9vc3RpbmdQb3dlciILY3VycmVudEl0ZXIiEWRlbHRhV3hBbW91bnRCdWxrIhtkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrc0J1bGsiEWRlbHRhTHBBbW91bnRCdWxrIhBscEFzc2V0SWRPcHRCdWxrIg51c2VyQWRkcmVzc09wdCIGcmVzQWNjIg1kZWx0YVd4QW1vdW50IhdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcyINZGVsdGFMcEFtb3VudCIMbHBBc3NldElkT3B0IgRpbmZvIgNyZXMiA2ludiIKYm9vc3RDb2VmZiIIbWF0aERhcHAiCEVNUFRZU1RSIhdtYXhMb2NrRHVyYXRpb25JbkJsb2NrcyIKdXNlck51bVN0ciIKdXNlckFtb3VudCIJbG9ja1N0YXJ0Igdsb2NrRW5kIhFyZW1haW5pbmdEdXJhdGlvbiINdXNlckFtb3VudE5ldyIPbG9ja0R1cmF0aW9uTmV3IhF1c2VyQ3VycmdXeEFtb3VudCIRZ1d4QW1vdW50U3RhcnROZXciDnRvdGFsQ2FjaGVkR3d4IgVNVUxUMyIUd3hFbWlzc2lvblBlckJsb2NrWDMiD3N0YWtlZEJ5VXNlcktFWSIOc3Rha2VkVG90YWxLRVkiDHN0YWtlZEJ5VXNlciILc3Rha2VkVG90YWwiGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMyIJd3hQZXJMcFgzIhB1c2VyV3hQZXJCbG9ja1gzIhdib29zdEVtaXNzaW9uUGVyQmxvY2tYMyIWdG1wVXNlckJvb3N0UGVyQmxvY2tYMyITdXNlckJvb3N0UGVyQmxvY2tYMyIOdXNlckJvb3N0Q29lZmYiB09ORU1VTFQiA09ORSISZW1pc3Npb25TdGFydEJsb2NrIgxwYXNzZWRCbG9ja3MiDnRlYW1FbUR1cmF0aW9uIgl0ZWFtRW1NYXgiBnRlYW1FbSIPdG90YWxXeFJlbGVhc2VkIg10b3RhbFd4TG9ja2VkIhhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiCmxvY2tzQ291bnQiB2xwQXNzZXQiBnN0YXR1cyIDdHBsIgNjZmciCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0IghjdXJQcmljZSIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIFaW5GZWUiBm91dEZlZSIecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIh1wb29sT25lVG9rZW5PcGVyYXRpb25zRW5hYmxlZCIPcG9vbFN3YXBFbmFibGVkIgxpbkFtQXNzZXRBbXQiDGFtQXNzZXRJZFN0ciIJYW1Bc3NldElkIgxwckFzc2V0SWRTdHIiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiC2N1clByaWNlWDE4Ig9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMaW5QckFzc2V0QW10Ig0kdDAyMjg1MTIzMjA0IgljYWxjTHBBbXQiDGN1clByaWNlQ2FsYyIJYW1CYWxhbmNlIglwckJhbGFuY2UiCmxwRW1pc3Npb24iDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCINJHQwMjU3NzcyNjEzMCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10Ig0kdDAyNjgyNTI3MjQyIghvdXRBbUFtdCIIb3V0UHJBbXQiD2d3eFVzZXJJbmZvTElTVCIJZ3d4QW1vdW50Ig11bnN0YWtlQW1vdW50IgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiBGtleXMiAWsiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleV0AAWEACAABYgCAwtcvAAFjABIAAWQJALYCAQCAgJC7utat8A0AAWUCAl9fAAFmBQFiAAFnCQC2AgEAAAABaAABAAFpAAIAAWoAAwABawAEAAFsAAUAAW0ABgABbgAHAAFvAAgAAXAACQABcQAKAQFyAQFzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUBcwkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBcwIPIGlzIG5vdCBkZWZpbmVkAQF0AgF1AXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF1BQFzCQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUBdQIBLgUBcwIPIGlzIG5vdCBkZWZpbmVkAQF2AgF1AXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBdQUBcwAAAQF3AgF1AXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQF1BQFzCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFzAg8gaXMgbm90IGRlZmluZWQBAXgBAXkEAXoFAXkDCQABAgUBegIJTGlzdFtBbnldBAFBBQF6BQFBCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQFCAQF5BAF6BQF5AwkAAQIFAXoCA0ludAQBQwUBegUBQwkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBRAEBeQQBegUBeQMJAAECBQF6AgZTdHJpbmcEAUUFAXoFAUUJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAUYAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAFHAAEAAUgAAgABSQADAAFKAAQAAUsABQABTAAGAAFNAAcAAU4ACAEBTwACESVzX19mYWN0b3J5Q29uZmlnAQFQAQFRCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAVEJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWUBAVIAAhAlc19fbHBUb2tlbnNMaXN0AQFTAQFRCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAVEJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWUBAVQBAVUJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBVQUDbmlsBQFlAQFWAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAVcAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBWAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFyAQkBAUYAAQFZAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFYAAkBAVIAAgAFAWUBAVoBAmFhCQC1CQIJAQF0AgUCYWEJAQFPAAUBZQECYWIBAmFjCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFjBQFIAQJhZAECYWMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWMFAUsBAmFlAQJhYwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYwUBRwECYWYBAmFjCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFjBQFOAQJhZwAEAXoJAKIIAQkBAVYAAwkAAQIFAXoCBlN0cmluZwQCYWgFAXoJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFoBQR0aGlzAQJhaQACCiVzX19jb25maWcBAmFqAAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAQJhawACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBAmFsAAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBAmFtAAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAmFuAQJhbwkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgUCYW8FA25pbAUBZQECYXABAmFxCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQJhcQUDbmlsBQFlAQJhcgECYXMJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFzCQDMCAICBmFtb3VudAUDbmlsBQFlAQJhdAECYXMJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFzCQDMCAICBXN0YXJ0BQNuaWwFAWUBAmF1AQJhcwkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYXMJAMwIAgIIZHVyYXRpb24FA25pbAUBZQECYXYBAmFzCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhcwkAzAgCAgFrBQNuaWwFAWUBAmF3AQJhcwkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYXMJAMwIAgIBYgUDbmlsBQFlAQJheAICYXMCYXkJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhcwkAzAgCAgFrCQDMCAIFAmF5BQNuaWwFAWUBAmF6AgJhcwJheQkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFAmFzCQDMCAICAWIJAMwIAgUCYXkFA25pbAUBZQECYUEBAmFzCQC5CQIJAMwIAgIeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQDMCAIFAmFzBQNuaWwFAWUBAmFCAQJhcwkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIFAmFzBQNuaWwFAWUBAmFDAAIYJXMlc19fbWF4Qm9vc3RJbnRfX3RvdGFsAQJhRAECYXMJALkJAgkAzAgCAiQlcyVkX191c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwJAMwIAgUCYXMFA25pbAUBZQECYUUBAmFzCQC5CQIJAMwIAgIWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkAzAgCBQJhcwUDbmlsBQFlAQJhRgACFiVzJXNfX2d3eENhY2hlZF9fdG90YWwBAmFHAgJhSAJhSQkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFAmFICQDMCAIFAmFJBQNuaWwFAWUBAmFKAQJhSQkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUCYUkBAmFLAgJhSQJhSAkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQJhSAkAzAgCBQJhSQUDbmlsBQFlAQJhTAICYUkCYUgJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUCYUgJAMwIAgUCYUkFA25pbAUBZQECYU0CAmFJAmFICQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUCYUgJAMwIAgUCYUkFA25pbAUBZQECYU4CAmFPAXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYU8FAXMAAAECYVAAAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFRAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhUgACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhUwACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYVQAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sAAmFVCQEBWAAAAmFWCQEBWgEFAmFVAAJhVwkBAmFkAQUCYVYAAmFPCQECYWUBBQJhVgACYVgJAQJhZgEFAmFWAAJhWQkBAmFiAQUCYVYBAmFaAQJiYQoAAmJiCQD8BwQFAmFVAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUCYmEFA25pbAUDbmlsAwkAAQIFAmJiAgNJbnQFAmJiCQACAQkArAICCQADAQUCYmICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYmMBAmJhCgACYmIJAPwHBAUCYVUCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUCYmEFA25pbAUDbmlsAwkAAQIFAmJiAgNJbnQFAmJiCQACAQkArAICCQADAQUCYmICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYmQBAmJlBAJiZgkBAXQCBQJhVQkBAVMBBQJiZQQCYmcFAWIEAmJoCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJhVQkBAVQBBQJiZgQCYmkJAQF3AgUCYVcJAQJhUAAEAmJqCQEBdwIFAmFXCQECYVEABAJiawoAAmJiCQD8BwQFAmFXAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJiAgNJbnQFAmJiCQACAQkArAICCQADAQUCYmICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCYmwJAGkCCQBrAwUCYmkFAmJoBQJiZwUCYmsEAmJtCQBrAwUCYmoFAmJoBQJiZwQCYm4JAGgCBQJiawUBYgQCYm8JAQF2AgUCYU8JAQJhSgEFAmJlCQDMCAIFAmJsCQDMCAIFAmJuCQDMCAIFAmJvBQNuaWwBAmJwAwJicQJicgJicwQCYnQJAGsDBQJicgUBYgUCYnMEAmJ1CQBrAwUCYnEFAmJ0BQFiCQDMCAIFAmJ1BQNuaWwBAmJ2AwJidwFzAmJ4AwkAAAIFAmJ4AgZzdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJ3BQFzAwkAAAIFAmJ4AgdpbnRlZ2VyCQCkAwEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmJ3BQFzAwkAAAIFAmJ4Agdib29sZWFuCQClAwEJARFAZXh0ck5hdGl2ZSgxMDUxKQIFAmJ3BQFzCQACAQItdW5rbm93biB0eXBlLiBleHBlY3RlZCBzdHJpbmcvaW50ZWdlci9ib29sZWFuAQJieQAEAmJ6CQECYWcABAF6CQCdCAIFAmJ6CQEBVwADCQABAgUBegIGU3RyaW5nBAJhaAUBegkA2QQBBQJhaAMJAAECBQF6AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmJBAQJiQgQBegkBAmJ5AAMJAAECBQF6AgpCeXRlVmVjdG9yBAJiQwUBegkAAAIIBQJiQg9jYWxsZXJQdWJsaWNLZXkFAmJDAwkAAQIFAXoCBFVuaXQJAAACCAUCYkIGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmJEAQJiQgMJAQJiQQEFAmJCBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkDwJiQgELY29uc3RydWN0b3IBAmJFBAJiRgkBAmJEAQUCYkIDCQAAAgUCYkYFAmJGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFGAAUCYkUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiQgEZY3VycmVudFJld2FyZFJhdGVSRUFET05MWQECYmUEAmJHCQECYmQBBQJiZQQCYmkJAJEDAgUCYkcAAAQCYm4JAJEDAgUCYkcAAQQCYm8JAJEDAgUCYkcAAgQCYkgKAAJiYgkA/AcEBQJhWQIdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkUkVBRE9OTFkJAMwIAgUCYmUFA25pbAUDbmlsAwkAAQIFAmJiAgNJbnQFAmJiCQACAQkArAICCQADAQUCYmICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAlAoCBQNuaWwJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJIBQNuaWwFAWUCYkIBHWN1cnJlbnRVc2VyUmV3YXJkUmF0ZVJFQURPTkxZAgJiZQJhbwQCYkcJAQJiZAEFAmJlBAJiaQkAkQMCBQJiRwAABAJibgkAkQMCBQJiRwABBAJibwkAkQMCBQJiRwACBAJiSQkBAXYCBQJhTwkBAmFHAgUCYW8FAmJlBAJiSgkAtQkCCQEBRAEJAPwHBAUCYU8CD2NsYWltV3hSRUFET05MWQkAzAgCBQJiZQkAzAgCBQJhbwUDbmlsBQNuaWwFAWUEAmJLCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQJiSgAFAhxjb3VsZG4ndCBwYXJzZSBtaW5SZXdhcmRQYXJ0BAJiTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUCYkoABgIeY291bGRuJ3QgcGFyc2UgYm9vc3RSZXdhcmRQYXJ0BAJiTQkAkQMCBQJiSgAHBAJiTgMJAAACBQJiTAAACQBoAgABBQFiCQBrAwkAZAIFAmJLBQJiTAUBYgUCYksJAJQKAgUDbmlsCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVzCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYkkJAMwIAgkApAMBBQJiTgkAzAgCBQJiTQUDbmlsBQFlAmJCAR1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQcCYk8CYlACYlECYlICYlMCYlQCYlUDCQAAAgUCYk8JAJADAQUCYlAJAJQKAgUDbmlsBQJiVQQCYlYJAJEDAgUCYlAFAmJPBAJiVwkAkQMCBQJiUQUCYk8EAmJYCQCRAwIFAmJSBQJiTwQCYlkJAJEDAgUCYlMFAmJPBAJiWgoAAmJiCQD8BwQFBHRoaXMCEWNhbGNCb29zdFJFQURPTkxZCQDMCAIFAmJWCQDMCAIFAmJXCQDMCAIFAmJYCQDMCAIFAmJZCQDMCAIFAmJUBQNuaWwFA25pbAMJAAECBQJiYgIGU3RyaW5nBQJiYgkAAgEJAKwCAgkAAwEFAmJiAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmNhCQDNCAIFAmJVBQJiWgQCY2IKAAJiYgkA/AcEBQR0aGlzAh1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgUCYk8AAQkAzAgCBQJiUAkAzAgCBQJiUQkAzAgCBQJiUgkAzAgCBQJiUwkAzAgCBQJiVAkAzAgCBQJjYQUDbmlsBQNuaWwDCQABAgUCYmICCUxpc3RbQW55XQUCYmIJAAIBCQCsAgIJAAMBBQJiYgIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFAmNiBQJjYgkAlAoCBQNuaWwFAmNiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJCARVjYWxjQm9vc3RCdWxrUkVBRE9OTFkFAmJWAmJXAmJYAmJZAmJUBAJjYQkA/AcEBQR0aGlzAh1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCAAAJAMwIAgUCYlYJAMwIAgUCYlcJAMwIAgUCYlgJAMwIAgUCYlkJAMwIAgUCYlQJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFAmNhAmJCARFjYWxjQm9vc3RSRUFET05MWQUCYlYCYlcCYlgCYlkCYlQEAmNjCgACYmIJAPwHBAUCYVcCFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYmICA0ludAUCYmIJAAIBCQCsAgIJAAMBBQJiYgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjZAUCYVgEAmNlAgVlbXB0eQQCY2YJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAQF0AgUCYVkJAQJhaQAFAWUABAQCYUkDCQAAAgUCYlkCAAUCY2UFAmJZBAJhSAMJAAACBQJiVAIABQJjZQUCYlQEAmNnCQELdmFsdWVPckVsc2UCCQCdCAIFAmFZCQECYW4BBQJiVAUCY2UEAmNoCQELdmFsdWVPckVsc2UCCQCaCAIFAmFZCQECYXIBBQJjZwAABAJjaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQJhWQkBAmF0AQUCY2cFBmhlaWdodAQCYnIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYVkJAQJhdQEFAmNnAAAEAmNqCQBkAgUCY2kFAmJyBAJjawkAlgMBCQDMCAIJAGUCBQJjagUGaGVpZ2h0CQDMCAIAAAUDbmlsBAJjbAkAZAIFAmNoBQJiVgQCY20JAJcDAQkAzAgCCQBkAgUCY2sFAmJXCQDMCAIFAmNmBQNuaWwEAmNuCQEBQgEJAJEDAgkBAXgBCQD8BwQFAmFZAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFAmFIBQNuaWwFA25pbAAABAJjbwkAkQMCCQECYnADBQJjbAUCY20FAmNmAAAEAmNwCgACYmIJAPwHBAUCYVkCGWdldFRvdGFsQ2FjaGVkR3d4UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJiAgNJbnQFAmJiCQACAQkArAICCQADAQUCYmICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCY3EA6AcEAmNyCQBoAgkBAXcCBQJhVwkBAmFQAAUCY3EEAmNzCQECYUcCBQJhSAUCYUkEAmN0CQECYUoBBQJhSQQCY3UJAQJhTgIFAmFPBQJjcwQCY3YJAQJhTgIFAmFPBQJjdAQCYmgDCQECIT0CBQJhSQUCY2UEAmJmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVUJAQFQAQUCYUkJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhSQkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVUJAQFUAQUCYmYAAAQCY3cJAGsDBQJjcgUCYmgJAGgCBQFmBQJjYwQCY3gDCQECIT0CBQJjdgAACQBrAwUCY3cFAWIFAmN2AAAEAmN5CQBrAwUCY3gFAmN1BQFiBAJjegkAaAIFAmN3CQBlAgUCY2MAAQQCY0EJAGsDBQJjbgUCY3oFAmNwBAJjQgkAlwMBCQDMCAIFAmNBCQDMCAIJAGgCBQJjeQkAZQIFAmNjAAEFA25pbAQCY0MDCQAAAgUCY3kAAAkAaAIAAQUBYgkAawMJAGQCBQJjQgUCY3kFAWIFAmN5CQCUCgIFA25pbAkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFAmNvCQDMCAIJAKQDAQUCY0MJAMwIAgIBZAUDbmlsBQFlAmJCARd3eEVtaXNzaW9uU3RhdHNSRUFET05MWQAEAmNECQCkAwEFAWIEAmNFAgExBAJiaQkBAXcCBQJhVwkBAmFQAAQCY0YJAQF3AgUCYVcJAQJhUgAEAmNHAwkAZgIFAmNGBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUCY0YEAmNICQBoAgCgCwDtAgQCY0kJAGgCAMCI7F8FAWIEAmNKAwkAZgIFAmNHBQJjSAUCY0kJAGsDBQJjSQUCY0cFAmNIBAJjSwkAZAIJAGgCBQJiaQUCY0cFAmNKBAJjTAkBAXYCBQJhWQkBAmFqAAQCY00J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BwcHBwkAAAIJAMYKAQUBegAKBwQCZEsIBQF6Al8xBAJkTAgFAXoCXzIEAmR6CAUBegJfNQQCZEEIBQF6Al82BAJkQggFAXoCXzcEAmRjCAUBegJfOAQCZHAIBQF6Al85CQCZCgcFAmRLBQJkTAUCZHoFAmRBBQJkQgUCZGMFAmRwCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQCZEsIBQJkSgJfMQQCZEwIBQJkSgJfMgQCZHoIBQJkSgJfMwQCZEEIBQJkSgJfNAQCZEIIBQJkSgJfNQQCZGMIBQJkSgJfNgQCZHAIBQJkSgJfNwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRLCQDMCAIJAKQDAQUCZEwJAMwIAgkApAMBBQJkegkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEIJAMwIAgUCZGMJAMwIAgUCZHAFA25pbAUBZQJiQgETZ3d4VXNlckluZm9SRUFET05MWQECYW8EAmRNCQEBeAEJAPwHBAUCYVkCE2d3eFVzZXJJbmZvUkVBRE9OTFkJAMwIAgUCYW8FA25pbAUDbmlsBAJkTgkBAUIBCQCRAwIFAmRNAAAJAJQKAgUDbmlsCQC5CQIJAMwIAgICJWQJAMwIAgkApAMBBQJkTgUDbmlsBQFlAmJCARV1bnN0YWtlQW5kR2V0T25lVGtuVjIEAmJhAmRPAmRQAmRRBAJjYgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQJiYQIVdW5zdGFrZUFuZEdldE9uZVRrblYyCQDMCAIFAmRPCQDMCAIFAmRQCQDMCAIFAmRRBQNuaWwFA25pbAMJAAACBQJjYgUCY2IJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJCARNnZXRLZXlzQnVsa0ludGVybmFsAwJiTwJkUgJiVQMJAAACBQJiTwkAkAMBBQJkUgkAlAoCBQNuaWwFAmJVBAJkUwkAtQkCCQCRAwIFAmRSBQJiTwICKysEAmJ3CQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmRTAAAEAXMJAJEDAgUCZFMAAQQCYngJAJEDAgUCZFMAAgQBeQkBAmJ2AwUCYncFAXMFAmJ4BAJjYQkAzQgCBQJiVQUBeQQCY2IJAPwHBAUEdGhpcwITZ2V0S2V5c0J1bGtJbnRlcm5hbAkAzAgCCQBkAgUCYk8AAQkAzAgCBQJkUgkAzAgCBQJjYQUDbmlsBQNuaWwDCQAAAgUCY2IFAmNiCQCUCgIFA25pbAUCY2IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYkIBC2dldEtleXNCdWxrAQJkUgQCY2EJAPwHBAUEdGhpcwITZ2V0S2V5c0J1bGtJbnRlcm5hbAkAzAgCAAAJAMwIAgUCZFIJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFAmNhAQJkVAECZFUABAJkVgQBegkBAmJ5AAMJAAECBQF6AgpCeXRlVmVjdG9yBAJiQwUBegUCYkMDCQABAgUBegIEVW5pdAgFAmRUD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkVAlib2R5Qnl0ZXMJAJEDAggFAmRUBnByb29mcwAABQJkVoUPJlo=", "height": 2714642, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hwgqr3CcNxEPcWdrLTREmK4tEcDnk1i1XqYTnQ9siYip Next: Aw2Cx2EUJnM5xy3E7RWtxHDEXMRNm8mMeBLtBARuJxF2 Diff:
Old | New | Differences | |
---|---|---|---|
547 | 547 | else throw(($getType(bb) + " couldn't be cast to Boolean")) | |
548 | 548 | } | |
549 | 549 | let di = !(dh) | |
550 | - | $Tuple2(nil, makeString([cQ, toString(cZ), toString(da), toString(cY), toString(dc), toString(dd), toString(de), toString(bh), toString(df), toString(dg), toString(di)], e)) | |
550 | + | let dj = !({ | |
551 | + | let bb = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(ba)], nil) | |
552 | + | if ($isInstanceOf(bb, "Boolean")) | |
553 | + | then bb | |
554 | + | else throw(($getType(bb) + " couldn't be cast to Boolean")) | |
555 | + | }) | |
556 | + | $Tuple2(nil, makeString([cQ, toString(cZ), toString(da), toString(cY), toString(dc), toString(dd), toString(de), toString(bh), toString(df), toString(dg), toString(di), toString(dj)], e)) | |
551 | 557 | } | |
552 | 558 | } | |
553 | 559 | ||
554 | 560 | ||
555 | 561 | ||
556 | 562 | @Callable(bB) | |
557 | - | func poolEvaluatePutByAmountAssetREADONLY (cO, | |
563 | + | func poolEvaluatePutByAmountAssetREADONLY (cO,dk) = { | |
558 | 564 | let ba = addressFromStringValue(t(aU, S(cO))) | |
559 | 565 | let cR = x(invoke(ba, "getPoolConfigWrapperREADONLY", nil, nil)) | |
560 | 566 | let be = fromBase58String(D(cR[j])) | |
561 | - | let | |
562 | - | let | |
563 | - | let | |
564 | - | let | |
567 | + | let dl = D(cR[k]) | |
568 | + | let dm = fromBase58String(dl) | |
569 | + | let dn = D(cR[l]) | |
570 | + | let do = fromBase58String(dn) | |
565 | 571 | let cW = parseIntValue(D(cR[m])) | |
566 | 572 | let cX = parseIntValue(D(cR[n])) | |
567 | - | let | |
573 | + | let dp = D(cR[i]) | |
568 | 574 | let cY = valueOrErrorMessage(assetInfo(be), (("Asset " + toBase58String(be)) + " doesn't exist")).quantity | |
569 | - | let cZ = B(invoke(ba, "getAccBalanceWrapperREADONLY", [ | |
570 | - | let da = B(invoke(ba, "getAccBalanceWrapperREADONLY", [ | |
571 | - | let | |
572 | - | let | |
573 | - | let | |
575 | + | let cZ = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dl], nil)) | |
576 | + | let da = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dn], nil)) | |
577 | + | let dq = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [cZ, cW], nil))) | |
578 | + | let dr = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [da, cX], nil))) | |
579 | + | let ds = if ((cY == 0)) | |
574 | 580 | then g | |
575 | - | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString( | |
576 | - | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString( | |
577 | - | let | |
578 | - | let | |
579 | - | let | |
580 | - | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, | |
581 | - | let | |
581 | + | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString(dr), toString(dq)], nil))) | |
582 | + | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString(ds), b], nil)) | |
583 | + | let dt = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dk, cW], nil))) | |
584 | + | let du = fraction(dt, ds, d) | |
585 | + | let dv = B(invoke(ba, "fromX18WrapperREADONLY", [toString(du), cX], nil)) | |
586 | + | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil) | |
587 | + | let dw = { | |
582 | 588 | let z = ca | |
583 | 589 | if (if (if ($isInstanceOf(z._1, "Int")) | |
584 | 590 | then if ($isInstanceOf(z._3, "Int")) | |
592 | 598 | then (size(z) == 13) | |
593 | 599 | else false) | |
594 | 600 | then { | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | $Tuple5( | |
601 | + | let dx = z._1 | |
602 | + | let dy = z._3 | |
603 | + | let dz = z._4 | |
604 | + | let dA = z._5 | |
605 | + | let dB = z._6 | |
606 | + | $Tuple5(dx, dy, dz, dA, dB) | |
601 | 607 | } | |
602 | 608 | else throw("Couldn't cast types") | |
603 | 609 | } | |
604 | - | let | |
605 | - | let | |
606 | - | let | |
607 | - | let | |
608 | - | let | |
609 | - | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString( | |
610 | + | let dx = dw._1 | |
611 | + | let dy = dw._2 | |
612 | + | let dz = dw._3 | |
613 | + | let dA = dw._4 | |
614 | + | let dB = dw._5 | |
615 | + | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dc), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e)) | |
610 | 616 | } | |
611 | 617 | ||
612 | 618 | ||
613 | 619 | ||
614 | 620 | @Callable(bB) | |
615 | - | func poolEvaluatePutByPriceAssetREADONLY (cO, | |
621 | + | func poolEvaluatePutByPriceAssetREADONLY (cO,dv) = { | |
616 | 622 | let ba = addressFromStringValue(t(aU, S(cO))) | |
617 | 623 | let cR = x(invoke(ba, "getPoolConfigWrapperREADONLY", nil, nil)) | |
618 | 624 | let be = fromBase58String(D(cR[j])) | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
622 | - | let | |
625 | + | let dl = D(cR[k]) | |
626 | + | let dm = fromBase58String(dl) | |
627 | + | let dn = D(cR[l]) | |
628 | + | let do = fromBase58String(dn) | |
623 | 629 | let cW = parseIntValue(D(cR[m])) | |
624 | 630 | let cX = parseIntValue(D(cR[n])) | |
625 | - | let | |
631 | + | let dp = D(cR[i]) | |
626 | 632 | let cY = valueOrErrorMessage(assetInfo(be), (("Asset " + toBase58String(be)) + " doesn't exist")).quantity | |
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
633 | + | let dC = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dl], nil)) | |
634 | + | let dD = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dn], nil)) | |
635 | + | let dE = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dC, cW], nil))) | |
636 | + | let dF = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dD, cX], nil))) | |
637 | + | let ds = if ((cY == 0)) | |
632 | 638 | then g | |
633 | - | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString( | |
634 | - | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString( | |
635 | - | let | |
636 | - | let | |
637 | - | let | |
638 | - | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, | |
639 | - | let | |
639 | + | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil))) | |
640 | + | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString(ds), b], nil)) | |
641 | + | let du = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dv, cX], nil))) | |
642 | + | let dt = fraction(du, d, ds) | |
643 | + | let dk = B(invoke(ba, "fromX18WrapperREADONLY", [toString(dt), cW], nil)) | |
644 | + | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil) | |
645 | + | let dG = { | |
640 | 646 | let z = ca | |
641 | 647 | if (if (if ($isInstanceOf(z._1, "Int")) | |
642 | 648 | then if ($isInstanceOf(z._3, "Int")) | |
650 | 656 | then (size(z) == 13) | |
651 | 657 | else false) | |
652 | 658 | then { | |
653 | - | let | |
654 | - | let | |
655 | - | let | |
656 | - | let | |
657 | - | let | |
658 | - | $Tuple5( | |
659 | + | let dx = z._1 | |
660 | + | let dy = z._3 | |
661 | + | let dz = z._4 | |
662 | + | let dA = z._5 | |
663 | + | let dB = z._6 | |
664 | + | $Tuple5(dx, dy, dz, dA, dB) | |
659 | 665 | } | |
660 | 666 | else throw("Couldn't cast types") | |
661 | 667 | } | |
662 | - | let | |
663 | - | let | |
664 | - | let | |
665 | - | let | |
666 | - | let | |
667 | - | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString( | |
668 | + | let dx = dG._1 | |
669 | + | let dy = dG._2 | |
670 | + | let dz = dG._3 | |
671 | + | let dA = dG._4 | |
672 | + | let dB = dG._5 | |
673 | + | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dc), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e)) | |
668 | 674 | } | |
669 | 675 | ||
670 | 676 | ||
671 | 677 | ||
672 | 678 | @Callable(bB) | |
673 | - | func poolEvaluateGetREADONLY ( | |
674 | - | let ba = addressFromStringValue(t(aU, S( | |
675 | - | let ca = invoke(ba, "estimateGetOperationWrapperREADONLY", ["", | |
676 | - | let | |
679 | + | func poolEvaluateGetREADONLY (dH,dI) = { | |
680 | + | let ba = addressFromStringValue(t(aU, S(dH))) | |
681 | + | let ca = invoke(ba, "estimateGetOperationWrapperREADONLY", ["", dH, dI, toString(ba)], nil) | |
682 | + | let dJ = { | |
677 | 683 | let z = ca | |
678 | 684 | if (if (if ($isInstanceOf(z._1, "Int")) | |
679 | 685 | then if ($isInstanceOf(z._2, "Int")) | |
691 | 697 | then (size(z) == 10) | |
692 | 698 | else false) | |
693 | 699 | then { | |
694 | - | let | |
695 | - | let | |
696 | - | let | |
697 | - | let | |
698 | - | let | |
700 | + | let dK = z._1 | |
701 | + | let dL = z._2 | |
702 | + | let dz = z._5 | |
703 | + | let dA = z._6 | |
704 | + | let dB = z._7 | |
699 | 705 | let dc = z._8 | |
700 | - | let | |
701 | - | $Tuple7( | |
706 | + | let dp = z._9 | |
707 | + | $Tuple7(dK, dL, dz, dA, dB, dc, dp) | |
702 | 708 | } | |
703 | 709 | else throw("Couldn't cast types") | |
704 | 710 | } | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | let | |
710 | - | let dc = | |
711 | - | let | |
712 | - | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString( | |
711 | + | let dK = dJ._1 | |
712 | + | let dL = dJ._2 | |
713 | + | let dz = dJ._3 | |
714 | + | let dA = dJ._4 | |
715 | + | let dB = dJ._5 | |
716 | + | let dc = dJ._6 | |
717 | + | let dp = dJ._7 | |
718 | + | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dz), toString(dA), toString(dB), dc, dp], e)) | |
713 | 719 | } | |
714 | 720 | ||
715 | 721 | ||
716 | 722 | ||
717 | 723 | @Callable(bB) | |
718 | 724 | func gwxUserInfoREADONLY (ao) = { | |
719 | - | let | |
720 | - | let | |
721 | - | $Tuple2(nil, makeString(["%d", toString( | |
725 | + | let dM = x(invoke(aY, "gwxUserInfoREADONLY", [ao], nil)) | |
726 | + | let dN = B(dM[0]) | |
727 | + | $Tuple2(nil, makeString(["%d", toString(dN)], e)) | |
722 | 728 | } | |
723 | 729 | ||
724 | 730 | ||
725 | 731 | ||
726 | 732 | @Callable(bB) | |
727 | - | func unstakeAndGetOneTknV2 (ba, | |
728 | - | let cb = invoke(addressFromStringValue(ba), "unstakeAndGetOneTknV2", [ | |
733 | + | func unstakeAndGetOneTknV2 (ba,dO,dP,dQ) = { | |
734 | + | let cb = invoke(addressFromStringValue(ba), "unstakeAndGetOneTknV2", [dO, dP, dQ], nil) | |
729 | 735 | if ((cb == cb)) | |
730 | 736 | then $Tuple2(nil, unit) | |
731 | 737 | else throw("Strict value is not equal to itself.") | |
734 | 740 | ||
735 | 741 | ||
736 | 742 | @Callable(bB) | |
737 | - | func getKeysBulkInternal (bO, | |
743 | + | func getKeysBulkInternal (bO,dR,bU) = if ((bO == size(dR))) | |
738 | 744 | then $Tuple2(nil, bU) | |
739 | 745 | else { | |
740 | - | let | |
741 | - | let bw = addressFromStringValue( | |
742 | - | let s = | |
743 | - | let bx = | |
746 | + | let dS = split(dR[bO], "++") | |
747 | + | let bw = addressFromStringValue(dS[0]) | |
748 | + | let s = dS[1] | |
749 | + | let bx = dS[2] | |
744 | 750 | let y = bv(bw, s, bx) | |
745 | 751 | let ca = (bU :+ y) | |
746 | - | let cb = invoke(this, "getKeysBulkInternal", [(bO + 1), | |
752 | + | let cb = invoke(this, "getKeysBulkInternal", [(bO + 1), dR, ca], nil) | |
747 | 753 | if ((cb == cb)) | |
748 | 754 | then $Tuple2(nil, cb) | |
749 | 755 | else throw("Strict value is not equal to itself.") | |
752 | 758 | ||
753 | 759 | ||
754 | 760 | @Callable(bB) | |
755 | - | func getKeysBulk ( | |
756 | - | let ca = invoke(this, "getKeysBulkInternal", [0, | |
761 | + | func getKeysBulk (dR) = { | |
762 | + | let ca = invoke(this, "getKeysBulkInternal", [0, dR, nil], nil) | |
757 | 763 | $Tuple2(nil, ca) | |
758 | 764 | } | |
759 | 765 | ||
760 | 766 | ||
761 | - | @Verifier( | |
762 | - | func | |
763 | - | let | |
767 | + | @Verifier(dT) | |
768 | + | func dU () = { | |
769 | + | let dV = { | |
764 | 770 | let z = by() | |
765 | 771 | if ($isInstanceOf(z, "ByteVector")) | |
766 | 772 | then { | |
768 | 774 | bC | |
769 | 775 | } | |
770 | 776 | else if ($isInstanceOf(z, "Unit")) | |
771 | - | then | |
777 | + | then dT.senderPublicKey | |
772 | 778 | else throw("Match error") | |
773 | 779 | } | |
774 | - | sigVerify( | |
780 | + | sigVerify(dT.bodyBytes, dT.proofs[0], dV) | |
775 | 781 | } | |
776 | 782 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 8 | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 18 | |
9 | 9 | ||
10 | 10 | let d = toBigInt(1000000000000000000) | |
11 | 11 | ||
12 | 12 | let e = "__" | |
13 | 13 | ||
14 | 14 | let f = b | |
15 | 15 | ||
16 | 16 | let g = toBigInt(0) | |
17 | 17 | ||
18 | 18 | let h = 1 | |
19 | 19 | ||
20 | 20 | let i = 2 | |
21 | 21 | ||
22 | 22 | let j = 3 | |
23 | 23 | ||
24 | 24 | let k = 4 | |
25 | 25 | ||
26 | 26 | let l = 5 | |
27 | 27 | ||
28 | 28 | let m = 6 | |
29 | 29 | ||
30 | 30 | let n = 7 | |
31 | 31 | ||
32 | 32 | let o = 8 | |
33 | 33 | ||
34 | 34 | let p = 9 | |
35 | 35 | ||
36 | 36 | let q = 10 | |
37 | 37 | ||
38 | 38 | func r (s) = valueOrErrorMessage(getString(s), (("mandatory this." + s) + " is not defined")) | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func t (u,s) = valueOrErrorMessage(getString(u, s), (((("mandatory " + toString(u)) + ".") + s) + " is not defined")) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func v (u,s) = valueOrElse(getInteger(u, s), 0) | |
45 | 45 | ||
46 | 46 | ||
47 | 47 | func w (u,s) = valueOrErrorMessage(getInteger(u, s), (("mandatory this." + s) + " is not defined")) | |
48 | 48 | ||
49 | 49 | ||
50 | 50 | func x (y) = { | |
51 | 51 | let z = y | |
52 | 52 | if ($isInstanceOf(z, "List[Any]")) | |
53 | 53 | then { | |
54 | 54 | let A = z | |
55 | 55 | A | |
56 | 56 | } | |
57 | 57 | else throw("fail to cast into List[Any]") | |
58 | 58 | } | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | func B (y) = { | |
62 | 62 | let z = y | |
63 | 63 | if ($isInstanceOf(z, "Int")) | |
64 | 64 | then { | |
65 | 65 | let C = z | |
66 | 66 | C | |
67 | 67 | } | |
68 | 68 | else throw("fail to cast into Int") | |
69 | 69 | } | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func D (y) = { | |
73 | 73 | let z = y | |
74 | 74 | if ($isInstanceOf(z, "String")) | |
75 | 75 | then { | |
76 | 76 | let E = z | |
77 | 77 | E | |
78 | 78 | } | |
79 | 79 | else throw("fail to cast into String") | |
80 | 80 | } | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func F () = "%s%s__config__factoryAddress" | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | let G = 1 | |
87 | 87 | ||
88 | 88 | let H = 2 | |
89 | 89 | ||
90 | 90 | let I = 3 | |
91 | 91 | ||
92 | 92 | let J = 4 | |
93 | 93 | ||
94 | 94 | let K = 5 | |
95 | 95 | ||
96 | 96 | let L = 6 | |
97 | 97 | ||
98 | 98 | let M = 7 | |
99 | 99 | ||
100 | 100 | let N = 8 | |
101 | 101 | ||
102 | 102 | func O () = "%s__factoryConfig" | |
103 | 103 | ||
104 | 104 | ||
105 | 105 | func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e) | |
106 | 106 | ||
107 | 107 | ||
108 | 108 | func R () = "%s__lpTokensList" | |
109 | 109 | ||
110 | 110 | ||
111 | 111 | func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e) | |
112 | 112 | ||
113 | 113 | ||
114 | 114 | func T (U) = makeString(["%s%s", "poolWeight", U], e) | |
115 | 115 | ||
116 | 116 | ||
117 | 117 | func V () = "%s__managerVaultAddress" | |
118 | 118 | ||
119 | 119 | ||
120 | 120 | func W () = "%s__managerPublicKey" | |
121 | 121 | ||
122 | 122 | ||
123 | 123 | func X () = addressFromStringValue(r(F())) | |
124 | 124 | ||
125 | 125 | ||
126 | 126 | func Y () = split(valueOrElse(getString(X(), R()), ""), e) | |
127 | 127 | ||
128 | 128 | ||
129 | 129 | func Z (aa) = split(t(aa, O()), e) | |
130 | 130 | ||
131 | 131 | ||
132 | 132 | func ab (ac) = addressFromStringValue(ac[H]) | |
133 | 133 | ||
134 | 134 | ||
135 | 135 | func ad (ac) = addressFromStringValue(ac[K]) | |
136 | 136 | ||
137 | 137 | ||
138 | 138 | func ae (ac) = addressFromStringValue(ac[G]) | |
139 | 139 | ||
140 | 140 | ||
141 | 141 | func af (ac) = addressFromStringValue(ac[N]) | |
142 | 142 | ||
143 | 143 | ||
144 | 144 | func ag () = { | |
145 | 145 | let z = getString(V()) | |
146 | 146 | if ($isInstanceOf(z, "String")) | |
147 | 147 | then { | |
148 | 148 | let ah = z | |
149 | 149 | addressFromStringValue(ah) | |
150 | 150 | } | |
151 | 151 | else this | |
152 | 152 | } | |
153 | 153 | ||
154 | 154 | ||
155 | 155 | func ai () = "%s__config" | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | func aj () = "%s%s__stats__activeTotalLocked" | |
159 | 159 | ||
160 | 160 | ||
161 | 161 | func ak () = "%s%s__stats__locksDurationSumInBlocks" | |
162 | 162 | ||
163 | 163 | ||
164 | 164 | func al () = "%s%s__stats__locksCount" | |
165 | 165 | ||
166 | 166 | ||
167 | 167 | func am () = "%s%s__stats__activeUsersCount" | |
168 | 168 | ||
169 | 169 | ||
170 | 170 | func an (ao) = makeString(["%s%s%s__mapping__user2num", ao], e) | |
171 | 171 | ||
172 | 172 | ||
173 | 173 | func ap (aq) = makeString(["%s%s%s__mapping__num2user", aq], e) | |
174 | 174 | ||
175 | 175 | ||
176 | 176 | func ar (as) = makeString(["%s%d%s__paramByUserNum", as, "amount"], e) | |
177 | 177 | ||
178 | 178 | ||
179 | 179 | func at (as) = makeString(["%s%d%s__paramByUserNum", as, "start"], e) | |
180 | 180 | ||
181 | 181 | ||
182 | 182 | func au (as) = makeString(["%s%d%s__paramByUserNum", as, "duration"], e) | |
183 | 183 | ||
184 | 184 | ||
185 | 185 | func av (as) = makeString(["%s%d%s__paramByUserNum", as, "k"], e) | |
186 | 186 | ||
187 | 187 | ||
188 | 188 | func aw (as) = makeString(["%s%d%s__paramByUserNum", as, "b"], e) | |
189 | 189 | ||
190 | 190 | ||
191 | 191 | func ax (as,ay) = makeString(["%s%d%s%d__paramByPeriod", as, "k", ay], e) | |
192 | 192 | ||
193 | 193 | ||
194 | 194 | func az (as,ay) = makeString(["%s%d%s%d__paramByPeriod", as, "b", ay], e) | |
195 | 195 | ||
196 | 196 | ||
197 | 197 | func aA (as) = makeString(["%s%d__userBoostEmissionLastInt", as], e) | |
198 | 198 | ||
199 | 199 | ||
200 | 200 | func aB (as) = makeString(["%s%d__maxBoostInt", as], e) | |
201 | 201 | ||
202 | 202 | ||
203 | 203 | func aC () = "%s%s__maxBoostInt__total" | |
204 | 204 | ||
205 | 205 | ||
206 | 206 | func aD (as) = makeString(["%s%d__userBoostAvaliableToClaimTotal", as], e) | |
207 | 207 | ||
208 | 208 | ||
209 | 209 | func aE (as) = makeString(["%s%d__userBoostClaimed", as], e) | |
210 | 210 | ||
211 | 211 | ||
212 | 212 | func aF () = "%s%s__gwxCached__total" | |
213 | 213 | ||
214 | 214 | ||
215 | 215 | func aG (aH,aI) = makeString(["%s%s%s__staked", aH, aI], e) | |
216 | 216 | ||
217 | 217 | ||
218 | 218 | func aJ (aI) = ("%s%s%s__staked__total__" + aI) | |
219 | 219 | ||
220 | 220 | ||
221 | 221 | func aK (aI,aH) = makeString(["%s%s%s__claimed", aH, aI], e) | |
222 | 222 | ||
223 | 223 | ||
224 | 224 | func aL (aI,aH) = makeString(["%s%s%s__claimedMinReward", aH, aI], e) | |
225 | 225 | ||
226 | 226 | ||
227 | 227 | func aM (aI,aH) = makeString(["%s%s%s__claimedBoostReward", aH, aI], e) | |
228 | 228 | ||
229 | 229 | ||
230 | 230 | func aN (aO,s) = valueOrElse(getInteger(aO, s), 0) | |
231 | 231 | ||
232 | 232 | ||
233 | 233 | func aP () = "%s%s__ratePerBlock__current" | |
234 | 234 | ||
235 | 235 | ||
236 | 236 | func aQ () = "%s%s__ratePerBlockMax__current" | |
237 | 237 | ||
238 | 238 | ||
239 | 239 | func aR () = "%s%s__emission__startBlock" | |
240 | 240 | ||
241 | 241 | ||
242 | 242 | func aS () = "%s%s__emission__duration" | |
243 | 243 | ||
244 | 244 | ||
245 | 245 | func aT () = "%s%s__emission__endBlock" | |
246 | 246 | ||
247 | 247 | ||
248 | 248 | let aU = X() | |
249 | 249 | ||
250 | 250 | let aV = Z(aU) | |
251 | 251 | ||
252 | 252 | let aW = ad(aV) | |
253 | 253 | ||
254 | 254 | let aO = ae(aV) | |
255 | 255 | ||
256 | 256 | let aX = af(aV) | |
257 | 257 | ||
258 | 258 | let aY = ab(aV) | |
259 | 259 | ||
260 | 260 | func aZ (ba) = { | |
261 | 261 | let bb = invoke(aU, "getInFeeREADONLY", [toString(ba)], nil) | |
262 | 262 | if ($isInstanceOf(bb, "Int")) | |
263 | 263 | then bb | |
264 | 264 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
265 | 265 | } | |
266 | 266 | ||
267 | 267 | ||
268 | 268 | func bc (ba) = { | |
269 | 269 | let bb = invoke(aU, "getOutFeeREADONLY", [toString(ba)], nil) | |
270 | 270 | if ($isInstanceOf(bb, "Int")) | |
271 | 271 | then bb | |
272 | 272 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
273 | 273 | } | |
274 | 274 | ||
275 | 275 | ||
276 | 276 | func bd (be) = { | |
277 | 277 | let bf = t(aU, S(be)) | |
278 | 278 | let bg = b | |
279 | 279 | let bh = getIntegerValue(aU, T(bf)) | |
280 | 280 | let bi = w(aW, aP()) | |
281 | 281 | let bj = w(aW, aQ()) | |
282 | 282 | let bk = { | |
283 | 283 | let bb = invoke(aW, "getBoostCoeffREADONLY", nil, nil) | |
284 | 284 | if ($isInstanceOf(bb, "Int")) | |
285 | 285 | then bb | |
286 | 286 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
287 | 287 | } | |
288 | 288 | let bl = (fraction(bi, bh, bg) / bk) | |
289 | 289 | let bm = fraction(bj, bh, bg) | |
290 | 290 | let bn = (bk * b) | |
291 | 291 | let bo = v(aO, aJ(be)) | |
292 | 292 | [bl, bn, bo] | |
293 | 293 | } | |
294 | 294 | ||
295 | 295 | ||
296 | 296 | func bp (bq,br,bs) = { | |
297 | 297 | let bt = fraction(br, b, bs) | |
298 | 298 | let bu = fraction(bq, bt, b) | |
299 | 299 | [bu] | |
300 | 300 | } | |
301 | 301 | ||
302 | 302 | ||
303 | 303 | func bv (bw,s,bx) = if ((bx == "string")) | |
304 | 304 | then getStringValue(bw, s) | |
305 | 305 | else if ((bx == "integer")) | |
306 | 306 | then toString(getIntegerValue(bw, s)) | |
307 | 307 | else if ((bx == "boolean")) | |
308 | 308 | then toString(getBooleanValue(bw, s)) | |
309 | 309 | else throw("unknown type. expected string/integer/boolean") | |
310 | 310 | ||
311 | 311 | ||
312 | 312 | func by () = { | |
313 | 313 | let bz = ag() | |
314 | 314 | let z = getString(bz, W()) | |
315 | 315 | if ($isInstanceOf(z, "String")) | |
316 | 316 | then { | |
317 | 317 | let ah = z | |
318 | 318 | fromBase58String(ah) | |
319 | 319 | } | |
320 | 320 | else if ($isInstanceOf(z, "Unit")) | |
321 | 321 | then unit | |
322 | 322 | else throw("Match error") | |
323 | 323 | } | |
324 | 324 | ||
325 | 325 | ||
326 | 326 | func bA (bB) = { | |
327 | 327 | let z = by() | |
328 | 328 | if ($isInstanceOf(z, "ByteVector")) | |
329 | 329 | then { | |
330 | 330 | let bC = z | |
331 | 331 | (bB.callerPublicKey == bC) | |
332 | 332 | } | |
333 | 333 | else if ($isInstanceOf(z, "Unit")) | |
334 | 334 | then (bB.caller == this) | |
335 | 335 | else throw("Match error") | |
336 | 336 | } | |
337 | 337 | ||
338 | 338 | ||
339 | 339 | func bD (bB) = if (bA(bB)) | |
340 | 340 | then true | |
341 | 341 | else throw("permission denied") | |
342 | 342 | ||
343 | 343 | ||
344 | 344 | @Callable(bB) | |
345 | 345 | func constructor (bE) = { | |
346 | 346 | let bF = bD(bB) | |
347 | 347 | if ((bF == bF)) | |
348 | 348 | then [StringEntry(F(), bE)] | |
349 | 349 | else throw("Strict value is not equal to itself.") | |
350 | 350 | } | |
351 | 351 | ||
352 | 352 | ||
353 | 353 | ||
354 | 354 | @Callable(bB) | |
355 | 355 | func currentRewardRateREADONLY (be) = { | |
356 | 356 | let bG = bd(be) | |
357 | 357 | let bi = bG[0] | |
358 | 358 | let bn = bG[1] | |
359 | 359 | let bo = bG[2] | |
360 | 360 | let bH = { | |
361 | 361 | let bb = invoke(aY, "getVotingResultStakedREADONLY", [be], nil) | |
362 | 362 | if ($isInstanceOf(bb, "Int")) | |
363 | 363 | then bb | |
364 | 364 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
365 | 365 | } | |
366 | 366 | $Tuple2(nil, makeString(["%d%d%d%d", toString(bi), toString(bn), toString(bo), toString(bH)], e)) | |
367 | 367 | } | |
368 | 368 | ||
369 | 369 | ||
370 | 370 | ||
371 | 371 | @Callable(bB) | |
372 | 372 | func currentUserRewardRateREADONLY (be,ao) = { | |
373 | 373 | let bG = bd(be) | |
374 | 374 | let bi = bG[0] | |
375 | 375 | let bn = bG[1] | |
376 | 376 | let bo = bG[2] | |
377 | 377 | let bI = v(aO, aG(ao, be)) | |
378 | 378 | let bJ = split(D(invoke(aO, "claimWxREADONLY", [be, ao], nil)), e) | |
379 | 379 | let bK = valueOrErrorMessage(parseInt(bJ[5]), "couldn't parse minRewardPart") | |
380 | 380 | let bL = valueOrErrorMessage(parseInt(bJ[6]), "couldn't parse boostRewardPart") | |
381 | 381 | let bM = bJ[7] | |
382 | 382 | let bN = if ((bL == 0)) | |
383 | 383 | then (1 * b) | |
384 | 384 | else fraction((bK + bL), b, bK) | |
385 | 385 | $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bi), toString(bn), toString(bo), toString(bI), toString(bN), bM], e)) | |
386 | 386 | } | |
387 | 387 | ||
388 | 388 | ||
389 | 389 | ||
390 | 390 | @Callable(bB) | |
391 | 391 | func calcBoostBulkInternalREADONLY (bO,bP,bQ,bR,bS,bT,bU) = if ((bO == size(bP))) | |
392 | 392 | then $Tuple2(nil, bU) | |
393 | 393 | else { | |
394 | 394 | let bV = bP[bO] | |
395 | 395 | let bW = bQ[bO] | |
396 | 396 | let bX = bR[bO] | |
397 | 397 | let bY = bS[bO] | |
398 | 398 | let bZ = { | |
399 | 399 | let bb = invoke(this, "calcBoostREADONLY", [bV, bW, bX, bY, bT], nil) | |
400 | 400 | if ($isInstanceOf(bb, "String")) | |
401 | 401 | then bb | |
402 | 402 | else throw(($getType(bb) + " couldn't be cast to String")) | |
403 | 403 | } | |
404 | 404 | let ca = (bU :+ bZ) | |
405 | 405 | let cb = { | |
406 | 406 | let bb = invoke(this, "calcBoostBulkInternalREADONLY", [(bO + 1), bP, bQ, bR, bS, bT, ca], nil) | |
407 | 407 | if ($isInstanceOf(bb, "List[Any]")) | |
408 | 408 | then bb | |
409 | 409 | else throw(($getType(bb) + " couldn't be cast to List[Any]")) | |
410 | 410 | } | |
411 | 411 | if ((cb == cb)) | |
412 | 412 | then $Tuple2(nil, cb) | |
413 | 413 | else throw("Strict value is not equal to itself.") | |
414 | 414 | } | |
415 | 415 | ||
416 | 416 | ||
417 | 417 | ||
418 | 418 | @Callable(bB) | |
419 | 419 | func calcBoostBulkREADONLY (bV,bW,bX,bY,bT) = { | |
420 | 420 | let ca = invoke(this, "calcBoostBulkInternalREADONLY", [0, bV, bW, bX, bY, bT, nil], nil) | |
421 | 421 | $Tuple2(nil, ca) | |
422 | 422 | } | |
423 | 423 | ||
424 | 424 | ||
425 | 425 | ||
426 | 426 | @Callable(bB) | |
427 | 427 | func calcBoostREADONLY (bV,bW,bX,bY,bT) = { | |
428 | 428 | let cc = { | |
429 | 429 | let bb = invoke(aW, "getBoostCoeffREADONLY", nil, nil) | |
430 | 430 | if ($isInstanceOf(bb, "Int")) | |
431 | 431 | then bb | |
432 | 432 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
433 | 433 | } | |
434 | 434 | let cd = aX | |
435 | 435 | let ce = "empty" | |
436 | 436 | let cf = parseIntValue(split(t(aY, ai()), e)[4]) | |
437 | 437 | let aI = if ((bY == "")) | |
438 | 438 | then ce | |
439 | 439 | else bY | |
440 | 440 | let aH = if ((bT == "")) | |
441 | 441 | then ce | |
442 | 442 | else bT | |
443 | 443 | let cg = valueOrElse(getString(aY, an(bT)), ce) | |
444 | 444 | let ch = valueOrElse(getInteger(aY, ar(cg)), 0) | |
445 | 445 | let ci = valueOrElse(getInteger(aY, at(cg)), height) | |
446 | 446 | let br = valueOrElse(getInteger(aY, au(cg)), 0) | |
447 | 447 | let cj = (ci + br) | |
448 | 448 | let ck = max([(cj - height), 0]) | |
449 | 449 | let cl = (ch + bV) | |
450 | 450 | let cm = min([(ck + bW), cf]) | |
451 | 451 | let cn = B(x(invoke(aY, "gwxUserInfoREADONLY", [aH], nil))[0]) | |
452 | 452 | let co = bp(cl, cm, cf)[0] | |
453 | 453 | let cp = { | |
454 | 454 | let bb = invoke(aY, "getTotalCachedGwxREADONLY", nil, nil) | |
455 | 455 | if ($isInstanceOf(bb, "Int")) | |
456 | 456 | then bb | |
457 | 457 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
458 | 458 | } | |
459 | 459 | let cq = 1000 | |
460 | 460 | let cr = (w(aW, aP()) * cq) | |
461 | 461 | let cs = aG(aH, aI) | |
462 | 462 | let ct = aJ(aI) | |
463 | 463 | let cu = aN(aO, cs) | |
464 | 464 | let cv = aN(aO, ct) | |
465 | 465 | let bh = if ((aI != ce)) | |
466 | 466 | then { | |
467 | 467 | let bf = valueOrErrorMessage(getString(aU, P(aI)), ("unsupported lp asset " + aI)) | |
468 | 468 | getIntegerValue(aU, T(bf)) | |
469 | 469 | } | |
470 | 470 | else 0 | |
471 | 471 | let cw = fraction(cr, bh, (f * cc)) | |
472 | 472 | let cx = if ((cv != 0)) | |
473 | 473 | then fraction(cw, b, cv) | |
474 | 474 | else 0 | |
475 | 475 | let cy = fraction(cx, cu, b) | |
476 | 476 | let cz = (cw * (cc - 1)) | |
477 | 477 | let cA = fraction(cn, cz, cp) | |
478 | 478 | let cB = min([cA, (cy * (cc - 1))]) | |
479 | 479 | let cC = if ((cy == 0)) | |
480 | 480 | then (1 * b) | |
481 | 481 | else fraction((cB + cy), b, cy) | |
482 | 482 | $Tuple2(nil, makeString(["%d%d%s", toString(co), toString(cC), "d"], e)) | |
483 | 483 | } | |
484 | 484 | ||
485 | 485 | ||
486 | 486 | ||
487 | 487 | @Callable(bB) | |
488 | 488 | func wxEmissionStatsREADONLY () = { | |
489 | 489 | let cD = toString(b) | |
490 | 490 | let cE = "1" | |
491 | 491 | let bi = w(aW, aP()) | |
492 | 492 | let cF = w(aW, aR()) | |
493 | 493 | let cG = if ((cF > height)) | |
494 | 494 | then 0 | |
495 | 495 | else (height - cF) | |
496 | 496 | let cH = (1440 * 365) | |
497 | 497 | let cI = (201000000 * b) | |
498 | 498 | let cJ = if ((cG > cH)) | |
499 | 499 | then cI | |
500 | 500 | else fraction(cI, cG, cH) | |
501 | 501 | let cK = ((bi * cG) + cJ) | |
502 | 502 | let cL = v(aY, aj()) | |
503 | 503 | let cM = v(aY, ak()) | |
504 | 504 | let cN = v(aY, al()) | |
505 | 505 | $Tuple2(nil, makeString(["%d%d%d%d", toString(cK), toString(cL), toString(cM), toString(cN)], e)) | |
506 | 506 | } | |
507 | 507 | ||
508 | 508 | ||
509 | 509 | ||
510 | 510 | @Callable(bB) | |
511 | 511 | func poolStatsREADONLY (cO) = { | |
512 | 512 | let ba = addressFromStringValue(t(aU, S(cO))) | |
513 | 513 | let cP = { | |
514 | 514 | let bb = invoke(aU, "getPoolStatusREADONLY", [toString(ba)], nil) | |
515 | 515 | if ($isInstanceOf(bb, "Int")) | |
516 | 516 | then bb | |
517 | 517 | else throw(($getType(bb) + " couldn't be cast to Int")) | |
518 | 518 | } | |
519 | 519 | let cQ = "%d%d%d%d%d%d%d%d%d%s" | |
520 | 520 | if ((cP == 4)) | |
521 | 521 | then $Tuple2(nil, makeString([cQ, toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(false)], e)) | |
522 | 522 | else { | |
523 | 523 | let cR = x(invoke(ba, "getPoolConfigWrapperREADONLY", nil, nil)) | |
524 | 524 | let be = fromBase58String(D(cR[j])) | |
525 | 525 | let cS = D(cR[k]) | |
526 | 526 | let cT = D(cR[l]) | |
527 | 527 | let cU = D(cR[o]) | |
528 | 528 | let cV = D(cR[p]) | |
529 | 529 | let cW = parseIntValue(D(cR[m])) | |
530 | 530 | let cX = parseIntValue(D(cR[n])) | |
531 | 531 | let cY = valueOrErrorMessage(assetInfo(be), (("Asset " + toBase58String(be)) + " doesn't exist")).quantity | |
532 | 532 | let cZ = B(invoke(ba, "getAccBalanceWrapperREADONLY", [cS], nil)) | |
533 | 533 | let da = B(invoke(ba, "getAccBalanceWrapperREADONLY", [cT], nil)) | |
534 | 534 | let db = if ((cY == 0)) | |
535 | 535 | then [toString(g), toString(g), toString(g)] | |
536 | 536 | else x(invoke(ba, "calcPricesWrapperREADONLY", [cZ, da, cY], nil)) | |
537 | 537 | let dc = 0 | |
538 | 538 | let dd = B(invoke(ba, "fromX18WrapperREADONLY", [db[1], b], nil)) | |
539 | 539 | let de = B(invoke(ba, "fromX18WrapperREADONLY", [db[2], b], nil)) | |
540 | 540 | let bh = getIntegerValue(aU, T(toString(ba))) | |
541 | 541 | let df = aZ(ba) | |
542 | 542 | let dg = bc(ba) | |
543 | 543 | let dh = { | |
544 | 544 | let bb = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(ba)], nil) | |
545 | 545 | if ($isInstanceOf(bb, "Boolean")) | |
546 | 546 | then bb | |
547 | 547 | else throw(($getType(bb) + " couldn't be cast to Boolean")) | |
548 | 548 | } | |
549 | 549 | let di = !(dh) | |
550 | - | $Tuple2(nil, makeString([cQ, toString(cZ), toString(da), toString(cY), toString(dc), toString(dd), toString(de), toString(bh), toString(df), toString(dg), toString(di)], e)) | |
550 | + | let dj = !({ | |
551 | + | let bb = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(ba)], nil) | |
552 | + | if ($isInstanceOf(bb, "Boolean")) | |
553 | + | then bb | |
554 | + | else throw(($getType(bb) + " couldn't be cast to Boolean")) | |
555 | + | }) | |
556 | + | $Tuple2(nil, makeString([cQ, toString(cZ), toString(da), toString(cY), toString(dc), toString(dd), toString(de), toString(bh), toString(df), toString(dg), toString(di), toString(dj)], e)) | |
551 | 557 | } | |
552 | 558 | } | |
553 | 559 | ||
554 | 560 | ||
555 | 561 | ||
556 | 562 | @Callable(bB) | |
557 | - | func poolEvaluatePutByAmountAssetREADONLY (cO, | |
563 | + | func poolEvaluatePutByAmountAssetREADONLY (cO,dk) = { | |
558 | 564 | let ba = addressFromStringValue(t(aU, S(cO))) | |
559 | 565 | let cR = x(invoke(ba, "getPoolConfigWrapperREADONLY", nil, nil)) | |
560 | 566 | let be = fromBase58String(D(cR[j])) | |
561 | - | let | |
562 | - | let | |
563 | - | let | |
564 | - | let | |
567 | + | let dl = D(cR[k]) | |
568 | + | let dm = fromBase58String(dl) | |
569 | + | let dn = D(cR[l]) | |
570 | + | let do = fromBase58String(dn) | |
565 | 571 | let cW = parseIntValue(D(cR[m])) | |
566 | 572 | let cX = parseIntValue(D(cR[n])) | |
567 | - | let | |
573 | + | let dp = D(cR[i]) | |
568 | 574 | let cY = valueOrErrorMessage(assetInfo(be), (("Asset " + toBase58String(be)) + " doesn't exist")).quantity | |
569 | - | let cZ = B(invoke(ba, "getAccBalanceWrapperREADONLY", [ | |
570 | - | let da = B(invoke(ba, "getAccBalanceWrapperREADONLY", [ | |
571 | - | let | |
572 | - | let | |
573 | - | let | |
575 | + | let cZ = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dl], nil)) | |
576 | + | let da = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dn], nil)) | |
577 | + | let dq = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [cZ, cW], nil))) | |
578 | + | let dr = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [da, cX], nil))) | |
579 | + | let ds = if ((cY == 0)) | |
574 | 580 | then g | |
575 | - | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString( | |
576 | - | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString( | |
577 | - | let | |
578 | - | let | |
579 | - | let | |
580 | - | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, | |
581 | - | let | |
581 | + | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString(dr), toString(dq)], nil))) | |
582 | + | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString(ds), b], nil)) | |
583 | + | let dt = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dk, cW], nil))) | |
584 | + | let du = fraction(dt, ds, d) | |
585 | + | let dv = B(invoke(ba, "fromX18WrapperREADONLY", [toString(du), cX], nil)) | |
586 | + | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil) | |
587 | + | let dw = { | |
582 | 588 | let z = ca | |
583 | 589 | if (if (if ($isInstanceOf(z._1, "Int")) | |
584 | 590 | then if ($isInstanceOf(z._3, "Int")) | |
585 | 591 | then if ($isInstanceOf(z._4, "Int")) | |
586 | 592 | then if ($isInstanceOf(z._5, "Int")) | |
587 | 593 | then $isInstanceOf(z._6, "Int") | |
588 | 594 | else false | |
589 | 595 | else false | |
590 | 596 | else false | |
591 | 597 | else false) | |
592 | 598 | then (size(z) == 13) | |
593 | 599 | else false) | |
594 | 600 | then { | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | $Tuple5( | |
601 | + | let dx = z._1 | |
602 | + | let dy = z._3 | |
603 | + | let dz = z._4 | |
604 | + | let dA = z._5 | |
605 | + | let dB = z._6 | |
606 | + | $Tuple5(dx, dy, dz, dA, dB) | |
601 | 607 | } | |
602 | 608 | else throw("Couldn't cast types") | |
603 | 609 | } | |
604 | - | let | |
605 | - | let | |
606 | - | let | |
607 | - | let | |
608 | - | let | |
609 | - | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString( | |
610 | + | let dx = dw._1 | |
611 | + | let dy = dw._2 | |
612 | + | let dz = dw._3 | |
613 | + | let dA = dw._4 | |
614 | + | let dB = dw._5 | |
615 | + | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dc), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e)) | |
610 | 616 | } | |
611 | 617 | ||
612 | 618 | ||
613 | 619 | ||
614 | 620 | @Callable(bB) | |
615 | - | func poolEvaluatePutByPriceAssetREADONLY (cO, | |
621 | + | func poolEvaluatePutByPriceAssetREADONLY (cO,dv) = { | |
616 | 622 | let ba = addressFromStringValue(t(aU, S(cO))) | |
617 | 623 | let cR = x(invoke(ba, "getPoolConfigWrapperREADONLY", nil, nil)) | |
618 | 624 | let be = fromBase58String(D(cR[j])) | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
622 | - | let | |
625 | + | let dl = D(cR[k]) | |
626 | + | let dm = fromBase58String(dl) | |
627 | + | let dn = D(cR[l]) | |
628 | + | let do = fromBase58String(dn) | |
623 | 629 | let cW = parseIntValue(D(cR[m])) | |
624 | 630 | let cX = parseIntValue(D(cR[n])) | |
625 | - | let | |
631 | + | let dp = D(cR[i]) | |
626 | 632 | let cY = valueOrErrorMessage(assetInfo(be), (("Asset " + toBase58String(be)) + " doesn't exist")).quantity | |
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
633 | + | let dC = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dl], nil)) | |
634 | + | let dD = B(invoke(ba, "getAccBalanceWrapperREADONLY", [dn], nil)) | |
635 | + | let dE = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dC, cW], nil))) | |
636 | + | let dF = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dD, cX], nil))) | |
637 | + | let ds = if ((cY == 0)) | |
632 | 638 | then g | |
633 | - | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString( | |
634 | - | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString( | |
635 | - | let | |
636 | - | let | |
637 | - | let | |
638 | - | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, | |
639 | - | let | |
639 | + | else parseBigIntValue(D(invoke(ba, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil))) | |
640 | + | let dc = B(invoke(ba, "fromX18WrapperREADONLY", [toString(ds), b], nil)) | |
641 | + | let du = parseBigIntValue(D(invoke(ba, "toX18WrapperREADONLY", [dv, cX], nil))) | |
642 | + | let dt = fraction(du, d, ds) | |
643 | + | let dk = B(invoke(ba, "fromX18WrapperREADONLY", [toString(dt), cW], nil)) | |
644 | + | let ca = invoke(ba, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil) | |
645 | + | let dG = { | |
640 | 646 | let z = ca | |
641 | 647 | if (if (if ($isInstanceOf(z._1, "Int")) | |
642 | 648 | then if ($isInstanceOf(z._3, "Int")) | |
643 | 649 | then if ($isInstanceOf(z._4, "Int")) | |
644 | 650 | then if ($isInstanceOf(z._5, "Int")) | |
645 | 651 | then $isInstanceOf(z._6, "Int") | |
646 | 652 | else false | |
647 | 653 | else false | |
648 | 654 | else false | |
649 | 655 | else false) | |
650 | 656 | then (size(z) == 13) | |
651 | 657 | else false) | |
652 | 658 | then { | |
653 | - | let | |
654 | - | let | |
655 | - | let | |
656 | - | let | |
657 | - | let | |
658 | - | $Tuple5( | |
659 | + | let dx = z._1 | |
660 | + | let dy = z._3 | |
661 | + | let dz = z._4 | |
662 | + | let dA = z._5 | |
663 | + | let dB = z._6 | |
664 | + | $Tuple5(dx, dy, dz, dA, dB) | |
659 | 665 | } | |
660 | 666 | else throw("Couldn't cast types") | |
661 | 667 | } | |
662 | - | let | |
663 | - | let | |
664 | - | let | |
665 | - | let | |
666 | - | let | |
667 | - | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString( | |
668 | + | let dx = dG._1 | |
669 | + | let dy = dG._2 | |
670 | + | let dz = dG._3 | |
671 | + | let dA = dG._4 | |
672 | + | let dB = dG._5 | |
673 | + | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dc), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e)) | |
668 | 674 | } | |
669 | 675 | ||
670 | 676 | ||
671 | 677 | ||
672 | 678 | @Callable(bB) | |
673 | - | func poolEvaluateGetREADONLY ( | |
674 | - | let ba = addressFromStringValue(t(aU, S( | |
675 | - | let ca = invoke(ba, "estimateGetOperationWrapperREADONLY", ["", | |
676 | - | let | |
679 | + | func poolEvaluateGetREADONLY (dH,dI) = { | |
680 | + | let ba = addressFromStringValue(t(aU, S(dH))) | |
681 | + | let ca = invoke(ba, "estimateGetOperationWrapperREADONLY", ["", dH, dI, toString(ba)], nil) | |
682 | + | let dJ = { | |
677 | 683 | let z = ca | |
678 | 684 | if (if (if ($isInstanceOf(z._1, "Int")) | |
679 | 685 | then if ($isInstanceOf(z._2, "Int")) | |
680 | 686 | then if ($isInstanceOf(z._5, "Int")) | |
681 | 687 | then if ($isInstanceOf(z._6, "Int")) | |
682 | 688 | then if ($isInstanceOf(z._7, "Int")) | |
683 | 689 | then if ($isInstanceOf(z._8, "String")) | |
684 | 690 | then $isInstanceOf(z._9, "String") | |
685 | 691 | else false | |
686 | 692 | else false | |
687 | 693 | else false | |
688 | 694 | else false | |
689 | 695 | else false | |
690 | 696 | else false) | |
691 | 697 | then (size(z) == 10) | |
692 | 698 | else false) | |
693 | 699 | then { | |
694 | - | let | |
695 | - | let | |
696 | - | let | |
697 | - | let | |
698 | - | let | |
700 | + | let dK = z._1 | |
701 | + | let dL = z._2 | |
702 | + | let dz = z._5 | |
703 | + | let dA = z._6 | |
704 | + | let dB = z._7 | |
699 | 705 | let dc = z._8 | |
700 | - | let | |
701 | - | $Tuple7( | |
706 | + | let dp = z._9 | |
707 | + | $Tuple7(dK, dL, dz, dA, dB, dc, dp) | |
702 | 708 | } | |
703 | 709 | else throw("Couldn't cast types") | |
704 | 710 | } | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | let | |
710 | - | let dc = | |
711 | - | let | |
712 | - | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString( | |
711 | + | let dK = dJ._1 | |
712 | + | let dL = dJ._2 | |
713 | + | let dz = dJ._3 | |
714 | + | let dA = dJ._4 | |
715 | + | let dB = dJ._5 | |
716 | + | let dc = dJ._6 | |
717 | + | let dp = dJ._7 | |
718 | + | $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dz), toString(dA), toString(dB), dc, dp], e)) | |
713 | 719 | } | |
714 | 720 | ||
715 | 721 | ||
716 | 722 | ||
717 | 723 | @Callable(bB) | |
718 | 724 | func gwxUserInfoREADONLY (ao) = { | |
719 | - | let | |
720 | - | let | |
721 | - | $Tuple2(nil, makeString(["%d", toString( | |
725 | + | let dM = x(invoke(aY, "gwxUserInfoREADONLY", [ao], nil)) | |
726 | + | let dN = B(dM[0]) | |
727 | + | $Tuple2(nil, makeString(["%d", toString(dN)], e)) | |
722 | 728 | } | |
723 | 729 | ||
724 | 730 | ||
725 | 731 | ||
726 | 732 | @Callable(bB) | |
727 | - | func unstakeAndGetOneTknV2 (ba, | |
728 | - | let cb = invoke(addressFromStringValue(ba), "unstakeAndGetOneTknV2", [ | |
733 | + | func unstakeAndGetOneTknV2 (ba,dO,dP,dQ) = { | |
734 | + | let cb = invoke(addressFromStringValue(ba), "unstakeAndGetOneTknV2", [dO, dP, dQ], nil) | |
729 | 735 | if ((cb == cb)) | |
730 | 736 | then $Tuple2(nil, unit) | |
731 | 737 | else throw("Strict value is not equal to itself.") | |
732 | 738 | } | |
733 | 739 | ||
734 | 740 | ||
735 | 741 | ||
736 | 742 | @Callable(bB) | |
737 | - | func getKeysBulkInternal (bO, | |
743 | + | func getKeysBulkInternal (bO,dR,bU) = if ((bO == size(dR))) | |
738 | 744 | then $Tuple2(nil, bU) | |
739 | 745 | else { | |
740 | - | let | |
741 | - | let bw = addressFromStringValue( | |
742 | - | let s = | |
743 | - | let bx = | |
746 | + | let dS = split(dR[bO], "++") | |
747 | + | let bw = addressFromStringValue(dS[0]) | |
748 | + | let s = dS[1] | |
749 | + | let bx = dS[2] | |
744 | 750 | let y = bv(bw, s, bx) | |
745 | 751 | let ca = (bU :+ y) | |
746 | - | let cb = invoke(this, "getKeysBulkInternal", [(bO + 1), | |
752 | + | let cb = invoke(this, "getKeysBulkInternal", [(bO + 1), dR, ca], nil) | |
747 | 753 | if ((cb == cb)) | |
748 | 754 | then $Tuple2(nil, cb) | |
749 | 755 | else throw("Strict value is not equal to itself.") | |
750 | 756 | } | |
751 | 757 | ||
752 | 758 | ||
753 | 759 | ||
754 | 760 | @Callable(bB) | |
755 | - | func getKeysBulk ( | |
756 | - | let ca = invoke(this, "getKeysBulkInternal", [0, | |
761 | + | func getKeysBulk (dR) = { | |
762 | + | let ca = invoke(this, "getKeysBulkInternal", [0, dR, nil], nil) | |
757 | 763 | $Tuple2(nil, ca) | |
758 | 764 | } | |
759 | 765 | ||
760 | 766 | ||
761 | - | @Verifier( | |
762 | - | func | |
763 | - | let | |
767 | + | @Verifier(dT) | |
768 | + | func dU () = { | |
769 | + | let dV = { | |
764 | 770 | let z = by() | |
765 | 771 | if ($isInstanceOf(z, "ByteVector")) | |
766 | 772 | then { | |
767 | 773 | let bC = z | |
768 | 774 | bC | |
769 | 775 | } | |
770 | 776 | else if ($isInstanceOf(z, "Unit")) | |
771 | - | then | |
777 | + | then dT.senderPublicKey | |
772 | 778 | else throw("Match error") | |
773 | 779 | } | |
774 | - | sigVerify( | |
780 | + | sigVerify(dT.bodyBytes, dT.proofs[0], dV) | |
775 | 781 | } | |
776 | 782 |
github/deemru/w8io/169f3d6 122.15 ms ◑