tx · H6xosB8CxgYKLoW46ELzqxyYY7KzMsRPcGwRYPYeALbY

3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk:  -0.01000000 Waves

2022.12.09 16:10 [3418296] smart account 3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk > SELF 0.00000000 Waves

{ "type": 13, "id": "H6xosB8CxgYKLoW46ELzqxyYY7KzMsRPcGwRYPYeALbY", "fee": 1000000, "feeAssetId": null, "timestamp": 1670591436575, "version": 1, "sender": "3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk", "senderPublicKey": "FwXAX9xcWiwbCejtdF8q1Nz8NpJqaVxXKnKK6JoR24pZ", "proofs": [ "4fR5uwKbFcwUPq3ft4zoDhx4XHh2JXozU1B9zhPVkKAbhMggSNeyWfYiLstkkaP4z6jW1C7YwbN2ZnKTeovfXcuh" ], "script": "base64:BgIwCAISCwoJCAgICAgICAEIEgASBAoCBAQSBAoCBAQSBQoDAQEEEgQKAgQEEgQKAgEBIAALZmFjdG9yc0Jhc2UA6AcBEHdyaXRlQ29uc3RTdHJpbmcCA2tleQV2YWx1ZQMJAQEhAQkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQELU3RyaW5nRW50cnkCBQNrZXkFBXZhbHVlCQACAQkArAICAhVhbHJlYWR5IGluaXRpYWxpemVkOiAFA2tleQENd3JpdGVDb25zdEludAIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlCQACAQkArAICAhVhbHJlYWR5IGluaXRpYWxpemVkOiAFA2tleQEId3JpdGVJbnQCA2tleQV2YWx1ZQMJAGYCAAAFBXZhbHVlCQACAQkArAICCQCsAgIJAKwCAgIXd3JpdGluZyBuZWdhdGl2ZSB2YWx1ZSAJAKQDAQUFdmFsdWUCCSBmb3Iga2V5IAUDa2V5CQEMSW50ZWdlckVudHJ5AgUDa2V5BQV2YWx1ZQEIYXNTdHJpbmcBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAgRzbToxAQZhc0ludDIBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgooSW50LCBJbnQpBAF4BQckbWF0Y2gwBQF4BAF0BQckbWF0Y2gwCQACAQIad3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludDIBEWFzVXNlckJhbGFuY2VEYXRhAQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIiKEludCwgSW50LCBJbnQsIEludCwgSW50LCBCb29sZWFuKQQBeAUHJG1hdGNoMAUBeAQBdAUHJG1hdGNoMAkAAgECATMBC3VzZXJCYWxhbmNlAgNyc3IEdXNlcgkBEWFzVXNlckJhbGFuY2VEYXRhAQkA/AcEBQNyc3ICC3VzZXJCYWxhbmNlCQDMCAIFBHVzZXIFA25pbAUDbmlsAQd0aHJvd0lmAgljb25kaXRpb24FZXJyb3IDBQljb25kaXRpb24JAAIBBQVlcnJvcgYBCGNoYW5nZUJ5AgNrZXkFdmFsdWUJAQh3cml0ZUludAIFA2tleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAAFBXZhbHVlAAtjb25maWdTdG9yZQIGY29uZmlnAA1jb25maWdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQtjb25maWdTdG9yZQASbWF5YmVPcmFjbGVBZGRyZXNzBAckbWF0Y2gwCQCdCAIFDWNvbmZpZ0FkZHJlc3MCDm9yYWNsZV9hZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzBQR1bml0AAZIRUlHSFQFBmhlaWdodAACdmQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAhF2aXJlc19kaXN0cmlidXRvcgIVYmFkIHZpcmVzIGRpc3RyaWJ1dG9yABBwcm90ZWN0ZWRSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQ1jb25maWdBZGRyZXNzAhFwcm90ZWN0ZWRfcmVzZXJ2ZQAFbWFpbjEJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCBW1haW4xAAt1c2R0UmVzZXJ2ZQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwILdXNkdFJlc2VydmUAC3VzZGNSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2RjUmVzZXJ2ZQADYWNjCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgNhY2MADnVzZG5WZXN0aW5nQWxsCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAg51c2RuVmVzdGluZ0FsbAALdXNkblZlc3RpbmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCC3VzZG5WZXN0aW5nAAt1c2RuQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwILdXNkbkFzc2V0SWQACXVzZG5Cb251cwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIFYm9udXMBCm1vdmVTdHJlYW0FA3JzcgZhY3Rpb24EZnJvbQZzdHJpbmcDYW10CQD8BwQFAnZkAgRtb3ZlCQDMCAIFA3JzcgkAzAgCBQZhY3Rpb24JAMwIAgUEZnJvbQkAzAgCBQZzdHJpbmcJAMwIAgUDYW10BQNuaWwFA25pbAEJb3BBbGxvd2VkAgJvcAphc3NldElkU3RyBAckbWF0Y2gwCQD8BwQFDWNvbmZpZ0FkZHJlc3MCCW9wQWxsb3dlZAkAzAgCBQphc3NldElkU3RyCQDMCAIFAm9wBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwAwUBYgYJAAIBAgtub3QgYWxsb3dlZAkAAgECIW9wQWxsb3dlZDogdW5leHBlY3RlZCByZXN1bHQgdHlwZQEKYWR2aXNlVXNlcgEDYWNjBAlkYXRhV2hhbGUJAQhhc1N0cmluZwEJAPwHBAULdXNkblZlc3RpbmcCB2FkdmlzZVUJAMwIAgUDYWNjBQNuaWwFA25pbAMJAAACBQlkYXRhV2hhbGUFCWRhdGFXaGFsZQQHZGF0YUFsbAkBCGFzU3RyaW5nAQkA/AcEBQ51c2RuVmVzdGluZ0FsbAIHYWR2aXNlVQkAzAgCBQNhY2MFA25pbAUDbmlsAwkAAAIFB2RhdGFBbGwFB2RhdGFBbGwJAKwCAgkArAICBQlkYXRhV2hhbGUCAyB8IAUHZGF0YUFsbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgALc3VyZkFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRzJ2TWhLNUNQcXNDRG9kdkxHelE4NFFrb0hYQ0ozb05QABBzdXJmU3Rha2VBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEJpb3RGcHFqUk1ra2VGQmNjblFOVVhVb3B5N0tGZXo1QwALc3VyZkFzc2V0SWQJANkEAQIsQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wBB2J1eVN1cmYDBmNhbGxlcgV3aGFsZQdyZWd1bGFyBAdhZGRyZXNzCQClCAEFBmNhbGxlcgQHcmVnUGFydAMFB3JlZ3VsYXIJAQVhc0ludAEJAPwHBAUOdXNkblZlc3RpbmdBbGwCFndpdGhkcmF3QWxsVmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAAADCQAAAgUHcmVnUGFydAUHcmVnUGFydAQJd2hhbGVQYXJ0AwUFd2hhbGUJAAIBAg9ub3QgaW1wbGVtZW50ZWQAAAMJAAACBQl3aGFsZVBhcnQFCXdoYWxlUGFydAQFdG90YWwJAGQCBQl3aGFsZVBhcnQFB3JlZ1BhcnQEA2J1eQkA/AcEBQtzdXJmQWRkcmVzcwIHYnV5U3VyZgkAzAgCAMCEPQkAzAgCAMCEPQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFC3VzZG5Bc3NldElkBQV0b3RhbAUDbmlsAwkAAAIFA2J1eQUDYnV5CQDwBwIFBHRoaXMFC3N1cmZBc3NldElkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBwFpAQRpbml0CQRjb25mAXQBYwh2ZXN0bkFsbAdhY2NvdW50BG1haW4JdXNkbkFzc2V0BWJvbnVzBXZlc3RuAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQISb25seSBzZWxmIGNhbiBpbml0CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgULY29uZmlnU3RvcmUFBGNvbmYJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2R0UmVzZXJ2ZQUBdAkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwICC3VzZGNSZXNlcnZlBQFjCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIOdXNkblZlc3RpbmdBbGwFCHZlc3RuQWxsCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgILdXNkblZlc3RpbmcFBXZlc3RuCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIDYWNjBQdhY2NvdW50CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIFbWFpbjEFBG1haW4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2RuQXNzZXRJZAUJdXNkbkFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVib251cwUFYm9udXMFA25pbAFpAQ1jb252ZXJ0VG9VU0ROAAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIKAQdtb3ZlUnNyAQNyc3IEB3Jlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEFA3JzcgQHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUHcmVzZXJ2ZQIHYXNzZXRJZAQGY2hlY2tzCQEJb3BBbGxvd2VkAgIOb3BlbkNvbGxhdGVyYWwFB2Fzc2V0SWQDCQAAAgUGY2hlY2tzBQZjaGVja3MDAwkBAiE9AgUDcnNyCQClCAEFC3VzZHRSZXNlcnZlCQECIT0CBQNyc3IJAKUIAQULdXNkY1Jlc2VydmUHCQACAQIPaW52YWxpZCByZXNlcnZlBANzaEMJAPwHBAUCdmQCCnN5bmNIZWlnaHQJAMwIAgUDcnNyBQNuaWwFA25pbAMJAAACBQNzaEMFA3NoQwQLJHQwNTEzMzUyMTcJAQZhc0ludDIBCQD8BwQFB3Jlc2VydmUCE3N0b3JlZERlcG9zaXRCb3Jyb3cFA25pbAUDbmlsBAx0b3RhbERlcG9zaXQIBQskdDA1MTMzNTIxNwJfMQQJdG90YWxEZWJ0CAULJHQwNTEzMzUyMTcCXzIEBHV0aWwDCQBmAgUMdG90YWxEZXBvc2l0AAAJAJcDAQkAzAgCBQtmYWN0b3JzQmFzZQkAzAgCCQBrAwUJdG90YWxEZWJ0BQtmYWN0b3JzQmFzZQUMdG90YWxEZXBvc2l0BQNuaWwAAAQNdXRpbFRocmVzaG9sZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1jb25maWdBZGRyZXNzCQCsAgIFB2Fzc2V0SWQCGV9vcGVuX2NvbGxhdGVyYWxfdGhyZXNvbGQA6AcDCQBmAgUNdXRpbFRocmVzaG9sZAUEdXRpbAkAAgECHW5vdCBhbGxvd2VkOiB1dGlsIDwgdGhyZXNob2xkBANkZXAJAQVhc0ludAEJAPwHBAUHcmVzZXJ2ZQIOdXNlckRlcG9zaXRVU0QJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUDZGVwBQNkZXAEAnMzCQEFYXNJbnQBCQD8BwQFB3Jlc2VydmUCEnRyYW5zZmVyQVRva2Vuc0ZvcgkAzAgCBQdhZGRyZXNzCQDMCAIFA2FjYwkAzAgCBQNkZXAFA25pbAUDbmlsAwkAAAIFAnMzBQJzMwQEcFJ3MwkBCm1vdmVTdHJlYW0FBQNyc3ICB2RlcG9zaXQFB2FkZHJlc3MFA2FjYwUCczMDCQAAAgUEcFJ3MwUEcFJ3MwUCczMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAm13CQD8BwQFC3VzZG5WZXN0aW5nAhJzdGFydFZlc3RpbmdBbGxGb3IJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAUDbmlsAwkAAAIFAm13BQJtdwQCbXQJAQVhc0ludAEJAQdtb3ZlUnNyAQkApQgBBQt1c2R0UmVzZXJ2ZQMJAAACBQJtdAUCbXQEAm1jCQEFYXNJbnQBCQEHbW92ZVJzcgEJAKUIAQULdXNkY1Jlc2VydmUDCQAAAgUCbWMFAm1jBAhkZXBUb3RhbAkAZAIFAm10BQJtYwQFcmVoYWIEB3VzZG5BbXQJAGsDBQhkZXBUb3RhbAkAZAIFC2ZhY3RvcnNCYXNlBQl1c2RuQm9udXMFC2ZhY3RvcnNCYXNlBAJ3ZAkA/AcEBRBwcm90ZWN0ZWRSZXNlcnZlAg93aXRoZHJhd1RvTWFpbjIJAMwIAgUDYWNjCQDMCAIFC3VzZG5Bc3NldElkCQDMCAIFB3VzZG5BbXQFA25pbAUDbmlsAwkAAAIFAndkBQJ3ZAQFcmVoYWIJAPwHBAUOdXNkblZlc3RpbmdBbGwCCmFjY291bnRGb3IJAMwIAgUHYWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFC3VzZG5Bc3NldElkBQd1c2RuQW10BQNuaWwDCQAAAgUFcmVoYWIFBXJlaGFiBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXJlaGFiBQVyZWhhYgQLJHQwNjM3MTY0MzMJAQZhc0ludDIBCQD8BwQFBW1haW4xAghoZWFsdGhPZgkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQCYnAIBQskdDA2MzcxNjQzMwJfMQQDYnB1CAULJHQwNjM3MTY0MzMCXzIDCQBmAgUCYnAJAGgCAGQJAGUCBQJicAUDYnB1CQACAQIqbm90IGVub3VnaCBhZGRyZXNzIGhlYWx0aCBhZnRlciBtb3ZlOiA8IDElBAskdDA2NTMxNjU5NwkBBmFzSW50MgEJAPwHBAUFbWFpbjECCGhlYWx0aE9mCQDMCAIFA2FjYwUDbmlsBQNuaWwEBmJwX2FjYwgFCyR0MDY1MzE2NTk3Al8xBAdicHVfYWNjCAULJHQwNjUzMTY1OTcCXzIDCQBmAgUGYnBfYWNjCQBoAgBkCQBlAgUGYnBfYWNjBQdicHVfYWNjCQACAQImbm90IGVub3VnaCBhY2MgaGVhbHRoIGFmdGVyIG1vdmU6IDwgMSUJAMwIAgkBCGNoYW5nZUJ5AgkArAICCQCsAgIFB2FkZHJlc3MCCl9taWdyYXRlZF8JARFAZXh0ck5hdGl2ZSgxMDUzKQIFC3VzZHRSZXNlcnZlAgdhc3NldElkBQJtdAkAzAgCCQEIY2hhbmdlQnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX21pZ3JhdGVkXwkBEUBleHRyTmF0aXZlKDEwNTMpAgULdXNkY1Jlc2VydmUCB2Fzc2V0SWQFAm1jBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVd2l0aGRyYXdWZXN0ZWRBbGxVU0ROAgV3aGFsZQdyZWd1bGFyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQHcmVnUGFydAMFB3JlZ3VsYXIJAQVhc0ludAEJAPwHBAUOdXNkblZlc3RpbmdBbGwCE3dpdGhkcmF3VmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAAAAwkAAAIFB3JlZ1BhcnQFB3JlZ1BhcnQECXdoYWxlUGFydAMFBXdoYWxlCQEFYXNJbnQBCQD8BwQFC3VzZG5WZXN0aW5nAhN3aXRoZHJhd1Zlc3RlZEZvclRvCQDMCAIFB2FkZHJlc3MJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwAAAMJAAACBQl3aGFsZVBhcnQFCXdoYWxlUGFydAkAlAoCBQNuaWwJAGQCBQl3aGFsZVBhcnQFB3JlZ1BhcnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVd2l0aGRyYXdWZXN0ZWRBbGxTVVJGAgV3aGFsZQdyZWd1bGFyBAZjaGVja3MJAQlvcEFsbG93ZWQCAiFsaXF1aWRhb19hbGxfd2l0aGRyYXdWZXN0ZWRBc1N1cmYJANgEAQULc3VyZkFzc2V0SWQDCQAAAgUGY2hlY2tzBQZjaGVja3MEC3N1cmZCYWxhbmNlCQEHYnV5U3VyZgMIBQFpBmNhbGxlcgUFd2hhbGUFB3JlZ3VsYXIDCQAAAgULc3VyZkJhbGFuY2UFC3N1cmZCYWxhbmNlCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtzdXJmQmFsYW5jZQULc3VyZkFzc2V0SWQFA25pbAULc3VyZkJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETd2l0aGRyYXdWZXN0ZWRTVVJGMgMFd2hhbGUHcmVndWxhcgVzdGFrZQQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBmNoZWNrcwkBCW9wQWxsb3dlZAICIWxpcXVpZGFvX2FsbF93aXRoZHJhd1Zlc3RlZEFzU3VyZgkA2AQBBQtzdXJmQXNzZXRJZAMJAAACBQZjaGVja3MFBmNoZWNrcwQHcmVnUGFydAMJAGYCBQdyZWd1bGFyAAAJAQVhc0ludAEJAPwHBAUOdXNkblZlc3RpbmdBbGwCGnBhcnRpYWxXaXRoZHJhd1Zlc3RlZEZvclRvCQDMCAIFB2FkZHJlc3MJAMwIAgkApQgBBQR0aGlzCQDMCAIFB3JlZ3VsYXIFA25pbAUDbmlsAAADCQAAAgUHcmVnUGFydAUHcmVnUGFydAQJd2hhbGVQYXJ0AwkAZgIFBXdoYWxlAAAJAQVhc0ludAEJAPwHBAULdXNkblZlc3RpbmcCGnBhcnRpYWxXaXRoZHJhd1Zlc3RlZEZvclRvCQDMCAIFB2FkZHJlc3MJAMwIAgkApQgBBQR0aGlzCQDMCAIFBXdoYWxlBQNuaWwFA25pbAAAAwkAAAIFCXdoYWxlUGFydAUJd2hhbGVQYXJ0BAV0b3RhbAkAZAIFCXdoYWxlUGFydAUHcmVnUGFydAQDYnV5CQD8BwQFC3N1cmZBZGRyZXNzAgdidXlTdXJmCQDMCAIAwIQ9CQDMCAIAwIQ9CQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQULdXNkbkFzc2V0SWQFBXRvdGFsBQNuaWwDCQAAAgUDYnV5BQNidXkEC3N1cmZCYWxhbmNlCQDwBwIFBHRoaXMFC3N1cmZBc3NldElkAwkAAAIFC3N1cmZCYWxhbmNlBQtzdXJmQmFsYW5jZQMFBXN0YWtlBAlzdGFrZVN1cmYJAPwHBAUQc3VyZlN0YWtlQWRkcmVzcwITc3Rha2VCeU9yaWdpbkNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtzdXJmQXNzZXRJZAULc3VyZkJhbGFuY2UFA25pbAMJAAACBQlzdGFrZVN1cmYFCXN0YWtlU3VyZgkAlAoCBQNuaWwFC3N1cmZCYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtzdXJmQmFsYW5jZQULc3VyZkFzc2V0SWQFA25pbAULc3VyZkJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdd2l0aGRyYXdWZXN0ZWRBbGxTVVJGQW5kU3Rha2UCBXdoYWxlB3JlZ3VsYXIEBmNoZWNrcwkBCW9wQWxsb3dlZAICIWxpcXVpZGFvX2FsbF93aXRoZHJhd1Zlc3RlZEFzU3VyZgkA2AQBBQtzdXJmQXNzZXRJZAMJAAACBQZjaGVja3MFBmNoZWNrcwQLc3VyZkJhbGFuY2UJAQdidXlTdXJmAwgFAWkGY2FsbGVyBQV3aGFsZQUHcmVndWxhcgMJAAACBQtzdXJmQmFsYW5jZQULc3VyZkJhbGFuY2UECXN0YWtlU3VyZgkA/AcEBRBzdXJmU3Rha2VBZGRyZXNzAhNzdGFrZUJ5T3JpZ2luQ2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3N1cmZBc3NldElkBQtzdXJmQmFsYW5jZQUDbmlsAwkAAAIFCXN0YWtlU3VyZgUJc3Rha2VTdXJmCQCUCgIFA25pbAULc3VyZkJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMd2l0aGRyYXdBc0xQAgV3aGFsZQdyZWd1bGFyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQHcmVnUGFydAMJAGYCBQdyZWd1bGFyAAAJAQVhc0ludAEJAPwHBAUOdXNkblZlc3RpbmdBbGwCGnBhcnRpYWxXaXRoZHJhd1Zlc3RlZEZvclRvCQDMCAIFB2FkZHJlc3MJAMwIAgkApQgBBQR0aGlzCQDMCAIFB3JlZ3VsYXIFA25pbAUDbmlsAAADCQAAAgUHcmVnUGFydAUHcmVnUGFydAQJd2hhbGVQYXJ0AwkAZgIFBXdoYWxlAAAJAQVhc0ludAEJAPwHBAULdXNkblZlc3RpbmcCGnBhcnRpYWxXaXRoZHJhd1Zlc3RlZEZvclRvCQDMCAIFB2FkZHJlc3MJAMwIAgkApQgBBQR0aGlzCQDMCAIFBXdoYWxlBQNuaWwFA25pbAAAAwkAAAIFCXdoYWxlUGFydAUJd2hhbGVQYXJ0BBV2aXJlc1Zlc3RlZFVzZG5McERhcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQSkZ1OE1tVmEyclNWR000OHdkTG00amhMem5FZ3U2WFNlBAV0b3RhbAkAZAIFCXdoYWxlUGFydAUHcmVnUGFydAQEdG9McAkA/AcEBRV2aXJlc1Zlc3RlZFVzZG5McERhcHACBm1pbnRUbwkAzAgCBQdhZGRyZXNzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQULdXNkbkFzc2V0SWQFBXRvdGFsBQNuaWwDCQAAAgUEdG9McAUEdG9McAkAlAoCBQNuaWwFBXRvdGFsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAXm5bc=", "chainId": 87, "height": 3418296, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ctNQmAtX49AkkmnjyqnCmvo3JiTNp8BYw8EdJb42Vmm Next: DnGNvc1gR22wjw4dBPNd6PrrBDBH6PkmSmZVyFPZhH4o Diff:
OldNewDifferences
275275
276276 @Callable(i)
277277 func withdrawVestedAllSURF (whale,regular) = {
278- let surfBalance = buySurf(i.caller, whale, regular)
279- if ((surfBalance == surfBalance))
280- then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
278+ let checks = opAllowed("liquidao_all_withdrawVestedAsSurf", toBase58String(surfAssetId))
279+ if ((checks == checks))
280+ then {
281+ let surfBalance = buySurf(i.caller, whale, regular)
282+ if ((surfBalance == surfBalance))
283+ then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
284+ else throw("Strict value is not equal to itself.")
285+ }
281286 else throw("Strict value is not equal to itself.")
282287 }
283288
286291 @Callable(i)
287292 func withdrawVestedSURF2 (whale,regular,stake) = {
288293 let address = toString(i.caller)
289- let regPart = if ((regular > 0))
290- then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
291- else 0
292- if ((regPart == regPart))
294+ let checks = opAllowed("liquidao_all_withdrawVestedAsSurf", toBase58String(surfAssetId))
295+ if ((checks == checks))
293296 then {
294- let whalePart = if ((whale > 0))
295- then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
297+ let regPart = if ((regular > 0))
298+ then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
296299 else 0
297- if ((whalePart == whalePart))
300+ if ((regPart == regPart))
298301 then {
299- let total = (whalePart + regPart)
300- let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
301- if ((buy == buy))
302+ let whalePart = if ((whale > 0))
303+ then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
304+ else 0
305+ if ((whalePart == whalePart))
302306 then {
303- let surfBalance = assetBalance(this, surfAssetId)
304- if ((surfBalance == surfBalance))
305- then if (stake)
306- then {
307- let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
308- if ((stakeSurf == stakeSurf))
309- then $Tuple2(nil, surfBalance)
310- else throw("Strict value is not equal to itself.")
311- }
312- else $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
307+ let total = (whalePart + regPart)
308+ let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
309+ if ((buy == buy))
310+ then {
311+ let surfBalance = assetBalance(this, surfAssetId)
312+ if ((surfBalance == surfBalance))
313+ then if (stake)
314+ then {
315+ let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
316+ if ((stakeSurf == stakeSurf))
317+ then $Tuple2(nil, surfBalance)
318+ else throw("Strict value is not equal to itself.")
319+ }
320+ else $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
321+ else throw("Strict value is not equal to itself.")
322+ }
313323 else throw("Strict value is not equal to itself.")
314324 }
315325 else throw("Strict value is not equal to itself.")
323333
324334 @Callable(i)
325335 func withdrawVestedAllSURFAndStake (whale,regular) = {
326- let surfBalance = buySurf(i.caller, whale, regular)
327- if ((surfBalance == surfBalance))
336+ let checks = opAllowed("liquidao_all_withdrawVestedAsSurf", toBase58String(surfAssetId))
337+ if ((checks == checks))
328338 then {
329- let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
330- if ((stakeSurf == stakeSurf))
331- then $Tuple2(nil, surfBalance)
339+ let surfBalance = buySurf(i.caller, whale, regular)
340+ if ((surfBalance == surfBalance))
341+ then {
342+ let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
343+ if ((stakeSurf == stakeSurf))
344+ then $Tuple2(nil, surfBalance)
345+ else throw("Strict value is not equal to itself.")
346+ }
332347 else throw("Strict value is not equal to itself.")
333348 }
334349 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let factorsBase = 1000
55
66 func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
77 then StringEntry(key, value)
88 else throw(("already initialized: " + key))
99
1010
1111 func writeConstInt (key,value) = if (!(isDefined(getInteger(this, key))))
1212 then IntegerEntry(key, value)
1313 else throw(("already initialized: " + key))
1414
1515
1616 func writeInt (key,value) = if ((0 > value))
1717 then throw(((("writing negative value " + toString(value)) + " for key ") + key))
1818 else IntegerEntry(key, value)
1919
2020
2121 func asString (value) = match value {
2222 case s: String =>
2323 s
2424 case _ =>
2525 throw("wrong type, expected: String")
2626 }
2727
2828
2929 func asInt (value) = match value {
3030 case int: Int =>
3131 int
3232 case _ =>
3333 throw("sm:1")
3434 }
3535
3636
3737 func asInt2 (value) = match value {
3838 case x: (Int, Int) =>
3939 x
4040 case t =>
4141 throw("wrong type, expected: Int2")
4242 }
4343
4444
4545 func asUserBalanceData (value) = match value {
4646 case x: (Int, Int, Int, Int, Int, Boolean) =>
4747 x
4848 case t =>
4949 throw("3")
5050 }
5151
5252
5353 func userBalance (rsr,user) = asUserBalanceData(invoke(rsr, "userBalance", [user], nil))
5454
5555
5656 func throwIf (condition,error) = if (condition)
5757 then throw(error)
5858 else true
5959
6060
6161 func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
6262
6363
6464 let configStore = "config"
6565
6666 let configAddress = addressFromStringValue(getStringValue(this, configStore))
6767
6868 let maybeOracleAddress = match getString(configAddress, "oracle_address") {
6969 case s: String =>
7070 addressFromString(s)
7171 case _ =>
7272 unit
7373 }
7474
7575 let HEIGHT = height
7676
7777 let vd = addressFromStringValue(valueOrErrorMessage(getString(configAddress, "vires_distributor"), "bad vires distributor"))
7878
7979 let protectedReserve = addressFromStringValue(getStringValue(configAddress, "protected_reserve"))
8080
8181 let main1 = addressFromStringValue(getStringValue(this, "main1"))
8282
8383 let usdtReserve = addressFromStringValue(getStringValue(this, "usdtReserve"))
8484
8585 let usdcReserve = addressFromStringValue(getStringValue(this, "usdcReserve"))
8686
8787 let acc = getStringValue(this, "acc")
8888
8989 let usdnVestingAll = addressFromStringValue(getStringValue(this, "usdnVestingAll"))
9090
9191 let usdnVesting = addressFromStringValue(getStringValue(this, "usdnVesting"))
9292
9393 let usdnAssetId = getStringValue(this, "usdnAssetId")
9494
9595 let usdnBonus = getIntegerValue(this, "bonus")
9696
9797 func moveStream (rsr,action,from,string,amt) = invoke(vd, "move", [rsr, action, from, string, amt], nil)
9898
9999
100100 func opAllowed (op,assetIdStr) = match invoke(configAddress, "opAllowed", [assetIdStr, op], nil) {
101101 case b: Boolean =>
102102 if (b)
103103 then true
104104 else throw("not allowed")
105105 case _ =>
106106 throw("opAllowed: unexpected result type")
107107 }
108108
109109
110110 func adviseUser (acc) = {
111111 let dataWhale = asString(invoke(usdnVesting, "adviseU", [acc], nil))
112112 if ((dataWhale == dataWhale))
113113 then {
114114 let dataAll = asString(invoke(usdnVestingAll, "adviseU", [acc], nil))
115115 if ((dataAll == dataAll))
116116 then ((dataWhale + " | ") + dataAll)
117117 else throw("Strict value is not equal to itself.")
118118 }
119119 else throw("Strict value is not equal to itself.")
120120 }
121121
122122
123123 let surfAddress = addressFromStringValue("3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP")
124124
125125 let surfStakeAddress = addressFromStringValue("3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C")
126126
127127 let surfAssetId = fromBase58String("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
128128
129129 func buySurf (caller,whale,regular) = {
130130 let address = toString(caller)
131131 let regPart = if (regular)
132132 then asInt(invoke(usdnVestingAll, "withdrawAllVestedForTo", [address, toString(this)], nil))
133133 else 0
134134 if ((regPart == regPart))
135135 then {
136136 let whalePart = if (whale)
137137 then throw("not implemented")
138138 else 0
139139 if ((whalePart == whalePart))
140140 then {
141141 let total = (whalePart + regPart)
142142 let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
143143 if ((buy == buy))
144144 then assetBalance(this, surfAssetId)
145145 else throw("Strict value is not equal to itself.")
146146 }
147147 else throw("Strict value is not equal to itself.")
148148 }
149149 else throw("Strict value is not equal to itself.")
150150 }
151151
152152
153153 @Callable(i)
154154 func init (conf,t,c,vestnAll,account,main,usdnAsset,bonus,vestn) = if ((i.caller != this))
155155 then throw("only self can init")
156156 else [writeConstString(configStore, conf), writeConstString("usdtReserve", t), writeConstString("usdcReserve", c), writeConstString("usdnVestingAll", vestnAll), writeConstString("usdnVesting", vestn), writeConstString("acc", account), writeConstString("main1", main), writeConstString("usdnAssetId", usdnAsset), IntegerEntry("bonus", bonus)]
157157
158158
159159
160160 @Callable(i)
161161 func convertToUSDN () = {
162162 let address = toString(i.caller)
163163 func moveRsr (rsr) = {
164164 let reserve = addressFromStringValue(rsr)
165165 let assetId = getStringValue(reserve, "assetId")
166166 let checks = opAllowed("openCollateral", assetId)
167167 if ((checks == checks))
168168 then if (if ((rsr != toString(usdtReserve)))
169169 then (rsr != toString(usdcReserve))
170170 else false)
171171 then throw("invalid reserve")
172172 else {
173173 let shC = invoke(vd, "syncHeight", [rsr], nil)
174174 if ((shC == shC))
175175 then {
176176 let $t051335217 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
177177 let totalDeposit = $t051335217._1
178178 let totalDebt = $t051335217._2
179179 let util = if ((totalDeposit > 0))
180180 then min([factorsBase, fraction(totalDebt, factorsBase, totalDeposit)])
181181 else 0
182182 let utilThreshold = valueOrElse(getInteger(configAddress, (assetId + "_open_collateral_thresold")), 1000)
183183 if ((utilThreshold > util))
184184 then throw("not allowed: util < threshold")
185185 else {
186186 let dep = asInt(invoke(reserve, "userDepositUSD", [address], nil))
187187 if ((dep == dep))
188188 then {
189189 let s3 = asInt(invoke(reserve, "transferATokensFor", [address, acc, dep], nil))
190190 if ((s3 == s3))
191191 then {
192192 let pRw3 = moveStream(rsr, "deposit", address, acc, s3)
193193 if ((pRw3 == pRw3))
194194 then s3
195195 else throw("Strict value is not equal to itself.")
196196 }
197197 else throw("Strict value is not equal to itself.")
198198 }
199199 else throw("Strict value is not equal to itself.")
200200 }
201201 }
202202 else throw("Strict value is not equal to itself.")
203203 }
204204 else throw("Strict value is not equal to itself.")
205205 }
206206
207207 let mw = invoke(usdnVesting, "startVestingAllFor", [toString(i.caller)], nil)
208208 if ((mw == mw))
209209 then {
210210 let mt = asInt(moveRsr(toString(usdtReserve)))
211211 if ((mt == mt))
212212 then {
213213 let mc = asInt(moveRsr(toString(usdcReserve)))
214214 if ((mc == mc))
215215 then {
216216 let depTotal = (mt + mc)
217217 let rehab = {
218218 let usdnAmt = fraction(depTotal, (factorsBase + usdnBonus), factorsBase)
219219 let wd = invoke(protectedReserve, "withdrawToMain2", [acc, usdnAssetId, usdnAmt], nil)
220220 if ((wd == wd))
221221 then {
222222 let rehab = invoke(usdnVestingAll, "accountFor", [address], [AttachedPayment(fromBase58String(usdnAssetId), usdnAmt)])
223223 if ((rehab == rehab))
224224 then unit
225225 else throw("Strict value is not equal to itself.")
226226 }
227227 else throw("Strict value is not equal to itself.")
228228 }
229229 if ((rehab == rehab))
230230 then {
231231 let $t063716433 = asInt2(invoke(main1, "healthOf", [address], nil))
232232 let bp = $t063716433._1
233233 let bpu = $t063716433._2
234234 if ((bp > (100 * (bp - bpu))))
235235 then throw("not enough address health after move: < 1%")
236236 else {
237237 let $t065316597 = asInt2(invoke(main1, "healthOf", [acc], nil))
238238 let bp_acc = $t065316597._1
239239 let bpu_acc = $t065316597._2
240240 if ((bp_acc > (100 * (bp_acc - bpu_acc))))
241241 then throw("not enough acc health after move: < 1%")
242242 else [changeBy(((address + "_migrated_") + getStringValue(usdtReserve, "assetId")), mt), changeBy(((address + "_migrated_") + getStringValue(usdcReserve, "assetId")), mc)]
243243 }
244244 }
245245 else throw("Strict value is not equal to itself.")
246246 }
247247 else throw("Strict value is not equal to itself.")
248248 }
249249 else throw("Strict value is not equal to itself.")
250250 }
251251 else throw("Strict value is not equal to itself.")
252252 }
253253
254254
255255
256256 @Callable(i)
257257 func withdrawVestedAllUSDN (whale,regular) = {
258258 let address = toString(i.caller)
259259 let regPart = if (regular)
260260 then asInt(invoke(usdnVestingAll, "withdrawVestedForTo", [address, address], nil))
261261 else 0
262262 if ((regPart == regPart))
263263 then {
264264 let whalePart = if (whale)
265265 then asInt(invoke(usdnVesting, "withdrawVestedForTo", [address, address], nil))
266266 else 0
267267 if ((whalePart == whalePart))
268268 then $Tuple2(nil, (whalePart + regPart))
269269 else throw("Strict value is not equal to itself.")
270270 }
271271 else throw("Strict value is not equal to itself.")
272272 }
273273
274274
275275
276276 @Callable(i)
277277 func withdrawVestedAllSURF (whale,regular) = {
278- let surfBalance = buySurf(i.caller, whale, regular)
279- if ((surfBalance == surfBalance))
280- then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
278+ let checks = opAllowed("liquidao_all_withdrawVestedAsSurf", toBase58String(surfAssetId))
279+ if ((checks == checks))
280+ then {
281+ let surfBalance = buySurf(i.caller, whale, regular)
282+ if ((surfBalance == surfBalance))
283+ then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
284+ else throw("Strict value is not equal to itself.")
285+ }
281286 else throw("Strict value is not equal to itself.")
282287 }
283288
284289
285290
286291 @Callable(i)
287292 func withdrawVestedSURF2 (whale,regular,stake) = {
288293 let address = toString(i.caller)
289- let regPart = if ((regular > 0))
290- then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
291- else 0
292- if ((regPart == regPart))
294+ let checks = opAllowed("liquidao_all_withdrawVestedAsSurf", toBase58String(surfAssetId))
295+ if ((checks == checks))
293296 then {
294- let whalePart = if ((whale > 0))
295- then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
297+ let regPart = if ((regular > 0))
298+ then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
296299 else 0
297- if ((whalePart == whalePart))
300+ if ((regPart == regPart))
298301 then {
299- let total = (whalePart + regPart)
300- let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
301- if ((buy == buy))
302+ let whalePart = if ((whale > 0))
303+ then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
304+ else 0
305+ if ((whalePart == whalePart))
302306 then {
303- let surfBalance = assetBalance(this, surfAssetId)
304- if ((surfBalance == surfBalance))
305- then if (stake)
306- then {
307- let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
308- if ((stakeSurf == stakeSurf))
309- then $Tuple2(nil, surfBalance)
310- else throw("Strict value is not equal to itself.")
311- }
312- else $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
307+ let total = (whalePart + regPart)
308+ let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
309+ if ((buy == buy))
310+ then {
311+ let surfBalance = assetBalance(this, surfAssetId)
312+ if ((surfBalance == surfBalance))
313+ then if (stake)
314+ then {
315+ let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
316+ if ((stakeSurf == stakeSurf))
317+ then $Tuple2(nil, surfBalance)
318+ else throw("Strict value is not equal to itself.")
319+ }
320+ else $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
321+ else throw("Strict value is not equal to itself.")
322+ }
313323 else throw("Strict value is not equal to itself.")
314324 }
315325 else throw("Strict value is not equal to itself.")
316326 }
317327 else throw("Strict value is not equal to itself.")
318328 }
319329 else throw("Strict value is not equal to itself.")
320330 }
321331
322332
323333
324334 @Callable(i)
325335 func withdrawVestedAllSURFAndStake (whale,regular) = {
326- let surfBalance = buySurf(i.caller, whale, regular)
327- if ((surfBalance == surfBalance))
336+ let checks = opAllowed("liquidao_all_withdrawVestedAsSurf", toBase58String(surfAssetId))
337+ if ((checks == checks))
328338 then {
329- let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
330- if ((stakeSurf == stakeSurf))
331- then $Tuple2(nil, surfBalance)
339+ let surfBalance = buySurf(i.caller, whale, regular)
340+ if ((surfBalance == surfBalance))
341+ then {
342+ let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
343+ if ((stakeSurf == stakeSurf))
344+ then $Tuple2(nil, surfBalance)
345+ else throw("Strict value is not equal to itself.")
346+ }
332347 else throw("Strict value is not equal to itself.")
333348 }
334349 else throw("Strict value is not equal to itself.")
335350 }
336351
337352
338353
339354 @Callable(i)
340355 func withdrawAsLP (whale,regular) = {
341356 let address = toString(i.caller)
342357 let regPart = if ((regular > 0))
343358 then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
344359 else 0
345360 if ((regPart == regPart))
346361 then {
347362 let whalePart = if ((whale > 0))
348363 then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
349364 else 0
350365 if ((whalePart == whalePart))
351366 then {
352367 let viresVestedUsdnLpDapp = addressFromStringValue("3PJFu8MmVa2rSVGM48wdLm4jhLznEgu6XSe")
353368 let total = (whalePart + regPart)
354369 let toLp = invoke(viresVestedUsdnLpDapp, "mintTo", [address], [AttachedPayment(fromBase58String(usdnAssetId), total)])
355370 if ((toLp == toLp))
356371 then $Tuple2(nil, total)
357372 else throw("Strict value is not equal to itself.")
358373 }
359374 else throw("Strict value is not equal to itself.")
360375 }
361376 else throw("Strict value is not equal to itself.")
362377 }
363378
364379

github/deemru/w8io/6500d08 
44.32 ms