tx · 955pwN2gQ3KaUdziNw2bwgV3tEjTWLRwvT2BbqbeG6Qz

3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM:  -0.01000000 Waves

2023.11.02 18:09 [2825880] smart account 3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM > SELF 0.00000000 Waves

{ "type": 13, "id": "955pwN2gQ3KaUdziNw2bwgV3tEjTWLRwvT2BbqbeG6Qz", "fee": 1000000, "feeAssetId": null, "timestamp": 1698937872714, "version": 2, "chainId": 84, "sender": "3N8kB3UEjWWvTRBtGpGUErAevaK2q6u2eCM", "senderPublicKey": "6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM", "proofs": [ "4ihaRfiFspC72nFWnUBNWrPEFmCfW4Afj5bAqMMaog8bhrv7kMSJ92zH9c44GE2j1SBRiyPPiPR9Xfu95VKa5Ga2" ], "script": "base64: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dE51bGxpZmllcktleQEJbnVsbGlmaWVyCQCsAgICAk46CQDYBAEFCW51bGxpZmllcgENZ2V0RGVwb3NpdEtleQEHYWRkcmVzcwkArAICAgJEOgkA2AQBBQdhZGRyZXNzAAxwb29sSW5kZXhLZXkCCVBvb2xJbmRleAASYWxsTWVzc2FnZXNIYXNoS2V5Ag9BbGxNZXNzYWdlc0hhc2gAC29wZXJhdG9yS2V5AgpPcGVyYXRvclBrAQd0YWtlRXh0AwF2BGZyb20BbgkAyQECCQDKAQIFAXYFBGZyb20FAW4BDHNwZW5kRGVwb3NpdAIHYWRkcmVzcwZhbW91bnQECmN1cnJlbnRLZXkJAQ1nZXREZXBvc2l0S2V5AQgFB2FkZHJlc3MFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJ8IAQUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50AwkAZgIAAAUGYW1vdW50CQACAQIbQ2FuJ3Qgc3BlbmQgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQFA25pbAENZ2V0T3BlcmF0b3JQawAEByRtYXRjaDAJAKEIAQULb3BlcmF0b3JLZXkDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAUBYQUHb3duZXJQawQBaQENc2V0T3BlcmF0b3JQawECcGsDCQECIT0CCQDIAQEFAnBrACAJAAIBAilPcGVyYXRvciBwdWJsaWMga2V5IG11c3QgYmUgMzIgYnl0ZXMgbG9uZwkAzAgCCQELQmluYXJ5RW50cnkCBQtvcGVyYXRvcktleQUCcGsFA25pbAFpAQdkZXBvc2l0AAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQACAQIjT25seSBXQVZFUyBpcyBhbGxvd2VkIGF0IHRoZSBtb21lbnQECmN1cnJlbnRLZXkJAQ1nZXREZXBvc2l0S2V5AQgIBQFpBmNhbGxlcgVieXRlcwQNY3VycmVudEFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzBQpjdXJyZW50S2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAluZXdBbW91bnQJAGQCBQ1jdXJyZW50QW1vdW50CAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUKY3VycmVudEtleQUJbmV3QW1vdW50BQNuaWwBaQEId2l0aGRyYXcBBmFtb3VudAQKY3VycmVudEtleQkBDWdldERlcG9zaXRLZXkBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCmN1cnJlbnRLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZQIFDWN1cnJlbnRBbW91bnQFBmFtb3VudAMJAGYCAAAFBmFtb3VudAkAAgECHkNhbid0IHdpdGhkcmF3IG5lZ2F0aXZlIGFtb3VudAMJAGYCAAAFCW5ld0Ftb3VudAkAAgECEk5vdCBlbm91Z2ggYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUKY3VycmVudEtleQUJbmV3QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQR1bml0BQNuaWwBaQEIdHJhbnNhY3QBAnR4BAludWxsaWZpZXIJAMkBAgUCdHgAIAQJb3V0Q29tbWl0CQEHdGFrZUV4dAMFAnR4ACAAIAQHYXNzZXRJZAkBB3Rha2VFeHQDBQJ0eABAACAEBWRlbHRhCQEHdGFrZUV4dAMFAnR4AGAAIAQMbmF0aXZlQW1vdW50CQCxCQEJAMkBAgUFZGVsdGEACAQMbmF0aXZlRW5lcmd5CQCeAwEJAQd0YWtlRXh0AwUFZGVsdGEACAAOBAd0eEluZGV4CQCxCQEJAMsBAgED0000CQEHdGFrZUV4dAMFBWRlbHRhABYABgQHX3Bvb2xJZAkBB3Rha2VFeHQDBQVkZWx0YQAcAAMEB3R4UHJvb2YJAQd0YWtlRXh0AwUCdHgAgAEAgAIECXRyZWVQcm9vZgkBB3Rha2VFeHQDBQJ0eACAAwCAAgQJcm9vdEFmdGVyCQEHdGFrZUV4dAMFAnR4AIAFACAEBnR4VHlwZQkAsQkBCQDLAQIBCdNNNNNNNNNNNAkBB3Rha2VFeHQDBQJ0eACgBQACBAhmdWxsTWVtbwkAygECBQJ0eACiBQQLJHQwNTk5NjYzNDQDCQAAAgUGdHhUeXBlAAAED2RlcG9zaXREYXRhU2l6ZQkAZAIAIABABAlkZXBvc2l0UGsJAM0BAgkAzAECBQhmdWxsTWVtbwUPZGVwb3NpdERhdGFTaXplAEAEEGRlcG9zaXRTaWduYXR1cmUJAMwBAgUIZnVsbE1lbW8AQAkAlQoDCQDNAQIFCGZ1bGxNZW1vBQ9kZXBvc2l0RGF0YVNpemUFCWRlcG9zaXRQawUQZGVwb3NpdFNpZ25hdHVyZQkAlQoDBQhmdWxsTWVtbwUEdW5pdAUEdW5pdAQEbWVtbwgFCyR0MDU5OTY2MzQ0Al8xBAlkZXBvc2l0UGsIBQskdDA1OTk2NjM0NAJfMgQQZGVwb3NpdFNpZ25hdHVyZQgFCyR0MDU5OTY2MzQ0Al8zBANmZWUJALEJAQkAyQECBQRtZW1vAAgED2FsbE1lc3NhZ2VzSGFzaAkBC3ZhbHVlT3JFbHNlAgkAoQgBBRJhbGxNZXNzYWdlc0hhc2hLZXkJAJ0DAQkAtgIBAAAECG1lbW9IYXNoCQD1AwEFBG1lbW8EBmhhc2hlcwkAywECBQ9hbGxNZXNzYWdlc0hhc2gFCG1lbW9IYXNoBBJuZXdBbGxNZXNzYWdlc0hhc2gJAPUDAQUGaGFzaGVzBApyb290QmVmb3JlCQELdmFsdWVPckVsc2UCCQChCAEJAQpnZXRSb290S2V5AQUHdHhJbmRleAULaW5pdGlhbFJvb3QDCQAAAgUKcm9vdEJlZm9yZQUKcm9vdEJlZm9yZQQJcG9vbEluZGV4CQELdmFsdWVPckVsc2UCCQCfCAEFDHBvb2xJbmRleEtleQAABAhwb29sUm9vdAkBC3ZhbHVlT3JFbHNlAgkAoQgBCQEKZ2V0Um9vdEtleQEFCXBvb2xJbmRleAULaW5pdGlhbFJvb3QED251bGxpZmllckV4aXN0cwQHJG1hdGNoMAkAoQgBCQEPZ2V0TnVsbGlmaWVyS2V5AQUJbnVsbGlmaWVyAwkAAQIFByRtYXRjaDACBFVuaXQEAWEFByRtYXRjaDAHBgQOdHJhbnNmZXJJbnB1dHMJAMsBAgkAywECCQDLAQIJAMsBAgUIbWVtb0hhc2gFCW51bGxpZmllcgUJb3V0Q29tbWl0BQVkZWx0YQUIbWVtb0hhc2gECnRyZWVJbnB1dHMJAMsBAgkAywECBQhwb29sUm9vdAUJcm9vdEFmdGVyBQlvdXRDb21taXQEB2RhdGFPcHMJAMwIAgkBC0JpbmFyeUVudHJ5AgkBCmdldFJvb3RLZXkBBQd0eEluZGV4BQlyb290QWZ0ZXIJAMwIAgkBC0JpbmFyeUVudHJ5AgkBD2dldE51bGxpZmllcktleQEFCW51bGxpZmllcgkA9QMBCQDLAQIFCW91dENvbW1pdAUFZGVsdGEJAMwIAgkBDEludGVnZXJFbnRyeQIFDHBvb2xJbmRleEtleQkAZAIFCXBvb2xJbmRleACAAQkAzAgCCQELQmluYXJ5RW50cnkCBRJhbGxNZXNzYWdlc0hhc2hLZXkFEm5ld0FsbE1lc3NhZ2VzSGFzaAUDbmlsBAV0eE9wcwQHJG1hdGNoMAUGdHhUeXBlAwkAAAIAAAUHJG1hdGNoMAQOZGVwb3NpdFBrVmFsdWUJAQV2YWx1ZQEFCWRlcG9zaXRQawQOZGVwb3NpdEFkZHJlc3MJAKcIAQUOZGVwb3NpdFBrVmFsdWUDCQBmAgAABQxuYXRpdmVBbW91bnQJAAIBAh1DYW4ndCBkZXBvc2l0IG5lZ2F0aXZlIGFtb3VudAMJAQEhAQkAxBMDCQDLAQIFCW51bGxpZmllcgUOZGVwb3NpdFBrVmFsdWUJAQV2YWx1ZQEFEGRlcG9zaXRTaWduYXR1cmUFDmRlcG9zaXRQa1ZhbHVlCQACAQIZSW52YWxpZCBkZXBvc2l0IHNpZ25hdHVyZQkBDHNwZW5kRGVwb3NpdAIFDmRlcG9zaXRBZGRyZXNzCQBoAgUMbmF0aXZlQW1vdW50BQtkZW5vbWluYXRvcgMJAAACAAEFByRtYXRjaDADCQECIT0CBQxuYXRpdmVBbW91bnQAAAkAAgECKE5hdGl2ZSBhbW91bnQgbXVzdCBiZSB6ZXJvIGZvciB0cmFuc2ZlcnMFA25pbAMJAAACAAIFByRtYXRjaDAEDndpdGhkcmF3QW1vdW50CQBoAgkAsQkBCQEHdGFrZUV4dAMFBG1lbW8ACAAIBQtkZW5vbWluYXRvcgMJAGYCBQ53aXRoZHJhd0Ftb3VudAAACQACAQIgV2l0aGRyYXcgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQEBLQEFDndpdGhkcmF3QW1vdW50BQR1bml0BQNuaWwJAAIBAg9Vbmtub3duIHR4IHR5cGUEBmZlZU9wcwMJAGYCBQNmZWUAAAQIdG90YWxGZWUJAGgCBQNmZWUFC2Rlbm9taW5hdG9yBApvcGVyYXRvclBrCQENZ2V0T3BlcmF0b3JQawAED29wZXJhdG9yQWRkcmVzcwkApwgBBQpvcGVyYXRvclBrCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD29wZXJhdG9yQWRkcmVzcwUDZmVlBQR1bml0BQNuaWwFA25pbAMJAGYCBQd0eEluZGV4BQlwb29sSW5kZXgJAAIBAhlJbnZhbGlkIHRyYW5zYWN0aW9uIGluZGV4AwkBASEBCQCWEwMFCnRyYW5zZmVyVmsFB3R4UHJvb2YFDnRyYW5zZmVySW5wdXRzCQACAQITVHggcHJvb2YgaXMgaW52YWxpZAMJAQEhAQkAlBMDBQZ0cmVlVmsFCXRyZWVQcm9vZgUKdHJlZUlucHV0cwkAAgECFVRyZWUgcHJvb2YgaXMgaW52YWxpZAMFD251bGxpZmllckV4aXN0cwkAAgECDERvdWJsZSBzcGVuZAkAzggCCQDOCAIFBXR4T3BzBQdkYXRhT3BzBQZmZWVPcHMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBZAUHJG1hdGNoMAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUHb3duZXJQawMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQBZAUHJG1hdGNoMAQHJG1hdGNoMQgFAWQIZnVuY3Rpb24DCQAAAgINc2V0T3BlcmF0b3JQawUHJG1hdGNoMQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUHb3duZXJQawMJAAACAgh0cmFuc2FjdAUHJG1hdGNoMQQKb3BlcmF0b3JQawkBDWdldE9wZXJhdG9yUGsACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQpvcGVyYXRvclBrCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BzqUbK4=", "height": 2825880, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9bgCno2uV9NBNaan1MSRAjVzoY9Yidpe6MKPf2XUEbae Next: 5yNpcWxTAPstoVdiyMwVvrtgUcuVY7k1tys44B7KNxJ Diff:
OldNewDifferences
114114
115115 @Callable(A)
116116 func transact (D) = {
117- let E = z()
118- let F = addressFromPublicKey(E)
119- let i = o(D, 0, 32)
120- let G = o(D, 32, 32)
121- let H = o(D, 64, 32)
122- let I = o(D, 96, 32)
123- let J = toInt(o(I, 0, 8))
124- let K = toInt(o(I, 8, 14))
125- let L = toInt(o(I, 22, 6))
126- let M = o(I, 28, 3)
127- let N = o(D, 128, 256)
128- let O = o(D, 384, 256)
129- let P = o(D, 640, 32)
130- let Q = toInt(o(D, 672, 2))
131- let R = if ((Q == 0))
117+ let i = take(D, 32)
118+ let E = o(D, 32, 32)
119+ let F = o(D, 64, 32)
120+ let G = o(D, 96, 32)
121+ let H = toInt(take(G, 8))
122+ let I = toBigInt(o(G, 8, 14))
123+ let J = toInt((base58'2DyVD' + o(G, 22, 6)))
124+ let K = o(G, 28, 3)
125+ let L = o(D, 128, 256)
126+ let M = o(D, 384, 256)
127+ let N = o(D, 640, 32)
128+ let O = toInt((base58'3gznry4ApWXU7' + o(D, 672, 2)))
129+ let P = drop(D, 674)
130+ let Q = if ((O == 0))
132131 then {
133- let S = drop(D, 674)
134- let T = (32 + 64)
135- let U = dropRight(takeRight(D, T), 64)
136- let V = takeRight(D, 64)
137- $Tuple3(o(D, 674, (size(S) - T)), U, V)
132+ let R = (32 + 64)
133+ let S = dropRight(takeRight(P, R), 64)
134+ let T = takeRight(P, 64)
135+ $Tuple3(dropRight(P, R), S, T)
138136 }
139- else $Tuple3(drop(D, 674), unit, unit)
140- let W = R._1
141- let U = R._2
142- let V = R._3
143- let X = toInt(o(W, 0, 8))
144- let Y = valueOrElse(getBinary(m), toBytes(toBigInt(0)))
145- let Z = keccak256(W)
146- let aa = (Y + Z)
147- let ab = keccak256(aa)
148- let ac = valueOrElse(getBinary(f(L)), e)
149- if ((ac == ac))
137+ else $Tuple3(P, unit, unit)
138+ let U = Q._1
139+ let S = Q._2
140+ let T = Q._3
141+ let V = toInt(take(U, 8))
142+ let W = valueOrElse(getBinary(m), toBytes(toBigInt(0)))
143+ let X = keccak256(U)
144+ let Y = (W + X)
145+ let Z = keccak256(Y)
146+ let aa = valueOrElse(getBinary(f(J)), e)
147+ if ((aa == aa))
150148 then {
151- let ad = valueOrElse(getInteger(l), 0)
152- let ae = valueOrElse(getBinary(f(ad)), e)
153- let af = {
149+ let ab = valueOrElse(getInteger(l), 0)
150+ let ac = valueOrElse(getBinary(f(ab)), e)
151+ let ad = {
154152 let w = getBinary(h(i))
155153 if ($isInstanceOf(w, "Unit"))
156154 then {
159157 }
160158 else true
161159 }
162- let ag = ((((Z + i) + G) + I) + Z)
163- let ah = ((ae + P) + G)
164- let ai = [BinaryEntry(f(L), P), BinaryEntry(h(i), keccak256((G + I))), IntegerEntry(l, (ad + 128)), BinaryEntry(m, ab)]
165- let aj = {
166- let w = Q
160+ let ae = ((((X + i) + E) + G) + X)
161+ let af = ((ac + N) + E)
162+ let ag = [BinaryEntry(f(J), N), BinaryEntry(h(i), keccak256((E + G))), IntegerEntry(l, (ab + 128)), BinaryEntry(m, Z)]
163+ let ah = {
164+ let w = O
167165 if ((0 == w))
168166 then {
169- let ak = value(U)
170- let al = addressFromPublicKey(ak)
171- if ((0 > J))
167+ let ai = value(S)
168+ let aj = addressFromPublicKey(ai)
169+ if ((0 > H))
172170 then throw("Can't deposit negative amount")
173- else if (!(sigVerify_8Kb((i + ak), value(V), ak)))
171+ else if (!(sigVerify_8Kb((i + ai), value(T), ai)))
174172 then throw("Invalid deposit signature")
175- else s(al, (J * b))
173+ else s(aj, (H * b))
176174 }
177175 else if ((1 == w))
178- then if ((J != 0))
176+ then if ((H != 0))
179177 then throw("Native amount must be zero for transfers")
180178 else nil
181179 else if ((2 == w))
182180 then {
183- let am = (toInt(o(W, 8, 16)) * b)
184- if ((am > 0))
181+ let ak = (toInt(o(U, 8, 8)) * b)
182+ if ((ak > 0))
185183 then throw("Withdraw amount must be positive")
186- else [ScriptTransfer(A.caller, -(am), unit)]
184+ else [ScriptTransfer(A.caller, -(ak), unit)]
187185 }
188186 else throw("Unknown tx type")
189187 }
190- let an = if ((X > 0))
188+ let al = if ((V > 0))
191189 then {
192- let ao = (X * b)
193-[ScriptTransfer(F, X, unit)]
190+ let am = (V * b)
191+ let an = z()
192+ let ao = addressFromPublicKey(an)
193+[ScriptTransfer(ao, V, unit)]
194194 }
195195 else nil
196- if ((L > ad))
196+ if ((J > ab))
197197 then throw("Invalid transaction index")
198- else if (!(bn256Groth16Verify_5inputs(c, N, ag)))
198+ else if (!(bn256Groth16Verify_5inputs(c, L, ae)))
199199 then throw("Tx proof is invalid")
200- else if (!(bn256Groth16Verify_3inputs(d, O, ah)))
200+ else if (!(bn256Groth16Verify_3inputs(d, M, af)))
201201 then throw("Tree proof is invalid")
202- else if (af)
202+ else if (ad)
203203 then throw("Double spend")
204- else ((aj ++ ai) ++ an)
204+ else ((ah ++ ag) ++ al)
205205 }
206206 else throw("Strict value is not equal to itself.")
207207 }
223223 then sigVerify(D.bodyBytes, D.proofs[0], a)
224224 else if (("transact" == ar))
225225 then {
226- let E = z()
227- sigVerify(D.bodyBytes, D.proofs[0], E)
226+ let an = z()
227+ sigVerify(D.bodyBytes, D.proofs[0], an)
228228 }
229229 else sigVerify(D.bodyBytes, D.proofs[0], D.senderPublicKey)
230230 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'6ybktvseycJDGHTjJm3tz9iT2SKaTNtLLCZsJZRemtoM'
55
66 let b = 100000000
77
88 let c = 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='
99
1010 let d = 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'
1111
1212 let e = toBytes(parseBigIntValue("11469701942666298368112882412133877458305516134926649826543144744382391691533"))
1313
1414 func f (g) = ("R:" + toString(g))
1515
1616
1717 func h (i) = ("N:" + toBase58String(i))
1818
1919
2020 func j (k) = ("D:" + toBase58String(k))
2121
2222
2323 let l = "PoolIndex"
2424
2525 let m = "AllMessagesHash"
2626
2727 let n = "OperatorPk"
2828
2929 func o (p,q,r) = take(drop(p, q), r)
3030
3131
3232 func s (k,t) = {
3333 let u = j(k.bytes)
3434 let v = {
3535 let w = getInteger(u)
3636 if ($isInstanceOf(w, "Int"))
3737 then {
3838 let x = w
3939 x
4040 }
4141 else 0
4242 }
4343 let y = (v - t)
4444 if ((0 > t))
4545 then throw("Can't spend negative amount")
4646 else if ((0 > y))
4747 then throw("Not enough balance")
4848 else [IntegerEntry(u, y)]
4949 }
5050
5151
5252 func z () = {
5353 let w = getBinary(n)
5454 if ($isInstanceOf(w, "ByteVector"))
5555 then {
5656 let x = w
5757 x
5858 }
5959 else a
6060 }
6161
6262
6363 @Callable(A)
6464 func setOperatorPk (B) = if ((size(B) != 32))
6565 then throw("Operator public key must be 32 bytes long")
6666 else [BinaryEntry(n, B)]
6767
6868
6969
7070 @Callable(A)
7171 func deposit () = {
7272 let C = value(A.payments[0])
7373 if (isDefined(C.assetId))
7474 then throw("Only WAVES is allowed at the moment")
7575 else {
7676 let u = j(A.caller.bytes)
7777 let v = {
7878 let w = getInteger(this, u)
7979 if ($isInstanceOf(w, "Int"))
8080 then {
8181 let x = w
8282 x
8383 }
8484 else 0
8585 }
8686 let y = (v + C.amount)
8787 [IntegerEntry(u, y)]
8888 }
8989 }
9090
9191
9292
9393 @Callable(A)
9494 func withdraw (t) = {
9595 let u = j(A.caller.bytes)
9696 let v = {
9797 let w = getInteger(this, u)
9898 if ($isInstanceOf(w, "Int"))
9999 then {
100100 let x = w
101101 x
102102 }
103103 else 0
104104 }
105105 let y = (v - t)
106106 if ((0 > t))
107107 then throw("Can't withdraw negative amount")
108108 else if ((0 > y))
109109 then throw("Not enough balance")
110110 else [IntegerEntry(u, y), ScriptTransfer(A.caller, t, unit)]
111111 }
112112
113113
114114
115115 @Callable(A)
116116 func transact (D) = {
117- let E = z()
118- let F = addressFromPublicKey(E)
119- let i = o(D, 0, 32)
120- let G = o(D, 32, 32)
121- let H = o(D, 64, 32)
122- let I = o(D, 96, 32)
123- let J = toInt(o(I, 0, 8))
124- let K = toInt(o(I, 8, 14))
125- let L = toInt(o(I, 22, 6))
126- let M = o(I, 28, 3)
127- let N = o(D, 128, 256)
128- let O = o(D, 384, 256)
129- let P = o(D, 640, 32)
130- let Q = toInt(o(D, 672, 2))
131- let R = if ((Q == 0))
117+ let i = take(D, 32)
118+ let E = o(D, 32, 32)
119+ let F = o(D, 64, 32)
120+ let G = o(D, 96, 32)
121+ let H = toInt(take(G, 8))
122+ let I = toBigInt(o(G, 8, 14))
123+ let J = toInt((base58'2DyVD' + o(G, 22, 6)))
124+ let K = o(G, 28, 3)
125+ let L = o(D, 128, 256)
126+ let M = o(D, 384, 256)
127+ let N = o(D, 640, 32)
128+ let O = toInt((base58'3gznry4ApWXU7' + o(D, 672, 2)))
129+ let P = drop(D, 674)
130+ let Q = if ((O == 0))
132131 then {
133- let S = drop(D, 674)
134- let T = (32 + 64)
135- let U = dropRight(takeRight(D, T), 64)
136- let V = takeRight(D, 64)
137- $Tuple3(o(D, 674, (size(S) - T)), U, V)
132+ let R = (32 + 64)
133+ let S = dropRight(takeRight(P, R), 64)
134+ let T = takeRight(P, 64)
135+ $Tuple3(dropRight(P, R), S, T)
138136 }
139- else $Tuple3(drop(D, 674), unit, unit)
140- let W = R._1
141- let U = R._2
142- let V = R._3
143- let X = toInt(o(W, 0, 8))
144- let Y = valueOrElse(getBinary(m), toBytes(toBigInt(0)))
145- let Z = keccak256(W)
146- let aa = (Y + Z)
147- let ab = keccak256(aa)
148- let ac = valueOrElse(getBinary(f(L)), e)
149- if ((ac == ac))
137+ else $Tuple3(P, unit, unit)
138+ let U = Q._1
139+ let S = Q._2
140+ let T = Q._3
141+ let V = toInt(take(U, 8))
142+ let W = valueOrElse(getBinary(m), toBytes(toBigInt(0)))
143+ let X = keccak256(U)
144+ let Y = (W + X)
145+ let Z = keccak256(Y)
146+ let aa = valueOrElse(getBinary(f(J)), e)
147+ if ((aa == aa))
150148 then {
151- let ad = valueOrElse(getInteger(l), 0)
152- let ae = valueOrElse(getBinary(f(ad)), e)
153- let af = {
149+ let ab = valueOrElse(getInteger(l), 0)
150+ let ac = valueOrElse(getBinary(f(ab)), e)
151+ let ad = {
154152 let w = getBinary(h(i))
155153 if ($isInstanceOf(w, "Unit"))
156154 then {
157155 let x = w
158156 false
159157 }
160158 else true
161159 }
162- let ag = ((((Z + i) + G) + I) + Z)
163- let ah = ((ae + P) + G)
164- let ai = [BinaryEntry(f(L), P), BinaryEntry(h(i), keccak256((G + I))), IntegerEntry(l, (ad + 128)), BinaryEntry(m, ab)]
165- let aj = {
166- let w = Q
160+ let ae = ((((X + i) + E) + G) + X)
161+ let af = ((ac + N) + E)
162+ let ag = [BinaryEntry(f(J), N), BinaryEntry(h(i), keccak256((E + G))), IntegerEntry(l, (ab + 128)), BinaryEntry(m, Z)]
163+ let ah = {
164+ let w = O
167165 if ((0 == w))
168166 then {
169- let ak = value(U)
170- let al = addressFromPublicKey(ak)
171- if ((0 > J))
167+ let ai = value(S)
168+ let aj = addressFromPublicKey(ai)
169+ if ((0 > H))
172170 then throw("Can't deposit negative amount")
173- else if (!(sigVerify_8Kb((i + ak), value(V), ak)))
171+ else if (!(sigVerify_8Kb((i + ai), value(T), ai)))
174172 then throw("Invalid deposit signature")
175- else s(al, (J * b))
173+ else s(aj, (H * b))
176174 }
177175 else if ((1 == w))
178- then if ((J != 0))
176+ then if ((H != 0))
179177 then throw("Native amount must be zero for transfers")
180178 else nil
181179 else if ((2 == w))
182180 then {
183- let am = (toInt(o(W, 8, 16)) * b)
184- if ((am > 0))
181+ let ak = (toInt(o(U, 8, 8)) * b)
182+ if ((ak > 0))
185183 then throw("Withdraw amount must be positive")
186- else [ScriptTransfer(A.caller, -(am), unit)]
184+ else [ScriptTransfer(A.caller, -(ak), unit)]
187185 }
188186 else throw("Unknown tx type")
189187 }
190- let an = if ((X > 0))
188+ let al = if ((V > 0))
191189 then {
192- let ao = (X * b)
193-[ScriptTransfer(F, X, unit)]
190+ let am = (V * b)
191+ let an = z()
192+ let ao = addressFromPublicKey(an)
193+[ScriptTransfer(ao, V, unit)]
194194 }
195195 else nil
196- if ((L > ad))
196+ if ((J > ab))
197197 then throw("Invalid transaction index")
198- else if (!(bn256Groth16Verify_5inputs(c, N, ag)))
198+ else if (!(bn256Groth16Verify_5inputs(c, L, ae)))
199199 then throw("Tx proof is invalid")
200- else if (!(bn256Groth16Verify_3inputs(d, O, ah)))
200+ else if (!(bn256Groth16Verify_3inputs(d, M, af)))
201201 then throw("Tree proof is invalid")
202- else if (af)
202+ else if (ad)
203203 then throw("Double spend")
204- else ((aj ++ ai) ++ an)
204+ else ((ah ++ ag) ++ al)
205205 }
206206 else throw("Strict value is not equal to itself.")
207207 }
208208
209209
210210 @Verifier(D)
211211 func ap () = {
212212 let w = D
213213 if ($isInstanceOf(w, "SetScriptTransaction"))
214214 then {
215215 let aq = w
216216 sigVerify(D.bodyBytes, D.proofs[0], a)
217217 }
218218 else if ($isInstanceOf(w, "InvokeScriptTransaction"))
219219 then {
220220 let aq = w
221221 let ar = aq.function
222222 if (("setOperatorPk" == ar))
223223 then sigVerify(D.bodyBytes, D.proofs[0], a)
224224 else if (("transact" == ar))
225225 then {
226- let E = z()
227- sigVerify(D.bodyBytes, D.proofs[0], E)
226+ let an = z()
227+ sigVerify(D.bodyBytes, D.proofs[0], an)
228228 }
229229 else sigVerify(D.bodyBytes, D.proofs[0], D.senderPublicKey)
230230 }
231231 else false
232232 }
233233

github/deemru/w8io/169f3d6 
50.05 ms