tx · BGcNYRBLDrNgkr35x5d8MQLG6mNZ2thHpP1BikN6NqHu

3PKqU33eTC4t8PiPJ12ZHrBUBfy3fTxiwWg:  -0.01000000 Waves

2022.05.06 16:44 [3105387] smart account 3PKqU33eTC4t8PiPJ12ZHrBUBfy3fTxiwWg > SELF 0.00000000 Waves

{ "type": 13, "id": "BGcNYRBLDrNgkr35x5d8MQLG6mNZ2thHpP1BikN6NqHu", "fee": 1000000, "feeAssetId": null, "timestamp": 1651844709692, "version": 1, "sender": "3PKqU33eTC4t8PiPJ12ZHrBUBfy3fTxiwWg", "senderPublicKey": "HxBHKkNtapZU6ZYPQsaHuRbUUyz5qJCjYkfBRAbr7hca", "proofs": [ "2iEFw9Wbw6cjcXhjJp29qABZNSPZg7abSxBvNzNcPMTof4NkzjyEY2K4d6mviVXxkG9LVhP5CNAxBSkE3b9LRqdv" ], "script": "base64:AAIFAAAAAAAAABUIAhIGCgQICAgIEgkKBwgICAgIAQEAAAAGAQAAAA1hc1VzZXJCYWxhbmNlAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAIihJbnQsIEludCwgSW50LCBJbnQsIEludCwgQm9vbGVhbikEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgEAAAAAXQFAAAAByRtYXRjaDAJAAACAAAAAQIAAAANZXhwZWN0ZWQgaW50NQEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQAAAAl0b0Fzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAC3VzZXJCYWxhbmNlAAAAAgAAAAdyZXNlcnZlAAAABHVzZXIJAQAAAA1hc1VzZXJCYWxhbmNlAAAAAQkAA/wAAAAEBQAAAAdyZXNlcnZlAgAAAAt1c2VyQmFsYW5jZQkABEwAAAACBQAAAAR1c2VyBQAAAANuaWwFAAAAA25pbAEAAAAKZ2V0QmFsYW5jZQAAAAIAAAAOYWRkcmVzc09yQWxpYXMAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMICQAD7wAAAAEFAAAADmFkZHJlc3NPckFsaWFzAAAACWF2YWlsYWJsZQkAA/AAAAACBQAAAA5hZGRyZXNzT3JBbGlhcwkAAlkAAAABBQAAAAdhc3NldElkAQAAAAdwYXltZW50AAAAAgAAAAdhc3NldElkAAAABmFtb3VudAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAACXRvQXNzZXRJZAAAAAEFAAAAB2Fzc2V0SWQFAAAABmFtb3VudAUAAAADbmlsAAAAAgAAAAFpAQAAAAppbml0aWFsaXplAAAABAAAAARtYWluAAAABW1haW4yAAAACWV4Y2hhbmdlcgAAAAdpbnZva2VyAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAF29ubHkgc2VsZiBjYW4gY29uZmlndXJlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAABG1haW4FAAAABG1haW4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAFbWFpbjIFAAAABW1haW4yCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAACWV4Y2hhbmdlcgUAAAAJZXhjaGFuZ2VyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB2ludm9rZXIFAAAAB2ludm9rZXIFAAAAA25pbAAAAAFpAQAAAAlsaXF1aWRhdGUAAAAHAAAAC2JvcnJvd0Fzc2V0AAAADWJvcnJvd1Jlc2VydmUAAAAPY29sbGF0ZXJhbEFzc2V0AAAAEWNvbGxhdGVyYWxSZXNlcnZlAAAACGJvcnJvd2VyAAAAD2xpcXVpZGF0ZUFtb3VudAAAAAtleGNoYWdlUmF0ZQMJAQAAAAEhAAAAAQkBAAAACGNvbnRhaW5zAAAAAgkBAAAABXZhbHVlAAAAAQkABB0AAAACBQAAAAR0aGlzAgAAAAdpbnZva2VyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAABZvbmx5IGludm9rZXIocykgY2FuIGRvBAAAAAttYWluQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM1BBWnY5dGdLMVBYN2RLUjdiNGtjaHE1cWRwVVMzRzVzWVQEAAAADG1haW4yQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM1BKNmlSNVgxUFQyclpjTm1icUJ5S3VoN2s4bXRqNXdWR3cEAAAACWV4Y2hhbmdlcgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAABXZhbHVlAAAAAQkABB0AAAACBQAAAAR0aGlzAgAAAAlleGNoYW5nZXIEAAAAG2NvbGxhdGVyYWxBbW91bnRUb0xpcXVpZGF0ZQkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAAAxtYWluMkFkZHJlc3MCAAAADHRyYW5zZmVyRGVidAkABEwAAAACBQAAAA1ib3Jyb3dSZXNlcnZlCQAETAAAAAIFAAAAEWNvbGxhdGVyYWxSZXNlcnZlCQAETAAAAAIFAAAACGJvcnJvd2VyCQAETAAAAAIFAAAAD2xpcXVpZGF0ZUFtb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAG2NvbGxhdGVyYWxBbW91bnRUb0xpcXVpZGF0ZQUAAAAbY29sbGF0ZXJhbEFtb3VudFRvTGlxdWlkYXRlBAAAAA53aXRoZHJhd0FjdGlvbgkAA/wAAAAEBQAAAAttYWluQWRkcmVzcwIAAAAJd2l0aGRyYXcyCQAETAAAAAIFAAAAEWNvbGxhdGVyYWxSZXNlcnZlCQAETAAAAAIFAAAAG2NvbGxhdGVyYWxBbW91bnRUb0xpcXVpZGF0ZQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADndpdGhkcmF3QWN0aW9uBQAAAA53aXRoZHJhd0FjdGlvbgQAAAATYm9ycm93QmFsYW5jZUJlZm9yZQkBAAAACmdldEJhbGFuY2UAAAACBQAAAAR0aGlzBQAAAAtib3Jyb3dBc3NldAMJAAAAAAAAAgUAAAATYm9ycm93QmFsYW5jZUJlZm9yZQUAAAATYm9ycm93QmFsYW5jZUJlZm9yZQQAAAAOZXhjaGFuZ2VBY3Rpb24JAAP8AAAABAUAAAAJZXhjaGFuZ2VyAgAAAAhleGNoYW5nZQkABEwAAAACBQAAAAtib3Jyb3dBc3NldAkABEwAAAACBQAAAAtleGNoYWdlUmF0ZQUAAAADbmlsCQEAAAAHcGF5bWVudAAAAAIFAAAAD2NvbGxhdGVyYWxBc3NldAUAAAAbY29sbGF0ZXJhbEFtb3VudFRvTGlxdWlkYXRlAwkAAAAAAAACBQAAAA5leGNoYW5nZUFjdGlvbgUAAAAOZXhjaGFuZ2VBY3Rpb24EAAAAEmJvcnJvd0JhbGFuY2VBZnRlcgkBAAAACmdldEJhbGFuY2UAAAACBQAAAAR0aGlzBQAAAAtib3Jyb3dBc3NldAMJAAAAAAAAAgUAAAASYm9ycm93QmFsYW5jZUFmdGVyBQAAABJib3Jyb3dCYWxhbmNlQWZ0ZXIEAAAADWV4Y2hhbmdlZERlYnQJAABlAAAAAgUAAAASYm9ycm93QmFsYW5jZUFmdGVyBQAAABNib3Jyb3dCYWxhbmNlQmVmb3JlAwkAAAAAAAACBQAAAA1leGNoYW5nZWREZWJ0BQAAAA1leGNoYW5nZWREZWJ0BAAAAAtyZXBheUFjdGlvbgkAA/wAAAAEBQAAAAttYWluQWRkcmVzcwIAAAAFcmVwYXkJAARMAAAAAgUAAAANYm9ycm93UmVzZXJ2ZQUAAAADbmlsCQEAAAAHcGF5bWVudAAAAAIFAAAAC2JvcnJvd0Fzc2V0BQAAAA1leGNoYW5nZWREZWJ0AwkAAAAAAAACBQAAAAtyZXBheUFjdGlvbgUAAAALcmVwYXlBY3Rpb24EAAAABGRlYnQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAA1ib3Jyb3dSZXNlcnZlCQABLAAAAAIJAAQlAAAAAQUAAAAEdGhpcwIAAAAFX2RlYnQCAAAAE2Vycm9yOiBtdXN0IHByZXNlbnQDCQAAAAAAAAIFAAAABGRlYnQFAAAABGRlYnQEAAAAB2RldGFpbHMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASbGlxdWlkYXRlQW1vdW50ID0gCQABpAAAAAEFAAAAD2xpcXVpZGF0ZUFtb3VudAIAAAABIAUAAAALYm9ycm93QXNzZXQCAAAAHiwgY29sbGF0ZXJhbEFtb3VudFdpdGhkcmF3biA9IAkAAaQAAAABBQAAABtjb2xsYXRlcmFsQW1vdW50VG9MaXF1aWRhdGUCAAAAASAFAAAAD2NvbGxhdGVyYWxBc3NldAIAAAAMLCBzd2FwcGVkID0gCQABpAAAAAEFAAAADWV4Y2hhbmdlZERlYnQCAAAAASAFAAAAC2JvcnJvd0Fzc2V0AgAAAA4sIG9wZW4gZGVidCA9IAkAAaQAAAABBQAAAARkZWJ0AwkBAAAAAiE9AAAAAgUAAAAEZGVidAAAAAAAAAAAAAkAAAIAAAABCQABLAAAAAICAAAAN2xpcXVpZGF0aW9uIGZhaWxlZDogb3V0c3RhbmRpbmcgZGVidCBvY2N1cnJlZC4gZGV0YWlsczoFAAAAB2RldGFpbHMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAADxK0Ys=", "chainId": 87, "height": 3105387, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3vkLG2syn4uU6sXYSrXwC72LTqLnLMbwdy3dBsRCb4uo Next: none Diff:
OldNewDifferences
3434
3535
3636 @Callable(i)
37-func initialize (main,exchanger,invoker) = if ((i.caller != this))
37+func initialize (main,main2,exchanger,invoker) = if ((i.caller != this))
3838 then throw("only self can configure")
39- else [StringEntry("main", main), StringEntry("exchanger", exchanger), StringEntry("invoker", invoker)]
39+ else [StringEntry("main", main), StringEntry("main2", main2), StringEntry("exchanger", exchanger), StringEntry("invoker", invoker)]
4040
4141
4242
4444 func liquidate (borrowAsset,borrowReserve,collateralAsset,collateralReserve,borrower,liquidateAmount,exchageRate) = if (!(contains(value(getString(this, "invoker")), toString(i.caller))))
4545 then throw("only invoker(s) can do")
4646 else {
47- let mainAddress = addressFromStringValue(value(getString(this, "main")))
47+ let mainAddress = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT")
48+ let main2Address = addressFromStringValue("3PJ6iR5X1PT2rZcNmbqByKuh7k8mtj5wVGw")
4849 let exchanger = addressFromStringValue(value(getString(this, "exchanger")))
49- let collateralAmountToLiquidate = asInt(invoke(mainAddress, "transferDebt", [borrowReserve, collateralReserve, borrower, liquidateAmount], nil))
50+ let collateralAmountToLiquidate = asInt(invoke(main2Address, "transferDebt", [borrowReserve, collateralReserve, borrower, liquidateAmount], nil))
5051 if ((collateralAmountToLiquidate == collateralAmountToLiquidate))
5152 then {
5253 let withdrawAction = invoke(mainAddress, "withdraw2", [collateralReserve, collateralAmountToLiquidate], nil)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func asUserBalance (value) = match value {
55 case x: (Int, Int, Int, Int, Int, Boolean) =>
66 x
77 case t =>
88 throw("expected int5")
99 }
1010
1111
1212 func asInt (value) = match value {
1313 case int: Int =>
1414 int
1515 case _ =>
1616 throw("wrong type, expected: Int")
1717 }
1818
1919
2020 func toAssetId (assetId) = if ((assetId == "WAVES"))
2121 then unit
2222 else fromBase58String(assetId)
2323
2424
2525 func userBalance (reserve,user) = asUserBalance(invoke(reserve, "userBalance", [user], nil))
2626
2727
2828 func getBalance (addressOrAlias,assetId) = if ((assetId == "WAVES"))
2929 then wavesBalance(addressOrAlias).available
3030 else assetBalance(addressOrAlias, fromBase58String(assetId))
3131
3232
3333 func payment (assetId,amount) = [AttachedPayment(toAssetId(assetId), amount)]
3434
3535
3636 @Callable(i)
37-func initialize (main,exchanger,invoker) = if ((i.caller != this))
37+func initialize (main,main2,exchanger,invoker) = if ((i.caller != this))
3838 then throw("only self can configure")
39- else [StringEntry("main", main), StringEntry("exchanger", exchanger), StringEntry("invoker", invoker)]
39+ else [StringEntry("main", main), StringEntry("main2", main2), StringEntry("exchanger", exchanger), StringEntry("invoker", invoker)]
4040
4141
4242
4343 @Callable(i)
4444 func liquidate (borrowAsset,borrowReserve,collateralAsset,collateralReserve,borrower,liquidateAmount,exchageRate) = if (!(contains(value(getString(this, "invoker")), toString(i.caller))))
4545 then throw("only invoker(s) can do")
4646 else {
47- let mainAddress = addressFromStringValue(value(getString(this, "main")))
47+ let mainAddress = addressFromStringValue("3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT")
48+ let main2Address = addressFromStringValue("3PJ6iR5X1PT2rZcNmbqByKuh7k8mtj5wVGw")
4849 let exchanger = addressFromStringValue(value(getString(this, "exchanger")))
49- let collateralAmountToLiquidate = asInt(invoke(mainAddress, "transferDebt", [borrowReserve, collateralReserve, borrower, liquidateAmount], nil))
50+ let collateralAmountToLiquidate = asInt(invoke(main2Address, "transferDebt", [borrowReserve, collateralReserve, borrower, liquidateAmount], nil))
5051 if ((collateralAmountToLiquidate == collateralAmountToLiquidate))
5152 then {
5253 let withdrawAction = invoke(mainAddress, "withdraw2", [collateralReserve, collateralAmountToLiquidate], nil)
5354 if ((withdrawAction == withdrawAction))
5455 then {
5556 let borrowBalanceBefore = getBalance(this, borrowAsset)
5657 if ((borrowBalanceBefore == borrowBalanceBefore))
5758 then {
5859 let exchangeAction = invoke(exchanger, "exchange", [borrowAsset, exchageRate], payment(collateralAsset, collateralAmountToLiquidate))
5960 if ((exchangeAction == exchangeAction))
6061 then {
6162 let borrowBalanceAfter = getBalance(this, borrowAsset)
6263 if ((borrowBalanceAfter == borrowBalanceAfter))
6364 then {
6465 let exchangedDebt = (borrowBalanceAfter - borrowBalanceBefore)
6566 if ((exchangedDebt == exchangedDebt))
6667 then {
6768 let repayAction = invoke(mainAddress, "repay", [borrowReserve], payment(borrowAsset, exchangedDebt))
6869 if ((repayAction == repayAction))
6970 then {
7071 let debt = valueOrErrorMessage(getInteger(addressFromStringValue(borrowReserve), (toString(this) + "_debt")), "error: must present")
7172 if ((debt == debt))
7273 then {
7374 let details = ((((((((((((("liquidateAmount = " + toString(liquidateAmount)) + " ") + borrowAsset) + ", collateralAmountWithdrawn = ") + toString(collateralAmountToLiquidate)) + " ") + collateralAsset) + ", swapped = ") + toString(exchangedDebt)) + " ") + borrowAsset) + ", open debt = ") + toString(debt))
7475 if ((debt != 0))
7576 then throw(("liquidation failed: outstanding debt occurred. details:" + details))
7677 else nil
7778 }
7879 else throw("Strict value is not equal to itself.")
7980 }
8081 else throw("Strict value is not equal to itself.")
8182 }
8283 else throw("Strict value is not equal to itself.")
8384 }
8485 else throw("Strict value is not equal to itself.")
8586 }
8687 else throw("Strict value is not equal to itself.")
8788 }
8889 else throw("Strict value is not equal to itself.")
8990 }
9091 else throw("Strict value is not equal to itself.")
9192 }
9293 else throw("Strict value is not equal to itself.")
9394 }
9495
9596

github/deemru/w8io/3ef1775 
44.65 ms