tx · 8y5h7h4jri46Uv6RpTgxvj46iKWaEV7gEabD5pStNato

3N9wLKKtDBphos7U3xzsPqgvJJ5zPQEU6pV:  -0.01200000 Waves

2023.07.06 11:51 [2653832] smart account 3N9wLKKtDBphos7U3xzsPqgvJJ5zPQEU6pV > SELF 0.00000000 Waves

{ "type": 13, "id": "8y5h7h4jri46Uv6RpTgxvj46iKWaEV7gEabD5pStNato", "fee": 1200000, "feeAssetId": null, "timestamp": 1688633478803, "version": 1, "sender": "3N9wLKKtDBphos7U3xzsPqgvJJ5zPQEU6pV", "senderPublicKey": "GKX7DbVJVEtTB6ak3PXWHNPUhC3jym3ozbtZ7a36rGu6", "proofs": [ "2amQKrbaLoEJHXJ8D9nH1cRGLJwXaue6acq1pM7RVFjJbuJK12yk5fCyURpHPAKEc3wBeAn69VotZzKGeaFsf68q" ], "script": "base64:BgISCAISBgoEAgEBARIGCgQCAQEBLAADU0VQAgJfXwANQ09OVFJBQ1RfTkFNRQIPY2FsY3VsYXRvci5yaWRlAAZTQ0FMRTgAgMLXLwAHUEVORElORwIHUEVORElORwAIRklOSVNIRUQCCEZJTklTSEVEAAVXQVZFUwIFV0FWRVMBB3dyYXBFcnIBAXMJAKwCAgkArAICBQ1DT05UUkFDVF9OQU1FAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD2Fzc2V0SWRUb1N0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAUFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEDYWJzAQFuAwkAZgIAAAUBbgkBAS0BBQFuBQFuARFrZXlGYWN0b3J5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAgdmYWN0b3J5BQNuaWwFA1NFUAETa2V5TWFuYWdlclB1YmxpY0tleQAJALkJAgkAzAgCAgIlcwkAzAgCAhBtYW5hZ2VyUHVibGljS2V5BQNuaWwFA1NFUAEMa2V5THBBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCWxwQXNzZXRJZAUDbmlsBQNTRVABF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDXByb3h5VHJlYXN1cnkFA25pbAUDU0VQARZrZXlNYWluVHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDG1haW5UcmVhc3VyeQUDbmlsBQNTRVABC2tleUludmVzdGVkAQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghpbnZlc3RlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUHYXNzZXRJZAUDbmlsBQNTRVABCmtleURvbmF0ZWQBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICB2RvbmF0ZWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFB2Fzc2V0SWQFA25pbAUDU0VQAQxrZXlBdmFpbGFibGUBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAglhdmFpbGFibGUJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUNsYWltZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgdjbGFpbWVkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDU0VQARBrZXlDdXJyZW50UGVyaW9kAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUDU0VQARFrZXlQcmljZUZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgVwcmljZQkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABDmtleVN0YXJ0SGVpZ2h0AQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEUa2V5UG93ZXJNYW5hZ2VyQm9udXMBBnBlcmlvZAkAuQkCCQDMCAICBCVzJWQJAMwIAgIRcG93ZXJNYW5hZ2VyQm9udXMJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAQ9rZXlQZXJpb2RMZW5ndGgAAhAlc19fcGVyaW9kTGVuZ3RoARhrZXlCbG9ja1Byb2Nlc3NpbmdSZXdhcmQAAhklc19fYmxvY2tQcm9jZXNzaW5nUmV3YXJkARVrZXlOZXh0QmxvY2tUb1Byb2Nlc3MAAhYlc19fbmV4dEJsb2NrVG9Qcm9jZXNzARFrZXlCbG9ja1Byb2Nlc3NlZAEGaGVpZ2h0CQC5CQIJAMwIAgIEJXMlZAkAzAgCAg5ibG9ja1Byb2Nlc3NlZAkAzAgCCQCkAwEFBmhlaWdodAUDbmlsBQNTRVABDWtleVdpdGhkcmF3YWwAAg4lc19fd2l0aGRyYXdhbAEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCC3VzZXJBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIKd2l0aGRyYXdhbAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABFnZhbHVlV2l0aGRyYXdhbFJlcXVlc3QEBnN0YXR1cw1scEFzc2V0QW1vdW50DHRhcmdldFBlcmlvZAljbGFpbVR4SWQEDGNsYWltVHhJZFN0cgQHJG1hdGNoMAUJY2xhaW1UeElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgMJAAECBQckbWF0Y2gwAgRVbml0AgRTT09OCQACAQILTWF0Y2ggZXJyb3IJALkJAgkAzAgCAgglcyVkJWQlcwkAzAgCBQZzdGF0dXMJAMwIAgkApAMBBQ1scEFzc2V0QW1vdW50CQDMCAIJAKQDAQUMdGFyZ2V0UGVyaW9kCQDMCAIFDGNsYWltVHhJZFN0cgUDbmlsBQNTRVABIXBhcnNlV2l0aGRyYXdhbFJlcXVlc3RWYWx1ZU9yRmFpbAEBcwQFcGFydHMJALUJAgUBcwUDU0VQAwkAAAIJAJADAQUFcGFydHMABQQGc3RhdHVzCQCRAwIFBXBhcnRzAAEEDWxwQXNzZXRBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBXBhcnRzAAIJAQd3cmFwRXJyAQIVaW52YWxpZCBscEFzc2V0QW1vdW50BAx0YXJnZXRQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBXBhcnRzAAMJAQd3cmFwRXJyAQIUaW52YWxpZCB0YXJnZXRQZXJpb2QECWNsYWltVHhJZAkAkQMCBQVwYXJ0cwAECQCWCgQFBnN0YXR1cwUNbHBBc3NldEFtb3VudAUMdGFyZ2V0UGVyaW9kBQljbGFpbVR4SWQJAQh0aHJvd0VycgECIGludmFsaWQgd2l0aGRyYXdhbCByZXF1ZXN0IHZhbHVlABRmYWN0b3J5QWRkcmVzc09wdGlvbgQHJG1hdGNoMAkAnQgCBQR0aGlzCQERa2V5RmFjdG9yeUFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAUZmFjdG9yeUFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUUZmFjdG9yeUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIXaW52YWxpZCBmYWN0b3J5IGFkZHJlc3MAD2xwQXNzZXRJZE9wdGlvbgQHJG1hdGNoMAUUZmFjdG9yeUFkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQFhCQEMa2V5THBBc3NldElkAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJANkEAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAA9scEFzc2V0SWRPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUPbHBBc3NldElkT3B0aW9uCQEHd3JhcEVycgECEWludmFsaWQgbHBBc3NldElkABpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgQHJG1hdGNoMAUUZmFjdG9yeUFkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQFhCQEXa2V5UHJveHlUcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAGnByb3h5VHJlYXN1cnlBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFGnByb3h5VHJlYXN1cnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECHmludmFsaWQgcHJveHkgdHJlYXN1cnkgYWRkcmVzcwAZbWFpblRyZWFzdXJ5QWRkcmVzc09wdGlvbgQHJG1hdGNoMAUUZmFjdG9yeUFkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAQHJG1hdGNoMQkAnQgCBQFhCQEWa2V5TWFpblRyZWFzdXJ5QWRkcmVzcwADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQCmCAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRltYWluVHJlYXN1cnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECHWludmFsaWQgbWFpbiB0cmVhc3VyeSBhZGRyZXNzARlnZXRNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAUUZmFjdG9yeUFkZHJlc3NPcHRpb24DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQCZmEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUCZmEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEA3B1YgUHJG1hdGNoMQkA2QQBBQNwdWIFBHVuaXQFBHVuaXQBC29ubHlBZGRyZXNzAgFpB2FkZHJlc3MDCQAAAggFAWkGY2FsbGVyBQdhZGRyZXNzBgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQBC29ubHlGYWN0b3J5AQFpCQELb25seUFkZHJlc3MCBQFpBRRmYWN0b3J5QWRkcmVzc09yRmFpbAEPcmV3YXJkRm9yT3B0aW9uAgdyZXdhcmRzBnRhcmdldAQBcwkAkAMBBQdyZXdhcmRzBAskdDA0NzM1NDc2MAkAkQMCBQdyZXdhcmRzAAAEAmEwCAULJHQwNDczNTQ3NjACXzEEAnIwCAULJHQwNDczNTQ3NjACXzIECyR0MDQ3NjM0Nzg4CQCRAwIFB3Jld2FyZHMAAQQCYTEIBQskdDA0NzYzNDc4OAJfMQQCcjEIBQskdDA0NzYzNDc4OAJfMgQLJHQwNDc5MTQ4MTYJAJEDAgUHcmV3YXJkcwACBAJhMggFCyR0MDQ3OTE0ODE2Al8xBAJyMggFCyR0MDQ3OTE0ODE2Al8yAwMJAGYCBQFzAAAJAAACBQJhMAUGdGFyZ2V0BwUCcjADAwkAZgIFAXMAAQkAAAIFAmExBQZ0YXJnZXQHBQJyMQMDCQBmAgUBcwACCQAAAgUCYTIFBnRhcmdldAcFAnIyBQR1bml0ARBmaW5hbGl6ZUlOVEVSTkFMAxhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMXcHdyTWFuYWdlcnNCb251c0luV2F2ZXMgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYEEmRvbmF0ZWRXYXZlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBCmtleURvbmF0ZWQBBQR1bml0AAAEE2ludmVzdGVkV2F2ZXNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQtrZXlJbnZlc3RlZAEFBHVuaXQAAAQcY3VycmVudFRyZWFzdXJ5Vm9sdW1lSW5XYXZlcwkAZAIFEmRvbmF0ZWRXYXZlc0Ftb3VudAUTaW52ZXN0ZWRXYXZlc0Ftb3VudAQJcHJvZml0UmF3CQBlAgUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzBRxjdXJyZW50VHJlYXN1cnlWb2x1bWVJbldhdmVzBBZwd3JNYW5hZ2Vyc0JvbnVzQW1vdW50AwMJAGcCBQlwcm9maXRSYXcFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzBgkAAAIFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzAAAFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzCQEIdGhyb3dFcnIBAh9wb3dlciBib251cyBpcyBtb3JlIHRoYW4gcHJvZml0BAZwcm9maXQJAGUCBQlwcm9maXRSYXcFFnB3ck1hbmFnZXJzQm9udXNBbW91bnQEDGRvbmF0aW9uUGFydAMJAGYCBRxjdXJyZW50VHJlYXN1cnlWb2x1bWVJbldhdmVzAAAJAGsDBRJkb25hdGVkV2F2ZXNBbW91bnQFBlNDQUxFOAUcY3VycmVudFRyZWFzdXJ5Vm9sdW1lSW5XYXZlcwAABBVkb25hdGlvblByb2ZpdFBhcnRSYXcJAGsDBQZwcm9maXQFDGRvbmF0aW9uUGFydAUGU0NBTEU4BBdpbnZlc3RtZW50UHJvZml0UGFydFJhdwkAZQIFBnByb2ZpdAUVZG9uYXRpb25Qcm9maXRQYXJ0UmF3BCN0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZkFicwkBA2FicwEFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBBBhbW91bnRUb0RvbmF0aW9uCQBrAwUXaW52ZXN0bWVudFByb2ZpdFBhcnRSYXcDCQBmAgAABSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgUjdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWZBYnMAAAUGU0NBTEU4BBJhbW91bnRUb0ludmVzdG1lbnQJAGsDBRVkb25hdGlvblByb2ZpdFBhcnRSYXcDCQBmAgUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYAAAUjdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWZBYnMAAAUGU0NBTEU4BBJkb25hdGlvblByb2ZpdFBhcnQJAGQCCQBlAgUVZG9uYXRpb25Qcm9maXRQYXJ0UmF3BRJhbW91bnRUb0ludmVzdG1lbnQFEGFtb3VudFRvRG9uYXRpb24EFGludmVzdG1lbnRQcm9maXRQYXJ0CQBkAgkAZQIFF2ludmVzdG1lbnRQcm9maXRQYXJ0UmF3BRBhbW91bnRUb0RvbmF0aW9uBRJhbW91bnRUb0ludmVzdG1lbnQEGGRvbmF0ZWRXYXZlc0Ftb3VudE5ld1JhdwkAZAIFEmRvbmF0ZWRXYXZlc0Ftb3VudAUSZG9uYXRpb25Qcm9maXRQYXJ0BBlpbnZlc3RlZFdhdmVzQW1vdW50TmV3UmF3CQBkAgUTaW52ZXN0ZWRXYXZlc0Ftb3VudAUUaW52ZXN0bWVudFByb2ZpdFBhcnQED2RvbmF0ZWRQYXJ0RGVidAkAlwMBCQDMCAIAAAkAzAgCBRhkb25hdGVkV2F2ZXNBbW91bnROZXdSYXcFA25pbAQQaW52ZXN0ZWRQYXJ0RGVidAkAlwMBCQDMCAIAAAkAzAgCBRlpbnZlc3RlZFdhdmVzQW1vdW50TmV3UmF3BQNuaWwEFWRvbmF0ZWRXYXZlc0Ftb3VudE5ldwkAZAIJAJYDAQkAzAgCAAAJAMwIAgUYZG9uYXRlZFdhdmVzQW1vdW50TmV3UmF3BQNuaWwFEGludmVzdGVkUGFydERlYnQEFmludmVzdGVkV2F2ZXNBbW91bnROZXcJAGQCCQCWAwEJAMwIAgAACQDMCAIFGWludmVzdGVkV2F2ZXNBbW91bnROZXdSYXcFA25pbAUPZG9uYXRlZFBhcnREZWJ0BA9scEFzc2V0UXVhbnRpdHkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUPbHBBc3NldElkT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgbHBBc3NldCBpbmZvCHF1YW50aXR5BAhuZXdQcmljZQkAawMFFmludmVzdGVkV2F2ZXNBbW91bnROZXcFBlNDQUxFOAUPbHBBc3NldFF1YW50aXR5BBNjaGVja0lmUHJpY2VOb3RaZXJvAwkBAiE9AgUIbmV3UHJpY2UAAAYJAQh0aHJvd0VycgECFExQIHByaWNlIGNhbm5vdCBiZSAwAwkAAAIFE2NoZWNrSWZQcmljZU5vdFplcm8FE2NoZWNrSWZQcmljZU5vdFplcm8EE2xwQXNzZXRBbW91bnRUb0J1cm4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ1rZXlXaXRoZHJhd2FsAAAABBBwYXltZW50QW1vdW50TWluCQCWAwEJAMwIAgAACQDMCAIJAGsDBRNscEFzc2V0QW1vdW50VG9CdXJuBQhuZXdQcmljZQUGU0NBTEU4BQNuaWwEGGZpbmFsSW52ZXN0ZWRXYXZlc0Ftb3VudAkAZQIFFmludmVzdGVkV2F2ZXNBbW91bnROZXcFEHBheW1lbnRBbW91bnRNaW4EFGxwQXNzZXRGaW5hbFF1YW50aXR5CQBlAgUPbHBBc3NldFF1YW50aXR5BRNscEFzc2V0QW1vdW50VG9CdXJuCQCYCgYFEHBheW1lbnRBbW91bnRNaW4FGGZpbmFsSW52ZXN0ZWRXYXZlc0Ftb3VudAUVZG9uYXRlZFdhdmVzQW1vdW50TmV3BQhuZXdQcmljZQUTbHBBc3NldEFtb3VudFRvQnVybgUUbHBBc3NldEZpbmFsUXVhbnRpdHkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CAWkBCGZpbmFsaXplBBB1c2VyQWRkcmVzc0J5dGVzGG5ld1RyZWFzdXJ5Vm9sdW1lSW5XYXZlcxdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcyB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ9rZXlQZXJpb2RMZW5ndGgACQEHd3JhcEVycgECFWludmFsaWQgcGVyaW9kIGxlbmd0aAQSY3VycmVudFN0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ5rZXlTdGFydEhlaWdodAEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBzdGFydCBoZWlnaHQEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEEm5leHRCbG9ja1RvUHJvY2VzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAkBB3dyYXBFcnIBAh1pbnZhbGlkIG5leHQgYmxvY2sgdG8gcHJvY2VzcwQPcGVyaW9kRW5kSGVpZ2h0CQBlAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAEEBmNoZWNrcwkAzAgCAwkAAAIIBQFpDG9yaWdpbkNhbGxlcgUZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIDCQBmAgUSbmV4dEJsb2NrVG9Qcm9jZXNzBQ9wZXJpb2RFbmRIZWlnaHQGCQEIdGhyb3dFcnIBAhJ1bnByb2Nlc3NlZCBibG9ja3MJAMwIAgMJAGcCBRhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMAAAYJAQh0aHJvd0VycgECG2ludmFsaWQgbmV3IHRyZWFzdXJ5IHZvbHVtZQkAzAgCAwkAZwIFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzAAAGCQEIdGhyb3dFcnIBAhppbnZhbGlkIFBXUiBtYW5hZ2VycyBib251cwkAzAgCAwMJAGcCBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgkBAS0BBQZTQ0FMRTgJAGcCBQZTQ0FMRTgFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBwYJAQh0aHJvd0VycgECM2ludmFsaWQgdHJlYXN1cnkgdm9sdW1lIGRpZmYgYWxsb2NhdGlvbiBjb2VmZmljaWVudAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAskdDA5NTA3OTc2OAkBEGZpbmFsaXplSU5URVJOQUwDBRhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgQQcGF5bWVudEFtb3VudE1pbggFCyR0MDk1MDc5NzY4Al8xBBhmaW5hbEludmVzdGVkV2F2ZXNBbW91bnQIBQskdDA5NTA3OTc2OAJfMgQVZG9uYXRlZFdhdmVzQW1vdW50TmV3CAULJHQwOTUwNzk3NjgCXzMECG5ld1ByaWNlCAULJHQwOTUwNzk3NjgCXzQEE2xwQXNzZXRBbW91bnRUb0J1cm4IBQskdDA5NTA3OTc2OAJfNQQUbHBBc3NldEZpbmFsUXVhbnRpdHkIBQskdDA5NTA3OTc2OAJfNgQJbmV3UGVyaW9kCQBkAgUTY3VycmVudFBlcmlvZE9yRmFpbAABBA1wYXltZW50T3B0aW9uAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAkQMCCAUBaQhwYXltZW50cwAABQR1bml0BA1wYXltZW50QW1vdW50CAkBBXZhbHVlAQUNcGF5bWVudE9wdGlvbgZhbW91bnQEDnBheW1lbnRBc3NldElkCAkBBXZhbHVlAQUNcGF5bWVudE9wdGlvbgdhc3NldElkBAxjaGVja1BheW1lbnQDAwkAAAIFEHBheW1lbnRBbW91bnRNaW4AAAYDAwkBAiE9AgUNcGF5bWVudE9wdGlvbgUEdW5pdAkAAAIFDnBheW1lbnRBc3NldElkBQR1bml0BwkAZwIFDXBheW1lbnRBbW91bnQFEHBheW1lbnRBbW91bnRNaW4HBgkBCHRocm93RXJyAQkArAICAiZpbnZhbGlkIHBheW1lbnRzLCBwYXltZW50IGFtb3VudCBtaW46IAkApAMBBRBwYXltZW50QW1vdW50TWluAwkAAAIFDGNoZWNrUGF5bWVudAUMY2hlY2tQYXltZW50BAdhY3Rpb25zAwkBAiE9AgUNcGF5bWVudE9wdGlvbgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRRmYWN0b3J5QWRkcmVzc09yRmFpbAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQFA25pbAUDbmlsBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBFGtleVBvd2VyTWFuYWdlckJvbnVzAQUTY3VycmVudFBlcmlvZE9yRmFpbAkAzAgCBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJARBrZXlDdXJyZW50UGVyaW9kAAkAzAgCBQluZXdQZXJpb2QFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQERa2V5UHJpY2VGb3JQZXJpb2QBBQluZXdQZXJpb2QJAMwIAgUIbmV3UHJpY2UFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEOa2V5U3RhcnRIZWlnaHQBBQluZXdQZXJpb2QJAMwIAgkAZAIFD3BlcmlvZEVuZEhlaWdodAABBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgRidXJuCQDMCAIFE2xwQXNzZXRBbW91bnRUb0J1cm4FA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQENa2V5V2l0aGRyYXdhbAAJAMwIAgAABQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tleUludmVzdGVkAQUEdW5pdAkAzAgCBRhmaW5hbEludmVzdGVkV2F2ZXNBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEKa2V5RG9uYXRlZAEFBHVuaXQJAMwIAgUVZG9uYXRlZFdhdmVzQW1vdW50TmV3BQNuaWwFA25pbAUDbmlsCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGZpbmFsaXplUkVBRE9OTFkEEHVzZXJBZGRyZXNzQnl0ZXMYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ9rZXlQZXJpb2RMZW5ndGgACQEHd3JhcEVycgECFWludmFsaWQgcGVyaW9kIGxlbmd0aAQSY3VycmVudFN0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ5rZXlTdGFydEhlaWdodAEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBzdGFydCBoZWlnaHQEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEEm5leHRCbG9ja1RvUHJvY2VzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAkBB3dyYXBFcnIBAh1pbnZhbGlkIG5leHQgYmxvY2sgdG8gcHJvY2VzcwQPcGVyaW9kRW5kSGVpZ2h0CQBlAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAEEBmNoZWNrcwkAzAgCAwkAZgIFEm5leHRCbG9ja1RvUHJvY2VzcwUPcGVyaW9kRW5kSGVpZ2h0BgkBCHRocm93RXJyAQISdW5wcm9jZXNzZWQgYmxvY2tzCQDMCAIDCQBnAgUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzAAAGCQEIdGhyb3dFcnIBAhtpbnZhbGlkIG5ldyB0cmVhc3VyeSB2b2x1bWUJAMwIAgMJAGcCBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwAABgkBCHRocm93RXJyAQIaaW52YWxpZCBQV1IgbWFuYWdlcnMgYm9udXMJAMwIAgMDCQBnAgUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYJAQEtAQUGU0NBTEU4CQBnAgUGU0NBTEU4BSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgcGCQEIdGhyb3dFcnIBAjNpbnZhbGlkIHRyZWFzdXJ5IHZvbHVtZSBkaWZmIGFsbG9jYXRpb24gY29lZmZpY2llbnQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAlAoCBQNuaWwJARBmaW5hbGl6ZUlOVEVSTkFMAwUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AoEFgUw==", "chainId": 84, "height": 2653832, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FmL5cQAV3bZMxYNPbfDPzbJGCiv9yQ9ktyTGvN34yqqc Next: none Diff:
OldNewDifferences
330330 else i("invalid treasury volume diff allocation coefficient")]
331331 if ((bk == bk))
332332 then {
333- let aB = valueOrElse(getInteger(V, v(unit)), 0)
334- let aC = valueOrElse(getInteger(V, u(unit)), 0)
335- let aD = (aB + aC)
336- let aE = (ay - aD)
337- let aF = if (if ((aE > 0))
338- then (aE >= az)
339- else false)
340- then az
341- else i("power bonus is more than profit")
342- let aG = (aE - aF)
343- let aH = if ((aD > 0))
344- then fraction(aB, c, aD)
345- else 0
346- let aI = fraction(aG, aH, c)
347- let aJ = (aG - aI)
348- let aK = n(aA)
349- let aL = fraction(aJ, if ((0 > aA))
350- then aK
351- else 0, c)
352- let aM = fraction(aI, if ((aA > 0))
353- then aK
354- else 0, c)
355- let aN = ((aI - aM) + aL)
356- let aO = ((aJ - aL) + aM)
357- let aP = (aB + aN)
358- let aQ = (aC + aO)
359- let aR = min([0, aP])
360- let aS = min([0, aQ])
361- let aT = (max([0, aP]) + aS)
362- let aU = (max([0, aQ]) + aR)
363- let bl = (be + 1)
364- let aV = valueOrErrorMessage(assetInfo(Z), g("invalid lpAsset info")).quantity
365- let aW = fraction(aU, c, aV)
366- let aX = if ((aW != 0))
333+ let bl = ax(ay, az, aA)
334+ let aZ = bl._1
335+ let ba = bl._2
336+ let aT = bl._3
337+ let aW = bl._4
338+ let aY = bl._5
339+ let bb = bl._6
340+ let bm = (be + 1)
341+ let bn = if ((size(ai.payments) > 0))
342+ then ai.payments[0]
343+ else unit
344+ let bo = value(bn).amount
345+ let bp = value(bn).assetId
346+ let bq = if (if ((aZ == 0))
367347 then true
368- else i("LP price cannot be 0")
369- if ((aX == aX))
348+ else if (if ((bn != unit))
349+ then (bp == unit)
350+ else false)
351+ then (bo >= aZ)
352+ else false)
353+ then true
354+ else i(("invalid payments, payment amount min: " + toString(aZ)))
355+ if ((bq == bq))
370356 then {
371- let aY = valueOrElse(getInteger(V, J()), 0)
372- let aZ = max([0, fraction(aY, aW, c)])
373- let bm = if ((size(ai.payments) > 0))
374- then ai.payments[0]
375- else unit
376- let bn = value(bm).amount
377- let bo = value(bm).assetId
378- let bp = if (if ((aZ == 0))
379- then true
380- else if (if ((bm != unit))
381- then (bo == unit)
382- else false)
383- then (bn >= aZ)
384- else false)
385- then true
386- else i(("invalid payments, payment amount min: " + toString(aZ)))
387- if ((bp == bp))
388- then {
389- let bq = if ((bm != unit))
390- then [ScriptTransfer(V, bn, bo)]
391- else nil
392- let br = [invoke(V, "integerEntry", [D(be), aF], nil), invoke(V, "integerEntry", [z(), bl], nil), invoke(V, "integerEntry", [A(bl), aW], nil), invoke(V, "integerEntry", [C(bl), (bj + 1)], nil), invoke(V, "burn", [aY], nil), invoke(V, "integerEntry", [J(), 0], nil), invoke(V, "integerEntry", [u(unit), (aU - aZ)], nil), invoke(V, "integerEntry", [v(unit), aT], nil)]
393- $Tuple2(bq, br)
394- }
395- else throw("Strict value is not equal to itself.")
357+ let br = if ((bn != unit))
358+ then [ScriptTransfer(V, bo, bp)]
359+ else nil
360+ let bs = [invoke(V, "integerEntry", [D(be), az], nil), invoke(V, "integerEntry", [z(), bm], nil), invoke(V, "integerEntry", [A(bm), aW], nil), invoke(V, "integerEntry", [C(bm), (bj + 1)], nil), invoke(V, "burn", [aY], nil), invoke(V, "integerEntry", [J(), 0], nil), invoke(V, "integerEntry", [u(unit), ba], nil), invoke(V, "integerEntry", [v(unit), aT], nil)]
361+ $Tuple2(br, bs)
396362 }
397363 else throw("Strict value is not equal to itself.")
398364 }
402368 }
403369
404370
371+
372+@Callable(ai)
373+func finalizeREADONLY (bc,ay,az,aA) = {
374+ let be = valueOrErrorMessage(getInteger(V, z()), g("invalid period"))
375+ let bf = valueOrErrorMessage(getInteger(V, E()), g("invalid period length"))
376+ let bg = valueOrErrorMessage(getInteger(V, C(be)), g("invalid start height"))
377+ let bh = valueOrErrorMessage(getInteger(V, A(be)), g("invalid price"))
378+ let bi = valueOrErrorMessage(getInteger(V, G()), g("invalid next block to process"))
379+ let bj = ((bg + bf) - 1)
380+ let bk = [if ((bi > bj))
381+ then true
382+ else i("unprocessed blocks"), if ((ay >= 0))
383+ then true
384+ else i("invalid new treasury volume"), if ((az >= 0))
385+ then true
386+ else i("invalid PWR managers bonus"), if (if ((aA >= -(c)))
387+ then (c >= aA)
388+ else false)
389+ then true
390+ else i("invalid treasury volume diff allocation coefficient")]
391+ if ((bk == bk))
392+ then $Tuple2(nil, ax(ay, az, aA))
393+ else throw("Strict value is not equal to itself.")
394+ }
395+
396+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "calculator.ride"
77
88 let c = 100000000
99
1010 let d = "PENDING"
1111
1212 let e = "FINISHED"
1313
1414 let f = "WAVES"
1515
1616 func g (h) = ((b + ": ") + h)
1717
1818
1919 func i (h) = throw(g(h))
2020
2121
2222 func j (k) = {
2323 let l = k
2424 if ($isInstanceOf(l, "ByteVector"))
2525 then {
2626 let m = l
2727 toBase58String(m)
2828 }
2929 else if ($isInstanceOf(l, "Unit"))
3030 then f
3131 else throw("Match error")
3232 }
3333
3434
3535 func n (o) = if ((0 > o))
3636 then -(o)
3737 else o
3838
3939
4040 func p () = makeString(["%s", "factory"], a)
4141
4242
4343 func q () = makeString(["%s", "managerPublicKey"], a)
4444
4545
4646 func r () = makeString(["%s", "lpAssetId"], a)
4747
4848
4949 func s () = makeString(["%s", "proxyTreasury"], a)
5050
5151
5252 func t () = makeString(["%s", "mainTreasury"], a)
5353
5454
5555 func u (k) = makeString(["%s%s", "invested", j(k)], a)
5656
5757
5858 func v (k) = makeString(["%s%s", "donated", j(k)], a)
5959
6060
6161 func w (x) = makeString(["%s%s", "available", toString(x)], a)
6262
6363
6464 func y (x) = makeString(["%s%s", "claimed", toString(x)], a)
6565
6666
6767 func z () = makeString(["%s", "currentPeriod"], a)
6868
6969
7070 func A (B) = makeString(["%s%d", "price", toString(B)], a)
7171
7272
7373 func C (B) = makeString(["%s%d", "startHeight", toString(B)], a)
7474
7575
7676 func D (B) = makeString(["%s%d", "powerManagerBonus", toString(B)], a)
7777
7878
7979 func E () = "%s__periodLength"
8080
8181
8282 func F () = "%s__blockProcessingReward"
8383
8484
8585 func G () = "%s__nextBlockToProcess"
8686
8787
8888 func H (I) = makeString(["%s%d", "blockProcessed", toString(I)], a)
8989
9090
9191 func J () = "%s__withdrawal"
9292
9393
9494 func K (x,L) = makeString(["%s%s%s", "withdrawal", toString(x), toBase58String(L)], a)
9595
9696
9797 func M (N,O,P,Q) = {
9898 let R = {
9999 let l = Q
100100 if ($isInstanceOf(l, "ByteVector"))
101101 then {
102102 let m = l
103103 toBase58String(m)
104104 }
105105 else if ($isInstanceOf(l, "Unit"))
106106 then "SOON"
107107 else throw("Match error")
108108 }
109109 makeString(["%s%d%d%s", N, toString(O), toString(P), R], a)
110110 }
111111
112112
113113 func S (h) = {
114114 let T = split(h, a)
115115 if ((size(T) == 5))
116116 then {
117117 let N = T[1]
118118 let O = valueOrErrorMessage(parseInt(T[2]), g("invalid lpAssetAmount"))
119119 let P = valueOrErrorMessage(parseInt(T[3]), g("invalid targetPeriod"))
120120 let Q = T[4]
121121 $Tuple4(N, O, P, Q)
122122 }
123123 else i("invalid withdrawal request value")
124124 }
125125
126126
127127 let U = {
128128 let l = getString(this, p())
129129 if ($isInstanceOf(l, "String"))
130130 then {
131131 let h = l
132132 addressFromString(h)
133133 }
134134 else if ($isInstanceOf(l, "Unit"))
135135 then unit
136136 else throw("Match error")
137137 }
138138
139139 let V = valueOrErrorMessage(U, g("invalid factory address"))
140140
141141 let W = {
142142 let l = U
143143 if ($isInstanceOf(l, "Address"))
144144 then {
145145 let X = l
146146 let Y = getString(X, r())
147147 if ($isInstanceOf(Y, "String"))
148148 then {
149149 let h = Y
150150 fromBase58String(h)
151151 }
152152 else if ($isInstanceOf(Y, "Unit"))
153153 then unit
154154 else throw("Match error")
155155 }
156156 else if ($isInstanceOf(l, "Unit"))
157157 then unit
158158 else throw("Match error")
159159 }
160160
161161 let Z = valueOrErrorMessage(W, g("invalid lpAssetId"))
162162
163163 let aa = {
164164 let l = U
165165 if ($isInstanceOf(l, "Address"))
166166 then {
167167 let X = l
168168 let Y = getString(X, s())
169169 if ($isInstanceOf(Y, "String"))
170170 then {
171171 let h = Y
172172 addressFromString(h)
173173 }
174174 else if ($isInstanceOf(Y, "Unit"))
175175 then unit
176176 else throw("Match error")
177177 }
178178 else if ($isInstanceOf(l, "Unit"))
179179 then unit
180180 else throw("Match error")
181181 }
182182
183183 let ab = valueOrErrorMessage(aa, g("invalid proxy treasury address"))
184184
185185 let ac = {
186186 let l = U
187187 if ($isInstanceOf(l, "Address"))
188188 then {
189189 let X = l
190190 let Y = getString(X, t())
191191 if ($isInstanceOf(Y, "String"))
192192 then {
193193 let h = Y
194194 addressFromString(h)
195195 }
196196 else if ($isInstanceOf(Y, "Unit"))
197197 then unit
198198 else throw("Match error")
199199 }
200200 else if ($isInstanceOf(l, "Unit"))
201201 then unit
202202 else throw("Match error")
203203 }
204204
205205 let ad = valueOrErrorMessage(ac, g("invalid main treasury address"))
206206
207207 func ae () = {
208208 let l = U
209209 if ($isInstanceOf(l, "Address"))
210210 then {
211211 let af = l
212212 let Y = getString(af, q())
213213 if ($isInstanceOf(Y, "String"))
214214 then {
215215 let ag = Y
216216 fromBase58String(ag)
217217 }
218218 else unit
219219 }
220220 else unit
221221 }
222222
223223
224224 func ah (ai,aj) = if ((ai.caller == aj))
225225 then true
226226 else i("permission denied")
227227
228228
229229 func ak (ai) = ah(ai, V)
230230
231231
232232 func al (am,an) = {
233233 let h = size(am)
234234 let ao = am[0]
235235 let ap = ao._1
236236 let aq = ao._2
237237 let ar = am[1]
238238 let as = ar._1
239239 let at = ar._2
240240 let au = am[2]
241241 let av = au._1
242242 let aw = au._2
243243 if (if ((h > 0))
244244 then (ap == an)
245245 else false)
246246 then aq
247247 else if (if ((h > 1))
248248 then (as == an)
249249 else false)
250250 then at
251251 else if (if ((h > 2))
252252 then (av == an)
253253 else false)
254254 then aw
255255 else unit
256256 }
257257
258258
259259 func ax (ay,az,aA) = {
260260 let aB = valueOrElse(getInteger(V, v(unit)), 0)
261261 let aC = valueOrElse(getInteger(V, u(unit)), 0)
262262 let aD = (aB + aC)
263263 let aE = (ay - aD)
264264 let aF = if (if ((aE >= az))
265265 then true
266266 else (az == 0))
267267 then az
268268 else i("power bonus is more than profit")
269269 let aG = (aE - aF)
270270 let aH = if ((aD > 0))
271271 then fraction(aB, c, aD)
272272 else 0
273273 let aI = fraction(aG, aH, c)
274274 let aJ = (aG - aI)
275275 let aK = n(aA)
276276 let aL = fraction(aJ, if ((0 > aA))
277277 then aK
278278 else 0, c)
279279 let aM = fraction(aI, if ((aA > 0))
280280 then aK
281281 else 0, c)
282282 let aN = ((aI - aM) + aL)
283283 let aO = ((aJ - aL) + aM)
284284 let aP = (aB + aN)
285285 let aQ = (aC + aO)
286286 let aR = min([0, aP])
287287 let aS = min([0, aQ])
288288 let aT = (max([0, aP]) + aS)
289289 let aU = (max([0, aQ]) + aR)
290290 let aV = valueOrErrorMessage(assetInfo(Z), g("invalid lpAsset info")).quantity
291291 let aW = fraction(aU, c, aV)
292292 let aX = if ((aW != 0))
293293 then true
294294 else i("LP price cannot be 0")
295295 if ((aX == aX))
296296 then {
297297 let aY = valueOrElse(getInteger(V, J()), 0)
298298 let aZ = max([0, fraction(aY, aW, c)])
299299 let ba = (aU - aZ)
300300 let bb = (aV - aY)
301301 $Tuple6(aZ, ba, aT, aW, aY, bb)
302302 }
303303 else throw("Strict value is not equal to itself.")
304304 }
305305
306306
307307 @Callable(ai)
308308 func finalize (bc,ay,az,aA) = {
309309 let bd = ak(ai)
310310 if ((bd == bd))
311311 then {
312312 let be = valueOrErrorMessage(getInteger(V, z()), g("invalid period"))
313313 let bf = valueOrErrorMessage(getInteger(V, E()), g("invalid period length"))
314314 let bg = valueOrErrorMessage(getInteger(V, C(be)), g("invalid start height"))
315315 let bh = valueOrErrorMessage(getInteger(V, A(be)), g("invalid price"))
316316 let bi = valueOrErrorMessage(getInteger(V, G()), g("invalid next block to process"))
317317 let bj = ((bg + bf) - 1)
318318 let bk = [if ((ai.originCaller == ad))
319319 then true
320320 else i("permission denied"), if ((bi > bj))
321321 then true
322322 else i("unprocessed blocks"), if ((ay >= 0))
323323 then true
324324 else i("invalid new treasury volume"), if ((az >= 0))
325325 then true
326326 else i("invalid PWR managers bonus"), if (if ((aA >= -(c)))
327327 then (c >= aA)
328328 else false)
329329 then true
330330 else i("invalid treasury volume diff allocation coefficient")]
331331 if ((bk == bk))
332332 then {
333- let aB = valueOrElse(getInteger(V, v(unit)), 0)
334- let aC = valueOrElse(getInteger(V, u(unit)), 0)
335- let aD = (aB + aC)
336- let aE = (ay - aD)
337- let aF = if (if ((aE > 0))
338- then (aE >= az)
339- else false)
340- then az
341- else i("power bonus is more than profit")
342- let aG = (aE - aF)
343- let aH = if ((aD > 0))
344- then fraction(aB, c, aD)
345- else 0
346- let aI = fraction(aG, aH, c)
347- let aJ = (aG - aI)
348- let aK = n(aA)
349- let aL = fraction(aJ, if ((0 > aA))
350- then aK
351- else 0, c)
352- let aM = fraction(aI, if ((aA > 0))
353- then aK
354- else 0, c)
355- let aN = ((aI - aM) + aL)
356- let aO = ((aJ - aL) + aM)
357- let aP = (aB + aN)
358- let aQ = (aC + aO)
359- let aR = min([0, aP])
360- let aS = min([0, aQ])
361- let aT = (max([0, aP]) + aS)
362- let aU = (max([0, aQ]) + aR)
363- let bl = (be + 1)
364- let aV = valueOrErrorMessage(assetInfo(Z), g("invalid lpAsset info")).quantity
365- let aW = fraction(aU, c, aV)
366- let aX = if ((aW != 0))
333+ let bl = ax(ay, az, aA)
334+ let aZ = bl._1
335+ let ba = bl._2
336+ let aT = bl._3
337+ let aW = bl._4
338+ let aY = bl._5
339+ let bb = bl._6
340+ let bm = (be + 1)
341+ let bn = if ((size(ai.payments) > 0))
342+ then ai.payments[0]
343+ else unit
344+ let bo = value(bn).amount
345+ let bp = value(bn).assetId
346+ let bq = if (if ((aZ == 0))
367347 then true
368- else i("LP price cannot be 0")
369- if ((aX == aX))
348+ else if (if ((bn != unit))
349+ then (bp == unit)
350+ else false)
351+ then (bo >= aZ)
352+ else false)
353+ then true
354+ else i(("invalid payments, payment amount min: " + toString(aZ)))
355+ if ((bq == bq))
370356 then {
371- let aY = valueOrElse(getInteger(V, J()), 0)
372- let aZ = max([0, fraction(aY, aW, c)])
373- let bm = if ((size(ai.payments) > 0))
374- then ai.payments[0]
375- else unit
376- let bn = value(bm).amount
377- let bo = value(bm).assetId
378- let bp = if (if ((aZ == 0))
379- then true
380- else if (if ((bm != unit))
381- then (bo == unit)
382- else false)
383- then (bn >= aZ)
384- else false)
385- then true
386- else i(("invalid payments, payment amount min: " + toString(aZ)))
387- if ((bp == bp))
388- then {
389- let bq = if ((bm != unit))
390- then [ScriptTransfer(V, bn, bo)]
391- else nil
392- let br = [invoke(V, "integerEntry", [D(be), aF], nil), invoke(V, "integerEntry", [z(), bl], nil), invoke(V, "integerEntry", [A(bl), aW], nil), invoke(V, "integerEntry", [C(bl), (bj + 1)], nil), invoke(V, "burn", [aY], nil), invoke(V, "integerEntry", [J(), 0], nil), invoke(V, "integerEntry", [u(unit), (aU - aZ)], nil), invoke(V, "integerEntry", [v(unit), aT], nil)]
393- $Tuple2(bq, br)
394- }
395- else throw("Strict value is not equal to itself.")
357+ let br = if ((bn != unit))
358+ then [ScriptTransfer(V, bo, bp)]
359+ else nil
360+ let bs = [invoke(V, "integerEntry", [D(be), az], nil), invoke(V, "integerEntry", [z(), bm], nil), invoke(V, "integerEntry", [A(bm), aW], nil), invoke(V, "integerEntry", [C(bm), (bj + 1)], nil), invoke(V, "burn", [aY], nil), invoke(V, "integerEntry", [J(), 0], nil), invoke(V, "integerEntry", [u(unit), ba], nil), invoke(V, "integerEntry", [v(unit), aT], nil)]
361+ $Tuple2(br, bs)
396362 }
397363 else throw("Strict value is not equal to itself.")
398364 }
399365 else throw("Strict value is not equal to itself.")
400366 }
401367 else throw("Strict value is not equal to itself.")
402368 }
403369
404370
371+
372+@Callable(ai)
373+func finalizeREADONLY (bc,ay,az,aA) = {
374+ let be = valueOrErrorMessage(getInteger(V, z()), g("invalid period"))
375+ let bf = valueOrErrorMessage(getInteger(V, E()), g("invalid period length"))
376+ let bg = valueOrErrorMessage(getInteger(V, C(be)), g("invalid start height"))
377+ let bh = valueOrErrorMessage(getInteger(V, A(be)), g("invalid price"))
378+ let bi = valueOrErrorMessage(getInteger(V, G()), g("invalid next block to process"))
379+ let bj = ((bg + bf) - 1)
380+ let bk = [if ((bi > bj))
381+ then true
382+ else i("unprocessed blocks"), if ((ay >= 0))
383+ then true
384+ else i("invalid new treasury volume"), if ((az >= 0))
385+ then true
386+ else i("invalid PWR managers bonus"), if (if ((aA >= -(c)))
387+ then (c >= aA)
388+ else false)
389+ then true
390+ else i("invalid treasury volume diff allocation coefficient")]
391+ if ((bk == bk))
392+ then $Tuple2(nil, ax(ay, az, aA))
393+ else throw("Strict value is not equal to itself.")
394+ }
395+
396+

github/deemru/w8io/3ef1775 
58.29 ms