tx · 5b8vi9S5mCbSk4UrS5KLBLAuuxwqCg41k6cp8KwRg6QA

3N9k3XWAaRVKuP1GAyBFWrMwcx9GStKQxKN:  -0.01400000 Waves

2020.10.08 21:54 [1211975] smart account 3N9k3XWAaRVKuP1GAyBFWrMwcx9GStKQxKN > SELF 0.00000000 Waves

{ "type": 13, "id": "5b8vi9S5mCbSk4UrS5KLBLAuuxwqCg41k6cp8KwRg6QA", "fee": 1400000, "feeAssetId": null, "timestamp": 1602183292375, "version": 2, "chainId": 84, "sender": "3N9k3XWAaRVKuP1GAyBFWrMwcx9GStKQxKN", "senderPublicKey": "HdyLfDW9YG1zdrkwj4KcwKmbW7LsneyqBremv8ueaNvo", "proofs": [ "3D4xD3yytgR7y3d5QMqKEtSyMgokpxHvbbTdqUxCtRvTJZfLMF1VQY6mZEYpLgBJNWEFxEtsHdZVNBjVtkxRtYWA" ], "script": "base64:AAIDAAAAAAAAAAkIARIAEgMKAQEAAAAEAAAAAA9mcm9zdEJsb2NrQ291bnQAAAAAAAAAAGQAAAAAB3BlcmNlbnQAAAAAAAAAABQBAAAADGdldFN0YXRpc3RpYwAAAAAEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwIAAAAJc3RhdGlzdGljAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAADTBfMF8wXzBfMF8wXzABAAAAB2dldFVzZXIAAAABAAAABHVzZXIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAAEdXNlcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAABcwXzBfMF8wXzBfMF8wXzBfMF8wXzBfMAAAAAIAAAABaQEAAAAHZGVwb3NpdAAAAAAEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACFjYW4gaG9kbCB3YXZlcyBvbmx5IGF0IHRoZSBtb21lbnQEAAAACmN1cnJlbnRLZXkJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAJc3RhdGlzdGljCQAEtQAAAAIJAQAAAAxnZXRTdGF0aXN0aWMAAAAAAgAAAAFfAwkAAAAAAAACBQAAAApjdXJyZW50S2V5AgAAACMzTjhYQnpjYnh0NXNuVGRrcVZTb2JEanRER2JUbnMyN0RkWQkBAAAACFdyaXRlU2V0AAAAAQUAAAADbmlsBAAAAAtibG9ja0hlaWdodAgFAAAACWxhc3RCbG9jawAAAAZoZWlnaHQEAAAAA3N1bQkAAGgAAAACCQAAaQAAAAIIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAABkCQAAZAAAAAIAAAAAAAAAAGQFAAAAB3BlcmNlbnQEAAAABHVzZXIJAAS1AAAAAgkBAAAAB2dldFVzZXIAAAABBQAAAApjdXJyZW50S2V5AgAAAAFfBAAAAAl1c2VyRGF0YTIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAR1c2VyAAAAAAAAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAlzdGF0aXN0aWMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEJAABkAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACXN0YXRpc3RpYwAAAAAAAAAAAAgFAAAAA3BtdAAAAAZhbW91bnQCAAAAAV8JAAGkAAAAAQkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJc3RhdGlzdGljAAAAAAAAAAABAAAAAAAAAAABAgAAAAFfCQABkQAAAAIFAAAACXN0YXRpc3RpYwAAAAAAAAAAAgIAAAABXwkAAZEAAAACBQAAAAlzdGF0aXN0aWMAAAAAAAAAAAMCAAAAAV8JAAGRAAAAAgUAAAAJc3RhdGlzdGljAAAAAAAAAAAECQABkQAAAAIFAAAACXN0YXRpc3RpYwAAAAAAAAAABQIAAAABXwkAAZEAAAACBQAAAAlzdGF0aXN0aWMAAAAAAAAAAAYJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACmN1cnJlbnRLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAAAAgFAAAAA3BtdAAAAAZhbW91bnQCAAAAAV8JAAGkAAAAAQkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAAAQUAAAADc3VtAgAAAAFfCQABpAAAAAEJAABkAAAAAgUAAAAJdXNlckRhdGEyBQAAAANzdW0CAAAAAV8JAAGkAAAAAQkAAGkAAAACCQAAZAAAAAIFAAAACXVzZXJEYXRhMgUAAAADc3VtBQAAAA9mcm9zdEJsb2NrQ291bnQCAAAAAV8JAAGkAAAAAQUAAAALYmxvY2tIZWlnaHQJAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAABQIAAAABXwkAAZEAAAACBQAAAAR1c2VyAAAAAAAAAAAGAgAAAAFfCQABkQAAAAIFAAAABHVzZXIAAAAAAAAAAAcCAAAAAV8JAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAACAIAAAABXwkAAZEAAAACBQAAAAR1c2VyAAAAAAAAAAAJAgAAAAFfCQABkQAAAAIFAAAABHVzZXIAAAAAAAAAAAoCAAAAAV8JAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAACwUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAZhbW91bnQEAAAACmN1cnJlbnRLZXkJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAEdXNlcgkABLUAAAACCQEAAAAHZ2V0VXNlcgAAAAEFAAAACmN1cnJlbnRLZXkCAAAAAV8EAAAACXN0YXRpc3RpYwkABLUAAAACCQEAAAAMZ2V0U3RhdGlzdGljAAAAAAIAAAABXwQAAAAJb2xkQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAAAgQAAAAJbmV3QW1vdW50CQAAZQAAAAIFAAAACW9sZEFtb3VudAUAAAAGYW1vdW50BAAAAAtibG9ja0hlaWdodAgFAAAACWxhc3RCbG9jawAAAAZoZWlnaHQEAAAAEGZyb3N0QmxvY2tIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAR1c2VyAAAAAAAAAAABBAAAABJkZWZyb3N0QmxvY2tIZWlnaHQJAABkAAAAAgUAAAAQZnJvc3RCbG9ja0hlaWdodAUAAAAPZnJvc3RCbG9ja0NvdW50BAAAAAtzdW1XaXRoZHJhdwkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAAAgUAAAAGYW1vdW50BAAAAAttYXhXaXRoZHJhdwMJAABnAAAAAgUAAAALYmxvY2tIZWlnaHQFAAAAEmRlZnJvc3RCbG9ja0hlaWdodAUAAAAJb2xkQW1vdW50CQAAaAAAAAIJAABlAAAAAgUAAAAPZnJvc3RCbG9ja0NvdW50CQAAZQAAAAIFAAAAEmRlZnJvc3RCbG9ja0hlaWdodAUAAAALYmxvY2tIZWlnaHQJAABpAAAAAgUAAAAJb2xkQW1vdW50BQAAAA9mcm9zdEJsb2NrQ291bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkAAAIAAAABAgAAAB5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQAAZgAAAAIFAAAABmFtb3VudAUAAAALbWF4V2l0aGRyYXcJAAACAAAAAQkAASwAAAACAgAAAAlNYXggc3VtOiAJAAGkAAAAAQUAAAALbWF4V2l0aGRyYXcDCQAAZgAAAAIAAAAAAAAAAAAFAAAACW5ld0Ftb3VudAkAAAIAAAABAgAAABJOb3QgZW5vdWdoIGJhbGFuY2UJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAlzdGF0aXN0aWMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGRAAAAAgUAAAAJc3RhdGlzdGljAAAAAAAAAAAAAgAAAAFfCQABkQAAAAIFAAAACXN0YXRpc3RpYwAAAAAAAAAAAQIAAAABXwkAAaQAAAABCQAAZAAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlzdGF0aXN0aWMAAAAAAAAAAAIFAAAABmFtb3VudAIAAAABXwkAAaQAAAABCQAAZAAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlzdGF0aXN0aWMAAAAAAAAAAAEAAAAAAAAAAAECAAAAAV8JAAGRAAAAAgUAAAAJc3RhdGlzdGljAAAAAAAAAAAECQABkQAAAAIFAAAACXN0YXRpc3RpYwAAAAAAAAAABQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAKY3VycmVudEtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAABHVzZXIAAAAAAAAAAAACAAAAAV8JAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAAAQIAAAABXwkAAaQAAAABBQAAAAluZXdBbW91bnQCAAAAAV8JAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAAAwIAAAABXwkAAaQAAAABBQAAAAtibG9ja0hlaWdodAIAAAABXwkAAaQAAAABCQAAZAAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAR1c2VyAAAAAAAAAAAFBQAAAAZhbW91bnQCAAAAAV8JAAGkAAAAAQkAAGQAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAABgUAAAAGYW1vdW50AgAAAAFfCQABkQAAAAIFAAAABHVzZXIAAAAAAAAAAAcCAAAAAV8JAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAACAIAAAABXwkAAZEAAAACBQAAAAR1c2VyAAAAAAAAAAAJAgAAAAFfCQABkQAAAAIFAAAABHVzZXIAAAAAAAAAAAoCAAAAAV8JAAGRAAAAAgUAAAAEdXNlcgAAAAAAAAAACwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAWQFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAAAQAAACD4G+qsjWIw9211jgTtgZZ6jTCzprqnbyvdVegpKeQ8ZAacvzQx", "height": 1211975, "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+ let statistic = split(getStatistic(), "_")
32+ if ((currentKey == "3N8XBzcbxt5snTdkqVSobDjtDGbTns27DdY"))
33+ then WriteSet(nil)
34+ else {
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/3ef1775 
24.44 ms