tx · N8eGmqJ1ZWS62uimfFo3hCui5Hxrb9WwG2uGhnoqw92

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01400000 Waves

2020.09.01 10:59 [1158041] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "N8eGmqJ1ZWS62uimfFo3hCui5Hxrb9WwG2uGhnoqw92", "fee": 1400000, "feeAssetId": null, "timestamp": 1598947179945, "version": 2, "chainId": 84, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "4wiXqWC3YHEWgs9v29BUxwQTu73E2gmAXnmvSAuhf5t6Z4scuGwZmwEcVLNpfScaLCXLdN2bYVy1vfagbLveUto8" ], "script": "base64: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AAAAAAACBQAAAAR0aGlzCAUAAAAGaW52b2tlAAAABmNhbGxlcgQAAAANY2FsbGVyQWRkcmVzcwMFAAAADGNhbGxlcklzRGFwcAkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADHNpZ25lclB1YktleQkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JAQAAABJjaGVja0lmV2hpdGVMaXN0ZWQAAAABBQAAAA1jYWxsZXJBZGRyZXNzBAAAAARKU09OCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAQAAABJnZXRKc29uQmVmb3JlVmFsdWUAAAACBQAAAA9zdHJpbmdpZmllZEpTT04CAAAAB2NyZWF0b3ICAAAAASIFAAAADWNhbGxlckFkZHJlc3MCAAAAASIJAQAAABFnZXRKc29uQWZ0ZXJWYWx1ZQAAAAIFAAAAD3N0cmluZ2lmaWVkSlNPTgIAAAAHY3JlYXRvcgQAAAAOYWRkcmVzc2VzQXJyYXkJAAS1AAAAAgUAAAAMY291bnRlclBhcnRzAgAAAAEsBAAAAA50b3RhbEFkZHJlc3NlcwkAAZAAAAABBQAAAA5hZGRyZXNzZXNBcnJheQQAAAAPZ2xvYmFsRGF0YVRpdGxlCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAABXRpdGxlBQAAAAR1dWlkBQAAAAJpZAQAAAAOZ2xvYmFsRGF0YUhhc2gJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAEaGFzaAUAAAAEdXVpZAUAAAACaWQEAAAADmdsb2JhbERhdGFKc29uCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX01BXwUAAAACaWQCAAAAAV8FAAAADWNhbGxlckFkZHJlc3MFAAAABEpTT04EAAAAD2dsb2JhbERhdGFPd25lcgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAADWNhbGxlckFkZHJlc3MCAAAABF9NQV8FAAAAAmlkCQABLAAAAAIC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", "height": 1158041, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bi2cKgGE41WAHe5dUezas4EgmFi3hJx9ESfjUZD3E177 Next: CE82ZmoP8evGYsbAPjoYMymFiYSQLz1tqhajKVK6HPPw Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
4+let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
5353 }
5454
5555
56-func o (p) = if (if (if ((size(p) == 35))
57- then (take(p, 2) == "3P")
58- else false)
59- then true
60- else (take(p, 2) == "3N"))
61- then true
62- else (take(p, 2) == "3M")
63-
64-
65-func q (r,p) = if ((size(p) > 0))
66- then (r + 1)
67- else (r + 0)
68-
69-
70-func s (t) = {
71- let h = getString(this, t)
56+func o (p) = {
57+ let h = getString(this, p)
7258 if ($isInstanceOf(h, "String"))
7359 then {
7460 let i = h
8066 }
8167
8268
83-func u (v) = take(drop(v, 1), value(indexOf(drop(v, 1), "\"")))
69+func q (r) = take(drop(r, 1), value(indexOf(drop(r, 1), "\"")))
8470
8571
86-func w (v,t) = {
87- let x = value(indexOf(v, (("\"" + t) + "\":")))
88- let y = drop(v, ((x + size(t)) + 3))
89- let z = u(y)
90- z
72+func s (r,p) = {
73+ let t = value(indexOf(r, (("\"" + p) + "\":")))
74+ let u = drop(r, ((t + size(p)) + 3))
75+ let v = q(u)
76+ v
9177 }
9278
9379
94-func A (v,t) = {
95- let x = value(indexOf(v, (("\"" + t) + "\":")))
96- let y = take(v, ((x + size(t)) + 3))
97- y
80+func w (r,p) = {
81+ let t = value(indexOf(r, (("\"" + p) + "\":")))
82+ let u = take(r, ((t + size(p)) + 3))
83+ u
9884 }
9985
10086
101-func B (v,t) = {
102- let x = value(indexOf(v, (("\"" + t) + "\":")))
103- let y = takeRight(v, (size(v) - ((((x + size(t)) + 3) + 0) + 2)))
104- y
87+func x (r,p) = {
88+ let t = value(indexOf(r, (("\"" + p) + "\":")))
89+ let u = takeRight(r, (size(r) - ((((t + size(p)) + 3) + 0) + 2)))
90+ u
10591 }
10692
10793
108-func C (D) = {
109- let h = D
94+func y (z) = {
95+ let h = z
11096 if ($isInstanceOf(h, "String"))
11197 then {
112- let E = h
113- E
98+ let A = h
99+ A
114100 }
115101 else throw("Sponsored Public Key String expected")
116102 }
117103
118104
119-@Callable(F)
120-func fileCertification (G,H,g,y,I) = {
121- let J = extract(F.transactionId)
122- let K = e(G, g)
123- let L = l(g)
124- let M = (this == F.caller)
125- let n = if (M)
126- then toString(addressFromPublicKey(fromBase58String(I)))
127- else toBase58String(F.caller.bytes)
128- let N = m(n)
129- if ((K != "NONE"))
105+@Callable(B)
106+func fileCertification (C,D,g,u,E) = {
107+ let F = toBase58String(B.transactionId)
108+ let G = e(C, g)
109+ let H = l(g)
110+ let I = (this == B.caller)
111+ let n = if (I)
112+ then toString(addressFromPublicKey(fromBase58String(E)))
113+ else toBase58String(B.caller.bytes)
114+ let J = m(n)
115+ if ((G != "NONE"))
130116 then throw("This entry already exist")
131- else if ((L != "NONE"))
117+ else if ((H != "NONE"))
132118 then throw("This uuid already exist")
133119 else if ((size(g) > 36))
134120 then throw("Uuid is too long, 36 characters max.")
135- else if ((size(G) > 64))
121+ else if ((size(C) > 64))
136122 then throw("Hash is too long, 64 characters max.")
137- else if ((size(H) > 64))
123+ else if ((size(D) > 64))
138124 then throw("Title is too long, 64 characters max.")
139- else if ((N > 0))
140- then ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry((G + g), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(((("data_fc_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c)]))
141- else if (!(M))
125+ else if ((J > 0))
126+ then [StringEntry(g, F), StringEntry((C + g), F), StringEntry((D + g), F), IntegerEntry(("addr_WHITELISTED_" + n), (J - 1)), StringEntry(((("data_fc_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(n), 0, c)]
127+ else if (!(I))
142128 then {
143- let O = extract(F.payment)
144- let P = extract(O.amount)
145- let Q = if (isDefined(O.assetId))
146- then extract(O.assetId)
129+ let K = value(B.payments[0])
130+ let L = K.amount
131+ let M = if (isDefined(K.assetId))
132+ then K.assetId
147133 else throw("Waves is not accepted as payment")
148- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
149- if ((c != Q))
134+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
135+ if ((c != M))
150136 then throw("This token is not accepted at the moment")
151- else if (if ((P != R))
152- then (0 >= N)
137+ else if (if ((L != N))
138+ then (0 >= J)
153139 else false)
154140 then throw("The price is wrong")
155- else ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry((G + g), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(((("data_fc_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
141+ else [StringEntry(g, F), StringEntry((C + g), F), StringEntry((D + g), F), StringEntry(((("data_fc_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(b), L, K.assetId)]
156142 }
157143 else throw("You are not allowed to do that")
158144 }
159145
160146
161147
162-@Callable(F)
163-func revokeCertification (S,I) = {
164- let J = extract(F.transactionId)
165- let M = (this == F.caller)
166- let n = if (M)
167- then toString(addressFromPublicKey(fromBase58String(I)))
168- else toBase58String(F.caller.bytes)
169- let K = {
170- let h = getString(this, ((("data_fc_" + S) + "_") + n))
148+@Callable(B)
149+func revokeCertification (O,E) = {
150+ let F = toBase58String(B.transactionId)
151+ let I = (this == B.caller)
152+ let n = if (I)
153+ then toString(addressFromPublicKey(fromBase58String(E)))
154+ else toBase58String(B.caller.bytes)
155+ let G = {
156+ let h = getString(this, ((("data_fc_" + O) + "_") + n))
171157 if ($isInstanceOf(h, "String"))
172158 then {
173159 let i = h
175161 }
176162 else "NONE"
177163 }
178- let T = {
179- let h = getString(this, ("STATUS_FC_" + S))
164+ let P = {
165+ let h = getString(this, ("STATUS_FC_" + O))
180166 if ($isInstanceOf(h, "String"))
181167 then {
182168 let i = h
184170 }
185171 else "NONE"
186172 }
187- let N = m(n)
188- let U = (((dropRight(K, 1) + ",\"status\":\"REVOKED_") + toBase58String(J)) + "\"}")
189- if ((T != "NONE"))
173+ let J = m(n)
174+ if ((P != "NONE"))
190175 then throw("This certification have already been revoked.")
191- else if ((K == "NONE"))
176+ else if ((G == "NONE"))
192177 then throw("You cannot change the status of this certification.")
193- else if ((N > 0))
194- then WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)])
195- else if (!(M))
196- then {
197- let O = extract(F.payment)
198- let P = extract(O.amount)
199- let Q = if (isDefined(O.assetId))
200- then extract(O.assetId)
201- else throw("Waves is not accepted as payment")
202- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
203- if ((c != Q))
204- then throw("This token is not accepted at the moment")
205- else if (if ((P != R))
206- then (0 >= N)
207- else false)
208- then throw("The price is wrong")
209- else ScriptResult(WriteSet([DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
210- }
211- else throw("You are not allowed to do that")
178+ else {
179+ let Q = (((dropRight(G, 1) + ",\"status\":\"REVOKED_") + F) + "\"}")
180+ if ((J > 0))
181+ then [IntegerEntry(("addr_WHITELISTED_" + n), (J - 1)), StringEntry(("STATUS_FC_" + O), ("REVOKED_" + F)), StringEntry(((("data_fc_" + O) + "_") + n), Q)]
182+ else if (!(I))
183+ then {
184+ let K = value(B.payments[0])
185+ let L = K.amount
186+ let M = if (isDefined(K.assetId))
187+ then K.assetId
188+ else throw("Waves is not accepted as payment")
189+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
190+ if ((c != M))
191+ then throw("This token is not accepted at the moment")
192+ else if (if ((L != N))
193+ then (0 >= J)
194+ else false)
195+ then throw("The price is wrong")
196+ else [StringEntry(("STATUS_FC_" + O), ("REVOKED_" + F)), StringEntry(((("data_fc_" + O) + "_") + n), Q), ScriptTransfer(addressFromStringValue(b), L, K.assetId)]
197+ }
198+ else throw("You are not allowed to do that")
199+ }
212200 }
213201
214202
215203
216-@Callable(F)
217-func emailCertification (k,H,g,y,I) = {
218- let J = extract(F.transactionId)
219- let K = j(k, g)
220- let L = l(g)
221- let M = (this == F.caller)
222- let n = if (M)
223- then toString(addressFromPublicKey(fromBase58String(I)))
224- else toBase58String(F.caller.bytes)
225- let N = m(n)
226- if ((K != "NONE"))
204+@Callable(B)
205+func emailCertification (k,g,u,D,E) = {
206+ let F = toBase58String(B.transactionId)
207+ let G = j(k, g)
208+ let H = l(g)
209+ let I = (this == B.caller)
210+ let n = if (I)
211+ then toString(addressFromPublicKey(fromBase58String(E)))
212+ else toBase58String(B.caller.bytes)
213+ let J = m(n)
214+ if ((G != "NONE"))
227215 then throw("This entry already exist")
228- else if ((L != "NONE"))
216+ else if ((H != "NONE"))
229217 then throw("This uuid already exist")
230218 else if ((size(g) > 36))
231219 then throw("Uuid is too long, 36 characters max.")
232220 else if ((size(k) > 64))
233221 then throw("Domain is too long, 64 characters max.")
234- else if ((size(H) > 64))
222+ else if ((size(D) > 64))
235223 then throw("Title is too long, 64 characters max.")
236- else if ((N > 0))
237- then ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry(((g + "@") + k), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(((("data_ec_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c)]))
238- else if (!(M))
224+ else if ((J > 0))
225+ then [StringEntry(g, F), StringEntry(((g + "@") + k), F), StringEntry((D + g), F), IntegerEntry(("addr_WHITELISTED_" + n), (J - 1)), StringEntry(((("data_ec_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(n), 0, c)]
226+ else if (!(I))
239227 then {
240- let O = extract(F.payment)
241- let P = extract(O.amount)
242- let Q = if (isDefined(O.assetId))
243- then extract(O.assetId)
228+ let K = value(B.payments[0])
229+ let L = K.amount
230+ let M = if (isDefined(K.assetId))
231+ then K.assetId
244232 else throw("Waves is not accepted as payment")
245- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
246- if ((c != Q))
233+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
234+ if ((c != M))
247235 then throw("This token is not accepted at the moment")
248- else if (if ((P != R))
249- then (0 >= N)
236+ else if (if ((L != N))
237+ then (0 >= J)
250238 else false)
251239 then throw("The price is wrong")
252- else ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry(((g + "@") + k), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(((("data_ec_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
240+ else [StringEntry(g, F), StringEntry(((g + "@") + k), F), StringEntry((D + g), F), StringEntry(((("data_ec_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(b), L, K.assetId)]
253241 }
254242 else throw("You are not allowed to do that")
255243 }
256244
257245
258246
259-@Callable(F)
260-func createAgreement (G,H,V,W,I,g) = {
261- let J = extract(F.transactionId)
262- let K = e(G, g)
263- let L = l(g)
264- let M = (this == F.caller)
265- let n = if (M)
266- then toString(addressFromPublicKey(fromBase58String(I)))
267- else toBase58String(F.caller.bytes)
268- let N = m(n)
269- let X = ((((A(V, "creator") + "\"") + n) + "\"") + B(V, "creator"))
270- let Y = split(W, ",")
271- let Z = size(Y)
272- let aa = DataEntry((H + g), toBase58String(J))
273- let ab = DataEntry((G + g), toBase58String(J))
274- let ac = DataEntry(((("data_MA_" + toBase58String(J)) + "_") + n), X)
275- let ad = DataEntry(((n + "_MA_") + toBase58String(J)), ("SIGNED_" + toBase58String(J)))
276- let ae = DataEntry(("addr_WHITELISTED_" + n), (N - (Z + 1)))
277- if ((K != "NONE"))
247+@Callable(B)
248+func createAgreement (C,D,R,S,E,g) = {
249+ let F = toBase58String(B.transactionId)
250+ let G = e(C, g)
251+ let H = l(g)
252+ let I = (this == B.caller)
253+ let n = if (I)
254+ then toString(addressFromPublicKey(fromBase58String(E)))
255+ else toBase58String(B.caller.bytes)
256+ let J = m(n)
257+ let T = ((((w(R, "creator") + "\"") + n) + "\"") + x(R, "creator"))
258+ let U = split(S, ",")
259+ let V = size(U)
260+ let W = StringEntry((D + g), F)
261+ let X = StringEntry((C + g), F)
262+ let Y = StringEntry(((("data_MA_" + F) + "_") + n), T)
263+ let Z = StringEntry(((n + "_MA_") + F), ("SIGNED_" + F))
264+ let aa = IntegerEntry(("addr_WHITELISTED_" + n), (J - (V + 1)))
265+ if ((G != "NONE"))
278266 then throw("This entry already exist")
279- else if ((L != "NONE"))
267+ else if ((H != "NONE"))
280268 then throw("This uuid already exist")
281269 else if ((size(g) > 36))
282270 then throw("Uuid is too long, 36 characters max.")
283- else if ((size(G) > 64))
271+ else if ((size(C) > 64))
284272 then throw("Message-id is too long, 64 characters max.")
285- else if ((size(H) > 64))
273+ else if ((size(D) > 64))
286274 then throw("Title is too long, 64 characters max.")
287- else if ((N > 0))
288- then if (((Z + 1) > N))
275+ else if ((J > 0))
276+ then if (((V + 1) > J))
289277 then throw("You don't have enough certification credit")
290- else if ((Z == 6))
291- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c), ScriptTransfer(addressFromStringValue(Y[5]), 0, c)]))
292- else if ((Z == 5))
293- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c)]))
294- else if ((Z == 4))
295- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c)]))
296- else if ((Z == 3))
297- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c)]))
298- else if ((Z == 2))
299- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c)]))
300- else if ((Z == 1))
301- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c)]))
278+ else if ((V == 6))
279+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), StringEntry(((U[5] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c), ScriptTransfer(addressFromStringValue(U[5]), 0, c)]
280+ else if ((V == 5))
281+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c)]
282+ else if ((V == 4))
283+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c)]
284+ else if ((V == 3))
285+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c)]
286+ else if ((V == 2))
287+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c)]
288+ else if ((V == 1))
289+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c)]
302290 else throw("Wrong number of participants")
303- else if (!(M))
291+ else if (!(I))
304292 then {
305- let O = extract(F.payment)
306- let P = if (isDefined(O.amount))
307- then extract(O.amount)
293+ let K = value(B.payments[0])
294+ let L = if (isDefined(K.amount))
295+ then K.amount
308296 else 0
309- let Q = if (isDefined(O.assetId))
310- then extract(O.assetId)
297+ let M = if (isDefined(K.assetId))
298+ then K.assetId
311299 else c
312- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
313- if (((R * (Z + 1)) > P))
314- then throw(("The price is wrong, it should be " + toString((R * (Z + 1)))))
315- else if ((Z == 6))
316- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c), ScriptTransfer(addressFromStringValue(Y[5]), 0, c)]))
317- else if ((Z == 5))
318- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c)]))
319- else if ((Z == 4))
320- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c)]))
321- else if ((Z == 3))
322- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c)]))
323- else if ((Z == 2))
324- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c)]))
325- else if ((Z == 1))
326- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c)]))
327- else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(Z)))
300+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
301+ if (((N * (V + 1)) > L))
302+ then throw(("The price is wrong, it should be " + toString((N * (V + 1)))))
303+ else if ((V == 6))
304+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), StringEntry(((U[5] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c), ScriptTransfer(addressFromStringValue(U[5]), 0, c)]
305+ else if ((V == 5))
306+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c)]
307+ else if ((V == 4))
308+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c)]
309+ else if ((V == 3))
310+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c)]
311+ else if ((V == 2))
312+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c)]
313+ else if ((V == 1))
314+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c)]
315+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(V)))
328316 }
329317 else throw("You are not allowed to do that")
330318 }
331319
332320
333321
334-@Callable(F)
335-func signAgreement (G,af,I) = {
336- let O = extract(F.payment)
337- let P = extract(O.amount)
338- let J = extract(F.transactionId)
339- let M = (this == F.caller)
340- let ag = if (M)
341- then toString(addressFromPublicKey(fromBase58String(I)))
342- else toBase58String(F.caller.bytes)
343- let ah = s(((ag + "_MA_") + af))
344- if (!(ah))
322+@Callable(B)
323+func signAgreement (C,ab,E) = {
324+ let K = value(B.payments[0])
325+ let L = K.amount
326+ let F = toBase58String(B.transactionId)
327+ let I = (this == B.caller)
328+ let ac = if (I)
329+ then toString(addressFromPublicKey(fromBase58String(E)))
330+ else toBase58String(B.caller.bytes)
331+ let ad = o(((ac + "_MA_") + ab))
332+ if (!(ad))
345333 then throw("Sorry there is no pending signature")
346- else ScriptResult(WriteSet([DataEntry(((ag + "_MA_") + af), ("SIGNED_" + toBase58String(J)))]), TransferSet([ScriptTransfer(addressFromStringValue(ag), 0, c)]))
334+ else [StringEntry(((ac + "_MA_") + ab), ("SIGNED_" + F)), ScriptTransfer(addressFromStringValue(ac), 0, c)]
347335 }
348336
349337
350338
351-@Callable(F)
339+@Callable(B)
352340 func usdnSignCredits () = {
353- let O = extract(F.payment)
354- let n = toBase58String(F.caller.bytes)
355- let ai = extract(O.assetId)
356- let P = extract(O.amount)
357- let aj = ((P * 2) / 1000000)
358- let N = m(n)
359- if ((toBase58String(ai) != d))
341+ let K = value(B.payments[0])
342+ let n = toBase58String(B.caller.bytes)
343+ let ae = K.assetId
344+ let L = K.amount
345+ let af = ((L * 2) / 1000000)
346+ let J = m(n)
347+ if ((toBase58String(value(ae)) != d))
360348 then throw("Only USDN can be exchanged")
361- else if (if (((P % 1000000) != 0))
362- then ((P % 1000000) != 500000)
349+ else if (if (((L % 1000000) != 0))
350+ then ((L % 1000000) != 500000)
363351 else false)
364- then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(P), 6)) + ".") + takeRight(toString(P), 6)))
365- else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N + aj))]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, ai)]))
352+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(L), 6)) + ".") + takeRight(toString(L), 6)))
353+ else [IntegerEntry(("addr_WHITELISTED_" + n), (J + af)), ScriptTransfer(addressFromStringValue(b), L, ae)]
366354 }
367355
368356
369-@Verifier(ak)
370-func al () = {
371- let h = ak
357+@Verifier(ag)
358+func ah () = {
359+ let h = ag
372360 if ($isInstanceOf(h, "InvokeScriptTransaction"))
373361 then {
374- let am = h
375- if (if (if ((am.function == "fileCertification"))
362+ let ai = h
363+ if (if (if ((ai.function == "fileCertification"))
376364 then true
377- else (am.function == "emailCertification"))
365+ else (ai.function == "emailCertification"))
378366 then true
379- else (am.function == "createAgreement"))
380- then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[4])))
381- else if ((am.function == "signAgreement"))
382- then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[2])))
383- else if ((am.function == "revokeCertification"))
384- then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[1])))
385- else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
367+ else (ai.function == "createAgreement"))
368+ then sigVerify(ag.bodyBytes, ag.proofs[0], fromBase58String(y(ai.args[4])))
369+ else if ((ai.function == "signAgreement"))
370+ then sigVerify(ag.bodyBytes, ag.proofs[0], fromBase58String(y(ai.args[2])))
371+ else if ((ai.function == "revokeCertification"))
372+ then sigVerify(ag.bodyBytes, ag.proofs[0], fromBase58String(y(ai.args[1])))
373+ else sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
386374 }
387- else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
375+ else sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
388376 }
389377
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
4+let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
88 let c = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
99
1010 let d = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1111
1212 func e (f,g) = {
1313 let h = getString(this, (f + g))
1414 if ($isInstanceOf(h, "String"))
1515 then {
1616 let i = h
1717 i
1818 }
1919 else "NONE"
2020 }
2121
2222
2323 func j (g,k) = {
2424 let h = getString(this, ((g + "@") + k))
2525 if ($isInstanceOf(h, "String"))
2626 then {
2727 let i = h
2828 i
2929 }
3030 else "NONE"
3131 }
3232
3333
3434 func l (g) = {
3535 let h = getString(this, g)
3636 if ($isInstanceOf(h, "String"))
3737 then {
3838 let i = h
3939 i
4040 }
4141 else "NONE"
4242 }
4343
4444
4545 func m (n) = {
4646 let h = getInteger(this, ("addr_WHITELISTED_" + n))
4747 if ($isInstanceOf(h, "Int"))
4848 then {
4949 let i = h
5050 i
5151 }
5252 else 0
5353 }
5454
5555
56-func o (p) = if (if (if ((size(p) == 35))
57- then (take(p, 2) == "3P")
58- else false)
59- then true
60- else (take(p, 2) == "3N"))
61- then true
62- else (take(p, 2) == "3M")
63-
64-
65-func q (r,p) = if ((size(p) > 0))
66- then (r + 1)
67- else (r + 0)
68-
69-
70-func s (t) = {
71- let h = getString(this, t)
56+func o (p) = {
57+ let h = getString(this, p)
7258 if ($isInstanceOf(h, "String"))
7359 then {
7460 let i = h
7561 if ((i == "PENDING"))
7662 then true
7763 else false
7864 }
7965 else false
8066 }
8167
8268
83-func u (v) = take(drop(v, 1), value(indexOf(drop(v, 1), "\"")))
69+func q (r) = take(drop(r, 1), value(indexOf(drop(r, 1), "\"")))
8470
8571
86-func w (v,t) = {
87- let x = value(indexOf(v, (("\"" + t) + "\":")))
88- let y = drop(v, ((x + size(t)) + 3))
89- let z = u(y)
90- z
72+func s (r,p) = {
73+ let t = value(indexOf(r, (("\"" + p) + "\":")))
74+ let u = drop(r, ((t + size(p)) + 3))
75+ let v = q(u)
76+ v
9177 }
9278
9379
94-func A (v,t) = {
95- let x = value(indexOf(v, (("\"" + t) + "\":")))
96- let y = take(v, ((x + size(t)) + 3))
97- y
80+func w (r,p) = {
81+ let t = value(indexOf(r, (("\"" + p) + "\":")))
82+ let u = take(r, ((t + size(p)) + 3))
83+ u
9884 }
9985
10086
101-func B (v,t) = {
102- let x = value(indexOf(v, (("\"" + t) + "\":")))
103- let y = takeRight(v, (size(v) - ((((x + size(t)) + 3) + 0) + 2)))
104- y
87+func x (r,p) = {
88+ let t = value(indexOf(r, (("\"" + p) + "\":")))
89+ let u = takeRight(r, (size(r) - ((((t + size(p)) + 3) + 0) + 2)))
90+ u
10591 }
10692
10793
108-func C (D) = {
109- let h = D
94+func y (z) = {
95+ let h = z
11096 if ($isInstanceOf(h, "String"))
11197 then {
112- let E = h
113- E
98+ let A = h
99+ A
114100 }
115101 else throw("Sponsored Public Key String expected")
116102 }
117103
118104
119-@Callable(F)
120-func fileCertification (G,H,g,y,I) = {
121- let J = extract(F.transactionId)
122- let K = e(G, g)
123- let L = l(g)
124- let M = (this == F.caller)
125- let n = if (M)
126- then toString(addressFromPublicKey(fromBase58String(I)))
127- else toBase58String(F.caller.bytes)
128- let N = m(n)
129- if ((K != "NONE"))
105+@Callable(B)
106+func fileCertification (C,D,g,u,E) = {
107+ let F = toBase58String(B.transactionId)
108+ let G = e(C, g)
109+ let H = l(g)
110+ let I = (this == B.caller)
111+ let n = if (I)
112+ then toString(addressFromPublicKey(fromBase58String(E)))
113+ else toBase58String(B.caller.bytes)
114+ let J = m(n)
115+ if ((G != "NONE"))
130116 then throw("This entry already exist")
131- else if ((L != "NONE"))
117+ else if ((H != "NONE"))
132118 then throw("This uuid already exist")
133119 else if ((size(g) > 36))
134120 then throw("Uuid is too long, 36 characters max.")
135- else if ((size(G) > 64))
121+ else if ((size(C) > 64))
136122 then throw("Hash is too long, 64 characters max.")
137- else if ((size(H) > 64))
123+ else if ((size(D) > 64))
138124 then throw("Title is too long, 64 characters max.")
139- else if ((N > 0))
140- then ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry((G + g), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(((("data_fc_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c)]))
141- else if (!(M))
125+ else if ((J > 0))
126+ then [StringEntry(g, F), StringEntry((C + g), F), StringEntry((D + g), F), IntegerEntry(("addr_WHITELISTED_" + n), (J - 1)), StringEntry(((("data_fc_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(n), 0, c)]
127+ else if (!(I))
142128 then {
143- let O = extract(F.payment)
144- let P = extract(O.amount)
145- let Q = if (isDefined(O.assetId))
146- then extract(O.assetId)
129+ let K = value(B.payments[0])
130+ let L = K.amount
131+ let M = if (isDefined(K.assetId))
132+ then K.assetId
147133 else throw("Waves is not accepted as payment")
148- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
149- if ((c != Q))
134+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
135+ if ((c != M))
150136 then throw("This token is not accepted at the moment")
151- else if (if ((P != R))
152- then (0 >= N)
137+ else if (if ((L != N))
138+ then (0 >= J)
153139 else false)
154140 then throw("The price is wrong")
155- else ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry((G + g), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(((("data_fc_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
141+ else [StringEntry(g, F), StringEntry((C + g), F), StringEntry((D + g), F), StringEntry(((("data_fc_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(b), L, K.assetId)]
156142 }
157143 else throw("You are not allowed to do that")
158144 }
159145
160146
161147
162-@Callable(F)
163-func revokeCertification (S,I) = {
164- let J = extract(F.transactionId)
165- let M = (this == F.caller)
166- let n = if (M)
167- then toString(addressFromPublicKey(fromBase58String(I)))
168- else toBase58String(F.caller.bytes)
169- let K = {
170- let h = getString(this, ((("data_fc_" + S) + "_") + n))
148+@Callable(B)
149+func revokeCertification (O,E) = {
150+ let F = toBase58String(B.transactionId)
151+ let I = (this == B.caller)
152+ let n = if (I)
153+ then toString(addressFromPublicKey(fromBase58String(E)))
154+ else toBase58String(B.caller.bytes)
155+ let G = {
156+ let h = getString(this, ((("data_fc_" + O) + "_") + n))
171157 if ($isInstanceOf(h, "String"))
172158 then {
173159 let i = h
174160 i
175161 }
176162 else "NONE"
177163 }
178- let T = {
179- let h = getString(this, ("STATUS_FC_" + S))
164+ let P = {
165+ let h = getString(this, ("STATUS_FC_" + O))
180166 if ($isInstanceOf(h, "String"))
181167 then {
182168 let i = h
183169 i
184170 }
185171 else "NONE"
186172 }
187- let N = m(n)
188- let U = (((dropRight(K, 1) + ",\"status\":\"REVOKED_") + toBase58String(J)) + "\"}")
189- if ((T != "NONE"))
173+ let J = m(n)
174+ if ((P != "NONE"))
190175 then throw("This certification have already been revoked.")
191- else if ((K == "NONE"))
176+ else if ((G == "NONE"))
192177 then throw("You cannot change the status of this certification.")
193- else if ((N > 0))
194- then WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)])
195- else if (!(M))
196- then {
197- let O = extract(F.payment)
198- let P = extract(O.amount)
199- let Q = if (isDefined(O.assetId))
200- then extract(O.assetId)
201- else throw("Waves is not accepted as payment")
202- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
203- if ((c != Q))
204- then throw("This token is not accepted at the moment")
205- else if (if ((P != R))
206- then (0 >= N)
207- else false)
208- then throw("The price is wrong")
209- else ScriptResult(WriteSet([DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
210- }
211- else throw("You are not allowed to do that")
178+ else {
179+ let Q = (((dropRight(G, 1) + ",\"status\":\"REVOKED_") + F) + "\"}")
180+ if ((J > 0))
181+ then [IntegerEntry(("addr_WHITELISTED_" + n), (J - 1)), StringEntry(("STATUS_FC_" + O), ("REVOKED_" + F)), StringEntry(((("data_fc_" + O) + "_") + n), Q)]
182+ else if (!(I))
183+ then {
184+ let K = value(B.payments[0])
185+ let L = K.amount
186+ let M = if (isDefined(K.assetId))
187+ then K.assetId
188+ else throw("Waves is not accepted as payment")
189+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
190+ if ((c != M))
191+ then throw("This token is not accepted at the moment")
192+ else if (if ((L != N))
193+ then (0 >= J)
194+ else false)
195+ then throw("The price is wrong")
196+ else [StringEntry(("STATUS_FC_" + O), ("REVOKED_" + F)), StringEntry(((("data_fc_" + O) + "_") + n), Q), ScriptTransfer(addressFromStringValue(b), L, K.assetId)]
197+ }
198+ else throw("You are not allowed to do that")
199+ }
212200 }
213201
214202
215203
216-@Callable(F)
217-func emailCertification (k,H,g,y,I) = {
218- let J = extract(F.transactionId)
219- let K = j(k, g)
220- let L = l(g)
221- let M = (this == F.caller)
222- let n = if (M)
223- then toString(addressFromPublicKey(fromBase58String(I)))
224- else toBase58String(F.caller.bytes)
225- let N = m(n)
226- if ((K != "NONE"))
204+@Callable(B)
205+func emailCertification (k,g,u,D,E) = {
206+ let F = toBase58String(B.transactionId)
207+ let G = j(k, g)
208+ let H = l(g)
209+ let I = (this == B.caller)
210+ let n = if (I)
211+ then toString(addressFromPublicKey(fromBase58String(E)))
212+ else toBase58String(B.caller.bytes)
213+ let J = m(n)
214+ if ((G != "NONE"))
227215 then throw("This entry already exist")
228- else if ((L != "NONE"))
216+ else if ((H != "NONE"))
229217 then throw("This uuid already exist")
230218 else if ((size(g) > 36))
231219 then throw("Uuid is too long, 36 characters max.")
232220 else if ((size(k) > 64))
233221 then throw("Domain is too long, 64 characters max.")
234- else if ((size(H) > 64))
222+ else if ((size(D) > 64))
235223 then throw("Title is too long, 64 characters max.")
236- else if ((N > 0))
237- then ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry(((g + "@") + k), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(((("data_ec_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c)]))
238- else if (!(M))
224+ else if ((J > 0))
225+ then [StringEntry(g, F), StringEntry(((g + "@") + k), F), StringEntry((D + g), F), IntegerEntry(("addr_WHITELISTED_" + n), (J - 1)), StringEntry(((("data_ec_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(n), 0, c)]
226+ else if (!(I))
239227 then {
240- let O = extract(F.payment)
241- let P = extract(O.amount)
242- let Q = if (isDefined(O.assetId))
243- then extract(O.assetId)
228+ let K = value(B.payments[0])
229+ let L = K.amount
230+ let M = if (isDefined(K.assetId))
231+ then K.assetId
244232 else throw("Waves is not accepted as payment")
245- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
246- if ((c != Q))
233+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
234+ if ((c != M))
247235 then throw("This token is not accepted at the moment")
248- else if (if ((P != R))
249- then (0 >= N)
236+ else if (if ((L != N))
237+ then (0 >= J)
250238 else false)
251239 then throw("The price is wrong")
252- else ScriptResult(WriteSet([DataEntry(g, toBase58String(J)), DataEntry(((g + "@") + k), toBase58String(J)), DataEntry((H + g), toBase58String(J)), DataEntry(((("data_ec_" + toBase58String(J)) + "_") + n), y)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
240+ else [StringEntry(g, F), StringEntry(((g + "@") + k), F), StringEntry((D + g), F), StringEntry(((("data_ec_" + F) + "_") + n), u), ScriptTransfer(addressFromStringValue(b), L, K.assetId)]
253241 }
254242 else throw("You are not allowed to do that")
255243 }
256244
257245
258246
259-@Callable(F)
260-func createAgreement (G,H,V,W,I,g) = {
261- let J = extract(F.transactionId)
262- let K = e(G, g)
263- let L = l(g)
264- let M = (this == F.caller)
265- let n = if (M)
266- then toString(addressFromPublicKey(fromBase58String(I)))
267- else toBase58String(F.caller.bytes)
268- let N = m(n)
269- let X = ((((A(V, "creator") + "\"") + n) + "\"") + B(V, "creator"))
270- let Y = split(W, ",")
271- let Z = size(Y)
272- let aa = DataEntry((H + g), toBase58String(J))
273- let ab = DataEntry((G + g), toBase58String(J))
274- let ac = DataEntry(((("data_MA_" + toBase58String(J)) + "_") + n), X)
275- let ad = DataEntry(((n + "_MA_") + toBase58String(J)), ("SIGNED_" + toBase58String(J)))
276- let ae = DataEntry(("addr_WHITELISTED_" + n), (N - (Z + 1)))
277- if ((K != "NONE"))
247+@Callable(B)
248+func createAgreement (C,D,R,S,E,g) = {
249+ let F = toBase58String(B.transactionId)
250+ let G = e(C, g)
251+ let H = l(g)
252+ let I = (this == B.caller)
253+ let n = if (I)
254+ then toString(addressFromPublicKey(fromBase58String(E)))
255+ else toBase58String(B.caller.bytes)
256+ let J = m(n)
257+ let T = ((((w(R, "creator") + "\"") + n) + "\"") + x(R, "creator"))
258+ let U = split(S, ",")
259+ let V = size(U)
260+ let W = StringEntry((D + g), F)
261+ let X = StringEntry((C + g), F)
262+ let Y = StringEntry(((("data_MA_" + F) + "_") + n), T)
263+ let Z = StringEntry(((n + "_MA_") + F), ("SIGNED_" + F))
264+ let aa = IntegerEntry(("addr_WHITELISTED_" + n), (J - (V + 1)))
265+ if ((G != "NONE"))
278266 then throw("This entry already exist")
279- else if ((L != "NONE"))
267+ else if ((H != "NONE"))
280268 then throw("This uuid already exist")
281269 else if ((size(g) > 36))
282270 then throw("Uuid is too long, 36 characters max.")
283- else if ((size(G) > 64))
271+ else if ((size(C) > 64))
284272 then throw("Message-id is too long, 64 characters max.")
285- else if ((size(H) > 64))
273+ else if ((size(D) > 64))
286274 then throw("Title is too long, 64 characters max.")
287- else if ((N > 0))
288- then if (((Z + 1) > N))
275+ else if ((J > 0))
276+ then if (((V + 1) > J))
289277 then throw("You don't have enough certification credit")
290- else if ((Z == 6))
291- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c), ScriptTransfer(addressFromStringValue(Y[5]), 0, c)]))
292- else if ((Z == 5))
293- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c)]))
294- else if ((Z == 4))
295- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c)]))
296- else if ((Z == 3))
297- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c)]))
298- else if ((Z == 2))
299- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c)]))
300- else if ((Z == 1))
301- then ScriptResult(WriteSet([aa, ab, ac, ad, ae, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c)]))
278+ else if ((V == 6))
279+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), StringEntry(((U[5] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c), ScriptTransfer(addressFromStringValue(U[5]), 0, c)]
280+ else if ((V == 5))
281+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c)]
282+ else if ((V == 4))
283+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c)]
284+ else if ((V == 3))
285+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c)]
286+ else if ((V == 2))
287+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c)]
288+ else if ((V == 1))
289+ then [W, X, Y, Z, aa, StringEntry(((U[0] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c)]
302290 else throw("Wrong number of participants")
303- else if (!(M))
291+ else if (!(I))
304292 then {
305- let O = extract(F.payment)
306- let P = if (isDefined(O.amount))
307- then extract(O.amount)
293+ let K = value(B.payments[0])
294+ let L = if (isDefined(K.amount))
295+ then K.amount
308296 else 0
309- let Q = if (isDefined(O.assetId))
310- then extract(O.assetId)
297+ let M = if (isDefined(K.assetId))
298+ then K.assetId
311299 else c
312- let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
313- if (((R * (Z + 1)) > P))
314- then throw(("The price is wrong, it should be " + toString((R * (Z + 1)))))
315- else if ((Z == 6))
316- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c), ScriptTransfer(addressFromStringValue(Y[5]), 0, c)]))
317- else if ((Z == 5))
318- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c), ScriptTransfer(addressFromStringValue(Y[4]), 0, c)]))
319- else if ((Z == 4))
320- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c), ScriptTransfer(addressFromStringValue(Y[3]), 0, c)]))
321- else if ((Z == 3))
322- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c), ScriptTransfer(addressFromStringValue(Y[2]), 0, c)]))
323- else if ((Z == 2))
324- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((Y[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c), ScriptTransfer(addressFromStringValue(Y[1]), 0, c)]))
325- else if ((Z == 1))
326- then ScriptResult(WriteSet([aa, ab, ac, ad, DataEntry(((Y[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(Y[0]), 0, c)]))
327- else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(Z)))
300+ let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
301+ if (((N * (V + 1)) > L))
302+ then throw(("The price is wrong, it should be " + toString((N * (V + 1)))))
303+ else if ((V == 6))
304+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), StringEntry(((U[5] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c), ScriptTransfer(addressFromStringValue(U[5]), 0, c)]
305+ else if ((V == 5))
306+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), StringEntry(((U[4] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c), ScriptTransfer(addressFromStringValue(U[4]), 0, c)]
307+ else if ((V == 4))
308+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), StringEntry(((U[3] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c), ScriptTransfer(addressFromStringValue(U[3]), 0, c)]
309+ else if ((V == 3))
310+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), StringEntry(((U[2] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c), ScriptTransfer(addressFromStringValue(U[2]), 0, c)]
311+ else if ((V == 2))
312+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), StringEntry(((U[1] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c), ScriptTransfer(addressFromStringValue(U[1]), 0, c)]
313+ else if ((V == 1))
314+ then [W, X, Y, Z, StringEntry(((U[0] + "_MA_") + F), "PENDING"), ScriptTransfer(addressFromStringValue(b), L, c), ScriptTransfer(addressFromStringValue(U[0]), 0, c)]
315+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(V)))
328316 }
329317 else throw("You are not allowed to do that")
330318 }
331319
332320
333321
334-@Callable(F)
335-func signAgreement (G,af,I) = {
336- let O = extract(F.payment)
337- let P = extract(O.amount)
338- let J = extract(F.transactionId)
339- let M = (this == F.caller)
340- let ag = if (M)
341- then toString(addressFromPublicKey(fromBase58String(I)))
342- else toBase58String(F.caller.bytes)
343- let ah = s(((ag + "_MA_") + af))
344- if (!(ah))
322+@Callable(B)
323+func signAgreement (C,ab,E) = {
324+ let K = value(B.payments[0])
325+ let L = K.amount
326+ let F = toBase58String(B.transactionId)
327+ let I = (this == B.caller)
328+ let ac = if (I)
329+ then toString(addressFromPublicKey(fromBase58String(E)))
330+ else toBase58String(B.caller.bytes)
331+ let ad = o(((ac + "_MA_") + ab))
332+ if (!(ad))
345333 then throw("Sorry there is no pending signature")
346- else ScriptResult(WriteSet([DataEntry(((ag + "_MA_") + af), ("SIGNED_" + toBase58String(J)))]), TransferSet([ScriptTransfer(addressFromStringValue(ag), 0, c)]))
334+ else [StringEntry(((ac + "_MA_") + ab), ("SIGNED_" + F)), ScriptTransfer(addressFromStringValue(ac), 0, c)]
347335 }
348336
349337
350338
351-@Callable(F)
339+@Callable(B)
352340 func usdnSignCredits () = {
353- let O = extract(F.payment)
354- let n = toBase58String(F.caller.bytes)
355- let ai = extract(O.assetId)
356- let P = extract(O.amount)
357- let aj = ((P * 2) / 1000000)
358- let N = m(n)
359- if ((toBase58String(ai) != d))
341+ let K = value(B.payments[0])
342+ let n = toBase58String(B.caller.bytes)
343+ let ae = K.assetId
344+ let L = K.amount
345+ let af = ((L * 2) / 1000000)
346+ let J = m(n)
347+ if ((toBase58String(value(ae)) != d))
360348 then throw("Only USDN can be exchanged")
361- else if (if (((P % 1000000) != 0))
362- then ((P % 1000000) != 500000)
349+ else if (if (((L % 1000000) != 0))
350+ then ((L % 1000000) != 500000)
363351 else false)
364- then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(P), 6)) + ".") + takeRight(toString(P), 6)))
365- else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N + aj))]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, ai)]))
352+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(L), 6)) + ".") + takeRight(toString(L), 6)))
353+ else [IntegerEntry(("addr_WHITELISTED_" + n), (J + af)), ScriptTransfer(addressFromStringValue(b), L, ae)]
366354 }
367355
368356
369-@Verifier(ak)
370-func al () = {
371- let h = ak
357+@Verifier(ag)
358+func ah () = {
359+ let h = ag
372360 if ($isInstanceOf(h, "InvokeScriptTransaction"))
373361 then {
374- let am = h
375- if (if (if ((am.function == "fileCertification"))
362+ let ai = h
363+ if (if (if ((ai.function == "fileCertification"))
376364 then true
377- else (am.function == "emailCertification"))
365+ else (ai.function == "emailCertification"))
378366 then true
379- else (am.function == "createAgreement"))
380- then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[4])))
381- else if ((am.function == "signAgreement"))
382- then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[2])))
383- else if ((am.function == "revokeCertification"))
384- then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[1])))
385- else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
367+ else (ai.function == "createAgreement"))
368+ then sigVerify(ag.bodyBytes, ag.proofs[0], fromBase58String(y(ai.args[4])))
369+ else if ((ai.function == "signAgreement"))
370+ then sigVerify(ag.bodyBytes, ag.proofs[0], fromBase58String(y(ai.args[2])))
371+ else if ((ai.function == "revokeCertification"))
372+ then sigVerify(ag.bodyBytes, ag.proofs[0], fromBase58String(y(ai.args[1])))
373+ else sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
386374 }
387- else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
375+ else sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
388376 }
389377

github/deemru/w8io/169f3d6 
262.58 ms