tx · 6VnwRiznJbm2wm3FFpwUmQi9fN8Bo25so8dhNKFFaoJo

3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM:  -0.01000000 Waves

2023.11.02 10:00 [2825387] smart account 3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM > SELF 0.00000000 Waves

{ "type": 13, "id": "6VnwRiznJbm2wm3FFpwUmQi9fN8Bo25so8dhNKFFaoJo", "fee": 1000000, "feeAssetId": null, "timestamp": 1698908417993, "version": 2, "chainId": 84, "sender": "3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM", "senderPublicKey": "6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM", "proofs": [ "3AU4JNQBEBce5ZTUVvAjHcp32ESxqZpDCQBFs335yvesJmjWA6fwVT1iPyNbmzHigZaJEjsBJC663HoRhVDHt2z8" ], "script": "base64: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AQVpbmRleAkArAICAgJSOgkApAMBBQVpbmRleAEPZ2V0TnVsbGlmaWVyS2V5AQludWxsaWZpZXIJAKwCAgICTjoJANgEAQUJbnVsbGlmaWVyAQ1nZXREZXBvc2l0S2V5AQdhZGRyZXNzCQCsAgICAkQ6CQDYBAEFB2FkZHJlc3MADHBvb2xJbmRleEtleQIJUG9vbEluZGV4ABJhbGxNZXNzYWdlc0hhc2hLZXkCD0FsbE1lc3NhZ2VzSGFzaAEHdGFrZUV4dAMBdgRmcm9tAnRvCQDKAQIJAMkBAgUBdgUCdG8FBGZyb20BDHNwZW5kRGVwb3NpdAIHYWRkcmVzcwZhbW91bnQECmN1cnJlbnRLZXkJAQ1nZXREZXBvc2l0S2V5AQgFB2FkZHJlc3MFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJ8IAQUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50AwkAZgIAAAUGYW1vdW50CQACAQIbQ2FuJ3Qgc3BlbmQgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQFA25pbAMBaQEHZGVwb3NpdAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECI09ubHkgV0FWRVMgaXMgYWxsb3dlZCBhdCB0aGUgbW9tZW50BApjdXJyZW50S2V5CQENZ2V0RGVwb3NpdEtleQEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBkAgUNY3VycmVudEFtb3VudAgFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAUDbmlsAWkBCHdpdGhkcmF3AQZhbW91bnQECmN1cnJlbnRLZXkJAQ1nZXREZXBvc2l0S2V5AQgIBQFpBmNhbGxlcgVieXRlcwQNY3VycmVudEFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzBQpjdXJyZW50S2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAluZXdBbW91bnQJAGUCBQ1jdXJyZW50QW1vdW50BQZhbW91bnQDCQBmAgAABQZhbW91bnQJAAIBAh5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQBmAgAABQluZXdBbW91bnQJAAIBAhJOb3QgZW5vdWdoIGJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUEdW5pdAUDbmlsAWkBCHRyYW5zYWN0AQJ0eAQJbnVsbGlmaWVyCQEHdGFrZUV4dAMFAnR4AAAAIAQJb3V0Q29tbWl0CQEHdGFrZUV4dAMFAnR4ACAAQAQHYXNzZXRJZAkBB3Rha2VFeHQDBQJ0eABAAGAEBWRlbHRhCQEHdGFrZUV4dAMFAnR4AGAAgAEEDG5hdGl2ZUFtb3VudAkAsQkBCQEHdGFrZUV4dAMFBWRlbHRhAAAACAQMbmF0aXZlRW5lcmd5CQCxCQEJAQd0YWtlRXh0AwUFZGVsdGEACAAWBAd0eEluZGV4CQCxCQEJAQd0YWtlRXh0AwUFZGVsdGEAFgAcBAdfcG9vbElkCQEHdGFrZUV4dAMFBWRlbHRhABwAHwQHdHhQcm9vZgkBB3Rha2VFeHQDBQJ0eACAAQCAAwQJdHJlZVByb29mCQEHdGFrZUV4dAMFAnR4AIADAIAFBAlyb290QWZ0ZXIJAQd0YWtlRXh0AwUCdHgAgAUAoAUEBnR4VHlwZQkAsQkBCQEHdGFrZUV4dAMFAnR4AKAFAKIFBAskdDA1NjU2NjAxOAMJAAACBQZ0eFR5cGUAAAQPZGVwb3NpdERhdGFTaXplCQBkAgAgAEAECWRlcG9zaXRQawkAzQECCQDMAQIFAnR4BQ9kZXBvc2l0RGF0YVNpemUAQAQQZGVwb3NpdFNpZ25hdHVyZQkAzAECBQJ0eABACQCVCgMJAQd0YWtlRXh0AwUCdHgAogUJAGUCCQDIAQEFAnR4BQ9kZXBvc2l0RGF0YVNpemUFCWRlcG9zaXRQawUQZGVwb3NpdFNpZ25hdHVyZQkAlQoDCQEHdGFrZUV4dAMFAnR4AKIFCQDIAQEFAnR4BQR1bml0BQR1bml0BARtZW1vCAULJHQwNTY1NjYwMTgCXzEECWRlcG9zaXRQawgFCyR0MDU2NTY2MDE4Al8yBBBkZXBvc2l0U2lnbmF0dXJlCAULJHQwNTY1NjYwMTgCXzMEA2ZlZQkAsQkBCQEHdGFrZUV4dAMFBG1lbW8AAAAIBA9hbGxNZXNzYWdlc0hhc2gJAQt2YWx1ZU9yRWxzZQIJAKEIAQUSYWxsTWVzc2FnZXNIYXNoS2V5CQCdAwEJALYCAQAABAhtZW1vSGFzaAkA9QMBBQRtZW1vBAZoYXNoZXMJAMsBAgUPYWxsTWVzc2FnZXNIYXNoBQhtZW1vSGFzaAQSbmV3QWxsTWVzc2FnZXNIYXNoCQD1AwEFBmhhc2hlcwQKcm9vdEJlZm9yZQkBC3ZhbHVlT3JFbHNlAgkAoQgBCQEKZ2V0Um9vdEtleQEFB3R4SW5kZXgFC2luaXRpYWxSb290AwkAAAIFCnJvb3RCZWZvcmUFCnJvb3RCZWZvcmUECXBvb2xJbmRleAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQxwb29sSW5kZXhLZXkAAAQIcG9vbFJvb3QJAQt2YWx1ZU9yRWxzZQIJAKEIAQkBCmdldFJvb3RLZXkBBQlwb29sSW5kZXgFC2luaXRpYWxSb290BA9udWxsaWZpZXJFeGlzdHMEByRtYXRjaDAJAKEIAQkBD2dldE51bGxpZmllcktleQEFCW51bGxpZmllcgMJAAECBQckbWF0Y2gwAgRVbml0BAFhBQckbWF0Y2gwBwYEDnRyYW5zZmVySW5wdXRzCQDLAQIJAMsBAgkAywECCQDLAQIFCG1lbW9IYXNoBQludWxsaWZpZXIFCW91dENvbW1pdAUFZGVsdGEFCG1lbW9IYXNoBAp0cmVlSW5wdXRzCQDLAQIJAMsBAgUIcG9vbFJvb3QFCXJvb3RBZnRlcgUJb3V0Q29tbWl0BAdkYXRhT3BzCQDMCAIJAQtCaW5hcnlFbnRyeQIJAQpnZXRSb290S2V5AQUHdHhJbmRleAUJcm9vdEFmdGVyCQDMCAIJAQtCaW5hcnlFbnRyeQIJAQ9nZXROdWxsaWZpZXJLZXkBBQludWxsaWZpZXIJAPUDAQkAywECBQlvdXRDb21taXQFBWRlbHRhCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxwb29sSW5kZXhLZXkJAGQCBQlwb29sSW5kZXgAgAEJAMwIAgkBC0JpbmFyeUVudHJ5AgUSYWxsTWVzc2FnZXNIYXNoS2V5BRJuZXdBbGxNZXNzYWdlc0hhc2gFA25pbAQFdHhPcHMEByRtYXRjaDAFBnR4VHlwZQMJAAACAAAFByRtYXRjaDAEDmRlcG9zaXRQa1ZhbHVlCQEFdmFsdWUBBQlkZXBvc2l0UGsEDmRlcG9zaXRBZGRyZXNzCQCnCAEFDmRlcG9zaXRQa1ZhbHVlAwkAZgIAAAUMbmF0aXZlQW1vdW50CQACAQIdQ2FuJ3QgZGVwb3NpdCBuZWdhdGl2ZSBhbW91bnQDCQEBIQEJAMQTAwkAywECBQludWxsaWZpZXIFDmRlcG9zaXRQa1ZhbHVlCQEFdmFsdWUBBRBkZXBvc2l0U2lnbmF0dXJlBQ5kZXBvc2l0UGtWYWx1ZQkAAgECGUludmFsaWQgZGVwb3NpdCBzaWduYXR1cmUJAQxzcGVuZERlcG9zaXQCBQ5kZXBvc2l0QWRkcmVzcwkAaAIFDG5hdGl2ZUFtb3VudAULZGVub21pbmF0b3IDCQAAAgABBQckbWF0Y2gwAwkBAiE9AgUMbmF0aXZlQW1vdW50AAAJAAIBAihOYXRpdmUgYW1vdW50IG11c3QgYmUgemVybyBmb3IgdHJhbnNmZXJzBQNuaWwDCQAAAgACBQckbWF0Y2gwBA53aXRoZHJhd0Ftb3VudAkAaAIJALEJAQkBB3Rha2VFeHQDBQRtZW1vAAgAEAULZGVub21pbmF0b3IDCQBmAgUOd2l0aGRyYXdBbW91bnQAAAkAAgECIFdpdGhkcmF3IGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBAS0BBQ53aXRoZHJhd0Ftb3VudAUEdW5pdAUDbmlsCQACAQIPVW5rbm93biB0eCB0eXBlBAZmZWVPcHMDCQBmAgUDZmVlAAAECHRvdGFsRmVlCQBoAgUDZmVlBQtkZW5vbWluYXRvcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9vcGVyYXRvckFkZHJlc3MFA2ZlZQUEdW5pdAUDbmlsBQNuaWwDCQBmAgUHdHhJbmRleAUJcG9vbEluZGV4CQACAQIcVHJhbnNhY3Rpb24gaW5kZXggaXMgdG9vIGJpZwMJAQEhAQkAlhMDBQp0cmFuc2ZlclZrBQd0eFByb29mBQ50cmFuc2ZlcklucHV0cwkAAgECE1R4IHByb29mIGlzIGludmFsaWQDCQEBIQEJAJQTAwUGdHJlZVZrBQl0cmVlUHJvb2YFCnRyZWVJbnB1dHMJAAIBAhVUcmVlIHByb29mIGlzIGludmFsaWQDBQ9udWxsaWZpZXJFeGlzdHMJAAIBAgxEb3VibGUgc3BlbmQJAM4IAgkAzggCBQV0eE9wcwUHZGF0YU9wcwUGZmVlT3BzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAWQFByRtYXRjaDAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCm9wZXJhdG9yUGsHyDiPvg==", "height": 2825387, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: XmxYZEQEVcdr6P8f7WBRQerPDHPqrEXdCeP2nVeopce Next: 3XQTdkT9vwstyExYtVmb4X6CNQ9ENdDo61WLcryyndAC Diff:
OldNewDifferences
2424
2525 let m = "PoolIndex"
2626
27-func n (o,p,q) = drop(take(o, q), p)
27+let n = "AllMessagesHash"
28+
29+func o (p,q,r) = drop(take(p, r), q)
2830
2931
30-func r (l,s) = {
31- let t = k(l.bytes)
32- let u = {
33- let v = getInteger(t)
34- if ($isInstanceOf(v, "Int"))
32+func s (l,t) = {
33+ let u = k(l.bytes)
34+ let v = {
35+ let w = getInteger(u)
36+ if ($isInstanceOf(w, "Int"))
3537 then {
36- let w = v
37- w
38+ let x = w
39+ x
3840 }
3941 else 0
4042 }
41- let x = (u - s)
42- if ((0 > s))
43+ let y = (v - t)
44+ if ((0 > t))
4345 then throw("Can't spend negative amount")
44- else if ((0 > x))
46+ else if ((0 > y))
4547 then throw("Not enough balance")
46- else [IntegerEntry(t, x)]
48+ else [IntegerEntry(u, y)]
4749 }
4850
4951
50-@Callable(y)
52+@Callable(z)
5153 func deposit () = {
52- let z = value(y.payments[0])
53- if (isDefined(z.assetId))
54+ let A = value(z.payments[0])
55+ if (isDefined(A.assetId))
5456 then throw("Only WAVES is allowed at the moment")
5557 else {
56- let t = k(y.caller.bytes)
57- let u = {
58- let v = getInteger(this, t)
59- if ($isInstanceOf(v, "Int"))
58+ let u = k(z.caller.bytes)
59+ let v = {
60+ let w = getInteger(this, u)
61+ if ($isInstanceOf(w, "Int"))
6062 then {
61- let w = v
62- w
63+ let x = w
64+ x
6365 }
6466 else 0
6567 }
66- let x = (u + z.amount)
67-[IntegerEntry(t, x)]
68+ let y = (v + A.amount)
69+[IntegerEntry(u, y)]
6870 }
6971 }
7072
7173
7274
73-@Callable(y)
74-func withdraw (s) = {
75- let t = k(y.caller.bytes)
76- let u = {
77- let v = getInteger(this, t)
78- if ($isInstanceOf(v, "Int"))
75+@Callable(z)
76+func withdraw (t) = {
77+ let u = k(z.caller.bytes)
78+ let v = {
79+ let w = getInteger(this, u)
80+ if ($isInstanceOf(w, "Int"))
7981 then {
80- let w = v
81- w
82+ let x = w
83+ x
8284 }
8385 else 0
8486 }
85- let x = (u - s)
86- if ((0 > s))
87+ let y = (v - t)
88+ if ((0 > t))
8789 then throw("Can't withdraw negative amount")
88- else if ((0 > x))
90+ else if ((0 > y))
8991 then throw("Not enough balance")
90- else [IntegerEntry(t, x), ScriptTransfer(y.caller, s, unit)]
92+ else [IntegerEntry(u, y), ScriptTransfer(z.caller, t, unit)]
9193 }
9294
9395
9496
95-@Callable(y)
96-func transact (A) = {
97- let j = n(A, 0, 32)
98- let B = n(A, 32, 64)
99- let C = n(A, 64, 96)
100- let D = n(A, 96, 128)
101- let E = toInt(n(D, 0, 8))
102- let F = toInt(n(D, 8, 22))
103- let G = toInt(n(D, 22, 28))
104- let H = n(D, 28, 31)
105- let I = n(A, 128, 384)
106- let J = n(A, 384, 640)
107- let K = n(A, 640, 672)
108- let L = toInt(n(A, 672, 674))
109- let M = if ((L == 0))
97+@Callable(z)
98+func transact (B) = {
99+ let j = o(B, 0, 32)
100+ let C = o(B, 32, 64)
101+ let D = o(B, 64, 96)
102+ let E = o(B, 96, 128)
103+ let F = toInt(o(E, 0, 8))
104+ let G = toInt(o(E, 8, 22))
105+ let H = toInt(o(E, 22, 28))
106+ let I = o(E, 28, 31)
107+ let J = o(B, 128, 384)
108+ let K = o(B, 384, 640)
109+ let L = o(B, 640, 672)
110+ let M = toInt(o(B, 672, 674))
111+ let N = if ((M == 0))
110112 then {
111- let N = (32 + 64)
112- let O = dropRight(takeRight(A, N), 64)
113- let P = takeRight(A, 64)
114- $Tuple3(n(A, 674, (size(A) - N)), O, P)
113+ let O = (32 + 64)
114+ let P = dropRight(takeRight(B, O), 64)
115+ let Q = takeRight(B, 64)
116+ $Tuple3(o(B, 674, (size(B) - O)), P, Q)
115117 }
116- else $Tuple3(n(A, 674, size(A)), unit, unit)
117- let Q = M._1
118- let O = M._2
119- let P = M._3
120- let R = toInt(n(Q, 0, 8))
121- let S = keccak256(Q)
122- let T = valueOrElse(getBinary(g(G)), f)
123- if ((T == T))
118+ else $Tuple3(o(B, 674, size(B)), unit, unit)
119+ let R = N._1
120+ let P = N._2
121+ let Q = N._3
122+ let S = toInt(o(R, 0, 8))
123+ let T = valueOrElse(getBinary(n), toBytes(toBigInt(0)))
124+ let U = keccak256(R)
125+ let V = (T + U)
126+ let W = keccak256(V)
127+ let X = valueOrElse(getBinary(g(H)), f)
128+ if ((X == X))
124129 then {
125- let U = valueOrElse(getInteger(m), 0)
126- let V = valueOrElse(getBinary(g(U)), f)
127- let W = {
128- let v = getBinary(i(j))
129- if ($isInstanceOf(v, "Unit"))
130+ let Y = valueOrElse(getInteger(m), 0)
131+ let Z = valueOrElse(getBinary(g(Y)), f)
132+ let aa = {
133+ let w = getBinary(i(j))
134+ if ($isInstanceOf(w, "Unit"))
130135 then {
131- let w = v
136+ let x = w
132137 false
133138 }
134139 else true
135140 }
136- let X = ((((S + j) + B) + D) + S)
137- let Y = ((V + K) + B)
138- let Z = [BinaryEntry(g(G), K), BinaryEntry(i(j), keccak256((B + D))), IntegerEntry(m, (U + 128))]
139- let aa = {
140- let v = L
141- if ((0 == v))
141+ let ab = ((((U + j) + C) + E) + U)
142+ let ac = ((Z + L) + C)
143+ let ad = [BinaryEntry(g(H), L), BinaryEntry(i(j), keccak256((C + E))), IntegerEntry(m, (Y + 128)), BinaryEntry(n, W)]
144+ let ae = {
145+ let w = M
146+ if ((0 == w))
142147 then {
143- let ab = value(O)
144- let ac = addressFromPublicKey(ab)
145- if ((0 > E))
148+ let af = value(P)
149+ let ag = addressFromPublicKey(af)
150+ if ((0 > F))
146151 then throw("Can't deposit negative amount")
147- else if (!(sigVerify_8Kb((j + ab), value(P), ab)))
152+ else if (!(sigVerify_8Kb((j + af), value(Q), af)))
148153 then throw("Invalid deposit signature")
149- else r(ac, (E * c))
154+ else s(ag, (F * c))
150155 }
151- else if ((1 == v))
152- then if ((E != 0))
156+ else if ((1 == w))
157+ then if ((F != 0))
153158 then throw("Native amount must be zero for transfers")
154159 else nil
155- else if ((2 == v))
160+ else if ((2 == w))
156161 then {
157- let ad = (toInt(n(Q, 8, 16)) * c)
158- if ((ad > 0))
162+ let ah = (toInt(o(R, 8, 16)) * c)
163+ if ((ah > 0))
159164 then throw("Withdraw amount must be positive")
160- else [ScriptTransfer(y.caller, -(ad), unit)]
165+ else [ScriptTransfer(z.caller, -(ah), unit)]
161166 }
162167 else throw("Unknown tx type")
163168 }
164- let ae = if ((R > 0))
169+ let ai = if ((S > 0))
165170 then {
166- let af = (R * c)
167-[ScriptTransfer(b, R, unit)]
171+ let aj = (S * c)
172+[ScriptTransfer(b, S, unit)]
168173 }
169174 else nil
170- if ((G > U))
175+ if ((H > Y))
171176 then throw("Transaction index is too big")
172- else if (!(bn256Groth16Verify_5inputs(d, I, X)))
177+ else if (!(bn256Groth16Verify_5inputs(d, J, ab)))
173178 then throw("Tx proof is invalid")
174- else if (!(bn256Groth16Verify_3inputs(e, J, Y)))
179+ else if (!(bn256Groth16Verify_3inputs(e, K, ac)))
175180 then throw("Tree proof is invalid")
176- else if (W)
181+ else if (aa)
177182 then throw("Double spend")
178- else ((aa ++ Z) ++ ae)
183+ else ((ae ++ ad) ++ ai)
179184 }
180185 else throw("Strict value is not equal to itself.")
181186 }
182187
183188
184-@Verifier(A)
185-func ag () = {
186- let v = A
187- if ($isInstanceOf(v, "SetScriptTransaction"))
189+@Verifier(B)
190+func ak () = {
191+ let w = B
192+ if ($isInstanceOf(w, "SetScriptTransaction"))
188193 then {
189- let ah = v
190- sigVerify(A.bodyBytes, A.proofs[0], a)
194+ let al = w
195+ sigVerify(B.bodyBytes, B.proofs[0], a)
191196 }
192197 else false
193198 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM'
55
66 let b = addressFromPublicKey(a)
77
88 let c = 100000000
99
1010 let d = base64'SYrHhkeDrw+dFMD6Yr/Vrvr2pPyDHCWoMO8w9LxFaQABrVkxqK1PRfgZw0t9bDNsxFEJNHhErc9XHTkkU1OiEYYWiz2VdqW6jQewS86Z3lshxW6Fdf1MU0MDPt1NoikSf2YEIBvI+gscAfqmtvJxZbkVA/Lrr7r+HyVUoZGt1QB46Zv9umeZBwmTWiDHaLPPgOVOWQAVYLMCwpEzEzIdF2C8KzI/CsCeCv3raf56RXmhFAWuJCbMtO6My12PxFQDRv98IWP0FGhY/m6sQ/9r58GInq4bSVYWKlGucbXbayaYF35Fp3o6VaRXVWzJ6FesrH8dS+DxeadscnAN4IQEB4J5YcwZvAX/fjE5JEHNC4WrNfiUe+fe6FAQ4ttHlRgKS+PbN1butH1dDkfQkBKC5Om0WI3D45eaRbN6Taxt7ha5xCUwGVh0LQ+Wf/j9bY+un1Cwur9wx+HmB6PPGC2pEFLSQhkZjtvNJTs6e1c0i3FAOhFDSNqEjcqORSer2aUGdJMXhB6YEv/XcumUDyQbem+f0wX2qOgtwVFLtGOq7S65sHzNcHpdJP/htHnhqkQErwmjDG/JTs9oc1mu5jOsGAYAAAAovMt7vHGhKq+EA+6JlSFfVMj7aU/V67EpBI64f73xJKTpnqCOEMhaQMegFHTJ/W5Cp9iTd4i3AqnoTQj+L1UOXKmddpvHhg0WJHFbosaPhv8EY7+cAaHmn1JPO30BBRPqTsN53lfykgE2oF9vGPyU4u0Y3Oh8YG2p7I2Oz+NaKkzrJo2SamjhbLOofkEX14HbjdZLWD5T07/J4qfaYb8Eervvcr/H2IS0GJ7UFTdqJGwWa/1IZZF6RN8rj5y8xg2BoioqwyhpS3I7gROorvBg6hMSFh4eYXROfzISFgWiF5eouqLDFV3P8geZwxSRDnzOaDyCe3Y7EaxhPBjHbtYA/DLJnfWLC6H6AnAA+fLxTZHjtEL/7Mcc+8MYPzH1mAf9gA0UiXxfzFWLSiAzWDBF+Uzpxn2XO25DNREAiZeYIHqYaq6iaMlcNtk5iiSMm+aO6VPqh1tuPoIND/ry5aALN3TlgjnOoDOTGpJIlakKGfGnRHaM/Jd0vbiJ723UUAM='
1111
1212 let e = base64'qGBPhudr70q2hdpdMHxxPVdk+MJDazUwWbBTl+eJCx/zUEagbSAhrTUc40Jajsexh+ThMSv1ZlKhNgbjvc8GFwfScaiOtcM0fDjNcUeChr2NpgbQV+y4XTvC8sjwVXEareR6FvrGlyEdKcFx+vIagiT77lQ3MK/EfxwlNHsEdAy0sWThEjpDykFPiYWG6T5IJWIGtdhrcPdePYv1GX0wCakWmTMh9NWYby1erGRPnDxWxeFcOBN4DPhkSQKg/DMH1LkY/GlCqIdfdX5Mr+0CMQWnmr8oECA5QgeOJ1ZnSQmO18Jg9rclNx9mhqD3iux0b+o293HkYg4d75ZOBeUqLdx63/eIe/VEuwIkGFBs4sU9WHEsdqpx8QKpByl6ZKgiOcx/wrW0cwTvm34cq5pRVGunz+qu90se2PqAjOjiIRoDvrcCR7qlN0iTvBedZRTlOtbOxAiXOb/nwFrsmf8wFiebpKkjbNkNvTiLGRiea53xusmuNwANOZtfYMT03Kwf1bgRFrkM6TqgEVZq1Vl7wjFhGu3CFrk5popRZ0X8zhJqn5IPLt6g/0ImUPee8frB6VtMYYkmQ7ZCWTwKEPGDIgQAAACMoBtyPY40yogNVj5bF/LbEe5QGKZjwyfMj58AY5ocK00CEsC3Nm1wSKR6xi8NSbjhPZRw0/zChVK9K8ceAO4ijNFpOFuOpTO6aEq0o7spO/E0JTwTStxF0jdD9NCydSTLZi4DdtHHkcph4Sao8AwV4qd50wavb0/hxCXkVWTvErgnIWCgjrfgzQBDfa99z0alUbwyBBd8odwfJU7bERsH/SfhNempxiwEU1uq6TPQ2NxgN3fgXo5i9dHrSaI2ZQd7R9hyJVeMlBaz6uP4gS1XYlt5LkT+TFGT/vidKlcMHQx945x1Iivq728eKgJ4aBI5Ja1nxj7QC7d98xukukQl'
1313
1414 let f = toBytes(parseBigIntValue("11469701942666298368112882412133877458305516134926649826543144744382391691533"))
1515
1616 func g (h) = ("R:" + toString(h))
1717
1818
1919 func i (j) = ("N:" + toBase58String(j))
2020
2121
2222 func k (l) = ("D:" + toBase58String(l))
2323
2424
2525 let m = "PoolIndex"
2626
27-func n (o,p,q) = drop(take(o, q), p)
27+let n = "AllMessagesHash"
28+
29+func o (p,q,r) = drop(take(p, r), q)
2830
2931
30-func r (l,s) = {
31- let t = k(l.bytes)
32- let u = {
33- let v = getInteger(t)
34- if ($isInstanceOf(v, "Int"))
32+func s (l,t) = {
33+ let u = k(l.bytes)
34+ let v = {
35+ let w = getInteger(u)
36+ if ($isInstanceOf(w, "Int"))
3537 then {
36- let w = v
37- w
38+ let x = w
39+ x
3840 }
3941 else 0
4042 }
41- let x = (u - s)
42- if ((0 > s))
43+ let y = (v - t)
44+ if ((0 > t))
4345 then throw("Can't spend negative amount")
44- else if ((0 > x))
46+ else if ((0 > y))
4547 then throw("Not enough balance")
46- else [IntegerEntry(t, x)]
48+ else [IntegerEntry(u, y)]
4749 }
4850
4951
50-@Callable(y)
52+@Callable(z)
5153 func deposit () = {
52- let z = value(y.payments[0])
53- if (isDefined(z.assetId))
54+ let A = value(z.payments[0])
55+ if (isDefined(A.assetId))
5456 then throw("Only WAVES is allowed at the moment")
5557 else {
56- let t = k(y.caller.bytes)
57- let u = {
58- let v = getInteger(this, t)
59- if ($isInstanceOf(v, "Int"))
58+ let u = k(z.caller.bytes)
59+ let v = {
60+ let w = getInteger(this, u)
61+ if ($isInstanceOf(w, "Int"))
6062 then {
61- let w = v
62- w
63+ let x = w
64+ x
6365 }
6466 else 0
6567 }
66- let x = (u + z.amount)
67-[IntegerEntry(t, x)]
68+ let y = (v + A.amount)
69+[IntegerEntry(u, y)]
6870 }
6971 }
7072
7173
7274
73-@Callable(y)
74-func withdraw (s) = {
75- let t = k(y.caller.bytes)
76- let u = {
77- let v = getInteger(this, t)
78- if ($isInstanceOf(v, "Int"))
75+@Callable(z)
76+func withdraw (t) = {
77+ let u = k(z.caller.bytes)
78+ let v = {
79+ let w = getInteger(this, u)
80+ if ($isInstanceOf(w, "Int"))
7981 then {
80- let w = v
81- w
82+ let x = w
83+ x
8284 }
8385 else 0
8486 }
85- let x = (u - s)
86- if ((0 > s))
87+ let y = (v - t)
88+ if ((0 > t))
8789 then throw("Can't withdraw negative amount")
88- else if ((0 > x))
90+ else if ((0 > y))
8991 then throw("Not enough balance")
90- else [IntegerEntry(t, x), ScriptTransfer(y.caller, s, unit)]
92+ else [IntegerEntry(u, y), ScriptTransfer(z.caller, t, unit)]
9193 }
9294
9395
9496
95-@Callable(y)
96-func transact (A) = {
97- let j = n(A, 0, 32)
98- let B = n(A, 32, 64)
99- let C = n(A, 64, 96)
100- let D = n(A, 96, 128)
101- let E = toInt(n(D, 0, 8))
102- let F = toInt(n(D, 8, 22))
103- let G = toInt(n(D, 22, 28))
104- let H = n(D, 28, 31)
105- let I = n(A, 128, 384)
106- let J = n(A, 384, 640)
107- let K = n(A, 640, 672)
108- let L = toInt(n(A, 672, 674))
109- let M = if ((L == 0))
97+@Callable(z)
98+func transact (B) = {
99+ let j = o(B, 0, 32)
100+ let C = o(B, 32, 64)
101+ let D = o(B, 64, 96)
102+ let E = o(B, 96, 128)
103+ let F = toInt(o(E, 0, 8))
104+ let G = toInt(o(E, 8, 22))
105+ let H = toInt(o(E, 22, 28))
106+ let I = o(E, 28, 31)
107+ let J = o(B, 128, 384)
108+ let K = o(B, 384, 640)
109+ let L = o(B, 640, 672)
110+ let M = toInt(o(B, 672, 674))
111+ let N = if ((M == 0))
110112 then {
111- let N = (32 + 64)
112- let O = dropRight(takeRight(A, N), 64)
113- let P = takeRight(A, 64)
114- $Tuple3(n(A, 674, (size(A) - N)), O, P)
113+ let O = (32 + 64)
114+ let P = dropRight(takeRight(B, O), 64)
115+ let Q = takeRight(B, 64)
116+ $Tuple3(o(B, 674, (size(B) - O)), P, Q)
115117 }
116- else $Tuple3(n(A, 674, size(A)), unit, unit)
117- let Q = M._1
118- let O = M._2
119- let P = M._3
120- let R = toInt(n(Q, 0, 8))
121- let S = keccak256(Q)
122- let T = valueOrElse(getBinary(g(G)), f)
123- if ((T == T))
118+ else $Tuple3(o(B, 674, size(B)), unit, unit)
119+ let R = N._1
120+ let P = N._2
121+ let Q = N._3
122+ let S = toInt(o(R, 0, 8))
123+ let T = valueOrElse(getBinary(n), toBytes(toBigInt(0)))
124+ let U = keccak256(R)
125+ let V = (T + U)
126+ let W = keccak256(V)
127+ let X = valueOrElse(getBinary(g(H)), f)
128+ if ((X == X))
124129 then {
125- let U = valueOrElse(getInteger(m), 0)
126- let V = valueOrElse(getBinary(g(U)), f)
127- let W = {
128- let v = getBinary(i(j))
129- if ($isInstanceOf(v, "Unit"))
130+ let Y = valueOrElse(getInteger(m), 0)
131+ let Z = valueOrElse(getBinary(g(Y)), f)
132+ let aa = {
133+ let w = getBinary(i(j))
134+ if ($isInstanceOf(w, "Unit"))
130135 then {
131- let w = v
136+ let x = w
132137 false
133138 }
134139 else true
135140 }
136- let X = ((((S + j) + B) + D) + S)
137- let Y = ((V + K) + B)
138- let Z = [BinaryEntry(g(G), K), BinaryEntry(i(j), keccak256((B + D))), IntegerEntry(m, (U + 128))]
139- let aa = {
140- let v = L
141- if ((0 == v))
141+ let ab = ((((U + j) + C) + E) + U)
142+ let ac = ((Z + L) + C)
143+ let ad = [BinaryEntry(g(H), L), BinaryEntry(i(j), keccak256((C + E))), IntegerEntry(m, (Y + 128)), BinaryEntry(n, W)]
144+ let ae = {
145+ let w = M
146+ if ((0 == w))
142147 then {
143- let ab = value(O)
144- let ac = addressFromPublicKey(ab)
145- if ((0 > E))
148+ let af = value(P)
149+ let ag = addressFromPublicKey(af)
150+ if ((0 > F))
146151 then throw("Can't deposit negative amount")
147- else if (!(sigVerify_8Kb((j + ab), value(P), ab)))
152+ else if (!(sigVerify_8Kb((j + af), value(Q), af)))
148153 then throw("Invalid deposit signature")
149- else r(ac, (E * c))
154+ else s(ag, (F * c))
150155 }
151- else if ((1 == v))
152- then if ((E != 0))
156+ else if ((1 == w))
157+ then if ((F != 0))
153158 then throw("Native amount must be zero for transfers")
154159 else nil
155- else if ((2 == v))
160+ else if ((2 == w))
156161 then {
157- let ad = (toInt(n(Q, 8, 16)) * c)
158- if ((ad > 0))
162+ let ah = (toInt(o(R, 8, 16)) * c)
163+ if ((ah > 0))
159164 then throw("Withdraw amount must be positive")
160- else [ScriptTransfer(y.caller, -(ad), unit)]
165+ else [ScriptTransfer(z.caller, -(ah), unit)]
161166 }
162167 else throw("Unknown tx type")
163168 }
164- let ae = if ((R > 0))
169+ let ai = if ((S > 0))
165170 then {
166- let af = (R * c)
167-[ScriptTransfer(b, R, unit)]
171+ let aj = (S * c)
172+[ScriptTransfer(b, S, unit)]
168173 }
169174 else nil
170- if ((G > U))
175+ if ((H > Y))
171176 then throw("Transaction index is too big")
172- else if (!(bn256Groth16Verify_5inputs(d, I, X)))
177+ else if (!(bn256Groth16Verify_5inputs(d, J, ab)))
173178 then throw("Tx proof is invalid")
174- else if (!(bn256Groth16Verify_3inputs(e, J, Y)))
179+ else if (!(bn256Groth16Verify_3inputs(e, K, ac)))
175180 then throw("Tree proof is invalid")
176- else if (W)
181+ else if (aa)
177182 then throw("Double spend")
178- else ((aa ++ Z) ++ ae)
183+ else ((ae ++ ad) ++ ai)
179184 }
180185 else throw("Strict value is not equal to itself.")
181186 }
182187
183188
184-@Verifier(A)
185-func ag () = {
186- let v = A
187- if ($isInstanceOf(v, "SetScriptTransaction"))
189+@Verifier(B)
190+func ak () = {
191+ let w = B
192+ if ($isInstanceOf(w, "SetScriptTransaction"))
188193 then {
189- let ah = v
190- sigVerify(A.bodyBytes, A.proofs[0], a)
194+ let al = w
195+ sigVerify(B.bodyBytes, B.proofs[0], a)
191196 }
192197 else false
193198 }
194199

github/deemru/w8io/873ac7e 
82.10 ms