tx · BGdn1CTMD15hT3Y29evbW5xkEPDxVzjM3eA62Sct1rmy

3N3tDUvYTUkPj99XK6ahYY1seKQssSPSUxa:  -0.04000000 Waves

2022.05.21 19:04 [2061653] smart account 3N3tDUvYTUkPj99XK6ahYY1seKQssSPSUxa > SELF 0.00000000 Waves

{ "type": 13, "id": "BGdn1CTMD15hT3Y29evbW5xkEPDxVzjM3eA62Sct1rmy", "fee": 4000000, "feeAssetId": null, "timestamp": 1653149016867, "version": 2, "chainId": 84, "sender": "3N3tDUvYTUkPj99XK6ahYY1seKQssSPSUxa", "senderPublicKey": "uabndDFnsGq9PjWSXCTHbtJ6qRyJrTnAiV1p3iLLEBf", "proofs": [ "Vq3JUWnj3fSn8GMr7cEvC7Cao8Fi3p65FStS2S8xJchmAW2VyZyBZSDxhzqfrKJp2rKtGUoWQK6QZYn3hYsQgVW" ], "script": "base64:AAIFAAAAAAAAAA4IAhIECgIIARIECgIIAQAAABkAAAAAC2ZhY3RvcnNCYXNlAAAAAAAAAAPoAQAAABFhc1VzZXJCYWxhbmNlRGF0YQAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAACIoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEJvb2xlYW4pBAAAAAF4BQAAAAckbWF0Y2gwBQAAAAF4BAAAAAF0BQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAFWV4cGVjdGVkIGludDUmYm9vbGVhbgAAAAAKYWRtaW5TdG9yZQIAAAAFYWRtaW4AAAAAC2NvbmZpZ1N0b3JlAgAAAAZjb25maWcAAAAADXJlc2VydmVzU3RvcmUCAAAACHJlc2VydmVzAAAAAA1hVG9rZW5JZFN0b3JlAgAAAAhhVG9rZW5JZAAAAAAMYXNzZXRJZFN0b3JlAgAAAAdhc3NldElkAAAAAAVhZG1pbgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAKYWRtaW5TdG9yZQAAAAAGY29uZmlnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAtjb25maWdTdG9yZQAAAAALcmVzZXJ2ZXNTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAA1yZXNlcnZlc1N0b3JlAgAAABZubyByZXNlcnZlcyByZWdpc3RlcmVkAAAAAAhyZXNlcnZlcwkABLUAAAACBQAAAAtyZXNlcnZlc1N0cgIAAAABfAEAAAAQYXNzZXRJZE9mUmVzZXJ2ZQAAAAEAAAAHcmVzZXJ2ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB3Jlc2VydmUFAAAADGFzc2V0SWRTdG9yZQIAAAAVbm8gYXNzZXRJZCBpbiByZXNlcnZlAQAAABBjb2xsYXRlcmFsRmFjdG9yAAAAAQAAAAdyZXNlcnZlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGY29uZmlnCQABLAAAAAIJAQAAABBhc3NldElkT2ZSZXNlcnZlAAAAAQUAAAAHcmVzZXJ2ZQIAAAARX0NvbGxhdGVyYWxGYWN0b3ICAAAAHW5vIENvbGxhdGVyYWxGYWN0b3IgaW4gY29uZmlnAQAAABRsaXF1aWRhdGlvblRocmVzaG9sZAAAAAEAAAAHcmVzZXJ2ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABmNvbmZpZwkAASwAAAACCQEAAAAQYXNzZXRJZE9mUmVzZXJ2ZQAAAAEFAAAAB3Jlc2VydmUCAAAAFV9MaXF1aWRhdGlvblRocmVzaG9sZAIAAAAhbm8gTGlxdWlkYXRpb25UaHJlc2hvbGQgaW4gY29uZmlnAQAAABJsaXF1aWRhdGlvblBlbmFsdHkAAAABAAAAB2Fzc2V0SWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAZjb25maWcJAAEsAAAAAgUAAAAHYXNzZXRJZAIAAAATX0xpcXVpZGF0aW9uUGVuYWx0eQIAAAAfbm8gTGlxdWlkYXRpb25QZW5hbHR5IGluIGNvbmZpZwAAAAAWYWNjb3VudEhlYWx0aFRocmVzaG9sZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABmNvbmZpZwIAAAAYYWNjb3VudF9oZWFsdGhfdGhyZXNob2xkAgAAABtubyBhY2NvdW50X2hlYWx0aF90aHJlc2hvbGQAAAAAFGFjY291bnRIZWFsdGhPdmVybGFwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGY29uZmlnAgAAABZhY2NvdW50X2hlYWx0aF9vdmVybGFwAgAAABlubyBhY2NvdW50X2hlYWx0aF9vdmVybGFwAAAAAA9jb2xsYXBzZVBlbmFsdHkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAZjb25maWcCAAAAEGNvbGxhcHNlX3BlbmFsdHkCAAAAE25vIGNvbGxhcHNlX3BlbmFsdHkAAAAAC2xpcXVpZGF0b3JzCQEAAAALdmFs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YXRlcmFsRmFjdG9yAAAAAQUAAAAHcmVzZXJ2ZQQAAAACbHQJAQAAABRsaXF1aWRhdGlvblRocmVzaG9sZAAAAAEFAAAAB3Jlc2VydmUEAAAACyR0MDMwMzAzMTE4CQEAAAALdXNlckJhbGFuY2UAAAACBQAAAAdyZXNlcnZlBQAAAAR1c2VyBAAAAAV0b2tlbggFAAAACyR0MDMwMzAzMTE4AAAAAl8xBAAAAAVhc3NldAgFAAAACyR0MDMwMzAzMTE4AAAAAl8yBAAAAApkZXBvc2l0VXNkCAUAAAALJHQwMzAzMDMxMTgAAAACXzMEAAAABGRlYnQIBQAAAAskdDAzMDMwMzExOAAAAAJfNAQAAAAHZGVidFVzZAgFAAAACyR0MDMwMzAzMTE4AAAAAl81BAAAAAxhc0NvbGxhdGVyYWwIBQAAAAskdDAzMDMwMzExOAAAAAJfNgQAAAATZWZmZWN0aXZlRGVwb3NpdFVzZAMFAAAADGFzQ29sbGF0ZXJhbAUAAAAKZGVwb3NpdFVzZAAAAAAAAAAAAAQAAAAKb3ZlcmxhcFVzZAkAAZcAAAABCQAETAAAAAIFAAAAB2RlYnRVc2QJAARMAAAAAgUAAAATZWZmZWN0aXZlRGVwb3NpdFVzZAUAAAADbmlsBAAAAA1vdmVybGFwQ2hhcmdlCQEAAAAMZnJhY3Rpb25DZWlsAAAAAwUAAAAKb3ZlcmxhcFVzZAUAAAAUYWNjb3VudEhlYWx0aE92ZXJsYXAFAAAAC2ZhY3RvcnNCYXNlAwkAAGYAAAACBQAAAAdkZWJ0VXNkBQAAABNlZmZlY3RpdmVEZXBvc2l0VXNkCQAFFAAAAAIFAAAABnRvdGFsRAkAAGQAAAACCQAAZAAAAAIFAAAABnRvdGFsQgkAAGsAAAADCQAAZQAAAAIFAAAAB2RlYnRVc2QFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QFAAAAC2ZhY3RvcnNCYXNlBQAAAAJsdAUAAAANb3ZlcmxhcENoYXJnZQkABRQAAAACCQAAZAAAAAIFAAAABnRvdGFsRAkAAGsAAAADCQAAZQAAAAIFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QFAAAAB2RlYnRVc2QFAAAAAmNmBQAAAAtmYWN0b3JzQmFzZQkAAGQAAAACBQAAAAZ0b3RhbEIFAAAA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", "height": 2061653, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4XFU74NbrQpJFf5axJkXTB5kgjaGitFBsk9RBaU9Ko9h Next: AQAh3Mj5gYC5vcLENxLAbSMYkcsqM5kj3UMGJMm3kJUG Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let a = 1000
45
5-
6-@Callable(a)
7-func call () = {
8- let b = Issue("Asset", "", 1, 0, true, unit, 0)
9- let c = calculateAssetId(b)
10-[BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), b, Reissue(c, 1, false), Burn(c, 1), ScriptTransfer(a.caller, 1, c)]
6+func b (c) = {
7+ let d = c
8+ if ($isInstanceOf(d, "(Int, Int, Int, Int, Int, Boolean)"))
9+ then {
10+ let e = d
11+ e
12+ }
13+ else {
14+ let f = d
15+ throw("expected int5&boolean")
16+ }
1117 }
1218
1319
14-@Verifier(d)
15-func e () = sigVerify(d.bodyBytes, d.proofs[0], d.senderPublicKey)
20+let g = "admin"
21+
22+let h = "config"
23+
24+let i = "reserves"
25+
26+let j = "aTokenId"
27+
28+let k = "assetId"
29+
30+let l = addressFromStringValue(getStringValue(this, g))
31+
32+let m = addressFromStringValue(getStringValue(this, h))
33+
34+let n = valueOrErrorMessage(getString(this, i), "no reserves registered")
35+
36+let o = split(n, "|")
37+
38+func p (q) = valueOrErrorMessage(getString(q, k), "no assetId in reserve")
39+
40+
41+func r (q) = valueOrErrorMessage(getInteger(m, (p(q) + "_CollateralFactor")), "no CollateralFactor in config")
42+
43+
44+func s (q) = valueOrErrorMessage(getInteger(m, (p(q) + "_LiquidationThreshold")), "no LiquidationThreshold in config")
45+
46+
47+func t (u) = valueOrErrorMessage(getInteger(m, (u + "_LiquidationPenalty")), "no LiquidationPenalty in config")
48+
49+
50+let v = valueOrErrorMessage(getInteger(m, "account_health_threshold"), "no account_health_threshold")
51+
52+let w = valueOrErrorMessage(getInteger(m, "account_health_overlap"), "no account_health_overlap")
53+
54+let x = valueOrErrorMessage(getInteger(m, "collapse_penalty"), "no collapse_penalty")
55+
56+let y = valueOrElse(getString(m, "liquidators"), "")
57+
58+func z (A) = if (contains(n, A))
59+ then true
60+ else throw(("unknown reserve:" + A))
61+
62+
63+func B (q,C) = b(invoke(q, "userBalance", [C], nil))
64+
65+
66+func D (E,c) = {
67+ func F (G,A) = {
68+ let d = G
69+ if ($isInstanceOf(d, "Address"))
70+ then {
71+ let H = d
72+ H
73+ }
74+ else {
75+ let q = valueOrErrorMessage(addressFromString(A), "reserve bad address")
76+ if ((valueOrErrorMessage(getString(q, E), ("reserve has no " + E)) == c))
77+ then q
78+ else unit
79+ }
80+ }
81+
82+ let d = {
83+ let I = o
84+ let J = size(I)
85+ let K = unit
86+ func L (M,N) = if ((N >= J))
87+ then M
88+ else F(M, I[N])
89+
90+ func O (M,N) = if ((N >= J))
91+ then M
92+ else throw("List size exceeds 6")
93+
94+ O(L(L(L(L(L(L(K, 0), 1), 2), 3), 4), 5), 6)
95+ }
96+ if ($isInstanceOf(d, "Address"))
97+ then {
98+ let H = d
99+ H
100+ }
101+ else throw(("unknown " + E))
102+ }
103+
104+
105+func P (c,Q,R) = {
106+ let S = fraction(c, Q, R)
107+ let T = 3037000499
108+ let U = ((((S % T) * (R % T)) % T) == (((c % T) * (Q % T)) % T))
109+ if (U)
110+ then S
111+ else (S + 1)
112+ }
113+
114+
115+func V (C) = {
116+ func F (W,A) = {
117+ let X = W
118+ let Y = X._1
119+ let Z = X._2
120+ let q = valueOrErrorMessage(addressFromString(A), "reserve bad address")
121+ let aa = r(q)
122+ let ab = s(q)
123+ let ac = B(q, C)
124+ let ad = ac._1
125+ let ae = ac._2
126+ let af = ac._3
127+ let ag = ac._4
128+ let ah = ac._5
129+ let ai = ac._6
130+ let aj = if (ai)
131+ then af
132+ else 0
133+ let ak = min([ah, aj])
134+ let al = P(ak, w, a)
135+ if ((ah > aj))
136+ then $Tuple2(Y, ((Z + fraction((ah - aj), a, ab)) + al))
137+ else $Tuple2((Y + fraction((aj - ah), aa, a)), (Z + al))
138+ }
139+
140+ let I = o
141+ let J = size(I)
142+ let K = $Tuple2(0, 0)
143+ func L (M,N) = if ((N >= J))
144+ then M
145+ else F(M, I[N])
146+
147+ func O (M,N) = if ((N >= J))
148+ then M
149+ else throw("List size exceeds 6")
150+
151+ O(L(L(L(L(L(L(K, 0), 1), 2), 3), 4), 5), 6)
152+ }
153+
154+
155+func am (C,an) = {
156+ let ao = V(C)
157+ let ap = ao._1
158+ let aq = ao._2
159+ let ar = (((ap - aq) * a) / ap)
160+ if (if ((ap == 0))
161+ then (aq == 0)
162+ else false)
163+ then nil
164+ else if (if ((ap == 0))
165+ then (aq > 0)
166+ else false)
167+ then throw(((an + " too much: breaching liquidation threshold(bp=0, bpu=") + toString(aq)))
168+ else if ((v > ar))
169+ then throw((((((((an + " too much: breaching liquidation threshold(bp=") + toString(ap)) + ", bpu=") + toString(aq)) + ", health=") + toString(ar)) + ")"))
170+ else nil
171+ }
172+
173+
174+@Callable(as)
175+func withdraw (u,at) = {
176+ let C = toString(as.caller)
177+ let au = D(k, u)
178+ let av = invoke(au, "withdrawFor", [C, at], nil)
179+ if ((av == av))
180+ then am(C, "withdrawing")
181+ else throw("Strict value is not equal to itself.")
182+ }
183+
184+
185+
186+@Callable(as)
187+func withdraw2 (q,at) = {
188+ let aw = z(q)
189+ if ((aw == aw))
190+ then {
191+ let C = toString(as.caller)
192+ let au = addressFromStringValue(q)
193+ let av = invoke(au, "withdrawFor", [C, at], nil)
194+ if ((av == av))
195+ then am(C, "withdrawing2")
196+ else throw("Strict value is not equal to itself.")
197+ }
198+ else throw("Strict value is not equal to itself.")
199+ }
200+
16201

github/deemru/w8io/873ac7e 
26.40 ms