tx · EgnLTvTXXb26voa7PBwQhiqrwehzkrVLYDfZuKSTG8RK

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01400000 Waves

2021.01.18 05:55 [1358289] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "EgnLTvTXXb26voa7PBwQhiqrwehzkrVLYDfZuKSTG8RK", "fee": 1400000, "feeAssetId": null, "timestamp": 1610938599129, "version": 2, "chainId": 84, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "4vySP84kJQvAbA4jBT1x4zKd4DkpUHcMMhQ8tovSXpfqp2hvFVy6nUA2iSQFjRNm7AyiL5wJFKpv46doU1gDwjJu" ], "script": "base64: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VXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAAAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAACAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQkAAZEAAAACBQAAAA5hZGRyZXNzZXNBcnJheQAAAAAAAAAAAwAAAAAAAAAAAAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAQAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABCQABkQAAAAIFAAAADmFkZHJlc3Nlc0FycmF5AAAAAAAAAAAFAAAAAAAAAAAABQAAAA1hY2NlcHRlZFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAADnRvdGFsQWRk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", "height": 1358289, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5fv6tuMjjGxjfDTF2LARXBpkDFP5cgj244KqF6o4yAKi Next: FdYDozj552AqNm3WaY2ypPnbC1TXBioXnSNLsuyxRHVq Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
4+let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
5353 }
5454
5555
56-func o (p) = {
57- let h = getString(this, p)
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)
5872 if ($isInstanceOf(h, "String"))
5973 then {
6074 let i = h
6680 }
6781
6882
69-func q (r) = take(drop(r, 1), value(indexOf(drop(r, 1), "\"")))
83+func u (v) = take(drop(v, 1), value(indexOf(drop(v, 1), "\"")))
7084
7185
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
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
7791 }
7892
7993
80-func w (r,p) = {
81- let t = value(indexOf(r, (("\"" + p) + "\":")))
82- let u = take(r, ((t + size(p)) + 3))
83- u
94+func A (v,t) = {
95+ let x = value(indexOf(v, (("\"" + t) + "\":")))
96+ let y = take(v, ((x + size(t)) + 3))
97+ y
8498 }
8599
86100
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
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
91105 }
92106
93107
94-func y (z) = {
95- let h = z
108+func C (D) = {
109+ let h = D
96110 if ($isInstanceOf(h, "String"))
97111 then {
98- let A = h
99- A
112+ let E = h
113+ E
100114 }
101115 else throw("Sponsored Public Key String expected")
102116 }
103117
104118
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"))
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"))
116130 then throw("This entry already exist")
117- else if ((H != "NONE"))
131+ else if ((L != "NONE"))
118132 then throw("This uuid already exist")
119133 else if ((size(g) != 36))
120- then throw("Uuid v1 should be 36 characters.")
121- else if ((size(C) != 64))
122- then throw("Sha 256 hjash should be 64 characters.")
123- else if ((size(D) > 64))
134+ then throw("Uuid should be 36 characters.")
135+ else if ((size(G) != 64))
136+ then throw("Hash should be 64 characters.")
137+ else if ((size(H) > 64))
124138 then throw("Title is too long, 64 characters max.")
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))
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))
128142 then {
129- let K = value(B.payments[0])
130- let L = K.amount
131- let M = if (isDefined(K.assetId))
132- then K.assetId
143+ let O = extract(F.payment)
144+ let P = extract(O.amount)
145+ let Q = if (isDefined(O.assetId))
146+ then extract(O.assetId)
133147 else throw("Waves is not accepted as payment")
134- let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
135- if ((c != M))
148+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
149+ if ((c != Q))
136150 then throw("This token is not accepted at the moment")
137- else if (if ((L != N))
138- then (0 >= J)
151+ else if (if ((P != R))
152+ then (0 >= N)
139153 else false)
140154 then throw("The price is wrong")
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)]
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)]))
142156 }
143157 else throw("You are not allowed to do that")
144158 }
145159
146160
147161
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))
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))
157171 if ($isInstanceOf(h, "String"))
158172 then {
159173 let i = h
161175 }
162176 else "NONE"
163177 }
164- let P = {
165- let h = getString(this, ("STATUS_FC_" + O))
178+ let T = {
179+ let h = getString(this, ("STATUS_FC_" + S))
166180 if ($isInstanceOf(h, "String"))
167181 then {
168182 let i = h
170184 }
171185 else "NONE"
172186 }
173- let J = m(n)
174- if ((P != "NONE"))
187+ let N = m(n)
188+ if ((T != "NONE"))
175189 then throw("This certification have already been revoked.")
176- else if ((G == "NONE"))
190+ else if ((K == "NONE"))
177191 then throw("You cannot change the status of this certification.")
178192 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))
193+ let U = (((dropRight(K, 1) + ",\"status\":\"REVOKED_") + toBase58String(J)) + "\"}")
194+ if ((N > 0))
195+ then WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)])
196+ else if (!(M))
183197 then {
184- let K = value(B.payments[0])
185- let L = K.amount
186- let M = if (isDefined(K.assetId))
187- then K.assetId
198+ let O = extract(F.payment)
199+ let P = extract(O.amount)
200+ let Q = if (isDefined(O.assetId))
201+ then extract(O.assetId)
188202 else throw("Waves is not accepted as payment")
189- let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
190- if ((c != M))
203+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
204+ if ((c != Q))
191205 then throw("This token is not accepted at the moment")
192- else if (if ((L != N))
193- then (0 >= J)
206+ else if (if ((P != R))
207+ then (0 >= N)
194208 else false)
195209 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)]
210+ else ScriptResult(WriteSet([DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
197211 }
198212 else throw("You are not allowed to do that")
199213 }
201215
202216
203217
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"))
218+@Callable(F)
219+func emailCertification (k,H,g,y,I) = {
220+ let J = extract(F.transactionId)
221+ let K = j(k, g)
222+ let L = l(g)
223+ let M = (this == F.caller)
224+ let n = if (M)
225+ then toString(addressFromPublicKey(fromBase58String(I)))
226+ else toBase58String(F.caller.bytes)
227+ let N = m(n)
228+ if ((K != "NONE"))
215229 then throw("This entry already exist")
216- else if ((H != "NONE"))
230+ else if ((L != "NONE"))
217231 then throw("This uuid already exist")
218232 else if ((size(g) > 36))
219233 then throw("Uuid is too long, 36 characters max.")
220234 else if ((size(k) > 64))
221235 then throw("Domain is too long, 64 characters max.")
222- else if ((size(D) > 64))
236+ else if ((size(H) > 64))
223237 then throw("Title is too long, 64 characters max.")
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))
238+ else if ((N > 0))
239+ 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)]))
240+ else if (!(M))
227241 then {
228- let K = value(B.payments[0])
229- let L = K.amount
230- let M = if (isDefined(K.assetId))
231- then K.assetId
242+ let O = extract(F.payment)
243+ let P = extract(O.amount)
244+ let Q = if (isDefined(O.assetId))
245+ then extract(O.assetId)
232246 else throw("Waves is not accepted as payment")
233- let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
234- if ((c != M))
247+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
248+ if ((c != Q))
235249 then throw("This token is not accepted at the moment")
236- else if (if ((L != N))
237- then (0 >= J)
250+ else if (if ((P != R))
251+ then (0 >= N)
238252 else false)
239253 then throw("The price is wrong")
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)]
254+ 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)]))
241255 }
242256 else throw("You are not allowed to do that")
243257 }
244258
245259
246260
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"))
261+@Callable(F)
262+func createAgreement (G,H,V,W,I,g) = {
263+ let J = extract(F.transactionId)
264+ let K = e(G, g)
265+ let L = l(g)
266+ let M = (this == F.caller)
267+ let n = if (M)
268+ then toString(addressFromPublicKey(fromBase58String(I)))
269+ else toBase58String(F.caller.bytes)
270+ let N = m(n)
271+ let X = ((((A(V, "creator") + "\"") + n) + "\"") + B(V, "creator"))
272+ let Y = split(W, ",")
273+ let Z = size(Y)
274+ let aa = DataEntry((H + g), toBase58String(J))
275+ let ab = DataEntry((G + g), toBase58String(J))
276+ let ac = DataEntry(((("data_MA_" + toBase58String(J)) + "_") + n), X)
277+ let ad = DataEntry(((n + "_MA_") + toBase58String(J)), ("SIGNED_" + toBase58String(J)))
278+ let ae = DataEntry(("addr_WHITELISTED_" + n), (N - (Z + 1)))
279+ if ((K != "NONE"))
266280 then throw("This entry already exist")
267- else if ((H != "NONE"))
281+ else if ((L != "NONE"))
268282 then throw("This uuid already exist")
269- else if ((size(g) != 36))
270- then throw("Uuid v1 should be 36 characters.")
271- else if ((size(C) != 64))
272- then throw("Sha 256 hash should be 64 characters.")
273- else if ((size(D) > 64))
283+ else if ((size(g) > 36))
284+ then throw("Uuid is too long, 36 characters max.")
285+ else if ((size(G) > 64))
286+ then throw("Message-id is too long, 64 characters max.")
287+ else if ((size(H) > 64))
274288 then throw("Title is too long, 64 characters max.")
275- else if ((J > 0))
276- then if (((V + 1) > J))
289+ else if ((N > 0))
290+ then if (((Z + 1) > N))
277291 then throw("You don't have enough certification credit")
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)]
292+ else if ((Z == 6))
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"), 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)]))
294+ else if ((Z == 5))
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"), 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)]))
296+ else if ((Z == 4))
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"), 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)]))
298+ else if ((Z == 3))
299+ 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)]))
300+ else if ((Z == 2))
301+ 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)]))
302+ else if ((Z == 1))
303+ 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)]))
290304 else throw("Wrong number of participants")
291- else if (!(I))
305+ else if (!(M))
292306 then {
293- let K = value(B.payments[0])
294- let L = if (isDefined(K.amount))
295- then K.amount
307+ let O = extract(F.payment)
308+ let P = if (isDefined(O.amount))
309+ then extract(O.amount)
296310 else 0
297- let M = if (isDefined(K.assetId))
298- then K.assetId
311+ let Q = if (isDefined(O.assetId))
312+ then extract(O.assetId)
299313 else c
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)))
314+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
315+ if (((R * (Z + 1)) > P))
316+ then throw(("The price is wrong, it should be " + toString((R * (Z + 1)))))
317+ else if ((Z == 6))
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"), 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)]))
319+ else if ((Z == 5))
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"), 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)]))
321+ else if ((Z == 4))
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"), 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)]))
323+ else if ((Z == 3))
324+ 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)]))
325+ else if ((Z == 2))
326+ 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)]))
327+ else if ((Z == 1))
328+ 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)]))
329+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(Z)))
316330 }
317331 else throw("You are not allowed to do that")
318332 }
319333
320334
321335
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))
336+@Callable(F)
337+func signAgreement (G,af,I) = {
338+ let O = extract(F.payment)
339+ let P = extract(O.amount)
340+ let J = extract(F.transactionId)
341+ let M = (this == F.caller)
342+ let ag = if (M)
343+ then toString(addressFromPublicKey(fromBase58String(I)))
344+ else toBase58String(F.caller.bytes)
345+ let ah = s(((ag + "_MA_") + af))
346+ if (!(ah))
333347 then throw("Sorry there is no pending signature")
334- else [StringEntry(((ac + "_MA_") + ab), ("SIGNED_" + F)), ScriptTransfer(addressFromStringValue(ac), 0, c)]
348+ else ScriptResult(WriteSet([DataEntry(((ag + "_MA_") + af), ("SIGNED_" + toBase58String(J)))]), TransferSet([ScriptTransfer(addressFromStringValue(ag), 0, c)]))
335349 }
336350
337351
338352
339-@Callable(B)
353+@Callable(F)
340354 func usdnSignCredits () = {
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))
355+ let O = extract(F.payment)
356+ let n = toBase58String(F.caller.bytes)
357+ let ai = extract(O.assetId)
358+ let P = extract(O.amount)
359+ let aj = ((P * 2) / 1000000)
360+ let N = m(n)
361+ if ((toBase58String(ai) != d))
348362 then throw("Only USDN can be exchanged")
349- else if (if (((L % 1000000) != 0))
350- then ((L % 1000000) != 500000)
363+ else if (if (((P % 1000000) != 0))
364+ then ((P % 1000000) != 500000)
351365 else false)
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)]
366+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(P), 6)) + ".") + takeRight(toString(P), 6)))
367+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N + aj))]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, ai)]))
354368 }
355369
356370
357-@Verifier(ag)
358-func ah () = {
359- let h = ag
371+@Verifier(ak)
372+func al () = {
373+ let h = ak
360374 if ($isInstanceOf(h, "InvokeScriptTransaction"))
361375 then {
362- let ai = h
363- if (if (if ((ai.function == "fileCertification"))
376+ let am = h
377+ if (if (if ((am.function == "fileCertification"))
364378 then true
365- else (ai.function == "emailCertification"))
379+ else (am.function == "emailCertification"))
366380 then true
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)
381+ else (am.function == "createAgreement"))
382+ then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[4])))
383+ else if ((am.function == "signAgreement"))
384+ then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[2])))
385+ else if ((am.function == "revokeCertification"))
386+ then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[1])))
387+ else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
374388 }
375- else sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
389+ else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
376390 }
377391
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
4+let a = extract(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) = {
57- let h = getString(this, p)
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)
5872 if ($isInstanceOf(h, "String"))
5973 then {
6074 let i = h
6175 if ((i == "PENDING"))
6276 then true
6377 else false
6478 }
6579 else false
6680 }
6781
6882
69-func q (r) = take(drop(r, 1), value(indexOf(drop(r, 1), "\"")))
83+func u (v) = take(drop(v, 1), value(indexOf(drop(v, 1), "\"")))
7084
7185
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
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
7791 }
7892
7993
80-func w (r,p) = {
81- let t = value(indexOf(r, (("\"" + p) + "\":")))
82- let u = take(r, ((t + size(p)) + 3))
83- u
94+func A (v,t) = {
95+ let x = value(indexOf(v, (("\"" + t) + "\":")))
96+ let y = take(v, ((x + size(t)) + 3))
97+ y
8498 }
8599
86100
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
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
91105 }
92106
93107
94-func y (z) = {
95- let h = z
108+func C (D) = {
109+ let h = D
96110 if ($isInstanceOf(h, "String"))
97111 then {
98- let A = h
99- A
112+ let E = h
113+ E
100114 }
101115 else throw("Sponsored Public Key String expected")
102116 }
103117
104118
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"))
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"))
116130 then throw("This entry already exist")
117- else if ((H != "NONE"))
131+ else if ((L != "NONE"))
118132 then throw("This uuid already exist")
119133 else if ((size(g) != 36))
120- then throw("Uuid v1 should be 36 characters.")
121- else if ((size(C) != 64))
122- then throw("Sha 256 hjash should be 64 characters.")
123- else if ((size(D) > 64))
134+ then throw("Uuid should be 36 characters.")
135+ else if ((size(G) != 64))
136+ then throw("Hash should be 64 characters.")
137+ else if ((size(H) > 64))
124138 then throw("Title is too long, 64 characters max.")
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))
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))
128142 then {
129- let K = value(B.payments[0])
130- let L = K.amount
131- let M = if (isDefined(K.assetId))
132- then K.assetId
143+ let O = extract(F.payment)
144+ let P = extract(O.amount)
145+ let Q = if (isDefined(O.assetId))
146+ then extract(O.assetId)
133147 else throw("Waves is not accepted as payment")
134- let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
135- if ((c != M))
148+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
149+ if ((c != Q))
136150 then throw("This token is not accepted at the moment")
137- else if (if ((L != N))
138- then (0 >= J)
151+ else if (if ((P != R))
152+ then (0 >= N)
139153 else false)
140154 then throw("The price is wrong")
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)]
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)]))
142156 }
143157 else throw("You are not allowed to do that")
144158 }
145159
146160
147161
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))
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))
157171 if ($isInstanceOf(h, "String"))
158172 then {
159173 let i = h
160174 i
161175 }
162176 else "NONE"
163177 }
164- let P = {
165- let h = getString(this, ("STATUS_FC_" + O))
178+ let T = {
179+ let h = getString(this, ("STATUS_FC_" + S))
166180 if ($isInstanceOf(h, "String"))
167181 then {
168182 let i = h
169183 i
170184 }
171185 else "NONE"
172186 }
173- let J = m(n)
174- if ((P != "NONE"))
187+ let N = m(n)
188+ if ((T != "NONE"))
175189 then throw("This certification have already been revoked.")
176- else if ((G == "NONE"))
190+ else if ((K == "NONE"))
177191 then throw("You cannot change the status of this certification.")
178192 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))
193+ let U = (((dropRight(K, 1) + ",\"status\":\"REVOKED_") + toBase58String(J)) + "\"}")
194+ if ((N > 0))
195+ then WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N - 1)), DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)])
196+ else if (!(M))
183197 then {
184- let K = value(B.payments[0])
185- let L = K.amount
186- let M = if (isDefined(K.assetId))
187- then K.assetId
198+ let O = extract(F.payment)
199+ let P = extract(O.amount)
200+ let Q = if (isDefined(O.assetId))
201+ then extract(O.assetId)
188202 else throw("Waves is not accepted as payment")
189- let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
190- if ((c != M))
203+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
204+ if ((c != Q))
191205 then throw("This token is not accepted at the moment")
192- else if (if ((L != N))
193- then (0 >= J)
206+ else if (if ((P != R))
207+ then (0 >= N)
194208 else false)
195209 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)]
210+ else ScriptResult(WriteSet([DataEntry(("STATUS_FC_" + S), ("REVOKED_" + toBase58String(J))), DataEntry(((("data_fc_" + S) + "_") + n), U)]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, O.assetId)]))
197211 }
198212 else throw("You are not allowed to do that")
199213 }
200214 }
201215
202216
203217
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"))
218+@Callable(F)
219+func emailCertification (k,H,g,y,I) = {
220+ let J = extract(F.transactionId)
221+ let K = j(k, g)
222+ let L = l(g)
223+ let M = (this == F.caller)
224+ let n = if (M)
225+ then toString(addressFromPublicKey(fromBase58String(I)))
226+ else toBase58String(F.caller.bytes)
227+ let N = m(n)
228+ if ((K != "NONE"))
215229 then throw("This entry already exist")
216- else if ((H != "NONE"))
230+ else if ((L != "NONE"))
217231 then throw("This uuid already exist")
218232 else if ((size(g) > 36))
219233 then throw("Uuid is too long, 36 characters max.")
220234 else if ((size(k) > 64))
221235 then throw("Domain is too long, 64 characters max.")
222- else if ((size(D) > 64))
236+ else if ((size(H) > 64))
223237 then throw("Title is too long, 64 characters max.")
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))
238+ else if ((N > 0))
239+ 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)]))
240+ else if (!(M))
227241 then {
228- let K = value(B.payments[0])
229- let L = K.amount
230- let M = if (isDefined(K.assetId))
231- then K.assetId
242+ let O = extract(F.payment)
243+ let P = extract(O.amount)
244+ let Q = if (isDefined(O.assetId))
245+ then extract(O.assetId)
232246 else throw("Waves is not accepted as payment")
233- let N = getIntegerValue(a, ("certification_fee_" + toBase58String(value(M))))
234- if ((c != M))
247+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
248+ if ((c != Q))
235249 then throw("This token is not accepted at the moment")
236- else if (if ((L != N))
237- then (0 >= J)
250+ else if (if ((P != R))
251+ then (0 >= N)
238252 else false)
239253 then throw("The price is wrong")
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)]
254+ 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)]))
241255 }
242256 else throw("You are not allowed to do that")
243257 }
244258
245259
246260
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"))
261+@Callable(F)
262+func createAgreement (G,H,V,W,I,g) = {
263+ let J = extract(F.transactionId)
264+ let K = e(G, g)
265+ let L = l(g)
266+ let M = (this == F.caller)
267+ let n = if (M)
268+ then toString(addressFromPublicKey(fromBase58String(I)))
269+ else toBase58String(F.caller.bytes)
270+ let N = m(n)
271+ let X = ((((A(V, "creator") + "\"") + n) + "\"") + B(V, "creator"))
272+ let Y = split(W, ",")
273+ let Z = size(Y)
274+ let aa = DataEntry((H + g), toBase58String(J))
275+ let ab = DataEntry((G + g), toBase58String(J))
276+ let ac = DataEntry(((("data_MA_" + toBase58String(J)) + "_") + n), X)
277+ let ad = DataEntry(((n + "_MA_") + toBase58String(J)), ("SIGNED_" + toBase58String(J)))
278+ let ae = DataEntry(("addr_WHITELISTED_" + n), (N - (Z + 1)))
279+ if ((K != "NONE"))
266280 then throw("This entry already exist")
267- else if ((H != "NONE"))
281+ else if ((L != "NONE"))
268282 then throw("This uuid already exist")
269- else if ((size(g) != 36))
270- then throw("Uuid v1 should be 36 characters.")
271- else if ((size(C) != 64))
272- then throw("Sha 256 hash should be 64 characters.")
273- else if ((size(D) > 64))
283+ else if ((size(g) > 36))
284+ then throw("Uuid is too long, 36 characters max.")
285+ else if ((size(G) > 64))
286+ then throw("Message-id is too long, 64 characters max.")
287+ else if ((size(H) > 64))
274288 then throw("Title is too long, 64 characters max.")
275- else if ((J > 0))
276- then if (((V + 1) > J))
289+ else if ((N > 0))
290+ then if (((Z + 1) > N))
277291 then throw("You don't have enough certification credit")
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)]
292+ else if ((Z == 6))
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"), 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)]))
294+ else if ((Z == 5))
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"), 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)]))
296+ else if ((Z == 4))
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"), 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)]))
298+ else if ((Z == 3))
299+ 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)]))
300+ else if ((Z == 2))
301+ 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)]))
302+ else if ((Z == 1))
303+ 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)]))
290304 else throw("Wrong number of participants")
291- else if (!(I))
305+ else if (!(M))
292306 then {
293- let K = value(B.payments[0])
294- let L = if (isDefined(K.amount))
295- then K.amount
307+ let O = extract(F.payment)
308+ let P = if (isDefined(O.amount))
309+ then extract(O.amount)
296310 else 0
297- let M = if (isDefined(K.assetId))
298- then K.assetId
311+ let Q = if (isDefined(O.assetId))
312+ then extract(O.assetId)
299313 else c
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)))
314+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
315+ if (((R * (Z + 1)) > P))
316+ then throw(("The price is wrong, it should be " + toString((R * (Z + 1)))))
317+ else if ((Z == 6))
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"), 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)]))
319+ else if ((Z == 5))
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"), 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)]))
321+ else if ((Z == 4))
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"), 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)]))
323+ else if ((Z == 3))
324+ 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)]))
325+ else if ((Z == 2))
326+ 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)]))
327+ else if ((Z == 1))
328+ 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)]))
329+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(Z)))
316330 }
317331 else throw("You are not allowed to do that")
318332 }
319333
320334
321335
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))
336+@Callable(F)
337+func signAgreement (G,af,I) = {
338+ let O = extract(F.payment)
339+ let P = extract(O.amount)
340+ let J = extract(F.transactionId)
341+ let M = (this == F.caller)
342+ let ag = if (M)
343+ then toString(addressFromPublicKey(fromBase58String(I)))
344+ else toBase58String(F.caller.bytes)
345+ let ah = s(((ag + "_MA_") + af))
346+ if (!(ah))
333347 then throw("Sorry there is no pending signature")
334- else [StringEntry(((ac + "_MA_") + ab), ("SIGNED_" + F)), ScriptTransfer(addressFromStringValue(ac), 0, c)]
348+ else ScriptResult(WriteSet([DataEntry(((ag + "_MA_") + af), ("SIGNED_" + toBase58String(J)))]), TransferSet([ScriptTransfer(addressFromStringValue(ag), 0, c)]))
335349 }
336350
337351
338352
339-@Callable(B)
353+@Callable(F)
340354 func usdnSignCredits () = {
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))
355+ let O = extract(F.payment)
356+ let n = toBase58String(F.caller.bytes)
357+ let ai = extract(O.assetId)
358+ let P = extract(O.amount)
359+ let aj = ((P * 2) / 1000000)
360+ let N = m(n)
361+ if ((toBase58String(ai) != d))
348362 then throw("Only USDN can be exchanged")
349- else if (if (((L % 1000000) != 0))
350- then ((L % 1000000) != 500000)
363+ else if (if (((P % 1000000) != 0))
364+ then ((P % 1000000) != 500000)
351365 else false)
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)]
366+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(P), 6)) + ".") + takeRight(toString(P), 6)))
367+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N + aj))]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, ai)]))
354368 }
355369
356370
357-@Verifier(ag)
358-func ah () = {
359- let h = ag
371+@Verifier(ak)
372+func al () = {
373+ let h = ak
360374 if ($isInstanceOf(h, "InvokeScriptTransaction"))
361375 then {
362- let ai = h
363- if (if (if ((ai.function == "fileCertification"))
376+ let am = h
377+ if (if (if ((am.function == "fileCertification"))
364378 then true
365- else (ai.function == "emailCertification"))
379+ else (am.function == "emailCertification"))
366380 then true
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)
381+ else (am.function == "createAgreement"))
382+ then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[4])))
383+ else if ((am.function == "signAgreement"))
384+ then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[2])))
385+ else if ((am.function == "revokeCertification"))
386+ then sigVerify(ak.bodyBytes, ak.proofs[0], fromBase58String(C(am.args[1])))
387+ else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
374388 }
375- else sigVerify(ag.bodyBytes, ag.proofs[0], ag.senderPublicKey)
389+ else sigVerify(ak.bodyBytes, ak.proofs[0], ak.senderPublicKey)
376390 }
377391

github/deemru/w8io/026f985 
250.00 ms