tx · c9okMe8f9WB98km9MkqULxiBt4M2WYrzNreEdzQSFY2 3P3VTtUiwJ91Ly7vwtRVKv5NkNNiPoWe7oP: -0.00700000 Waves 2022.09.01 16:56 [3275644] smart account 3P3VTtUiwJ91Ly7vwtRVKv5NkNNiPoWe7oP > SELF 0.00000000 Waves
{ "type": 13, "id": "c9okMe8f9WB98km9MkqULxiBt4M2WYrzNreEdzQSFY2", "fee": 700000, "feeAssetId": null, "timestamp": 1662040634923, "version": 1, "sender": "3P3VTtUiwJ91Ly7vwtRVKv5NkNNiPoWe7oP", "senderPublicKey": "5q25v77G7b2qAcdzH88H2Y7mxXnddbN9ZYKCn3Q8W6Pi", "proofs": [ "3Ggdu3h1bJ7Q1BDqhH7dFxNLEKpfsekqWhsGsSvBioZoCax4286YR9DmdR6wTJhLuGnygVM4vhXkY1bWNP1kodae" ], "script": "base64:BgIeCAISBgoECAgICBIAEgMKAQgSABIECgIICBIDCgEIIAEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQ13cml0ZUNvbnN0SW50AgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMFA2tleQkBDEludGVnZXJFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQALY29uZmlnU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwULY29uZmlnU3RvcmUAEm1heWJlT3JhY2xlQWRkcmVzcwQHJG1hdGNoMAkAnQgCBQ1jb25maWdBZGRyZXNzAg5vcmFjbGVfYWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwUEdW5pdAAGSEVJR0hUBQZoZWlnaHQBCW9wQWxsb3dlZAECb3AEByRtYXRjaDAJAPwHBAUNY29uZmlnQWRkcmVzcwIJb3BBbGxvd2VkCQDMCAICBHVzZG4JAMwIAgUCb3AFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDADBQFiBgkAAgECC25vdCBhbGxvd2VkCQACAQIhb3BBbGxvd2VkOiB1bmV4cGVjdGVkIHJlc3VsdCB0eXBlAQhtYWluT25seQEBaQMJAQhjb250YWlucwIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MCBG1haW4JAKUIAQgFAWkGY2FsbGVyBgkAAgECEG9ubHkgbWFpbiBjYW4gZG8BB3Rocm93SWYCCWNvbmRpdGlvbgVlcnJvcgMFCWNvbmRpdGlvbgkAAgEFBWVycm9yBgAJVElNRUZSQU1FAKALAAR1c2RjCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgR1c2RjAAR1c2R0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgR1c2R0AAR1c2RuCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgR1c2RuARFhZGRyZXNzQXNzZXRTdG9yZQIHYWRkcmVzcwdhc3NldElkCQCsAgIJAKwCAgUHYWRkcmVzcwIBXwUHYXNzZXRJZAEVYWRkcmVzc0Fzc2V0VVNETlN0b3JlAgdhZGRyZXNzB2Fzc2V0SWQJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAV8FB2Fzc2V0SWQCBV91c2RuARVhZGRyZXNzVG90YWxVU0ROU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIFX3VzZG4BD3RvdGFsQXNzZXRTdG9yZQEHYXNzZXRJZAkArAICAgZ0b3RhbF8FB2Fzc2V0SWQBEXZlc3RpbmdTdGFydFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCDl92ZXN0aW5nX3N0YXJ0ARN2ZXN0aW5nQ2xhaW1lZFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCCF9jbGFpbWVkARl3aXRoZHJhd25XaXRoaW5FcG9jaFN0b3JlAwplcG9jaFN0YXJ0B2FkZHJlc3MHYXNzZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAV8FB2Fzc2V0SWQCAV8JAKQDAQUKZXBvY2hTdGFydAIXX3dpdGhkcmF3bl93aXRoaW5fZXBvY2gAEWN1cnJlbnRFcG9jaFN0YXJ0CQBoAgkAaQIFBkhFSUdIVAUJVElNRUZSQU1FBQlUSU1FRlJBTUUAEG1pbmlNYXhDbGFpbVVzZG4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUNY29uZmlnQWRkcmVzcwISbWluaW1heFZlc3RpbmdVc2RuCQBoAgDoBwDAhD0ADnRvdGFsVVNETlN0b3JlAgp0b3RhbF91c2RuAA12ZXN0aW5nUGVyaW9kCQBoAgCgCwDtAgETd2l0aGRyYXduVG9kYXlTdG9yZQEHYWRkcmVzcwkBGXdpdGhkcmF3bldpdGhpbkVwb2NoU3RvcmUDBRFjdXJyZW50RXBvY2hTdGFydAUHYWRkcmVzcwUEdXNkbgEOd2l0aGRyYXduVG9kYXkBB2FkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE3dpdGhkcmF3blRvZGF5U3RvcmUBBQdhZGRyZXNzAAABEnVzZXJWZXN0aW5nQmFsYW5jZQEHYWRkcmVzcwQFY1VTRE4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWFkZHJlc3NBc3NldFVTRE5TdG9yZQIFB2FkZHJlc3MFBHVzZGMAAAQFdFVTRE4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWFkZHJlc3NBc3NldFVTRE5TdG9yZQIFB2FkZHJlc3MFBHVzZHQAAAQMdG90YWxWZXN0aW5nCQBkAgUFY1VTRE4FBXRVU0ROBA5hbHJlYWR5Q2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETdmVzdGluZ0NsYWltZWRTdG9yZQEFB2FkZHJlc3MAAAQMY2xhaW1lZFRvZGF5CQEOd2l0aGRyYXduVG9kYXkBBQdhZGRyZXNzBAckbWF0Y2gwCQCaCAIFBHRoaXMJARF2ZXN0aW5nU3RhcnRTdG9yZQEFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIDSW50BAx2ZXN0aW5nU3RhcnQFByRtYXRjaDAECGVsaWdpYmxlAwkAZgIFBkhFSUdIVAkAZAIFDHZlc3RpbmdTdGFydAUNdmVzdGluZ1BlcmlvZAUMdG90YWxWZXN0aW5nCQBrAwUMdG90YWxWZXN0aW5nCQBlAgUGSEVJR0hUBQx2ZXN0aW5nU3RhcnQFDXZlc3RpbmdQZXJpb2QEDmF2YWlsYWJsZVRvZGF5CQCXAwEJAMwIAgkAZQIFCGVsaWdpYmxlBQ5hbHJlYWR5Q2xhaW1lZAkAzAgCCQBlAgkAlgMBCQDMCAIFEG1pbmlNYXhDbGFpbVVzZG4JAMwIAgkAaQIFDHRvdGFsVmVzdGluZwDtAgUDbmlsBQxjbGFpbWVkVG9kYXkFA25pbAkAmQoHBQx0b3RhbFZlc3RpbmcFDmFscmVhZHlDbGFpbWVkBQhlbGlnaWJsZQUMdmVzdGluZ1N0YXJ0CQBkAgUMdmVzdGluZ1N0YXJ0BQ12ZXN0aW5nUGVyaW9kBQxjbGFpbWVkVG9kYXkFDmF2YWlsYWJsZVRvZGF5CQCZCgcFDHRvdGFsVmVzdGluZwAAAP///////////wEA////////////AQD///////////8BAP///////////wEA////////////AQEKYWR2aXNlVXNlcgEHYWRkcmVzcwQLJHQwMzYyOTM3NDUJARJ1c2VyVmVzdGluZ0JhbGFuY2UBBQdhZGRyZXNzBAx0b3RhbFZlc3RpbmcIBQskdDAzNjI5Mzc0NQJfMQQOYWxyZWFkeUNsYWltZWQIBQskdDAzNjI5Mzc0NQJfMgQIZWxpZ2libGUIBQskdDAzNjI5Mzc0NQJfMwQFc3RhcnQIBQskdDAzNjI5Mzc0NQJfNAQDZW5kCAULJHQwMzYyOTM3NDUCXzUEDGNsYWltZWRUb2RheQgFCyR0MDM2MjkzNzQ1Al82BA5hdmFpbGFibGVUb2RheQgFCyR0MDM2MjkzNzQ1Al83BAFjCQELdmFsdWVPckVsc2UCCQCfCAEJARFhZGRyZXNzQXNzZXRTdG9yZQIFB2FkZHJlc3MFBHVzZGMAAAQBdAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQR1c2R0AAAJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFkZHJlc3M6IAUHYWRkcmVzcwIQLCB0b3RhbFZlc3Rpbmc6IAkApAMBBQx0b3RhbFZlc3RpbmcCEiwgYWxyZWFkeUNsYWltZWQ6IAkApAMBBQ5hbHJlYWR5Q2xhaW1lZAIMLCBlbGlnaWJsZTogCQCkAwEFCGVsaWdpYmxlAg8sIHN0YXJ0SGVpZ2h0OiAJAKQDAQUFc3RhcnQCDSwgZW5kSGVpZ2h0OiAJAKQDAQUDZW5kAg0sIG5vd0hlaWdodDogCQCkAwEFBkhFSUdIVAIRLCB1c2RjX21pZ3JhdGVkOiAJAKQDAQUBYwIRLCB1c2R0X21pZ3JhdGVkOiAJAKQDAQUBdAIQLCB1c2RjX2Fzc2V0SWQ6IAUEdXNkYwIQLCB1c2R0X2Fzc2V0SWQ6IAUEdXNkdAIOLCBkYWlseUxpbWl0OiAJAKQDAQkAlgMBCQDMCAIJAGkCBQx0b3RhbFZlc3RpbmcA7QIJAMwIAgUQbWluaU1heENsYWltVXNkbgUDbmlsAhAsIGNsYWltZWRUb2RheTogCQCkAwEFDGNsYWltZWRUb2RheQISLCBhdmFpbGFibGVUb2RheTogCQCkAwEFDmF2YWlsYWJsZVRvZGF5ARZ3aXRoZHJhd1Zlc3RlZEludGVybmFsAgdhZGRyZXNzAnRvBAZjaGVja3MJAQlvcEFsbG93ZWQBAhdsaXF1aWRhb193aXRoZHJhd1Zlc3RlZAMJAAACBQZjaGVja3MFBmNoZWNrcwQLJHQwNDY4NzQ4MDMJARJ1c2VyVmVzdGluZ0JhbGFuY2UBBQdhZGRyZXNzBAx0b3RhbFZlc3RpbmcIBQskdDA0Njg3NDgwMwJfMQQOYWxyZWFkeUNsYWltZWQIBQskdDA0Njg3NDgwMwJfMgQIZWxpZ2libGUIBQskdDA0Njg3NDgwMwJfMwQFc3RhcnQIBQskdDA0Njg3NDgwMwJfNAQDZW5kCAULJHQwNDY4NzQ4MDMCXzUEDGNsYWltZWRUb2RheQgFCyR0MDQ2ODc0ODAzAl82BA5hdmFpbGFibGVUb2RheQgFCyR0MDQ2ODc0ODAzAl83AwkAZgIAAAUFc3RhcnQJAAIBAhJubyB2ZXN0aW5nIGVuYWJsZWQDCQBnAgAABQ5hdmFpbGFibGVUb2RheQkAAgECEW5vdGhpbmcgYXZhaWxhYmxlCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCdG8FDmF2YWlsYWJsZVRvZGF5CQDZBAEFBHVzZG4JAMwIAgkBDEludGVnZXJFbnRyeQIJARN2ZXN0aW5nQ2xhaW1lZFN0b3JlAQUHYWRkcmVzcwkAZAIFDmFscmVhZHlDbGFpbWVkBQ5hdmFpbGFibGVUb2RheQkAzAgCCQEIY2hhbmdlQnkCCQETd2l0aGRyYXduVG9kYXlTdG9yZQEFB2FkZHJlc3MFDmF2YWlsYWJsZVRvZGF5BQNuaWwFDmF2YWlsYWJsZVRvZGF5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJzdgEHYWRkcmVzcwQGY2hlY2tzCQEJb3BBbGxvd2VkAQIVbGlxdWlkYW9fc3RhcnRWZXN0aW5nAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAp1c2VyVFN0b3JlCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQR1c2R0BAp1c2VyQ1N0b3JlCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQR1c2RjBApjb252ZXJ0ZWRDCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCnVzZXJDU3RvcmUAAAQKY29udmVydGVkVAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQp1c2VyVFN0b3JlAAADCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQERdmVzdGluZ1N0YXJ0U3RvcmUBBQdhZGRyZXNzBQNuaWwEByRtYXRjaDAJAJoIAgUEdGhpcwkBFWFkZHJlc3NUb3RhbFVTRE5TdG9yZQEFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIDSW50BA5zdGFydGVkVmVzdGluZwUHJG1hdGNoMAkAzAgCCQEIY2hhbmdlQnkCAg1jb21taXR0ZWRVU0ROBQ5zdGFydGVkVmVzdGluZwkAzAgCCQENd3JpdGVDb25zdEludAIJARF2ZXN0aW5nU3RhcnRTdG9yZQEFB2FkZHJlc3MFBkhFSUdIVAkAzAgCCQEIY2hhbmdlQnkCCQEPdG90YWxBc3NldFN0b3JlAQUEdXNkYwkBAS0BBQpjb252ZXJ0ZWRDCQDMCAIJAQtEZWxldGVFbnRyeQEFCnVzZXJDU3RvcmUJAMwIAgkBCGNoYW5nZUJ5AgkBD3RvdGFsQXNzZXRTdG9yZQEFBHVzZHQJAQEtAQUKY29udmVydGVkVAkAzAgCCQELRGVsZXRlRW50cnkBBQp1c2VyVFN0b3JlBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgYBaQEEaW5pdAQEY29uZgN0SWQDY0lkA25JZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEm9ubHkgc2VsZiBjYW4gaW5pdAkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIFC2NvbmZpZ1N0b3JlBQRjb25mCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIEdXNkdAUDdElkCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIEdXNkYwUDY0lkCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgIEdXNkbgUDbklkBQNuaWwBaQEPc3RhcnRWZXN0aW5nQWxsAAkBAnN2AQkApQgBCAUBaQZjYWxsZXIBaQESc3RhcnRWZXN0aW5nQWxsRm9yAQdhZGRyZXNzBAdjaGVja3MwCQEIbWFpbk9ubHkBBQFpAwkAAAIFB2NoZWNrczAFB2NoZWNrczAJAQJzdgEFB2FkZHJlc3MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOd2l0aGRyYXdWZXN0ZWQABAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBFndpdGhkcmF3VmVzdGVkSW50ZXJuYWwCBQdhZGRyZXNzBQdhZGRyZXNzAWkBE3dpdGhkcmF3VmVzdGVkRm9yVG8CA2FjYwJ0bwQHY2hlY2tzMAkBCG1haW5Pbmx5AQUBaQMJAAACBQdjaGVja3MwBQdjaGVja3MwCQEWd2l0aGRyYXdWZXN0ZWRJbnRlcm5hbAIFA2FjYwUCdG8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHYWR2aXNlVQEDYWNjCQCUCgIFA25pbAkBCmFkdmlzZVVzZXIBBQNhY2MA5VLeZA==", "chainId": 87, "height": 3275644, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HWQ5bBtUFi2Bh4KswDryoi3JKQzz9Sjn15FwnWG2A4dX Next: ENhpdGXWkxmAFgW6MXcm48mYyc2aqYsYp8Sp4MWnQXdA Diff:
Old | New | Differences | |
---|---|---|---|
136 | 136 | } | |
137 | 137 | ||
138 | 138 | ||
139 | - | @Callable(q) | |
140 | - | func init (ad,ae,af,ag) = if ((q.caller != this)) | |
141 | - | then throw("only self can init") | |
142 | - | else [a(g, ad), a("usdt", ae), a("usdc", af), a("usdn", ag)] | |
139 | + | func ad (z,ae) = { | |
140 | + | let af = m("liquidao_withdrawVested") | |
141 | + | if ((af == af)) | |
142 | + | then { | |
143 | + | let ag = O(z) | |
144 | + | let R = ag._1 | |
145 | + | let S = ag._2 | |
146 | + | let V = ag._3 | |
147 | + | let Z = ag._4 | |
148 | + | let aa = ag._5 | |
149 | + | let T = ag._6 | |
150 | + | let W = ag._7 | |
151 | + | if ((0 > Z)) | |
152 | + | then throw("no vesting enabled") | |
153 | + | else if ((0 >= W)) | |
154 | + | then throw("nothing available") | |
155 | + | else $Tuple2([ScriptTransfer(addressFromStringValue(ae), W, fromBase58String(x)), IntegerEntry(F(z), (S + W)), f(M(z), W)], W) | |
156 | + | } | |
157 | + | else throw("Strict value is not equal to itself.") | |
158 | + | } | |
143 | 159 | ||
144 | 160 | ||
145 | - | ||
146 | - | @Callable(q) | |
147 | - | func startVestingAll () = { | |
148 | - | let z = toString(q.caller) | |
149 | - | let ah = m("liquidao_startVesting") | |
150 | - | if ((ah == ah)) | |
161 | + | func ah (z) = { | |
162 | + | let af = m("liquidao_startVesting") | |
163 | + | if ((af == af)) | |
151 | 164 | then { | |
152 | 165 | let ai = y(z, w) | |
153 | 166 | let aj = y(z, v) | |
154 | 167 | let ak = valueOrElse(getInteger(this, aj), 0) | |
155 | 168 | let al = valueOrElse(getInteger(this, ai), 0) | |
156 | - | let am = valueOrErrorMessage(getInteger(this, C(z)), "no accounted for user") | |
169 | + | if (isDefined(getInteger(this, E(z)))) | |
170 | + | then nil | |
171 | + | else { | |
172 | + | let j = getInteger(this, C(z)) | |
173 | + | if ($isInstanceOf(j, "Int")) | |
174 | + | then { | |
175 | + | let am = j | |
157 | 176 | [f("committedUSDN", am), d(E(z), l), f(D(v), -(ak)), DeleteEntry(aj), f(D(w), -(al)), DeleteEntry(ai)] | |
177 | + | } | |
178 | + | else nil | |
179 | + | } | |
158 | 180 | } | |
181 | + | else throw("Strict value is not equal to itself.") | |
182 | + | } | |
183 | + | ||
184 | + | ||
185 | + | @Callable(q) | |
186 | + | func init (an,ao,ap,aq) = if ((q.caller != this)) | |
187 | + | then throw("only self can init") | |
188 | + | else [a(g, an), a("usdt", ao), a("usdc", ap), a("usdn", aq)] | |
189 | + | ||
190 | + | ||
191 | + | ||
192 | + | @Callable(q) | |
193 | + | func startVestingAll () = ah(toString(q.caller)) | |
194 | + | ||
195 | + | ||
196 | + | ||
197 | + | @Callable(q) | |
198 | + | func startVestingAllFor (z) = { | |
199 | + | let ar = p(q) | |
200 | + | if ((ar == ar)) | |
201 | + | then ah(z) | |
159 | 202 | else throw("Strict value is not equal to itself.") | |
160 | 203 | } | |
161 | 204 | ||
163 | 206 | ||
164 | 207 | @Callable(q) | |
165 | 208 | func withdrawVested () = { | |
166 | - | let ah = m("liquidao_withdrawVested") | |
167 | - | if ((ah == ah)) | |
168 | - | then { | |
169 | - | let z = toString(q.caller) | |
170 | - | let an = O(z) | |
171 | - | let R = an._1 | |
172 | - | let S = an._2 | |
173 | - | let V = an._3 | |
174 | - | let Z = an._4 | |
175 | - | let aa = an._5 | |
176 | - | let T = an._6 | |
177 | - | let W = an._7 | |
178 | - | if ((0 > Z)) | |
179 | - | then throw("no vesting enabled") | |
180 | - | else if ((0 >= W)) | |
181 | - | then throw("nothing available") | |
182 | - | else $Tuple2([ScriptTransfer(q.caller, W, fromBase58String(x)), IntegerEntry(F(z), (S + W)), f(M(z), W)], W) | |
183 | - | } | |
209 | + | let z = toString(q.caller) | |
210 | + | ad(z, z) | |
211 | + | } | |
212 | + | ||
213 | + | ||
214 | + | ||
215 | + | @Callable(q) | |
216 | + | func withdrawVestedForTo (as,ae) = { | |
217 | + | let ar = p(q) | |
218 | + | if ((ar == ar)) | |
219 | + | then ad(as, ae) | |
184 | 220 | else throw("Strict value is not equal to itself.") | |
185 | 221 | } | |
186 | 222 | ||
187 | 223 | ||
188 | 224 | ||
189 | 225 | @Callable(q) | |
190 | - | func accountFor (z,A,ao) = { | |
191 | - | let ap = q.payments[0] | |
192 | - | let ah = if (if (if (if (p(q)) | |
193 | - | then m("liquidao_move") | |
194 | - | else false) | |
195 | - | then r((toBase58String(value(ap.assetId)) != x), "usdn must be attached") | |
196 | - | else false) | |
197 | - | then r((ao > ap.amount), "not enough supplied") | |
198 | - | else false) | |
199 | - | then r(if ((A != v)) | |
200 | - | then (A != w) | |
201 | - | else false, "only t or c") | |
202 | - | else false | |
203 | - | if ((ah == ah)) | |
204 | - | then [d(y(z, A), ao), f(B(z, A), ap.amount), f(C(z), ap.amount), f(D(A), ao), f(K, ap.amount)] | |
205 | - | else throw("Strict value is not equal to itself.") | |
206 | - | } | |
226 | + | func adviseU (as) = $Tuple2(nil, X(as)) | |
207 | 227 | ||
208 | 228 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b,c) = if (!(isDefined(getString(this, b)))) | |
5 | 5 | then StringEntry(b, c) | |
6 | 6 | else throw(("already initialized: " + b)) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func d (b,c) = if (!(isDefined(getInteger(this, b)))) | |
10 | 10 | then IntegerEntry(b, c) | |
11 | 11 | else throw(("already initialized: " + b)) | |
12 | 12 | ||
13 | 13 | ||
14 | 14 | func e (b,c) = if ((0 > c)) | |
15 | 15 | then throw(((("writing negative value " + toString(c)) + " for key ") + b)) | |
16 | 16 | else IntegerEntry(b, c) | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func f (b,c) = e(b, (valueOrElse(getInteger(this, b), 0) + c)) | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | let g = "config" | |
23 | 23 | ||
24 | 24 | let h = addressFromStringValue(getStringValue(this, g)) | |
25 | 25 | ||
26 | 26 | let i = { | |
27 | 27 | let j = getString(h, "oracle_address") | |
28 | 28 | if ($isInstanceOf(j, "String")) | |
29 | 29 | then { | |
30 | 30 | let k = j | |
31 | 31 | addressFromString(k) | |
32 | 32 | } | |
33 | 33 | else unit | |
34 | 34 | } | |
35 | 35 | ||
36 | 36 | let l = height | |
37 | 37 | ||
38 | 38 | func m (n) = { | |
39 | 39 | let j = invoke(h, "opAllowed", ["usdn", n], nil) | |
40 | 40 | if ($isInstanceOf(j, "Boolean")) | |
41 | 41 | then { | |
42 | 42 | let o = j | |
43 | 43 | if (o) | |
44 | 44 | then true | |
45 | 45 | else throw("not allowed") | |
46 | 46 | } | |
47 | 47 | else throw("opAllowed: unexpected result type") | |
48 | 48 | } | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func p (q) = if (contains(getStringValue(h, "main"), toString(q.caller))) | |
52 | 52 | then true | |
53 | 53 | else throw("only main can do") | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func r (s,t) = if (s) | |
57 | 57 | then throw(t) | |
58 | 58 | else true | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | let u = 1440 | |
62 | 62 | ||
63 | 63 | let v = getStringValue(this, "usdc") | |
64 | 64 | ||
65 | 65 | let w = getStringValue(this, "usdt") | |
66 | 66 | ||
67 | 67 | let x = getStringValue(this, "usdn") | |
68 | 68 | ||
69 | 69 | func y (z,A) = ((z + "_") + A) | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | func B (z,A) = (((z + "_") + A) + "_usdn") | |
73 | 73 | ||
74 | 74 | ||
75 | 75 | func C (z) = (z + "_usdn") | |
76 | 76 | ||
77 | 77 | ||
78 | 78 | func D (A) = ("total_" + A) | |
79 | 79 | ||
80 | 80 | ||
81 | 81 | func E (z) = (z + "_vesting_start") | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | func F (z) = (z + "_claimed") | |
85 | 85 | ||
86 | 86 | ||
87 | 87 | func G (H,z,A) = (((((z + "_") + A) + "_") + toString(H)) + "_withdrawn_within_epoch") | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | let I = ((l / u) * u) | |
91 | 91 | ||
92 | 92 | let J = valueOrElse(getInteger(h, "minimaxVestingUsdn"), (1000 * 1000000)) | |
93 | 93 | ||
94 | 94 | let K = "total_usdn" | |
95 | 95 | ||
96 | 96 | let L = (1440 * 365) | |
97 | 97 | ||
98 | 98 | func M (z) = G(I, z, x) | |
99 | 99 | ||
100 | 100 | ||
101 | 101 | func N (z) = valueOrElse(getInteger(M(z)), 0) | |
102 | 102 | ||
103 | 103 | ||
104 | 104 | func O (z) = { | |
105 | 105 | let P = valueOrElse(getInteger(B(z, v)), 0) | |
106 | 106 | let Q = valueOrElse(getInteger(B(z, w)), 0) | |
107 | 107 | let R = (P + Q) | |
108 | 108 | let S = valueOrElse(getInteger(F(z)), 0) | |
109 | 109 | let T = N(z) | |
110 | 110 | let j = getInteger(this, E(z)) | |
111 | 111 | if ($isInstanceOf(j, "Int")) | |
112 | 112 | then { | |
113 | 113 | let U = j | |
114 | 114 | let V = if ((l > (U + L))) | |
115 | 115 | then R | |
116 | 116 | else fraction(R, (l - U), L) | |
117 | 117 | let W = min([(V - S), (max([J, (R / 365)]) - T)]) | |
118 | 118 | $Tuple7(R, S, V, U, (U + L), T, W) | |
119 | 119 | } | |
120 | 120 | else $Tuple7(R, 0, -1, -1, -1, -1, -1) | |
121 | 121 | } | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | func X (z) = { | |
125 | 125 | let Y = O(z) | |
126 | 126 | let R = Y._1 | |
127 | 127 | let S = Y._2 | |
128 | 128 | let V = Y._3 | |
129 | 129 | let Z = Y._4 | |
130 | 130 | let aa = Y._5 | |
131 | 131 | let T = Y._6 | |
132 | 132 | let W = Y._7 | |
133 | 133 | let ab = valueOrElse(getInteger(y(z, v)), 0) | |
134 | 134 | let ac = valueOrElse(getInteger(y(z, w)), 0) | |
135 | 135 | ((((((((((((((((((((((((((("address: " + z) + ", totalVesting: ") + toString(R)) + ", alreadyClaimed: ") + toString(S)) + ", eligible: ") + toString(V)) + ", startHeight: ") + toString(Z)) + ", endHeight: ") + toString(aa)) + ", nowHeight: ") + toString(l)) + ", usdc_migrated: ") + toString(ab)) + ", usdt_migrated: ") + toString(ac)) + ", usdc_assetId: ") + v) + ", usdt_assetId: ") + w) + ", dailyLimit: ") + toString(max([(R / 365), J]))) + ", claimedToday: ") + toString(T)) + ", availableToday: ") + toString(W)) | |
136 | 136 | } | |
137 | 137 | ||
138 | 138 | ||
139 | - | @Callable(q) | |
140 | - | func init (ad,ae,af,ag) = if ((q.caller != this)) | |
141 | - | then throw("only self can init") | |
142 | - | else [a(g, ad), a("usdt", ae), a("usdc", af), a("usdn", ag)] | |
139 | + | func ad (z,ae) = { | |
140 | + | let af = m("liquidao_withdrawVested") | |
141 | + | if ((af == af)) | |
142 | + | then { | |
143 | + | let ag = O(z) | |
144 | + | let R = ag._1 | |
145 | + | let S = ag._2 | |
146 | + | let V = ag._3 | |
147 | + | let Z = ag._4 | |
148 | + | let aa = ag._5 | |
149 | + | let T = ag._6 | |
150 | + | let W = ag._7 | |
151 | + | if ((0 > Z)) | |
152 | + | then throw("no vesting enabled") | |
153 | + | else if ((0 >= W)) | |
154 | + | then throw("nothing available") | |
155 | + | else $Tuple2([ScriptTransfer(addressFromStringValue(ae), W, fromBase58String(x)), IntegerEntry(F(z), (S + W)), f(M(z), W)], W) | |
156 | + | } | |
157 | + | else throw("Strict value is not equal to itself.") | |
158 | + | } | |
143 | 159 | ||
144 | 160 | ||
145 | - | ||
146 | - | @Callable(q) | |
147 | - | func startVestingAll () = { | |
148 | - | let z = toString(q.caller) | |
149 | - | let ah = m("liquidao_startVesting") | |
150 | - | if ((ah == ah)) | |
161 | + | func ah (z) = { | |
162 | + | let af = m("liquidao_startVesting") | |
163 | + | if ((af == af)) | |
151 | 164 | then { | |
152 | 165 | let ai = y(z, w) | |
153 | 166 | let aj = y(z, v) | |
154 | 167 | let ak = valueOrElse(getInteger(this, aj), 0) | |
155 | 168 | let al = valueOrElse(getInteger(this, ai), 0) | |
156 | - | let am = valueOrErrorMessage(getInteger(this, C(z)), "no accounted for user") | |
169 | + | if (isDefined(getInteger(this, E(z)))) | |
170 | + | then nil | |
171 | + | else { | |
172 | + | let j = getInteger(this, C(z)) | |
173 | + | if ($isInstanceOf(j, "Int")) | |
174 | + | then { | |
175 | + | let am = j | |
157 | 176 | [f("committedUSDN", am), d(E(z), l), f(D(v), -(ak)), DeleteEntry(aj), f(D(w), -(al)), DeleteEntry(ai)] | |
177 | + | } | |
178 | + | else nil | |
179 | + | } | |
158 | 180 | } | |
181 | + | else throw("Strict value is not equal to itself.") | |
182 | + | } | |
183 | + | ||
184 | + | ||
185 | + | @Callable(q) | |
186 | + | func init (an,ao,ap,aq) = if ((q.caller != this)) | |
187 | + | then throw("only self can init") | |
188 | + | else [a(g, an), a("usdt", ao), a("usdc", ap), a("usdn", aq)] | |
189 | + | ||
190 | + | ||
191 | + | ||
192 | + | @Callable(q) | |
193 | + | func startVestingAll () = ah(toString(q.caller)) | |
194 | + | ||
195 | + | ||
196 | + | ||
197 | + | @Callable(q) | |
198 | + | func startVestingAllFor (z) = { | |
199 | + | let ar = p(q) | |
200 | + | if ((ar == ar)) | |
201 | + | then ah(z) | |
159 | 202 | else throw("Strict value is not equal to itself.") | |
160 | 203 | } | |
161 | 204 | ||
162 | 205 | ||
163 | 206 | ||
164 | 207 | @Callable(q) | |
165 | 208 | func withdrawVested () = { | |
166 | - | let ah = m("liquidao_withdrawVested") | |
167 | - | if ((ah == ah)) | |
168 | - | then { | |
169 | - | let z = toString(q.caller) | |
170 | - | let an = O(z) | |
171 | - | let R = an._1 | |
172 | - | let S = an._2 | |
173 | - | let V = an._3 | |
174 | - | let Z = an._4 | |
175 | - | let aa = an._5 | |
176 | - | let T = an._6 | |
177 | - | let W = an._7 | |
178 | - | if ((0 > Z)) | |
179 | - | then throw("no vesting enabled") | |
180 | - | else if ((0 >= W)) | |
181 | - | then throw("nothing available") | |
182 | - | else $Tuple2([ScriptTransfer(q.caller, W, fromBase58String(x)), IntegerEntry(F(z), (S + W)), f(M(z), W)], W) | |
183 | - | } | |
209 | + | let z = toString(q.caller) | |
210 | + | ad(z, z) | |
211 | + | } | |
212 | + | ||
213 | + | ||
214 | + | ||
215 | + | @Callable(q) | |
216 | + | func withdrawVestedForTo (as,ae) = { | |
217 | + | let ar = p(q) | |
218 | + | if ((ar == ar)) | |
219 | + | then ad(as, ae) | |
184 | 220 | else throw("Strict value is not equal to itself.") | |
185 | 221 | } | |
186 | 222 | ||
187 | 223 | ||
188 | 224 | ||
189 | 225 | @Callable(q) | |
190 | - | func accountFor (z,A,ao) = { | |
191 | - | let ap = q.payments[0] | |
192 | - | let ah = if (if (if (if (p(q)) | |
193 | - | then m("liquidao_move") | |
194 | - | else false) | |
195 | - | then r((toBase58String(value(ap.assetId)) != x), "usdn must be attached") | |
196 | - | else false) | |
197 | - | then r((ao > ap.amount), "not enough supplied") | |
198 | - | else false) | |
199 | - | then r(if ((A != v)) | |
200 | - | then (A != w) | |
201 | - | else false, "only t or c") | |
202 | - | else false | |
203 | - | if ((ah == ah)) | |
204 | - | then [d(y(z, A), ao), f(B(z, A), ap.amount), f(C(z), ap.amount), f(D(A), ao), f(K, ap.amount)] | |
205 | - | else throw("Strict value is not equal to itself.") | |
206 | - | } | |
226 | + | func adviseU (as) = $Tuple2(nil, X(as)) | |
207 | 227 | ||
208 | 228 |
github/deemru/w8io/3ef1775 44.34 ms ◑