tx · 9NbPiHR71jfmbknawFuCjBHPhzpnzi2kKuN1mgR16jpq

3PFHNdEPu71QwBAnc2HZPcrbxoseNfUvHEA:  -0.01200000 Waves

2024.01.17 12:03 [4001093] smart account 3PFHNdEPu71QwBAnc2HZPcrbxoseNfUvHEA > SELF 0.00000000 Waves

{ "type": 13, "id": "9NbPiHR71jfmbknawFuCjBHPhzpnzi2kKuN1mgR16jpq", "fee": 1200000, "feeAssetId": null, "timestamp": 1705482215834, "version": 2, "chainId": 87, "sender": "3PFHNdEPu71QwBAnc2HZPcrbxoseNfUvHEA", "senderPublicKey": "DDDs6X5FCyoVAc24Btjc5pGX7N8P7UcWNBPd9nrhAfUg", "proofs": [ "", "2xkSA64B9osJMfMcdCDMCJjrQjouxuDVKhqPUxYgv51vxNimUMoNjV1VNJbyuyVNgSEa7HaA5An8TbFX3DaiZKUw", "4NbReNpdXqvWFTkHfLH3FvFS4JKxKFaCydvKummz8zmUH7FaViM81jwMvSAeCRN3u9sBrmAQjaEkWq3A9aRiZaaS" ], "script": "base64:BgIOCAISAwoBGBIDCgEYEgAfAARDT05GCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgZjb25maWcADkFYTFlfTUFJTl9BRERSCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRDT05GAg1tYWluX2NvbnRyYWN0AAxBWExZX0ZBUk1JTkcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBENPTkYCB2Zhcm1pbmcADkFYTFlfVE9LRU5PTUlDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRDT05GAgl0b2tlbm9taWMADUFYTFlfVEVBTV9CT1gJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBENPTkYCCHRlYW1fYm94AAxBWExZX1NUQUtJTkcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBENPTkYCB3N0YWtpbmcAB1NGX1BPT0wCAlNGAAdXWF9QT09MAgJXWAAUQU1PVU5UX1dBVkVTX0ZPUl9GRUUAgMLXLwAPUEVSQ0VOVF9UT19URUFNADIACWtBeGx5UG9vbAIIYXhseVBvb2wADGtBWExZVG9rZW5JZAILYXhseVRva2VuSWQACmtTaGFyZVBvb2wCDF9wb29sU2hhcmVJZAAFa1Bvb2wCBXBvb2xfAAxrTGVuZFNlcnZpY2UCEWxlbmRfc2VydmljZV9hZGRyAAlrQWRtaW4xUEsCFWdyb3VwMV9hZG1pbjFfcHViX2tleQAJa0FkbWluMlBLAhVncm91cDFfYWRtaW4yX3B1Yl9rZXkACWtBZG1pbjNQSwIVZ3JvdXAxX2FkbWluM19wdWJfa2V5AA9rT3BlcmF0b3JDYWxsUEsCEmFkbWluX2NhbGxfcHViX2tleQAIYWRtaW4xUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFCWtBZG1pbjFQSwISQ2FuJ3QgZ2V0IGFkbWluMVBLAAhhZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUJa0FkbWluMlBLAhJDYW4ndCBnZXQgYWRtaW4yUEsACGFkbWluM1BLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQlrQWRtaW4zUEsCEkNhbid0IGdldCBhZG1pbjNQSwAKb3BlcmF0b3JQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUPa09wZXJhdG9yQ2FsbFBLAhRDYW4ndCBnZXQgb3BlcmF0b3JQSwAGYXhseUlkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ5BWExZX1RPS0VOT01JQwUMa0FYTFlUb2tlbklkAhdDYW4ndCBnZXQgYXhseSB0b2tlbiBpZAAIYXhseVBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMQVhMWV9GQVJNSU5HBQlrQXhseVBvb2wCFkNhbid0IGdldCBheGx5UG9vbCBrZXkCE0Nhbid0IGdldCBheGx5IHBvb2wABGxlbmQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEPdW5rbm93blBvb2xUeXBlAAkAAgECD1dyb25nIHBvb2wgdHlwZQEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQlsaXN0VG9JbnQCAWEEaXRlbQkAzQgCBQFhCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0BEGRpcmVjdFN3b3BmaUNQTU0BBXJBcmdzBARkQXBwCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBXJBcmdzAAEEA3BtdAQEcG10UAkAtQkCCQCRAwIFBXJBcmdzAAICAXwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQkAkQMCBQRwbXRQAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRwbXRQAAEFA25pbAQLbWluVG9SZWNpdmUJAJEDAgUFckFyZ3MAAwkA/AcEBQRkQXBwAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCBQttaW5Ub1JlY2l2ZQUDbmlsBQNuaWwFA3BtdAETZGlyZWN0Um91dGluZ1N3b3BmaQEFckFyZ3MEBGRBcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUFckFyZ3MAAQQDcG10BARwbXRQCQC1CQIJAJEDAgUFckFyZ3MAAgIBfAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBCQCRAwIFBHBtdFAAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBHBtdFAAAQUDbmlsBARhcmdzBAVlQXJncwkAtQkCCQCRAwIFBXJBcmdzAAMCAXwECmV4Y2hhbmdlcnMJALUJAgkAkQMCBQVlQXJncwAAAgEsBA5leGNoYW5nZXJzVHlwZQkAtQkCCQCRAwIFBWVBcmdzAAECASwEBWFyZ3MxCgACJGwJALUJAgkAkQMCBQVlQXJncwACAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlsaXN0VG9JbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMEBWFyZ3MyCgACJGwJALUJAgkAkQMCBQVlQXJncwADAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlsaXN0VG9JbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMEEXJvdXRpbmdBc3NldHNLZXlzCQC1CQIJAJEDAgUFZUFyZ3MABAIBLAQLbWluVG9SZWNpdmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVlQXJncwAFCQDMCAIFCmV4Y2hhbmdlcnMJAMwIAgUOZXhjaGFuZ2Vyc1R5cGUJAMwIAgUFYXJnczEJAMwIAgUFYXJnczIJAMwIAgURcm91dGluZ0Fzc2V0c0tleXMJAMwIAgULbWluVG9SZWNpdmUFA25pbAkA/AcEBQRkQXBwAgxyb3V0aW5nVHJhZGUFBGFyZ3MFA3BtdAMBaQELZXhjaGFuZ2VMcHMBA2xwcwkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpCgEEZXhMUAIBYQJscAQDbHBCCQDZBAEFAmxwBAdiYWxhbmNlCQDwBwIFBHRoaXMFA2xwQgQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDkFYTFlfTUFJTl9BRERSCQCsAgIFAmxwBQprU2hhcmVQb29sCQCsAgICFUNhbid0IGdldCBwb29sIG9mIGxwOgUCbHAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOQVhMWV9NQUlOX0FERFIJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQIcG9vbEFkZHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQRwb29sAgx1bmtub3duIGFkZHIDCQBmAgUHYmFsYW5jZQAABANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAICATAFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQNscEIFB2JhbGFuY2UFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkA/AcEBQhwb29sQWRkcgIDZ2V0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFA2xwQgUHYmFsYW5jZQUDbmlsCQEPdW5rbm93blBvb2xUeXBlAAMJAAACBQNpbnYFA2ludgkAzQgCBQFhBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzQgCBQFhBwQDcmVzCgACJGwFA2xwcwoAAiRzCQCQ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AgUId0JhbGFuY2UFFEFNT1VOVF9XQVZFU19GT1JfRkVFBAZ0b1RlYW0JAGsDBQhiQWlyZHJvcAUPUEVSQ0VOVF9UT19URUFNAGQECXRvU3Rha2luZwkAZQIFCGJBaXJkcm9wBQZ0b1RlYW0DCQBnAgAABQhiQWlyZHJvcAkAAgECFE5vIHRva2VucyB0byBhaXJkcm9wAwkAZwIAAAUJdG9TdGFraW5nCQACAQIUTm8gdG9rZW5zIHRvIGFpcmRyb3AEA2ludgkA/AcEBQhheGx5UG9vbAIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAIJAMwIAgIBMQUDbmlsBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFCXRvU3Rha2luZwUDbmlsAwkAAAIFA2ludgUDaW52BAtheGx5QmFsYW5jZQkA8AcCBQR0aGlzBQZheGx5SWQDCQAAAgULYXhseUJhbGFuY2UFC2F4bHlCYWxhbmNlBARpbnZBCQD8BwQFDEFYTFlfU1RBS0lORwIHYWlyZHJvcAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQZheGx5SWQFC2F4bHlCYWxhbmNlBQNuaWwDCQAAAgUEaW52QQUEaW52QQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ1BWExZX1RFQU1fQk9YBQZ0b1RlYW0FBHVuaXQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAECmlzUmlnaHRGZWUDCQAAAggFA2ludgNmZWUAoPc2CQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwQKaXNFeExwQ2FsbAkAAAIIBQNpbnYIZnVuY3Rpb24CC2V4Y2hhbmdlTHBzBA5pc0V4VG9rZW5zQ2FsbAkAAAIIBQNpbnYIZnVuY3Rpb24CDmV4Y2hhbmdlVG9rZW5zBBBpc0FpcmRyb3BTdGFraW5nCQAAAggFA2ludghmdW5jdGlvbgIOYWlyZHJvcFN0YWtpbmcED2lzTGlxdWlkYXRlQ2FsbAMJAAACCAUDaW52CGZ1bmN0aW9uAgtsaXF1aWRhdGVWMgkAAAIIBQNpbnYEZEFwcAUEbGVuZAcEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCGFkbWluMVBLAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUIYWRtaW4yUEsAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQhhZG1pbjNQSwABAAAEFWFkbWluUHViS2V5Q2FsbFNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCm9wZXJhdG9yUEsAAQAABBBzaWduZWRCeU9uZUFkbWluCQBnAgkAZAIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAUVYWRtaW5QdWJLZXlDYWxsU2lnbmVkAAEDAwUKaXNSaWdodEZlZQMDAwUKaXNFeExwQ2FsbAYFDmlzRXhUb2tlbnNDYWxsBgUQaXNBaXJkcm9wU3Rha2luZwYFD2lzTGlxdWlkYXRlQ2FsbAcFEHNpZ25lZEJ5T25lQWRtaW4HBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQhhZG1pbjFQSwABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCGFkbWluMlBLAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUIYWRtaW4zUEsAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIEfkny", "height": 4001093, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HKG1ZhhFEjdGqfuy6zwajVsjpTH3gERksnjrWXqXcY8n Next: BaBQKDXvQK6NF1ck56ZWwQRJkkMDr6NoXkNSWRiwbsKe Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let CONF = Address(base58'3PELQTKtehZiFGhPFj1NdaMCFKF89AtMxxA')
4+let CONF = addressFromStringValue(getStringValue(this, "config"))
55
66 let AXLY_MAIN_ADDR = addressFromStringValue(getStringValue(CONF, "main_contract"))
77
2929
3030 let kPool = "pool_"
3131
32+let kLendService = "lend_service_addr"
33+
3234 let kAdmin1PK = "group1_admin1_pub_key"
3335
3436 let kAdmin2PK = "group1_admin2_pub_key"
4850 let axlyId = fromBase58String(valueOrErrorMessage(getString(AXLY_TOKENOMIC, kAXLYTokenId), "Can't get axly token id"))
4951
5052 let axlyPool = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(AXLY_FARMING, kAxlyPool), "Can't get axlyPool key")), "Can't get axly pool")
53+
54+let lend = addressFromStringValue(valueOrErrorMessage(getString(CONF, kLendService), "Can't get lend service addr"))
5155
5256 func unknownPoolType () = throw("Wrong pool type")
5357
238242 let isExLpCall = (inv.function == "exchangeLps")
239243 let isExTokensCall = (inv.function == "exchangeTokens")
240244 let isAirdropStaking = (inv.function == "airdropStaking")
245+ let isLiquidateCall = if ((inv.function == "liquidateV2"))
246+ then (inv.dApp == lend)
247+ else false
241248 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
242249 then 1
243250 else 0
252259 else 0
253260 let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyCallSigned) >= 1)
254261 if (if (isRightFee)
255- then if (if (isExLpCall)
262+ then if (if (if (isExLpCall)
256263 then true
257264 else isExTokensCall)
258265 then true
259- else isAirdropStaking
266+ else isAirdropStaking)
267+ then true
268+ else isLiquidateCall
260269 else false)
261270 then signedByOneAdmin
262271 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let CONF = Address(base58'3PELQTKtehZiFGhPFj1NdaMCFKF89AtMxxA')
4+let CONF = addressFromStringValue(getStringValue(this, "config"))
55
66 let AXLY_MAIN_ADDR = addressFromStringValue(getStringValue(CONF, "main_contract"))
77
88 let AXLY_FARMING = addressFromStringValue(getStringValue(CONF, "farming"))
99
1010 let AXLY_TOKENOMIC = addressFromStringValue(getStringValue(CONF, "tokenomic"))
1111
1212 let AXLY_TEAM_BOX = addressFromStringValue(getStringValue(CONF, "team_box"))
1313
1414 let AXLY_STAKING = addressFromStringValue(getStringValue(CONF, "staking"))
1515
1616 let SF_POOL = "SF"
1717
1818 let WX_POOL = "WX"
1919
2020 let AMOUNT_WAVES_FOR_FEE = 100000000
2121
2222 let PERCENT_TO_TEAM = 50
2323
2424 let kAxlyPool = "axlyPool"
2525
2626 let kAXLYTokenId = "axlyTokenId"
2727
2828 let kSharePool = "_poolShareId"
2929
3030 let kPool = "pool_"
3131
32+let kLendService = "lend_service_addr"
33+
3234 let kAdmin1PK = "group1_admin1_pub_key"
3335
3436 let kAdmin2PK = "group1_admin2_pub_key"
3537
3638 let kAdmin3PK = "group1_admin3_pub_key"
3739
3840 let kOperatorCallPK = "admin_call_pub_key"
3941
4042 let admin1PK = fromBase58String(valueOrErrorMessage(getString(CONF, kAdmin1PK), "Can't get admin1PK"))
4143
4244 let admin2PK = fromBase58String(valueOrErrorMessage(getString(CONF, kAdmin2PK), "Can't get admin2PK"))
4345
4446 let admin3PK = fromBase58String(valueOrErrorMessage(getString(CONF, kAdmin3PK), "Can't get admin3PK"))
4547
4648 let operatorPK = fromBase58String(valueOrErrorMessage(getString(CONF, kOperatorCallPK), "Can't get operatorPK"))
4749
4850 let axlyId = fromBase58String(valueOrErrorMessage(getString(AXLY_TOKENOMIC, kAXLYTokenId), "Can't get axly token id"))
4951
5052 let axlyPool = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(AXLY_FARMING, kAxlyPool), "Can't get axlyPool key")), "Can't get axly pool")
53+
54+let lend = addressFromStringValue(valueOrErrorMessage(getString(CONF, kLendService), "Can't get lend service addr"))
5155
5256 func unknownPoolType () = throw("Wrong pool type")
5357
5458
5559 func isSelfCall (i) = if ((i.caller == this))
5660 then unit
5761 else throw("Only contract itself can call this function")
5862
5963
6064 func listToInt (a,item) = (a :+ parseIntValue(item))
6165
6266
6367 func directSwopfiCPMM (rArgs) = {
6468 let dApp = addressFromStringValue(rArgs[1])
6569 let pmt = {
6670 let pmtP = split(rArgs[2], "|")
6771 [AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
6872 }
6973 let minToRecive = rArgs[3]
7074 invoke(dApp, "callFunction", ["exchange", [minToRecive]], pmt)
7175 }
7276
7377
7478 func directRoutingSwopfi (rArgs) = {
7579 let dApp = addressFromStringValue(rArgs[1])
7680 let pmt = {
7781 let pmtP = split(rArgs[2], "|")
7882 [AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
7983 }
8084 let args = {
8185 let eArgs = split(rArgs[3], "|")
8286 let exchangers = split(eArgs[0], ",")
8387 let exchangersType = split(eArgs[1], ",")
8488 let args1 = {
8589 let $l = split(eArgs[2], ",")
8690 let $s = size($l)
8791 let $acc0 = nil
8892 func $f0_1 ($a,$i) = if (($i >= $s))
8993 then $a
9094 else listToInt($a, $l[$i])
9195
9296 func $f0_2 ($a,$i) = if (($i >= $s))
9397 then $a
9498 else throw("List size exceeds 3")
9599
96100 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
97101 }
98102 let args2 = {
99103 let $l = split(eArgs[3], ",")
100104 let $s = size($l)
101105 let $acc0 = nil
102106 func $f1_1 ($a,$i) = if (($i >= $s))
103107 then $a
104108 else listToInt($a, $l[$i])
105109
106110 func $f1_2 ($a,$i) = if (($i >= $s))
107111 then $a
108112 else throw("List size exceeds 3")
109113
110114 $f1_2($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3)
111115 }
112116 let routingAssetsKeys = split(eArgs[4], ",")
113117 let minToRecive = parseIntValue(eArgs[5])
114118 [exchangers, exchangersType, args1, args2, routingAssetsKeys, minToRecive]
115119 }
116120 invoke(dApp, "routingTrade", args, pmt)
117121 }
118122
119123
120124 @Callable(i)
121125 func exchangeLps (lps) = valueOrElse(isSelfCall(i), {
122126 func exLP (a,lp) = {
123127 let lpB = fromBase58String(lp)
124128 let balance = assetBalance(this, lpB)
125129 let pool = valueOrErrorMessage(getString(AXLY_MAIN_ADDR, (lp + kSharePool)), ("Can't get pool of lp:" + lp))
126130 let pType = valueOrErrorMessage(getString(AXLY_MAIN_ADDR, (kPool + pool)), "Pool is not inited")
127131 let poolAddr = valueOrErrorMessage(addressFromString(pool), "unknown addr")
128132 if ((balance > 0))
129133 then {
130134 let inv = if ((pType == SF_POOL))
131135 then invoke(poolAddr, "callFunction", ["withdraw", ["0"]], [AttachedPayment(lpB, balance)])
132136 else if ((pType == WX_POOL))
133137 then invoke(poolAddr, "get", nil, [AttachedPayment(lpB, balance)])
134138 else unknownPoolType()
135139 if ((inv == inv))
136140 then (a :+ true)
137141 else throw("Strict value is not equal to itself.")
138142 }
139143 else (a :+ false)
140144 }
141145
142146 let res = {
143147 let $l = lps
144148 let $s = size($l)
145149 let $acc0 = nil
146150 func $f0_1 ($a,$i) = if (($i >= $s))
147151 then $a
148152 else exLP($a, $l[$i])
149153
150154 func $f0_2 ($a,$i) = if (($i >= $s))
151155 then $a
152156 else throw("List size exceeds 50")
153157
154158 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
155159 }
156160 $Tuple2(nil, res)
157161 })
158162
159163
160164
161165 @Callable(i)
162166 func exchangeTokens (routes) = valueOrElse(isSelfCall(i), {
163167 func exchangeToken (r,route) = {
164168 let rArgs = split(route, "__")
165169 if ((rArgs[0] == "directSwopfiCPMM"))
166170 then {
167171 let inv = directSwopfiCPMM(rArgs)
168172 if ((inv == inv))
169173 then (r :+ inv)
170174 else throw("Strict value is not equal to itself.")
171175 }
172176 else if ((rArgs[0] == "routingSwopfi"))
173177 then {
174178 let inv = directRoutingSwopfi(rArgs)
175179 if ((inv == inv))
176180 then (r :+ inv)
177181 else throw("Strict value is not equal to itself.")
178182 }
179183 else throw("Unknown route type")
180184 }
181185
182186 let res = {
183187 let $l = routes
184188 let $s = size($l)
185189 let $acc0 = nil
186190 func $f0_1 ($a,$i) = if (($i >= $s))
187191 then $a
188192 else exchangeToken($a, $l[$i])
189193
190194 func $f0_2 ($a,$i) = if (($i >= $s))
191195 then $a
192196 else throw("List size exceeds 30")
193197
194198 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
195199 }
196200 if ((res == res))
197201 then nil
198202 else throw("Strict value is not equal to itself.")
199203 })
200204
201205
202206
203207 @Callable(i)
204208 func airdropStaking () = valueOrElse(isSelfCall(i), {
205209 let wBalance = wavesBalance(this).available
206210 let bAirdrop = (wBalance - AMOUNT_WAVES_FOR_FEE)
207211 let toTeam = fraction(bAirdrop, PERCENT_TO_TEAM, 100)
208212 let toStaking = (bAirdrop - toTeam)
209213 if ((0 >= bAirdrop))
210214 then throw("No tokens to airdrop")
211215 else if ((0 >= toStaking))
212216 then throw("No tokens to airdrop")
213217 else {
214218 let inv = invoke(axlyPool, "callFunction", ["exchange", ["1"]], [AttachedPayment(unit, toStaking)])
215219 if ((inv == inv))
216220 then {
217221 let axlyBalance = assetBalance(this, axlyId)
218222 if ((axlyBalance == axlyBalance))
219223 then {
220224 let invA = invoke(AXLY_STAKING, "airdrop", nil, [AttachedPayment(axlyId, axlyBalance)])
221225 if ((invA == invA))
222226 then [ScriptTransfer(AXLY_TEAM_BOX, toTeam, unit)]
223227 else throw("Strict value is not equal to itself.")
224228 }
225229 else throw("Strict value is not equal to itself.")
226230 }
227231 else throw("Strict value is not equal to itself.")
228232 }
229233 })
230234
231235
232236 @Verifier(tx)
233237 func verify () = match tx {
234238 case inv: InvokeScriptTransaction =>
235239 let isRightFee = if ((inv.fee == 900000))
236240 then (inv.feeAssetId == unit)
237241 else false
238242 let isExLpCall = (inv.function == "exchangeLps")
239243 let isExTokensCall = (inv.function == "exchangeTokens")
240244 let isAirdropStaking = (inv.function == "airdropStaking")
245+ let isLiquidateCall = if ((inv.function == "liquidateV2"))
246+ then (inv.dApp == lend)
247+ else false
241248 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
242249 then 1
243250 else 0
244251 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin2PK))
245252 then 1
246253 else 0
247254 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin3PK))
248255 then 1
249256 else 0
250257 let adminPubKeyCallSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], operatorPK))
251258 then 1
252259 else 0
253260 let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyCallSigned) >= 1)
254261 if (if (isRightFee)
255- then if (if (isExLpCall)
262+ then if (if (if (isExLpCall)
256263 then true
257264 else isExTokensCall)
258265 then true
259- else isAirdropStaking
266+ else isAirdropStaking)
267+ then true
268+ else isLiquidateCall
260269 else false)
261270 then signedByOneAdmin
262271 else false
263272 case _ =>
264273 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
265274 then 1
266275 else 0
267276 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], admin2PK))
268277 then 1
269278 else 0
270279 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], admin3PK))
271280 then 1
272281 else 0
273282 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
274283 }
275284

github/deemru/w8io/3ef1775 
40.65 ms