tx · 2ckqTzzmaSQ7gZrqQpEXSAcRCWkuVskcj76HiTzFSbrp

3PDBrNPGRGQm7wbxsj7gPsfMPTxT5eP1MUg:  -0.00300000 Waves

2023.12.05 21:13 [3939557] smart account 3PDBrNPGRGQm7wbxsj7gPsfMPTxT5eP1MUg > SELF 0.00000000 Waves

{ "type": 13, "id": "2ckqTzzmaSQ7gZrqQpEXSAcRCWkuVskcj76HiTzFSbrp", "fee": 300000, "feeAssetId": null, "timestamp": 1701800054077, "version": 2, "chainId": 87, "sender": "3PDBrNPGRGQm7wbxsj7gPsfMPTxT5eP1MUg", "senderPublicKey": "DEx2nez1cYG1CaVYQEpFDFixzbDEgFVocYXAXen63czu", "proofs": [ "29Gv7ikfjzQHoNy1jEnbbXdehEbn7BJjBncRH6sbrUyJX9FYsVu3sHsfMRxT51w2CFBBxQARECxYPsQrF7RQmMNe" ], "script": "base64:BgIWCAISAwoBARIAEgMKAQESBgoEAQgICAMACWZlZV9zY2FsZQDAhD0AAncxBAckbWF0Y2gwCQCdCAIFBHRoaXMCAncxAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcgUHJG1hdGNoMAUBcgIAAAJ3MgQHJG1hdGNoMAkAnQgCBQR0aGlzAgJ3MgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXIFByRtYXRjaDAFAXICAAQBaQECc2YBA2ZlZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBHNlbGYJAMwIAgkBDEludGVnZXJFbnRyeQICA2ZlZQUDZmVlBQNuaWwBaQEHZGVwb3NpdAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQC8CQIFAncxAgF8CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAAIBAgJ3bAQHY3VycmVudAQHJG1hdGNoMAkAnQgCBQR0aGlzAgdjdXJyZW50AwkAAQIFByRtYXRjaDACBlN0cmluZwQDcmV0BQckbWF0Y2gwCQACAQIHY3VycmVudAIABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhIxIHBheW1lbnQgZXhwZWN0ZWQDCQECIT0CCAUDcG10B2Fzc2V0SWQFBHVuaXQJAAIBAgt3cm9uZyB0b2tlbgQGY2FsbGVyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICAghkZXBvc2l0XwUGY2FsbGVyAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAx0b3RhbERlcG9zaXQEByRtYXRjaDAJAJoIAgUEdGhpcwINdG90YWxfZGVwb3NpdAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBkAgUNY3VycmVudEFtb3VudAgFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIIZGVwb3NpdF8FBmNhbGxlcgUJbmV3QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAg10b3RhbF9kZXBvc2l0CQBkAgUMdG90YWxEZXBvc2l0CAUDcG10BmFtb3VudAUDbmlsAWkBCHdpdGhkcmF3AQRhbW50AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAvAkCBQJ3MQIBfAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQACAQICd2wEB2N1cnJlbnQEByRtYXRjaDAJAJ0IAgUEdGhpcwIHY3VycmVudAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEA3JldAUHJG1hdGNoMAkAAgECB2N1cnJlbnQCAAQGY2FsbGVyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICAghkZXBvc2l0XwUGY2FsbGVyAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAZgIFBGFtbnQFDWN1cnJlbnRBbW91bnQJAAIBAgV3ID4gZAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUEYW1udAMJAGYCAAAFCW5ld0Ftb3VudAkAAgECCXVuZGVyZmxvdwQMdG90YWxEZXBvc2l0BAckbWF0Y2gwCQCaCAIFBHRoaXMCDXRvdGFsX2RlcG9zaXQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIIZGVwb3NpdF8FBmNhbGxlcgUJbmV3QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAg10b3RhbF9kZXBvc2l0CQBlAgUMdG90YWxEZXBvc2l0BQRhbW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEYW1udAUEdW5pdAUDbmlsAWkBAXgEBGFtbnQBYQFmBGRhdGEDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQC8CQIFAncyAgF8CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAAIBAgJ3bAQCc3QICQDvBwEFBHRoaXMJYXZhaWxhYmxlAwkAAAIFAnN0BQJzdAQCaWkJAP0HBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQUBZgkAzAgCBQRkYXRhBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFBGFtbnQFA25pbAMJAAACBQJpaQUCaWkEAmV0CAkA7wcBBQR0aGlzCWF2YWlsYWJsZQMJAAACBQJldAUCZXQEBWZlZV9yBAckbWF0Y2gwCQCaCAIFBHRoaXMCA2ZlZQMJAAECBQckbWF0Y2gwAgNJbnQEA3JldAUHJG1hdGNoMAUDcmV0AAAEA2ZlZQkAbgQFAnN0BQVmZWVfcgUJZmVlX3NjYWxlBQRET1dOAwkAZgIJAGQCBQJzdAUDZmVlBQJldAkAAgEJAKwCAgICISAJAKQDAQkAZAIFAnN0BQNmZWUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnlMl+4", "height": 3939557, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let fee_scale = 1000000
5+
6+let w1 = match getString(this, "w1") {
7+ case r: String =>
8+ r
9+ case _ =>
10+ ""
11+}
12+
13+let w2 = match getString(this, "w2") {
14+ case r: String =>
15+ r
16+ case _ =>
17+ ""
18+}
19+
20+@Callable(i)
21+func sf (fee) = if ((i.caller != this))
22+ then throw("self")
23+ else [IntegerEntry("fee", fee)]
24+
25+
26+
27+@Callable(i)
28+func deposit () = if (!(containsElement(split_4C(w1, "|"), toBase58String(i.caller.bytes))))
29+ then throw("wl")
30+ else {
31+ let current = match getString(this, "current") {
32+ case ret: String =>
33+ throw("current")
34+ case _ =>
35+ ""
36+ }
37+ let pmt = if ((size(i.payments) == 1))
38+ then i.payments[0]
39+ else throw("1 payment expected")
40+ if ((pmt.assetId != unit))
41+ then throw("wrong token")
42+ else {
43+ let caller = toBase58String(i.caller.bytes)
44+ let currentAmount = match getInteger(this, ("deposit_" + caller)) {
45+ case a: Int =>
46+ a
47+ case _ =>
48+ 0
49+ }
50+ let totalDeposit = match getInteger(this, "total_deposit") {
51+ case a: Int =>
52+ a
53+ case _ =>
54+ 0
55+ }
56+ let newAmount = (currentAmount + pmt.amount)
57+[IntegerEntry(("deposit_" + caller), newAmount), IntegerEntry("total_deposit", (totalDeposit + pmt.amount))]
58+ }
59+ }
60+
61+
62+
63+@Callable(i)
64+func withdraw (amnt) = if (!(containsElement(split_4C(w1, "|"), toBase58String(i.caller.bytes))))
65+ then throw("wl")
66+ else {
67+ let current = match getString(this, "current") {
68+ case ret: String =>
69+ throw("current")
70+ case _ =>
71+ ""
72+ }
73+ let caller = toBase58String(i.caller.bytes)
74+ let currentAmount = match getInteger(this, ("deposit_" + caller)) {
75+ case a: Int =>
76+ a
77+ case _ =>
78+ 0
79+ }
80+ if ((amnt > currentAmount))
81+ then throw("w > d")
82+ else {
83+ let newAmount = (currentAmount - amnt)
84+ if ((0 > newAmount))
85+ then throw("underflow")
86+ else {
87+ let totalDeposit = match getInteger(this, "total_deposit") {
88+ case a: Int =>
89+ a
90+ case _ =>
91+ 0
92+ }
93+[IntegerEntry(("deposit_" + caller), newAmount), IntegerEntry("total_deposit", (totalDeposit - amnt)), ScriptTransfer(i.caller, amnt, unit)]
94+ }
95+ }
96+ }
97+
98+
99+
100+@Callable(i)
101+func x (amnt,a,f,data) = if (!(containsElement(split_4C(w2, "|"), toBase58String(i.caller.bytes))))
102+ then throw("wl")
103+ else {
104+ let st = wavesBalance(this).available
105+ if ((st == st))
106+ then {
107+ let ii = reentrantInvoke(addressFromStringValue(a), f, [data], [AttachedPayment(unit, amnt)])
108+ if ((ii == ii))
109+ then {
110+ let et = wavesBalance(this).available
111+ if ((et == et))
112+ then {
113+ let fee_r = match getInteger(this, "fee") {
114+ case ret: Int =>
115+ ret
116+ case _ =>
117+ 0
118+ }
119+ let fee = fraction(st, fee_r, fee_scale, DOWN)
120+ if (((st + fee) > et))
121+ then throw(("! " + toString((st + fee))))
122+ else nil
123+ }
124+ else throw("Strict value is not equal to itself.")
125+ }
126+ else throw("Strict value is not equal to itself.")
127+ }
128+ else throw("Strict value is not equal to itself.")
129+ }
130+
131+
132+@Verifier(tx)
133+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
134+

github/deemru/w8io/3ef1775 
19.20 ms