tx · 9bFFvw3d6zfVcCYSekRC79rku3MunTtbDFodUH89J1S4

3Ms6Ht5bdVJa6sQnRBUg9nfNpEp7obSad8o:  -0.05000000 Waves

2019.08.07 18:50 [620734] smart account 3Ms6Ht5bdVJa6sQnRBUg9nfNpEp7obSad8o > SELF 0.00000000 Waves

{ "type": 13, "id": "9bFFvw3d6zfVcCYSekRC79rku3MunTtbDFodUH89J1S4", "fee": 5000000, "feeAssetId": null, "timestamp": 1565192996309, "version": 1, "sender": "3Ms6Ht5bdVJa6sQnRBUg9nfNpEp7obSad8o", "senderPublicKey": "Ebb2ffqL8cMnNmXPNvHLy53xrK7t5WaSFhneCPBSoxop", "proofs": [ "fEUbPCEbwHtma1rhNp4Ucchda77hTXThKR9MeX1XrQqAbix879mpgejbyWrVD27Wk6c4mi2Z8cu21ApByVmnH9i" ], "script": "base64:AAIDAAAAAAAAAAAAAAAdAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWkFAAAAByRtYXRjaDAFAAAAAWkAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAAAROT05FBQAAAANzdHIBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfcHJpY2UBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAABF9jbnQBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAAR1c2VyBQAAAARpdGVtAQAAAApnZXRLZXlJdGVtAAAAAgAAAAhzdXBwbGllcgAAAAV0aXRsZQkAASwAAAACAgAAAAVpZXRtXwkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhzdXBwbGllcgUAAAAFdGl0bGUBAAAADmdldEtleUl0ZW1EYXRhAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABV9kYXRhAQAAABFnZXRLZXlJdGVtU3VwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfb3duZXIBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAARZ2V0S2V5SXRlbVN1cGxpZXIAAAABBQAAAARpdGVtAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABAAAAB2FjY291bnQJAAEsAAAAAgUAAAAHYWNjb3VudAIAAAAIX2JhbGFuY2UBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAHYWNjb3VudAAAAAAGVk9URVJTAAAAAAAAAAADAAAAAAZRVU9SVU0AAAAAAAAAAAIAAAAABlZPVElORwIAAAAGdm90aW5nAAAAAAZSRVZFQUwCAAAABnJldmVhbAAAAAAJRkVBVVRVUkVEAgAAAAlmZWF1dHVyZWQAAAAACERFTElTVEVEAgAAAAhkZWxpc3RlZAEAAAAMZ2V0S2V5Q29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19jb21taXQBAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX2NvbWNudAEAAAAUZ2V0VmFsdWVDb21taXRzQ291bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAAxnZXRLZXlSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAHX3JldmVhbAEAAAAOZ2V0VmFsdWVSZXZlYWwAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADGdldEtleVJldmVhbAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAHX3N0YXR1cwEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAD2dldEtleVZvdGVDb3VudAAAAAIAAAAEaXRlbQAAAAR2b3RlCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAAFX3JlczoFAAAABHZvdGUBAAAAEWdldFZhbHVlVm90ZUNvdW50AAAAAgAAAARpdGVtAAAABHZvdGUJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACBQAAAARpdGVtBQAAAAR2b3RlAAAABQAAAANpbnYBAAAAB2FkZEl0ZW0AAAADAAAABXRpdGxlAAAABXByaWNlAAAABGRhdGEEAAAAD3N1cHBsaWVyQWRkcmVzcwkAAlgAAAABCAgFAAAAA2ludgAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABGl0ZW0JAQAAAApnZXRLZXlJdGVtAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAV0aXRsZQMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAWUGxlYXNlIGFkZCB2YWxpZCBwcmljZQMJAQAAAAIhPQAAAAIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAABE5PTkUJAAACAAAAAQkAASwAAAACBQAAAARpdGVtAgAAABYgLSBpdGVtIGFscmVhZHkgZXhpc3RzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAARZ2V0S2V5SXRlbVN1cGxpZXIAAAABBQAAAARpdGVtBQAAAA9zdXBwbGllckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtBQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAADmdldEtleUl0ZW1EYXRhAAAAAQUAAAAEaXRlbQUAAAAEZGF0YQUAAAADbmlsAAAAA2ludgEAAAAIcHVyY2hhc2UAAAABAAAABGl0ZW0EAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAA2ludgAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAjT25seSBwYXltZW50cyBpbiBXQVZFUyBhcmUgYXZhbGlibGUEAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEICAUAAAADaW52AAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UJAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0EAAAAD3N1cHBsaWVyQWRkcmVzcwkBAAAAFGdldFZhbHVlSXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQMJAABmAAAAAgUAAAAFcHJpY2UIBQAAAAdwYXltZW50AAAABmFtb3VudAkAAAIAAAABAgAAAB5QbGVhc2Ugc2VuZCBleGFjdCBjb3Vwb24gcHJpY2UDCQAAZgAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAFcHJpY2UJAAACAAAAAQIAAAAeUGxlYXNlIHNlbmQgZXhhY3QgY291cG9uIHByaWNlCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0JAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0AAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MJ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", "chainId": 84, "height": 620734, "spentComplexity": 0 } View: original | compacted Prev: 6QUFhzgKooJSEY9d2r1utM4r2pebFEH3aMDvRZdLTUS2 Next: 33b3ZCKUHopEFAKjKDrPdigTdUDPXJLddNNXvkTgnhJi Diff:
OldNewDifferences
154154 if ((X >= y))
155155 then throw("We have reached necessary number of voters")
156156 else if ((F(k, n) != a))
157- then throw("user has already voted")
157+ then throw("User has already voted")
158158 else if ((t(k) == a))
159- then throw("item does not exist")
159+ then throw("Item does not exist")
160160 else if (if ((Y != a))
161161 then (Y != A)
162162 else false)
163- then throw("voting is not possible")
163+ then throw("Voting is not possible")
164164 else WriteSet([DataEntry(E(k, n), W), DataEntry(G(k), (X + 1)), DataEntry(K(k), if ((X == y))
165165 then B
166166 else A)])
167+ }
168+
169+
170+
171+@Callable(P)
172+func revealVotes (k,N,Z) = {
173+ let n = toBase58String(P.caller.bytes)
174+ let X = H(k)
175+ let Y = L(k)
176+ let aa = (O(k, N) + 1)
177+ if ((toBase58String(sha256(toBytes((N + Z)))) != F(k, n)))
178+ then throw("Reveal data is not valid")
179+ else if ((y > H(k)))
180+ then throw("Necessary number of voters hasn't reached yet")
181+ else if ((J(k, n) != a))
182+ then throw("User has already revealed his vote")
183+ else if (if ((Y != A))
184+ then (Y != B)
185+ else false)
186+ then throw("Wrong status of vote")
187+ else if (if ((N != C))
188+ then (N != D)
189+ else false)
190+ then throw("Wrong vote")
191+ else if (if ((Y == C))
192+ then true
193+ else (Y == D))
194+ then throw("Voting complited")
195+ else WriteSet([DataEntry(I(k, n), N), DataEntry(M(k, N), aa), DataEntry(K(k), if ((aa >= z))
196+ then N
197+ else B)])
167198 }
168199
169200
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "none"
55
66 func b (c) = {
77 let d = {
88 let e = getInteger(this, c)
99 if ($isInstanceOf(e, "Int"))
1010 then {
1111 let f = e
1212 f
1313 }
1414 else 0
1515 }
1616 d
1717 }
1818
1919
2020 func g (c) = {
2121 let h = {
2222 let e = getString(this, c)
2323 if ($isInstanceOf(e, "String"))
2424 then {
2525 let i = e
2626 i
2727 }
2828 else a
2929 }
3030 h
3131 }
3232
3333
3434 func j (k) = (k + "_price")
3535
3636
3737 func l (k) = b(j(k))
3838
3939
4040 func m (n,k) = (((k + "_") + n) + "_cnt")
4141
4242
4343 func o (n,k) = b(m(n, k))
4444
4545
4646 func p (q,r) = ("ietm_" + toBase58String(sha256(toBytes((q + r)))))
4747
4848
4949 func s (k) = (k + "_data")
5050
5151
5252 func t (k) = (k + "_owner")
5353
5454
5555 func u (k) = g(t(k))
5656
5757
5858 func v (w) = (w + "_balance")
5959
6060
6161 func x (w) = b(v(w))
6262
6363
6464 let y = 3
6565
6666 let z = 2
6767
6868 let A = "voting"
6969
7070 let B = "reveal"
7171
7272 let C = "feautured"
7373
7474 let D = "delisted"
7575
7676 func E (k,n) = (((k + "_") + n) + "_commit")
7777
7878
7979 func F (k,n) = g(E(k, n))
8080
8181
8282 func G (k) = (k + "_comcnt")
8383
8484
8585 func H (k) = b(G(k))
8686
8787
8888 func I (k,n) = (((k + "_") + n) + "_reveal")
8989
9090
9191 func J (k,n) = g(I(k, n))
9292
9393
9494 func K (k) = (k + "_status")
9595
9696
9797 func L (k) = g(K(k))
9898
9999
100100 func M (k,N) = ((k + "_res:") + N)
101101
102102
103103 func O (k,N) = b(M(k, N))
104104
105105
106106 @Callable(P)
107107 func addItem (r,Q,R) = {
108108 let S = toBase58String(P.caller.bytes)
109109 let k = p(S, r)
110110 if ((0 >= Q))
111111 then throw("Please add valid price")
112112 else if ((u(k) != a))
113113 then throw((k + " - item already exists"))
114114 else WriteSet([DataEntry(t(k), S), DataEntry(j(k), Q), DataEntry(s(k), R)])
115115 }
116116
117117
118118
119119 @Callable(P)
120120 func purchase (k) = {
121121 let T = extract(P.payment)
122122 if (isDefined(T.assetId))
123123 then throw("Only payments in WAVES are avalible")
124124 else {
125125 let U = toBase58String(P.caller.bytes)
126126 let Q = l(k)
127127 let S = u(k)
128128 if ((Q > T.amount))
129129 then throw("Please send exact coupon price")
130130 else if ((T.amount > Q))
131131 then throw("Please send exact coupon price")
132132 else WriteSet([DataEntry(m(U, k), (o(U, k) + 1)), DataEntry(v(S), (x(S) + T.amount))])
133133 }
134134 }
135135
136136
137137
138138 @Callable(P)
139139 func withdraw () = {
140140 let S = toBase58String(P.caller.bytes)
141141 let V = x(S)
142142 if ((0 >= V))
143143 then throw("Ballance is zero")
144144 else ScriptResult(WriteSet([DataEntry(v(S), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(S), V, unit)]))
145145 }
146146
147147
148148
149149 @Callable(P)
150150 func voteCommit (k,W) = {
151151 let n = toBase58String(P.caller.bytes)
152152 let X = H(k)
153153 let Y = L(k)
154154 if ((X >= y))
155155 then throw("We have reached necessary number of voters")
156156 else if ((F(k, n) != a))
157- then throw("user has already voted")
157+ then throw("User has already voted")
158158 else if ((t(k) == a))
159- then throw("item does not exist")
159+ then throw("Item does not exist")
160160 else if (if ((Y != a))
161161 then (Y != A)
162162 else false)
163- then throw("voting is not possible")
163+ then throw("Voting is not possible")
164164 else WriteSet([DataEntry(E(k, n), W), DataEntry(G(k), (X + 1)), DataEntry(K(k), if ((X == y))
165165 then B
166166 else A)])
167+ }
168+
169+
170+
171+@Callable(P)
172+func revealVotes (k,N,Z) = {
173+ let n = toBase58String(P.caller.bytes)
174+ let X = H(k)
175+ let Y = L(k)
176+ let aa = (O(k, N) + 1)
177+ if ((toBase58String(sha256(toBytes((N + Z)))) != F(k, n)))
178+ then throw("Reveal data is not valid")
179+ else if ((y > H(k)))
180+ then throw("Necessary number of voters hasn't reached yet")
181+ else if ((J(k, n) != a))
182+ then throw("User has already revealed his vote")
183+ else if (if ((Y != A))
184+ then (Y != B)
185+ else false)
186+ then throw("Wrong status of vote")
187+ else if (if ((N != C))
188+ then (N != D)
189+ else false)
190+ then throw("Wrong vote")
191+ else if (if ((Y == C))
192+ then true
193+ else (Y == D))
194+ then throw("Voting complited")
195+ else WriteSet([DataEntry(I(k, n), N), DataEntry(M(k, N), aa), DataEntry(K(k), if ((aa >= z))
196+ then N
197+ else B)])
167198 }
168199
169200

github/deemru/w8io/c3f4982 
30.24 ms