tx · AKsdyb1W1g26ZJd5hbHd8SK5CkUdFjoTZrPmPypGqTcR

3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk:  -0.00800000 Waves

2022.11.25 15:52 [3398096] smart account 3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk > SELF 0.00000000 Waves

{ "type": 13, "id": "AKsdyb1W1g26ZJd5hbHd8SK5CkUdFjoTZrPmPypGqTcR", "fee": 800000, "feeAssetId": null, "timestamp": 1669380730139, "version": 1, "sender": "3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk", "senderPublicKey": "FwXAX9xcWiwbCejtdF8q1Nz8NpJqaVxXKnKK6JoR24pZ", "proofs": [ "2nzkZXpnGNz9mQ7eXnJ2UmKm9z7k3n5vXRNne6FQBqJNE8HSA7XvBUbA3TyvU3poEsgbVAocMa56HyThNVNifpL6" ], "script": "base64:BgIjCAISCwoJCAgICAgICAEIEgASBAoCBAQSBAoCBAQSBAoCAQEcAAtmYWN0b3JzQmFzZQDoBwEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQ13cml0ZUNvbnN0SW50AgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMFA2tleQkBDEludGVnZXJFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhhc1N0cmluZwEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAkAAgECBHNtOjEBBmFzSW50MgEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACCihJbnQsIEludCkEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAhp3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50MgERYXNVc2VyQmFsYW5jZURhdGEBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAiIoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEJvb2xlYW4pBAF4BQckbWF0Y2gwBQF4BAF0BQckbWF0Y2gwCQACAQIBMwELdXNlckJhbGFuY2UCA3JzcgR1c2VyCQERYXNVc2VyQmFsYW5jZURhdGEBCQD8BwQFA3JzcgILdXNlckJhbGFuY2UJAMwIAgUEdXNlcgUDbmlsBQNuaWwBB3Rocm93SWYCCWNvbmRpdGlvbgVlcnJvcgMFCWNvbmRpdGlvbgkAAgEFBWVycm9yBgEIY2hhbmdlQnkCA2tleQV2YWx1ZQkBCHdyaXRlSW50AgUDa2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAUFdmFsdWUAC2NvbmZpZ1N0b3JlAgZjb25maWcADWNvbmZpZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFC2NvbmZpZ1N0b3JlABJtYXliZU9yYWNsZUFkZHJlc3MEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIOb3JhY2xlX2FkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMFBHVuaXQABkhFSUdIVAUGaGVpZ2h0AAJ2ZAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEXZpcmVzX2Rpc3RyaWJ1dG9yAhViYWQgdmlyZXMgZGlzdHJpYnV0b3IAEHByb3RlY3RlZFJlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MCEXByb3RlY3RlZF9yZXNlcnZlAAVtYWluMQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwIFbWFpbjEAC3VzZHRSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2R0UmVzZXJ2ZQALdXNkY1Jlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCC3VzZGNSZXNlcnZlAANhY2MJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCA2FjYwAOdXNkblZlc3RpbmdBbGwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCDnVzZG5WZXN0aW5nQWxsAAt1c2RuVmVzdGluZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwILdXNkblZlc3RpbmcAC3VzZG5Bc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2RuQXNzZXRJZAAJdXNkbkJvbnVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAgVib251cwEKbW92ZVN0cmVhbQUDcnNyBmFjdGlvbgRmcm9tBnN0cmluZwNhbXQJAPwHBAUCdmQCBG1vdmUJAMwIAgUDcnNyCQDMCAIFBmFjdGlvbgkAzAgCBQRmcm9tCQDMCAIFBnN0cmluZwkAzAgCBQNhbXQFA25pbAUDbmlsAQlvcEFsbG93ZWQCAm9wCmFzc2V0SWRTdHIEByRtYXRjaDAJAPwHBAUNY29uZmlnQWRkcmVzcwIJb3BBbGxvd2VkCQDMCAIFCmFzc2V0SWRTdHIJAMwIAgUCb3AFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDADBQFiBgkAAgECC25vdCBhbGxvd2VkCQACAQIhb3BBbGxvd2VkOiB1bmV4cGVjdGVkIHJlc3VsdCB0eXBlAQphZHZpc2VVc2VyAQNhY2MECWRhdGFXaGFsZQkBCGFzU3RyaW5nAQkA/AcEBQt1c2RuVmVzdGluZwIHYWR2aXNlVQkAzAgCBQNhY2MFA25pbAUDbmlsAwkAAAIFCWRhdGFXaGFsZQUJZGF0YVdoYWxlBAdkYXRhQWxsCQEIYXNTdHJpbmcBCQD8BwQFDnVzZG5WZXN0aW5nQWxsAgdhZHZpc2VVCQDMCAIFA2FjYwUDbmlsBQNuaWwDCQAAAgUHZGF0YUFsbAUHZGF0YUFsbAkArAICCQCsAgIFCWRhdGFXaGFsZQIDIHwgBQdkYXRhQWxsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQFpAQRpbml0CQRjb25mAXQBYwh2ZXN0bkFsbAdhY2NvdW50BG1haW4JdXNkbkFzc2V0BWJvbnVzBXZlc3RuAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQISb25seSBzZWxmIGNhbiBpbml0CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgULY29uZmlnU3RvcmUFBGNvbmYJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2R0UmVzZXJ2ZQUBdAkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwICC3VzZGNSZXNlcnZlBQFjCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIOdXNkblZlc3RpbmdBbGwFCHZlc3RuQWxsCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgILdXNkblZlc3RpbmcFBXZlc3RuCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIDYWNjBQdhY2NvdW50CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIFbWFpbjEFBG1haW4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2RuQXNzZXRJZAUJdXNkbkFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVib251cwUFYm9udXMFA25pbAFpAQ1jb252ZXJ0VG9VU0ROAAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIKAQdtb3ZlUnNyAQNyc3IEB3Jlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEFA3JzcgQHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUHcmVzZXJ2ZQIHYXNzZXRJZAQGY2hlY2tzCQEJb3BBbGxvd2VkAgIOb3BlbkNvbGxhdGVyYWwFB2Fzc2V0SWQDCQAAAgUGY2hlY2tzBQZjaGVja3MDAwkBAiE9AgUDcnNyCQClCAEFC3VzZHRSZXNlcnZlCQECIT0CBQNyc3IJAKUIAQULdXNkY1Jlc2VydmUHCQACAQIPaW52YWxpZCByZXNlcnZlBANzaEMJAPwHBAUCdmQCCnN5bmNIZWlnaHQJAMwIAgUDcnNyBQNuaWwFA25pbAMJAAACBQNzaEMFA3NoQwQLJHQwNDIzMDQzMTQJAQZhc0ludDIBCQD8BwQFB3Jlc2VydmUCE3N0b3JlZERlcG9zaXRCb3Jyb3cFA25pbAUDbmlsBAx0b3RhbERlcG9zaXQIBQskdDA0MjMwNDMxNAJfMQQJdG90YWxEZWJ0CAULJHQwNDIzMDQzMTQCXzIEBHV0aWwDCQBmAgUMdG90YWxEZXBvc2l0AAAJAJcDAQkAzAgCBQtmYWN0b3JzQmFzZQkAzAgCCQBrAwUJdG90YWxEZWJ0BQtmYWN0b3JzQmFzZQUMdG90YWxEZXBvc2l0BQNuaWwAAAQNdXRpbFRocmVzaG9sZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1jb25maWdBZGRyZXNzCQCsAgIFB2Fzc2V0SWQCGV9vcGVuX2NvbGxhdGVyYWxfdGhyZXNvbGQA6AcDCQBmAgUNdXRpbFRocmVzaG9sZAUEdXRpbAkAAgECHW5vdCBhbGxvd2VkOiB1dGlsIDwgdGhyZXNob2xkBANkZXAJAQVhc0ludAEJAPwHBAUHcmVzZXJ2ZQIOdXNlckRlcG9zaXRVU0QJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUDZGVwBQNkZXAEAnMzCQEFYXNJbnQBCQD8BwQFB3Jlc2VydmUCEnRyYW5zZmVyQVRva2Vuc0ZvcgkAzAgCBQdhZGRyZXNzCQDMCAIFA2FjYwkAzAgCBQNkZXAFA25pbAUDbmlsAwkAAAIFAnMzBQJzMwQEcFJ3MwkBCm1vdmVTdHJlYW0FBQNyc3ICB2RlcG9zaXQFB2FkZHJlc3MFA2FjYwUCczMDCQAAAgUEcFJ3MwUEcFJ3MwUCczMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAm13CQD8BwQFC3VzZG5WZXN0aW5nAhJzdGFydFZlc3RpbmdBbGxGb3IJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAUDbmlsAwkAAAIFAm13BQJtdwQCbXQJAQVhc0ludAEJAQdtb3ZlUnNyAQkApQgBBQt1c2R0UmVzZXJ2ZQMJAAACBQJtdAUCbXQEAm1jCQEFYXNJbnQBCQEHbW92ZVJzcgEJAKUIAQULdXNkY1Jlc2VydmUDCQAAAgUCbWMFAm1jBAhkZXBUb3RhbAkAZAIFAm10BQJtYwQFcmVoYWIEB3VzZG5BbXQJAGsDBQhkZXBUb3RhbAkAZAIFC2ZhY3RvcnNCYXNlBQl1c2RuQm9udXMFC2ZhY3RvcnNCYXNlBAJ3ZAkA/AcEBRBwcm90ZWN0ZWRSZXNlcnZlAg93aXRoZHJhd1RvTWFpbjIJAMwIAgUDYWNjCQDMCAIFC3VzZG5Bc3NldElkCQDMCAIFB3VzZG5BbXQFA25pbAUDbmlsAwkAAAIFAndkBQJ3ZAQFcmVoYWIJAPwHBAUOdXNkblZlc3RpbmdBbGwCCmFjY291bnRGb3IJAMwIAgUHYWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFC3VzZG5Bc3NldElkBQd1c2RuQW10BQNuaWwDCQAAAgUFcmVoYWIFBXJlaGFiBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXJlaGFiBQVyZWhhYgQLJHQwNTQ2ODU1MzAJAQZhc0ludDIBCQD8BwQFBW1haW4xAghoZWFsdGhPZgkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQCYnAIBQskdDA1NDY4NTUzMAJfMQQDYnB1CAULJHQwNTQ2ODU1MzACXzIDCQBmAgUCYnAJAGgCAGQJAGUCBQJicAUDYnB1CQACAQIqbm90IGVub3VnaCBhZGRyZXNzIGhlYWx0aCBhZnRlciBtb3ZlOiA8IDElBAskdDA1NjI4NTY5NAkBBmFzSW50MgEJAPwHBAUFbWFpbjECCGhlYWx0aE9mCQDMCAIFA2FjYwUDbmlsBQNuaWwEBmJwX2FjYwgFCyR0MDU2Mjg1Njk0Al8xBAdicHVfYWNjCAULJHQwNTYyODU2OTQCXzIDCQBmAgUGYnBfYWNjCQBoAgBkCQBlAgUGYnBfYWNjBQdicHVfYWNjCQACAQImbm90IGVub3VnaCBhY2MgaGVhbHRoIGFmdGVyIG1vdmU6IDwgMSUJAMwIAgkBCGNoYW5nZUJ5AgkArAICCQCsAgIFB2FkZHJlc3MCCl9taWdyYXRlZF8JARFAZXh0ck5hdGl2ZSgxMDUzKQIFC3VzZHRSZXNlcnZlAgdhc3NldElkBQJtdAkAzAgCCQEIY2hhbmdlQnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX21pZ3JhdGVkXwkBEUBleHRyTmF0aXZlKDEwNTMpAgULdXNkY1Jlc2VydmUCB2Fzc2V0SWQFAm1jBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVd2l0aGRyYXdWZXN0ZWRBbGxVU0ROAgV3aGFsZQdyZWd1bGFyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQHcmVnUGFydAMFB3JlZ3VsYXIJAQVhc0ludAEJAPwHBAUOdXNkblZlc3RpbmdBbGwCE3dpdGhkcmF3VmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAAAAwkAAAIFB3JlZ1BhcnQFB3JlZ1BhcnQECXdoYWxlUGFydAMFBXdoYWxlCQEFYXNJbnQBCQD8BwQFC3VzZG5WZXN0aW5nAhN3aXRoZHJhd1Zlc3RlZEZvclRvCQDMCAIFB2FkZHJlc3MJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwAAAMJAAACBQl3aGFsZVBhcnQFCXdoYWxlUGFydAkAlAoCBQNuaWwJAGQCBQl3aGFsZVBhcnQFB3JlZ1BhcnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVd2l0aGRyYXdWZXN0ZWRBbGxTVVJGAgV3aGFsZQdyZWd1bGFyBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQHcmVnUGFydAMFB3JlZ3VsYXIJAQVhc0ludAEJAPwHBAUOdXNkblZlc3RpbmdBbGwCFndpdGhkcmF3QWxsVmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAAADCQAAAgUHcmVnUGFydAUHcmVnUGFydAQJd2hhbGVQYXJ0AwUFd2hhbGUJAAIBAg9ub3QgaW1wbGVtZW50ZWQAAAMJAAACBQl3aGFsZVBhcnQFCXdoYWxlUGFydAQFdG90YWwJAGQCBQl3aGFsZVBhcnQFB3JlZ1BhcnQEC3N1cmZBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEcydk1oSzVDUHFzQ0RvZHZMR3pRODRRa29IWENKM29OUAQLc3VyZkFzc2V0SWQJANkEAQIsQXQ4RDZORkZwaGVDYnZLVm5qVm9lTEw4NEVvOE5abjZvdk1hbnhmTGFGV0wEBHN1cmYJAPwHBAULc3VyZkFkZHJlc3MCB2J1eVN1cmYJAMwIAgDAhD0JAMwIAgDAhD0JAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQt1c2RuQXNzZXRJZAUFdG90YWwFA25pbAMJAAACBQRzdXJmBQRzdXJmBAtzdXJmQmFsYW5jZQkA8AcCBQR0aGlzBQtzdXJmQXNzZXRJZAMJAAACBQtzdXJmQmFsYW5jZQULc3VyZkJhbGFuY2UJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC3N1cmZCYWxhbmNlBQtzdXJmQXNzZXRJZAUDbmlsBQtzdXJmQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx3aXRoZHJhd0FzTFACBXdoYWxlB3JlZ3VsYXIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAdyZWdQYXJ0AwkAZgIFB3JlZ3VsYXIAAAkBBWFzSW50AQkA/AcEBQ51c2RuVmVzdGluZ0FsbAIacGFydGlhbFdpdGhkcmF3VmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCCQClCAEFBHRoaXMJAMwIAgUHcmVndWxhcgUDbmlsBQNuaWwAAAMJAAACBQdyZWdQYXJ0BQdyZWdQYXJ0BAl3aGFsZVBhcnQDCQBmAgUFd2hhbGUAAAkBBWFzSW50AQkA/AcEBQt1c2RuVmVzdGluZwIacGFydGlhbFdpdGhkcmF3VmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCCQClCAEFBHRoaXMJAMwIAgUFd2hhbGUFA25pbAUDbmlsAAADCQAAAgUJd2hhbGVQYXJ0BQl3aGFsZVBhcnQEFXZpcmVzVmVzdGVkVXNkbkxwRGFwcAkAAgECEWRhcHAgYWRkcmVzcyBoZXJlBAV0b3RhbAkAZAIFCXdoYWxlUGFydAUHcmVnUGFydAQEdG9McAkA/AcEBRV2aXJlc1Zlc3RlZFVzZG5McERhcHACBm1pbnRUbwkAzAgCBQdhZGRyZXNzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQULdXNkbkFzc2V0SWQFBXRvdGFsBQNuaWwDCQAAAgUEdG9McAUEdG9McAkAlAoCBQNuaWwFBXRvdGFsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAJk0VjU=", "chainId": 87, "height": 3398096, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7GMnpHbgwoVF3A3w9c8qx6MhoCLvVw1jBgGHmai1RC2T Next: DvaiQKfSkR7ds3NxZPfNjNGwrwvbaKtVC3YKG9uyr6Gp Diff:
OldNewDifferences
275275 }
276276
277277
278+
279+@Callable(i)
280+func withdrawAsLP (whale,regular) = {
281+ let address = toString(i.caller)
282+ let regPart = if ((regular > 0))
283+ then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
284+ else 0
285+ if ((regPart == regPart))
286+ then {
287+ let whalePart = if ((whale > 0))
288+ then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
289+ else 0
290+ if ((whalePart == whalePart))
291+ then {
292+ let viresVestedUsdnLpDapp = throw("dapp address here")
293+ let total = (whalePart + regPart)
294+ let toLp = invoke(viresVestedUsdnLpDapp, "mintTo", [address], [AttachedPayment(fromBase58String(usdnAssetId), total)])
295+ if ((toLp == toLp))
296+ then $Tuple2(nil, total)
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else throw("Strict value is not equal to itself.")
300+ }
301+ else throw("Strict value is not equal to itself.")
302+ }
303+
304+
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 @Callable(i)
124124 func init (conf,t,c,vestnAll,account,main,usdnAsset,bonus,vestn) = if ((i.caller != this))
125125 then throw("only self can init")
126126 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)]
127127
128128
129129
130130 @Callable(i)
131131 func convertToUSDN () = {
132132 let address = toString(i.caller)
133133 func moveRsr (rsr) = {
134134 let reserve = addressFromStringValue(rsr)
135135 let assetId = getStringValue(reserve, "assetId")
136136 let checks = opAllowed("openCollateral", assetId)
137137 if ((checks == checks))
138138 then if (if ((rsr != toString(usdtReserve)))
139139 then (rsr != toString(usdcReserve))
140140 else false)
141141 then throw("invalid reserve")
142142 else {
143143 let shC = invoke(vd, "syncHeight", [rsr], nil)
144144 if ((shC == shC))
145145 then {
146146 let $t042304314 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
147147 let totalDeposit = $t042304314._1
148148 let totalDebt = $t042304314._2
149149 let util = if ((totalDeposit > 0))
150150 then min([factorsBase, fraction(totalDebt, factorsBase, totalDeposit)])
151151 else 0
152152 let utilThreshold = valueOrElse(getInteger(configAddress, (assetId + "_open_collateral_thresold")), 1000)
153153 if ((utilThreshold > util))
154154 then throw("not allowed: util < threshold")
155155 else {
156156 let dep = asInt(invoke(reserve, "userDepositUSD", [address], nil))
157157 if ((dep == dep))
158158 then {
159159 let s3 = asInt(invoke(reserve, "transferATokensFor", [address, acc, dep], nil))
160160 if ((s3 == s3))
161161 then {
162162 let pRw3 = moveStream(rsr, "deposit", address, acc, s3)
163163 if ((pRw3 == pRw3))
164164 then s3
165165 else throw("Strict value is not equal to itself.")
166166 }
167167 else throw("Strict value is not equal to itself.")
168168 }
169169 else throw("Strict value is not equal to itself.")
170170 }
171171 }
172172 else throw("Strict value is not equal to itself.")
173173 }
174174 else throw("Strict value is not equal to itself.")
175175 }
176176
177177 let mw = invoke(usdnVesting, "startVestingAllFor", [toString(i.caller)], nil)
178178 if ((mw == mw))
179179 then {
180180 let mt = asInt(moveRsr(toString(usdtReserve)))
181181 if ((mt == mt))
182182 then {
183183 let mc = asInt(moveRsr(toString(usdcReserve)))
184184 if ((mc == mc))
185185 then {
186186 let depTotal = (mt + mc)
187187 let rehab = {
188188 let usdnAmt = fraction(depTotal, (factorsBase + usdnBonus), factorsBase)
189189 let wd = invoke(protectedReserve, "withdrawToMain2", [acc, usdnAssetId, usdnAmt], nil)
190190 if ((wd == wd))
191191 then {
192192 let rehab = invoke(usdnVestingAll, "accountFor", [address], [AttachedPayment(fromBase58String(usdnAssetId), usdnAmt)])
193193 if ((rehab == rehab))
194194 then unit
195195 else throw("Strict value is not equal to itself.")
196196 }
197197 else throw("Strict value is not equal to itself.")
198198 }
199199 if ((rehab == rehab))
200200 then {
201201 let $t054685530 = asInt2(invoke(main1, "healthOf", [address], nil))
202202 let bp = $t054685530._1
203203 let bpu = $t054685530._2
204204 if ((bp > (100 * (bp - bpu))))
205205 then throw("not enough address health after move: < 1%")
206206 else {
207207 let $t056285694 = asInt2(invoke(main1, "healthOf", [acc], nil))
208208 let bp_acc = $t056285694._1
209209 let bpu_acc = $t056285694._2
210210 if ((bp_acc > (100 * (bp_acc - bpu_acc))))
211211 then throw("not enough acc health after move: < 1%")
212212 else [changeBy(((address + "_migrated_") + getStringValue(usdtReserve, "assetId")), mt), changeBy(((address + "_migrated_") + getStringValue(usdcReserve, "assetId")), mc)]
213213 }
214214 }
215215 else throw("Strict value is not equal to itself.")
216216 }
217217 else throw("Strict value is not equal to itself.")
218218 }
219219 else throw("Strict value is not equal to itself.")
220220 }
221221 else throw("Strict value is not equal to itself.")
222222 }
223223
224224
225225
226226 @Callable(i)
227227 func withdrawVestedAllUSDN (whale,regular) = {
228228 let address = toString(i.caller)
229229 let regPart = if (regular)
230230 then asInt(invoke(usdnVestingAll, "withdrawVestedForTo", [address, address], nil))
231231 else 0
232232 if ((regPart == regPart))
233233 then {
234234 let whalePart = if (whale)
235235 then asInt(invoke(usdnVesting, "withdrawVestedForTo", [address, address], nil))
236236 else 0
237237 if ((whalePart == whalePart))
238238 then $Tuple2(nil, (whalePart + regPart))
239239 else throw("Strict value is not equal to itself.")
240240 }
241241 else throw("Strict value is not equal to itself.")
242242 }
243243
244244
245245
246246 @Callable(i)
247247 func withdrawVestedAllSURF (whale,regular) = {
248248 let address = toString(i.caller)
249249 let regPart = if (regular)
250250 then asInt(invoke(usdnVestingAll, "withdrawAllVestedForTo", [address, toString(this)], nil))
251251 else 0
252252 if ((regPart == regPart))
253253 then {
254254 let whalePart = if (whale)
255255 then throw("not implemented")
256256 else 0
257257 if ((whalePart == whalePart))
258258 then {
259259 let total = (whalePart + regPart)
260260 let surfAddress = addressFromStringValue("3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP")
261261 let surfAssetId = fromBase58String("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
262262 let surf = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
263263 if ((surf == surf))
264264 then {
265265 let surfBalance = assetBalance(this, surfAssetId)
266266 if ((surfBalance == surfBalance))
267267 then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
268268 else throw("Strict value is not equal to itself.")
269269 }
270270 else throw("Strict value is not equal to itself.")
271271 }
272272 else throw("Strict value is not equal to itself.")
273273 }
274274 else throw("Strict value is not equal to itself.")
275275 }
276276
277277
278+
279+@Callable(i)
280+func withdrawAsLP (whale,regular) = {
281+ let address = toString(i.caller)
282+ let regPart = if ((regular > 0))
283+ then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
284+ else 0
285+ if ((regPart == regPart))
286+ then {
287+ let whalePart = if ((whale > 0))
288+ then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
289+ else 0
290+ if ((whalePart == whalePart))
291+ then {
292+ let viresVestedUsdnLpDapp = throw("dapp address here")
293+ let total = (whalePart + regPart)
294+ let toLp = invoke(viresVestedUsdnLpDapp, "mintTo", [address], [AttachedPayment(fromBase58String(usdnAssetId), total)])
295+ if ((toLp == toLp))
296+ then $Tuple2(nil, total)
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ else throw("Strict value is not equal to itself.")
300+ }
301+ else throw("Strict value is not equal to itself.")
302+ }
303+
304+

github/deemru/w8io/6500d08 
46.23 ms