tx · AXi6SK4S2Zfp78rmxuKvCDjbYFr58sGQi1x9QWGMMBbo

3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk:  -0.00900000 Waves

2022.11.29 10:53 [3403609] smart account 3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk > SELF 0.00000000 Waves

{ "type": 13, "id": "AXi6SK4S2Zfp78rmxuKvCDjbYFr58sGQi1x9QWGMMBbo", "fee": 900000, "feeAssetId": null, "timestamp": 1669708429000, "version": 1, "sender": "3PCbvPVQfSvVu88ip8Fm5YjwJhjEYk1Txhk", "senderPublicKey": "FwXAX9xcWiwbCejtdF8q1Nz8NpJqaVxXKnKK6JoR24pZ", "proofs": [ "4WUmPbiiRtLzdaKnCVBaqM3ZV4fsMstN3Rb6vahJJLV7anJJF1STLFd2ZHcSpfZhFZrXK2weWz7zSnbEppX3sCjE" ], "script": "base64:BgIpCAISCwoJCAgICAgICAEIEgASBAoCBAQSBAoCBAQSBAoCBAQSBAoCAQEgAAtmYWN0b3JzQmFzZQDoBwEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQ13cml0ZUNvbnN0SW50AgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMFA2tleQkBDEludGVnZXJFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhhc1N0cmluZwEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBBWFzSW50AQV2YWx1ZQQHJG1hdGNoMAUFdmFsdWUDCQABAgUHJG1hdGNoMAIDSW50BANpbnQFByRtYXRjaDAFA2ludAkAAgECBHNtOjEBBmFzSW50MgEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACCihJbnQsIEludCkEAXgFByRtYXRjaDAFAXgEAXQFByRtYXRjaDAJAAIBAhp3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50MgERYXNVc2VyQmFsYW5jZURhdGEBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAiIoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEJvb2xlYW4pBAF4BQckbWF0Y2gwBQF4BAF0BQckbWF0Y2gwCQACAQIBMwELdXNlckJhbGFuY2UCA3JzcgR1c2VyCQERYXNVc2VyQmFsYW5jZURhdGEBCQD8BwQFA3JzcgILdXNlckJhbGFuY2UJAMwIAgUEdXNlcgUDbmlsBQNuaWwBB3Rocm93SWYCCWNvbmRpdGlvbgVlcnJvcgMFCWNvbmRpdGlvbgkAAgEFBWVycm9yBgEIY2hhbmdlQnkCA2tleQV2YWx1ZQkBCHdyaXRlSW50AgUDa2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAUFdmFsdWUAC2NvbmZpZ1N0b3JlAgZjb25maWcADWNvbmZpZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFC2NvbmZpZ1N0b3JlABJtYXliZU9yYWNsZUFkZHJlc3MEByRtYXRjaDAJAJ0IAgUNY29uZmlnQWRkcmVzcwIOb3JhY2xlX2FkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMFBHVuaXQABkhFSUdIVAUGaGVpZ2h0AAJ2ZAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCEXZpcmVzX2Rpc3RyaWJ1dG9yAhViYWQgdmlyZXMgZGlzdHJpYnV0b3IAEHByb3RlY3RlZFJlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MCEXByb3RlY3RlZF9yZXNlcnZlAAVtYWluMQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwIFbWFpbjEAC3VzZHRSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2R0UmVzZXJ2ZQALdXNkY1Jlc2VydmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCC3VzZGNSZXNlcnZlAANhY2MJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCA2FjYwAOdXNkblZlc3RpbmdBbGwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCDnVzZG5WZXN0aW5nQWxsAAt1c2RuVmVzdGluZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwILdXNkblZlc3RpbmcAC3VzZG5Bc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgt1c2RuQXNzZXRJZAAJdXNkbkJvbnVzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAgVib251cwEKbW92ZVN0cmVhbQUDcnNyBmFjdGlvbgRmcm9tBnN0cmluZwNhbXQJAPwHBAUCdmQCBG1vdmUJAMwIAgUDcnNyCQDMCAIFBmFjdGlvbgkAzAgCBQRmcm9tCQDMCAIFBnN0cmluZwkAzAgCBQNhbXQFA25pbAUDbmlsAQlvcEFsbG93ZWQCAm9wCmFzc2V0SWRTdHIEByRtYXRjaDAJAPwHBAUNY29uZmlnQWRkcmVzcwIJb3BBbGxvd2VkCQDMCAIFCmFzc2V0SWRTdHIJAMwIAgUCb3AFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDADBQFiBgkAAgECC25vdCBhbGxvd2VkCQACAQIhb3BBbGxvd2VkOiB1bmV4cGVjdGVkIHJlc3VsdCB0eXBlAQphZHZpc2VVc2VyAQNhY2MECWRhdGFXaGFsZQkBCGFzU3RyaW5nAQkA/AcEBQt1c2RuVmVzdGluZwIHYWR2aXNlVQkAzAgCBQNhY2MFA25pbAUDbmlsAwkAAAIFCWRhdGFXaGFsZQUJZGF0YVdoYWxlBAdkYXRhQWxsCQEIYXNTdHJpbmcBCQD8BwQFDnVzZG5WZXN0aW5nQWxsAgdhZHZpc2VVCQDMCAIFA2FjYwUDbmlsBQNuaWwDCQAAAgUHZGF0YUFsbAUHZGF0YUFsbAkArAICCQCsAgIFCWRhdGFXaGFsZQIDIHwgBQdkYXRhQWxsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAtzdXJmQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BHMnZNaEs1Q1Bxc0NEb2R2TEd6UTg0UWtvSFhDSjNvTlAAEHN1cmZTdGFrZUFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQQmlvdEZwcWpSTWtrZUZCY2NuUU5VWFVvcHk3S0ZlejVDAAtzdXJmQXNzZXRJZAkA2QQBAixBdDhENk5GRnBoZUNidktWbmpWb2VMTDg0RW84TlpuNm92TWFueGZMYUZXTAEHYnV5U3VyZgMGY2FsbGVyBXdoYWxlB3JlZ3VsYXIEB2FkZHJlc3MJAKUIAQUGY2FsbGVyBAdyZWdQYXJ0AwUHcmVndWxhcgkBBWFzSW50AQkA/AcEBQ51c2RuVmVzdGluZ0FsbAIWd2l0aGRyYXdBbGxWZXN0ZWRGb3JUbwkAzAgCBQdhZGRyZXNzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwAAAMJAAACBQdyZWdQYXJ0BQdyZWdQYXJ0BAl3aGFsZVBhcnQDBQV3aGFsZQkAAgECD25vdCBpbXBsZW1lbnRlZAAAAwkAAAIFCXdoYWxlUGFydAUJd2hhbGVQYXJ0BAV0b3RhbAkAZAIFCXdoYWxlUGFydAUHcmVnUGFydAQDYnV5CQD8BwQFC3N1cmZBZGRyZXNzAgdidXlTdXJmCQDMCAIAwIQ9CQDMCAIAwIQ9CQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQULdXNkbkFzc2V0SWQFBXRvdGFsBQNuaWwDCQAAAgUDYnV5BQNidXkJAPAHAgUEdGhpcwULc3VyZkFzc2V0SWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4GAWkBBGluaXQJBGNvbmYBdAFjCHZlc3RuQWxsB2FjY291bnQEbWFpbgl1c2RuQXNzZXQFYm9udXMFdmVzdG4DCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJvbmx5IHNlbGYgY2FuIGluaXQJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCBQtjb25maWdTdG9yZQUEY29uZgkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwICC3VzZHRSZXNlcnZlBQF0CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgILdXNkY1Jlc2VydmUFAWMJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAg51c2RuVmVzdGluZ0FsbAUIdmVzdG5BbGwJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgt1c2RuVmVzdGluZwUFdmVzdG4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgNhY2MFB2FjY291bnQJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgVtYWluMQUEbWFpbgkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwICC3VzZG5Bc3NldElkBQl1c2RuQXNzZXQJAMwIAgkBDEludGVnZXJFbnRyeQICBWJvbnVzBQVib251cwUDbmlsAWkBDWNvbnZlcnRUb1VTRE4ABAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgoBB21vdmVSc3IBA3JzcgQHcmVzZXJ2ZQkBEUBleHRyTmF0aXZlKDEwNjIpAQUDcnNyBAdhc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQdyZXNlcnZlAgdhc3NldElkBAZjaGVja3MJAQlvcEFsbG93ZWQCAg5vcGVuQ29sbGF0ZXJhbAUHYXNzZXRJZAMJAAACBQZjaGVja3MFBmNoZWNrcwMDCQECIT0CBQNyc3IJAKUIAQULdXNkdFJlc2VydmUJAQIhPQIFA3JzcgkApQgBBQt1c2RjUmVzZXJ2ZQcJAAIBAg9pbnZhbGlkIHJlc2VydmUEA3NoQwkA/AcEBQJ2ZAIKc3luY0hlaWdodAkAzAgCBQNyc3IFA25pbAUDbmlsAwkAAAIFA3NoQwUDc2hDBAskdDA1MTMxNTIxNQkBBmFzSW50MgEJAPwHBAUHcmVzZXJ2ZQITc3RvcmVkRGVwb3NpdEJvcnJvdwUDbmlsBQNuaWwEDHRvdGFsRGVwb3NpdAgFCyR0MDUxMzE1MjE1Al8xBAl0b3RhbERlYnQIBQskdDA1MTMxNTIxNQJfMgQEdXRpbAMJAGYCBQx0b3RhbERlcG9zaXQAAAkAlwMBCQDMCAIFC2ZhY3RvcnNCYXNlCQDMCAIJAGsDBQl0b3RhbERlYnQFC2ZhY3RvcnNCYXNlBQx0b3RhbERlcG9zaXQFA25pbAAABA11dGlsVGhyZXNob2xkCQELdmFsdWVPckVsc2UCCQCaCAIFDWNvbmZpZ0FkZHJlc3MJAKwCAgUHYXNzZXRJZAIZX29wZW5fY29sbGF0ZXJhbF90aHJlc29sZADoBwMJAGYCBQ11dGlsVGhyZXNob2xkBQR1dGlsCQACAQIdbm90IGFsbG93ZWQ6IHV0aWwgPCB0aHJlc2hvbGQEA2RlcAkBBWFzSW50AQkA/AcEBQdyZXNlcnZlAg51c2VyRGVwb3NpdFVTRAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAMJAAACBQNkZXAFA2RlcAQCczMJAQVhc0ludAEJAPwHBAUHcmVzZXJ2ZQISdHJhbnNmZXJBVG9rZW5zRm9yCQDMCAIFB2FkZHJlc3MJAMwIAgUDYWNjCQDMCAIFA2RlcAUDbmlsBQNuaWwDCQAAAgUCczMFAnMzBARwUnczCQEKbW92ZVN0cmVhbQUFA3JzcgIHZGVwb3NpdAUHYWRkcmVzcwUDYWNjBQJzMwMJAAACBQRwUnczBQRwUnczBQJzMwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCbXcJAPwHBAULdXNkblZlc3RpbmcCEnN0YXJ0VmVzdGluZ0FsbEZvcgkAzAgCCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwDCQAAAgUCbXcFAm13BAJtdAkBBWFzSW50AQkBB21vdmVSc3IBCQClCAEFC3VzZHRSZXNlcnZlAwkAAAIFAm10BQJtdAQCbWMJAQVhc0ludAEJAQdtb3ZlUnNyAQkApQgBBQt1c2RjUmVzZXJ2ZQMJAAACBQJtYwUCbWMECGRlcFRvdGFsCQBkAgUCbXQFAm1jBAVyZWhhYgQHdXNkbkFtdAkAawMFCGRlcFRvdGFsCQBkAgULZmFjdG9yc0Jhc2UFCXVzZG5Cb251cwULZmFjdG9yc0Jhc2UEAndkCQD8BwQFEHByb3RlY3RlZFJlc2VydmUCD3dpdGhkcmF3VG9NYWluMgkAzAgCBQNhY2MJAMwIAgULdXNkbkFzc2V0SWQJAMwIAgUHdXNkbkFtdAUDbmlsBQNuaWwDCQAAAgUCd2QFAndkBAVyZWhhYgkA/AcEBQ51c2RuVmVzdGluZ0FsbAIKYWNjb3VudEZvcgkAzAgCBQdhZGRyZXNzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQULdXNkbkFzc2V0SWQFB3VzZG5BbXQFA25pbAMJAAACBQVyZWhhYgUFcmVoYWIFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcmVoYWIFBXJlaGFiBAskdDA2MzY5NjQzMQkBBmFzSW50MgEJAPwHBAUFbWFpbjECCGhlYWx0aE9mCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAJicAgFCyR0MDYzNjk2NDMxAl8xBANicHUIBQskdDA2MzY5NjQzMQJfMgMJAGYCBQJicAkAaAIAZAkAZQIFAmJwBQNicHUJAAIBAipub3QgZW5vdWdoIGFkZHJlc3MgaGVhbHRoIGFmdGVyIG1vdmU6IDwgMSUECyR0MDY1Mjk2NTk1CQEGYXNJbnQyAQkA/AcEBQVtYWluMQIIaGVhbHRoT2YJAMwIAgUDYWNjBQNuaWwFA25pbAQGYnBfYWNjCAULJHQwNjUyOTY1OTUCXzEEB2JwdV9hY2MIBQskdDA2NTI5NjU5NQJfMgMJAGYCBQZicF9hY2MJAGgCAGQJAGUCBQZicF9hY2MFB2JwdV9hY2MJAAIBAiZub3QgZW5vdWdoIGFjYyBoZWFsdGggYWZ0ZXIgbW92ZTogPCAxJQkAzAgCCQEIY2hhbmdlQnkCCQCsAgIJAKwCAgUHYWRkcmVzcwIKX21pZ3JhdGVkXwkBEUBleHRyTmF0aXZlKDEwNTMpAgULdXNkdFJlc2VydmUCB2Fzc2V0SWQFAm10CQDMCAIJAQhjaGFuZ2VCeQIJAKwCAgkArAICBQdhZGRyZXNzAgpfbWlncmF0ZWRfCQERQGV4dHJOYXRpdmUoMTA1MykCBQt1c2RjUmVzZXJ2ZQIHYXNzZXRJZAUCbWMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARV3aXRoZHJhd1Zlc3RlZEFsbFVTRE4CBXdoYWxlB3JlZ3VsYXIEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAdyZWdQYXJ0AwUHcmVndWxhcgkBBWFzSW50AQkA/AcEBQ51c2RuVmVzdGluZ0FsbAITd2l0aGRyYXdWZXN0ZWRGb3JUbwkAzAgCBQdhZGRyZXNzCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAAADCQAAAgUHcmVnUGFydAUHcmVnUGFydAQJd2hhbGVQYXJ0AwUFd2hhbGUJAQVhc0ludAEJAPwHBAULdXNkblZlc3RpbmcCE3dpdGhkcmF3VmVzdGVkRm9yVG8JAMwIAgUHYWRkcmVzcwkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAAAAwkAAAIFCXdoYWxlUGFydAUJd2hhbGVQYXJ0CQCUCgIFA25pbAkAZAIFCXdoYWxlUGFydAUHcmVnUGFydAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARV3aXRoZHJhd1Zlc3RlZEFsbFNVUkYCBXdoYWxlB3JlZ3VsYXIEC3N1cmZCYWxhbmNlCQEHYnV5U3VyZgMIBQFpBmNhbGxlcgUFd2hhbGUFB3JlZ3VsYXIDCQAAAgULc3VyZkJhbGFuY2UFC3N1cmZCYWxhbmNlCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtzdXJmQmFsYW5jZQULc3VyZkFzc2V0SWQFA25pbAULc3VyZkJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdd2l0aGRyYXdWZXN0ZWRBbGxTVVJGQW5kU3Rha2UCBXdoYWxlB3JlZ3VsYXIEC3N1cmZCYWxhbmNlCQEHYnV5U3VyZgMIBQFpBmNhbGxlcgUFd2hhbGUFB3JlZ3VsYXIDCQAAAgULc3VyZkJhbGFuY2UFC3N1cmZCYWxhbmNlBAlzdGFrZVN1cmYJAPwHBAUQc3VyZlN0YWtlQWRkcmVzcwITc3Rha2VCeU9yaWdpbkNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtzdXJmQXNzZXRJZAULc3VyZkJhbGFuY2UFA25pbAMJAAACBQlzdGFrZVN1cmYFCXN0YWtlU3VyZgkAlAoCBQNuaWwFC3N1cmZCYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHdpdGhkcmF3QXNMUAIFd2hhbGUHcmVndWxhcgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEB3JlZ1BhcnQDCQBmAgUHcmVndWxhcgAACQEFYXNJbnQBCQD8BwQFDnVzZG5WZXN0aW5nQWxsAhpwYXJ0aWFsV2l0aGRyYXdWZXN0ZWRGb3JUbwkAzAgCBQdhZGRyZXNzCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQdyZWd1bGFyBQNuaWwFA25pbAAAAwkAAAIFB3JlZ1BhcnQFB3JlZ1BhcnQECXdoYWxlUGFydAMJAGYCBQV3aGFsZQAACQEFYXNJbnQBCQD8BwQFC3VzZG5WZXN0aW5nAhpwYXJ0aWFsV2l0aGRyYXdWZXN0ZWRGb3JUbwkAzAgCBQdhZGRyZXNzCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQV3aGFsZQUDbmlsBQNuaWwAAAMJAAACBQl3aGFsZVBhcnQFCXdoYWxlUGFydAQVdmlyZXNWZXN0ZWRVc2RuTHBEYXBwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEpGdThNbVZhMnJTVkdNNDh3ZExtNGpoTHpuRWd1NlhTZQQFdG90YWwJAGQCBQl3aGFsZVBhcnQFB3JlZ1BhcnQEBHRvTHAJAPwHBAUVdmlyZXNWZXN0ZWRVc2RuTHBEYXBwAgZtaW50VG8JAMwIAgUHYWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFC3VzZG5Bc3NldElkBQV0b3RhbAUDbmlsAwkAAAIFBHRvTHAFBHRvTHAJAJQKAgUDbmlsBQV0b3RhbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgB+NjvW", "chainId": 87, "height": 3403609, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DvaiQKfSkR7ds3NxZPfNjNGwrwvbaKtVC3YKG9uyr6Gp Next: 7ctNQmAtX49AkkmnjyqnCmvo3JiTNp8BYw8EdJb42Vmm Diff:
OldNewDifferences
120120 }
121121
122122
123+let surfAddress = addressFromStringValue("3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP")
124+
125+let surfStakeAddress = addressFromStringValue("3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C")
126+
127+let surfAssetId = fromBase58String("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
128+
129+func buySurf (caller,whale,regular) = {
130+ let address = toString(caller)
131+ let regPart = if (regular)
132+ then asInt(invoke(usdnVestingAll, "withdrawAllVestedForTo", [address, toString(this)], nil))
133+ else 0
134+ if ((regPart == regPart))
135+ then {
136+ let whalePart = if (whale)
137+ then throw("not implemented")
138+ else 0
139+ if ((whalePart == whalePart))
140+ then {
141+ let total = (whalePart + regPart)
142+ let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
143+ if ((buy == buy))
144+ then assetBalance(this, surfAssetId)
145+ else throw("Strict value is not equal to itself.")
146+ }
147+ else throw("Strict value is not equal to itself.")
148+ }
149+ else throw("Strict value is not equal to itself.")
150+ }
151+
152+
123153 @Callable(i)
124154 func init (conf,t,c,vestnAll,account,main,usdnAsset,bonus,vestn) = if ((i.caller != this))
125155 then throw("only self can init")
143173 let shC = invoke(vd, "syncHeight", [rsr], nil)
144174 if ((shC == shC))
145175 then {
146- let $t042304314 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
147- let totalDeposit = $t042304314._1
148- let totalDebt = $t042304314._2
176+ let $t051315215 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
177+ let totalDeposit = $t051315215._1
178+ let totalDebt = $t051315215._2
149179 let util = if ((totalDeposit > 0))
150180 then min([factorsBase, fraction(totalDebt, factorsBase, totalDeposit)])
151181 else 0
198228 }
199229 if ((rehab == rehab))
200230 then {
201- let $t054685530 = asInt2(invoke(main1, "healthOf", [address], nil))
202- let bp = $t054685530._1
203- let bpu = $t054685530._2
231+ let $t063696431 = asInt2(invoke(main1, "healthOf", [address], nil))
232+ let bp = $t063696431._1
233+ let bpu = $t063696431._2
204234 if ((bp > (100 * (bp - bpu))))
205235 then throw("not enough address health after move: < 1%")
206236 else {
207- let $t056285694 = asInt2(invoke(main1, "healthOf", [acc], nil))
208- let bp_acc = $t056285694._1
209- let bpu_acc = $t056285694._2
237+ let $t065296595 = asInt2(invoke(main1, "healthOf", [acc], nil))
238+ let bp_acc = $t065296595._1
239+ let bpu_acc = $t065296595._2
210240 if ((bp_acc > (100 * (bp_acc - bpu_acc))))
211241 then throw("not enough acc health after move: < 1%")
212242 else [changeBy(((address + "_migrated_") + getStringValue(usdtReserve, "assetId")), mt), changeBy(((address + "_migrated_") + getStringValue(usdcReserve, "assetId")), mc)]
245275
246276 @Callable(i)
247277 func withdrawVestedAllSURF (whale,regular) = {
248- let address = toString(i.caller)
249- let regPart = if (regular)
250- then asInt(invoke(usdnVestingAll, "withdrawAllVestedForTo", [address, toString(this)], nil))
251- else 0
252- if ((regPart == regPart))
278+ let surfBalance = buySurf(i.caller, whale, regular)
279+ if ((surfBalance == surfBalance))
280+ then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
281+ else throw("Strict value is not equal to itself.")
282+ }
283+
284+
285+
286+@Callable(i)
287+func withdrawVestedAllSURFAndStake (whale,regular) = {
288+ let surfBalance = buySurf(i.caller, whale, regular)
289+ if ((surfBalance == surfBalance))
253290 then {
254- let whalePart = if (whale)
255- then throw("not implemented")
256- else 0
257- if ((whalePart == whalePart))
258- then {
259- let total = (whalePart + regPart)
260- let surfAddress = addressFromStringValue("3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP")
261- let surfAssetId = fromBase58String("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
262- let surf = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
263- if ((surf == surf))
264- then {
265- let surfBalance = assetBalance(this, surfAssetId)
266- if ((surfBalance == surfBalance))
267- then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
268- else throw("Strict value is not equal to itself.")
269- }
270- else throw("Strict value is not equal to itself.")
271- }
291+ let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
292+ if ((stakeSurf == stakeSurf))
293+ then $Tuple2(nil, surfBalance)
272294 else throw("Strict value is not equal to itself.")
273295 }
274296 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
123+let surfAddress = addressFromStringValue("3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP")
124+
125+let surfStakeAddress = addressFromStringValue("3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C")
126+
127+let surfAssetId = fromBase58String("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
128+
129+func buySurf (caller,whale,regular) = {
130+ let address = toString(caller)
131+ let regPart = if (regular)
132+ then asInt(invoke(usdnVestingAll, "withdrawAllVestedForTo", [address, toString(this)], nil))
133+ else 0
134+ if ((regPart == regPart))
135+ then {
136+ let whalePart = if (whale)
137+ then throw("not implemented")
138+ else 0
139+ if ((whalePart == whalePart))
140+ then {
141+ let total = (whalePart + regPart)
142+ let buy = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
143+ if ((buy == buy))
144+ then assetBalance(this, surfAssetId)
145+ else throw("Strict value is not equal to itself.")
146+ }
147+ else throw("Strict value is not equal to itself.")
148+ }
149+ else throw("Strict value is not equal to itself.")
150+ }
151+
152+
123153 @Callable(i)
124154 func init (conf,t,c,vestnAll,account,main,usdnAsset,bonus,vestn) = if ((i.caller != this))
125155 then throw("only self can init")
126156 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)]
127157
128158
129159
130160 @Callable(i)
131161 func convertToUSDN () = {
132162 let address = toString(i.caller)
133163 func moveRsr (rsr) = {
134164 let reserve = addressFromStringValue(rsr)
135165 let assetId = getStringValue(reserve, "assetId")
136166 let checks = opAllowed("openCollateral", assetId)
137167 if ((checks == checks))
138168 then if (if ((rsr != toString(usdtReserve)))
139169 then (rsr != toString(usdcReserve))
140170 else false)
141171 then throw("invalid reserve")
142172 else {
143173 let shC = invoke(vd, "syncHeight", [rsr], nil)
144174 if ((shC == shC))
145175 then {
146- let $t042304314 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
147- let totalDeposit = $t042304314._1
148- let totalDebt = $t042304314._2
176+ let $t051315215 = asInt2(invoke(reserve, "storedDepositBorrow", nil, nil))
177+ let totalDeposit = $t051315215._1
178+ let totalDebt = $t051315215._2
149179 let util = if ((totalDeposit > 0))
150180 then min([factorsBase, fraction(totalDebt, factorsBase, totalDeposit)])
151181 else 0
152182 let utilThreshold = valueOrElse(getInteger(configAddress, (assetId + "_open_collateral_thresold")), 1000)
153183 if ((utilThreshold > util))
154184 then throw("not allowed: util < threshold")
155185 else {
156186 let dep = asInt(invoke(reserve, "userDepositUSD", [address], nil))
157187 if ((dep == dep))
158188 then {
159189 let s3 = asInt(invoke(reserve, "transferATokensFor", [address, acc, dep], nil))
160190 if ((s3 == s3))
161191 then {
162192 let pRw3 = moveStream(rsr, "deposit", address, acc, s3)
163193 if ((pRw3 == pRw3))
164194 then s3
165195 else throw("Strict value is not equal to itself.")
166196 }
167197 else throw("Strict value is not equal to itself.")
168198 }
169199 else throw("Strict value is not equal to itself.")
170200 }
171201 }
172202 else throw("Strict value is not equal to itself.")
173203 }
174204 else throw("Strict value is not equal to itself.")
175205 }
176206
177207 let mw = invoke(usdnVesting, "startVestingAllFor", [toString(i.caller)], nil)
178208 if ((mw == mw))
179209 then {
180210 let mt = asInt(moveRsr(toString(usdtReserve)))
181211 if ((mt == mt))
182212 then {
183213 let mc = asInt(moveRsr(toString(usdcReserve)))
184214 if ((mc == mc))
185215 then {
186216 let depTotal = (mt + mc)
187217 let rehab = {
188218 let usdnAmt = fraction(depTotal, (factorsBase + usdnBonus), factorsBase)
189219 let wd = invoke(protectedReserve, "withdrawToMain2", [acc, usdnAssetId, usdnAmt], nil)
190220 if ((wd == wd))
191221 then {
192222 let rehab = invoke(usdnVestingAll, "accountFor", [address], [AttachedPayment(fromBase58String(usdnAssetId), usdnAmt)])
193223 if ((rehab == rehab))
194224 then unit
195225 else throw("Strict value is not equal to itself.")
196226 }
197227 else throw("Strict value is not equal to itself.")
198228 }
199229 if ((rehab == rehab))
200230 then {
201- let $t054685530 = asInt2(invoke(main1, "healthOf", [address], nil))
202- let bp = $t054685530._1
203- let bpu = $t054685530._2
231+ let $t063696431 = asInt2(invoke(main1, "healthOf", [address], nil))
232+ let bp = $t063696431._1
233+ let bpu = $t063696431._2
204234 if ((bp > (100 * (bp - bpu))))
205235 then throw("not enough address health after move: < 1%")
206236 else {
207- let $t056285694 = asInt2(invoke(main1, "healthOf", [acc], nil))
208- let bp_acc = $t056285694._1
209- let bpu_acc = $t056285694._2
237+ let $t065296595 = asInt2(invoke(main1, "healthOf", [acc], nil))
238+ let bp_acc = $t065296595._1
239+ let bpu_acc = $t065296595._2
210240 if ((bp_acc > (100 * (bp_acc - bpu_acc))))
211241 then throw("not enough acc health after move: < 1%")
212242 else [changeBy(((address + "_migrated_") + getStringValue(usdtReserve, "assetId")), mt), changeBy(((address + "_migrated_") + getStringValue(usdcReserve, "assetId")), mc)]
213243 }
214244 }
215245 else throw("Strict value is not equal to itself.")
216246 }
217247 else throw("Strict value is not equal to itself.")
218248 }
219249 else throw("Strict value is not equal to itself.")
220250 }
221251 else throw("Strict value is not equal to itself.")
222252 }
223253
224254
225255
226256 @Callable(i)
227257 func withdrawVestedAllUSDN (whale,regular) = {
228258 let address = toString(i.caller)
229259 let regPart = if (regular)
230260 then asInt(invoke(usdnVestingAll, "withdrawVestedForTo", [address, address], nil))
231261 else 0
232262 if ((regPart == regPart))
233263 then {
234264 let whalePart = if (whale)
235265 then asInt(invoke(usdnVesting, "withdrawVestedForTo", [address, address], nil))
236266 else 0
237267 if ((whalePart == whalePart))
238268 then $Tuple2(nil, (whalePart + regPart))
239269 else throw("Strict value is not equal to itself.")
240270 }
241271 else throw("Strict value is not equal to itself.")
242272 }
243273
244274
245275
246276 @Callable(i)
247277 func withdrawVestedAllSURF (whale,regular) = {
248- let address = toString(i.caller)
249- let regPart = if (regular)
250- then asInt(invoke(usdnVestingAll, "withdrawAllVestedForTo", [address, toString(this)], nil))
251- else 0
252- if ((regPart == regPart))
278+ let surfBalance = buySurf(i.caller, whale, regular)
279+ if ((surfBalance == surfBalance))
280+ then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
281+ else throw("Strict value is not equal to itself.")
282+ }
283+
284+
285+
286+@Callable(i)
287+func withdrawVestedAllSURFAndStake (whale,regular) = {
288+ let surfBalance = buySurf(i.caller, whale, regular)
289+ if ((surfBalance == surfBalance))
253290 then {
254- let whalePart = if (whale)
255- then throw("not implemented")
256- else 0
257- if ((whalePart == whalePart))
258- then {
259- let total = (whalePart + regPart)
260- let surfAddress = addressFromStringValue("3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP")
261- let surfAssetId = fromBase58String("At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL")
262- let surf = invoke(surfAddress, "buySurf", [1000000, 1000000, false], [AttachedPayment(fromBase58String(usdnAssetId), total)])
263- if ((surf == surf))
264- then {
265- let surfBalance = assetBalance(this, surfAssetId)
266- if ((surfBalance == surfBalance))
267- then $Tuple2([ScriptTransfer(i.caller, surfBalance, surfAssetId)], surfBalance)
268- else throw("Strict value is not equal to itself.")
269- }
270- else throw("Strict value is not equal to itself.")
271- }
291+ let stakeSurf = invoke(surfStakeAddress, "stakeByOriginCaller", nil, [AttachedPayment(surfAssetId, surfBalance)])
292+ if ((stakeSurf == stakeSurf))
293+ then $Tuple2(nil, surfBalance)
272294 else throw("Strict value is not equal to itself.")
273295 }
274296 else throw("Strict value is not equal to itself.")
275297 }
276298
277299
278300
279301 @Callable(i)
280302 func withdrawAsLP (whale,regular) = {
281303 let address = toString(i.caller)
282304 let regPart = if ((regular > 0))
283305 then asInt(invoke(usdnVestingAll, "partialWithdrawVestedForTo", [address, toString(this), regular], nil))
284306 else 0
285307 if ((regPart == regPart))
286308 then {
287309 let whalePart = if ((whale > 0))
288310 then asInt(invoke(usdnVesting, "partialWithdrawVestedForTo", [address, toString(this), whale], nil))
289311 else 0
290312 if ((whalePart == whalePart))
291313 then {
292314 let viresVestedUsdnLpDapp = addressFromStringValue("3PJFu8MmVa2rSVGM48wdLm4jhLznEgu6XSe")
293315 let total = (whalePart + regPart)
294316 let toLp = invoke(viresVestedUsdnLpDapp, "mintTo", [address], [AttachedPayment(fromBase58String(usdnAssetId), total)])
295317 if ((toLp == toLp))
296318 then $Tuple2(nil, total)
297319 else throw("Strict value is not equal to itself.")
298320 }
299321 else throw("Strict value is not equal to itself.")
300322 }
301323 else throw("Strict value is not equal to itself.")
302324 }
303325
304326

github/deemru/w8io/6500d08 
47.50 ms