tx · FxT94idbMfSC5GFwFh4dfvmEJPhVJksFUEu9MLES5nWz

3NAJMMGLfxUF91apoYJQnwY4RQrf5gSfynu:  -0.01500000 Waves

2019.06.26 15:49 [559111] smart account 3NAJMMGLfxUF91apoYJQnwY4RQrf5gSfynu > SELF 0.00000000 Waves

{ "type": 13, "id": "FxT94idbMfSC5GFwFh4dfvmEJPhVJksFUEu9MLES5nWz", "fee": 1500000, "feeAssetId": null, "timestamp": 1561553391026, "version": 1, "sender": "3NAJMMGLfxUF91apoYJQnwY4RQrf5gSfynu", "senderPublicKey": "2kXQn8VtJn2xykv2WX9DhkQBWDQXWLrrFMpdmQZzxBz6", "proofs": [ "2qnz6yiY5UKFDSHj2HNWgYH1tz45umXCTG4fUAvmBNwBjyMFyWyuEVednr2P9jozYKk7jt9geN688BkypLYKqHM4" ], "script": "base64:AAIDAAAAAAAAAAAAAAAPAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGPYmFzZTY0Ok1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcWxBaUFOU21CcERIWUtQOXNLZ2VOL2wxYkFiMjhnL3RHbGdEa3dUNUZpTU40WDNwd2R2ZHhFN212U1I4LzQxZFU5cng0akcrNnRacGIxVUxWRFBzNDMxdFIySVJhVFh3NUNqK0FjMnZoTCs1SmFtQ2VyR0QxVVcrYmgvRUdRdHhvOFczWUxEcm9mWEI1UUhKeDRQa3oyS2dmK29TL0M4aEh1Qi9VNGtyTzc2VTA1MDdHVGpaUFA5a1JRMHVMU01lcVFYdDh3WFMrbk1wNXdhanF4UHBETE1hU1JFZ3NLd3YvQUVrUDRkenBUWWJpa0xCWWw0cXRkSnNEODRITEZTa2l3ZDNCaGNPclBqb0lZbUx4UXVCRDVUSU1LVEtEM3NkWmdhWTlyc3lxeDNBMDBpbm55eEQ2enAzYjRnRnBVT1g4SnhLWmRFQzJteUVxbGVOZ2c3R3p3SURBUUFCAAAAAAZTRVJWRVIJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM05DaUcyOExtV3lUaWdXRzEzRTVRbnZkSEJzWkZZWFNTMmoAAAAAEFNFU1NJT05JREZJWFNJWkUAAAAAAAAAADIAAAAACUVNUFRZVkVDVAkAAZsAAAABAgAAAAAAAAAACVNUQVRFSU5JVAIAAAAESU5JVAAAAAAKU1RBVEVSRUFEWQIAAAAFUkVBRFkAAAAADVNUQVRFRklOSVNIRUQCAAAACEZJTklTSEVEAQAAAANhYnMAAAABAAAAA3ZhbAMJAABmAAAAAgAAAAAAAAAAAAUAAAADdmFsCQEAAAABLQAAAAEFAAAAA3ZhbAUAAAADdmFsAQAAABJmb3JtYXRTdGF0ZURhdGFTdHIAAAADAAAACWRyYXdTdGF0ZQAAABFvcmdhbml6ZXJQdWJLZXk1OAAAAAtyYW5kT3JFbXB0eQQAAAAMZnVsbFN0YXRlU3RyCQABLAAAAAIJAAEsAAAAAgUAAAAJZHJhd1N0YXRlAgAAAAFfBQAAABFvcmdhbml6ZXJQdWJLZXk1OAMJAAAAAAAAAgUA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U3RhdGUFAAAAA25pbAAAAAFpAQAAAAVyZWFkeQAAAAEAAAAJc2Vzc2lvbklkBAAAAA5kcmF3UGFyYW1zTGlzdAkBAAAAE2V4dHJhY3RHYW1lRGF0YUxpc3QAAAABBQAAAAlzZXNzaW9uSWQEAAAACWRyYXdTdGF0ZQkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAAAAAAAAAAAAAQAAAARb3JnYW5pemVyUHViS2V5NTgJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QAAAAAAAAAAAEEAAAAD29yZ2FuaXplclB1YktleQkAAlkAAAABBQAAABFvcmdhbml6ZXJQdWJLZXk1OAMJAQAAAAIhPQAAAAIFAAAACWRyYXdTdGF0ZQUAAAAJU1RBVEVJTklUCQAAAgAAAAEJAAEsAAAAAgUAAAAJc2Vzc2lvbklkAgAAAD4gZHJhdzogbW92aW5nIGludG8gUkVBRFkgc3RhdGUgaXMgYWxsb3dlZCBvbmx5IGZyb20gSU5JVCBzdGF0ZQMJAQAAAAIhPQAAAAIFAAAAD29yZ2FuaXplclB1YktleQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAEJAAEsAAAAAgUAAAAJc2Vzc2lvbklkAgAAADtkcmF3OiBtb3ZpbmcgaW50byBSRUFEWSBzdGF0ZSBpcyBhbGxvd2VkIGZvciBvcmdhbml6ZXIgb25seQQAAAAKcmVhZHlTdGF0ZQkBAAAAEmZvcm1hdFN0YXRlRGF0YVN0cgAAAAMFAAAACVNUQVRFSU5JVAUAAAARb3JnYW5pemVyUHViS2V5NTgCAAAAAAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAJc2Vzc2lvbklkBQAAAApyZWFkeVN0YXRlBQAAAANuaWwAAAABaQEAAAAGcmFuZG9tAAAAAgAAAAlzZXNzaW9uSWQAAAAHcnNhU2lnbgQAAAAEZnJvbQAAAAAAAAAAAQQAAAACdG8AAAAAAAAAAGQEAAAADmRyYXdQYXJhbXNMaXN0CQEAAAATZXh0cmFjdEdhbWVEYXRhTGlzdAAAAAEFAAAACXNlc3Npb25JZAQAAAAJZHJhd1N0YXRlCQABkQAAAAIFAAAADmRyYXdQYXJhbXNM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", "chainId": 84, "height": 559111, "spentComplexity": 0 } View: original | compacted Prev: none Next: Aj1BXENzVCrrVncCjRPKwxUdtHjf3wvQPHn7uapgMV5a Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqlAiANSmBpDHYKP9sKgeN/l1bAb28g/tGlgDkwT5FiMN4X3pwdvdxE7mvSR8/41dU9rx4jG+6tZpb1ULVDPs431tR2IRaTXw5Cj+Ac2vhL+5JamCerGD1UW+bh/EGQtxo8W3YLDrofXB5QHJx4Pkz2Kgf+oS/C8hHuB/U4krO76U0507GTjZPP9kRQ0uLSMeqQXt8wXS+nMp5wajqxPpDLMaSREgsKwv/AEkP4dzpTYbikLBYl4qtdJsD84HLFSkiwd3BhcOrPjoIYmLxQuBD5TIMKTKD3sdZgaY9rsyqx3A00innyxD6zp3b4gFpUOX8JxKZdEC2myEqleNgg7GzwIDAQAB")
5+
6+let SERVER = addressFromStringValue("3NCiG28LmWyTigWG13E5QnvdHBsZFYXSS2j")
7+
8+let SESSIONIDFIXSIZE = 50
9+
10+let EMPTYVECT = toBytes("")
11+
12+let STATEINIT = "INIT"
13+
14+let STATEREADY = "READY"
15+
16+let STATEFINISHED = "FINISHED"
17+
18+func abs (val) = if ((0 > val))
19+ then -(val)
20+ else val
21+
22+
23+func formatStateDataStr (drawState,organizerPubKey58,randOrEmpty) = {
24+ let fullStateStr = ((drawState + "_") + organizerPubKey58)
25+ if ((randOrEmpty == ""))
26+ then fullStateStr
27+ else ((fullStateStr + "_") + randOrEmpty)
28+ }
29+
30+
31+func extractGameDataList (sessionId) = {
32+ let rawDataStr = getStringValue(this, sessionId)
33+ split(rawDataStr, "_")
34+ }
35+
36+
37+func nextRand (currRandsVect,remainingHash) = {
38+ let nextRandInt = abs(toInt(remainingHash))
39+ let nextRandVect = toBytes(nextRandInt)
40+ let s = (size(currRandsVect) / 8)
41+ if ((0 == s))
42+ then [nextRandVect, drop(remainingHash, 1)]
43+ else {
44+ let duplicate = if (if (if (if (if (if (if (if (if ((s >= 1))
45+ then (take(currRandsVect, 8) == nextRandVect)
46+ else false)
47+ then true
48+ else if ((s >= 2))
49+ then (take(drop(currRandsVect, (1 * 8)), 8) == nextRandVect)
50+ else false)
51+ then true
52+ else if ((s >= 3))
53+ then (take(drop(currRandsVect, (2 * 8)), 8) == nextRandVect)
54+ else false)
55+ then true
56+ else if ((s >= 4))
57+ then (take(drop(currRandsVect, (3 * 8)), 8) == nextRandVect)
58+ else false)
59+ then true
60+ else if ((s >= 5))
61+ then (take(drop(currRandsVect, (4 * 8)), 8) == nextRandVect)
62+ else false)
63+ then true
64+ else if ((s >= 6))
65+ then (take(drop(currRandsVect, (5 * 8)), 8) == nextRandVect)
66+ else false)
67+ then true
68+ else if ((s >= 7))
69+ then (take(drop(currRandsVect, (6 * 8)), 8) == nextRandVect)
70+ else false)
71+ then true
72+ else if ((s >= 8))
73+ then (take(drop(currRandsVect, (7 * 8)), 8) == nextRandVect)
74+ else false)
75+ then true
76+ else if ((s >= 9))
77+ then (take(drop(currRandsVect, (8 * 8)), 8) == nextRandVect)
78+ else false
79+ if (duplicate)
80+ then [currRandsVect, drop(remainingHash, 1)]
81+ else [(currRandsVect + nextRandVect), drop(remainingHash, 1)]
82+ }
83+ }
84+
85+
86+func generateRandsVector (sessionId,from,to,rsaSign) = {
87+ let emptyVec = toBytes("")
88+ let randHash = sha256(rsaSign)
89+ let de = DataEntry("r1", 10)
90+ let dtx = DataTransaction(nil, emptyVec, 0, 0, 0, this, emptyVec, emptyVec, [emptyVec])
91+ let nextInfo1 = nextRand(emptyVec, randHash)
92+ let nextInfo2 = nextRand(nextInfo1[0], nextInfo1[1])
93+ let nextInfo3 = nextRand(nextInfo2[0], nextInfo2[1])
94+ let nextInfo4 = nextRand(nextInfo3[0], nextInfo3[1])
95+ let nextInfo5 = nextRand(nextInfo4[0], nextInfo4[1])
96+ let nextInfo6 = nextRand(nextInfo5[0], nextInfo5[1])
97+ let nextInfo7 = nextRand(nextInfo6[0], nextInfo6[1])
98+ let nextInfo8 = nextRand(nextInfo7[0], nextInfo7[1])
99+ let nextInfo9 = nextRand(nextInfo8[0], nextInfo8[1])
100+nextInfo9[0]
101+ }
102+
103+
104+func validateDtxKey (sessionId,data,dataEntriesCount,iteration) = {
105+ let sessionIdFromKey = take(data.key, SESSIONIDFIXSIZE)
106+ if ((iteration >= dataEntriesCount))
107+ then true
108+ else if (if (if ((sessionId == sessionIdFromKey))
109+ then (size(data.key) > SESSIONIDFIXSIZE)
110+ else false)
111+ then !(isDefined(getString(this, data.key)))
112+ else false)
113+ then match data.value {
114+ case str: String =>
115+ true
116+ case _ =>
117+ throw((sessionId + " draw: only String type is accepted for data transactions"))
118+ }
119+ else false
120+ }
121+
122+
123+func nextRand2 (randCtx) = {
124+ let remainingHash = randCtx.bodyBytes
125+ let currRandsEntries = randCtx.data
126+ let nextRandInt = abs(toInt(remainingHash))
127+ let nextHash = drop(remainingHash, 1)
128+ let s = size(currRandsEntries)
129+ if ((0 == s))
130+ then {
131+ let r1Entry = DataEntry(toString(nextRandInt), nextRandInt)
132+ DataTransaction([r1Entry], EMPTYVECT, 0, 0, 0, this, EMPTYVECT, nextHash, [EMPTYVECT])
133+ }
134+ else {
135+ let duplicate = if (if (if (if (if (if (if (if (if ((s >= 1))
136+ then (currRandsEntries[0].value == nextRandInt)
137+ else false)
138+ then true
139+ else if ((s >= 2))
140+ then (currRandsEntries[1].value == nextRandInt)
141+ else false)
142+ then true
143+ else if ((s >= 3))
144+ then (currRandsEntries[2].value == nextRandInt)
145+ else false)
146+ then true
147+ else if ((s >= 4))
148+ then (currRandsEntries[3].value == nextRandInt)
149+ else false)
150+ then true
151+ else if ((s >= 5))
152+ then (currRandsEntries[4].value == nextRandInt)
153+ else false)
154+ then true
155+ else if ((s >= 6))
156+ then (currRandsEntries[5].value == nextRandInt)
157+ else false)
158+ then true
159+ else if ((s >= 7))
160+ then (currRandsEntries[6].value == nextRandInt)
161+ else false)
162+ then true
163+ else if ((s >= 8))
164+ then (currRandsEntries[7].value == nextRandInt)
165+ else false)
166+ then true
167+ else if ((s >= 9))
168+ then (currRandsEntries[8].value == nextRandInt)
169+ else false
170+ if (duplicate)
171+ then DataTransaction(currRandsEntries, EMPTYVECT, 0, 0, 0, this, EMPTYVECT, nextHash, [EMPTYVECT])
172+ else {
173+ let newRandsEntries = DataEntry(toString(nextRandInt), nextRandInt) :: currRandsEntries
174+ DataTransaction(newRandsEntries, EMPTYVECT, 0, 0, 0, this, EMPTYVECT, nextHash, [EMPTYVECT])
175+ }
176+ }
177+ }
178+
179+
180+func generateRandsVector2 (sessionId,from,to,rsaSign) = {
181+ let randHash = sha256(rsaSign)
182+ let randCtx = DataTransaction(nil, EMPTYVECT, 0, 0, 0, this, EMPTYVECT, randHash, [EMPTYVECT])
183+ nextRand2(nextRand2(nextRand2(nextRand2(nextRand2(nextRand2(nextRand2(nextRand2(nextRand2(randCtx)))))))))
184+ }
185+
186+
187+@Callable(i)
188+func random2 (sessionId,rsaSign) = {
189+ let from = 1
190+ let to = 100
191+ let drawParamsList = extractGameDataList(sessionId)
192+ let drawState = drawParamsList[0]
193+ let organizerPubKey58 = drawParamsList[1]
194+ let organizerPubKey = fromBase58String(organizerPubKey58)
195+ if ((drawState != STATEREADY))
196+ then throw((sessionId + " draw: it must be in READY state to generate random numbers"))
197+ else if (!(rsaVerify(SHA256, toBytes(sessionId), rsaSign, RSAPUBLIC)))
198+ then throw("Invalid RSA signature")
199+ else {
200+ let randCtx = generateRandsVector2(sessionId, from, to, rsaSign)
201+ let s = size(randCtx.data)
202+ let rand0 = if ((s >= 1))
203+ then randCtx.data[0].key
204+ else ""
205+ let rand1 = if ((s >= 2))
206+ then ((rand0 + "_") + randCtx.data[0].key)
207+ else rand0
208+ let rand2 = if ((s >= 3))
209+ then ((rand1 + "_") + randCtx.data[1].key)
210+ else rand1
211+ let rand3 = if ((s >= 4))
212+ then ((rand2 + "_") + randCtx.data[2].key)
213+ else rand2
214+ let rand4 = if ((s >= 5))
215+ then ((rand3 + "_") + randCtx.data[3].key)
216+ else rand3
217+ let rand5 = if ((s >= 6))
218+ then ((rand4 + "_") + randCtx.data[4].key)
219+ else rand4
220+ let rand6 = if ((s >= 7))
221+ then ((rand5 + "_") + randCtx.data[5].key)
222+ else rand5
223+ let rand7 = if ((s >= 8))
224+ then ((rand6 + "_") + randCtx.data[6].key)
225+ else rand6
226+ let rand8 = if ((s >= 9))
227+ then ((rand7 + "_") + randCtx.data[7].key)
228+ else rand7
229+ WriteSet([DataEntry(sessionId, formatStateDataStr(STATEFINISHED, organizerPubKey58, rand8))])
230+ }
231+ }
232+
233+
234+
235+@Callable(i)
236+func initDraw (sessionId) = {
237+ let base58Valid = (size(fromBase58String(sessionId)) > 0)
238+ if ((size(sessionId) != SESSIONIDFIXSIZE))
239+ then throw("Draw Id must be exactly 50 simbols")
240+ else if (!(base58Valid))
241+ then throw("Draw id must be in Base58 format")
242+ else {
243+ let organizerPubKey58 = toBase58String(i.callerPublicKey)
244+ let initState = formatStateDataStr(STATEINIT, organizerPubKey58, "")
245+ WriteSet([DataEntry(sessionId, initState)])
246+ }
247+ }
248+
249+
250+
251+@Callable(i)
252+func ready (sessionId) = {
253+ let drawParamsList = extractGameDataList(sessionId)
254+ let drawState = drawParamsList[0]
255+ let organizerPubKey58 = drawParamsList[1]
256+ let organizerPubKey = fromBase58String(organizerPubKey58)
257+ if ((drawState != STATEINIT))
258+ then throw((sessionId + " draw: moving into READY state is allowed only from INIT state"))
259+ else if ((organizerPubKey != i.callerPublicKey))
260+ then throw((sessionId + "draw: moving into READY state is allowed for organizer only"))
261+ else {
262+ let readyState = formatStateDataStr(STATEINIT, organizerPubKey58, "")
263+ WriteSet([DataEntry(sessionId, readyState)])
264+ }
265+ }
266+
267+
268+
269+@Callable(i)
270+func random (sessionId,rsaSign) = {
271+ let from = 1
272+ let to = 100
273+ let drawParamsList = extractGameDataList(sessionId)
274+ let drawState = drawParamsList[0]
275+ let organizerPubKey58 = drawParamsList[1]
276+ let organizerPubKey = fromBase58String(organizerPubKey58)
277+ if ((drawState != STATEREADY))
278+ then throw((sessionId + " draw: it must be in READY state to generate random numbers"))
279+ else if (!(rsaVerify(SHA256, toBytes(sessionId), rsaSign, RSAPUBLIC)))
280+ then throw("Invalid RSA signature")
281+ else {
282+ let currVect = generateRandsVector(sessionId, from, to, rsaSign)
283+ let s = size(currVect)
284+ let rand1 = if ((s >= 1))
285+ then toString(toInt(take(drop(currVect, 0), 8)))
286+ else ""
287+ let rand2 = if ((s >= 2))
288+ then ((rand1 + "_") + toString(toInt(take(drop(currVect, (1 * 8)), 8))))
289+ else rand1
290+ let rand3 = if ((s >= 3))
291+ then ((rand2 + "_") + toString(toInt(take(drop(currVect, (2 * 8)), 8))))
292+ else rand2
293+ let rand4 = if ((s >= 4))
294+ then ((rand3 + "_") + toString(toInt(take(drop(currVect, (3 * 8)), 8))))
295+ else rand3
296+ let rand5 = if ((s >= 5))
297+ then ((rand4 + "_") + toString(toInt(take(drop(currVect, (4 * 8)), 8))))
298+ else rand4
299+ let rand6 = if ((s >= 6))
300+ then ((rand5 + "_") + toString(toInt(take(drop(currVect, (5 * 8)), 8))))
301+ else rand5
302+ let rand7 = if ((s >= 7))
303+ then ((rand6 + "_") + toString(toInt(take(drop(currVect, (6 * 8)), 8))))
304+ else rand6
305+ let rand8 = if ((s >= 8))
306+ then ((rand7 + "_") + toString(toInt(take(drop(currVect, (7 * 8)), 8))))
307+ else rand7
308+ let rand9 = if ((s >= 9))
309+ then ((rand8 + "_") + toString(toInt(take(drop(currVect, (8 * 8)), 8))))
310+ else rand8
311+ WriteSet([DataEntry(sessionId, formatStateDataStr(STATEFINISHED, organizerPubKey58, rand9))])
312+ }
313+ }
314+
315+
316+@Verifier(tx)
317+func verify () = match tx {
318+ case dtx: DataTransaction =>
319+ let data0 = dtx.data[0]
320+ let sessionId = take(data0.key, SESSIONIDFIXSIZE)
321+ let drawParamsList = extractGameDataList(sessionId)
322+ let drawState = drawParamsList[0]
323+ let organizerPubKey58 = drawParamsList[1]
324+ let organizerPubKey = fromBase58String(organizerPubKey58)
325+ let dataEntriesCount = size(dtx.data)
326+ if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if ((drawState == STATEINIT))
327+ then sigVerify(tx.bodyBytes, tx.proofs[0], organizerPubKey)
328+ else false)
329+ then (dataEntriesCount > 0)
330+ else false)
331+ then (15 >= dataEntriesCount)
332+ else false)
333+ then validateDtxKey(sessionId, data0, dataEntriesCount, 0)
334+ else false)
335+ then validateDtxKey(sessionId, dtx.data[1], dataEntriesCount, 1)
336+ else false)
337+ then validateDtxKey(sessionId, dtx.data[2], dataEntriesCount, 2)
338+ else false)
339+ then validateDtxKey(sessionId, dtx.data[3], dataEntriesCount, 3)
340+ else false)
341+ then validateDtxKey(sessionId, dtx.data[4], dataEntriesCount, 4)
342+ else false)
343+ then validateDtxKey(sessionId, dtx.data[5], dataEntriesCount, 5)
344+ else false)
345+ then validateDtxKey(sessionId, dtx.data[6], dataEntriesCount, 6)
346+ else false)
347+ then validateDtxKey(sessionId, dtx.data[7], dataEntriesCount, 7)
348+ else false)
349+ then validateDtxKey(sessionId, dtx.data[8], dataEntriesCount, 8)
350+ else false)
351+ then validateDtxKey(sessionId, dtx.data[9], dataEntriesCount, 9)
352+ else false)
353+ then validateDtxKey(sessionId, dtx.data[10], dataEntriesCount, 10)
354+ else false)
355+ then validateDtxKey(sessionId, dtx.data[11], dataEntriesCount, 11)
356+ else false)
357+ then validateDtxKey(sessionId, dtx.data[12], dataEntriesCount, 12)
358+ else false)
359+ then validateDtxKey(sessionId, dtx.data[13], dataEntriesCount, 13)
360+ else false)
361+ then validateDtxKey(sessionId, dtx.data[14], dataEntriesCount, 14)
362+ else false
363+ case sstx: SetScriptTransaction =>
364+ true
365+ case _ =>
366+ false
367+}
368+

github/deemru/w8io/873ac7e 
26.55 ms