tx · 8jmkyYve2ey2uqgxv62N2sSstm4jUoBKbW8Pthdjgeqd

3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3:  -0.01400000 Waves

2020.11.23 12:40 [1277863] smart account 3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3 > SELF 0.00000000 Waves

{ "type": 13, "id": "8jmkyYve2ey2uqgxv62N2sSstm4jUoBKbW8Pthdjgeqd", "fee": 1400000, "feeAssetId": null, "timestamp": 1606124418281, "version": 2, "chainId": 84, "sender": "3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3", "senderPublicKey": "24o2mnMP6y64dijDFoZKhDpV73e1gCFKxQcZ6X9q3z1B", "proofs": [ "4DNZQ5AchL54kKqP4xG2NZSXeVxGx8GYFWjo7oHg3yyPQUrJHkp51dmEYbnDD8E57FuAb85fiHwKe1a3bhER1BEH" ], "script": "base64:AAIEAAAAAAAAABYIAhIDCgEIEgUKAwgBCBIAEgQKAggIAAAAIAAAAAARYWNjb3VudDFQdWJsaWNLZXkBAAAAIPeNeDDs4TWVhR1bzOk94lFsHOraL9B/FRj0XfVMj0hOAAAAABFhY2NvdW50MlB1YmxpY0tleQEAAAAgG1e/aEwKrtMkcq9WyiLLAHtKPJgLd/oAoUXcKuUDIhUAAAAADm90aGVyUHVibGljS2V5AQAAACDnblGJprjxGAm9jEz8V5M0TOEG6bhNvbMQquBNrx0dWgAAAAAETk9ORQIAAAAEbm9uZQAAAAAGVk9URVJTAAAAAAAAAAADAAAAAAZRVU9SVU0AAAAAAAAAAAIAAAAABlZPVElORwIAAAAGdm90aW5nAAAAAAZSRVZFQUwCAAAABnJldmVhbAAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAhERUxJU1RFRAIAAAAIZGVsaXN0ZWQBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABl9wcmljZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAEX2NudAEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAABWl0ZW1fCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAFX2RhdGEBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAB2FjY291bnQCAAAACF9iYWxhbmNlAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAB2FjY291bnQBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19j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", "height": 1277863, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 55hNEsKebyqGS8vCw8oeiuQCqf4PRUB5yBvh7WwQxZQG Next: 7XpYiUDLYrdNCBVLJUF7udpMq3jKJdEvvmjxfhmrCnRv Diff:
OldNewDifferences
99
1010 let d = "none"
1111
12-func e (f) = {
13- let g = {
14- let h = getInteger(this, f)
15- if ($isInstanceOf(h, "Int"))
12+let e = 3
13+
14+let f = 2
15+
16+let g = "voting"
17+
18+let h = "reveal"
19+
20+let i = "featured"
21+
22+let j = "delisted"
23+
24+func k (l) = {
25+ let m = {
26+ let n = getInteger(this, l)
27+ if ($isInstanceOf(n, "Int"))
1628 then {
17- let i = h
18- i
29+ let o = n
30+ o
1931 }
2032 else 0
2133 }
22- g
34+ m
2335 }
2436
2537
26-func j (f) = {
27- let k = {
28- let h = getString(this, f)
29- if ($isInstanceOf(h, "String"))
38+func p (l) = {
39+ let q = {
40+ let n = getString(this, l)
41+ if ($isInstanceOf(n, "String"))
3042 then {
31- let i = h
32- i
43+ let o = n
44+ o
3345 }
3446 else d
3547 }
36- k
48+ q
3749 }
3850
3951
40-func l (m) = (m + "_price")
52+func r (s) = (s + "_price")
4153
4254
43-func n (m) = e(l(m))
55+func t (s) = k(r(s))
4456
4557
46-func o (p,m) = (((m + "_") + p) + "_cnt")
58+func u (v,s) = (((s + "_") + v) + "_cnt")
4759
4860
49-func q (p,m) = e(o(p, m))
61+func w (v,s) = k(u(v, s))
5062
5163
52-func r (s,t) = ("item_" + toBase58String(sha256(toBytes((s + t)))))
64+func x (y,z) = ("item_" + toBase58String(sha256(toBytes((y + z)))))
5365
5466
55-func u (m) = (m + "_data")
67+func A (s) = (s + "_data")
5668
5769
58-func v (m) = (m + "_owner")
70+func B (s) = (s + "_owner")
5971
6072
61-func w (m) = j(v(m))
73+func C (s) = p(B(s))
6274
6375
64-func x (y) = (y + "_balance")
76+func D (E) = (E + "_balance")
6577
6678
67-func z (y) = e(x(y))
79+func F (E) = k(D(E))
6880
6981
70-@Callable(A)
71-func purchase (m) = {
72- let B = value(A.payments)
73- if (isDefined(B[0].assetId))
82+func G (s,v) = (((s + "_") + v) + "_commit")
83+
84+
85+func H (s,v) = p(G(s, v))
86+
87+
88+func I (s) = (s + "_comcnt")
89+
90+
91+func J (s) = k(I(s))
92+
93+
94+func K (s,v) = (((s + "_") + v) + "_reveal")
95+
96+
97+func L (s,v) = p(K(s, v))
98+
99+
100+func M (s) = (s + "_status")
101+
102+
103+func N (s) = p(M(s))
104+
105+
106+func O (s,P) = ((s + "_res:") + P)
107+
108+
109+func Q (s,P) = k(O(s, P))
110+
111+
112+@Callable(R)
113+func purchase (s) = {
114+ let S = value(R.payments)
115+ if (isDefined(S[0].assetId))
74116 then throw("WAVES tokens only")
75117 else {
76- let C = toBase58String(A.caller.bytes)
77- let D = n(m)
78- let E = w(m)
79- if ((D > B[0].amount))
118+ let T = toBase58String(R.caller.bytes)
119+ let U = t(s)
120+ let V = C(s)
121+ if ((U > S[0].amount))
80122 then throw("purchase less than item price")
81- else if ((B[0].amount > D))
123+ else if ((S[0].amount > U))
82124 then throw("purchase amount higher than item price")
83- else if ((size(B) > 1))
125+ else if ((size(S) > 1))
84126 then throw("single item only")
85- else if ((E == d))
127+ else if ((V == d))
86128 then throw("supplier doesn't exist")
87- else [IntegerEntry(o(C, m), (q(C, m) + 1)), IntegerEntry(x(E), (z(E) + B[0].amount))]
129+ else [IntegerEntry(u(T, s), (w(T, s) + 1)), IntegerEntry(D(V), (F(V) + S[0].amount))]
88130 }
89131 }
90132
91133
92134
93-@Callable(A)
94-func addItem (t,D,F) = {
95- let E = toBase58String(A.caller.bytes)
96- let m = r(E, t)
97- if ((0 >= D))
135+@Callable(R)
136+func addItem (z,U,W) = {
137+ let V = toBase58String(R.caller.bytes)
138+ let s = x(V, z)
139+ if ((0 >= U))
98140 then throw("purchase amount cannot be less than item price")
99- else if ((w(m) != d))
141+ else if ((C(s) != d))
100142 then throw("an item already exist")
101- else [StringEntry(v(m), E), IntegerEntry(l(m), D), StringEntry(u(m), F)]
143+ else [StringEntry(B(s), V), IntegerEntry(r(s), U), StringEntry(A(s), W)]
102144 }
103145
104146
105147
106-@Callable(A)
148+@Callable(R)
107149 func withdraw () = {
108- let E = toBase58String(A.caller.bytes)
109- let G = z(E)
110- if ((0 >= G))
150+ let V = toBase58String(R.caller.bytes)
151+ let X = F(V)
152+ if ((0 >= X))
111153 then throw("insufficient balance")
112- else [IntegerEntry(x(E), 0), ScriptTransfer(addressFromStringValue(E), G, unit)]
154+ else [IntegerEntry(D(V), 0), ScriptTransfer(addressFromStringValue(V), X, unit)]
113155 }
114156
115157
116-@Verifier(H)
117-func I () = true
158+
159+@Callable(R)
160+func voteCommit (s,Y) = {
161+ let v = toBase58String(R.caller.bytes)
162+ let Z = J(s)
163+ let aa = N(s)
164+ if ((Z >= e))
165+ then throw("reached max num of voters")
166+ else if ((H(s, v) != d))
167+ then throw("user has already participated")
168+ else if ((B(s) == d))
169+ then throw("item does not exist")
170+ else if (if ((aa != d))
171+ then (aa != g)
172+ else false)
173+ then throw("voting is not possible")
174+ else [StringEntry(G(s, v), Y), IntegerEntry(I(s), (Z + 1)), StringEntry(M(s), if ((Z == e))
175+ then h
176+ else g)]
177+ }
178+
179+
180+@Verifier(ab)
181+func ac () = true
118182
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'HfLpRhXtnuCabRyNT6z7soaXcbUpwLUhjyBCVQ4szwzd'
55
66 let b = base58'2qjcWuL7QitmuhkSTM7CnNxurCYXuqJ9ubswLBGmXfDv'
77
88 let c = base58'GaQkBG6yLLAarb8wvPrEKnQhFqWomD2ZGT1T4vVx24qw'
99
1010 let d = "none"
1111
12-func e (f) = {
13- let g = {
14- let h = getInteger(this, f)
15- if ($isInstanceOf(h, "Int"))
12+let e = 3
13+
14+let f = 2
15+
16+let g = "voting"
17+
18+let h = "reveal"
19+
20+let i = "featured"
21+
22+let j = "delisted"
23+
24+func k (l) = {
25+ let m = {
26+ let n = getInteger(this, l)
27+ if ($isInstanceOf(n, "Int"))
1628 then {
17- let i = h
18- i
29+ let o = n
30+ o
1931 }
2032 else 0
2133 }
22- g
34+ m
2335 }
2436
2537
26-func j (f) = {
27- let k = {
28- let h = getString(this, f)
29- if ($isInstanceOf(h, "String"))
38+func p (l) = {
39+ let q = {
40+ let n = getString(this, l)
41+ if ($isInstanceOf(n, "String"))
3042 then {
31- let i = h
32- i
43+ let o = n
44+ o
3345 }
3446 else d
3547 }
36- k
48+ q
3749 }
3850
3951
40-func l (m) = (m + "_price")
52+func r (s) = (s + "_price")
4153
4254
43-func n (m) = e(l(m))
55+func t (s) = k(r(s))
4456
4557
46-func o (p,m) = (((m + "_") + p) + "_cnt")
58+func u (v,s) = (((s + "_") + v) + "_cnt")
4759
4860
49-func q (p,m) = e(o(p, m))
61+func w (v,s) = k(u(v, s))
5062
5163
52-func r (s,t) = ("item_" + toBase58String(sha256(toBytes((s + t)))))
64+func x (y,z) = ("item_" + toBase58String(sha256(toBytes((y + z)))))
5365
5466
55-func u (m) = (m + "_data")
67+func A (s) = (s + "_data")
5668
5769
58-func v (m) = (m + "_owner")
70+func B (s) = (s + "_owner")
5971
6072
61-func w (m) = j(v(m))
73+func C (s) = p(B(s))
6274
6375
64-func x (y) = (y + "_balance")
76+func D (E) = (E + "_balance")
6577
6678
67-func z (y) = e(x(y))
79+func F (E) = k(D(E))
6880
6981
70-@Callable(A)
71-func purchase (m) = {
72- let B = value(A.payments)
73- if (isDefined(B[0].assetId))
82+func G (s,v) = (((s + "_") + v) + "_commit")
83+
84+
85+func H (s,v) = p(G(s, v))
86+
87+
88+func I (s) = (s + "_comcnt")
89+
90+
91+func J (s) = k(I(s))
92+
93+
94+func K (s,v) = (((s + "_") + v) + "_reveal")
95+
96+
97+func L (s,v) = p(K(s, v))
98+
99+
100+func M (s) = (s + "_status")
101+
102+
103+func N (s) = p(M(s))
104+
105+
106+func O (s,P) = ((s + "_res:") + P)
107+
108+
109+func Q (s,P) = k(O(s, P))
110+
111+
112+@Callable(R)
113+func purchase (s) = {
114+ let S = value(R.payments)
115+ if (isDefined(S[0].assetId))
74116 then throw("WAVES tokens only")
75117 else {
76- let C = toBase58String(A.caller.bytes)
77- let D = n(m)
78- let E = w(m)
79- if ((D > B[0].amount))
118+ let T = toBase58String(R.caller.bytes)
119+ let U = t(s)
120+ let V = C(s)
121+ if ((U > S[0].amount))
80122 then throw("purchase less than item price")
81- else if ((B[0].amount > D))
123+ else if ((S[0].amount > U))
82124 then throw("purchase amount higher than item price")
83- else if ((size(B) > 1))
125+ else if ((size(S) > 1))
84126 then throw("single item only")
85- else if ((E == d))
127+ else if ((V == d))
86128 then throw("supplier doesn't exist")
87- else [IntegerEntry(o(C, m), (q(C, m) + 1)), IntegerEntry(x(E), (z(E) + B[0].amount))]
129+ else [IntegerEntry(u(T, s), (w(T, s) + 1)), IntegerEntry(D(V), (F(V) + S[0].amount))]
88130 }
89131 }
90132
91133
92134
93-@Callable(A)
94-func addItem (t,D,F) = {
95- let E = toBase58String(A.caller.bytes)
96- let m = r(E, t)
97- if ((0 >= D))
135+@Callable(R)
136+func addItem (z,U,W) = {
137+ let V = toBase58String(R.caller.bytes)
138+ let s = x(V, z)
139+ if ((0 >= U))
98140 then throw("purchase amount cannot be less than item price")
99- else if ((w(m) != d))
141+ else if ((C(s) != d))
100142 then throw("an item already exist")
101- else [StringEntry(v(m), E), IntegerEntry(l(m), D), StringEntry(u(m), F)]
143+ else [StringEntry(B(s), V), IntegerEntry(r(s), U), StringEntry(A(s), W)]
102144 }
103145
104146
105147
106-@Callable(A)
148+@Callable(R)
107149 func withdraw () = {
108- let E = toBase58String(A.caller.bytes)
109- let G = z(E)
110- if ((0 >= G))
150+ let V = toBase58String(R.caller.bytes)
151+ let X = F(V)
152+ if ((0 >= X))
111153 then throw("insufficient balance")
112- else [IntegerEntry(x(E), 0), ScriptTransfer(addressFromStringValue(E), G, unit)]
154+ else [IntegerEntry(D(V), 0), ScriptTransfer(addressFromStringValue(V), X, unit)]
113155 }
114156
115157
116-@Verifier(H)
117-func I () = true
158+
159+@Callable(R)
160+func voteCommit (s,Y) = {
161+ let v = toBase58String(R.caller.bytes)
162+ let Z = J(s)
163+ let aa = N(s)
164+ if ((Z >= e))
165+ then throw("reached max num of voters")
166+ else if ((H(s, v) != d))
167+ then throw("user has already participated")
168+ else if ((B(s) == d))
169+ then throw("item does not exist")
170+ else if (if ((aa != d))
171+ then (aa != g)
172+ else false)
173+ then throw("voting is not possible")
174+ else [StringEntry(G(s, v), Y), IntegerEntry(I(s), (Z + 1)), StringEntry(M(s), if ((Z == e))
175+ then h
176+ else g)]
177+ }
178+
179+
180+@Verifier(ab)
181+func ac () = true
118182

github/deemru/w8io/169f3d6 
49.20 ms