tx · 81e8LDeP4zHvSMfPz2y4Ara8wbSrBcCDyxJXjKmyZf5h

3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs:  -0.01400000 Waves

2019.08.28 00:33 [650150] smart account 3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs > SELF 0.00000000 Waves

{ "type": 13, "id": "81e8LDeP4zHvSMfPz2y4Ara8wbSrBcCDyxJXjKmyZf5h", "fee": 1400000, "feeAssetId": null, "timestamp": 1566941616994, "version": 1, "sender": "3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs", "senderPublicKey": "HSTmdhPrJF81ozDBaqVn8QVtV76oD7gzDfcHPQRdxdwW", "proofs": [ "3zmgDeaPW1NeVpiJkQwpMc3R9z7WTACn9e9jy5UdCriV4MhNQ21MX9G7BEeB2RnCainopq54BCga6H9qETDW1djV" ], "script": "base64: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", "chainId": 84, "height": 650150, "spentComplexity": 0 } View: original | compacted Prev: DW9N6GzVT9dS6xnAENzXWCwFyU4p7TFkjpnRNNAvzQeQ Next: CFW7wT9GkPHJ6X8nhsJgpveGuRPdRZSz6Cv9B2Ss7qFe Diff:
OldNewDifferences
6969 }
7070
7171
72-@Callable(z)
72+func z (s) = {
73+ let x = {
74+ let p = getInteger(this, s)
75+ if ($isInstanceOf(p, "Int"))
76+ then {
77+ let y = p
78+ y
79+ }
80+ else 0
81+ }
82+ x
83+ }
84+
85+
86+@Callable(A)
7387 func buyItem (w) = {
74- let A = toBase58String(z.transactionId)
75- let B = toString(z.caller)
88+ let B = toBase58String(A.transactionId)
89+ let C = toString(A.caller)
7690 if (if ((w > 0))
7791 then (l >= w)
7892 else false)
7993 then {
80- let C = m[w]
81- let D = (r((B + "_balance")) - C)
82- let E = DataEntry((B + "_balance"), D)
83- let F = ((B + "_itemID_") + toString(w))
84- WriteSet([DataEntry(F, 1), DataEntry(((e + "_") + A), w), E])
94+ let D = m[w]
95+ let E = (r((C + "_balance")) - D)
96+ let F = DataEntry((C + "_balance"), E)
97+ let G = ((C + "_itemID_") + toString(w))
98+ let H = z(G)
99+ WriteSet([DataEntry(G, (H + 1)), DataEntry(((e + "_") + B), w), F])
85100 }
86101 else throw("Item has not found")
87102 }
88103
89104
90105
91-@Callable(z)
106+@Callable(A)
92107 func reset () = {
93- let B = toString(z.caller)
94- let G = [DataEntry(d, 0), DataEntry((B + "_balance"), 0)]
95- WriteSet(G)
108+ let C = toString(A.caller)
109+ let I = [DataEntry(d, 0), DataEntry((C + "_balance"), 0)]
110+ WriteSet(I)
96111 }
97112
98113
99114
100-@Callable(z)
115+@Callable(A)
101116 func donate () = {
102- let H = n()
103- let I = toBase58String(z.transactionId)
104- let J = extract(z.payment)
105- let B = toString(z.caller)
106- let K = isDefined(J.assetId)
107- let L = isDefined(J.assetId)
108- let M = J.amount
109- if (K)
117+ let J = n()
118+ let K = toBase58String(A.transactionId)
119+ let L = extract(A.payment)
120+ let C = toString(A.caller)
121+ let M = isDefined(L.assetId)
122+ let N = isDefined(L.assetId)
123+ let O = L.amount
124+ if (M)
110125 then throw("Bet amount must be in Waves")
111- else if (L)
126+ else if (N)
112127 then throw("Transaction's fee must be in Waves")
113128 else {
114- let N = if (if (if (if (if (if ((M == (f + b)))
129+ let P = if (if (if (if (if (if ((O == (f + b)))
115130 then true
116- else (M == (g + b)))
131+ else (O == (g + b)))
117132 then true
118- else (M == (h + b)))
133+ else (O == (h + b)))
119134 then true
120- else (M == (i + b)))
135+ else (O == (i + b)))
121136 then true
122- else (M == (j + b)))
137+ else (O == (j + b)))
123138 then true
124- else (M == (k + b)))
139+ else (O == (k + b)))
125140 then true
126141 else false
127- if (N)
142+ if (P)
128143 then {
129- let O = ((M - b) / a)
130- let P = (B + "_balance")
131- let Q = (r(P) + (O * c))
132- let G = [DataEntry(d, H), DataEntry(P, Q), DataEntry(I, O)]
133- WriteSet(G)
144+ let Q = ((O - b) / a)
145+ let R = (C + "_balance")
146+ let S = (r(R) + (Q * c))
147+ let I = [DataEntry(d, J), DataEntry(R, S), DataEntry(K, Q)]
148+ WriteSet(I)
134149 }
135150 else throw("You paid the wrong amount")
136151 }
137152 }
138153
139154
140-@Verifier(R)
141-func S () = if (sigVerify(R.bodyBytes, R.proofs[0], R.senderPublicKey))
155+@Verifier(T)
156+func U () = if (sigVerify(T.bodyBytes, T.proofs[0], T.senderPublicKey))
142157 then {
143- let p = R
158+ let p = T
144159 if ($isInstanceOf(p, "TransferTransaction"))
145160 then {
146- let T = p
161+ let V = p
147162 true
148163 }
149164 else if ($isInstanceOf(p, "SetScriptTransaction"))
150165 then {
151- let U = p
166+ let W = p
152167 true
153168 }
154169 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = ((100 * 1000) * 1000)
55
66 let b = ((5 * a) / 1000)
77
88 let c = 10
99
1010 let d = "$DONATE_NUM"
1111
1212 let e = "$BUY_ITEM"
1313
1414 let f = (1 * a)
1515
1616 let g = (5 * a)
1717
1818 let h = (10 * a)
1919
2020 let i = (20 * a)
2121
2222 let j = (50 * a)
2323
2424 let k = (100 * a)
2525
2626 let l = 20
2727
2828 let m = [1, 3, 5, 6, 2, 2, 4, 9, 10, 12, 5, 1, 9, 12, 5, 4, 1, 11, 12, 9]
2929
3030 func n () = {
3131 let o = {
3232 let p = getInteger(this, d)
3333 if ($isInstanceOf(p, "Int"))
3434 then {
3535 let q = p
3636 q
3737 }
3838 else 0
3939 }
4040 (o + 1)
4141 }
4242
4343
4444 func r (s) = {
4545 let t = {
4646 let p = getInteger(this, s)
4747 if ($isInstanceOf(p, "Int"))
4848 then {
4949 let t = p
5050 t
5151 }
5252 else 0
5353 }
5454 t
5555 }
5656
5757
5858 func u (v,w) = {
5959 let x = {
6060 let p = indexOf(v, (w + ":"))
6161 if ($isInstanceOf(p, "Int"))
6262 then {
6363 let y = p
6464 toString(y)
6565 }
6666 else "undefined"
6767 }
6868 x
6969 }
7070
7171
72-@Callable(z)
72+func z (s) = {
73+ let x = {
74+ let p = getInteger(this, s)
75+ if ($isInstanceOf(p, "Int"))
76+ then {
77+ let y = p
78+ y
79+ }
80+ else 0
81+ }
82+ x
83+ }
84+
85+
86+@Callable(A)
7387 func buyItem (w) = {
74- let A = toBase58String(z.transactionId)
75- let B = toString(z.caller)
88+ let B = toBase58String(A.transactionId)
89+ let C = toString(A.caller)
7690 if (if ((w > 0))
7791 then (l >= w)
7892 else false)
7993 then {
80- let C = m[w]
81- let D = (r((B + "_balance")) - C)
82- let E = DataEntry((B + "_balance"), D)
83- let F = ((B + "_itemID_") + toString(w))
84- WriteSet([DataEntry(F, 1), DataEntry(((e + "_") + A), w), E])
94+ let D = m[w]
95+ let E = (r((C + "_balance")) - D)
96+ let F = DataEntry((C + "_balance"), E)
97+ let G = ((C + "_itemID_") + toString(w))
98+ let H = z(G)
99+ WriteSet([DataEntry(G, (H + 1)), DataEntry(((e + "_") + B), w), F])
85100 }
86101 else throw("Item has not found")
87102 }
88103
89104
90105
91-@Callable(z)
106+@Callable(A)
92107 func reset () = {
93- let B = toString(z.caller)
94- let G = [DataEntry(d, 0), DataEntry((B + "_balance"), 0)]
95- WriteSet(G)
108+ let C = toString(A.caller)
109+ let I = [DataEntry(d, 0), DataEntry((C + "_balance"), 0)]
110+ WriteSet(I)
96111 }
97112
98113
99114
100-@Callable(z)
115+@Callable(A)
101116 func donate () = {
102- let H = n()
103- let I = toBase58String(z.transactionId)
104- let J = extract(z.payment)
105- let B = toString(z.caller)
106- let K = isDefined(J.assetId)
107- let L = isDefined(J.assetId)
108- let M = J.amount
109- if (K)
117+ let J = n()
118+ let K = toBase58String(A.transactionId)
119+ let L = extract(A.payment)
120+ let C = toString(A.caller)
121+ let M = isDefined(L.assetId)
122+ let N = isDefined(L.assetId)
123+ let O = L.amount
124+ if (M)
110125 then throw("Bet amount must be in Waves")
111- else if (L)
126+ else if (N)
112127 then throw("Transaction's fee must be in Waves")
113128 else {
114- let N = if (if (if (if (if (if ((M == (f + b)))
129+ let P = if (if (if (if (if (if ((O == (f + b)))
115130 then true
116- else (M == (g + b)))
131+ else (O == (g + b)))
117132 then true
118- else (M == (h + b)))
133+ else (O == (h + b)))
119134 then true
120- else (M == (i + b)))
135+ else (O == (i + b)))
121136 then true
122- else (M == (j + b)))
137+ else (O == (j + b)))
123138 then true
124- else (M == (k + b)))
139+ else (O == (k + b)))
125140 then true
126141 else false
127- if (N)
142+ if (P)
128143 then {
129- let O = ((M - b) / a)
130- let P = (B + "_balance")
131- let Q = (r(P) + (O * c))
132- let G = [DataEntry(d, H), DataEntry(P, Q), DataEntry(I, O)]
133- WriteSet(G)
144+ let Q = ((O - b) / a)
145+ let R = (C + "_balance")
146+ let S = (r(R) + (Q * c))
147+ let I = [DataEntry(d, J), DataEntry(R, S), DataEntry(K, Q)]
148+ WriteSet(I)
134149 }
135150 else throw("You paid the wrong amount")
136151 }
137152 }
138153
139154
140-@Verifier(R)
141-func S () = if (sigVerify(R.bodyBytes, R.proofs[0], R.senderPublicKey))
155+@Verifier(T)
156+func U () = if (sigVerify(T.bodyBytes, T.proofs[0], T.senderPublicKey))
142157 then {
143- let p = R
158+ let p = T
144159 if ($isInstanceOf(p, "TransferTransaction"))
145160 then {
146- let T = p
161+ let V = p
147162 true
148163 }
149164 else if ($isInstanceOf(p, "SetScriptTransaction"))
150165 then {
151- let U = p
166+ let W = p
152167 true
153168 }
154169 else false
155170 }
156171 else false
157172

github/deemru/w8io/169f3d6 
57.97 ms