2020.10.08 22:18 [1212001] smart account 3Mt4wZVdRqMUMhWTvERLdxbaUWqybaN9ED5 > SELF 0.00000000 Waves

{ "type": 13, "id": "AgXwrYXuDTQxcojAj5swMeZ6GAKmSzkMYstqdNnQYpHx", "fee": 1000000, "feeAssetId": null, "timestamp": 1602184725902, "version": 2, "chainId": 84, "sender": "3Mt4wZVdRqMUMhWTvERLdxbaUWqybaN9ED5", "senderPublicKey": "DniueMkiAESsAUxSh6dxag1N3hKwEF9z7RuBC6aBnWP6", "proofs": [ "2JW4xbWKHKRcPG99PnjBL6xQtwKVmk3QNFY4Knyj53Y1R66MQxv4xgud5JCfMRB7Y7h1nYWCMC4xNMp8C9ADqrHc" ], "script": "base64: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", "height": 1212001, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let frostBlockCount = 100
5+
6+let percent = 20
7+
8+func getStatistic () = match getString(this, "statistic") {
9+ case a: String =>
10+ a
11+ case _ =>
12+ "0_0_0_0_0_0_0"
13+}
14+
15+
16+func getUser (user) = match getString(this, user) {
17+ case a: String =>
18+ a
19+ case _ =>
20+ "0_0_0_0_0_0_0_0_0_0_0_0"
21+}
22+
23+
24+@Callable(i)
25+func deposit () = {
26+ let pmt = extract(i.payment)
27+ if (isDefined(pmt.assetId))
28+ then throw("can hodl waves only at the moment")
29+ else {
30+ let currentKey = toBase58String(i.caller.bytes)
31+ if ((currentKey == "3N9k3XWAaRVKuP1GAyBFWrMwcx9GStKQxKN"))
32+ then WriteSet(nil)
33+ else {
34+ let statistic = split(getStatistic(), "_")
35+ let blockHeight = lastBlock.height
36+ let sum = ((pmt.amount / 100) * (100 + percent))
37+ let user = split(getUser(currentKey), "_")
38+ let userData2 = parseIntValue(user[2])
39+ WriteSet([DataEntry("statistic", ((((((((((((toString((parseIntValue(statistic[0]) + pmt.amount)) + "_") + toString((parseIntValue(statistic[1]) + 1))) + "_") + statistic[2]) + "_") + statistic[3]) + "_") + statistic[4]) + "_") + statistic[5]) + "_") + statistic[6])), DataEntry(currentKey, (((((((((((((((((((((toString((parseIntValue(user[0]) + pmt.amount)) + "_") + toString((parseIntValue(user[1]) + sum))) + "_") + toString((userData2 + sum))) + "_") + toString(((userData2 + sum) / frostBlockCount))) + "_") + toString(blockHeight)) + user[5]) + "_") + user[6]) + "_") + user[7]) + "_") + user[8]) + "_") + user[9]) + "_") + user[10]) + "_") + user[11]))])
40+ }
41+ }
42+ }
43+
44+
45+
46+@Callable(i)
47+func withdraw (amount) = {
48+ let currentKey = toBase58String(i.caller.bytes)
49+ let user = split(getUser(currentKey), "_")
50+ let statistic = split(getStatistic(), "_")
51+ let oldAmount = parseIntValue(user[2])
52+ let newAmount = (oldAmount - amount)
53+ let blockHeight = lastBlock.height
54+ let frostBlockHeight = parseIntValue(user[1])
55+ let defrostBlockHeight = (frostBlockHeight + frostBlockCount)
56+ let sumWithdraw = (parseIntValue(user[2]) + amount)
57+ let maxWithdraw = if ((blockHeight >= defrostBlockHeight))
58+ then oldAmount
59+ else ((frostBlockCount - (defrostBlockHeight - blockHeight)) * (oldAmount / frostBlockCount))
60+ if ((0 > amount))
61+ then throw("Can't withdraw negative amount")
62+ else if ((amount > maxWithdraw))
63+ then throw(("Max sum: " + toString(maxWithdraw)))
64+ else if ((0 > newAmount))
65+ then throw("Not enough balance")
66+ else ScriptResult(WriteSet([DataEntry("statistic", (((((((((statistic[0] + "_") + statistic[1]) + "_") + toString((parseIntValue(statistic[2]) + amount))) + "_") + toString((parseIntValue(statistic[1]) + 1))) + "_") + statistic[4]) + statistic[5])), DataEntry(currentKey, ((((((((((((((((((((((user[0] + "_") + user[1]) + "_") + toString(newAmount)) + "_") + user[3]) + "_") + toString(blockHeight)) + "_") + toString((parseIntValue(user[5]) + amount))) + "_") + toString((parseIntValue(user[6]) + amount))) + "_") + user[7]) + "_") + user[8]) + "_") + user[9]) + "_") + user[10]) + "_") + user[11]))]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
67+ }
68+
69+
70+@Verifier(tx)
71+func verify () = match tx {
72+ case d: SetScriptTransaction =>
73+ sigVerify(tx.bodyBytes, tx.proofs[0], base58'HhWoKsFPjXVx9nYfPydpV9BwLmuUdJyJ8ydtyVJVxg9Z')
74+ case _ =>
75+ true
76+}
77+

github/deemru/w8io/786bc32 
27.95 ms