tx · 5qMD6qYEK8HYE1JrSKTKToHTa1XNUquTPVNFiHniikN1

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01400000 Waves

2020.02.01 14:46 [880003] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "5qMD6qYEK8HYE1JrSKTKToHTa1XNUquTPVNFiHniikN1", "fee": 1400000, "feeAssetId": null, "timestamp": 1580557598257, "version": 1, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "5EGBreygNfBpJxBSQB8KatYvmcWBD7uYrWq77ePF4GxK16RGju4fYdcNC698H2DjSvFSzGwgCbgAdnL2NpTYhwD6" ], "script": "base64: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AAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAABAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAgAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgUAAAADbmlsAwkAAAAAAAACBQAAAA50b3RhbEFkZHJlc3NlcwAAAAAAAAAABAMJAABmAAAAAgUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQAAAAAAAAAAAAMJAABmAAAAAgUAAAAOdG90YWxBZGRyZXNzZXMFAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JAAACAAAAAQIAAAAqWW91IGRvbid0IGhhdmUgZW5vdWdoIGNlcnRpZmljYXRpb24gY3JlZGl0CQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX1dISVRFTElTVEVEXwUAAAANY2FsbGVyQWRkcmVzcwkAAGUAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBQAAAA50b3RhbEFkZHJlc3NlcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAl0aXRsZV9NQV8JAAJY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bW91bnQFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAAAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAQAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAIAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAADAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAADnRvdGFsQWRkcmVzc2VzAAAAAAAAAAAFAwkAAGYAAAACBQAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAAAAAAAAAAAAwkAAGYAAAACBQAAAA50b3RhbEFkZHJlc3NlcwUAAAAWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQkAAAIAAAABAgAAACpZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggY2VydGlmaWNhdGlvbiBjcmVkaXQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAEWFkZHJfV0hJVEVMSVNURURfBQAAAA1jYWxsZXJBZGRyZXNzCQAAZQAAAAIFAAAAFmNhbGxlcklzV2hpdGVMaXN0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", "chainId": 84, "height": 880003, "spentComplexity": 0 } View: original | compacted Prev: 6Pwbo6XCYEVXHwQFSgd52y96HPwXGJzgNyPmunPoTepz Next: AnbPcqbgFTqEbNYaxA2Z1MrHKgwYHuk25t1ZLmWWXfJu Diff:
OldNewDifferences
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
8-func c (d,e) = {
9- let f = getString(this, (d + e))
10- if ($isInstanceOf(f, "String"))
8+let c = base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y'
9+
10+func d (e,f) = {
11+ let g = getString(this, (e + f))
12+ if ($isInstanceOf(g, "String"))
1113 then {
12- let g = f
13- g
14+ let h = g
15+ h
1416 }
1517 else "NONE"
1618 }
1719
1820
19-func h (e) = {
20- let f = getString(this, e)
21- if ($isInstanceOf(f, "String"))
21+func i (f) = {
22+ let g = getString(this, f)
23+ if ($isInstanceOf(g, "String"))
2224 then {
23- let g = f
24- g
25+ let h = g
26+ h
2527 }
2628 else "NONE"
2729 }
2830
2931
30-func i (j) = {
31- let f = getInteger(this, ("addr_WHITELISTED_" + j))
32- if ($isInstanceOf(f, "Int"))
32+func j (k) = {
33+ let g = getInteger(this, ("addr_WHITELISTED_" + k))
34+ if ($isInstanceOf(g, "Int"))
3335 then {
34- let g = f
35- g
36+ let h = g
37+ h
3638 }
3739 else 0
3840 }
3941
4042
41-func k (l) = if (if ((size(l) == 35))
42- then (take(l, 2) == "3N")
43+func l (m) = if (if ((size(m) == 35))
44+ then (take(m, 2) == "3N")
4345 else false)
4446 then true
45- else (take(l, 2) == "3M")
47+ else (take(m, 2) == "3M")
4648
4749
48-func m (n,l) = if ((size(l) > 0))
49- then (n + 1)
50- else (n + 0)
51-
52-
53-func o (p) = {
54- let f = getString(this, p)
55- if ($isInstanceOf(f, "String"))
50+func n (o) = {
51+ let g = getString(this, o)
52+ if ($isInstanceOf(g, "String"))
5653 then {
57- let g = f
58- if ((g == "PENDING"))
54+ let h = g
55+ if ((h == "PENDING"))
5956 then true
6057 else false
6158 }
6360 }
6461
6562
66-func q (r) = take(drop(r, 1), value(indexOf(drop(r, 1), "\"")))
63+func p (q) = take(drop(q, 1), value(indexOf(drop(q, 1), "\"")))
6764
6865
69-func s (r,p) = {
70- let t = value(indexOf(r, (("\"" + p) + "\":")))
71- let u = drop(r, ((t + size(p)) + 3))
72- let v = q(u)
73- v
66+func r (q,o) = {
67+ let s = value(indexOf(q, (("\"" + o) + "\":")))
68+ let t = drop(q, ((s + size(o)) + 3))
69+ let u = p(t)
70+ u
7471 }
7572
7673
77-@Callable(w)
78-func fileCertification (x,y,e,u) = {
79- let z = extract(w.transactionId)
80- let A = c(x, e)
81- let B = h(e)
82- let j = toBase58String(w.caller.bytes)
83- let C = i(j)
84- if ((A != "NONE"))
74+@Callable(v)
75+func fileCertification (w,x,f,t) = {
76+ let y = extract(v.transactionId)
77+ let z = d(w, f)
78+ let A = i(f)
79+ let k = toBase58String(v.caller.bytes)
80+ let B = j(k)
81+ if ((z != "NONE"))
8582 then throw("This entry already exist")
86- else if ((B != "NONE"))
83+ else if ((A != "NONE"))
8784 then throw("This uuid already exist")
88- else if ((size(e) > 36))
85+ else if ((size(f) > 36))
8986 then throw("Uuid is too long")
90- else if ((size(x) > 64))
87+ else if ((size(w) > 64))
9188 then throw("Hash is too long")
92- else if ((size(y) > 64))
89+ else if ((size(x) > 64))
9390 then throw("Title is too long")
94- else if ((C > 0))
95- then ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((x + e), toBase58String(z)), DataEntry((y + e), toBase58String(z)), DataEntry(("addr_WHITELISTED_" + j), (C - 1)), DataEntry(((("data_fc_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(w.caller, 500000, unit)]))
91+ else if ((B > 0))
92+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((w + f), toBase58String(y)), DataEntry((x + f), toBase58String(y)), DataEntry(("addr_WHITELISTED_" + k), (B - 1)), DataEntry(((("data_fc_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(v.caller, 500000, unit)]))
9693 else {
97- let D = extract(w.payment)
98- let E = extract(D.amount)
99- let F = if (isDefined(D.assetId))
100- then extract(D.assetId)
94+ let C = extract(v.payment)
95+ let D = extract(C.amount)
96+ let E = if (isDefined(C.assetId))
97+ then extract(C.assetId)
10198 else throw("Waves is not accepted as payment")
102- let G = {
103- let f = getString(a, ("white_list_token_" + toBase58String(extract(F))))
104- if ($isInstanceOf(f, "String"))
105- then {
106- let g = f
107- g
108- }
109- else throw("This token is not accepted at the moment")
110- }
111- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(F))))
112- if ((G != "WHITELISTED"))
99+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
100+ if ((c != E))
113101 then throw("This token is not accepted at the moment")
114- else if (if ((E != H))
115- then (0 >= C)
102+ else if (if ((D != F))
103+ then (0 >= B)
116104 else false)
117105 then throw("The price is wrong")
118- else ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((x + e), toBase58String(z)), DataEntry((y + e), toBase58String(z)), DataEntry(((("data_fc_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, D.assetId)]))
106+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((w + f), toBase58String(y)), DataEntry((x + f), toBase58String(y)), DataEntry(((("data_fc_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, C.assetId)]))
119107 }
120108 }
121109
122110
123111
124-@Callable(w)
125-func emailCertification (I,e,u) = {
126- let z = extract(w.transactionId)
127- let A = c(I, e)
128- let B = h(e)
129- let j = toBase58String(w.caller.bytes)
130- let C = i(j)
131- if ((A != "NONE"))
112+@Callable(v)
113+func emailCertification (G,f,t) = {
114+ let y = extract(v.transactionId)
115+ let z = d(G, f)
116+ let A = i(f)
117+ let k = toBase58String(v.caller.bytes)
118+ let B = j(k)
119+ if ((z != "NONE"))
132120 then throw("This entry already exist")
133- else if ((B != "NONE"))
121+ else if ((A != "NONE"))
134122 then throw("This uuid already exist")
135- else if ((size(e) > 36))
123+ else if ((size(f) > 36))
136124 then throw("Uuid is too long")
137- else if ((C > 0))
138- then ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((I + e), toBase58String(z)), DataEntry(("addr_WHITELISTED_" + j), (C - 1)), DataEntry(((("data_ec_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(w.caller, 500000, unit)]))
125+ else if ((B > 0))
126+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((G + f), toBase58String(y)), DataEntry(("addr_WHITELISTED_" + k), (B - 1)), DataEntry(((("data_ec_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(v.caller, 500000, unit)]))
139127 else {
140- let D = extract(w.payment)
141- let E = extract(D.amount)
142- let F = if (isDefined(D.assetId))
143- then extract(D.assetId)
128+ let C = extract(v.payment)
129+ let D = extract(C.amount)
130+ let E = if (isDefined(C.assetId))
131+ then extract(C.assetId)
144132 else throw("Waves is not accepted as payment")
145- let G = {
146- let f = getString(a, ("white_list_token_" + toBase58String(extract(F))))
147- if ($isInstanceOf(f, "String"))
148- then {
149- let g = f
150- g
151- }
152- else throw("This token is not accepted at the moment")
153- }
154- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(F))))
155- if ((G != "WHITELISTED"))
133+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
134+ if ((c != E))
156135 then throw("This token is not accepted at the moment")
157- else if (if ((E != H))
158- then (0 >= C)
136+ else if (if ((D != F))
137+ then (0 >= B)
159138 else false)
160139 then throw("The price is wrong")
161- else ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((I + e), toBase58String(z)), DataEntry(((("data_ec_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, D.assetId)]))
140+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((G + f), toBase58String(y)), DataEntry(((("data_ec_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, C.assetId)]))
162141 }
163142 }
164143
165144
166145
167-@Callable(w)
168-func createAgreement (x,y,J) = {
169- let D = extract(w.payment)
170- let E = extract(D.amount)
171- let z = extract(w.transactionId)
172- let K = [s(J, "address1"), s(J, "address2"), s(J, "address3"), s(J, "address4"), s(J, "address5"), s(J, "address6")]
173- let L = {
174- let M = K
175- let N = size(M)
176- let O = 0
177- if ((N == 0))
178- then O
146+@Callable(v)
147+func createAgreement (w,x,H) = {
148+ let y = extract(v.transactionId)
149+ let k = toBase58String(v.caller.bytes)
150+ let B = j(k)
151+ let I = [r(H, "address1"), r(H, "address2"), r(H, "address3"), r(H, "address4"), r(H, "address5"), r(H, "address6")]
152+ let J = if ((size(I[0]) > 0))
153+ then 1
154+ else 0
155+ let K = if ((size(I[1]) > 0))
156+ then 1
157+ else 0
158+ let L = if ((size(I[2]) > 0))
159+ then 1
160+ else 0
161+ let M = if ((size(I[3]) > 0))
162+ then 1
163+ else 0
164+ let N = if ((size(I[4]) > 0))
165+ then 1
166+ else 0
167+ let O = if ((size(I[5]) > 0))
168+ then 1
169+ else 0
170+ let P = (((((J + K) + L) + M) + N) + O)
171+ if ((P == 2))
172+ then if ((B > 0))
173+ then if ((P > B))
174+ then throw("You don't have enough certification credit")
175+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c)]))
179176 else {
180- let P = m(O, M[0])
181- if ((N == 1))
182- then P
177+ let C = extract(v.payment)
178+ let D = extract(C.amount)
179+ let E = if (isDefined(C.assetId))
180+ then extract(C.assetId)
181+ else throw("Waves is not accepted as payment")
182+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
183+ if ((c != E))
184+ then throw("Only payments in SIGN are allowed at the moment")
185+ else if (((F * P) > D))
186+ then throw(("The price is wrong, it should be " + toString((F * P))))
187+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c)]))
188+ }
189+ else if ((P == 3))
190+ then if ((B > 0))
191+ then if ((P > B))
192+ then throw("You don't have enough certification credit")
193+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c)]))
194+ else {
195+ let C = extract(v.payment)
196+ let D = extract(C.amount)
197+ let E = if (isDefined(C.assetId))
198+ then extract(C.assetId)
199+ else throw("Waves is not accepted as payment")
200+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
201+ if ((c != E))
202+ then throw("Only payments in SIGN are allowed at the moment")
203+ else if (((F * P) > D))
204+ then throw(("The price is wrong, it should be " + toString((F * P))))
205+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c)]))
206+ }
207+ else if ((P == 4))
208+ then if ((B > 0))
209+ then if ((P > B))
210+ then throw("You don't have enough certification credit")
211+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c)]))
183212 else {
184- let Q = m(P, M[1])
185- if ((N == 2))
186- then Q
213+ let C = extract(v.payment)
214+ let D = extract(C.amount)
215+ let E = if (isDefined(C.assetId))
216+ then extract(C.assetId)
217+ else throw("Waves is not accepted as payment")
218+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
219+ if ((c != E))
220+ then throw("Only payments in SIGN are allowed at the moment")
221+ else if (((F * P) > D))
222+ then throw(("The price is wrong, it should be " + toString((F * P))))
223+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c)]))
224+ }
225+ else if ((P == 5))
226+ then if ((B > 0))
227+ then if ((P > B))
228+ then throw("You don't have enough certification credit")
229+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c)]))
230+ else {
231+ let C = extract(v.payment)
232+ let D = extract(C.amount)
233+ let E = if (isDefined(C.assetId))
234+ then extract(C.assetId)
235+ else throw("Waves is not accepted as payment")
236+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
237+ if ((c != E))
238+ then throw("Only payments in SIGN are allowed at the moment")
239+ else if (((F * P) > D))
240+ then throw(("The price is wrong, it should be " + toString((F * P))))
241+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c)]))
242+ }
243+ else if ((P == 6))
244+ then if ((B > 0))
245+ then if ((P > B))
246+ then throw("You don't have enough certification credit")
247+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[5] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c), ScriptTransfer(addressFromStringValue(I[5]), 0, c)]))
187248 else {
188- let R = m(Q, M[2])
189- if ((N == 3))
190- then R
191- else {
192- let S = m(R, M[3])
193- if ((N == 4))
194- then S
195- else {
196- let T = m(S, M[4])
197- if ((N == 5))
198- then T
199- else {
200- let U = m(T, M[5])
201- if ((N == 6))
202- then U
203- else {
204- let V = m(U, M[6])
205- throw("List size exceed 6")
206- }
207- }
208- }
209- }
249+ let C = extract(v.payment)
250+ let D = extract(C.amount)
251+ let E = if (isDefined(C.assetId))
252+ then extract(C.assetId)
253+ else throw("Waves is not accepted as payment")
254+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
255+ if ((c != E))
256+ then throw("Only payments in SIGN are allowed at the moment")
257+ else if (((F * P) > D))
258+ then throw(("The price is wrong, it should be " + toString((F * P))))
259+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[5] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c), ScriptTransfer(addressFromStringValue(I[5]), 0, c)]))
210260 }
211- }
212- }
213- }
214- let F = if (isDefined(D.assetId))
215- then extract(D.assetId)
216- else throw("Waves is not accepted as payment")
217- let G = {
218- let f = getString(a, ("white_list_token_" + toBase58String(extract(F))))
219- if ($isInstanceOf(f, "String"))
220- then {
221- let g = f
222- g
223- }
224- else throw("This token is not accepted at the moment")
225- }
226- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(F))))
227- if ((G != "WHITELISTED"))
228- then throw("Only payments in SIGN are allowed at the moment")
229- else if (((H * L) > E))
230- then throw(("The price is wrong, it should be " + toString((H * L))))
231- else if ((L == 2))
232- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F)]))
233- else if ((L == 3))
234- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F)]))
235- else if ((L == 4))
236- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F), ScriptTransfer(addressFromStringValue(K[3]), 0, F)]))
237- else if ((L == 5))
238- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F), ScriptTransfer(addressFromStringValue(K[3]), 0, F), ScriptTransfer(addressFromStringValue(K[4]), 0, F)]))
239- else if ((L == 6))
240- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[5] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F), ScriptTransfer(addressFromStringValue(K[3]), 0, F), ScriptTransfer(addressFromStringValue(K[4]), 0, F), ScriptTransfer(addressFromStringValue(K[5]), 0, F)]))
241- else throw(("Needs 2 to 6 parties addresses" + toString(L)))
261+ else throw(("Needs 2 to 6 parties addresses" + toString(P)))
242262 }
243263
244264
245265
246-@Callable(w)
247-func signAgreement (x,W) = {
248- let D = extract(w.payment)
249- let E = extract(D.amount)
250- let z = extract(w.transactionId)
251- let X = toBase58String(w.caller.bytes)
252- let Y = o(((X + "_MA_") + W))
253- if (!(Y))
266+@Callable(v)
267+func signAgreement (w,Q) = {
268+ let C = extract(v.payment)
269+ let D = extract(C.amount)
270+ let y = extract(v.transactionId)
271+ let R = toBase58String(v.caller.bytes)
272+ let S = n(((R + "_MA_") + Q))
273+ if (!(S))
254274 then throw("Sorry there is no pending signature")
255- else ScriptResult(WriteSet([DataEntry(((X + "_MA_") + W), ("SIGNED_" + toBase58String(z)))]), TransferSet([ScriptTransfer(addressFromStringValue(X), 500000, unit)]))
275+ else ScriptResult(WriteSet([DataEntry(((R + "_MA_") + Q), ("SIGNED_" + toBase58String(y)))]), TransferSet([ScriptTransfer(addressFromStringValue(R), 500000, unit)]))
256276 }
257277
258278
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
8-func c (d,e) = {
9- let f = getString(this, (d + e))
10- if ($isInstanceOf(f, "String"))
8+let c = base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y'
9+
10+func d (e,f) = {
11+ let g = getString(this, (e + f))
12+ if ($isInstanceOf(g, "String"))
1113 then {
12- let g = f
13- g
14+ let h = g
15+ h
1416 }
1517 else "NONE"
1618 }
1719
1820
19-func h (e) = {
20- let f = getString(this, e)
21- if ($isInstanceOf(f, "String"))
21+func i (f) = {
22+ let g = getString(this, f)
23+ if ($isInstanceOf(g, "String"))
2224 then {
23- let g = f
24- g
25+ let h = g
26+ h
2527 }
2628 else "NONE"
2729 }
2830
2931
30-func i (j) = {
31- let f = getInteger(this, ("addr_WHITELISTED_" + j))
32- if ($isInstanceOf(f, "Int"))
32+func j (k) = {
33+ let g = getInteger(this, ("addr_WHITELISTED_" + k))
34+ if ($isInstanceOf(g, "Int"))
3335 then {
34- let g = f
35- g
36+ let h = g
37+ h
3638 }
3739 else 0
3840 }
3941
4042
41-func k (l) = if (if ((size(l) == 35))
42- then (take(l, 2) == "3N")
43+func l (m) = if (if ((size(m) == 35))
44+ then (take(m, 2) == "3N")
4345 else false)
4446 then true
45- else (take(l, 2) == "3M")
47+ else (take(m, 2) == "3M")
4648
4749
48-func m (n,l) = if ((size(l) > 0))
49- then (n + 1)
50- else (n + 0)
51-
52-
53-func o (p) = {
54- let f = getString(this, p)
55- if ($isInstanceOf(f, "String"))
50+func n (o) = {
51+ let g = getString(this, o)
52+ if ($isInstanceOf(g, "String"))
5653 then {
57- let g = f
58- if ((g == "PENDING"))
54+ let h = g
55+ if ((h == "PENDING"))
5956 then true
6057 else false
6158 }
6259 else false
6360 }
6461
6562
66-func q (r) = take(drop(r, 1), value(indexOf(drop(r, 1), "\"")))
63+func p (q) = take(drop(q, 1), value(indexOf(drop(q, 1), "\"")))
6764
6865
69-func s (r,p) = {
70- let t = value(indexOf(r, (("\"" + p) + "\":")))
71- let u = drop(r, ((t + size(p)) + 3))
72- let v = q(u)
73- v
66+func r (q,o) = {
67+ let s = value(indexOf(q, (("\"" + o) + "\":")))
68+ let t = drop(q, ((s + size(o)) + 3))
69+ let u = p(t)
70+ u
7471 }
7572
7673
77-@Callable(w)
78-func fileCertification (x,y,e,u) = {
79- let z = extract(w.transactionId)
80- let A = c(x, e)
81- let B = h(e)
82- let j = toBase58String(w.caller.bytes)
83- let C = i(j)
84- if ((A != "NONE"))
74+@Callable(v)
75+func fileCertification (w,x,f,t) = {
76+ let y = extract(v.transactionId)
77+ let z = d(w, f)
78+ let A = i(f)
79+ let k = toBase58String(v.caller.bytes)
80+ let B = j(k)
81+ if ((z != "NONE"))
8582 then throw("This entry already exist")
86- else if ((B != "NONE"))
83+ else if ((A != "NONE"))
8784 then throw("This uuid already exist")
88- else if ((size(e) > 36))
85+ else if ((size(f) > 36))
8986 then throw("Uuid is too long")
90- else if ((size(x) > 64))
87+ else if ((size(w) > 64))
9188 then throw("Hash is too long")
92- else if ((size(y) > 64))
89+ else if ((size(x) > 64))
9390 then throw("Title is too long")
94- else if ((C > 0))
95- then ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((x + e), toBase58String(z)), DataEntry((y + e), toBase58String(z)), DataEntry(("addr_WHITELISTED_" + j), (C - 1)), DataEntry(((("data_fc_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(w.caller, 500000, unit)]))
91+ else if ((B > 0))
92+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((w + f), toBase58String(y)), DataEntry((x + f), toBase58String(y)), DataEntry(("addr_WHITELISTED_" + k), (B - 1)), DataEntry(((("data_fc_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(v.caller, 500000, unit)]))
9693 else {
97- let D = extract(w.payment)
98- let E = extract(D.amount)
99- let F = if (isDefined(D.assetId))
100- then extract(D.assetId)
94+ let C = extract(v.payment)
95+ let D = extract(C.amount)
96+ let E = if (isDefined(C.assetId))
97+ then extract(C.assetId)
10198 else throw("Waves is not accepted as payment")
102- let G = {
103- let f = getString(a, ("white_list_token_" + toBase58String(extract(F))))
104- if ($isInstanceOf(f, "String"))
105- then {
106- let g = f
107- g
108- }
109- else throw("This token is not accepted at the moment")
110- }
111- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(F))))
112- if ((G != "WHITELISTED"))
99+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
100+ if ((c != E))
113101 then throw("This token is not accepted at the moment")
114- else if (if ((E != H))
115- then (0 >= C)
102+ else if (if ((D != F))
103+ then (0 >= B)
116104 else false)
117105 then throw("The price is wrong")
118- else ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((x + e), toBase58String(z)), DataEntry((y + e), toBase58String(z)), DataEntry(((("data_fc_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, D.assetId)]))
106+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((w + f), toBase58String(y)), DataEntry((x + f), toBase58String(y)), DataEntry(((("data_fc_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, C.assetId)]))
119107 }
120108 }
121109
122110
123111
124-@Callable(w)
125-func emailCertification (I,e,u) = {
126- let z = extract(w.transactionId)
127- let A = c(I, e)
128- let B = h(e)
129- let j = toBase58String(w.caller.bytes)
130- let C = i(j)
131- if ((A != "NONE"))
112+@Callable(v)
113+func emailCertification (G,f,t) = {
114+ let y = extract(v.transactionId)
115+ let z = d(G, f)
116+ let A = i(f)
117+ let k = toBase58String(v.caller.bytes)
118+ let B = j(k)
119+ if ((z != "NONE"))
132120 then throw("This entry already exist")
133- else if ((B != "NONE"))
121+ else if ((A != "NONE"))
134122 then throw("This uuid already exist")
135- else if ((size(e) > 36))
123+ else if ((size(f) > 36))
136124 then throw("Uuid is too long")
137- else if ((C > 0))
138- then ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((I + e), toBase58String(z)), DataEntry(("addr_WHITELISTED_" + j), (C - 1)), DataEntry(((("data_ec_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(w.caller, 500000, unit)]))
125+ else if ((B > 0))
126+ then ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((G + f), toBase58String(y)), DataEntry(("addr_WHITELISTED_" + k), (B - 1)), DataEntry(((("data_ec_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(v.caller, 500000, unit)]))
139127 else {
140- let D = extract(w.payment)
141- let E = extract(D.amount)
142- let F = if (isDefined(D.assetId))
143- then extract(D.assetId)
128+ let C = extract(v.payment)
129+ let D = extract(C.amount)
130+ let E = if (isDefined(C.assetId))
131+ then extract(C.assetId)
144132 else throw("Waves is not accepted as payment")
145- let G = {
146- let f = getString(a, ("white_list_token_" + toBase58String(extract(F))))
147- if ($isInstanceOf(f, "String"))
148- then {
149- let g = f
150- g
151- }
152- else throw("This token is not accepted at the moment")
153- }
154- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(F))))
155- if ((G != "WHITELISTED"))
133+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
134+ if ((c != E))
156135 then throw("This token is not accepted at the moment")
157- else if (if ((E != H))
158- then (0 >= C)
136+ else if (if ((D != F))
137+ then (0 >= B)
159138 else false)
160139 then throw("The price is wrong")
161- else ScriptResult(WriteSet([DataEntry(e, toBase58String(z)), DataEntry((I + e), toBase58String(z)), DataEntry(((("data_ec_" + toBase58String(z)) + "_") + j), u)]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, D.assetId)]))
140+ else ScriptResult(WriteSet([DataEntry(f, toBase58String(y)), DataEntry((G + f), toBase58String(y)), DataEntry(((("data_ec_" + toBase58String(y)) + "_") + k), t)]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, C.assetId)]))
162141 }
163142 }
164143
165144
166145
167-@Callable(w)
168-func createAgreement (x,y,J) = {
169- let D = extract(w.payment)
170- let E = extract(D.amount)
171- let z = extract(w.transactionId)
172- let K = [s(J, "address1"), s(J, "address2"), s(J, "address3"), s(J, "address4"), s(J, "address5"), s(J, "address6")]
173- let L = {
174- let M = K
175- let N = size(M)
176- let O = 0
177- if ((N == 0))
178- then O
146+@Callable(v)
147+func createAgreement (w,x,H) = {
148+ let y = extract(v.transactionId)
149+ let k = toBase58String(v.caller.bytes)
150+ let B = j(k)
151+ let I = [r(H, "address1"), r(H, "address2"), r(H, "address3"), r(H, "address4"), r(H, "address5"), r(H, "address6")]
152+ let J = if ((size(I[0]) > 0))
153+ then 1
154+ else 0
155+ let K = if ((size(I[1]) > 0))
156+ then 1
157+ else 0
158+ let L = if ((size(I[2]) > 0))
159+ then 1
160+ else 0
161+ let M = if ((size(I[3]) > 0))
162+ then 1
163+ else 0
164+ let N = if ((size(I[4]) > 0))
165+ then 1
166+ else 0
167+ let O = if ((size(I[5]) > 0))
168+ then 1
169+ else 0
170+ let P = (((((J + K) + L) + M) + N) + O)
171+ if ((P == 2))
172+ then if ((B > 0))
173+ then if ((P > B))
174+ then throw("You don't have enough certification credit")
175+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c)]))
179176 else {
180- let P = m(O, M[0])
181- if ((N == 1))
182- then P
177+ let C = extract(v.payment)
178+ let D = extract(C.amount)
179+ let E = if (isDefined(C.assetId))
180+ then extract(C.assetId)
181+ else throw("Waves is not accepted as payment")
182+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
183+ if ((c != E))
184+ then throw("Only payments in SIGN are allowed at the moment")
185+ else if (((F * P) > D))
186+ then throw(("The price is wrong, it should be " + toString((F * P))))
187+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c)]))
188+ }
189+ else if ((P == 3))
190+ then if ((B > 0))
191+ then if ((P > B))
192+ then throw("You don't have enough certification credit")
193+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c)]))
194+ else {
195+ let C = extract(v.payment)
196+ let D = extract(C.amount)
197+ let E = if (isDefined(C.assetId))
198+ then extract(C.assetId)
199+ else throw("Waves is not accepted as payment")
200+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
201+ if ((c != E))
202+ then throw("Only payments in SIGN are allowed at the moment")
203+ else if (((F * P) > D))
204+ then throw(("The price is wrong, it should be " + toString((F * P))))
205+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c)]))
206+ }
207+ else if ((P == 4))
208+ then if ((B > 0))
209+ then if ((P > B))
210+ then throw("You don't have enough certification credit")
211+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c)]))
183212 else {
184- let Q = m(P, M[1])
185- if ((N == 2))
186- then Q
213+ let C = extract(v.payment)
214+ let D = extract(C.amount)
215+ let E = if (isDefined(C.assetId))
216+ then extract(C.assetId)
217+ else throw("Waves is not accepted as payment")
218+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
219+ if ((c != E))
220+ then throw("Only payments in SIGN are allowed at the moment")
221+ else if (((F * P) > D))
222+ then throw(("The price is wrong, it should be " + toString((F * P))))
223+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c)]))
224+ }
225+ else if ((P == 5))
226+ then if ((B > 0))
227+ then if ((P > B))
228+ then throw("You don't have enough certification credit")
229+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c)]))
230+ else {
231+ let C = extract(v.payment)
232+ let D = extract(C.amount)
233+ let E = if (isDefined(C.assetId))
234+ then extract(C.assetId)
235+ else throw("Waves is not accepted as payment")
236+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
237+ if ((c != E))
238+ then throw("Only payments in SIGN are allowed at the moment")
239+ else if (((F * P) > D))
240+ then throw(("The price is wrong, it should be " + toString((F * P))))
241+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c)]))
242+ }
243+ else if ((P == 6))
244+ then if ((B > 0))
245+ then if ((P > B))
246+ then throw("You don't have enough certification credit")
247+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (B - P)), DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[5] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c), ScriptTransfer(addressFromStringValue(I[5]), 0, c)]))
187248 else {
188- let R = m(Q, M[2])
189- if ((N == 3))
190- then R
191- else {
192- let S = m(R, M[3])
193- if ((N == 4))
194- then S
195- else {
196- let T = m(S, M[4])
197- if ((N == 5))
198- then T
199- else {
200- let U = m(T, M[5])
201- if ((N == 6))
202- then U
203- else {
204- let V = m(U, M[6])
205- throw("List size exceed 6")
206- }
207- }
208- }
209- }
249+ let C = extract(v.payment)
250+ let D = extract(C.amount)
251+ let E = if (isDefined(C.assetId))
252+ then extract(C.assetId)
253+ else throw("Waves is not accepted as payment")
254+ let F = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(E))))
255+ if ((c != E))
256+ then throw("Only payments in SIGN are allowed at the moment")
257+ else if (((F * P) > D))
258+ then throw(("The price is wrong, it should be " + toString((F * P))))
259+ else ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(y)), x), DataEntry(("hash_MA_" + toBase58String(y)), w), DataEntry(("data_MA_" + toBase58String(y)), H), DataEntry(((I[0] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[1] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[2] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[3] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[4] + "_MA_") + toBase58String(y)), "PENDING"), DataEntry(((I[5] + "_MA_") + toBase58String(y)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), D, c), ScriptTransfer(addressFromStringValue(I[0]), 0, c), ScriptTransfer(addressFromStringValue(I[1]), 0, c), ScriptTransfer(addressFromStringValue(I[2]), 0, c), ScriptTransfer(addressFromStringValue(I[3]), 0, c), ScriptTransfer(addressFromStringValue(I[4]), 0, c), ScriptTransfer(addressFromStringValue(I[5]), 0, c)]))
210260 }
211- }
212- }
213- }
214- let F = if (isDefined(D.assetId))
215- then extract(D.assetId)
216- else throw("Waves is not accepted as payment")
217- let G = {
218- let f = getString(a, ("white_list_token_" + toBase58String(extract(F))))
219- if ($isInstanceOf(f, "String"))
220- then {
221- let g = f
222- g
223- }
224- else throw("This token is not accepted at the moment")
225- }
226- let H = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(F))))
227- if ((G != "WHITELISTED"))
228- then throw("Only payments in SIGN are allowed at the moment")
229- else if (((H * L) > E))
230- then throw(("The price is wrong, it should be " + toString((H * L))))
231- else if ((L == 2))
232- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F)]))
233- else if ((L == 3))
234- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F)]))
235- else if ((L == 4))
236- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F), ScriptTransfer(addressFromStringValue(K[3]), 0, F)]))
237- else if ((L == 5))
238- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F), ScriptTransfer(addressFromStringValue(K[3]), 0, F), ScriptTransfer(addressFromStringValue(K[4]), 0, F)]))
239- else if ((L == 6))
240- then ScriptResult(WriteSet([DataEntry(("title_MA_" + toBase58String(z)), y), DataEntry(("hash_MA_" + toBase58String(z)), x), DataEntry(("data_MA_" + toBase58String(z)), J), DataEntry(((K[0] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[1] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[2] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[3] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[4] + "_MA_") + toBase58String(z)), "PENDING"), DataEntry(((K[5] + "_MA_") + toBase58String(z)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), E, F), ScriptTransfer(addressFromStringValue(K[0]), 0, F), ScriptTransfer(addressFromStringValue(K[1]), 0, F), ScriptTransfer(addressFromStringValue(K[2]), 0, F), ScriptTransfer(addressFromStringValue(K[3]), 0, F), ScriptTransfer(addressFromStringValue(K[4]), 0, F), ScriptTransfer(addressFromStringValue(K[5]), 0, F)]))
241- else throw(("Needs 2 to 6 parties addresses" + toString(L)))
261+ else throw(("Needs 2 to 6 parties addresses" + toString(P)))
242262 }
243263
244264
245265
246-@Callable(w)
247-func signAgreement (x,W) = {
248- let D = extract(w.payment)
249- let E = extract(D.amount)
250- let z = extract(w.transactionId)
251- let X = toBase58String(w.caller.bytes)
252- let Y = o(((X + "_MA_") + W))
253- if (!(Y))
266+@Callable(v)
267+func signAgreement (w,Q) = {
268+ let C = extract(v.payment)
269+ let D = extract(C.amount)
270+ let y = extract(v.transactionId)
271+ let R = toBase58String(v.caller.bytes)
272+ let S = n(((R + "_MA_") + Q))
273+ if (!(S))
254274 then throw("Sorry there is no pending signature")
255- else ScriptResult(WriteSet([DataEntry(((X + "_MA_") + W), ("SIGNED_" + toBase58String(z)))]), TransferSet([ScriptTransfer(addressFromStringValue(X), 500000, unit)]))
275+ else ScriptResult(WriteSet([DataEntry(((R + "_MA_") + Q), ("SIGNED_" + toBase58String(y)))]), TransferSet([ScriptTransfer(addressFromStringValue(R), 500000, unit)]))
256276 }
257277
258278

github/deemru/w8io/3ef1775 
135.60 ms