tx · Fj5S5vY9nTnFQVwST8XjR95nD918J1SXkcLyxSxfbWuX

3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3:  -0.01000000 Waves

2024.01.17 19:51 [4001565] smart account 3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3 > SELF 0.00000000 Waves

{ "type": 13, "id": "Fj5S5vY9nTnFQVwST8XjR95nD918J1SXkcLyxSxfbWuX", "fee": 1000000, "feeAssetId": null, "timestamp": 1705510387857, "version": 2, "chainId": 87, "sender": "3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3", "senderPublicKey": "4XuPpm7Pz97L5yDuLYiKbCSuXvtGjxCPsUBUUzmgokhP", "proofs": [ "yoNEYhNFFZfCzqafFCTPgLZBwFw1rup3HPwKcsoZTKfV2NmWgQ71WNT5y5FGtwVbtd1W5eebfwaBSy84RhiC8yG" ], "script": "base64:BgIhCAISBwoFCAgICAESCAoGCAgICAEIEgQKAggIEgQKAggICAAGU2NhbGU4AIDC1y8AB1NjYWxlMTYAgICE/qbe4REBDWdldEFzc2V0Qnl0ZXMBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEWdmVyaWZ5TGlxdWlkYXRvckFjY2VzcwEHYWRkcmVzcwkBAiE9AgkAswkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMCEXNldHVwX2xpcXVpZGF0b3JzAgAJAKUIAQUHYWRkcmVzcwUEdW5pdAATTWF4U2hhcmVUb0xpcXVpZGF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAhlzZXR1cF9tYXhTaGFyZVRvTGlxdWlkYXRlAGQAEExpcXVpZGF0aW9uRGVsYXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIWc2V0dXBfbGlxdWlkYXRpb25EZWxheQAKABBMaXF1aWRhdG9yUmV3YXJkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCFnNldHVwX2xpcXVpZGF0b3JSZXdhcmQACgAHbWFya2V0cwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzAg1zZXR1cF9tYXJrZXRzCQC5CQIJAMwIAgIjM1BIcHVRVVBWVW9SM0FZekZlSnplV0pmWUxzTFRtV3NzVkgFA25pbAIBLAQBaQEQcHJveHlMaXF1aWRhdGVWMgUGbWFya2V0C3VzZXJBZGRyZXNzDmRlYnRBc3NldElkU3RyEnN1cHBsaWVkQXNzZXRJZFN0cgZhbW91bnQDCQAAAgkAswkCBQdtYXJrZXRzBQZtYXJrZXQFBHVuaXQJAAIBAiBnaXZlbiBwb29sIGFkZHJlc3MgaXMgbm90IGEgcG9vbAQDaW52CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBm1hcmtldAILbGlxdWlkYXRlVjIJAMwIAgcJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUSc3VwcGxpZWRBc3NldElkU3RyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUOZGVidEFzc2V0SWRTdHIFBmFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQcHJveHlMaXF1aWRhdGVWMwYGbWFya2V0C3VzZXJBZGRyZXNzDmRlYnRBc3NldElkU3RyEnN1cHBsaWVkQXNzZXRJZFN0cgZhbW91bnQIcm91dGVTdHIDCQAAAgkAswkCBQdtYXJrZXRzBQZtYXJrZXQFBHVuaXQJAAIBAiRnaXZlbiBtYXJrZXQgYWRkcmVzcyBpcyBub3QgYSBtYXJrZXQDCQEBIQEJARZ2ZXJpZnlMaXF1aWRhdG9yQWNjZXNzAQgFAWkGY2FsbGVyCQACAQIkbm8gcGVybWlzc2lvbiB0byBwZXJmb3JtIGxpcXVpZGF0aW9uBA1tYXJrZXRBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQZtYXJrZXQEBXNSYXRlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ1tYXJrZXRBZGRyZXNzCQCsAgIFEnN1cHBsaWVkQXNzZXRJZFN0cgIGX3NSYXRlBAdzQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ1tYXJrZXRBZGRyZXNzCQCsAgIJAKwCAgULdXNlckFkZHJlc3MCCl9zdXBwbGllZF8FEnN1cHBsaWVkQXNzZXRJZFN0cgQOc3VwcGxpZWRBbW91bnQJAGsDBQdzQW1vdW50BQVzUmF0ZQUHU2NhbGUxNgQWbGFzdExpcUZvck1hcmtldEtleVN0cgkArAICCQCsAgICD2hpc3RvcnlfbWFya2V0XwUGbWFya2V0AhBfbGFzdExpcXVpZGF0aW9uBBVsYXN0TGlxdWlkYXRpb25LZXlTdHIJAKwCAgkArAICAg1oaXN0b3J5X3VzZXJfBQt1c2VyQWRkcmVzcwIQX2xhc3RMaXF1aWRhdGlvbgQPbGFzdExpcXVpZGF0aW9uCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWxhc3RMaXF1aWRhdGlvbktleVN0cgAAAwkAZgIFBmFtb3VudAkAawMFE01heFNoYXJlVG9MaXF1aWRhdGUFDnN1cHBsaWVkQW1vdW50AJBOCQACAQImc2hvdWxkIGxpcXVpZGF0ZSBzbWFsbGVyIHBhcnQgcGVyIHRpbWUDCQBmAgkAZAIFD2xhc3RMaXF1aWRhdGlvbgUQTGlxdWlkYXRpb25EZWxheQUGaGVpZ2h0CQACAQIUY2Fubm90IGxpcXVpZGF0ZSB5ZXQEA2ludgkA/AcEBQ1tYXJrZXRBZGRyZXNzAglsaXF1aWRhdGUJAMwIAgcJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUGYW1vdW50CQDMCAIFEnN1cHBsaWVkQXNzZXRJZFN0cgkAzAgCBQ5kZWJ0QXNzZXRJZFN0cgkAzAgCBQhyb3V0ZVN0cgUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYEEGxpcXVpZGF0b3JSZXdhcmQJAGsDBQZhbW91bnQFEExpcXVpZGF0b3JSZXdhcmQAkE4EC3N0YXRzS2V5U3RyCQCsAgIJAKwCAgkArAICAgdyZXdhcmRfCQClCAEIBQFpBmNhbGxlcgIBXwUOZGVidEFzc2V0SWRTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIFC3N0YXRzS2V5U3RyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtzdGF0c0tleVN0cgAABRBsaXF1aWRhdG9yUmV3YXJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0TGlxdWlkYXRpb25LZXlTdHIFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWbGFzdExpcUZvck1hcmtldEtleVN0cgUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMcGF5b3V0UmV3YXJkAgphZGRyZXNzU3RyCmFzc2V0SWRTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgIjM1BNY01pTUVzNnc1Nk5SR2Fja3NYdEZHNXpTN2RvRTlmcEwJAAIBAhhubyBhY2Nlc3MgdG8gdGhpcyBtZXRob2QEC3N0YXRzS2V5U3RyCQCsAgIJAKwCAgkArAICAgdyZXdhcmRfBQphZGRyZXNzU3RyAgFfBQphc3NldElkU3RyBA9yZXdhcmRBdmFpbGFibGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULc3RhdHNLZXlTdHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQphZGRyZXNzU3RyBQ9yZXdhcmRBdmFpbGFibGUJAQ1nZXRBc3NldEJ5dGVzAQUKYXNzZXRJZFN0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgULc3RhdHNLZXlTdHIAAAUDbmlsAWkBDHVwZGF0ZVN0cmluZwIDdmFsA2tleQMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgIjM1BNY01pTUVzNnc1Nk5SR2Fja3NYdEZHNXpTN2RvRTlmcEwJAQIhPQIJAKUIAQgFAWkGY2FsbGVyAiMzUEhiZHBhS3p6OEVpQW5nR0hhRnUyaFZ1TkNkc0M2N3FoMwcJAAIBAhhubyBhY2Nlc3MgdG8gdGhpcyBtZXRob2QJAMwIAgkBC1N0cmluZ0VudHJ5AgUDdmFsBQNrZXkFA25pbABW6XjX", "height": 4001565, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 75e8D9FqYhE1snaFhbDjaxgcW2XsLB2cuBawHZxcoR6J Next: 3ZkMXXWsPvok293PSwTBXH6J4TDJY6NvuAPoHXrPJ294 Diff:
OldNewDifferences
4040 then throw("no permission to perform liquidation")
4141 else {
4242 let s = addressFromStringValue(l)
43- let t = {
44- let u = invoke(s, "calculateTokenRates", [false], nil)
45- if ($isInstanceOf(u, "String"))
46- then u
47- else throw(($getType(u) + " couldn't be cast to String"))
48- }
49- if ((t == t))
50- then {
51- let v = split(t, ",")
52- let w = split(getStringValue(s, "setup_tokens"), ",")
53- let x = valueOrErrorMessage(indexOf(w, o), "suppliedAsset not found in market composition")
54- let y = parseIntValue(split(v[x], "|")[1])
55- let z = getIntegerValue(s, ((m + "_supplied_") + o))
56- let A = fraction(z, y, b)
57- let B = (("history_market_" + l) + "_lastLiquidation")
58- let C = (("history_user_" + m) + "_lastLiquidation")
59- let D = valueOrElse(getInteger(this, C), 0)
60- if ((p > fraction(g, A, 10000)))
61- then throw("should a liquidate smaller part per time")
62- else if (((D + h) > height))
63- then throw("cannot liquidate yet")
64- else {
65- let q = invoke(s, "liquidate", [false, m, p, o, n, r], nil)
66- if ((q == q))
67- then {
68- let E = fraction(p, i, 10000)
69- let F = ((("reward_" + toString(k.caller)) + "_") + n)
70-[IntegerEntry(F, (valueOrElse(getInteger(this, F), 0) + E)), IntegerEntry(C, height), IntegerEntry(B, height)]
71- }
72- else throw("Strict value is not equal to itself.")
43+ let t = getIntegerValue(s, (o + "_sRate"))
44+ let u = getIntegerValue(s, ((m + "_supplied_") + o))
45+ let v = fraction(u, t, b)
46+ let w = (("history_market_" + l) + "_lastLiquidation")
47+ let x = (("history_user_" + m) + "_lastLiquidation")
48+ let y = valueOrElse(getInteger(this, x), 0)
49+ if ((p > fraction(g, v, 10000)))
50+ then throw("should liquidate smaller part per time")
51+ else if (((y + h) > height))
52+ then throw("cannot liquidate yet")
53+ else {
54+ let q = invoke(s, "liquidate", [false, m, p, o, n, r], nil)
55+ if ((q == q))
56+ then {
57+ let z = fraction(p, i, 10000)
58+ let A = ((("reward_" + toString(k.caller)) + "_") + n)
59+[IntegerEntry(A, (valueOrElse(getInteger(this, A), 0) + z)), IntegerEntry(x, height), IntegerEntry(w, height)]
7360 }
74- }
75- else throw("Strict value is not equal to itself.")
61+ else throw("Strict value is not equal to itself.")
62+ }
7663 }
7764
7865
7966
8067 @Callable(k)
81-func payoutReward (G,d) = if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
68+func payoutReward (B,d) = if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
8269 then throw("no access to this method")
8370 else {
84- let F = ((("reward_" + G) + "_") + d)
85- let H = valueOrElse(getInteger(this, F), 0)
86-[ScriptTransfer(addressFromStringValue(G), H, c(d)), IntegerEntry(F, 0)]
71+ let A = ((("reward_" + B) + "_") + d)
72+ let C = valueOrElse(getInteger(this, A), 0)
73+[ScriptTransfer(addressFromStringValue(B), C, c(d)), IntegerEntry(A, 0)]
8774 }
8875
8976
9077
9178 @Callable(k)
92-func updateString (I,J) = if (if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
79+func updateString (D,E) = if (if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
9380 then (toString(k.caller) != "3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3")
9481 else false)
9582 then throw("no access to this method")
96- else [StringEntry(I, J)]
83+ else [StringEntry(D, E)]
9784
9885
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = 10000000000000000
77
88 func c (d) = if ((d == "WAVES"))
99 then unit
1010 else fromBase58String(d)
1111
1212
1313 func e (f) = (indexOf(valueOrElse(getString(this, "setup_liquidators"), ""), toString(f)) != unit)
1414
1515
1616 let g = valueOrElse(getInteger(this, "setup_maxShareToLiquidate"), 100)
1717
1818 let h = valueOrElse(getInteger(this, "setup_liquidationDelay"), 10)
1919
2020 let i = valueOrElse(getInteger(this, "setup_liquidatorReward"), 10)
2121
2222 let j = valueOrElse(getString(this, "setup_markets"), makeString(["3PHpuQUPVUoR3AYzFeJzeWJfYLsLTmWssVH"], ","))
2323
2424 @Callable(k)
2525 func proxyLiquidateV2 (l,m,n,o,p) = if ((indexOf(j, l) == unit))
2626 then throw("given pool address is not a pool")
2727 else {
2828 let q = invoke(addressFromStringValue(l), "liquidateV2", [false, m, o], [AttachedPayment(c(n), p)])
2929 if ((q == q))
3030 then nil
3131 else throw("Strict value is not equal to itself.")
3232 }
3333
3434
3535
3636 @Callable(k)
3737 func proxyLiquidateV3 (l,m,n,o,p,r) = if ((indexOf(j, l) == unit))
3838 then throw("given market address is not a market")
3939 else if (!(e(k.caller)))
4040 then throw("no permission to perform liquidation")
4141 else {
4242 let s = addressFromStringValue(l)
43- let t = {
44- let u = invoke(s, "calculateTokenRates", [false], nil)
45- if ($isInstanceOf(u, "String"))
46- then u
47- else throw(($getType(u) + " couldn't be cast to String"))
48- }
49- if ((t == t))
50- then {
51- let v = split(t, ",")
52- let w = split(getStringValue(s, "setup_tokens"), ",")
53- let x = valueOrErrorMessage(indexOf(w, o), "suppliedAsset not found in market composition")
54- let y = parseIntValue(split(v[x], "|")[1])
55- let z = getIntegerValue(s, ((m + "_supplied_") + o))
56- let A = fraction(z, y, b)
57- let B = (("history_market_" + l) + "_lastLiquidation")
58- let C = (("history_user_" + m) + "_lastLiquidation")
59- let D = valueOrElse(getInteger(this, C), 0)
60- if ((p > fraction(g, A, 10000)))
61- then throw("should a liquidate smaller part per time")
62- else if (((D + h) > height))
63- then throw("cannot liquidate yet")
64- else {
65- let q = invoke(s, "liquidate", [false, m, p, o, n, r], nil)
66- if ((q == q))
67- then {
68- let E = fraction(p, i, 10000)
69- let F = ((("reward_" + toString(k.caller)) + "_") + n)
70-[IntegerEntry(F, (valueOrElse(getInteger(this, F), 0) + E)), IntegerEntry(C, height), IntegerEntry(B, height)]
71- }
72- else throw("Strict value is not equal to itself.")
43+ let t = getIntegerValue(s, (o + "_sRate"))
44+ let u = getIntegerValue(s, ((m + "_supplied_") + o))
45+ let v = fraction(u, t, b)
46+ let w = (("history_market_" + l) + "_lastLiquidation")
47+ let x = (("history_user_" + m) + "_lastLiquidation")
48+ let y = valueOrElse(getInteger(this, x), 0)
49+ if ((p > fraction(g, v, 10000)))
50+ then throw("should liquidate smaller part per time")
51+ else if (((y + h) > height))
52+ then throw("cannot liquidate yet")
53+ else {
54+ let q = invoke(s, "liquidate", [false, m, p, o, n, r], nil)
55+ if ((q == q))
56+ then {
57+ let z = fraction(p, i, 10000)
58+ let A = ((("reward_" + toString(k.caller)) + "_") + n)
59+[IntegerEntry(A, (valueOrElse(getInteger(this, A), 0) + z)), IntegerEntry(x, height), IntegerEntry(w, height)]
7360 }
74- }
75- else throw("Strict value is not equal to itself.")
61+ else throw("Strict value is not equal to itself.")
62+ }
7663 }
7764
7865
7966
8067 @Callable(k)
81-func payoutReward (G,d) = if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
68+func payoutReward (B,d) = if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
8269 then throw("no access to this method")
8370 else {
84- let F = ((("reward_" + G) + "_") + d)
85- let H = valueOrElse(getInteger(this, F), 0)
86-[ScriptTransfer(addressFromStringValue(G), H, c(d)), IntegerEntry(F, 0)]
71+ let A = ((("reward_" + B) + "_") + d)
72+ let C = valueOrElse(getInteger(this, A), 0)
73+[ScriptTransfer(addressFromStringValue(B), C, c(d)), IntegerEntry(A, 0)]
8774 }
8875
8976
9077
9178 @Callable(k)
92-func updateString (I,J) = if (if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
79+func updateString (D,E) = if (if ((toString(k.caller) != "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"))
9380 then (toString(k.caller) != "3PHbdpaKzz8EiAngGHaFu2hVuNCdsC67qh3")
9481 else false)
9582 then throw("no access to this method")
96- else [StringEntry(I, J)]
83+ else [StringEntry(D, E)]
9784
9885

github/deemru/w8io/873ac7e 
41.03 ms