tx · HWQ5bBtUFi2Bh4KswDryoi3JKQzz9Sjn15FwnWG2A4dX 3P3VTtUiwJ91Ly7vwtRVKv5NkNNiPoWe7oP: -0.00700000 Waves 2022.08.05 12:39 [3236525] smart account 3P3VTtUiwJ91Ly7vwtRVKv5NkNNiPoWe7oP > SELF 0.00000000 Waves
{ "type": 13, "id": "HWQ5bBtUFi2Bh4KswDryoi3JKQzz9Sjn15FwnWG2A4dX", "fee": 700000, "feeAssetId": null, "timestamp": 1659692352236, "version": 1, "sender": "3P3VTtUiwJ91Ly7vwtRVKv5NkNNiPoWe7oP", "senderPublicKey": "5q25v77G7b2qAcdzH88H2Y7mxXnddbN9ZYKCn3Q8W6Pi", "proofs": [ "BBDvzrnUxJ8UsGCXSZyskHCak89W5Ns8oec5KWjFtcUZidqY1Ksbzkre6tMsqecVy7WCuBurrxxbNsjZzW8weze" ], "script": "base64:BgIVCAISBgoECAgICBIAEgASBQoDCAgBHgEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQ13cml0ZUNvbnN0SW50AgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMFA2tleQkBDEludGVnZXJFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQALY29uZmlnU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwULY29uZmlnU3RvcmUAEm1heWJlT3JhY2xlQWRkcmVzcwQHJG1hdGNoMAkAnQgCBQ1jb25maWdBZGRyZXNzAg5vcmFjbGVfYWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwUEdW5pdAAGSEVJR0hUBQZoZWlnaHQBCW9wQWxsb3dlZAECb3AEByRtYXRjaDAJAPwHBAUNY29uZmlnQWRkcmVzcwIJb3BBbGxvd2VkCQDMCAICBHVzZG4JAMwIAgUCb3AFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDADBQFiBgkAAgECC25vdCBhbGxvd2VkCQACAQIhb3BBbGxvd2VkOiB1bmV4cGVjdGVkIHJlc3VsdCB0eXBlAQhtYWluT25seQEBaQMJAQhjb250YWlucwIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDWNvbmZpZ0FkZHJlc3MCBG1haW4JAKUIAQgFAWkGY2FsbGVyBgkAAgECEG9ubHkgbWFpbiBjYW4gZG8BB3Rocm93SWYCCWNvbmRpdGlvbgVlcnJvcgMFCWNvbmRpdGlvbgkAAgEFBWVycm9yBgAJVElNRUZSQU1FAKALAAR1c2RjCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgR1c2RjAAR1c2R0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgR1c2R0AAR1c2RuCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgR1c2RuARFhZGRyZXNzQXNzZXRTdG9yZQIHYWRkcmVzcwdhc3NldElkCQCsAgIJAKwCAgUHYWRkcmVzcwIBXwUHYXNzZXRJZAEVYWRkcmVzc0Fzc2V0VVNETlN0b3JlAgdhZGRyZXNzB2Fzc2V0SWQJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAV8FB2Fzc2V0SWQCBV91c2RuARVhZGRyZXNzVG90YWxVU0ROU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIFX3VzZG4BD3RvdGFsQXNzZXRTdG9yZQEHYXNzZXRJZAkArAICAgZ0b3RhbF8FB2Fzc2V0SWQBEXZlc3RpbmdTdGFydFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCDl92ZXN0aW5nX3N0YXJ0ARN2ZXN0aW5nQ2xhaW1lZFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCCF9jbGFpbWVkARl3aXRoZHJhd25XaXRoaW5FcG9jaFN0b3JlAwplcG9jaFN0YXJ0B2FkZHJlc3MHYXNzZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAV8FB2Fzc2V0SWQCAV8JAKQDAQUKZXBvY2hTdGFydAIXX3dpdGhkcmF3bl93aXRoaW5fZXBvY2gAEWN1cnJlbnRFcG9jaFN0YXJ0CQBoAgkAaQIFBkhFSUdIVAUJVElNRUZSQU1FBQlUSU1FRlJBTUUAEG1pbmlNYXhDbGFpbVVzZG4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUNY29uZmlnQWRkcmVzcwISbWluaW1heFZlc3RpbmdVc2RuCQBoAgDoBwDAhD0ADnRvdGFsVVNETlN0b3JlAgp0b3RhbF91c2RuAA12ZXN0aW5nUGVyaW9kCQBoAgCgCwDtAgETd2l0aGRyYXduVG9kYXlTdG9yZQEHYWRkcmVzcwkBGXdpdGhkcmF3bldpdGhpbkVwb2NoU3RvcmUDBRFjdXJyZW50RXBvY2hTdGFydAUHYWRkcmVzcwUEdXNkbgEOd2l0aGRyYXduVG9kYXkBB2FkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE3dpdGhkcmF3blRvZGF5U3RvcmUBBQdhZGRyZXNzAAABEnVzZXJWZXN0aW5nQmFsYW5jZQEHYWRkcmVzcwQFY1VTRE4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWFkZHJlc3NBc3NldFVTRE5TdG9yZQIFB2FkZHJlc3MFBHVzZGMAAAQFdFVTRE4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWFkZHJlc3NBc3NldFVTRE5TdG9yZQIFB2FkZHJlc3MFBHVzZHQAAAQMdG90YWxWZXN0aW5nCQBkAgUFY1VTRE4FBXRVU0ROBA5hbHJlYWR5Q2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETdmVzdGluZ0NsYWltZWRTdG9yZQEFB2FkZHJlc3MAAAQMY2xhaW1lZFRvZGF5CQEOd2l0aGRyYXduVG9kYXkBBQdhZGRyZXNzBAckbWF0Y2gwCQCaCAIFBHRoaXMJARF2ZXN0aW5nU3RhcnRTdG9yZQEFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIDSW50BAx2ZXN0aW5nU3RhcnQFByRtYXRjaDAECGVsaWdpYmxlAwkAZgIFBkhFSUdIVAkAZAIFDHZlc3RpbmdTdGFydAUNdmVzdGluZ1BlcmlvZAUMdG90YWxWZXN0aW5nCQBrAwUMdG90YWxWZXN0aW5nCQBlAgUGSEVJR0hUBQx2ZXN0aW5nU3RhcnQFDXZlc3RpbmdQZXJpb2QEDmF2YWlsYWJsZVRvZGF5CQCXAwEJAMwIAgkAZQIFCGVsaWdpYmxlBQ5hbHJlYWR5Q2xhaW1lZAkAzAgCCQBlAgkAlgMBCQDMCAIFEG1pbmlNYXhDbGFpbVVzZG4JAMwIAgkAaQIFDHRvdGFsVmVzdGluZwDtAgUDbmlsBQxjbGFpbWVkVG9kYXkFA25pbAkAmQoHBQx0b3RhbFZlc3RpbmcFDmFscmVhZHlDbGFpbWVkBQhlbGlnaWJsZQUMdmVzdGluZ1N0YXJ0CQBkAgUMdmVzdGluZ1N0YXJ0BQ12ZXN0aW5nUGVyaW9kBQxjbGFpbWVkVG9kYXkFDmF2YWlsYWJsZVRvZGF5CQCZCgcFDHRvdGFsVmVzdGluZwAAAP///////////wEA////////////AQD///////////8BAP///////////wEA////////////AQEKYWR2aXNlVXNlcgEHYWRkcmVzcwQLJHQwMzYyOTM3NDUJARJ1c2VyVmVzdGluZ0JhbGFuY2UBBQdhZGRyZXNzBAx0b3RhbFZlc3RpbmcIBQskdDAzNjI5Mzc0NQJfMQQOYWxyZWFkeUNsYWltZWQIBQskdDAzNjI5Mzc0NQJfMgQIZWxpZ2libGUIBQskdDAzNjI5Mzc0NQJfMwQFc3RhcnQIBQskdDAzNjI5Mzc0NQJfNAQDZW5kCAULJHQwMzYyOTM3NDUCXzUEDGNsYWltZWRUb2RheQgFCyR0MDM2MjkzNzQ1Al82BA5hdmFpbGFibGVUb2RheQgFCyR0MDM2MjkzNzQ1Al83BAFjCQELdmFsdWVPckVsc2UCCQCfCAEJARFhZGRyZXNzQXNzZXRTdG9yZQIFB2FkZHJlc3MFBHVzZGMAAAQBdAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQR1c2R0AAAJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFkZHJlc3M6IAUHYWRkcmVzcwIQLCB0b3RhbFZlc3Rpbmc6IAkApAMBBQx0b3RhbFZlc3RpbmcCEiwgYWxyZWFkeUNsYWltZWQ6IAkApAMBBQ5hbHJlYWR5Q2xhaW1lZAIMLCBlbGlnaWJsZTogCQCkAwEFCGVsaWdpYmxlAg8sIHN0YXJ0SGVpZ2h0OiAJAKQDAQUFc3RhcnQCDSwgZW5kSGVpZ2h0OiAJAKQDAQUDZW5kAg0sIG5vd0hlaWdodDogCQCkAwEFBkhFSUdIVAIRLCB1c2RjX21pZ3JhdGVkOiAJAKQDAQUBYwIRLCB1c2R0X21pZ3JhdGVkOiAJAKQDAQUBdAIQLCB1c2RjX2Fzc2V0SWQ6IAUEdXNkYwIQLCB1c2R0X2Fzc2V0SWQ6IAUEdXNkdAIOLCBkYWlseUxpbWl0OiAJAKQDAQkAlgMBCQDMCAIJAGkCBQx0b3RhbFZlc3RpbmcA7QIJAMwIAgUQbWluaU1heENsYWltVXNkbgUDbmlsAhAsIGNsYWltZWRUb2RheTogCQCkAwEFDGNsYWltZWRUb2RheQISLCBhdmFpbGFibGVUb2RheTogCQCkAwEFDmF2YWlsYWJsZVRvZGF5BAFpAQRpbml0BARjb25mA3RJZANjSWQDbklkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQISb25seSBzZWxmIGNhbiBpbml0CQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgULY29uZmlnU3RvcmUFBGNvbmYJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgR1c2R0BQN0SWQJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgR1c2RjBQNjSWQJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCAgR1c2RuBQNuSWQFA25pbAFpAQ9zdGFydFZlc3RpbmdBbGwABAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQGY2hlY2tzCQEJb3BBbGxvd2VkAQIVbGlxdWlkYW9fc3RhcnRWZXN0aW5nAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAp1c2VyVFN0b3JlCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQR1c2R0BAp1c2VyQ1N0b3JlCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQR1c2RjBApjb252ZXJ0ZWRDCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCnVzZXJDU3RvcmUAAAQKY29udmVydGVkVAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQp1c2VyVFN0b3JlAAAEDnN0YXJ0ZWRWZXN0aW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkBFWFkZHJlc3NUb3RhbFVTRE5TdG9yZQEFB2FkZHJlc3MCFW5vIGFjY291bnRlZCBmb3IgdXNlcgkAzAgCCQEIY2hhbmdlQnkCAg1jb21taXR0ZWRVU0ROBQ5zdGFydGVkVmVzdGluZwkAzAgCCQENd3JpdGVDb25zdEludAIJARF2ZXN0aW5nU3RhcnRTdG9yZQEFB2FkZHJlc3MFBkhFSUdIVAkAzAgCCQEIY2hhbmdlQnkCCQEPdG90YWxBc3NldFN0b3JlAQUEdXNkYwkBAS0BBQpjb252ZXJ0ZWRDCQDMCAIJAQtEZWxldGVFbnRyeQEFCnVzZXJDU3RvcmUJAMwIAgkBCGNoYW5nZUJ5AgkBD3RvdGFsQXNzZXRTdG9yZQEFBHVzZHQJAQEtAQUKY29udmVydGVkVAkAzAgCCQELRGVsZXRlRW50cnkBBQp1c2VyVFN0b3JlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOd2l0aGRyYXdWZXN0ZWQABAZjaGVja3MJAQlvcEFsbG93ZWQBAhdsaXF1aWRhb193aXRoZHJhd1Zlc3RlZAMJAAACBQZjaGVja3MFBmNoZWNrcwQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIECyR0MDYwNDM2MTU5CQESdXNlclZlc3RpbmdCYWxhbmNlAQUHYWRkcmVzcwQMdG90YWxWZXN0aW5nCAULJHQwNjA0MzYxNTkCXzEEDmFscmVhZHlDbGFpbWVkCAULJHQwNjA0MzYxNTkCXzIECGVsaWdpYmxlCAULJHQwNjA0MzYxNTkCXzMEBXN0YXJ0CAULJHQwNjA0MzYxNTkCXzQEA2VuZAgFCyR0MDYwNDM2MTU5Al81BAxjbGFpbWVkVG9kYXkIBQskdDA2MDQzNjE1OQJfNgQOYXZhaWxhYmxlVG9kYXkIBQskdDA2MDQzNjE1OQJfNwMJAGYCAAAFBXN0YXJ0CQACAQISbm8gdmVzdGluZyBlbmFibGVkAwkAZwIAAAUOYXZhaWxhYmxlVG9kYXkJAAIBAhFub3RoaW5nIGF2YWlsYWJsZQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUOYXZhaWxhYmxlVG9kYXkJANkEAQUEdXNkbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE3Zlc3RpbmdDbGFpbWVkU3RvcmUBBQdhZGRyZXNzCQBkAgUOYWxyZWFkeUNsYWltZWQFDmF2YWlsYWJsZVRvZGF5CQDMCAIJAQhjaGFuZ2VCeQIJARN3aXRoZHJhd25Ub2RheVN0b3JlAQUHYWRkcmVzcwUOYXZhaWxhYmxlVG9kYXkFA25pbAUOYXZhaWxhYmxlVG9kYXkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKYWNjb3VudEZvcgMHYWRkcmVzcwdhc3NldElkBmFtb3VudAQIYXR0YWNoZWQJAJEDAggFAWkIcGF5bWVudHMAAAQGY2hlY2tzAwMDAwkBCG1haW5Pbmx5AQUBaQkBCW9wQWxsb3dlZAECDWxpcXVpZGFvX21vdmUHCQEHdGhyb3dJZgIJAQIhPQIJANgEAQkBBXZhbHVlAQgFCGF0dGFjaGVkB2Fzc2V0SWQFBHVzZG4CFXVzZG4gbXVzdCBiZSBhdHRhY2hlZAcJAQd0aHJvd0lmAgkAZgIFBmFtb3VudAgFCGF0dGFjaGVkBmFtb3VudAITbm90IGVub3VnaCBzdXBwbGllZAcJAQd0aHJvd0lmAgMJAQIhPQIFB2Fzc2V0SWQFBHVzZGMJAQIhPQIFB2Fzc2V0SWQFBHVzZHQHAgtvbmx5IHQgb3IgYwcDCQAAAgUGY2hlY2tzBQZjaGVja3MJAMwIAgkBDXdyaXRlQ29uc3RJbnQCCQERYWRkcmVzc0Fzc2V0U3RvcmUCBQdhZGRyZXNzBQdhc3NldElkBQZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBFWFkZHJlc3NBc3NldFVTRE5TdG9yZQIFB2FkZHJlc3MFB2Fzc2V0SWQIBQhhdHRhY2hlZAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBFWFkZHJlc3NUb3RhbFVTRE5TdG9yZQEFB2FkZHJlc3MIBQhhdHRhY2hlZAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBD3RvdGFsQXNzZXRTdG9yZQEFB2Fzc2V0SWQFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCBQ50b3RhbFVTRE5TdG9yZQgFCGF0dGFjaGVkBmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAKG832w=", "chainId": 87, "height": 3236525, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7rotTFSzFy2o2Q4PVnSTbhKtVoDxY2KNC5cnVLf9jKik Next: c9okMe8f9WB98km9MkqULxiBt4M2WYrzNreEdzQSFY2 Diff:
Old | New | Differences | |
---|---|---|---|
58 | 58 | else true | |
59 | 59 | ||
60 | 60 | ||
61 | - | let u = | |
61 | + | let u = 1440 | |
62 | 62 | ||
63 | - | let v = getStringValue(this, " | |
63 | + | let v = getStringValue(this, "usdc") | |
64 | 64 | ||
65 | - | let w = getStringValue(this, " | |
65 | + | let w = getStringValue(this, "usdt") | |
66 | 66 | ||
67 | - | func x (y,z) = ((y + "_") + z) | |
67 | + | let x = getStringValue(this, "usdn") | |
68 | + | ||
69 | + | func y (z,A) = ((z + "_") + A) | |
68 | 70 | ||
69 | 71 | ||
70 | - | func | |
72 | + | func B (z,A) = (((z + "_") + A) + "_usdn") | |
71 | 73 | ||
72 | 74 | ||
73 | - | func | |
75 | + | func C (z) = (z + "_usdn") | |
74 | 76 | ||
75 | 77 | ||
76 | - | func | |
78 | + | func D (A) = ("total_" + A) | |
77 | 79 | ||
78 | 80 | ||
79 | - | func | |
81 | + | func E (z) = (z + "_vesting_start") | |
80 | 82 | ||
81 | 83 | ||
82 | - | func | |
84 | + | func F (z) = (z + "_claimed") | |
83 | 85 | ||
84 | 86 | ||
85 | - | ||
87 | + | func G (H,z,A) = (((((z + "_") + A) + "_") + toString(H)) + "_withdrawn_within_epoch") | |
86 | 88 | ||
87 | - | let G = (1440 * 365) | |
88 | 89 | ||
89 | - | func H (y) = { | |
90 | - | let I = valueOrElse(getInteger(A(y, u)), 0) | |
91 | - | let J = valueOrElse(getInteger(A(y, v)), 0) | |
92 | - | let K = (I + J) | |
93 | - | let L = valueOrElse(getInteger(E(y)), 0) | |
94 | - | let j = getInteger(this, D(y)) | |
90 | + | let I = ((l / u) * u) | |
91 | + | ||
92 | + | let J = valueOrElse(getInteger(h, "minimaxVestingUsdn"), (1000 * 1000000)) | |
93 | + | ||
94 | + | let K = "total_usdn" | |
95 | + | ||
96 | + | let L = (1440 * 365) | |
97 | + | ||
98 | + | func M (z) = G(I, z, x) | |
99 | + | ||
100 | + | ||
101 | + | func N (z) = valueOrElse(getInteger(M(z)), 0) | |
102 | + | ||
103 | + | ||
104 | + | func O (z) = { | |
105 | + | let P = valueOrElse(getInteger(B(z, v)), 0) | |
106 | + | let Q = valueOrElse(getInteger(B(z, w)), 0) | |
107 | + | let R = (P + Q) | |
108 | + | let S = valueOrElse(getInteger(F(z)), 0) | |
109 | + | let T = N(z) | |
110 | + | let j = getInteger(this, E(z)) | |
95 | 111 | if ($isInstanceOf(j, "Int")) | |
96 | 112 | then { | |
97 | - | let M = j | |
98 | - | let N = if ((l > (M + G))) | |
99 | - | then K | |
100 | - | else fraction(K, (l - M), G) | |
101 | - | $Tuple5(K, L, N, M, (M + G)) | |
113 | + | let U = j | |
114 | + | let V = if ((l > (U + L))) | |
115 | + | then R | |
116 | + | else fraction(R, (l - U), L) | |
117 | + | let W = min([(V - S), (max([J, (R / 365)]) - T)]) | |
118 | + | $Tuple7(R, S, V, U, (U + L), T, W) | |
102 | 119 | } | |
103 | - | else $ | |
120 | + | else $Tuple7(R, 0, -1, -1, -1, -1, -1) | |
104 | 121 | } | |
105 | 122 | ||
106 | 123 | ||
107 | - | func O (y) = { | |
108 | - | let P = H(y) | |
109 | - | let K = P._1 | |
110 | - | let L = P._2 | |
111 | - | let N = P._3 | |
112 | - | let Q = P._4 | |
113 | - | let R = P._5 | |
114 | - | let S = valueOrElse(getInteger(x(y, u)), 0) | |
115 | - | let T = valueOrElse(getInteger(x(y, v)), 0) | |
116 | - | ((((((((((((((((((((("address: " + y) + ", totalVesting: ") + toString(K)) + ", alreadyClaimed: ") + toString(L)) + ", eligible: ") + toString(N)) + ", startHeight: ") + toString(Q)) + ", endHeight: ") + toString(R)) + ", nowHeight: ") + toString(l)) + ", usdc_migrated: ") + toString(S)) + ", usdt_migrated: ") + toString(T)) + ", usdc_assetId: ") + u) + ", usdt_assetId: ") + v) | |
124 | + | func X (z) = { | |
125 | + | let Y = O(z) | |
126 | + | let R = Y._1 | |
127 | + | let S = Y._2 | |
128 | + | let V = Y._3 | |
129 | + | let Z = Y._4 | |
130 | + | let aa = Y._5 | |
131 | + | let T = Y._6 | |
132 | + | let W = Y._7 | |
133 | + | let ab = valueOrElse(getInteger(y(z, v)), 0) | |
134 | + | let ac = valueOrElse(getInteger(y(z, w)), 0) | |
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)) | |
117 | 136 | } | |
118 | 137 | ||
119 | 138 | ||
120 | 139 | @Callable(q) | |
121 | - | func init ( | |
140 | + | func init (ad,ae,af,ag) = if ((q.caller != this)) | |
122 | 141 | then throw("only self can init") | |
123 | - | else [a(g, | |
142 | + | else [a(g, ad), a("usdt", ae), a("usdc", af), a("usdn", ag)] | |
124 | 143 | ||
125 | 144 | ||
126 | 145 | ||
127 | 146 | @Callable(q) | |
128 | 147 | func startVestingAll () = { | |
129 | - | let | |
130 | - | let | |
131 | - | if (( | |
148 | + | let z = toString(q.caller) | |
149 | + | let ah = m("liquidao_startVesting") | |
150 | + | if ((ah == ah)) | |
132 | 151 | then { | |
133 | - | let | |
134 | - | let | |
135 | - | let | |
136 | - | let | |
137 | - | let | |
138 | - | [f("committedUSDN", | |
152 | + | let ai = y(z, w) | |
153 | + | let aj = y(z, v) | |
154 | + | let ak = valueOrElse(getInteger(this, aj), 0) | |
155 | + | let al = valueOrElse(getInteger(this, ai), 0) | |
156 | + | let am = valueOrErrorMessage(getInteger(this, C(z)), "no accounted for user") | |
157 | + | [f("committedUSDN", am), d(E(z), l), f(D(v), -(ak)), DeleteEntry(aj), f(D(w), -(al)), DeleteEntry(ai)] | |
139 | 158 | } | |
140 | 159 | else throw("Strict value is not equal to itself.") | |
141 | 160 | } | |
144 | 163 | ||
145 | 164 | @Callable(q) | |
146 | 165 | func withdrawVested () = { | |
147 | - | let | |
148 | - | if (( | |
166 | + | let ah = m("liquidao_withdrawVested") | |
167 | + | if ((ah == ah)) | |
149 | 168 | then { | |
150 | - | let y = toString(q.caller) | |
151 | - | let ae = H(y) | |
152 | - | let K = ae._1 | |
153 | - | let L = ae._2 | |
154 | - | let N = ae._3 | |
155 | - | let Q = ae._4 | |
156 | - | let R = ae._5 | |
157 | - | let af = (N - L) | |
158 | - | if ((0 > Q)) | |
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)) | |
159 | 179 | then throw("no vesting enabled") | |
160 | - | else if (( | |
161 | - | then | |
162 | - | else $Tuple2([ScriptTransfer(q.caller, | |
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) | |
163 | 183 | } | |
164 | 184 | else throw("Strict value is not equal to itself.") | |
165 | 185 | } | |
167 | 187 | ||
168 | 188 | ||
169 | 189 | @Callable(q) | |
170 | - | func accountFor ( | |
171 | - | let | |
172 | - | let | |
190 | + | func accountFor (z,A,ao) = { | |
191 | + | let ap = q.payments[0] | |
192 | + | let ah = if (if (if (if (p(q)) | |
173 | 193 | then m("liquidao_move") | |
174 | 194 | else false) | |
175 | - | then r((toBase58String(value( | |
195 | + | then r((toBase58String(value(ap.assetId)) != x), "usdn must be attached") | |
176 | 196 | else false) | |
177 | - | then r(( | |
197 | + | then r((ao > ap.amount), "not enough supplied") | |
178 | 198 | else false) | |
179 | - | then r(if (( | |
180 | - | then ( | |
199 | + | then r(if ((A != v)) | |
200 | + | then (A != w) | |
181 | 201 | else false, "only t or c") | |
182 | 202 | else false | |
183 | - | if (( | |
184 | - | then [d( | |
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)] | |
185 | 205 | else throw("Strict value is not equal to itself.") | |
186 | 206 | } | |
187 | 207 |
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 | - | let u = | |
61 | + | let u = 1440 | |
62 | 62 | ||
63 | - | let v = getStringValue(this, " | |
63 | + | let v = getStringValue(this, "usdc") | |
64 | 64 | ||
65 | - | let w = getStringValue(this, " | |
65 | + | let w = getStringValue(this, "usdt") | |
66 | 66 | ||
67 | - | func x (y,z) = ((y + "_") + z) | |
67 | + | let x = getStringValue(this, "usdn") | |
68 | + | ||
69 | + | func y (z,A) = ((z + "_") + A) | |
68 | 70 | ||
69 | 71 | ||
70 | - | func | |
72 | + | func B (z,A) = (((z + "_") + A) + "_usdn") | |
71 | 73 | ||
72 | 74 | ||
73 | - | func | |
75 | + | func C (z) = (z + "_usdn") | |
74 | 76 | ||
75 | 77 | ||
76 | - | func | |
78 | + | func D (A) = ("total_" + A) | |
77 | 79 | ||
78 | 80 | ||
79 | - | func | |
81 | + | func E (z) = (z + "_vesting_start") | |
80 | 82 | ||
81 | 83 | ||
82 | - | func | |
84 | + | func F (z) = (z + "_claimed") | |
83 | 85 | ||
84 | 86 | ||
85 | - | ||
87 | + | func G (H,z,A) = (((((z + "_") + A) + "_") + toString(H)) + "_withdrawn_within_epoch") | |
86 | 88 | ||
87 | - | let G = (1440 * 365) | |
88 | 89 | ||
89 | - | func H (y) = { | |
90 | - | let I = valueOrElse(getInteger(A(y, u)), 0) | |
91 | - | let J = valueOrElse(getInteger(A(y, v)), 0) | |
92 | - | let K = (I + J) | |
93 | - | let L = valueOrElse(getInteger(E(y)), 0) | |
94 | - | let j = getInteger(this, D(y)) | |
90 | + | let I = ((l / u) * u) | |
91 | + | ||
92 | + | let J = valueOrElse(getInteger(h, "minimaxVestingUsdn"), (1000 * 1000000)) | |
93 | + | ||
94 | + | let K = "total_usdn" | |
95 | + | ||
96 | + | let L = (1440 * 365) | |
97 | + | ||
98 | + | func M (z) = G(I, z, x) | |
99 | + | ||
100 | + | ||
101 | + | func N (z) = valueOrElse(getInteger(M(z)), 0) | |
102 | + | ||
103 | + | ||
104 | + | func O (z) = { | |
105 | + | let P = valueOrElse(getInteger(B(z, v)), 0) | |
106 | + | let Q = valueOrElse(getInteger(B(z, w)), 0) | |
107 | + | let R = (P + Q) | |
108 | + | let S = valueOrElse(getInteger(F(z)), 0) | |
109 | + | let T = N(z) | |
110 | + | let j = getInteger(this, E(z)) | |
95 | 111 | if ($isInstanceOf(j, "Int")) | |
96 | 112 | then { | |
97 | - | let M = j | |
98 | - | let N = if ((l > (M + G))) | |
99 | - | then K | |
100 | - | else fraction(K, (l - M), G) | |
101 | - | $Tuple5(K, L, N, M, (M + G)) | |
113 | + | let U = j | |
114 | + | let V = if ((l > (U + L))) | |
115 | + | then R | |
116 | + | else fraction(R, (l - U), L) | |
117 | + | let W = min([(V - S), (max([J, (R / 365)]) - T)]) | |
118 | + | $Tuple7(R, S, V, U, (U + L), T, W) | |
102 | 119 | } | |
103 | - | else $ | |
120 | + | else $Tuple7(R, 0, -1, -1, -1, -1, -1) | |
104 | 121 | } | |
105 | 122 | ||
106 | 123 | ||
107 | - | func O (y) = { | |
108 | - | let P = H(y) | |
109 | - | let K = P._1 | |
110 | - | let L = P._2 | |
111 | - | let N = P._3 | |
112 | - | let Q = P._4 | |
113 | - | let R = P._5 | |
114 | - | let S = valueOrElse(getInteger(x(y, u)), 0) | |
115 | - | let T = valueOrElse(getInteger(x(y, v)), 0) | |
116 | - | ((((((((((((((((((((("address: " + y) + ", totalVesting: ") + toString(K)) + ", alreadyClaimed: ") + toString(L)) + ", eligible: ") + toString(N)) + ", startHeight: ") + toString(Q)) + ", endHeight: ") + toString(R)) + ", nowHeight: ") + toString(l)) + ", usdc_migrated: ") + toString(S)) + ", usdt_migrated: ") + toString(T)) + ", usdc_assetId: ") + u) + ", usdt_assetId: ") + v) | |
124 | + | func X (z) = { | |
125 | + | let Y = O(z) | |
126 | + | let R = Y._1 | |
127 | + | let S = Y._2 | |
128 | + | let V = Y._3 | |
129 | + | let Z = Y._4 | |
130 | + | let aa = Y._5 | |
131 | + | let T = Y._6 | |
132 | + | let W = Y._7 | |
133 | + | let ab = valueOrElse(getInteger(y(z, v)), 0) | |
134 | + | let ac = valueOrElse(getInteger(y(z, w)), 0) | |
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)) | |
117 | 136 | } | |
118 | 137 | ||
119 | 138 | ||
120 | 139 | @Callable(q) | |
121 | - | func init ( | |
140 | + | func init (ad,ae,af,ag) = if ((q.caller != this)) | |
122 | 141 | then throw("only self can init") | |
123 | - | else [a(g, | |
142 | + | else [a(g, ad), a("usdt", ae), a("usdc", af), a("usdn", ag)] | |
124 | 143 | ||
125 | 144 | ||
126 | 145 | ||
127 | 146 | @Callable(q) | |
128 | 147 | func startVestingAll () = { | |
129 | - | let | |
130 | - | let | |
131 | - | if (( | |
148 | + | let z = toString(q.caller) | |
149 | + | let ah = m("liquidao_startVesting") | |
150 | + | if ((ah == ah)) | |
132 | 151 | then { | |
133 | - | let | |
134 | - | let | |
135 | - | let | |
136 | - | let | |
137 | - | let | |
138 | - | [f("committedUSDN", | |
152 | + | let ai = y(z, w) | |
153 | + | let aj = y(z, v) | |
154 | + | let ak = valueOrElse(getInteger(this, aj), 0) | |
155 | + | let al = valueOrElse(getInteger(this, ai), 0) | |
156 | + | let am = valueOrErrorMessage(getInteger(this, C(z)), "no accounted for user") | |
157 | + | [f("committedUSDN", am), d(E(z), l), f(D(v), -(ak)), DeleteEntry(aj), f(D(w), -(al)), DeleteEntry(ai)] | |
139 | 158 | } | |
140 | 159 | else throw("Strict value is not equal to itself.") | |
141 | 160 | } | |
142 | 161 | ||
143 | 162 | ||
144 | 163 | ||
145 | 164 | @Callable(q) | |
146 | 165 | func withdrawVested () = { | |
147 | - | let | |
148 | - | if (( | |
166 | + | let ah = m("liquidao_withdrawVested") | |
167 | + | if ((ah == ah)) | |
149 | 168 | then { | |
150 | - | let y = toString(q.caller) | |
151 | - | let ae = H(y) | |
152 | - | let K = ae._1 | |
153 | - | let L = ae._2 | |
154 | - | let N = ae._3 | |
155 | - | let Q = ae._4 | |
156 | - | let R = ae._5 | |
157 | - | let af = (N - L) | |
158 | - | if ((0 > Q)) | |
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)) | |
159 | 179 | then throw("no vesting enabled") | |
160 | - | else if (( | |
161 | - | then | |
162 | - | else $Tuple2([ScriptTransfer(q.caller, | |
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) | |
163 | 183 | } | |
164 | 184 | else throw("Strict value is not equal to itself.") | |
165 | 185 | } | |
166 | 186 | ||
167 | 187 | ||
168 | 188 | ||
169 | 189 | @Callable(q) | |
170 | - | func accountFor ( | |
171 | - | let | |
172 | - | let | |
190 | + | func accountFor (z,A,ao) = { | |
191 | + | let ap = q.payments[0] | |
192 | + | let ah = if (if (if (if (p(q)) | |
173 | 193 | then m("liquidao_move") | |
174 | 194 | else false) | |
175 | - | then r((toBase58String(value( | |
195 | + | then r((toBase58String(value(ap.assetId)) != x), "usdn must be attached") | |
176 | 196 | else false) | |
177 | - | then r(( | |
197 | + | then r((ao > ap.amount), "not enough supplied") | |
178 | 198 | else false) | |
179 | - | then r(if (( | |
180 | - | then ( | |
199 | + | then r(if ((A != v)) | |
200 | + | then (A != w) | |
181 | 201 | else false, "only t or c") | |
182 | 202 | else false | |
183 | - | if (( | |
184 | - | then [d( | |
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)] | |
185 | 205 | else throw("Strict value is not equal to itself.") | |
186 | 206 | } | |
187 | 207 | ||
188 | 208 |
github/deemru/w8io/6500d08 199.72 ms ◑