tx · 5GuuAPnfZGHq14h3oz7GsFuadQ9dHEYdjyb2XtDpp6A5 3N6aJHiTjhKavSmVkiSdtAgU5MsXqmwrXcC: -0.05000000 Waves 2023.07.12 15:24 [2662676] smart account 3N6aJHiTjhKavSmVkiSdtAgU5MsXqmwrXcC > SELF 0.00000000 Waves
{ "type": 13, "id": "5GuuAPnfZGHq14h3oz7GsFuadQ9dHEYdjyb2XtDpp6A5", "fee": 5000000, "feeAssetId": null, "timestamp": 1689164703280, "version": 2, "chainId": 84, "sender": "3N6aJHiTjhKavSmVkiSdtAgU5MsXqmwrXcC", "senderPublicKey": "F7aRDmkUVHuEAsxKucs37pQEfypFPa7PgHZ3ojFZVmB2", "proofs": [ "5c1zRXXDxZSPp85z5vSfKTHgrCG9EEfQpPaTbUfdVbVrw9TRWRQqP9acqVX8YNCrgLgFbKUz9RvSdhpKhpWQyccV" ], "script": "base64:BgLdDwgCEggKBggIAQEICBIECgIBARIDCgEIEgMKAQESAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDCAgBEgASAwoBCCIDU0VQIgVFTVBUWSIJUFJFQ0lTSU9OIhVNQVhfUkFURV9IRUlHSFRfREVMVEEiD09SQUNMRV9ERUNJTUFMUyIRTElRVUlEQVRJT05fQk9OVVMiGExJUVVJREFUSU9OX1BST1RPQ09MX0ZFRSISSWR4VmF1bHRBc3NldENvdW50IhNJZHhWYXVsdEFzc2V0QW1vdW50IhFJZHhWYXVsdEFzc2V0UmF0ZSIEZGl2cCICX3giAl95IgRtdWxwIgRqb2luIgJhciIOa2V5SW5pdGlhbGl6ZWQiFWtleUNvb3JkaW5hdG9yQWRkcmVzcyISa2V5VmVyaWZpZXJBZGRyZXNzIhJrZXlGcm9udGVuZEFkZHJlc3MiEmtleVRyZWFzdXJ5QWRkcmVzcyIQa2V5T3JhY2xlQWRkcmVzcyINa2V5VmF1bHRBc3NldCIHYWRkcmVzcyIFYXNzZXQiD2tleUJhY2tpbmdSYXRpbyITa2V5TGlxdWlkYXRpb25SYXRpbyIZa2V5TGlxdWlkYXRpb25Qcm90b2NvbEZlZSIJa2V5VGlja2VyIhVrZXlNYXhSYXRlSGVpZ2h0RGVsdGEiEmtleUNvbnRyYWN0QXNzZXRJZCIUa2V5T3JhY2xlVGlja2VyUHJpY2UiBnRpY2tlciIaa2V5T3JhY2xlVGlja2VyUHJpY2VIZWlnaHQiCWtleVNpZ25lZCIIX2FkZHJlc3MiBV90eElkIhFrZXlQcm90b2NvbEFjdGl2ZSINaXNJbml0aWFsaXplZCIPbXVzdEluaXRpYWxpemVkIhJtdXN0Tm90SW5pdGlhbGl6ZWQiCG11c3RTZWxmIgFpIgtjb29yZGluYXRvciIGb3JhY2xlIgh2ZXJpZmllciIHJG1hdGNoMCIBcyIKZ2V0QWRkcmVzcyIDa2V5IgNlcnIiEmdldEZyb250ZW5kQWRkcmVzcyISZ2V0VHJlYXN1cnlBZGRyZXNzIhVnZXRNYXhSYXRlSGVpZ2h0RGVsdGEiGWdldExpcXVpZGF0aW9uUHJvdG9jb2xGZWUiCmdldEFzc2V0SWQiCGlzQWN0aXZlIgptdXN0QWN0aXZlIgxtdXN0RnJvbnRlbmQiEm11c3RIYXZlT25lUGF5bWVudCIKaXNQb3NpdGl2ZSIGbnVtYmVyIg1pc05vdE5lZ2F0aXZlIhRnZXRBc3NldElkRnJvbVN0cmluZyIHYXNzZXRJZCIHaXNBc3NldCIBcCINY2hlY2tpbmdBc3NldCICYnYiBG5hbWUiByRtYXRjaDEiDHBheW1lbnRBc3NldCIPZ2V0QmFja2luZ1JhdGlvIhNnZXRMaXF1aWRhdGlvblJhdGlvIgxjaGVja0FkZHJlc3MiFWtleVRvdGFsQXNzZXRBY2NlcHRlZCISa2V5VG90YWxFYXN0TWludGVkIhJrZXlFYXN0TWludGVkTGltaXQiEGtleVN0YWtlckFkZHJlc3MiFWdldFRvdGFsQXNzZXRBY2NlcHRlZCISZ2V0VG90YWxFYXN0TWludGVkIhJnZXRFYXN0TWludGVkTGltaXQiEGdldFN0YWtlckFkZHJlc3MiBnN0YWtlciIIaXNTdGFrZWQiEmNoZWNrQmFja2luZ1JhdGlvcyIDX2JyIgNfbHIiDGdldFZhdWx0RGF0YSIIZnJvbnRlbmQiBXZhdWx0IgF2IgVjb3VudCILYXNzZXRBbW91bnQiBHJhdGUiEGNoZWNrSGVpZ2h0RGVsdGEiC3ByaWNlSGVpZ2h0Ig5tYXhIZWlnaHREZWx0YSILY3VycmVudERpZmYiEGdldEFzc2V0VXNkUHJpY2UiC2NoZWNrSGVpZ2h0IgVwcmljZSILdXBkYXRlVmF1bHQiB19hbW91bnQiDSR0MDEzMDk5MTMxNDgiCG5ld0NvdW50Ig5uZXdBc3NldEFtb3VudCIJYXNzZXRSYXRlIg9jb3VudEVxdWl2YWxlbnQiDGJhY2tpbmdSYXRpbyIFdXNkRXEiBmVhc3RFcSITX2Nvb3JkaW5hdG9yQWRkcmVzcyIOX29yYWNsZUFkZHJlc3MiDV9iYWNraW5nUmF0aW8iEV9saXF1aWRhdGlvblJhdGlvIghfYXNzZXRJZCIHX3RpY2tlciIGY2hlY2tzIgVjaGVjayIQX2Vhc3RNaW50ZWRMaW1pdCIHcGF5bWVudCIKdmF1bHRBc3NldCINJHQwMTU3NzAxNTgyMyIVbmV3VG90YWxBc3NldEFjY2VwdGVkIhJuZXdUb3RhbEVhc3RNaW50ZWQiD2Vhc3RNaW50ZWRMaW1pdCIIZG9BY3Rpb24iDHVwZGF0ZWRWYXVsdCINJHQwMTc0OTcxNzU0MyISX2xpcXVpZGF0b3JBZGRyZXNzIgZfcmF0aW8iDmFzc2V0UmVxdWVzdGVkIg0kdDAxODYzMzE4Njg2IgNmZWUiCmxpcXVpZGF0ZWQiD3RyZWFzdXJ5QWRkcmVzcyIRbGlxdWlkYXRvckFkZHJlc3MiDSR0MDE5NjczMTk3MjMiEGxpcXVpZGF0aW9uUmF0aW8iCXRocmVzaG9sZCICdHgiBnZlcmlmeUYAAWECAl9fAAFiAgAAAWMAgKCUpY0dAAFkAAUAAWUAwIQ9AAFmCQBoAgkAaQIFAWMAZAAFAAFnCQBoAgkAaQIFAWMAZAACAAFoAAEAAWkAAgABagADAQFrAgFsAW0JAG4EBQFsBQFjBQFtBQhIQUxGRVZFTgEBbgIBbAFtCQBuBAUBbAUBbQUBYwUISEFMRkVWRU4BAW8BAXAJALkJAgUBcAUBYQEBcQAJAQFvAQkAzAgCAgIlcwkAzAgCAgtpbml0aWFsaXplZAUDbmlsAQFyAAkBAW8BCQDMCAICAiVzCQDMCAICEmNvb3JkaW5hdG9yQWRkcmVzcwUDbmlsAQFzAAkBAW8BCQDMCAICAiVzCQDMCAICD3ZlcmlmaWVyQWRkcmVzcwUDbmlsAQF0AAkBAW8BCQDMCAICAiVzCQDMCAICD2Zyb250ZW5kQWRkcmVzcwUDbmlsAQF1AAkBAW8BCQDMCAICAiVzCQDMCAICD3RyZWFzdXJ5QWRkcmVzcwUDbmlsAQF2AAkBAW8BCQDMCAICAiVzCQDMCAICDW9yYWNsZUFkZHJlc3MFA25pbAEBdwIBeAF5CQEBbwEJAMwIAgIGJXMlcyVzCQDMCAICBXZhdWx0CQDMCAIFAXgJAMwIAgUBeQUDbmlsAQF6AAkBAW8BCQDMCAICAiVzCQDMCAICDGJhY2tpbmdSYXRpbwUDbmlsAQFBAAkBAW8BCQDMCAICAiVzCQDMCAICEGxpcXVpZGF0aW9uUmF0aW8FA25pbAEBQgAJAQFvAQkAzAgCAgIlcwkAzAgCAhZsaXF1aWRhdGlvblByb3RvY29sRmVlBQNuaWwBAUMACQEBbwEJAMwIAgICJXMJAMwIAgIGdGlja2VyBQNuaWwBAUQACQEBbwEJAMwIAgICJXMJAMwIAgISbWF4UmF0ZUhlaWdodERlbHRhBQNuaWwBAUUACQEBbwEJAMwIAgICJXMJAMwIAgIPY29udHJhY3RBc3NldElkBQNuaWwBAUYBAUcJAQFvAQkAzAgCAgQlcyVzCQDMCAICBXByaWNlCQDMCAIFAUcFA25pbAEBSAEBRwkBAW8BCQDMCAICBCVzJXMJAMwIAgIKbGFzdEhlaWdodAkAzAgCBQFHBQNuaWwBAUkCAUoBSwkBAW8BCQDMCAICBiVzJXMlcwkAzAgCAgZzaWduZWQJAMwIAgUBSgkAzAgCBQFLBQNuaWwBAUwACQEBbwEJAMwIAgICJXMJAMwIAgIOcHJvdG9jb2xBY3RpdmUFA25pbAEBTQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkBAXEABwEBTgADCQEBIQEJAQFNAAkAAgECD05vdCBpbml0aWFsaXplZAUEdW5pdAEBTwADCQEBTQAJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkBQR1bml0AQFQAQFRAwkBAiE9AggFAVEGY2FsbGVyBQR0aGlzCQACAQIdT25seSBzZWxmIGludm9jYXRpb24gYWxsb3dlZC4FBHVuaXQBAVIACQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBAXIAAhZDb29yZGluYXRvciBpcyBub3Qgc2V0AQFTAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQF2AAIRT3JhY2xlIGlzIG5vdCBzZXQBAVQABAFVCQCiCAEJAQFyAAMJAAECBQFVAgZTdHJpbmcEAVYFAVUJAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUBVgkBAXMAAwkAAQIFAVUCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEBVwIBWAFZCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBAVIABQFYBQFZAQFaAAkBAVcCCQEBdAACE0Zyb250ZW5kIGlzIG5vdCBzZXQBAmFhAAkBAVcCCQEBdQACE1RyZWFzdXJ5IGlzIG5vdCBzZXQBAmFiAAkBC3ZhbHVlT3JFbHNlAgkAmggCCQEBUgAJAQFEAAUBZAECYWMACQELdmFsdWVPckVsc2UCCQCaCAIJAQFSAAkBAUIABQFnAQJhZAAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQFFAAECYWUACQELdmFsdWVPckVsc2UCCQCbCAIJAQFSAAkBAUwABwECYWYAAwMJAQEhAQkBAmFlAAYJAQEhAQkBAU0ACQACAQItUHJvdG9jb2wgaXMgZGlzYWJsZWQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQuBQR1bml0AQJhZwEBUQMJAQIhPQIIBQFRBmNhbGxlcgkBAVoACQACAQILTm90IGFsbG93ZWQFBHVuaXQBAmFoAQFRAwkBAiE9AgkAkAMBCAUBUQhwYXltZW50cwABCQACAQIWTXVzdCBoYXZlIG9uZSBwYXltZW50LgUEdW5pdAECYWkBAmFqAwkAZwIAAAUCYWoJAAIBAh1BdHRyaWJ1dGUgc2hvdWxkIGJlIHBvc2l0aXZlLgUEdW5pdAECYWsBAmFqAwkAZgIAAAUCYWoJAAIBAiVBdHRyaWJ1dGUgc2hvdWxkIGJlIHBvc2l0aXZlIG9yIHplcm8uBQR1bml0AQJhbAECYW0DCQAAAgUCYW0CBVdBVkVTBQR1bml0CQDZBAEFAmFtAQJhbgICYW8CYXAEAmFtBAFVBQJhcAMJAAECBQFVAgpCeXRlVmVjdG9yBAJhcQUBVQUCYXEDCQABAgUBVQIGU3RyaW5nBAFWBQFVCQECYWwBBQFWAwkAAQIFAVUCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgQBVQUCYW0DCQABAgUBVQIKQnl0ZVZlY3RvcgQCYXEFAVUEAmFyBAJhcwkA7AcBBQJhcQMJAAECBQJhcwIFQXNzZXQEAXkFAmFzCAUBeQRuYW1lAwkAAQIFAmFzAgRVbml0CQACAQkArAICAhFDYW4ndCBmaW5kIGFzc2V0IAkA2AQBBQJhcQkAAgECC01hdGNoIGVycm9yBAFZCQACAQkArAICAh5BdHRhY2hlZCBwYXltZW50IGFzc2V0IGlzIG5vdCAFAmFyBAJhcwgFAmFvB2Fzc2V0SWQDCQABAgUCYXMCCkJ5dGVWZWN0b3IEAmF0BQJhcwMJAQIhPQIFAmF0BQJhbQUBWQUEdW5pdAMJAAECBQJhcwIEVW5pdAUBWQkAAgECC01hdGNoIGVycm9yAwkAAQIFAVUCBFVuaXQDCQECIT0CCAUCYW8HYXNzZXRJZAUEdW5pdAkAAgECI0F0dGFjaGVkIHBheW1lbnQgYXNzZXQgaXMgbm90IFdBVkVTBQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmF1AAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQF6AAIYQmFja2luZyByYXRpbyBpcyBub3Qgc2V0AQJhdgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEBQQACHExpcXVpZGF0aW9uIHJhdGlvIGlzIG5vdCBzZXQBAmF3AQFKBAFVCQCmCAEFAUoDCQABAgUBVQIHQWRkcmVzcwQBeAUBVQYDCQABAgUBVQIEVW5pdAkAAgECD0ludmFsaWQgYWRkcmVzcwkAAgECC01hdGNoIGVycm9yAQJheAAJAQFvAQkAzAgCAgIlcwkAzAgCAhJ0b3RhbEFzc2V0QWNjZXB0ZWQFA25pbAECYXkACQEBbwEJAMwIAgICJXMJAMwIAgIPdG90YWxFYXN0TWludGVkBQNuaWwBAmF6AAkBAW8BCQDMCAICAiVzCQDMCAICD2Vhc3RNaW50ZWRMaW1pdAUDbmlsAQJhQQAJAQFvAQkAzAgCAgIlcwkAzAgCAg1zdGFrZXJBZGRyZXNzBQNuaWwBAmFCAAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXgAAAABAmFDAAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXkAAAABAmFEAAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXoAAAABAmFFAAkBC3ZhbHVlT3JFbHNlAgkAoggBCQECYUEABQFiAQJhRgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhRQABAmFHAAkBAiE9AgkBAmFFAAUBYgECYUgCAmFJAmFKAwMJAGYCAAAFAmFKBgkAZgIAAAUCYUkJAAIBAh5CYWNraW5nIHJhdGlvIG11c3QgYmUgcG9zaXRpdmUDCQBmAgkAZAIFAWMFAWYFAmFKCQACAQIqTGlxdWlkYXRpb24gcmF0aW8gbXVzdCBiZSBoaWdoZXIgdGhhbiAxMDUlAwkAZwIFAmFKBQJhSQkAAgECM0JhY2tpbmcgcmF0aW8gbXVzdCBiZSBoaWdoZXIgdGhhbiBsaXF1aWRhdGlvbiByYXRpbwUEdW5pdAECYUsBAUoEAXkJAQJhZAAEAmFMCQEBWgAEAmFNCQCdCAIFAmFMCQEBdwIFAUoFAXkEAmFOBAFVBQJhTQMJAAECBQFVAgRVbml0CQDMCAICBiVkJWQlZAkAzAgCAgEwCQDMCAICATAJAMwIAgIBMAUDbmlsAwkAAQIFAVUCBlN0cmluZwQBVgUBVQkAtQkCBQFWBQFhCQACAQILTWF0Y2ggZXJyb3IEAmFPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU4FAWgEAmFQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU4FAWkEAmFRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU4FAWoJAJUKAwUCYVAFAmFPBQJhUQECYVIBAmFTBAJhVAkBAmFiAAQCYVUJAGUCCAUJbGFzdEJsb2NrBmhlaWdodAUCYVMDCQBnAgUCYVQFAmFVBQR1bml0CQACAQISTGFyZ2UgcHJpY2UgZGVsdGEuAQJhVgAEAUcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQFDAAQCYVMJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQFTAAkBAUgBBQFHBAJhVwkBAmFSAQUCYVMDCQAAAgUCYVcFAmFXBAJhWAkBEUBleHRyTmF0aXZlKDEwNTApAgkBAVMACQEBRgEFAUcJAGsDBQJhWAUBYwUBZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYVkCAUoCYVoEAmJhCQECYUsBBQFKBAJhUAgFAmJhAl8xBAJhTwgFAmJhAl8yBAJiYgkAZAIFAmFPAAEEAmJjCQBkAgUCYVAFAmFaAwkAZgIAAAUCYmMJAAIBAiZTb21ldGhpbmcgd2VudCB3cm9uZy4gQ29udGFjdCBzdXBwb3J0LgQCYmQJAQJhVgAJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBBQJiYgkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCYmQFA25pbAUBYQECYmUBAmFaBAJiZgkBAmF1AAQCYmQJAQJhVgAEAmJnCQEBbgIFAmFaBQJiZAQCYmgJAQFrAgUCYmcFAmJmCQCUCgIFAmJnBQJiaAsBUQEKaW5pdGlhbGl6ZQYCYmkCYmoCYmsCYmwCYm0CYm4EAmJvCQDMCAIJAQFQAQUBUQkAzAgCCQEBTwAJAMwIAgkBAmF3AQUCYmkJAMwIAgkBAmF3AQUCYmoJAMwIAgkBAmFIAgUCYmsFAmJsBQNuaWwDCQAAAgUCYm8FAmJvCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBegAFAmJrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBQQAFAmJsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFyAAUCYmkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAXYABQJiagkAzAgCCQELU3RyaW5nRW50cnkCCQEBQwAFAmJuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFFAAUCYm0JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFxAAYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFRAQlzZXRSYXRpb3MCAmJrAmJsBAJibwkAzAgCCQEBTgAJAMwIAgkBAVABBQFRCQDMCAIJAQJhSAIFAmJrBQJibAUDbmlsAwkAAAIFAmJvBQJibwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAXoABQJiawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUEABQJibAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAVEBCXNldE9yYWNsZQEBSgQCYnAJAMwIAgkBAVABBQFRCQDMCAIJAQJhdwEFAUoFA25pbAMJAAACBQJicAUCYnAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAXYABQFKBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BUQESc2V0RWFzdE1pbnRlZExpbWl0AQJicQQCYm8JAMwIAgkBAU4ACQDMCAIJAQFQAQUBUQkAzAgCCQECYWsBBQJicQUDbmlsAwkAAAIFAmJvBQJibwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF6AAUCYnEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFRAQlzZXRTdGFrZXIBAUoEAmJvCQDMCAIJAQFOAAkAzAgCCQEBUAEFAVEJAMwIAgkBAmF3AQUBSgUDbmlsAwkAAAIFAmJvBQJibwMJAQJhRwAJAAIBAilVbmFibGUgdG8gcHJvY2VlZC4gU3Rha2VyIGlzIGFscmVhZHkgc2V0LgkAzAgCCQELU3RyaW5nRW50cnkCCQECYUEABQFKBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BUQEEbWludAEBSgQCYnIJAJEDAggFAVEIcGF5bWVudHMAAAQCYnMJAQJhZAAEAmJwCQDMCAIJAQJhZgAJAMwIAgkBAmFnAQUBUQkAzAgCCQECYWgBBQFRCQDMCAIJAQJhbgIFAmJyBQJicwUDbmlsAwkAAAIFAmJwBQJicAQCYnQJAQJiZQEIBQJicgZhbW91bnQEAmJnCAUCYnQCXzEEAmJoCAUCYnQCXzIEAmFNCQECYVkCBQFKCAUCYnIGYW1vdW50BAJidQkAZAIJAQJhQgAIBQJicgZhbW91bnQEAmJ2CQBkAgkBAmFDAAkAaQIFAmJoAGQEAmJ3CQECYUQAAwMJAGYCBQJidwAACQBmAgUCYnYFAmJ3BwkAAgECOFVuYWJsZSB0byBwcm9jZWVkLiBUb28gbXVjaCBFQVNUIG1pbnRlZCB3aXRoIHRoaXMgYXNzZXQuBAJieAMJAQJhRwAJAPwHBAkBAmFGAAIFc3Rha2UFA25pbAkAzAgCBQJicgUDbmlsBQR1bml0AwkAAAIFAmJ4BQJieAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXgABQJidQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF5AAUCYnYFA25pbAkAlAoCBQJhTQUCYmgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BUQEGc3VwcGx5AQFKBAJicgkAkQMCCAUBUQhwYXltZW50cwAABAJicwkBAmFkAAQCYnAJAMwIAgkBAmFmAAkAzAgCCQECYWcBBQFRCQDMCAIJAQJhaAEFAVEJAMwIAgkBAmFuAgUCYnIFAmJzBQNuaWwDCQAAAgUCYnAFAmJwBAJhTQkBAmFZAgUBSggFAmJyBmFtb3VudAQCYnUJAGQCCQECYUIACAUCYnIGYW1vdW50BAJieAMJAQJhRwAJAPwHBAkBAmFGAAIFc3Rha2UFA25pbAkAzAgCBQJicgUDbmlsBQR1bml0AwkAAAIFAmJ4BQJieAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXgABQJidQUDbmlsBQJhTQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFRAQVjbG9zZQIBSgJhWgQCYnAJAMwIAgkBAmFmAAkAzAgCCQECYWcBBQFRCQDMCAIJAQJhdwEFAUoJAMwIAgkBAmFpAQUCYVoFA25pbAMJAAACBQJicAUCYnAEAmFQCAkBAmFLAQUBSgJfMQMJAGYCBQJhWgUCYVAJAAIBAi1VbmFibGUgdG8gcHJvY2VlZC4gTm90IGVub3VnaCBhc3NldCBpbiB2YXVsdC4DCQBmAgUCYVoJAQJhQgAJAAIBAjBVbmFibGUgdG8gcHJvY2VlZC4gTm90IGVub3VnaCBhc3NldCBpbiB0cmVhc3VyeS4EAmJ5CQECYVkCBQFKCQEBLQEFAmFaBAJiegkBAmJlAQUCYVoEAmJnCAUCYnoCXzEEAmJoCAUCYnoCXzIEAmJ4AwkBAmFHAAkA/AcECQECYUYAAgd1bnN0YWtlCQDMCAIFAmFaBQNuaWwFA25pbAUEdW5pdAMJAAACBQJieAUCYngEAmFtCQECYWwBCQECYWQABAF4CQERQGV4dHJOYXRpdmUoMTA2MikBBQFKBAJidQkAZQIJAQJhQgAFAmFaBAJidgkAZQIJAQJhQwAJAGkCBQJiaABkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJheAAFAmJ1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXkABQJidgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQF4BQJhWgUCYW0FA25pbAkAlQoDBQJieQUCYmgFAmJnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAVEBCWxpcXVpZGF0ZQMCYkEBSgJiQgQCYnAJAMwIAgkBAmFmAAkAzAgCCQECYWcBBQFRBQNuaWwDCQAAAgUCYnAFAmJwBAJhUAgJAQJhSwEFAUoCXzEEAmJDCQEBbgIFAmFQBQJiQgMJAGYCBQJiQwUCYVAJAAIBAi1VbmFibGUgdG8gcHJvY2VlZC4gTm90IGVub3VnaCBhc3NldCBpbiB2YXVsdC4DCQBmAgUCYkMJAQJhQgAJAAIBAiRVbmFibGUgdG8gcHJvY2VlZC4gTm90IGVub3VnaCBhc3NldC4EAmJ5CQECYVkCBQFKCQEBLQEFAmJDBAJiRAkBAmJlAQUCYkMEAmJnCAUCYkQCXzEEAmJoCAUCYkQCXzIEAmJ4AwkBAmFHAAkA/AcECQECYUYAAgd1bnN0YWtlCQDMCAIFAmJDBQNuaWwFA25pbAUEdW5pdAMJAAACBQJieAUCYngEAmJFCQEBbgIFAmJDCQECYWMABAJiRgkAZQIFAmJDBQJiRQQCYnUJAGUCCQECYUIABQJiQwQCYnYJAGUCCQECYUMACQBpAgUCYmgAZAQCYkcJAQJhYQAEAmJICQERQGV4dHJOYXRpdmUoMTA2MikBBQJiQQQCYW0JAQJhbAEJAQJhZAAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF4AAUCYnUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJheQAFAmJ2CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJIBQJiRgUCYW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYkcFAmJFBQJhbQUDbmlsCQCUCgIFAmJ5BQJiaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFRARJnZXRDdXJyZW50VXNkUHJpY2UACQCUCgIFA25pbAkBAmFWAAFRAQ9nZXRTdWJ2YXVsdEluZm8BAUoEAmFQCAkBAmFLAQUBSgJfMQQCYkkJAQJiZQEFAmFQBAJiZwgFAmJJAl8xBAJiaAgFAmJJAl8yBAJiSgkBAmF2AAQCYksJAQFuAgUCYmcFAmJKCQCUCgIFA25pbAkAlQoDBQJiZwUCYmgFAmJLAQJiTAECYk0ABAFVCQEBVAADCQABAgUBVQIGU3RyaW5nBAF4BQFVCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXgJAQFJAgkApQgBBQR0aGlzCQDYBAEIBQJiTAJpZAcJAPQDAwgFAmJMCWJvZHlCeXRlcwkAkQMCCAUCYkwGcHJvb2ZzAAAIBQJiTA9zZW5kZXJQdWJsaWNLZXno9RIx", "height": 2662676, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "__" | |
5 | + | ||
6 | + | let b = "" | |
7 | + | ||
8 | + | let c = 1000000000000 | |
9 | + | ||
10 | + | let d = 5 | |
11 | + | ||
12 | + | let e = 1000000 | |
13 | + | ||
14 | + | let f = ((c / 100) * 5) | |
15 | + | ||
16 | + | let g = ((c / 100) * 2) | |
17 | + | ||
18 | + | let h = 1 | |
19 | + | ||
20 | + | let i = 2 | |
21 | + | ||
22 | + | let j = 3 | |
23 | + | ||
24 | + | func k (l,m) = fraction(l, c, m, HALFEVEN) | |
25 | + | ||
26 | + | ||
27 | + | func n (l,m) = fraction(l, m, c, HALFEVEN) | |
28 | + | ||
29 | + | ||
30 | + | func o (p) = makeString(p, a) | |
31 | + | ||
32 | + | ||
33 | + | func q () = o(["%s", "initialized"]) | |
34 | + | ||
35 | + | ||
36 | + | func r () = o(["%s", "coordinatorAddress"]) | |
37 | + | ||
38 | + | ||
39 | + | func s () = o(["%s", "verifierAddress"]) | |
40 | + | ||
41 | + | ||
42 | + | func t () = o(["%s", "frontendAddress"]) | |
43 | + | ||
44 | + | ||
45 | + | func u () = o(["%s", "treasuryAddress"]) | |
46 | + | ||
47 | + | ||
48 | + | func v () = o(["%s", "oracleAddress"]) | |
49 | + | ||
50 | + | ||
51 | + | func w (x,y) = o(["%s%s%s", "vault", x, y]) | |
52 | + | ||
53 | + | ||
54 | + | func z () = o(["%s", "backingRatio"]) | |
55 | + | ||
56 | + | ||
57 | + | func A () = o(["%s", "liquidationRatio"]) | |
58 | + | ||
59 | + | ||
60 | + | func B () = o(["%s", "liquidationProtocolFee"]) | |
61 | + | ||
62 | + | ||
63 | + | func C () = o(["%s", "ticker"]) | |
64 | + | ||
65 | + | ||
66 | + | func D () = o(["%s", "maxRateHeightDelta"]) | |
67 | + | ||
68 | + | ||
69 | + | func E () = o(["%s", "contractAssetId"]) | |
70 | + | ||
71 | + | ||
72 | + | func F (G) = o(["%s%s", "price", G]) | |
73 | + | ||
74 | + | ||
75 | + | func H (G) = o(["%s%s", "lastHeight", G]) | |
76 | + | ||
77 | + | ||
78 | + | func I (J,K) = o(["%s%s%s", "signed", J, K]) | |
79 | + | ||
80 | + | ||
81 | + | func L () = o(["%s", "protocolActive"]) | |
82 | + | ||
83 | + | ||
84 | + | func M () = valueOrElse(getBoolean(this, q()), false) | |
85 | + | ||
86 | + | ||
87 | + | func N () = if (!(M())) | |
88 | + | then throw("Not initialized") | |
89 | + | else unit | |
90 | + | ||
91 | + | ||
92 | + | func O () = if (M()) | |
93 | + | then throw("Already initialized") | |
94 | + | else unit | |
95 | + | ||
96 | + | ||
97 | + | func P (Q) = if ((Q.caller != this)) | |
98 | + | then throw("Only self invocation allowed.") | |
99 | + | else unit | |
100 | + | ||
101 | + | ||
102 | + | func R () = addressFromStringValue(valueOrErrorMessage(getString(r()), "Coordinator is not set")) | |
103 | + | ||
104 | + | ||
105 | + | func S () = addressFromStringValue(valueOrErrorMessage(getString(v()), "Oracle is not set")) | |
106 | + | ||
107 | + | ||
108 | + | func T () = { | |
109 | + | let U = getString(r()) | |
110 | + | if ($isInstanceOf(U, "String")) | |
111 | + | then { | |
112 | + | let V = U | |
113 | + | getString(addressFromStringValue(V), s()) | |
114 | + | } | |
115 | + | else if ($isInstanceOf(U, "Unit")) | |
116 | + | then unit | |
117 | + | else throw("Match error") | |
118 | + | } | |
119 | + | ||
120 | + | ||
121 | + | func W (X,Y) = addressFromStringValue(valueOrErrorMessage(getString(R(), X), Y)) | |
122 | + | ||
123 | + | ||
124 | + | func Z () = W(t(), "Frontend is not set") | |
125 | + | ||
126 | + | ||
127 | + | func aa () = W(u(), "Treasury is not set") | |
128 | + | ||
129 | + | ||
130 | + | func ab () = valueOrElse(getInteger(R(), D()), d) | |
131 | + | ||
132 | + | ||
133 | + | func ac () = valueOrElse(getInteger(R(), B()), g) | |
134 | + | ||
135 | + | ||
136 | + | func ad () = getStringValue(E()) | |
137 | + | ||
138 | + | ||
139 | + | func ae () = valueOrElse(getBoolean(R(), L()), false) | |
140 | + | ||
141 | + | ||
142 | + | func af () = if (if (!(ae())) | |
143 | + | then true | |
144 | + | else !(M())) | |
145 | + | then throw("Protocol is disabled. Please contact support.") | |
146 | + | else unit | |
147 | + | ||
148 | + | ||
149 | + | func ag (Q) = if ((Q.caller != Z())) | |
150 | + | then throw("Not allowed") | |
151 | + | else unit | |
152 | + | ||
153 | + | ||
154 | + | func ah (Q) = if ((size(Q.payments) != 1)) | |
155 | + | then throw("Must have one payment.") | |
156 | + | else unit | |
157 | + | ||
158 | + | ||
159 | + | func ai (aj) = if ((0 >= aj)) | |
160 | + | then throw("Attribute should be positive.") | |
161 | + | else unit | |
162 | + | ||
163 | + | ||
164 | + | func ak (aj) = if ((0 > aj)) | |
165 | + | then throw("Attribute should be positive or zero.") | |
166 | + | else unit | |
167 | + | ||
168 | + | ||
169 | + | func al (am) = if ((am == "WAVES")) | |
170 | + | then unit | |
171 | + | else fromBase58String(am) | |
172 | + | ||
173 | + | ||
174 | + | func an (ao,ap) = { | |
175 | + | let am = { | |
176 | + | let U = ap | |
177 | + | if ($isInstanceOf(U, "ByteVector")) | |
178 | + | then { | |
179 | + | let aq = U | |
180 | + | aq | |
181 | + | } | |
182 | + | else if ($isInstanceOf(U, "String")) | |
183 | + | then { | |
184 | + | let V = U | |
185 | + | al(V) | |
186 | + | } | |
187 | + | else if ($isInstanceOf(U, "Unit")) | |
188 | + | then unit | |
189 | + | else throw("Match error") | |
190 | + | } | |
191 | + | let U = am | |
192 | + | if ($isInstanceOf(U, "ByteVector")) | |
193 | + | then { | |
194 | + | let aq = U | |
195 | + | let ar = { | |
196 | + | let as = assetInfo(aq) | |
197 | + | if ($isInstanceOf(as, "Asset")) | |
198 | + | then { | |
199 | + | let y = as | |
200 | + | y.name | |
201 | + | } | |
202 | + | else if ($isInstanceOf(as, "Unit")) | |
203 | + | then throw(("Can't find asset " + toBase58String(aq))) | |
204 | + | else throw("Match error") | |
205 | + | } | |
206 | + | let Y = throw(("Attached payment asset is not " + ar)) | |
207 | + | let as = ao.assetId | |
208 | + | if ($isInstanceOf(as, "ByteVector")) | |
209 | + | then { | |
210 | + | let at = as | |
211 | + | if ((at != am)) | |
212 | + | then Y | |
213 | + | else unit | |
214 | + | } | |
215 | + | else if ($isInstanceOf(as, "Unit")) | |
216 | + | then Y | |
217 | + | else throw("Match error") | |
218 | + | } | |
219 | + | else if ($isInstanceOf(U, "Unit")) | |
220 | + | then if ((ao.assetId != unit)) | |
221 | + | then throw("Attached payment asset is not WAVES") | |
222 | + | else unit | |
223 | + | else throw("Match error") | |
224 | + | } | |
225 | + | ||
226 | + | ||
227 | + | func au () = valueOrErrorMessage(getInteger(z()), "Backing ratio is not set") | |
228 | + | ||
229 | + | ||
230 | + | func av () = valueOrErrorMessage(getInteger(A()), "Liquidation ratio is not set") | |
231 | + | ||
232 | + | ||
233 | + | func aw (J) = { | |
234 | + | let U = addressFromString(J) | |
235 | + | if ($isInstanceOf(U, "Address")) | |
236 | + | then { | |
237 | + | let x = U | |
238 | + | true | |
239 | + | } | |
240 | + | else if ($isInstanceOf(U, "Unit")) | |
241 | + | then throw("Invalid address") | |
242 | + | else throw("Match error") | |
243 | + | } | |
244 | + | ||
245 | + | ||
246 | + | func ax () = o(["%s", "totalAssetAccepted"]) | |
247 | + | ||
248 | + | ||
249 | + | func ay () = o(["%s", "totalEastMinted"]) | |
250 | + | ||
251 | + | ||
252 | + | func az () = o(["%s", "eastMintedLimit"]) | |
253 | + | ||
254 | + | ||
255 | + | func aA () = o(["%s", "stakerAddress"]) | |
256 | + | ||
257 | + | ||
258 | + | func aB () = valueOrElse(getInteger(ax()), 0) | |
259 | + | ||
260 | + | ||
261 | + | func aC () = valueOrElse(getInteger(ay()), 0) | |
262 | + | ||
263 | + | ||
264 | + | func aD () = valueOrElse(getInteger(az()), 0) | |
265 | + | ||
266 | + | ||
267 | + | func aE () = valueOrElse(getString(aA()), b) | |
268 | + | ||
269 | + | ||
270 | + | func aF () = addressFromStringValue(aE()) | |
271 | + | ||
272 | + | ||
273 | + | func aG () = (aE() != b) | |
274 | + | ||
275 | + | ||
276 | + | func aH (aI,aJ) = if (if ((0 > aJ)) | |
277 | + | then true | |
278 | + | else (0 > aI)) | |
279 | + | then throw("Backing ratio must be positive") | |
280 | + | else if (((c + f) > aJ)) | |
281 | + | then throw("Liquidation ratio must be higher than 105%") | |
282 | + | else if ((aJ >= aI)) | |
283 | + | then throw("Backing ratio must be higher than liquidation ratio") | |
284 | + | else unit | |
285 | + | ||
286 | + | ||
287 | + | func aK (J) = { | |
288 | + | let y = ad() | |
289 | + | let aL = Z() | |
290 | + | let aM = getString(aL, w(J, y)) | |
291 | + | let aN = { | |
292 | + | let U = aM | |
293 | + | if ($isInstanceOf(U, "Unit")) | |
294 | + | then ["%d%d%d", "0", "0", "0"] | |
295 | + | else if ($isInstanceOf(U, "String")) | |
296 | + | then { | |
297 | + | let V = U | |
298 | + | split(V, a) | |
299 | + | } | |
300 | + | else throw("Match error") | |
301 | + | } | |
302 | + | let aO = parseIntValue(aN[h]) | |
303 | + | let aP = parseIntValue(aN[i]) | |
304 | + | let aQ = parseIntValue(aN[j]) | |
305 | + | $Tuple3(aP, aO, aQ) | |
306 | + | } | |
307 | + | ||
308 | + | ||
309 | + | func aR (aS) = { | |
310 | + | let aT = ab() | |
311 | + | let aU = (lastBlock.height - aS) | |
312 | + | if ((aT >= aU)) | |
313 | + | then unit | |
314 | + | else throw("Large price delta.") | |
315 | + | } | |
316 | + | ||
317 | + | ||
318 | + | func aV () = { | |
319 | + | let G = getStringValue(C()) | |
320 | + | let aS = getIntegerValue(S(), H(G)) | |
321 | + | let aW = aR(aS) | |
322 | + | if ((aW == aW)) | |
323 | + | then { | |
324 | + | let aX = getIntegerValue(S(), F(G)) | |
325 | + | fraction(aX, c, e) | |
326 | + | } | |
327 | + | else throw("Strict value is not equal to itself.") | |
328 | + | } | |
329 | + | ||
330 | + | ||
331 | + | func aY (J,aZ) = { | |
332 | + | let ba = aK(J) | |
333 | + | let aP = ba._1 | |
334 | + | let aO = ba._2 | |
335 | + | let bb = (aO + 1) | |
336 | + | let bc = (aP + aZ) | |
337 | + | if ((0 > bc)) | |
338 | + | then throw("Something went wrong. Contact support.") | |
339 | + | else { | |
340 | + | let bd = aV() | |
341 | + | makeString(["%d%d%d", toString(bb), toString(bc), toString(bd)], a) | |
342 | + | } | |
343 | + | } | |
344 | + | ||
345 | + | ||
346 | + | func be (aZ) = { | |
347 | + | let bf = au() | |
348 | + | let bd = aV() | |
349 | + | let bg = n(aZ, bd) | |
350 | + | let bh = k(bg, bf) | |
351 | + | $Tuple2(bg, bh) | |
352 | + | } | |
353 | + | ||
354 | + | ||
355 | + | @Callable(Q) | |
356 | + | func initialize (bi,bj,bk,bl,bm,bn) = { | |
357 | + | let bo = [P(Q), O(), aw(bi), aw(bj), aH(bk, bl)] | |
358 | + | if ((bo == bo)) | |
359 | + | then [IntegerEntry(z(), bk), IntegerEntry(A(), bl), StringEntry(r(), bi), StringEntry(v(), bj), StringEntry(C(), bn), StringEntry(E(), bm), BooleanEntry(q(), true)] | |
360 | + | else throw("Strict value is not equal to itself.") | |
361 | + | } | |
362 | + | ||
363 | + | ||
364 | + | ||
365 | + | @Callable(Q) | |
366 | + | func setRatios (bk,bl) = { | |
367 | + | let bo = [N(), P(Q), aH(bk, bl)] | |
368 | + | if ((bo == bo)) | |
369 | + | then [IntegerEntry(z(), bk), IntegerEntry(A(), bl)] | |
370 | + | else throw("Strict value is not equal to itself.") | |
371 | + | } | |
372 | + | ||
373 | + | ||
374 | + | ||
375 | + | @Callable(Q) | |
376 | + | func setOracle (J) = { | |
377 | + | let bp = [P(Q), aw(J)] | |
378 | + | if ((bp == bp)) | |
379 | + | then [StringEntry(v(), J)] | |
380 | + | else throw("Strict value is not equal to itself.") | |
381 | + | } | |
382 | + | ||
383 | + | ||
384 | + | ||
385 | + | @Callable(Q) | |
386 | + | func setEastMintedLimit (bq) = { | |
387 | + | let bo = [N(), P(Q), ak(bq)] | |
388 | + | if ((bo == bo)) | |
389 | + | then [IntegerEntry(az(), bq)] | |
390 | + | else throw("Strict value is not equal to itself.") | |
391 | + | } | |
392 | + | ||
393 | + | ||
394 | + | ||
395 | + | @Callable(Q) | |
396 | + | func setStaker (J) = { | |
397 | + | let bo = [N(), P(Q), aw(J)] | |
398 | + | if ((bo == bo)) | |
399 | + | then if (aG()) | |
400 | + | then throw("Unable to proceed. Staker is already set.") | |
401 | + | else [StringEntry(aA(), J)] | |
402 | + | else throw("Strict value is not equal to itself.") | |
403 | + | } | |
404 | + | ||
405 | + | ||
406 | + | ||
407 | + | @Callable(Q) | |
408 | + | func mint (J) = { | |
409 | + | let br = Q.payments[0] | |
410 | + | let bs = ad() | |
411 | + | let bp = [af(), ag(Q), ah(Q), an(br, bs)] | |
412 | + | if ((bp == bp)) | |
413 | + | then { | |
414 | + | let bt = be(br.amount) | |
415 | + | let bg = bt._1 | |
416 | + | let bh = bt._2 | |
417 | + | let aM = aY(J, br.amount) | |
418 | + | let bu = (aB() + br.amount) | |
419 | + | let bv = (aC() + (bh / 100)) | |
420 | + | let bw = aD() | |
421 | + | if (if ((bw > 0)) | |
422 | + | then (bv > bw) | |
423 | + | else false) | |
424 | + | then throw("Unable to proceed. Too much EAST minted with this asset.") | |
425 | + | else { | |
426 | + | let bx = if (aG()) | |
427 | + | then invoke(aF(), "stake", nil, [br]) | |
428 | + | else unit | |
429 | + | if ((bx == bx)) | |
430 | + | then $Tuple2([IntegerEntry(ax(), bu), IntegerEntry(ay(), bv)], $Tuple2(aM, bh)) | |
431 | + | else throw("Strict value is not equal to itself.") | |
432 | + | } | |
433 | + | } | |
434 | + | else throw("Strict value is not equal to itself.") | |
435 | + | } | |
436 | + | ||
437 | + | ||
438 | + | ||
439 | + | @Callable(Q) | |
440 | + | func supply (J) = { | |
441 | + | let br = Q.payments[0] | |
442 | + | let bs = ad() | |
443 | + | let bp = [af(), ag(Q), ah(Q), an(br, bs)] | |
444 | + | if ((bp == bp)) | |
445 | + | then { | |
446 | + | let aM = aY(J, br.amount) | |
447 | + | let bu = (aB() + br.amount) | |
448 | + | let bx = if (aG()) | |
449 | + | then invoke(aF(), "stake", nil, [br]) | |
450 | + | else unit | |
451 | + | if ((bx == bx)) | |
452 | + | then $Tuple2([IntegerEntry(ax(), bu)], aM) | |
453 | + | else throw("Strict value is not equal to itself.") | |
454 | + | } | |
455 | + | else throw("Strict value is not equal to itself.") | |
456 | + | } | |
457 | + | ||
458 | + | ||
459 | + | ||
460 | + | @Callable(Q) | |
461 | + | func close (J,aZ) = { | |
462 | + | let bp = [af(), ag(Q), aw(J), ai(aZ)] | |
463 | + | if ((bp == bp)) | |
464 | + | then { | |
465 | + | let aP = aK(J)._1 | |
466 | + | if ((aZ > aP)) | |
467 | + | then throw("Unable to proceed. Not enough asset in vault.") | |
468 | + | else if ((aZ > aB())) | |
469 | + | then throw("Unable to proceed. Not enough asset in treasury.") | |
470 | + | else { | |
471 | + | let by = aY(J, -(aZ)) | |
472 | + | let bz = be(aZ) | |
473 | + | let bg = bz._1 | |
474 | + | let bh = bz._2 | |
475 | + | let bx = if (aG()) | |
476 | + | then invoke(aF(), "unstake", [aZ], nil) | |
477 | + | else unit | |
478 | + | if ((bx == bx)) | |
479 | + | then { | |
480 | + | let am = al(ad()) | |
481 | + | let x = addressFromStringValue(J) | |
482 | + | let bu = (aB() - aZ) | |
483 | + | let bv = (aC() - (bh / 100)) | |
484 | + | $Tuple2([IntegerEntry(ax(), bu), IntegerEntry(ay(), bv), ScriptTransfer(x, aZ, am)], $Tuple3(by, bh, bg)) | |
485 | + | } | |
486 | + | else throw("Strict value is not equal to itself.") | |
487 | + | } | |
488 | + | } | |
489 | + | else throw("Strict value is not equal to itself.") | |
490 | + | } | |
491 | + | ||
492 | + | ||
493 | + | ||
494 | + | @Callable(Q) | |
495 | + | func liquidate (bA,J,bB) = { | |
496 | + | let bp = [af(), ag(Q)] | |
497 | + | if ((bp == bp)) | |
498 | + | then { | |
499 | + | let aP = aK(J)._1 | |
500 | + | let bC = n(aP, bB) | |
501 | + | if ((bC > aP)) | |
502 | + | then throw("Unable to proceed. Not enough asset in vault.") | |
503 | + | else if ((bC > aB())) | |
504 | + | then throw("Unable to proceed. Not enough asset.") | |
505 | + | else { | |
506 | + | let by = aY(J, -(bC)) | |
507 | + | let bD = be(bC) | |
508 | + | let bg = bD._1 | |
509 | + | let bh = bD._2 | |
510 | + | let bx = if (aG()) | |
511 | + | then invoke(aF(), "unstake", [bC], nil) | |
512 | + | else unit | |
513 | + | if ((bx == bx)) | |
514 | + | then { | |
515 | + | let bE = n(bC, ac()) | |
516 | + | let bF = (bC - bE) | |
517 | + | let bu = (aB() - bC) | |
518 | + | let bv = (aC() - (bh / 100)) | |
519 | + | let bG = aa() | |
520 | + | let bH = addressFromStringValue(bA) | |
521 | + | let am = al(ad()) | |
522 | + | $Tuple2([IntegerEntry(ax(), bu), IntegerEntry(ay(), bv), ScriptTransfer(bH, bF, am), ScriptTransfer(bG, bE, am)], $Tuple2(by, bh)) | |
523 | + | } | |
524 | + | else throw("Strict value is not equal to itself.") | |
525 | + | } | |
526 | + | } | |
527 | + | else throw("Strict value is not equal to itself.") | |
528 | + | } | |
529 | + | ||
530 | + | ||
531 | + | ||
532 | + | @Callable(Q) | |
533 | + | func getCurrentUsdPrice () = $Tuple2(nil, aV()) | |
534 | + | ||
535 | + | ||
536 | + | ||
537 | + | @Callable(Q) | |
538 | + | func getSubvaultInfo (J) = { | |
539 | + | let aP = aK(J)._1 | |
540 | + | let bI = be(aP) | |
541 | + | let bg = bI._1 | |
542 | + | let bh = bI._2 | |
543 | + | let bJ = av() | |
544 | + | let bK = n(bg, bJ) | |
545 | + | $Tuple2(nil, $Tuple3(bg, bh, bK)) | |
546 | + | } | |
547 | + | ||
548 | + | ||
549 | + | @Verifier(bL) | |
550 | + | func bM () = { | |
551 | + | let U = T() | |
552 | + | if ($isInstanceOf(U, "String")) | |
553 | + | then { | |
554 | + | let x = U | |
555 | + | valueOrElse(getBoolean(addressFromStringValue(x), I(toString(this), toBase58String(bL.id))), false) | |
556 | + | } | |
557 | + | else sigVerify(bL.bodyBytes, bL.proofs[0], bL.senderPublicKey) | |
558 | + | } | |
559 | + |
github/deemru/w8io/026f985 25.61 ms ◑