tx · BU1yNdY1gFZvEJ553c3WTzMffxLMUwfRkpCqN7AvwnXg

3Mtxa8ryD7D8A53ojJzSLYGRT7rqRSQDLpi:  -0.09000000 Waves

2022.12.08 05:18 [2350762] smart account 3Mtxa8ryD7D8A53ojJzSLYGRT7rqRSQDLpi > SELF 0.00000000 Waves

{ "type": 13, "id": "BU1yNdY1gFZvEJ553c3WTzMffxLMUwfRkpCqN7AvwnXg", "fee": 9000000, "feeAssetId": null, "timestamp": 1670465978384, "version": 2, "chainId": 84, "sender": "3Mtxa8ryD7D8A53ojJzSLYGRT7rqRSQDLpi", "senderPublicKey": "8dZGNUPEkYozhaceyCp6kFhYrXFUNehq16ugLSPoyaH2", "proofs": [ "2zP65BuEEy9aiywo7Fti1d1qgwXWY8Aw75494BCqWRxdPTh4SHKT89PqaUDG8u4xAFpfZaHbC6TUZuECh9SKc49M" ], "script": "base64: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", "height": 2350762, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 24tB2chDboAo5dHPZ28wCG1UqsNfFhK9WBnUmrkiTjm1 Next: none Diff:
OldNewDifferences
196196
197197
198198 @Callable(i)
199-func init (_minerAddress) = {
200- let check = mustAdmin(i)
201- if ((check == check))
202- then if (initialized())
203- then throw("Already initialized")
204- else {
205- let stkWaves = Issue("stkWaves", "", 0, 8, true, unit, 0)
206- let stkWavesAssetId = calculateAssetId(stkWaves)
199+func init (_minerAddress) = if (initialized())
200+ then throw("Already initialized")
201+ else {
202+ let stkWaves = Issue("stkWaves", "", 0, 8, true, unit, 0)
203+ let stkWavesAssetId = calculateAssetId(stkWaves)
207204 [BooleanEntry(k_initialized, true), StringEntry(k_stkWavesAsset, toBase58String(stkWavesAssetId)), StringEntry(k_minerAddress, _minerAddress), IntegerEntry(k_lastRate, PRECISION), stkWaves]
208- }
209- else throw("Strict value is not equal to itself.")
210- }
205+ }
211206
212207
213208
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let PRECISION = 1000000000000000000
55
66 let DURATION = ((60 * 60) * 24)
77
88 let DECIMALS = 100000000
99
1010 let k_lastCompoundTime = "k_lastCompoundTime"
1111
1212 let k_periodFinish = "k_periodFinish"
1313
1414 let k_lastRate = "k_lastRate"
1515
1616 let k_growthRate = "k_growthRate"
1717
1818 let k_balance = "k_balance"
1919
2020 let k_leaseId = "k_leaseId"
2121
2222 let k_initialized = "k_initialized"
2323
2424 let k_adminPublicKey = "k_adminPublicKey"
2525
2626 let k_adminAddress = "k_adminAddress"
2727
2828 let k_minerAddress = "k_minerAddress"
2929
3030 let k_stkWavesAsset = "k_stkWavesAssetId"
3131
3232 func divd (_x,_y) = fraction(_x, DECIMALS, _y, HALFEVEN)
3333
3434
3535 func muld (_x,_y) = fraction(_x, _y, DECIMALS, HALFEVEN)
3636
3737
3838 func divp (_x,_y) = fraction(_x, PRECISION, _y, HALFEVEN)
3939
4040
4141 func mulp (_x,_y) = fraction(_x, _y, PRECISION, HALFEVEN)
4242
4343
4444 func abs (_x) = if ((_x > 0))
4545 then _x
4646 else -(_x)
4747
4848
4949 func minv (_x,_y) = if ((_x > _y))
5050 then _y
5151 else _x
5252
5353
5454 func toCompositeKey (_key,_address) = ((_key + "_") + _address)
5555
5656
5757 func adminAddress () = addressFromString(getStringValue(this, k_adminAddress))
5858
5959
6060 func adminPublicKey () = fromBase58String(getStringValue(this, k_adminPublicKey))
6161
6262
6363 func minerAddress () = valueOrErrorMessage(addressFromString(getStringValue(this, k_minerAddress)), "Invalid miner address is not set")
6464
6565
6666 func stkWavesAsset () = fromBase58String(getStringValue(this, k_stkWavesAsset))
6767
6868
6969 func initialized () = valueOrElse(getBoolean(this, k_initialized), false)
7070
7171
7272 func int (k) = valueOrErrorMessage(getInteger(this, k), ("No value for " + k))
7373
7474
7575 func int0 (k) = valueOrElse(getInteger(this, k), 0)
7676
7777
7878 func lastCompoundTime () = int0(k_lastCompoundTime)
7979
8080
8181 func growthRate () = int0(k_growthRate)
8282
8383
8484 func balance () = int0(k_balance)
8585
8686
8787 func lastRate () = int(k_lastRate)
8888
8989
9090 func periodFinish () = int0(k_periodFinish)
9191
9292
9393 func adminPublicKeyOrUnit () = match getString(this, k_adminPublicKey) {
9494 case s: String =>
9595 fromBase58String(s)
9696 case _: Unit =>
9797 unit
9898 case _ =>
9999 throw("Match error")
100100 }
101101
102102
103103 func mustAdmin (i) = {
104104 let pd = throw("permission denied")
105105 match adminPublicKeyOrUnit() {
106106 case pk: ByteVector =>
107107 if ((i.callerPublicKey == pk))
108108 then true
109109 else pd
110110 case _: Unit =>
111111 if ((i.caller == this))
112112 then true
113113 else pd
114114 case _ =>
115115 throw("Match error")
116116 }
117117 }
118118
119119
120120 func currentTimestampSec () = (lastBlock.timestamp / 1000)
121121
122122
123123 func dt () = if ((periodFinish() > currentTimestampSec()))
124124 then (currentTimestampSec() - lastCompoundTime())
125125 else DURATION
126126
127127
128128 func cancelLease () = match getBinary(k_leaseId) {
129129 case id: ByteVector =>
130130 [LeaseCancel(id), DeleteEntry(k_leaseId)]
131131 case _: Unit =>
132132 nil
133133 case _ =>
134134 throw("Match error")
135135 }
136136
137137
138138 func updateBalance (_amount) = [IntegerEntry(k_balance, _amount)]
139139
140140
141141 func updateTime (_lastCompoundTime,_periodFinish) = [IntegerEntry(k_lastCompoundTime, _lastCompoundTime), IntegerEntry(k_periodFinish, _periodFinish)]
142142
143143
144144 func updateRate (_rate,_growthRate) = [IntegerEntry(k_lastRate, _rate), IntegerEntry(k_growthRate, _growthRate)]
145145
146146
147147 func updateLease (_amount) = if ((_amount > 0))
148148 then {
149149 let newLease = Lease(minerAddress(), _amount)
150150 let newLeaseId = calculateLeaseId(newLease)
151151 [newLease, BinaryEntry(k_leaseId, newLeaseId)]
152152 }
153153 else nil
154154
155155
156156 func lease (_amount) = if ((_amount == 0))
157157 then nil
158158 else {
159159 let newAmount = (balance() + _amount)
160160 ((cancelLease() ++ updateLease(newAmount)) ++ updateBalance(newAmount))
161161 }
162162
163163
164164 func issueStkWaves (_amount) = [Reissue(stkWavesAsset(), _amount, true)]
165165
166166
167167 func burnStkWaves (_amount) = [Burn(stkWavesAsset(), _amount)]
168168
169169
170170 func sendStkWaves (_recipient,_amount) = [ScriptTransfer(_recipient, _amount, stkWavesAsset())]
171171
172172
173173 func sendWaves (_recipient,_amount) = [ScriptTransfer(_recipient, _amount, unit)]
174174
175175
176176 func stkWavesQuantity () = match assetInfo(stkWavesAsset()) {
177177 case asset: Asset =>
178178 asset.quantity
179179 case _ =>
180180 throw("Can't find asset")
181181 }
182182
183183
184184 func getExcessWaves () = wavesBalance(minerAddress()).regular
185185
186186
187187 func withdraw () = {
188188 let result = invoke(minerAddress(), "withdraw", nil, nil)
189189 if ((result == result))
190190 then result
191191 else throw("Strict value is not equal to itself.")
192192 }
193193
194194
195195 func currentRate () = (lastRate() + (growthRate() * dt()))
196196
197197
198198 @Callable(i)
199-func init (_minerAddress) = {
200- let check = mustAdmin(i)
201- if ((check == check))
202- then if (initialized())
203- then throw("Already initialized")
204- else {
205- let stkWaves = Issue("stkWaves", "", 0, 8, true, unit, 0)
206- let stkWavesAssetId = calculateAssetId(stkWaves)
199+func init (_minerAddress) = if (initialized())
200+ then throw("Already initialized")
201+ else {
202+ let stkWaves = Issue("stkWaves", "", 0, 8, true, unit, 0)
203+ let stkWavesAssetId = calculateAssetId(stkWaves)
207204 [BooleanEntry(k_initialized, true), StringEntry(k_stkWavesAsset, toBase58String(stkWavesAssetId)), StringEntry(k_minerAddress, _minerAddress), IntegerEntry(k_lastRate, PRECISION), stkWaves]
208- }
209- else throw("Strict value is not equal to itself.")
210- }
205+ }
211206
212207
213208
214209 @Callable(i)
215210 func compound () = if ((size(i.payments) != 0))
216211 then throw("No payments allowed")
217212 else {
218213 let excessWaves = getExcessWaves()
219214 if ((excessWaves == excessWaves))
220215 then if (((1 * DECIMALS) > excessWaves))
221216 then nil
222217 else {
223218 let doWithdraw = withdraw()
224219 if ((doWithdraw == doWithdraw))
225220 then {
226221 let newRate = currentRate()
227222 let timestamp = currentTimestampSec()
228223 let newGrowthRate = if ((timestamp > periodFinish()))
229224 then (divp(excessWaves, DECIMALS) / DURATION)
230225 else {
231226 let remainingTime = (periodFinish() - timestamp)
232227 let leftover = (growthRate() * remainingTime)
233228 (divp((excessWaves + leftover), DECIMALS) / DURATION)
234229 }
235230 ((lease(excessWaves) ++ updateRate(newRate, newGrowthRate)) ++ updateTime(timestamp, (timestamp + DURATION)))
236231 }
237232 else throw("Strict value is not equal to itself.")
238233 }
239234 else throw("Strict value is not equal to itself.")
240235 }
241236
242237
243238
244239 @Callable(i)
245240 func stake () = {
246241 let doCompound = invoke(this, "compound", nil, nil)
247242 if ((doCompound == doCompound))
248243 then {
249244 let rate = currentRate()
250245 let payment = i.payments[0]
251246 if ((payment.assetId != unit))
252247 then throw("Only WAVES supported")
253248 else if ((size(i.payments) != 1))
254249 then throw("Wrong payments amount")
255250 else {
256251 let toReissue = divp(payment.amount, rate)
257252 ((lease(payment.amount) ++ issueStkWaves(toReissue)) ++ sendStkWaves(i.caller, toReissue))
258253 }
259254 }
260255 else throw("Strict value is not equal to itself.")
261256 }
262257
263258
264259
265260 @Callable(i)
266261 func unstake () = {
267262 let doCompound = invoke(this, "compound", nil, nil)
268263 if ((doCompound == doCompound))
269264 then {
270265 let rate = currentRate()
271266 let payment = i.payments[0]
272267 if ((payment.assetId != stkWavesAsset()))
273268 then throw("Only stkWaves supported")
274269 else if ((size(i.payments) != 1))
275270 then throw("Wrong payments amount")
276271 else {
277272 let transferAmount = mulp(payment.amount, rate)
278273 ((lease(-(transferAmount)) ++ burnStkWaves(payment.amount)) ++ sendWaves(i.caller, transferAmount))
279274 }
280275 }
281276 else throw("Strict value is not equal to itself.")
282277 }
283278
284279
285280 @Verifier(tx)
286281 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
287282

github/deemru/w8io/3ef1775 
49.07 ms