tx · 4h4CU2YnmcWhhedHPXYi4kindyDoyLFmQSCzdUBHG16v 3PCobfdpn4djVBG1Z3Ubek79kKcEiWYjrDv: -0.01000000 Waves 2022.05.28 10:32 [3136734] smart account 3PCobfdpn4djVBG1Z3Ubek79kKcEiWYjrDv > SELF 0.00000000 Waves
{ "type": 13, "id": "4h4CU2YnmcWhhedHPXYi4kindyDoyLFmQSCzdUBHG16v", "fee": 1000000, "feeAssetId": null, "timestamp": 1653723120863, "version": 1, "sender": "3PCobfdpn4djVBG1Z3Ubek79kKcEiWYjrDv", "senderPublicKey": "G9EJus8EDpG2q9U4YhpiR5TpZin4VoxEhv7c8ZMqFKMi", "proofs": [ "2PLJVYLYNge3r3gXzJtDCNCfEhaJEKbdGf2scYHW6Mp2Z4PEJNG1BUmERArbspnP199VGuYv4WkQh5wDp9mqj9wa" ], "script": "base64:AAIFAAAAAAAAABMIAhIICgYICAgICAgSAwoBCBIAAAAAGQEAAAAQd3JpdGVDb25zdFN0cmluZwAAAAIAAAADa2V5AAAABXZhbHVlAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQUAAAAFdmFsdWUJAAACAAAAAQkAASwAAAACAgAAABVhbHJlYWR5IGluaXRpYWxpemVkOiAFAAAAA2tleQAAAAALY29uZmlnU3RvcmUCAAAABmNvbmZpZwAAAAANY29uZmlnQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAALY29uZmlnU3RvcmUAAAAACGFjY1N0b3JlAgAAAANhY2MAAAAAC2Fzc3VtZVN0b3JlAgAAAAZhc3N1bWUAAAAABmFjY1N0cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAACGFjY1N0b3JlAgAAAB5ub3QgaW5pdGlhbGl6ZWQgb3IgZGVhY3RpdmF0ZWQAAAAAA2FjYwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAGYWNjU3RyAAAAAAlhc3N1bWVTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAthc3N1bWVTdG9yZQIAAAAebm90IGluaXRpYWxpemVkIG9yIGRlYWN0aXZhdGVkAAAAABB1c2RuUmVzZXJ2ZVN0b3JlAgAAAAt1c2RuUmVzZXJ2ZQAAAAAQdXNkdFJlc2VydmVTdG9yZQIAAAALdXNkdFJlc2VydmUAAAAAEHVzZGNSZXNlcnZlU3RvcmUCAAAAC3VzZGNSZXNlcnZlAAAAAAt1c2RuUmVzZXJ2ZQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAQdXNkblJlc2VydmVTdG9yZQAAAAALdXNkdFJlc2VydmUJAQAAABFAZXh0ck5hdGl2ZSgx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", "chainId": 87, "height": 3136734, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func writeConstString (key,value) = if (!(isDefined(getString(this, key)))) | |
5 | + | then StringEntry(key, value) | |
6 | + | else throw(("already initialized: " + key)) | |
7 | + | ||
8 | + | ||
9 | + | let configStore = "config" | |
10 | + | ||
11 | + | let configAddress = addressFromStringValue(getStringValue(this, configStore)) | |
12 | + | ||
13 | + | let accStore = "acc" | |
14 | + | ||
15 | + | let assumeStore = "assume" | |
16 | + | ||
17 | + | let accStr = valueOrErrorMessage(getString(this, accStore), "not initialized or deactivated") | |
18 | + | ||
19 | + | let acc = addressFromStringValue(accStr) | |
20 | + | ||
21 | + | let assumeStr = valueOrErrorMessage(getString(this, assumeStore), "not initialized or deactivated") | |
22 | + | ||
23 | + | let usdnReserveStore = "usdnReserve" | |
24 | + | ||
25 | + | let usdtReserveStore = "usdtReserve" | |
26 | + | ||
27 | + | let usdcReserveStore = "usdcReserve" | |
28 | + | ||
29 | + | let usdnReserve = addressFromStringValue(getStringValue(this, usdnReserveStore)) | |
30 | + | ||
31 | + | let usdtReserve = addressFromStringValue(getStringValue(this, usdtReserveStore)) | |
32 | + | ||
33 | + | let usdcReserve = addressFromStringValue(getStringValue(this, usdcReserveStore)) | |
34 | + | ||
35 | + | let usdnStr = getStringValue(usdnReserve, "assetId") | |
36 | + | ||
37 | + | let usdtStr = getStringValue(usdtReserve, "assetId") | |
38 | + | ||
39 | + | let usdcStr = getStringValue(usdcReserve, "assetId") | |
40 | + | ||
41 | + | func asInt (value) = match value { | |
42 | + | case int: Int => | |
43 | + | int | |
44 | + | case _ => | |
45 | + | throw("1") | |
46 | + | } | |
47 | + | ||
48 | + | ||
49 | + | func asUserBalanceData (value) = match value { | |
50 | + | case x: (Int, Int, Int, Int, Int, Boolean) => | |
51 | + | x | |
52 | + | case t => | |
53 | + | throw("3") | |
54 | + | } | |
55 | + | ||
56 | + | ||
57 | + | func userBalance (rsr,user) = asUserBalanceData(invoke(rsr, "userBalance", [user], nil)) | |
58 | + | ||
59 | + | ||
60 | + | let protectedReserve = addressFromStringValue(getStringValue(configAddress, "protected_reserve")) | |
61 | + | ||
62 | + | let vd = addressFromStringValue(getStringValue(configAddress, "vires_distributor")) | |
63 | + | ||
64 | + | func uS (rsr,action,user,userChange,streamChange) = invoke(vd, "onAction", [rsr, action, user, userChange, streamChange], nil) | |
65 | + | ||
66 | + | ||
67 | + | func moveStream (rsr,action,from,string,amt) = invoke(vd, "move", [rsr, action, from, string, amt], nil) | |
68 | + | ||
69 | + | ||
70 | + | func sR (rsr) = invoke(vd, "syncHeight", [rsr], nil) | |
71 | + | ||
72 | + | ||
73 | + | @Callable(i) | |
74 | + | func initialize (ca,acc,assume,usdn,usdt,usdc) = [writeConstString(configStore, ca), writeConstString(accStore, acc), writeConstString(assumeStore, assume), writeConstString(usdnReserveStore, usdn), writeConstString(usdtReserveStore, usdt), writeConstString(usdcReserveStore, usdc)] | |
75 | + | ||
76 | + | ||
77 | + | ||
78 | + | @Callable(i) | |
79 | + | func assume (a) = if (valueOrElse(getBoolean(this, (a + "_complete")), false)) | |
80 | + | then throw("already processed") | |
81 | + | else { | |
82 | + | let checkAddr = addressFromStringValue(a) | |
83 | + | if ((checkAddr == checkAddr)) | |
84 | + | then if ((toString(i.caller) != accStr)) | |
85 | + | then throw("incorrect caller") | |
86 | + | else if (!(contains(assumeStr, a))) | |
87 | + | then throw("incorrect assume") | |
88 | + | else { | |
89 | + | let s1 = sR(toString(usdnReserve)) | |
90 | + | if ((s1 == s1)) | |
91 | + | then { | |
92 | + | let s2 = sR(toString(usdtReserve)) | |
93 | + | if ((s2 == s2)) | |
94 | + | then { | |
95 | + | let s3 = sR(toString(usdcReserve)) | |
96 | + | if ((s3 == s3)) | |
97 | + | then { | |
98 | + | let d = { | |
99 | + | let unprotect = asInt(invoke(protectedReserve, "withdrawToMain", [a, usdnStr], nil)) | |
100 | + | if ((unprotect == unprotect)) | |
101 | + | then { | |
102 | + | let supply = if ((unprotect > 0)) | |
103 | + | then { | |
104 | + | let s = invoke(usdnReserve, "depositFor", [a, true], [AttachedPayment(fromBase58String(usdnStr), unprotect)]) | |
105 | + | if ((s == s)) | |
106 | + | then { | |
107 | + | let prop = uS(toString(usdnReserve), "deposit", a, unprotect, unprotect) | |
108 | + | if ((prop == prop)) | |
109 | + | then unit | |
110 | + | else throw("Strict value is not equal to itself.") | |
111 | + | } | |
112 | + | else throw("Strict value is not equal to itself.") | |
113 | + | } | |
114 | + | else unit | |
115 | + | if ((supply == supply)) | |
116 | + | then { | |
117 | + | let usdnDeposit = userBalance(usdnReserve, a)._2 | |
118 | + | if ((usdnDeposit == usdnDeposit)) | |
119 | + | then { | |
120 | + | let transferredCollateral = asInt(invoke(usdnReserve, "transferATokensFor", [a, accStr, usdnDeposit], nil)) | |
121 | + | if ((transferredCollateral == transferredCollateral)) | |
122 | + | then { | |
123 | + | let pRw1 = moveStream(toString(usdnReserve), "deposit", a, accStr, transferredCollateral) | |
124 | + | if ((pRw1 == pRw1)) | |
125 | + | then true | |
126 | + | else throw("Strict value is not equal to itself.") | |
127 | + | } | |
128 | + | else throw("Strict value is not equal to itself.") | |
129 | + | } | |
130 | + | else throw("Strict value is not equal to itself.") | |
131 | + | } | |
132 | + | else throw("Strict value is not equal to itself.") | |
133 | + | } | |
134 | + | else throw("Strict value is not equal to itself.") | |
135 | + | } | |
136 | + | if ((d == d)) | |
137 | + | then { | |
138 | + | let b1 = { | |
139 | + | let usdcDebt = userBalance(usdcReserve, a)._5 | |
140 | + | if ((usdcDebt == usdcDebt)) | |
141 | + | then { | |
142 | + | let transferredDebt = asInt(invoke(usdcReserve, "transferDebtFor", [a, accStr, usdcDebt], nil)) | |
143 | + | if ((transferredDebt == transferredDebt)) | |
144 | + | then { | |
145 | + | let pRw2 = moveStream(toString(usdcReserve), "borrow", a, accStr, transferredDebt) | |
146 | + | if ((pRw2 == pRw2)) | |
147 | + | then true | |
148 | + | else throw("Strict value is not equal to itself.") | |
149 | + | } | |
150 | + | else throw("Strict value is not equal to itself.") | |
151 | + | } | |
152 | + | else throw("Strict value is not equal to itself.") | |
153 | + | } | |
154 | + | if ((b1 == b1)) | |
155 | + | then { | |
156 | + | let b2 = { | |
157 | + | let usdtDebt = userBalance(usdtReserve, a)._5 | |
158 | + | if ((usdtDebt == usdtDebt)) | |
159 | + | then { | |
160 | + | let transferredDebt = asInt(invoke(usdtReserve, "transferDebtFor", [a, accStr, usdtDebt], nil)) | |
161 | + | if ((transferredDebt == transferredDebt)) | |
162 | + | then { | |
163 | + | let pRw2 = moveStream(toString(usdtReserve), "borrow", a, accStr, transferredDebt) | |
164 | + | if ((pRw2 == pRw2)) | |
165 | + | then true | |
166 | + | else throw("Strict value is not equal to itself.") | |
167 | + | } | |
168 | + | else throw("Strict value is not equal to itself.") | |
169 | + | } | |
170 | + | else throw("Strict value is not equal to itself.") | |
171 | + | } | |
172 | + | if ((b2 == b2)) | |
173 | + | then $Tuple2([BooleanEntry((a + "_complete"), true)], if (if (d) | |
174 | + | then b1 | |
175 | + | else false) | |
176 | + | then b2 | |
177 | + | else false) | |
178 | + | else throw("Strict value is not equal to itself.") | |
179 | + | } | |
180 | + | else throw("Strict value is not equal to itself.") | |
181 | + | } | |
182 | + | else throw("Strict value is not equal to itself.") | |
183 | + | } | |
184 | + | else throw("Strict value is not equal to itself.") | |
185 | + | } | |
186 | + | else throw("Strict value is not equal to itself.") | |
187 | + | } | |
188 | + | else throw("Strict value is not equal to itself.") | |
189 | + | } | |
190 | + | else throw("Strict value is not equal to itself.") | |
191 | + | } | |
192 | + | ||
193 | + | ||
194 | + | ||
195 | + | @Callable(i) | |
196 | + | func deactivate () = if ((toString(i.caller) != accStr)) | |
197 | + | then throw("incorrect caller") | |
198 | + | else [DeleteEntry(accStore), DeleteEntry(assumeStore)] | |
199 | + | ||
200 | + |
github/deemru/w8io/6500d08 21.08 ms ◑