tx · BXe4xkbsyqYZcukriWez3gfhvtJdyY4iHxkDNMthG8fe

3MvGMtmdY1eSW4iY922zj5bx8hBfyP1qgHo:  -0.04000000 Waves

2021.09.05 21:55 [1690134] smart account 3MvGMtmdY1eSW4iY922zj5bx8hBfyP1qgHo > SELF 0.00000000 Waves

{ "type": 13, "id": "BXe4xkbsyqYZcukriWez3gfhvtJdyY4iHxkDNMthG8fe", "fee": 4000000, "feeAssetId": null, "timestamp": 1630868204251, "version": 2, "chainId": 84, "sender": "3MvGMtmdY1eSW4iY922zj5bx8hBfyP1qgHo", "senderPublicKey": "CD4N2SBeZVBUwmtsqwfmQ3ZKnBP3AxpZCvJ5QkHytUed", "proofs": [ "51jsp3K9im5EdMcgAoJrQyEh1ezQuimp8ybrBFg1KuTE9d9U7g8sV3EPzYmrKuLqKASQwBWSwqgyWmedVE1Uv4bq" ], "script": "base64:AAIFAAAAAAAAADoIAhIECgIIGBIDCgEIEgMKAQgSBAoCCAQSAwoBCBIDCgEIEgUKAwgIARIDCgEIEgUKAwgIARIDCgEIAAAADAAAAAAGY29uZmlnCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAAZjb25maWcCAAAAAAAAAAAFYWRtaW4JAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABmNvbmZpZwIAAAAFYWRtaW4CAAAAAAAAAAAFcG9vbHMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAABXBvb2xzAgAAAAABAAAAB2lzQWRtaW4AAAABAAAADWNhbGxlckFkZHJlc3MDCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABWFkbWluBgcBAAAACWNoZWNrUG9vbAAAAAEAAAAHcG9vbEFkZAMJAQAAAAhjb250YWlucwAAAAIFAAAABXBvb2xzBQAAAAdwb29sQWRkBgcBAAAAC3dyaXRlU3RyaW5nAAAAAgAAAANrZXkAAAALc3RyaW5nVmFsdWUJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQUAAAALc3RyaW5nVmFsdWUBAAAADHdyaXRlSW50ZWdlcgAAAAIAAAADa2V5AAAADGludGVnZXJWYWx1ZQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAA2tleQUAAAAMaW50ZWdlclZhbHVlAQAAABJjaGVja1Bvb2xMaXF1aWRpdHkAAAACAAAAC3Bvb2xBZGRyZXNzAAAABmFtb3VudAQAAAALdG90YWxTdXBwbHkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAC3Bvb2xBZGRyZXNzAgAAAAt0b3RhbFN1cHBseQQAAAALdG90YWxCb3Jyb3cJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAC3Bvb2xBZGRyZXNzAgAAAAt0b3RhbEJvcnJvdwQAAAASYXZhaWxhYmxlTGlxdWlkaXR5CQAAZQAAAAIFAAAAC3RvdGFsU3VwcGx5BQAAAAt0b3RhbEJvcnJvdwMJAABnAAAAAgUAAAASYXZhaWxhYmxlTGlxdWlkaXR5BQAAAAZhbW91bnQGBwEAAAASZ2V0SGVhbHRoUGFyYW1ldGVyAAAABgAAAAR1c2VyAAAAC3Bvb2xBZGRyZXNzAAAADW5ld0RlYnRBbW91bnQAAAAJbmV3RGVidElkAAAAEGNvbGxhdGVyYWxBbW91bnQAAAAMY29sbGF0ZXJhbElkBAAAAAZyZXN1bHQJAAP8AAAABAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAALcG9vbEFkZHJlc3MCAAAAFmdldFVzZXJIZWFsdGhQYXJhbWV0ZXIJAARMAAAAAgUAAAAEdXNlcgkABEwAAAACBQAAABBjb2xsYXRlcmFsQW1vdW50CQAETAAAAAIFAAAADGNvbGxhdGVyYWxJZAkABEwAAAACBQAAAA1uZXdEZWJ0QW1vdW50CQAETAAAAAIFAAAACW5ld0RlYnRJZAUAAAADbmlsBQAAAANuaWwEAAAAByRtYXRjaDAFAAAABnJlc3VsdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKKEludCwgSW50KQQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAkAAAIAAAABAgAAACRSZXR1cm4gdmFsdWUgaGFzIHRoZSB3cm9uZyBkYXRhIHR5cGUBAAAAEGNhbGNIZWFsdGhGYWN0b3IAAAACAAAADmJvcnJvd0NhcGFjaXR5AAAAEmJvcnJvd0NhcGFjaXR5VXNlZAkAAGsAAAADCQAAZQAAAAIFAAAADmJvcnJvd0NhcGFjaXR5BQAAABJib3Jyb3dDYXBhY2l0eVVzZWQAAAAAAAAAA+gFAAAADmJvcnJvd0NhcGFjaXR5AQAAABNjYWxjQm9ycm93Q0JvcnJvd0NVAAAABQAAAAR1c2VyAAAADW5ld0RlYnRBbW91bnQAAAAJbmV3RGVidElkAAAAEGNvbGxhdGVyYWxBbW91bnQAAAAMY29sbGF0ZXJhbElkBAAAAAhwb29sTGlz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", "height": 1690134, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3j4sC8PjvcAqGKV9Znf6DEYrnNUiqTKC1sHnkfizoPcN Next: 8SePcoWGcguP1VHso6rjpGWaHtxSzKRdU1PN3vxGjMiX Diff:
OldNewDifferences
9797
9898
9999 @Callable(V)
100-func repayTo (n) = if (f(n))
100+func setup (W,c) = if (if (!(isDefined(getString(this, "config"))))
101+ then !(isDefined(getString(this, "pools")))
102+ else false)
103+ then [h("config", W), h("pools", makeString(c, ";"))]
104+ else throw("Admin and config address already definied!")
105+
106+
107+
108+@Callable(V)
109+func addPool (n) = if (d(V.caller))
101110 then {
102- let W = getStringValue(addressFromStringValue(n), "assetId")
103- if ((fromBase58String(W) == V.payments[0].assetId))
111+ let F = split(c, ";")
112+ if ((containsElement(F, n) == false))
113+ then {
114+ let X = (F :+ n)
115+[h("pools", makeString(X, ";"))]
116+ }
117+ else throw("Pool already exists!")
118+ }
119+ else throw("Address does not match with admin address!")
120+
121+
122+
123+@Callable(V)
124+func updateConfig (W) = if (d(V.caller))
125+ then [h("config", W)]
126+ else throw("Address does not match with admin address!")
127+
128+
129+
130+@Callable(V)
131+func depositAt (n,Y) = if (f(n))
132+ then if ((size(V.payments) > 0))
133+ then {
134+ let t = toBase58String(V.caller.bytes)
135+ let Z = invoke(addressFromStringValue(n), "deposit", [t, Y], V.payments)
136+ if ((Z == Z))
137+ then {
138+ let aa = getStringValue(addressFromStringValue(n), "dTokenId")
139+ let z = Z
140+ if ($isInstanceOf(z, "Int"))
141+ then {
142+ let A = z
143+[ScriptTransfer(V.caller, A, fromBase58String(aa))]
144+ }
145+ else if ($isInstanceOf(z, "String"))
146+ then {
147+ let A = z
148+ nil
149+ }
150+ else throw("Incorrect invoke result!")
151+ }
152+ else throw("Strict value is not equal to itself.")
153+ }
154+ else throw("No payment attached!")
155+ else throw("Pool address not found!")
156+
157+
158+
159+@Callable(V)
160+func withdrawFrom (n) = if (f(n))
161+ then {
162+ let ab = getStringValue(addressFromStringValue(n), "dTokenId")
163+ if ((fromBase58String(ab) == V.payments[0].assetId))
104164 then if ((size(V.payments) > 0))
105165 then {
106166 let t = toBase58String(V.caller.bytes)
107- let o = invoke(addressFromStringValue(n), "repay", [t], V.payments)
108- if ((o == o))
167+ let Z = invoke(addressFromStringValue(n), "withdraw", [t], V.payments)
168+ if ((Z == Z))
109169 then {
110- let X = getStringValue(addressFromStringValue(n), "assetId")
111- let z = o
170+ let aa = getStringValue(addressFromStringValue(n), "assetId")
171+ let z = Z
112172 if ($isInstanceOf(z, "Int"))
113173 then {
114174 let A = z
115- if ((X == "WAVES"))
175+ if ((aa == "WAVES"))
116176 then [ScriptTransfer(V.caller, A, unit)]
117- else [ScriptTransfer(V.caller, A, fromBase58String(X))]
177+ else [ScriptTransfer(V.caller, A, fromBase58String(aa))]
118178 }
119179 else if ($isInstanceOf(z, "String"))
120180 then {
133193
134194
135195 @Callable(V)
136-func borrowFrom (n,X,o) = if (f(n))
196+func repayTo (n) = if (f(n))
137197 then {
138- let W = getStringValue(addressFromStringValue(n), "assetId")
139- if ((W == X))
198+ let ac = getStringValue(addressFromStringValue(n), "assetId")
199+ if ((fromBase58String(ac) == V.payments[0].assetId))
200+ then if ((size(V.payments) > 0))
201+ then {
202+ let t = toBase58String(V.caller.bytes)
203+ let o = invoke(addressFromStringValue(n), "repay", [t], V.payments)
204+ if ((o == o))
205+ then {
206+ let ad = getStringValue(addressFromStringValue(n), "assetId")
207+ let z = o
208+ if ($isInstanceOf(z, "Int"))
209+ then {
210+ let A = z
211+ if ((ad == "WAVES"))
212+ then [ScriptTransfer(V.caller, A, unit)]
213+ else [ScriptTransfer(V.caller, A, fromBase58String(ad))]
214+ }
215+ else if ($isInstanceOf(z, "String"))
216+ then {
217+ let A = z
218+ nil
219+ }
220+ else throw("Incorrect invoke result!")
221+ }
222+ else throw("Strict value is not equal to itself.")
223+ }
224+ else throw("No payment attached!")
225+ else throw("AssetIds does not match")
226+ }
227+ else throw("Pool address not found!")
228+
229+
230+
231+@Callable(V)
232+func borrowFrom (n,ad,o) = if (f(n))
233+ then {
234+ let ac = getStringValue(addressFromStringValue(n), "assetId")
235+ if ((ac == ad))
140236 then if (m(n, o))
141237 then {
142238 let t = toBase58String(V.caller.bytes)
143- if (S(t, o, X, 0, ""))
239+ if (S(t, o, ad, 0, ""))
144240 then {
145- let Y = invoke(addressFromStringValue(n), "borrow", [t, o], nil)
146- if ((Y == Y))
241+ let Z = invoke(addressFromStringValue(n), "borrow", [t, o], nil)
242+ if ((Z == Z))
147243 then {
148- let z = Y
244+ let z = Z
149245 if ($isInstanceOf(z, "Int"))
150246 then {
151247 let A = z
152- if ((W == "WAVES"))
248+ if ((ac == "WAVES"))
153249 then [ScriptTransfer(V.caller, A, unit)]
154- else [ScriptTransfer(V.caller, A, fromBase58String(W))]
250+ else [ScriptTransfer(V.caller, A, fromBase58String(ac))]
155251 }
156252 else if ($isInstanceOf(z, "String"))
157253 then {
172268
173269
174270 @Callable(V)
175-func setup (Z,c) = if (if (!(isDefined(getString(this, "config"))))
176- then !(isDefined(getString(this, "pools")))
177- else false)
178- then [h("config", Z), h("pools", makeString(c, ";"))]
179- else throw("Admin and config address already definied!")
180-
181-
182-
183-@Callable(V)
184-func addPool (n) = if (d(V.caller))
185- then {
186- let F = split(c, ";")
187- if ((containsElement(F, n) == false))
188- then {
189- let aa = (F :+ n)
190-[h("pools", makeString(aa, ";"))]
191- }
192- else throw("Pool already exists!")
193- }
194- else throw("Address does not match with admin address!")
195-
196-
197-
198-@Callable(V)
199-func updateConfig (Z) = if (d(V.caller))
200- then [h("config", Z)]
201- else throw("Address does not match with admin address!")
202-
203-
204-
205-@Callable(V)
206-func depositAt (n,ab) = if (f(n))
207- then if ((size(V.payments) > 0))
208- then {
209- let t = toBase58String(V.caller.bytes)
210- let Y = invoke(addressFromStringValue(n), "deposit", [t, ab], V.payments)
211- if ((Y == Y))
212- then {
213- let ac = getStringValue(addressFromStringValue(n), "dTokenId")
214- let z = Y
215- if ($isInstanceOf(z, "Int"))
216- then {
217- let A = z
218-[ScriptTransfer(V.caller, A, fromBase58String(ac))]
219- }
220- else if ($isInstanceOf(z, "String"))
221- then {
222- let A = z
223- nil
224- }
225- else throw("Incorrect invoke result!")
226- }
227- else throw("Strict value is not equal to itself.")
228- }
229- else throw("No payment attached!")
230- else throw("Pool address not found!")
231-
232-
233-
234-@Callable(V)
235-func withdrawFrom (n) = if (f(n))
236- then {
237- let ad = getStringValue(addressFromStringValue(n), "dTokenId")
238- if ((fromBase58String(ad) == V.payments[0].assetId))
239- then if ((size(V.payments) > 0))
240- then {
241- let t = toBase58String(V.caller.bytes)
242- let Y = invoke(addressFromStringValue(n), "withdraw", [t], V.payments)
243- if ((Y == Y))
244- then {
245- let ac = getStringValue(addressFromStringValue(n), "assetId")
246- let z = Y
247- if ($isInstanceOf(z, "Int"))
248- then {
249- let A = z
250- if ((ac == "WAVES"))
251- then [ScriptTransfer(V.caller, A, unit)]
252- else [ScriptTransfer(V.caller, A, fromBase58String(ac))]
253- }
254- else if ($isInstanceOf(z, "String"))
255- then {
256- let A = z
257- nil
258- }
259- else throw("Incorrect invoke result!")
260- }
261- else throw("Strict value is not equal to itself.")
262- }
263- else throw("No payment attached!")
264- else throw("AssetIds does not match")
265- }
266- else throw("Pool address not found!")
267-
268-
269-
270-@Callable(V)
271271 func lockAsCollateralAt (n) = if (f(n))
272272 then {
273- let ad = getStringValue(addressFromStringValue(n), "dTokenId")
274- if ((fromBase58String(ad) == V.payments[0].assetId))
273+ let ab = getStringValue(addressFromStringValue(n), "dTokenId")
274+ if ((fromBase58String(ab) == V.payments[0].assetId))
275275 then if ((size(V.payments) > 0))
276276 then {
277277 let t = toBase58String(V.caller.bytes)
296296
297297
298298 @Callable(V)
299-func deleteData (af) = [DeleteEntry(af)]
299+func redeemCollateralFrom (n,af,o) = if (f(n))
300+ then {
301+ let ag = getStringValue(addressFromStringValue(n), "dTokenId")
302+ if ((ag == af))
303+ then {
304+ let t = toBase58String(V.caller.bytes)
305+ if (S(t, 0, "", o, af))
306+ then {
307+ let Z = invoke(addressFromStringValue(n), "redeemCollateral", [t, o], nil)
308+ if ((Z == Z))
309+ then {
310+ let aa = getStringValue(addressFromStringValue(n), "dTokenId")
311+ let z = Z
312+ if ($isInstanceOf(z, "Int"))
313+ then {
314+ let A = z
315+[ScriptTransfer(V.caller, A, fromBase58String(aa))]
316+ }
317+ else if ($isInstanceOf(z, "String"))
318+ then {
319+ let A = z
320+ nil
321+ }
322+ else throw("Incorrect invoke result!")
323+ }
324+ else throw("Strict value is not equal to itself.")
325+ }
326+ else throw("Borrow exceeds user health!")
327+ }
328+ else throw("AssetIds does not match")
329+ }
330+ else throw("Pool address not found!")
331+
332+
333+
334+@Callable(V)
335+func deleteData (ah) = [DeleteEntry(ah)]
300336
301337
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = valueOrElse(getStringValue(this, "config"), "")
55
66 let b = valueOrElse(getStringValue(addressFromStringValue(a), "admin"), "")
77
88 let c = valueOrElse(getStringValue(this, "pools"), "")
99
1010 func d (e) = if ((e == addressFromStringValue(b)))
1111 then true
1212 else false
1313
1414
1515 func f (g) = if (contains(c, g))
1616 then true
1717 else false
1818
1919
2020 func h (i,j) = StringEntry(i, j)
2121
2222
2323 func k (i,l) = IntegerEntry(i, l)
2424
2525
2626 func m (n,o) = {
2727 let p = getIntegerValue(addressFromStringValue(n), "totalSupply")
2828 let q = getIntegerValue(addressFromStringValue(n), "totalBorrow")
2929 let r = (p - q)
3030 if ((r >= o))
3131 then true
3232 else false
3333 }
3434
3535
3636 func s (t,n,u,v,w,x) = {
3737 let y = invoke(addressFromStringValue(n), "getUserHealthParameter", [t, w, x, u, v], nil)
3838 let z = y
3939 if ($isInstanceOf(z, "(Int, Int)"))
4040 then {
4141 let A = z
4242 A
4343 }
4444 else throw("Return value has the wrong data type")
4545 }
4646
4747
4848 func B (C,D) = fraction((C - D), 1000, C)
4949
5050
5151 func E (t,u,v,w,x) = {
5252 let F = split(c, ";")
5353 let G = size(F)
5454 func H (I,J) = {
5555 let K = s(t, J, u, v, w, x)
5656 let z = K
5757 if ($isInstanceOf(z, "(Int, Int)"))
5858 then {
5959 let A = z
6060 $Tuple2((I._1 + K._1), (I._2 + K._1))
6161 }
6262 else {
6363 let L = z
6464 throw("Test")
6565 }
6666 }
6767
6868 let M = F
6969 let N = size(M)
7070 let O = $Tuple2(0, 0)
7171 if ((N == 0))
7272 then O
7373 else {
7474 let P = H(O, M[0])
7575 if ((N == 1))
7676 then P
7777 else {
7878 let Q = H(P, M[1])
7979 if ((N == 2))
8080 then Q
8181 else {
8282 let R = H(Q, M[2])
8383 throw("List size exceed 2")
8484 }
8585 }
8686 }
8787 }
8888
8989
9090 func S (t,u,v,w,x) = {
9191 let T = E(t, u, v, w, x)
9292 let U = B(T._1, T._2)
9393 if ((U >= 0))
9494 then true
9595 else false
9696 }
9797
9898
9999 @Callable(V)
100-func repayTo (n) = if (f(n))
100+func setup (W,c) = if (if (!(isDefined(getString(this, "config"))))
101+ then !(isDefined(getString(this, "pools")))
102+ else false)
103+ then [h("config", W), h("pools", makeString(c, ";"))]
104+ else throw("Admin and config address already definied!")
105+
106+
107+
108+@Callable(V)
109+func addPool (n) = if (d(V.caller))
101110 then {
102- let W = getStringValue(addressFromStringValue(n), "assetId")
103- if ((fromBase58String(W) == V.payments[0].assetId))
111+ let F = split(c, ";")
112+ if ((containsElement(F, n) == false))
113+ then {
114+ let X = (F :+ n)
115+[h("pools", makeString(X, ";"))]
116+ }
117+ else throw("Pool already exists!")
118+ }
119+ else throw("Address does not match with admin address!")
120+
121+
122+
123+@Callable(V)
124+func updateConfig (W) = if (d(V.caller))
125+ then [h("config", W)]
126+ else throw("Address does not match with admin address!")
127+
128+
129+
130+@Callable(V)
131+func depositAt (n,Y) = if (f(n))
132+ then if ((size(V.payments) > 0))
133+ then {
134+ let t = toBase58String(V.caller.bytes)
135+ let Z = invoke(addressFromStringValue(n), "deposit", [t, Y], V.payments)
136+ if ((Z == Z))
137+ then {
138+ let aa = getStringValue(addressFromStringValue(n), "dTokenId")
139+ let z = Z
140+ if ($isInstanceOf(z, "Int"))
141+ then {
142+ let A = z
143+[ScriptTransfer(V.caller, A, fromBase58String(aa))]
144+ }
145+ else if ($isInstanceOf(z, "String"))
146+ then {
147+ let A = z
148+ nil
149+ }
150+ else throw("Incorrect invoke result!")
151+ }
152+ else throw("Strict value is not equal to itself.")
153+ }
154+ else throw("No payment attached!")
155+ else throw("Pool address not found!")
156+
157+
158+
159+@Callable(V)
160+func withdrawFrom (n) = if (f(n))
161+ then {
162+ let ab = getStringValue(addressFromStringValue(n), "dTokenId")
163+ if ((fromBase58String(ab) == V.payments[0].assetId))
104164 then if ((size(V.payments) > 0))
105165 then {
106166 let t = toBase58String(V.caller.bytes)
107- let o = invoke(addressFromStringValue(n), "repay", [t], V.payments)
108- if ((o == o))
167+ let Z = invoke(addressFromStringValue(n), "withdraw", [t], V.payments)
168+ if ((Z == Z))
109169 then {
110- let X = getStringValue(addressFromStringValue(n), "assetId")
111- let z = o
170+ let aa = getStringValue(addressFromStringValue(n), "assetId")
171+ let z = Z
112172 if ($isInstanceOf(z, "Int"))
113173 then {
114174 let A = z
115- if ((X == "WAVES"))
175+ if ((aa == "WAVES"))
116176 then [ScriptTransfer(V.caller, A, unit)]
117- else [ScriptTransfer(V.caller, A, fromBase58String(X))]
177+ else [ScriptTransfer(V.caller, A, fromBase58String(aa))]
118178 }
119179 else if ($isInstanceOf(z, "String"))
120180 then {
121181 let A = z
122182 nil
123183 }
124184 else throw("Incorrect invoke result!")
125185 }
126186 else throw("Strict value is not equal to itself.")
127187 }
128188 else throw("No payment attached!")
129189 else throw("AssetIds does not match")
130190 }
131191 else throw("Pool address not found!")
132192
133193
134194
135195 @Callable(V)
136-func borrowFrom (n,X,o) = if (f(n))
196+func repayTo (n) = if (f(n))
137197 then {
138- let W = getStringValue(addressFromStringValue(n), "assetId")
139- if ((W == X))
198+ let ac = getStringValue(addressFromStringValue(n), "assetId")
199+ if ((fromBase58String(ac) == V.payments[0].assetId))
200+ then if ((size(V.payments) > 0))
201+ then {
202+ let t = toBase58String(V.caller.bytes)
203+ let o = invoke(addressFromStringValue(n), "repay", [t], V.payments)
204+ if ((o == o))
205+ then {
206+ let ad = getStringValue(addressFromStringValue(n), "assetId")
207+ let z = o
208+ if ($isInstanceOf(z, "Int"))
209+ then {
210+ let A = z
211+ if ((ad == "WAVES"))
212+ then [ScriptTransfer(V.caller, A, unit)]
213+ else [ScriptTransfer(V.caller, A, fromBase58String(ad))]
214+ }
215+ else if ($isInstanceOf(z, "String"))
216+ then {
217+ let A = z
218+ nil
219+ }
220+ else throw("Incorrect invoke result!")
221+ }
222+ else throw("Strict value is not equal to itself.")
223+ }
224+ else throw("No payment attached!")
225+ else throw("AssetIds does not match")
226+ }
227+ else throw("Pool address not found!")
228+
229+
230+
231+@Callable(V)
232+func borrowFrom (n,ad,o) = if (f(n))
233+ then {
234+ let ac = getStringValue(addressFromStringValue(n), "assetId")
235+ if ((ac == ad))
140236 then if (m(n, o))
141237 then {
142238 let t = toBase58String(V.caller.bytes)
143- if (S(t, o, X, 0, ""))
239+ if (S(t, o, ad, 0, ""))
144240 then {
145- let Y = invoke(addressFromStringValue(n), "borrow", [t, o], nil)
146- if ((Y == Y))
241+ let Z = invoke(addressFromStringValue(n), "borrow", [t, o], nil)
242+ if ((Z == Z))
147243 then {
148- let z = Y
244+ let z = Z
149245 if ($isInstanceOf(z, "Int"))
150246 then {
151247 let A = z
152- if ((W == "WAVES"))
248+ if ((ac == "WAVES"))
153249 then [ScriptTransfer(V.caller, A, unit)]
154- else [ScriptTransfer(V.caller, A, fromBase58String(W))]
250+ else [ScriptTransfer(V.caller, A, fromBase58String(ac))]
155251 }
156252 else if ($isInstanceOf(z, "String"))
157253 then {
158254 let A = z
159255 nil
160256 }
161257 else throw("Incorrect invoke result!")
162258 }
163259 else throw("Strict value is not equal to itself.")
164260 }
165261 else throw("Borrow exceeds user health!")
166262 }
167263 else throw("Pool liquidity is not sufficient!")
168264 else throw("AssetIds does not match")
169265 }
170266 else throw("Pool address not found!")
171267
172268
173269
174270 @Callable(V)
175-func setup (Z,c) = if (if (!(isDefined(getString(this, "config"))))
176- then !(isDefined(getString(this, "pools")))
177- else false)
178- then [h("config", Z), h("pools", makeString(c, ";"))]
179- else throw("Admin and config address already definied!")
180-
181-
182-
183-@Callable(V)
184-func addPool (n) = if (d(V.caller))
185- then {
186- let F = split(c, ";")
187- if ((containsElement(F, n) == false))
188- then {
189- let aa = (F :+ n)
190-[h("pools", makeString(aa, ";"))]
191- }
192- else throw("Pool already exists!")
193- }
194- else throw("Address does not match with admin address!")
195-
196-
197-
198-@Callable(V)
199-func updateConfig (Z) = if (d(V.caller))
200- then [h("config", Z)]
201- else throw("Address does not match with admin address!")
202-
203-
204-
205-@Callable(V)
206-func depositAt (n,ab) = if (f(n))
207- then if ((size(V.payments) > 0))
208- then {
209- let t = toBase58String(V.caller.bytes)
210- let Y = invoke(addressFromStringValue(n), "deposit", [t, ab], V.payments)
211- if ((Y == Y))
212- then {
213- let ac = getStringValue(addressFromStringValue(n), "dTokenId")
214- let z = Y
215- if ($isInstanceOf(z, "Int"))
216- then {
217- let A = z
218-[ScriptTransfer(V.caller, A, fromBase58String(ac))]
219- }
220- else if ($isInstanceOf(z, "String"))
221- then {
222- let A = z
223- nil
224- }
225- else throw("Incorrect invoke result!")
226- }
227- else throw("Strict value is not equal to itself.")
228- }
229- else throw("No payment attached!")
230- else throw("Pool address not found!")
231-
232-
233-
234-@Callable(V)
235-func withdrawFrom (n) = if (f(n))
236- then {
237- let ad = getStringValue(addressFromStringValue(n), "dTokenId")
238- if ((fromBase58String(ad) == V.payments[0].assetId))
239- then if ((size(V.payments) > 0))
240- then {
241- let t = toBase58String(V.caller.bytes)
242- let Y = invoke(addressFromStringValue(n), "withdraw", [t], V.payments)
243- if ((Y == Y))
244- then {
245- let ac = getStringValue(addressFromStringValue(n), "assetId")
246- let z = Y
247- if ($isInstanceOf(z, "Int"))
248- then {
249- let A = z
250- if ((ac == "WAVES"))
251- then [ScriptTransfer(V.caller, A, unit)]
252- else [ScriptTransfer(V.caller, A, fromBase58String(ac))]
253- }
254- else if ($isInstanceOf(z, "String"))
255- then {
256- let A = z
257- nil
258- }
259- else throw("Incorrect invoke result!")
260- }
261- else throw("Strict value is not equal to itself.")
262- }
263- else throw("No payment attached!")
264- else throw("AssetIds does not match")
265- }
266- else throw("Pool address not found!")
267-
268-
269-
270-@Callable(V)
271271 func lockAsCollateralAt (n) = if (f(n))
272272 then {
273- let ad = getStringValue(addressFromStringValue(n), "dTokenId")
274- if ((fromBase58String(ad) == V.payments[0].assetId))
273+ let ab = getStringValue(addressFromStringValue(n), "dTokenId")
274+ if ((fromBase58String(ab) == V.payments[0].assetId))
275275 then if ((size(V.payments) > 0))
276276 then {
277277 let t = toBase58String(V.caller.bytes)
278278 let ae = invoke(addressFromStringValue(n), "lockAsCollateral", [t], V.payments)
279279 if ((ae == ae))
280280 then {
281281 let z = ae
282282 if ($isInstanceOf(z, "String"))
283283 then {
284284 let A = z
285285 nil
286286 }
287287 else throw("Incorrect invoke result!")
288288 }
289289 else throw("Strict value is not equal to itself.")
290290 }
291291 else throw("No payment attached!")
292292 else throw("AssetIds does not match")
293293 }
294294 else throw("Pool address not found!")
295295
296296
297297
298298 @Callable(V)
299-func deleteData (af) = [DeleteEntry(af)]
299+func redeemCollateralFrom (n,af,o) = if (f(n))
300+ then {
301+ let ag = getStringValue(addressFromStringValue(n), "dTokenId")
302+ if ((ag == af))
303+ then {
304+ let t = toBase58String(V.caller.bytes)
305+ if (S(t, 0, "", o, af))
306+ then {
307+ let Z = invoke(addressFromStringValue(n), "redeemCollateral", [t, o], nil)
308+ if ((Z == Z))
309+ then {
310+ let aa = getStringValue(addressFromStringValue(n), "dTokenId")
311+ let z = Z
312+ if ($isInstanceOf(z, "Int"))
313+ then {
314+ let A = z
315+[ScriptTransfer(V.caller, A, fromBase58String(aa))]
316+ }
317+ else if ($isInstanceOf(z, "String"))
318+ then {
319+ let A = z
320+ nil
321+ }
322+ else throw("Incorrect invoke result!")
323+ }
324+ else throw("Strict value is not equal to itself.")
325+ }
326+ else throw("Borrow exceeds user health!")
327+ }
328+ else throw("AssetIds does not match")
329+ }
330+ else throw("Pool address not found!")
331+
332+
333+
334+@Callable(V)
335+func deleteData (ah) = [DeleteEntry(ah)]
300336
301337

github/deemru/w8io/026f985 
57.90 ms