tx · F6RpxQT5HqcMhmoYwPTaxvfC5AdZ9JNwsdsAU6tCBuGR

3MqtTwie8XKCcUcntgFAFYnfLEnffezju4Y:  -0.01500000 Waves

2019.08.09 18:48 [623645] smart account 3MqtTwie8XKCcUcntgFAFYnfLEnffezju4Y > SELF 0.00000000 Waves

{ "type": 13, "id": "F6RpxQT5HqcMhmoYwPTaxvfC5AdZ9JNwsdsAU6tCBuGR", "fee": 1500000, "feeAssetId": null, "timestamp": 1565365776179, "version": 1, "sender": "3MqtTwie8XKCcUcntgFAFYnfLEnffezju4Y", "senderPublicKey": "Gf4eU8JJaQziR7AfnST6tmzhUgFmeKavkwyoceen3PK1", "proofs": [ "32xqDZBvJ4teVG7R7aAh98BiT62Pdxzijb9ZQpPqu7BNWMUFhDSdkKEa4QTLa4DJLgaFczUG7iW3b6tfy2f7KUmE" ], "script": "base64:AAIDAAAAAAAAAAAAAAAaAAAAAAlSU0FQVUJMSUMJAAJbAAAAAQIAAAGPYmFzZTY0Ok1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcWxBaUFOU21CcERIWUtQOXNLZ2VOL2wxYkFiMjhnL3RHbGdEa3dUNUZpTU40WDNwd2R2ZHhFN212U1I4LzQxZFU5cng0akcrNnRacGIxVUxWRFBzNDMxdFIySVJhVFh3NUNqK0FjMnZoTCs1SmFtQ2VyR0QxVVcrYmgvRUdRdHhvOFczWUxEcm9mWEI1UUhKeDRQa3oyS2dmK29TL0M4aEh1Qi9VNGtyTzc2VTA1MDdHVGpaUFA5a1JRMHVMU01lcVFYdDh3WFMrbk1wNXdhanF4UHBETE1hU1JFZ3NLd3YvQUVrUDRkenBUWWJpa0xCWWw0cXRkSnNEODRITEZTa2l3ZDNCaGNPclBqb0lZbUx4UXVCRDVUSU1LVEtEM3NkWmdhWTlyc3lxeDNBMDBpbm55eEQ2enAzYjRnRnBVT1g4SnhLWmRFQzJteUVxbGVOZ2c3R3p3SURBUUFCAAAAAAZTRVJWRVIJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM05DaUcyOExtV3lUaWdXRzEzRTVRbnZkSEJzWkZZWFNTMmoAAAAAB1dBVkVMRVQJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoAAAAABBTRVNTSU9OSURGSVhTSVpFAAAAAAAAAAAsAAAAAA5SQU5EQ1lDTEVQUklDRQkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAUFAAAAB1dBVkVMRVQAAAAAAAAAA+gAAAAAEE1BWFJBTkRTUEVSQ1lDTEUAAAAAAAAAAA4AAAAACVNUQVRFSU5JVAIAAAAESU5JVAAAAAAIREFUQURPTkUCAAAABVJFQURZAAAAAA1TVEFURUZJTklTSEVEAgAAAAhGSU5JU0hFRAAAAAAISWR4U3RhdGUAAAAAAAAAAAAAAAAAD0lkeE9yZ2FuaXplclB1YgAAAAAAAAAAAQAAAAALSWR4UmFuZEZyb20AAAAAAAAAAAIAAAAACUlkeFJhbmRUbwAAAAAAAAAAAwAAAAANSWR4UmFuZHND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NTgJAAGkAAAAAQUAAAAIcmFuZEZyb20JAAGkAAAAAQUAAAAGcmFuZFRvBQAAAA1yYW5kc0NvdW50U3RyBQAAAA1yYW5kc0NvdW50U3RyCQABpAAAAAEFAAAADWRhdGFLZXlzQ291bnQCAAAABG51bGwCAAAAATACAAAAATACAAAAATECAAAAATACAAAAATECAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACXNlc3Npb25JZAUAAAAJaW5pdFN0YXRlBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAGU0VSVkVSBQAAAAhyYW5kc1BtdAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAABXJlYWR5AAAAAQAAAAlzZXNzaW9uSWQEAAAADmRyYXdQYXJhbXNMaXN0CQEAAAATZXh0cmFjdEdhbWVEYXRhTGlzdAAAAAEFAAAACXNlc3Npb25JZAQAAAAJZHJhd1N0YXRlCQABkQAAAAIFAAAADmRyYXdQYXJhbXNMaXN0BQAAAAhJZHhTdGF0ZQQAAAARb3JnYW5pemVyUHViS2V5NTgJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QFAAAAD0lkeE9yZ2FuaXplclB1YgQAAAANcmFuZHNDb3VudFN0cgkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAUAAAANSWR4UmFuZHNDb3VudAQAAAATcmVtYWluUmFuZHNDb3VudFN0cgkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAUAAAATSWR4UmVtYWluUmFuZHNDb3VudAQAAAAHZnJvbVN0cgkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAUAAAALSWR4UmFuZEZyb20EAAAABXRvU3RyCQABkQAAAAIFAAAADmRyYXdQYXJhbXNMaXN0BQAAAAlJZHhSYW5kVG8EAAAADWRhdGFLZXlzQ291bnQJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QFAAAAEElkeERhdGFLZXlzQ291bnQEAAAAD29yZ2FuaXplclB1YktleQkAAlkAAAABBQAAABFvcmdhbml6ZXJQdWJLZXk1OAMJAQAAAAIhPQAAAAIFAAAACWRyYXdTdGF0ZQUAAAAJU1RBVEVJTklUCQAAAgAAAAEJAAEsAAAAAgUAAAAJc2Vzc2lvbklkAgAAAD4gZHJhdzogbW92aW5nIGludG8gUkVBRFkgc3RhdGUgaXMgYWxsb3dlZCBvbmx5IGZyb20gSU5JVCBzdGF0ZQMJAQAAAAIhPQAAAAIFAAAAD29yZ2FuaXplclB1YktleQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAEJAAEsAAAAAgUAAAAJc2Vzc2lvbklkAgAAADtkcmF3OiBtb3ZpbmcgaW50byBSRUFEWSBzdGF0ZSBpcyBhbGxvd2VkIGZvciBvcmdhbml6ZXIgb25seQQAAAAKcmVhZHlTdGF0ZQkBAAAAEmZvcm1hdFN0YXRlRGF0YVN0cgAAAA4FAAAACERBVEFET05FBQAAABFvcmdhbml6ZXJQdWJLZXk1OAUAAAAHZnJvbVN0cgUAAAAFdG9TdHIFAAAADXJhbmRzQ291bnRTdHIFAAAAE3JlbWFpblJhbmRzQ291bnRTdHIFAAAADWRhdGFLZXlzQ291bnQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAIAAAABMAIAAAABMAIAAAABMQIAAAABMAIAAAABMQIAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAlzZXNzaW9uSWQFAAAACnJlYWR5U3RhdGUFAAAAA25pbAAAAAFpAQAAAAZyYW5kb20AAAACAAAACXNlc3Npb25JZAAAAAdyc2FTaWduBAAAAA5kcmF3UGFyYW1zTGlzdAkBAAAAE2V4dHJhY3RHYW1lRGF0YUxpc3QAAAABBQAAAAlzZXNzaW9uSWQEAAAACWRyYXdTdGF0ZQkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAUAAAAISWR4U3RhdGUEAAAAEW9yZ2FuaXplclB1YktleTU4CQABkQAAAAIFAAAADmRyYXdQYXJhbXNMaXN0BQAAAA9JZHhPcmdhbml6ZXJQdWIEAAAADXJhbmRzQ291bnRTdHIJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QFAAAADUlkeFJhbmRzQ291bnQEAAAAEHJlbWFpblJhbmRzQ291bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAUAAAATSWR4UmVtYWluUmFuZHNDb3VudAQAAAAPbGFzdE9mZnNldEJ5dGVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QFAAAADUlkeExhc3RPZmZzZXQEAAAADGN1cnJSYW5kc1N0cgkAAZEAAAACBQAAAA5kcmF3UGFyYW1zTGlzdAUAAAAMSWR4Q3VyclJhbmRzBAAAAAdmcm9tU3RyCQABkQAAAAIFAAAADmRyYXdQYXJhbXNMaXN0BQAAAAtJZHhSYW5kRnJvbQQAAAAFdG9TdHIJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QFAAAACUlkeFJhbmRUbwQAAAAMZGF0YURvbmVUeElkCQABkQAAAAIFAAAADmRyYXdQYXJhbXNMaXN0BQAAAA9JZHhEYXRhRG9uZVR4SWQEAAAACHNsb3dJZHgxCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QAAAAAAAAAAAkEAAAACHNsb3dJZHgyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QAAAAAAAAAAAoEAAAACGZhc3RJZHgxCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QAAAAAAAAAAAsEAAAACGZhc3RJZHgyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QAAAAAAAAAAAwEAAAABGZyb20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQUAAAAHZnJvbVN0cgQAAAACdG8JAQAAAA1wYXJzZUludFZhbHVlAAAAAQUAAAAFdG9TdHIEAAAAD29yZ2FuaXplclB1YktleQkAAlkAAAABBQAAABFvcmdhbml6ZXJQdWJLZXk1OAMJAQAAAAIhPQAAAAIFAAAACWRyYXdTdGF0ZQUAAAAIREFUQURPTkUJAAACAAAAAQkAASwAAAACBQAAAAlzZXNzaW9uSWQCAAAAOyBkcmF3OiBpdCBtdXN0IGJlIGluIFJFQURZIHN0YXRlIHRvIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJzAwkBAAAAASEAAAABCQAB+AAAAAQFAAAABlNIQTI1NgkAAMsAAAACCQABmwAAAAEFAAAACXNlc3Npb25JZAkAAZsAAAABBQAAAAxkYXRhRG9uZVR4SWQFAAAAB3JzYVNpZ24FAAAACVJTQVBVQkxJQwkAAAIAAAABAgAAABVJbnZhbGlkIFJTQSBzaWduYXR1cmUEAAAAC3JhbmRHZW5JbmZvCQEAAAAMZ2VuZXJhdGVSYW5kAAAACwUAAAAJc2Vzc2lvbklkBQAAAARmcm9tBQAAAAJ0bwUAAAAHcnNhU2lnbgUAAAAMY3VyclJhbmRzU3RyBQAAABByZW1haW5SYW5kc0NvdW50BQAAAA9sYXN0T2Zmc2V0Qnl0ZXMFAAAACHNsb3dJZHgxBQAAAAhzbG93SWR4MgUAAAAIZmFzdElkeDEFAAAACGZhc3RJZHgyBAAAABZuZXdSZW1haW5SYW5kc0NvdW50U3RyCQABkQAAAAIFAAAAC3JhbmRHZW5JbmZvAAAAAAAAAAABBAAAAAhuZXdTdGF0ZQMJAAAAAAAAAgUAAAAWbmV3UmVtYWluUmFuZHNDb3VudFN0cgIAAAABMAUAAAANU1RBVEVGSU5JU0hFRAUAAAAIREFUQURPTkUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACXNlc3Npb25JZAkBAAAAEmZvcm1hdFN0YXRlRGF0YVN0cgAAAA4FAAAACG5ld1N0YXRlBQAAABFvcmdhbml6ZXJQdWJLZXk1OAUAAAAHZnJvbVN0cgUAAAAFdG9TdHIFAAAADXJhbmRzQ291bnRTdHIFAAAAFm5ld1JlbWFpblJhbmRzQ291bnRTdHIJAAGRAAAAAgUAAAAOZHJhd1BhcmFtc0xpc3QFAAAAEElkeERhdGFLZXlzQ291bnQFAAAADGRhdGFEb25lVHhJZAkAAZEAAAACBQAAAAtyYW5kR2VuSW5mbwAAAAAAAAAAAgkAAZEAAAACBQAAAAtyYW5kR2VuSW5mbwAAAAAAAAAAAwkAAZEAAAACBQAAAAty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", "chainId": 84, "height": 623645, "spentComplexity": 0 } View: original | compacted Prev: E7kdGeKUvaWAQXHi33iKFajNzK6eyfsMWGXEjtUoJGi3 Next: DBLbhHFaizgYow4i1X3FTKK94mRRCXAeNZzpCxrTc2R9 Diff:
OldNewDifferences
3737
3838 let r = 8
3939
40-func s (t) = if ((0 > t))
41- then -(t)
42- else t
40+let s = 13
41+
42+func t (u) = if ((0 > u))
43+ then -(u)
44+ else u
4345
4446
45-func u (v,w,x,y,z,A,B,C,D) = {
46- let E = ((((((((((((((v + "_") + w) + "_") + x) + "_") + y) + "_") + z) + "_") + A) + "_") + B) + "_") + C)
47- if ((D == ""))
48- then ((E + "_") + "-")
49- else ((E + "_") + D)
47+func v (w,x,y,z,A,B,C,D,E,F,G,H,I,J) = {
48+ let K = ((((((((((((((((((((((((w + "_") + x) + "_") + y) + "_") + z) + "_") + A) + "_") + B) + "_") + C) + "_") + D) + "_") + E) + "_") + F) + "_") + G) + "_") + H) + "_") + I)
49+ if ((J == ""))
50+ then ((K + "_") + "-")
51+ else ((K + "_") + J)
5052 }
5153
5254
53-func F (G) = {
54- let H = getStringValue(this, G)
55- split(H, "_")
55+func L (M) = {
56+ let N = getStringValue(this, M)
57+ split(N, "_")
5658 }
5759
5860
59-func I (J,K,L,A,M) = {
60- let N = ((s(toInt(M)) % J) + K)
61- let O = toString(N)
62- let P = isDefined(indexOf(L, O))
63- if (if (!(P))
64- then (A > 0)
61+func O (P,Q,R,B,S) = {
62+ let T = ((t(toInt(S)) % P) + Q)
63+ let U = toString(T)
64+ let V = isDefined(indexOf(R, U))
65+ if (if (!(V))
66+ then (B > 0)
6567 else false)
66- then [((L + "-") + O), "yes"]
67- else [L, ""]
68+ then [((R + "-") + U), "yes"]
69+ else [R, ""]
6870 }
6971
7072
71-func Q (G,R,S,T,L,A,U) = {
72- let V = T
73- let J = ((S - R) + 1)
74- let W = I(J, R, L, A, drop(V, (U + 1)))
75- let X = if ((W[1] != ""))
76- then (A - 1)
77- else A
78- let Y = I(J, R, W[0], X, drop(V, (U + 2)))
79- let Z = if ((Y[1] != ""))
80- then (X - 1)
81- else X
82- let aa = I(J, R, Y[0], Z, drop(V, (U + 3)))
83- let ab = if ((aa[1] != ""))
84- then (Z - 1)
85- else Z
86- let ac = I(J, R, aa[0], ab, drop(V, (U + 4)))
87- let ad = if ((ac[1] != ""))
88- then (ab - 1)
89- else ab
90- let ae = I(J, R, ac[0], ad, drop(V, (U + 5)))
91- let af = if ((ae[1] != ""))
92- then (ad - 1)
93- else ad
94- let ag = I(J, R, ae[0], af, drop(V, (U + 6)))
95- let ah = if ((ag[1] != ""))
96- then (af - 1)
97- else af
98- let ai = I(J, R, ag[0], ah, drop(V, (U + 7)))
99- let aj = if ((ai[1] != ""))
100- then (ah - 1)
101- else ah
102- let ak = I(J, R, ai[0], aj, drop(V, (U + 8)))
103- let al = if ((ak[1] != ""))
104- then (aj - 1)
105- else aj
106- let am = I(J, R, ak[0], al, drop(V, (U + 9)))
107- let an = if ((am[1] != ""))
108- then (al - 1)
109- else al
110- let ao = I(J, R, am[0], an, drop(V, (U + 10)))
111- let ap = if ((ao[1] != ""))
112- then (an - 1)
113- else an
114- let aq = I(J, R, ao[0], ap, drop(V, (U + 11)))
115- let ar = if ((aq[1] != ""))
116- then (ap - 1)
117- else ap
118- let as = I(J, R, aq[0], ar, drop(V, (U + 12)))
119- let at = if ((as[1] != ""))
120- then (ar - 1)
121- else ar
122- let au = I(J, R, as[0], at, drop(V, (U + 13)))
123- let av = if ((au[1] != ""))
124- then (at - 1)
125- else at
126- let aw = I(J, R, au[0], av, drop(V, (U + 14)))
127- let ax = if ((aw[1] != ""))
128- then (av - 1)
129- else av
130-[aw[0], if ((ax == 0))
73+func W (M,X,Y,Z,R,B,aa,ab,ac,ad,ae) = {
74+ let af = if (((aa + 1) > 87))
75+ then if ((ae > 241))
76+ then [0, (ab + 1), (ac + 1), 0, 1]
77+ else [0, ab, ac, (ad + 1), (ae + 1)]
78+ else [(aa + 1), ab, ac, ad, ae]
79+ let ag = af[0]
80+ let ah = af[1]
81+ let ai = af[2]
82+ let aj = af[3]
83+ let ak = af[4]
84+ let al = (((((((take(drop(Z, ah), 1) + take(drop(Z, 1), 1)) + take(drop(Z, aj), 1)) + take(drop(Z, 3), 1)) + take(drop(Z, ai), 1)) + take(drop(Z, 5), 1)) + take(drop(Z, 6), 1)) + take(drop(Z, ak), 1))
85+ let am = ((sha256(al) + blake2b256(al)) + keccak256(al))
86+ let P = ((Y - X) + 1)
87+ let an = O(P, X, R, B, drop(am, ag))
88+ let ao = if ((an[1] != ""))
89+ then (B - 1)
90+ else B
91+ let ap = O(P, X, an[0], ao, drop(am, (ag + 1)))
92+ let aq = if ((ap[1] != ""))
93+ then (ao - 1)
94+ else ao
95+ let ar = O(P, X, ap[0], aq, drop(am, (ag + 2)))
96+ let as = if ((ar[1] != ""))
97+ then (aq - 1)
98+ else aq
99+ let at = O(P, X, ar[0], as, drop(am, (ag + 3)))
100+ let au = if ((at[1] != ""))
101+ then (as - 1)
102+ else as
103+ let av = O(P, X, at[0], au, drop(am, (ag + 4)))
104+ let aw = if ((av[1] != ""))
105+ then (au - 1)
106+ else au
107+ let ax = O(P, X, av[0], aw, drop(am, (ag + 5)))
108+ let ay = if ((ax[1] != ""))
109+ then (aw - 1)
110+ else aw
111+ let az = O(P, X, ax[0], ay, drop(am, (ag + 6)))
112+ let aA = if ((az[1] != ""))
113+ then (ay - 1)
114+ else ay
115+ let aB = O(P, X, az[0], aA, drop(am, (ag + 7)))
116+ let aC = if ((aB[1] != ""))
117+ then (aA - 1)
118+ else aA
119+ let aD = O(P, X, aB[0], aC, drop(am, (ag + 8)))
120+ let aE = if ((aD[1] != ""))
121+ then (aC - 1)
122+ else aC
123+ let aF = O(P, X, aD[0], aE, drop(am, (ag + 9)))
124+ let aG = if ((aF[1] != ""))
125+ then (aE - 1)
126+ else aE
127+ let aH = O(P, X, aF[0], aG, drop(am, (ag + 10)))
128+ let aI = if ((aH[1] != ""))
129+ then (aG - 1)
130+ else aG
131+[aH[0], if ((aI == 0))
131132 then "0"
132- else toString(ax), toString((U + 14))]
133+ else toString(aI), toString((ag + 10)), toString(ah), toString(ai), toString(aj), toString(ak)]
133134 }
134135
135136
136-func ay (G,az) = if (if (if ((G == take(az.key, d)))
137- then (size(az.key) > d)
138- else false)
139- then !(isDefined(getString(this, az.key)))
140- else false)
141- then {
142- let aA = az.value
143- if ($isInstanceOf(aA, "String"))
144- then {
145- let aB = aA
146- true
147- }
148- else throw((G + " draw: only String type is accepted for data transactions"))
149- }
150- else false
137+func aJ (M,C,aK) = {
138+ let aL = split(aK.key, "_")
139+ if ((size(aL) != 2))
140+ then throw("Invalid data key format. It must follow to ${sessionId}_${num}")
141+ else {
142+ let aM = aL[0]
143+ let aN = aL[1]
144+ if ((M != aM))
145+ then throw(((("Several data keys have different sessionId: " + M) + " and ") + aM))
146+ else if (isDefined(getString(this, aK.key)))
147+ then throw(("One of the data keys has already presented in account state: key=" + aK.key))
148+ else if ((size(aN) > 4))
149+ then throw("Invalid data key format. It must follow to ${sessionId}_${num} where ${num} length couldn't be greater than 4")
150+ else if ((take(aN, 1) == "0"))
151+ then throw("Invalid data key format. It must follow to ${sessionId}_${num} where ${num} couldn't start from 0")
152+ else {
153+ let aO = parseInt(aN)
154+ if (isDefined(aO))
155+ then {
156+ let aP = extract(aO)
157+ if (if ((1 > aP))
158+ then true
159+ else (aP > C))
160+ then throw((((("Invalid data key format. It must follow to ${sessionId}_${num}" + " where ${num} must be a valid int value from 1 to ") + toString(C)) + " but actualNum=") + toString(aP)))
161+ else {
162+ let aQ = aK.value
163+ if ($isInstanceOf(aQ, "String"))
164+ then {
165+ let aR = aQ
166+ true
167+ }
168+ else throw((M + " draw: only String type is accepted for data transactions"))
169+ }
170+ }
171+ else throw((("Invalid data key format. It must follow to ${sessionId}_${num}" + " where ${num} must be a valid int value from 1 to 7145 but actualNum=") + aN))
172+ }
173+ }
174+ }
151175
152176
153-@Callable(aC)
154-func initDraw (x,y,z) = {
155- let G = toBase58String(aC.transactionId)
156- if (if ((0 >= x))
177+func aS (A,aT,aU) = {
178+ let aV = 1000
179+ let aW = ((13 * c) / 100)
180+ let aX = 50
181+ let aY = ((8 * c) / 100)
182+ let aZ = 5000
183+ let ba = ((297 * c) / 100)
184+ let bb = 1000
185+ let bc = ((143 * c) / 100)
186+ let bd = 50000
187+ let be = ((1427 * c) / 100)
188+ let bf = 5000
189+ let bg = ((705 * c) / 100)
190+ let bh = if ((aV > A))
191+ then (aW + ((A / aX) * aY))
192+ else if ((aZ > A))
193+ then (ba + (((A / bb) - 1) * bc))
194+ else if ((bd > A))
195+ then (be + (((A / bf) - 1) * bg))
196+ else throw("Please contact our sales team to generate more than 50k rands")
197+ let bi = (bh + aU)
198+ if (isDefined(aT.assetId))
199+ then throw("Only WAVES can be used as a payment for rands generation")
200+ else if ((bi > aT.amount))
201+ then throw(((((("Attached payment is to small to generate " + toString(A)) + " unique randoms numbers and upload at least 1 data tx: actualPmt=") + toString(aT.amount)) + " but minPmt is ") + toString(bi)))
202+ else bh
203+ }
204+
205+
206+@Callable(bj)
207+func initDraw (y,z,A) = {
208+ let M = toBase58String(bj.transactionId)
209+ let bk = ((z - y) + 1)
210+ let bl = (bk / 2)
211+ let bm = size(toString((z - 1)))
212+ let bn = size(toString(A))
213+ let bo = (((2 * bm) + (2 * bn)) + 4)
214+ let bp = (((5120 - 175) - bo) / (bm + 1))
215+ if (if ((0 >= y))
157216 then true
158- else (0 >= y))
217+ else (0 >= z))
159218 then throw("randFrom and randTo must be greater than 0")
160- else if ((x >= y))
219+ else if ((y >= z))
161220 then throw("randFrom must be strict less then randTo")
162- else if ((z > ((y - x) + 1)))
163- then throw(((((("Impossible to generate " + toString(z)) + " for provided random range - from ") + toString(x)) + " to ") + toString(y)))
164- else {
165- let w = toBase58String(aC.callerPublicKey)
166- let aD = toString(z)
167- let aE = u(g, w, toString(x), toString(y), aD, aD, "null", "0", "")
168- ScriptResult(WriteSet([DataEntry(G, aE)]), TransferSet([ScriptTransfer(b, 1000, unit)]))
169- }
221+ else if ((A > bk))
222+ then throw(((((((("Impossible to generate " + toString(A)) + " unique numbers for provided random range [") + toString(y)) + ", ") + toString(z)) + "] with actual size ") + toString(bk)))
223+ else if ((A > bl))
224+ then throw(((((((((("randsCount must be less then 50% of passed range length: range=[" + toString(y)) + ", ") + toString(z)) + "], rangeLength=") + toString(bk)) + " randsCount=") + toString(A)) + " allowedRandsCount=") + toString(bl)))
225+ else if ((A > bp))
226+ then throw(((((("randsCount couldn't be kept in 1 data entry: 1_randNumSpace=" + toString((bm + 1))) + " maxAllowedRandsCount=") + toString(bp)) + " actualRandsCount=") + toString(A)))
227+ else if (!(isDefined(bj.payment)))
228+ then throw("Please provide payment to generate unique random numbers")
229+ else {
230+ let aT = extract(bj.payment)
231+ let aU = ((5 * c) / 1000)
232+ let bq = aS(A, aT, aU)
233+ let br = (aT.amount - bq)
234+ let bs = (br / aU)
235+ let C = if ((7145 >= (bs * 5)))
236+ then (bs * 5)
237+ else 7145
238+ let x = toBase58String(bj.callerPublicKey)
239+ let bt = toString(A)
240+ let bu = v(g, x, toString(y), toString(z), bt, bt, toString(C), "null", "0", "0", "1", "0", "1", "")
241+ ScriptResult(WriteSet([DataEntry(M, bu)]), TransferSet([ScriptTransfer(b, bq, unit)]))
242+ }
170243 }
171244
172245
173246
174-@Callable(aC)
175-func ready (G) = {
176- let aF = F(G)
177- let v = aF[j]
178- let w = aF[k]
179- let aD = aF[n]
180- let aG = aF[o]
181- let aH = aF[l]
182- let aI = aF[m]
183- let aJ = fromBase58String(w)
184- if ((v != g))
185- then throw((G + " draw: moving into READY state is allowed only from INIT state"))
186- else if ((aJ != aC.callerPublicKey))
187- then throw((G + "draw: moving into READY state is allowed for organizer only"))
247+@Callable(bj)
248+func ready (M) = {
249+ let bv = L(M)
250+ let w = bv[j]
251+ let x = bv[k]
252+ let bt = bv[n]
253+ let bw = bv[o]
254+ let bx = bv[l]
255+ let by = bv[m]
256+ let C = bv[p]
257+ let bz = fromBase58String(x)
258+ if ((w != g))
259+ then throw((M + " draw: moving into READY state is allowed only from INIT state"))
260+ else if ((bz != bj.callerPublicKey))
261+ then throw((M + "draw: moving into READY state is allowed for organizer only"))
188262 else {
189- let aK = u(h, w, aH, aI, aD, aG, toBase58String(aC.transactionId), "0", "")
190- WriteSet([DataEntry(G, aK)])
263+ let bA = v(h, x, bx, by, bt, bw, C, toBase58String(bj.transactionId), "0", "0", "1", "0", "1", "")
264+ WriteSet([DataEntry(M, bA)])
191265 }
192266 }
193267
194268
195269
196-@Callable(aC)
197-func random (G,T) = {
198- let aF = F(G)
199- let v = aF[j]
200- let w = aF[k]
201- let aD = aF[n]
202- let aL = parseIntValue(aF[o])
203- let U = parseIntValue(aF[q])
204- let L = aF[r]
205- let aH = aF[l]
206- let aI = aF[m]
207- let B = aF[p]
208- let R = parseIntValue(aH)
209- let S = parseIntValue(aI)
210- let aJ = fromBase58String(w)
211- if ((v != h))
212- then throw((G + " draw: it must be in READY state to generate random numbers"))
213- else if (!(rsaVerify(SHA256, (toBytes(G) + toBytes(B)), T, a)))
270+@Callable(bj)
271+func random (M,Z) = {
272+ let bv = L(M)
273+ let w = bv[j]
274+ let x = bv[k]
275+ let bt = bv[n]
276+ let bB = parseIntValue(bv[o])
277+ let aa = parseIntValue(bv[r])
278+ let R = bv[s]
279+ let bx = bv[l]
280+ let by = bv[m]
281+ let D = bv[q]
282+ let F = parseIntValue(bv[9])
283+ let G = parseIntValue(bv[10])
284+ let H = parseIntValue(bv[11])
285+ let I = parseIntValue(bv[12])
286+ let X = parseIntValue(bx)
287+ let Y = parseIntValue(by)
288+ let bz = fromBase58String(x)
289+ if ((w != h))
290+ then throw((M + " draw: it must be in READY state to generate random numbers"))
291+ else if (!(rsaVerify(SHA256, (toBytes(M) + toBytes(D)), Z, a)))
214292 then throw("Invalid RSA signature")
215293 else {
216- let aM = Q(G, R, S, T, L, aL, U)
217- let aN = aM[0]
218- let aO = aM[1]
219- let aP = aM[2]
220- let aQ = if ((aO == "0"))
294+ let bC = W(M, X, Y, Z, R, bB, aa, F, G, H, I)
295+ let bD = bC[1]
296+ let bE = if ((bD == "0"))
221297 then i
222298 else h
223- WriteSet([DataEntry(G, u(aQ, w, aH, aI, aD, aO, B, aP, aN))])
299+ WriteSet([DataEntry(M, v(bE, x, bx, by, bt, bD, bv[p], D, bC[2], bC[3], bC[4], bC[5], bC[6], bC[0]))])
224300 }
225301 }
226302
227303
228-@Verifier(aR)
229-func aS () = {
230- let aA = aR
231- if ($isInstanceOf(aA, "DataTransaction"))
304+@Verifier(bF)
305+func bG () = {
306+ let aQ = bF
307+ if ($isInstanceOf(aQ, "DataTransaction"))
232308 then {
233- let aT = aA
234- let aU = aT.data[0]
235- let G = take(aU.key, d)
236- let aF = F(G)
237- let v = aF[0]
238- let w = aF[1]
239- let aJ = fromBase58String(w)
240- let aV = size(aT.data)
241- let aW = sigVerify(aR.bodyBytes, aR.proofs[0], aJ)
242- let aX = if ((aV > 0))
243- then (5 >= aV)
309+ let bH = aQ
310+ let bI = bH.data[0]
311+ let M = take(bI.key, d)
312+ let bv = L(M)
313+ let w = bv[j]
314+ let x = bv[k]
315+ let C = parseIntValue(bv[p])
316+ let bz = fromBase58String(x)
317+ let bJ = size(bH.data)
318+ let bK = sigVerify(bF.bodyBytes, bF.proofs[0], bz)
319+ let bL = (bJ == 5)
320+ let bM = (bH.fee == ((c * 5) / 1000))
321+ let bN = if (if (if (if (aJ(M, C, bI))
322+ then aJ(M, C, bH.data[1])
323+ else false)
324+ then aJ(M, C, bH.data[2])
325+ else false)
326+ then aJ(M, C, bH.data[3])
327+ else false)
328+ then aJ(M, C, bH.data[4])
244329 else false
245- let aY = if (if (if (if (if (ay(G, aU))
246- then if ((1 >= aV))
247- then true
248- else ay(G, aT.data[1])
330+ if (if (if (if ((w == g))
331+ then bK
249332 else false)
250- then if ((2 >= aV))
251- then true
252- else ay(G, aT.data[2])
333+ then bM
253334 else false)
254- then if ((3 >= aV))
255- then true
256- else ay(G, aT.data[3])
335+ then bL
257336 else false)
258- then if ((4 >= aV))
259- then true
260- else ay(G, aT.data[4])
261- else false)
262- then if ((5 >= aV))
263- then true
264- else ay(G, aT.data[5])
265- else false
266- if (if (if ((v == g))
267- then aW
268- else false)
269- then aX
270- else false)
271- then aY
337+ then bN
272338 else false
273339 }
274- else if ($isInstanceOf(aA, "SetScriptTransaction"))
340+ else if ($isInstanceOf(aQ, "SetScriptTransaction"))
275341 then {
276- let aZ = aA
342+ let bO = aQ
277343 true
278344 }
279- else if ($isInstanceOf(aA, "TransferTransaction"))
345+ else if ($isInstanceOf(aQ, "TransferTransaction"))
280346 then {
281- let ba = aA
347+ let bP = aQ
282348 true
283349 }
284350 else false
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqlAiANSmBpDHYKP9sKgeN/l1bAb28g/tGlgDkwT5FiMN4X3pwdvdxE7mvSR8/41dU9rx4jG+6tZpb1ULVDPs431tR2IRaTXw5Cj+Ac2vhL+5JamCerGD1UW+bh/EGQtxo8W3YLDrofXB5QHJx4Pkz2Kgf+oS/C8hHuB/U4krO76U0507GTjZPP9kRQ0uLSMeqQXt8wXS+nMp5wajqxPpDLMaSREgsKwv/AEkP4dzpTYbikLBYl4qtdJsD84HLFSkiwd3BhcOrPjoIYmLxQuBD5TIMKTKD3sdZgaY9rsyqx3A00innyxD6zp3b4gFpUOX8JxKZdEC2myEqleNgg7GzwIDAQAB")
55
66 let b = addressFromStringValue("3NCiG28LmWyTigWG13E5QnvdHBsZFYXSS2j")
77
88 let c = ((100 * 1000) * 1000)
99
1010 let d = 44
1111
1212 let e = ((5 * c) / 1000)
1313
1414 let f = 14
1515
1616 let g = "INIT"
1717
1818 let h = "READY"
1919
2020 let i = "FINISHED"
2121
2222 let j = 0
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 5
3333
3434 let p = 6
3535
3636 let q = 7
3737
3838 let r = 8
3939
40-func s (t) = if ((0 > t))
41- then -(t)
42- else t
40+let s = 13
41+
42+func t (u) = if ((0 > u))
43+ then -(u)
44+ else u
4345
4446
45-func u (v,w,x,y,z,A,B,C,D) = {
46- let E = ((((((((((((((v + "_") + w) + "_") + x) + "_") + y) + "_") + z) + "_") + A) + "_") + B) + "_") + C)
47- if ((D == ""))
48- then ((E + "_") + "-")
49- else ((E + "_") + D)
47+func v (w,x,y,z,A,B,C,D,E,F,G,H,I,J) = {
48+ let K = ((((((((((((((((((((((((w + "_") + x) + "_") + y) + "_") + z) + "_") + A) + "_") + B) + "_") + C) + "_") + D) + "_") + E) + "_") + F) + "_") + G) + "_") + H) + "_") + I)
49+ if ((J == ""))
50+ then ((K + "_") + "-")
51+ else ((K + "_") + J)
5052 }
5153
5254
53-func F (G) = {
54- let H = getStringValue(this, G)
55- split(H, "_")
55+func L (M) = {
56+ let N = getStringValue(this, M)
57+ split(N, "_")
5658 }
5759
5860
59-func I (J,K,L,A,M) = {
60- let N = ((s(toInt(M)) % J) + K)
61- let O = toString(N)
62- let P = isDefined(indexOf(L, O))
63- if (if (!(P))
64- then (A > 0)
61+func O (P,Q,R,B,S) = {
62+ let T = ((t(toInt(S)) % P) + Q)
63+ let U = toString(T)
64+ let V = isDefined(indexOf(R, U))
65+ if (if (!(V))
66+ then (B > 0)
6567 else false)
66- then [((L + "-") + O), "yes"]
67- else [L, ""]
68+ then [((R + "-") + U), "yes"]
69+ else [R, ""]
6870 }
6971
7072
71-func Q (G,R,S,T,L,A,U) = {
72- let V = T
73- let J = ((S - R) + 1)
74- let W = I(J, R, L, A, drop(V, (U + 1)))
75- let X = if ((W[1] != ""))
76- then (A - 1)
77- else A
78- let Y = I(J, R, W[0], X, drop(V, (U + 2)))
79- let Z = if ((Y[1] != ""))
80- then (X - 1)
81- else X
82- let aa = I(J, R, Y[0], Z, drop(V, (U + 3)))
83- let ab = if ((aa[1] != ""))
84- then (Z - 1)
85- else Z
86- let ac = I(J, R, aa[0], ab, drop(V, (U + 4)))
87- let ad = if ((ac[1] != ""))
88- then (ab - 1)
89- else ab
90- let ae = I(J, R, ac[0], ad, drop(V, (U + 5)))
91- let af = if ((ae[1] != ""))
92- then (ad - 1)
93- else ad
94- let ag = I(J, R, ae[0], af, drop(V, (U + 6)))
95- let ah = if ((ag[1] != ""))
96- then (af - 1)
97- else af
98- let ai = I(J, R, ag[0], ah, drop(V, (U + 7)))
99- let aj = if ((ai[1] != ""))
100- then (ah - 1)
101- else ah
102- let ak = I(J, R, ai[0], aj, drop(V, (U + 8)))
103- let al = if ((ak[1] != ""))
104- then (aj - 1)
105- else aj
106- let am = I(J, R, ak[0], al, drop(V, (U + 9)))
107- let an = if ((am[1] != ""))
108- then (al - 1)
109- else al
110- let ao = I(J, R, am[0], an, drop(V, (U + 10)))
111- let ap = if ((ao[1] != ""))
112- then (an - 1)
113- else an
114- let aq = I(J, R, ao[0], ap, drop(V, (U + 11)))
115- let ar = if ((aq[1] != ""))
116- then (ap - 1)
117- else ap
118- let as = I(J, R, aq[0], ar, drop(V, (U + 12)))
119- let at = if ((as[1] != ""))
120- then (ar - 1)
121- else ar
122- let au = I(J, R, as[0], at, drop(V, (U + 13)))
123- let av = if ((au[1] != ""))
124- then (at - 1)
125- else at
126- let aw = I(J, R, au[0], av, drop(V, (U + 14)))
127- let ax = if ((aw[1] != ""))
128- then (av - 1)
129- else av
130-[aw[0], if ((ax == 0))
73+func W (M,X,Y,Z,R,B,aa,ab,ac,ad,ae) = {
74+ let af = if (((aa + 1) > 87))
75+ then if ((ae > 241))
76+ then [0, (ab + 1), (ac + 1), 0, 1]
77+ else [0, ab, ac, (ad + 1), (ae + 1)]
78+ else [(aa + 1), ab, ac, ad, ae]
79+ let ag = af[0]
80+ let ah = af[1]
81+ let ai = af[2]
82+ let aj = af[3]
83+ let ak = af[4]
84+ let al = (((((((take(drop(Z, ah), 1) + take(drop(Z, 1), 1)) + take(drop(Z, aj), 1)) + take(drop(Z, 3), 1)) + take(drop(Z, ai), 1)) + take(drop(Z, 5), 1)) + take(drop(Z, 6), 1)) + take(drop(Z, ak), 1))
85+ let am = ((sha256(al) + blake2b256(al)) + keccak256(al))
86+ let P = ((Y - X) + 1)
87+ let an = O(P, X, R, B, drop(am, ag))
88+ let ao = if ((an[1] != ""))
89+ then (B - 1)
90+ else B
91+ let ap = O(P, X, an[0], ao, drop(am, (ag + 1)))
92+ let aq = if ((ap[1] != ""))
93+ then (ao - 1)
94+ else ao
95+ let ar = O(P, X, ap[0], aq, drop(am, (ag + 2)))
96+ let as = if ((ar[1] != ""))
97+ then (aq - 1)
98+ else aq
99+ let at = O(P, X, ar[0], as, drop(am, (ag + 3)))
100+ let au = if ((at[1] != ""))
101+ then (as - 1)
102+ else as
103+ let av = O(P, X, at[0], au, drop(am, (ag + 4)))
104+ let aw = if ((av[1] != ""))
105+ then (au - 1)
106+ else au
107+ let ax = O(P, X, av[0], aw, drop(am, (ag + 5)))
108+ let ay = if ((ax[1] != ""))
109+ then (aw - 1)
110+ else aw
111+ let az = O(P, X, ax[0], ay, drop(am, (ag + 6)))
112+ let aA = if ((az[1] != ""))
113+ then (ay - 1)
114+ else ay
115+ let aB = O(P, X, az[0], aA, drop(am, (ag + 7)))
116+ let aC = if ((aB[1] != ""))
117+ then (aA - 1)
118+ else aA
119+ let aD = O(P, X, aB[0], aC, drop(am, (ag + 8)))
120+ let aE = if ((aD[1] != ""))
121+ then (aC - 1)
122+ else aC
123+ let aF = O(P, X, aD[0], aE, drop(am, (ag + 9)))
124+ let aG = if ((aF[1] != ""))
125+ then (aE - 1)
126+ else aE
127+ let aH = O(P, X, aF[0], aG, drop(am, (ag + 10)))
128+ let aI = if ((aH[1] != ""))
129+ then (aG - 1)
130+ else aG
131+[aH[0], if ((aI == 0))
131132 then "0"
132- else toString(ax), toString((U + 14))]
133+ else toString(aI), toString((ag + 10)), toString(ah), toString(ai), toString(aj), toString(ak)]
133134 }
134135
135136
136-func ay (G,az) = if (if (if ((G == take(az.key, d)))
137- then (size(az.key) > d)
138- else false)
139- then !(isDefined(getString(this, az.key)))
140- else false)
141- then {
142- let aA = az.value
143- if ($isInstanceOf(aA, "String"))
144- then {
145- let aB = aA
146- true
147- }
148- else throw((G + " draw: only String type is accepted for data transactions"))
149- }
150- else false
137+func aJ (M,C,aK) = {
138+ let aL = split(aK.key, "_")
139+ if ((size(aL) != 2))
140+ then throw("Invalid data key format. It must follow to ${sessionId}_${num}")
141+ else {
142+ let aM = aL[0]
143+ let aN = aL[1]
144+ if ((M != aM))
145+ then throw(((("Several data keys have different sessionId: " + M) + " and ") + aM))
146+ else if (isDefined(getString(this, aK.key)))
147+ then throw(("One of the data keys has already presented in account state: key=" + aK.key))
148+ else if ((size(aN) > 4))
149+ then throw("Invalid data key format. It must follow to ${sessionId}_${num} where ${num} length couldn't be greater than 4")
150+ else if ((take(aN, 1) == "0"))
151+ then throw("Invalid data key format. It must follow to ${sessionId}_${num} where ${num} couldn't start from 0")
152+ else {
153+ let aO = parseInt(aN)
154+ if (isDefined(aO))
155+ then {
156+ let aP = extract(aO)
157+ if (if ((1 > aP))
158+ then true
159+ else (aP > C))
160+ then throw((((("Invalid data key format. It must follow to ${sessionId}_${num}" + " where ${num} must be a valid int value from 1 to ") + toString(C)) + " but actualNum=") + toString(aP)))
161+ else {
162+ let aQ = aK.value
163+ if ($isInstanceOf(aQ, "String"))
164+ then {
165+ let aR = aQ
166+ true
167+ }
168+ else throw((M + " draw: only String type is accepted for data transactions"))
169+ }
170+ }
171+ else throw((("Invalid data key format. It must follow to ${sessionId}_${num}" + " where ${num} must be a valid int value from 1 to 7145 but actualNum=") + aN))
172+ }
173+ }
174+ }
151175
152176
153-@Callable(aC)
154-func initDraw (x,y,z) = {
155- let G = toBase58String(aC.transactionId)
156- if (if ((0 >= x))
177+func aS (A,aT,aU) = {
178+ let aV = 1000
179+ let aW = ((13 * c) / 100)
180+ let aX = 50
181+ let aY = ((8 * c) / 100)
182+ let aZ = 5000
183+ let ba = ((297 * c) / 100)
184+ let bb = 1000
185+ let bc = ((143 * c) / 100)
186+ let bd = 50000
187+ let be = ((1427 * c) / 100)
188+ let bf = 5000
189+ let bg = ((705 * c) / 100)
190+ let bh = if ((aV > A))
191+ then (aW + ((A / aX) * aY))
192+ else if ((aZ > A))
193+ then (ba + (((A / bb) - 1) * bc))
194+ else if ((bd > A))
195+ then (be + (((A / bf) - 1) * bg))
196+ else throw("Please contact our sales team to generate more than 50k rands")
197+ let bi = (bh + aU)
198+ if (isDefined(aT.assetId))
199+ then throw("Only WAVES can be used as a payment for rands generation")
200+ else if ((bi > aT.amount))
201+ then throw(((((("Attached payment is to small to generate " + toString(A)) + " unique randoms numbers and upload at least 1 data tx: actualPmt=") + toString(aT.amount)) + " but minPmt is ") + toString(bi)))
202+ else bh
203+ }
204+
205+
206+@Callable(bj)
207+func initDraw (y,z,A) = {
208+ let M = toBase58String(bj.transactionId)
209+ let bk = ((z - y) + 1)
210+ let bl = (bk / 2)
211+ let bm = size(toString((z - 1)))
212+ let bn = size(toString(A))
213+ let bo = (((2 * bm) + (2 * bn)) + 4)
214+ let bp = (((5120 - 175) - bo) / (bm + 1))
215+ if (if ((0 >= y))
157216 then true
158- else (0 >= y))
217+ else (0 >= z))
159218 then throw("randFrom and randTo must be greater than 0")
160- else if ((x >= y))
219+ else if ((y >= z))
161220 then throw("randFrom must be strict less then randTo")
162- else if ((z > ((y - x) + 1)))
163- then throw(((((("Impossible to generate " + toString(z)) + " for provided random range - from ") + toString(x)) + " to ") + toString(y)))
164- else {
165- let w = toBase58String(aC.callerPublicKey)
166- let aD = toString(z)
167- let aE = u(g, w, toString(x), toString(y), aD, aD, "null", "0", "")
168- ScriptResult(WriteSet([DataEntry(G, aE)]), TransferSet([ScriptTransfer(b, 1000, unit)]))
169- }
221+ else if ((A > bk))
222+ then throw(((((((("Impossible to generate " + toString(A)) + " unique numbers for provided random range [") + toString(y)) + ", ") + toString(z)) + "] with actual size ") + toString(bk)))
223+ else if ((A > bl))
224+ then throw(((((((((("randsCount must be less then 50% of passed range length: range=[" + toString(y)) + ", ") + toString(z)) + "], rangeLength=") + toString(bk)) + " randsCount=") + toString(A)) + " allowedRandsCount=") + toString(bl)))
225+ else if ((A > bp))
226+ then throw(((((("randsCount couldn't be kept in 1 data entry: 1_randNumSpace=" + toString((bm + 1))) + " maxAllowedRandsCount=") + toString(bp)) + " actualRandsCount=") + toString(A)))
227+ else if (!(isDefined(bj.payment)))
228+ then throw("Please provide payment to generate unique random numbers")
229+ else {
230+ let aT = extract(bj.payment)
231+ let aU = ((5 * c) / 1000)
232+ let bq = aS(A, aT, aU)
233+ let br = (aT.amount - bq)
234+ let bs = (br / aU)
235+ let C = if ((7145 >= (bs * 5)))
236+ then (bs * 5)
237+ else 7145
238+ let x = toBase58String(bj.callerPublicKey)
239+ let bt = toString(A)
240+ let bu = v(g, x, toString(y), toString(z), bt, bt, toString(C), "null", "0", "0", "1", "0", "1", "")
241+ ScriptResult(WriteSet([DataEntry(M, bu)]), TransferSet([ScriptTransfer(b, bq, unit)]))
242+ }
170243 }
171244
172245
173246
174-@Callable(aC)
175-func ready (G) = {
176- let aF = F(G)
177- let v = aF[j]
178- let w = aF[k]
179- let aD = aF[n]
180- let aG = aF[o]
181- let aH = aF[l]
182- let aI = aF[m]
183- let aJ = fromBase58String(w)
184- if ((v != g))
185- then throw((G + " draw: moving into READY state is allowed only from INIT state"))
186- else if ((aJ != aC.callerPublicKey))
187- then throw((G + "draw: moving into READY state is allowed for organizer only"))
247+@Callable(bj)
248+func ready (M) = {
249+ let bv = L(M)
250+ let w = bv[j]
251+ let x = bv[k]
252+ let bt = bv[n]
253+ let bw = bv[o]
254+ let bx = bv[l]
255+ let by = bv[m]
256+ let C = bv[p]
257+ let bz = fromBase58String(x)
258+ if ((w != g))
259+ then throw((M + " draw: moving into READY state is allowed only from INIT state"))
260+ else if ((bz != bj.callerPublicKey))
261+ then throw((M + "draw: moving into READY state is allowed for organizer only"))
188262 else {
189- let aK = u(h, w, aH, aI, aD, aG, toBase58String(aC.transactionId), "0", "")
190- WriteSet([DataEntry(G, aK)])
263+ let bA = v(h, x, bx, by, bt, bw, C, toBase58String(bj.transactionId), "0", "0", "1", "0", "1", "")
264+ WriteSet([DataEntry(M, bA)])
191265 }
192266 }
193267
194268
195269
196-@Callable(aC)
197-func random (G,T) = {
198- let aF = F(G)
199- let v = aF[j]
200- let w = aF[k]
201- let aD = aF[n]
202- let aL = parseIntValue(aF[o])
203- let U = parseIntValue(aF[q])
204- let L = aF[r]
205- let aH = aF[l]
206- let aI = aF[m]
207- let B = aF[p]
208- let R = parseIntValue(aH)
209- let S = parseIntValue(aI)
210- let aJ = fromBase58String(w)
211- if ((v != h))
212- then throw((G + " draw: it must be in READY state to generate random numbers"))
213- else if (!(rsaVerify(SHA256, (toBytes(G) + toBytes(B)), T, a)))
270+@Callable(bj)
271+func random (M,Z) = {
272+ let bv = L(M)
273+ let w = bv[j]
274+ let x = bv[k]
275+ let bt = bv[n]
276+ let bB = parseIntValue(bv[o])
277+ let aa = parseIntValue(bv[r])
278+ let R = bv[s]
279+ let bx = bv[l]
280+ let by = bv[m]
281+ let D = bv[q]
282+ let F = parseIntValue(bv[9])
283+ let G = parseIntValue(bv[10])
284+ let H = parseIntValue(bv[11])
285+ let I = parseIntValue(bv[12])
286+ let X = parseIntValue(bx)
287+ let Y = parseIntValue(by)
288+ let bz = fromBase58String(x)
289+ if ((w != h))
290+ then throw((M + " draw: it must be in READY state to generate random numbers"))
291+ else if (!(rsaVerify(SHA256, (toBytes(M) + toBytes(D)), Z, a)))
214292 then throw("Invalid RSA signature")
215293 else {
216- let aM = Q(G, R, S, T, L, aL, U)
217- let aN = aM[0]
218- let aO = aM[1]
219- let aP = aM[2]
220- let aQ = if ((aO == "0"))
294+ let bC = W(M, X, Y, Z, R, bB, aa, F, G, H, I)
295+ let bD = bC[1]
296+ let bE = if ((bD == "0"))
221297 then i
222298 else h
223- WriteSet([DataEntry(G, u(aQ, w, aH, aI, aD, aO, B, aP, aN))])
299+ WriteSet([DataEntry(M, v(bE, x, bx, by, bt, bD, bv[p], D, bC[2], bC[3], bC[4], bC[5], bC[6], bC[0]))])
224300 }
225301 }
226302
227303
228-@Verifier(aR)
229-func aS () = {
230- let aA = aR
231- if ($isInstanceOf(aA, "DataTransaction"))
304+@Verifier(bF)
305+func bG () = {
306+ let aQ = bF
307+ if ($isInstanceOf(aQ, "DataTransaction"))
232308 then {
233- let aT = aA
234- let aU = aT.data[0]
235- let G = take(aU.key, d)
236- let aF = F(G)
237- let v = aF[0]
238- let w = aF[1]
239- let aJ = fromBase58String(w)
240- let aV = size(aT.data)
241- let aW = sigVerify(aR.bodyBytes, aR.proofs[0], aJ)
242- let aX = if ((aV > 0))
243- then (5 >= aV)
309+ let bH = aQ
310+ let bI = bH.data[0]
311+ let M = take(bI.key, d)
312+ let bv = L(M)
313+ let w = bv[j]
314+ let x = bv[k]
315+ let C = parseIntValue(bv[p])
316+ let bz = fromBase58String(x)
317+ let bJ = size(bH.data)
318+ let bK = sigVerify(bF.bodyBytes, bF.proofs[0], bz)
319+ let bL = (bJ == 5)
320+ let bM = (bH.fee == ((c * 5) / 1000))
321+ let bN = if (if (if (if (aJ(M, C, bI))
322+ then aJ(M, C, bH.data[1])
323+ else false)
324+ then aJ(M, C, bH.data[2])
325+ else false)
326+ then aJ(M, C, bH.data[3])
327+ else false)
328+ then aJ(M, C, bH.data[4])
244329 else false
245- let aY = if (if (if (if (if (ay(G, aU))
246- then if ((1 >= aV))
247- then true
248- else ay(G, aT.data[1])
330+ if (if (if (if ((w == g))
331+ then bK
249332 else false)
250- then if ((2 >= aV))
251- then true
252- else ay(G, aT.data[2])
333+ then bM
253334 else false)
254- then if ((3 >= aV))
255- then true
256- else ay(G, aT.data[3])
335+ then bL
257336 else false)
258- then if ((4 >= aV))
259- then true
260- else ay(G, aT.data[4])
261- else false)
262- then if ((5 >= aV))
263- then true
264- else ay(G, aT.data[5])
265- else false
266- if (if (if ((v == g))
267- then aW
268- else false)
269- then aX
270- else false)
271- then aY
337+ then bN
272338 else false
273339 }
274- else if ($isInstanceOf(aA, "SetScriptTransaction"))
340+ else if ($isInstanceOf(aQ, "SetScriptTransaction"))
275341 then {
276- let aZ = aA
342+ let bO = aQ
277343 true
278344 }
279- else if ($isInstanceOf(aA, "TransferTransaction"))
345+ else if ($isInstanceOf(aQ, "TransferTransaction"))
280346 then {
281- let ba = aA
347+ let bP = aQ
282348 true
283349 }
284350 else false
285351 }
286352

github/deemru/w8io/026f985 
66.51 ms