tx · HzRUDfSQ9qxxcGdhhCnwEHX4Cxhv3inowDJSmMLvWbrB

3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB:  -0.01400000 Waves

2020.03.28 10:22 [928971] smart account 3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB > SELF 0.00000000 Waves

{ "type": 13, "id": "HzRUDfSQ9qxxcGdhhCnwEHX4Cxhv3inowDJSmMLvWbrB", "fee": 1400000, "feeAssetId": null, "timestamp": 1585380183620, "version": 1, "sender": "3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB", "senderPublicKey": "Gd5NihbWQoWuTnSvq25TuV2BYZG4U1e9KDqZn9zBPix7", "proofs": [ "47UdGC1G3Gc16jktG8qzzDs1D7VKpqyC996trHWjChGJGp78MdoFu7egAqa3ABKZQ6uwZf2JFxv3w5VsXpMJMQZa" ], "script": "base64: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ZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAAKZW50cnlFeGlzdAkBAAAACmNoZWNrRW50cnkAAAACBQAAAARoYXNoBQAAAAR1dWlkBAAAAAl1dWlkRXhpc3QJAQAAAAljaGVja1VVSUQAAAABBQAAAAR1dWlkBAAAAAxjYWxsZXJJc0RhcHAJAAAAAAAAAgUAAAAEdGhpcwgFAAAABmludm9rZQAAAAZjYWxsZXIEAAAADWNhbGxlckFkZHJlc3MDBQAAAAxjYWxsZXJJc0RhcHAJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAAAxzaWduZXJQdWJLZXkJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQEAAAASY2hlY2tJZldoaXRlTGlzdGVkAAAAAQUAAAANY2FsbGVyQWRkcmVzcwQAAAAESlNPTgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQEAAAASZ2V0SnNvbkJlZm9yZVZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAdjcmVhdG9yAgAAAAEiBQAAAA1jYWxsZXJBZGRyZXNzAgAAAAEiCQEAAAARZ2V0SnNvbkFmdGVyVmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAAB2NyZWF0b3IEAAAADmFkZHJlc3Nlc0FycmF5CQAETAAAAAIJAQAAAAhnZXRWYWx1ZQAAAAIFAAAACWFkZHJlc3NlcwIAAAAIYWRkcmVzczEJAARMAAAAAgkBAAAACGdldFZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAhhZGRyZXNzMgkABEwAAAACCQEAAAAIZ2V0VmFsdWUAAAACBQAAAAlhZGRyZXNzZXMCAAAACGFkZHJlc3MzCQAETAAAAAIJAQAAAAhnZXRWYWx1ZQAAAAIFAAAACWFkZHJlc3NlcwIAAAAIYWRkcmVzczQJAARMAAAAAgkBAAAACGdldFZhbHVlAAAAAgUAAAAJYWRkcmVzc2VzAgAAAAhhZGRyZXNzNQkABEwAAAACCQEAAAAIZ2V0VmFsdWUAAAACBQAAAAlhZGRy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AAJYAAAAAQUAAAACaWQCAAAAB1BFTkRJTkcFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAABGJhbmsFAAAABmFtb3VudAUAAAANYWNjZXB0ZWRUb2tlbgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEJAAGRAAAAAgUAAAAOYWRkcmVzc2VzQXJyYXkAAAAAAAAAAAAAAAAAAAAAAAAFAAAADWFjY2VwdGVkVG9rZW4FAAAAA25pbAkAAAIAAAABCQABLAAAAAICAAAAMk5lZWRzIDEgdG8gNiByZWNpcGllbnQgYWRkcmVzc2VzLCBjdXJyZW50bHkgc2VudDogCQABpAAAAAEFAAAADnRvdGFsQWRkcmVzc2VzCQAAAgAAAAECAAAAHllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdAAAAAZpbnZva2UBAAAADXNpZ25BZ3JlZW1lbnQAAAADAAAABGhhc2gAAAALYWdyZWVtZW50SWQAAAAMc2lnbmVyUHViS2V5BAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAZpbnZva2UAAAAHcGF5bWVudAQAAAAGYW1vdW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAACaWQJAQAAAAdleHRyYWN0AAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAAxjYWxsZXJJc0RhcHAJAAAAAAAAAgUAAAAEdGhpcwgFAAAABmludm9rZQAAAAZjYWxsZXIEAAAABnNpZ25lcgMFAAAADGNhbGxlcklzRGFwcAkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADHNpZ25lclB1YktleQkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAE3NpZ25pbmdSZXF1ZXN0RXhpc3QJAQAAABRjaGVja0lmUGVu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", "chainId": 84, "height": 928971, "spentComplexity": 0 } View: original | compacted Prev: B56NDiiu33fjTrhsLUhPDXh569UP8fdbH3k4jtdLbLMN Next: D8risdpLfP8Lpwisdw4aAG4nP5JDVyoSeGAqMR2J5Ut6 Diff:
OldNewDifferences
77
88 let c = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
99
10-func d (e,f) = {
11- let g = getString(this, (e + f))
12- if ($isInstanceOf(g, "String"))
10+let d = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
11+
12+func e (f,g) = {
13+ let h = getString(this, (f + g))
14+ if ($isInstanceOf(h, "String"))
1315 then {
14- let h = g
15- h
16+ let i = h
17+ i
1618 }
1719 else "NONE"
1820 }
1921
2022
21-func i (f) = {
22- let g = getString(this, f)
23- if ($isInstanceOf(g, "String"))
23+func j (g,k) = {
24+ let h = getString(this, ((g + "@") + k))
25+ if ($isInstanceOf(h, "String"))
2426 then {
25- let h = g
26- h
27+ let i = h
28+ i
2729 }
2830 else "NONE"
2931 }
3032
3133
32-func j (k) = {
33- let g = getInteger(this, ("addr_WHITELISTED_" + k))
34- if ($isInstanceOf(g, "Int"))
34+func l (g) = {
35+ let h = getString(this, g)
36+ if ($isInstanceOf(h, "String"))
3537 then {
36- let h = g
37- h
38+ let i = h
39+ i
40+ }
41+ else "NONE"
42+ }
43+
44+
45+func m (n) = {
46+ let h = getInteger(this, ("addr_WHITELISTED_" + n))
47+ if ($isInstanceOf(h, "Int"))
48+ then {
49+ let i = h
50+ i
3851 }
3952 else 0
4053 }
4154
4255
43-func l (m) = if (if (if ((size(m) == 35))
44- then (take(m, 2) == "3P")
56+func o (p) = if (if (if ((size(p) == 35))
57+ then (take(p, 2) == "3P")
4558 else false)
4659 then true
47- else (take(m, 2) == "3N"))
60+ else (take(p, 2) == "3N"))
4861 then true
49- else (take(m, 2) == "3M")
62+ else (take(p, 2) == "3M")
5063
5164
52-func n (o,m) = if ((size(m) > 0))
53- then (o + 1)
54- else (o + 0)
65+func q (r,p) = if ((size(p) > 0))
66+ then (r + 1)
67+ else (r + 0)
5568
5669
57-func p (q) = {
58- let g = getString(this, q)
59- if ($isInstanceOf(g, "String"))
70+func s (t) = {
71+ let h = getString(this, t)
72+ if ($isInstanceOf(h, "String"))
6073 then {
61- let h = g
62- if ((h == "PENDING"))
74+ let i = h
75+ if ((i == "PENDING"))
6376 then true
6477 else false
6578 }
6780 }
6881
6982
70-func r (s) = take(drop(s, 1), value(indexOf(drop(s, 1), "\"")))
83+func u (v) = take(drop(v, 1), value(indexOf(drop(v, 1), "\"")))
7184
7285
73-func t (s,q) = {
74- let u = value(indexOf(s, (("\"" + q) + "\":")))
75- let v = drop(s, ((u + size(q)) + 3))
76- let w = r(v)
77- w
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
7891 }
7992
8093
81-func x (s,q) = {
82- let u = value(indexOf(s, (("\"" + q) + "\":")))
83- let v = take(s, ((u + size(q)) + 3))
84- v
94+func A (v,t) = {
95+ let x = value(indexOf(v, (("\"" + t) + "\":")))
96+ let y = take(v, ((x + size(t)) + 3))
97+ y
8598 }
8699
87100
88-func y (s,q) = {
89- let u = value(indexOf(s, (("\"" + q) + "\":")))
90- let v = takeRight(s, (size(s) - ((((u + size(q)) + 3) + 0) + 2)))
91- v
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
92105 }
93106
94107
95-func z (A) = {
96- let g = A
97- if ($isInstanceOf(g, "String"))
108+func C (D) = {
109+ let h = D
110+ if ($isInstanceOf(h, "String"))
98111 then {
99- let B = g
100- B
112+ let E = h
113+ E
101114 }
102115 else throw("Sponsored Public Key String expected")
103116 }
104117
105118
106-@Callable(C)
107-func fileCertification (D,E,f,v,F) = {
108- let G = extract(C.transactionId)
109- let H = d(D, f)
110- let I = i(f)
111- let J = (this == C.caller)
112- let k = if (J)
113- then toString(addressFromPublicKey(fromBase58String(F)))
114- else toBase58String(C.caller.bytes)
115- let K = j(k)
116- if ((H != "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"))
117130 then throw("This entry already exist")
118- else if ((I != "NONE"))
131+ else if ((L != "NONE"))
119132 then throw("This uuid already exist")
120- else if ((size(f) > 36))
121- then throw("Uuid is too long")
122- else if ((size(D) > 64))
123- then throw("Hash is too long")
124- else if ((size(E) > 64))
125- then throw("Title is too long")
126- else if ((K > 0))
127- then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
128- else if (!(J))
133+ else if ((size(g) > 36))
134+ then throw("Uuid is too long, 36 characters max.")
135+ else if ((size(G) > 64))
136+ then throw("Hash is too long, 64 characters max.")
137+ else if ((size(H) > 64))
138+ 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))
129142 then {
130- let L = extract(C.payment)
131- let M = extract(L.amount)
132- let N = if (isDefined(L.assetId))
133- then extract(L.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)
134147 else throw("Waves is not accepted as payment")
135- let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
136- if ((c != N))
148+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
149+ if ((c != Q))
137150 then throw("This token is not accepted at the moment")
138- else if (if ((M != O))
139- then (0 >= K)
151+ else if (if ((P != R))
152+ then (0 >= N)
140153 else false)
141154 then throw("The price is wrong")
142- else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.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)]))
143156 }
144157 else throw("You are not allowed to do that")
145158 }
146159
147160
148161
149-@Callable(C)
150-func emailCertification (P,f,v,E,F) = {
151- let G = extract(C.transactionId)
152- let H = d(P, f)
153- let I = i(f)
154- let J = (this == C.caller)
155- let k = if (J)
156- then toString(addressFromPublicKey(fromBase58String(F)))
157- else toBase58String(C.caller.bytes)
158- let K = j(k)
159- if ((H != "NONE"))
162+@Callable(F)
163+func emailCertification (k,g,y,H,I) = {
164+ let J = extract(F.transactionId)
165+ let K = j(k, g)
166+ let L = l(g)
167+ let M = (this == F.caller)
168+ let n = if (M)
169+ then toString(addressFromPublicKey(fromBase58String(I)))
170+ else toBase58String(F.caller.bytes)
171+ let N = m(n)
172+ if ((K != "NONE"))
160173 then throw("This entry already exist")
161- else if ((I != "NONE"))
174+ else if ((L != "NONE"))
162175 then throw("This uuid already exist")
163- else if ((size(f) > 36))
164- then throw("Uuid is too long")
165- else if ((size(P) > 64))
166- then throw("Message-id is too long")
167- else if ((size(E) > 64))
168- then throw("Title is too long")
169- else if ((K > 0))
170- then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
171- else if (!(J))
176+ else if ((size(g) > 36))
177+ then throw("Uuid is too long, 36 characters max.")
178+ else if ((size(k) > 64))
179+ then throw("Domain is too long, 64 characters max.")
180+ else if ((size(H) > 64))
181+ then throw("Title is too long, 64 characters max.")
182+ else if ((N > 0))
183+ 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)]))
184+ else if (!(M))
172185 then {
173- let L = extract(C.payment)
174- let M = extract(L.amount)
175- let N = if (isDefined(L.assetId))
176- then extract(L.assetId)
186+ let O = extract(F.payment)
187+ let P = extract(O.amount)
188+ let Q = if (isDefined(O.assetId))
189+ then extract(O.assetId)
177190 else throw("Waves is not accepted as payment")
178- let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
179- if ((c != N))
191+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
192+ if ((c != Q))
180193 then throw("This token is not accepted at the moment")
181- else if (if ((M != O))
182- then (0 >= K)
194+ else if (if ((P != R))
195+ then (0 >= N)
183196 else false)
184197 then throw("The price is wrong")
185- else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.assetId)]))
198+ 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)]))
186199 }
187200 else throw("You are not allowed to do that")
188201 }
189202
190203
191204
192-@Callable(C)
193-func createAgreement (D,E,Q,R,F,f) = {
194- let G = extract(C.transactionId)
195- let H = d(D, f)
196- let I = i(f)
197- let J = (this == C.caller)
198- let k = if (J)
199- then toString(addressFromPublicKey(fromBase58String(F)))
200- else toBase58String(C.caller.bytes)
201- let K = j(k)
202- let S = ((((x(Q, "creator") + "\"") + k) + "\"") + y(Q, "creator"))
203- let T = [t(Q, "address1"), t(Q, "address2"), t(Q, "address3"), t(Q, "address4"), t(Q, "address5"), t(Q, "address6")]
204- let U = R
205- let V = DataEntry((E + f), toBase58String(G))
206- let W = DataEntry((D + f), toBase58String(G))
207- let X = DataEntry(((("data_MA_" + toBase58String(G)) + "_") + k), S)
208- let Y = DataEntry(((k + "_MA_") + toBase58String(G)), ("SIGNED_" + toBase58String(G)))
209- let Z = DataEntry(("addr_WHITELISTED_" + k), (K - (U + 1)))
210- if ((H != "NONE"))
205+@Callable(F)
206+func createAgreement (G,H,S,T,I,g) = {
207+ let J = extract(F.transactionId)
208+ let K = e(G, g)
209+ let L = l(g)
210+ let M = (this == F.caller)
211+ let n = if (M)
212+ then toString(addressFromPublicKey(fromBase58String(I)))
213+ else toBase58String(F.caller.bytes)
214+ let N = m(n)
215+ let U = ((((A(S, "creator") + "\"") + n) + "\"") + B(S, "creator"))
216+ let V = [w(S, "address1"), w(S, "address2"), w(S, "address3"), w(S, "address4"), w(S, "address5"), w(S, "address6")]
217+ let W = T
218+ let X = DataEntry((H + g), toBase58String(J))
219+ let Y = DataEntry((G + g), toBase58String(J))
220+ let Z = DataEntry(((("data_MA_" + toBase58String(J)) + "_") + n), U)
221+ let aa = DataEntry(((n + "_MA_") + toBase58String(J)), ("SIGNED_" + toBase58String(J)))
222+ let ab = DataEntry(("addr_WHITELISTED_" + n), (N - (W + 1)))
223+ if ((K != "NONE"))
211224 then throw("This entry already exist")
212- else if ((I != "NONE"))
225+ else if ((L != "NONE"))
213226 then throw("This uuid already exist")
214- else if ((size(f) > 36))
215- then throw("Uuid is too long")
216- else if ((size(D) > 64))
217- then throw("Message-id is too long")
218- else if ((size(E) > 64))
219- then throw("Title is too long")
220- else if ((K > 0))
221- then if (((U + 1) > K))
227+ else if ((size(g) > 36))
228+ then throw("Uuid is too long, 36 characters max.")
229+ else if ((size(G) > 64))
230+ then throw("Message-id is too long, 64 characters max.")
231+ else if ((size(H) > 64))
232+ then throw("Title is too long, 64 characters max.")
233+ else if ((N > 0))
234+ then if (((W + 1) > N))
222235 then throw("You don't have enough certification credit")
223- else if ((U == 6))
224- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
225- else if ((U == 5))
226- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
227- else if ((U == 4))
228- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
229- else if ((U == 3))
230- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
231- else if ((U == 2))
232- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
233- else if ((U == 1))
234- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
236+ else if ((W == 6))
237+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c), ScriptTransfer(addressFromStringValue(V[5]), 0, c)]))
238+ else if ((W == 5))
239+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c)]))
240+ else if ((W == 4))
241+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c)]))
242+ else if ((W == 3))
243+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c)]))
244+ else if ((W == 2))
245+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c)]))
246+ else if ((W == 1))
247+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c)]))
235248 else throw("Wrong number of participants")
236- else if (!(J))
249+ else if (!(M))
237250 then {
238- let L = extract(C.payment)
239- let M = if (isDefined(L.amount))
240- then extract(L.amount)
251+ let O = extract(F.payment)
252+ let P = if (isDefined(O.amount))
253+ then extract(O.amount)
241254 else 0
242- let N = if (isDefined(L.assetId))
243- then extract(L.assetId)
255+ let Q = if (isDefined(O.assetId))
256+ then extract(O.assetId)
244257 else c
245- let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
246- if (((O * (U + 1)) > M))
247- then throw(("The price is wrong, it should be " + toString((O * (U + 1)))))
248- else if ((U == 6))
249- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
250- else if ((U == 5))
251- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
252- else if ((U == 4))
253- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
254- else if ((U == 3))
255- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
256- else if ((U == 2))
257- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
258- else if ((U == 1))
259- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
260- else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(U)))
258+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
259+ if (((R * (W + 1)) > P))
260+ then throw(("The price is wrong, it should be " + toString((R * (W + 1)))))
261+ else if ((W == 6))
262+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c), ScriptTransfer(addressFromStringValue(V[5]), 0, c)]))
263+ else if ((W == 5))
264+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c)]))
265+ else if ((W == 4))
266+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c)]))
267+ else if ((W == 3))
268+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c)]))
269+ else if ((W == 2))
270+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c)]))
271+ else if ((W == 1))
272+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c)]))
273+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(W)))
261274 }
262275 else throw("You are not allowed to do that")
263276 }
264277
265278
266279
267-@Callable(C)
268-func signAgreement (D,aa,F) = {
269- let L = extract(C.payment)
270- let M = extract(L.amount)
271- let G = extract(C.transactionId)
272- let J = (this == C.caller)
273- let ab = if (J)
274- then toString(addressFromPublicKey(fromBase58String(F)))
275- else toBase58String(C.caller.bytes)
276- let ac = p(((ab + "_MA_") + aa))
277- if (!(ac))
280+@Callable(F)
281+func signAgreement (G,ac,I) = {
282+ let O = extract(F.payment)
283+ let P = extract(O.amount)
284+ let J = extract(F.transactionId)
285+ let M = (this == F.caller)
286+ let ad = if (M)
287+ then toString(addressFromPublicKey(fromBase58String(I)))
288+ else toBase58String(F.caller.bytes)
289+ let ae = s(((ad + "_MA_") + ac))
290+ if (!(ae))
278291 then throw("Sorry there is no pending signature")
279- else ScriptResult(WriteSet([DataEntry(((ab + "_MA_") + aa), ("SIGNED_" + toBase58String(G)))]), TransferSet([ScriptTransfer(addressFromStringValue(ab), 0, c)]))
292+ else ScriptResult(WriteSet([DataEntry(((ad + "_MA_") + ac), ("SIGNED_" + toBase58String(J)))]), TransferSet([ScriptTransfer(addressFromStringValue(ad), 0, c)]))
280293 }
281294
282295
283296
284-@Callable(C)
297+@Callable(F)
285298 func usdnSignCredits () = {
286- let L = extract(C.payment)
287- let k = toBase58String(C.caller.bytes)
288- let ad = extract(L.assetId)
289- let M = extract(L.amount)
290- let ae = ((M * 2) / 1000000)
291- let K = j(k)
292- if ((toBase58String(ad) != "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"))
299+ let O = extract(F.payment)
300+ let n = toBase58String(F.caller.bytes)
301+ let af = extract(O.assetId)
302+ let P = extract(O.amount)
303+ let ag = ((P * 2) / 1000000)
304+ let N = m(n)
305+ if ((toBase58String(af) != d))
293306 then throw("Only USDN can be exchanged")
294- else if (if (((M % 1000000) != 0))
295- then ((M % 1000000) != 500000)
307+ else if (if (((P % 1000000) != 0))
308+ then ((P % 1000000) != 500000)
296309 else false)
297- then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(M), 6)) + ".") + takeRight(toString(M), 6)))
298- else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (K + ae))]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, ad)]))
310+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(P), 6)) + ".") + takeRight(toString(P), 6)))
311+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N + ag))]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, af)]))
299312 }
300313
301314
302-@Verifier(af)
303-func ag () = {
304- let g = af
305- if ($isInstanceOf(g, "InvokeScriptTransaction"))
315+@Verifier(ah)
316+func ai () = {
317+ let h = ah
318+ if ($isInstanceOf(h, "InvokeScriptTransaction"))
306319 then {
307- let ah = g
308- if (if (if ((ah.function == "fileCertification"))
320+ let aj = h
321+ if (if (if ((aj.function == "fileCertification"))
309322 then true
310- else (ah.function == "emailCertification"))
323+ else (aj.function == "emailCertification"))
311324 then true
312- else (ah.function == "createAgreement"))
313- then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[4])))
314- else if ((ah.function == "signAgreement"))
315- then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[2])))
316- else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
325+ else (aj.function == "createAgreement"))
326+ then sigVerify(ah.bodyBytes, ah.proofs[0], fromBase58String(C(aj.args[4])))
327+ else if ((aj.function == "signAgreement"))
328+ then sigVerify(ah.bodyBytes, ah.proofs[0], fromBase58String(C(aj.args[2])))
329+ else sigVerify(ah.bodyBytes, ah.proofs[0], ah.senderPublicKey)
317330 }
318- else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
331+ else sigVerify(ah.bodyBytes, ah.proofs[0], ah.senderPublicKey)
319332 }
320333
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = extract(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
77
88 let c = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
99
10-func d (e,f) = {
11- let g = getString(this, (e + f))
12- if ($isInstanceOf(g, "String"))
10+let d = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
11+
12+func e (f,g) = {
13+ let h = getString(this, (f + g))
14+ if ($isInstanceOf(h, "String"))
1315 then {
14- let h = g
15- h
16+ let i = h
17+ i
1618 }
1719 else "NONE"
1820 }
1921
2022
21-func i (f) = {
22- let g = getString(this, f)
23- if ($isInstanceOf(g, "String"))
23+func j (g,k) = {
24+ let h = getString(this, ((g + "@") + k))
25+ if ($isInstanceOf(h, "String"))
2426 then {
25- let h = g
26- h
27+ let i = h
28+ i
2729 }
2830 else "NONE"
2931 }
3032
3133
32-func j (k) = {
33- let g = getInteger(this, ("addr_WHITELISTED_" + k))
34- if ($isInstanceOf(g, "Int"))
34+func l (g) = {
35+ let h = getString(this, g)
36+ if ($isInstanceOf(h, "String"))
3537 then {
36- let h = g
37- h
38+ let i = h
39+ i
40+ }
41+ else "NONE"
42+ }
43+
44+
45+func m (n) = {
46+ let h = getInteger(this, ("addr_WHITELISTED_" + n))
47+ if ($isInstanceOf(h, "Int"))
48+ then {
49+ let i = h
50+ i
3851 }
3952 else 0
4053 }
4154
4255
43-func l (m) = if (if (if ((size(m) == 35))
44- then (take(m, 2) == "3P")
56+func o (p) = if (if (if ((size(p) == 35))
57+ then (take(p, 2) == "3P")
4558 else false)
4659 then true
47- else (take(m, 2) == "3N"))
60+ else (take(p, 2) == "3N"))
4861 then true
49- else (take(m, 2) == "3M")
62+ else (take(p, 2) == "3M")
5063
5164
52-func n (o,m) = if ((size(m) > 0))
53- then (o + 1)
54- else (o + 0)
65+func q (r,p) = if ((size(p) > 0))
66+ then (r + 1)
67+ else (r + 0)
5568
5669
57-func p (q) = {
58- let g = getString(this, q)
59- if ($isInstanceOf(g, "String"))
70+func s (t) = {
71+ let h = getString(this, t)
72+ if ($isInstanceOf(h, "String"))
6073 then {
61- let h = g
62- if ((h == "PENDING"))
74+ let i = h
75+ if ((i == "PENDING"))
6376 then true
6477 else false
6578 }
6679 else false
6780 }
6881
6982
70-func r (s) = take(drop(s, 1), value(indexOf(drop(s, 1), "\"")))
83+func u (v) = take(drop(v, 1), value(indexOf(drop(v, 1), "\"")))
7184
7285
73-func t (s,q) = {
74- let u = value(indexOf(s, (("\"" + q) + "\":")))
75- let v = drop(s, ((u + size(q)) + 3))
76- let w = r(v)
77- w
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
7891 }
7992
8093
81-func x (s,q) = {
82- let u = value(indexOf(s, (("\"" + q) + "\":")))
83- let v = take(s, ((u + size(q)) + 3))
84- v
94+func A (v,t) = {
95+ let x = value(indexOf(v, (("\"" + t) + "\":")))
96+ let y = take(v, ((x + size(t)) + 3))
97+ y
8598 }
8699
87100
88-func y (s,q) = {
89- let u = value(indexOf(s, (("\"" + q) + "\":")))
90- let v = takeRight(s, (size(s) - ((((u + size(q)) + 3) + 0) + 2)))
91- v
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
92105 }
93106
94107
95-func z (A) = {
96- let g = A
97- if ($isInstanceOf(g, "String"))
108+func C (D) = {
109+ let h = D
110+ if ($isInstanceOf(h, "String"))
98111 then {
99- let B = g
100- B
112+ let E = h
113+ E
101114 }
102115 else throw("Sponsored Public Key String expected")
103116 }
104117
105118
106-@Callable(C)
107-func fileCertification (D,E,f,v,F) = {
108- let G = extract(C.transactionId)
109- let H = d(D, f)
110- let I = i(f)
111- let J = (this == C.caller)
112- let k = if (J)
113- then toString(addressFromPublicKey(fromBase58String(F)))
114- else toBase58String(C.caller.bytes)
115- let K = j(k)
116- if ((H != "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"))
117130 then throw("This entry already exist")
118- else if ((I != "NONE"))
131+ else if ((L != "NONE"))
119132 then throw("This uuid already exist")
120- else if ((size(f) > 36))
121- then throw("Uuid is too long")
122- else if ((size(D) > 64))
123- then throw("Hash is too long")
124- else if ((size(E) > 64))
125- then throw("Title is too long")
126- else if ((K > 0))
127- then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
128- else if (!(J))
133+ else if ((size(g) > 36))
134+ then throw("Uuid is too long, 36 characters max.")
135+ else if ((size(G) > 64))
136+ then throw("Hash is too long, 64 characters max.")
137+ else if ((size(H) > 64))
138+ 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))
129142 then {
130- let L = extract(C.payment)
131- let M = extract(L.amount)
132- let N = if (isDefined(L.assetId))
133- then extract(L.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)
134147 else throw("Waves is not accepted as payment")
135- let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
136- if ((c != N))
148+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
149+ if ((c != Q))
137150 then throw("This token is not accepted at the moment")
138- else if (if ((M != O))
139- then (0 >= K)
151+ else if (if ((P != R))
152+ then (0 >= N)
140153 else false)
141154 then throw("The price is wrong")
142- else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((D + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_fc_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.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)]))
143156 }
144157 else throw("You are not allowed to do that")
145158 }
146159
147160
148161
149-@Callable(C)
150-func emailCertification (P,f,v,E,F) = {
151- let G = extract(C.transactionId)
152- let H = d(P, f)
153- let I = i(f)
154- let J = (this == C.caller)
155- let k = if (J)
156- then toString(addressFromPublicKey(fromBase58String(F)))
157- else toBase58String(C.caller.bytes)
158- let K = j(k)
159- if ((H != "NONE"))
162+@Callable(F)
163+func emailCertification (k,g,y,H,I) = {
164+ let J = extract(F.transactionId)
165+ let K = j(k, g)
166+ let L = l(g)
167+ let M = (this == F.caller)
168+ let n = if (M)
169+ then toString(addressFromPublicKey(fromBase58String(I)))
170+ else toBase58String(F.caller.bytes)
171+ let N = m(n)
172+ if ((K != "NONE"))
160173 then throw("This entry already exist")
161- else if ((I != "NONE"))
174+ else if ((L != "NONE"))
162175 then throw("This uuid already exist")
163- else if ((size(f) > 36))
164- then throw("Uuid is too long")
165- else if ((size(P) > 64))
166- then throw("Message-id is too long")
167- else if ((size(E) > 64))
168- then throw("Title is too long")
169- else if ((K > 0))
170- then ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(("addr_WHITELISTED_" + k), (K - 1)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c)]))
171- else if (!(J))
176+ else if ((size(g) > 36))
177+ then throw("Uuid is too long, 36 characters max.")
178+ else if ((size(k) > 64))
179+ then throw("Domain is too long, 64 characters max.")
180+ else if ((size(H) > 64))
181+ then throw("Title is too long, 64 characters max.")
182+ else if ((N > 0))
183+ 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)]))
184+ else if (!(M))
172185 then {
173- let L = extract(C.payment)
174- let M = extract(L.amount)
175- let N = if (isDefined(L.assetId))
176- then extract(L.assetId)
186+ let O = extract(F.payment)
187+ let P = extract(O.amount)
188+ let Q = if (isDefined(O.assetId))
189+ then extract(O.assetId)
177190 else throw("Waves is not accepted as payment")
178- let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
179- if ((c != N))
191+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
192+ if ((c != Q))
180193 then throw("This token is not accepted at the moment")
181- else if (if ((M != O))
182- then (0 >= K)
194+ else if (if ((P != R))
195+ then (0 >= N)
183196 else false)
184197 then throw("The price is wrong")
185- else ScriptResult(WriteSet([DataEntry(f, toBase58String(G)), DataEntry((P + f), toBase58String(G)), DataEntry((E + f), toBase58String(G)), DataEntry(((("data_ec_" + toBase58String(G)) + "_") + k), v)]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, L.assetId)]))
198+ 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)]))
186199 }
187200 else throw("You are not allowed to do that")
188201 }
189202
190203
191204
192-@Callable(C)
193-func createAgreement (D,E,Q,R,F,f) = {
194- let G = extract(C.transactionId)
195- let H = d(D, f)
196- let I = i(f)
197- let J = (this == C.caller)
198- let k = if (J)
199- then toString(addressFromPublicKey(fromBase58String(F)))
200- else toBase58String(C.caller.bytes)
201- let K = j(k)
202- let S = ((((x(Q, "creator") + "\"") + k) + "\"") + y(Q, "creator"))
203- let T = [t(Q, "address1"), t(Q, "address2"), t(Q, "address3"), t(Q, "address4"), t(Q, "address5"), t(Q, "address6")]
204- let U = R
205- let V = DataEntry((E + f), toBase58String(G))
206- let W = DataEntry((D + f), toBase58String(G))
207- let X = DataEntry(((("data_MA_" + toBase58String(G)) + "_") + k), S)
208- let Y = DataEntry(((k + "_MA_") + toBase58String(G)), ("SIGNED_" + toBase58String(G)))
209- let Z = DataEntry(("addr_WHITELISTED_" + k), (K - (U + 1)))
210- if ((H != "NONE"))
205+@Callable(F)
206+func createAgreement (G,H,S,T,I,g) = {
207+ let J = extract(F.transactionId)
208+ let K = e(G, g)
209+ let L = l(g)
210+ let M = (this == F.caller)
211+ let n = if (M)
212+ then toString(addressFromPublicKey(fromBase58String(I)))
213+ else toBase58String(F.caller.bytes)
214+ let N = m(n)
215+ let U = ((((A(S, "creator") + "\"") + n) + "\"") + B(S, "creator"))
216+ let V = [w(S, "address1"), w(S, "address2"), w(S, "address3"), w(S, "address4"), w(S, "address5"), w(S, "address6")]
217+ let W = T
218+ let X = DataEntry((H + g), toBase58String(J))
219+ let Y = DataEntry((G + g), toBase58String(J))
220+ let Z = DataEntry(((("data_MA_" + toBase58String(J)) + "_") + n), U)
221+ let aa = DataEntry(((n + "_MA_") + toBase58String(J)), ("SIGNED_" + toBase58String(J)))
222+ let ab = DataEntry(("addr_WHITELISTED_" + n), (N - (W + 1)))
223+ if ((K != "NONE"))
211224 then throw("This entry already exist")
212- else if ((I != "NONE"))
225+ else if ((L != "NONE"))
213226 then throw("This uuid already exist")
214- else if ((size(f) > 36))
215- then throw("Uuid is too long")
216- else if ((size(D) > 64))
217- then throw("Message-id is too long")
218- else if ((size(E) > 64))
219- then throw("Title is too long")
220- else if ((K > 0))
221- then if (((U + 1) > K))
227+ else if ((size(g) > 36))
228+ then throw("Uuid is too long, 36 characters max.")
229+ else if ((size(G) > 64))
230+ then throw("Message-id is too long, 64 characters max.")
231+ else if ((size(H) > 64))
232+ then throw("Title is too long, 64 characters max.")
233+ else if ((N > 0))
234+ then if (((W + 1) > N))
222235 then throw("You don't have enough certification credit")
223- else if ((U == 6))
224- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
225- else if ((U == 5))
226- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
227- else if ((U == 4))
228- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
229- else if ((U == 3))
230- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
231- else if ((U == 2))
232- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
233- else if ((U == 1))
234- then ScriptResult(WriteSet([V, W, X, Y, Z, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(k), 0, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
236+ else if ((W == 6))
237+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c), ScriptTransfer(addressFromStringValue(V[5]), 0, c)]))
238+ else if ((W == 5))
239+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c)]))
240+ else if ((W == 4))
241+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c)]))
242+ else if ((W == 3))
243+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c)]))
244+ else if ((W == 2))
245+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c)]))
246+ else if ((W == 1))
247+ then ScriptResult(WriteSet([X, Y, Z, aa, ab, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(n), 0, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c)]))
235248 else throw("Wrong number of participants")
236- else if (!(J))
249+ else if (!(M))
237250 then {
238- let L = extract(C.payment)
239- let M = if (isDefined(L.amount))
240- then extract(L.amount)
251+ let O = extract(F.payment)
252+ let P = if (isDefined(O.amount))
253+ then extract(O.amount)
241254 else 0
242- let N = if (isDefined(L.assetId))
243- then extract(L.assetId)
255+ let Q = if (isDefined(O.assetId))
256+ then extract(O.assetId)
244257 else c
245- let O = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(N))))
246- if (((O * (U + 1)) > M))
247- then throw(("The price is wrong, it should be " + toString((O * (U + 1)))))
248- else if ((U == 6))
249- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[5] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c), ScriptTransfer(addressFromStringValue(T[5]), 0, c)]))
250- else if ((U == 5))
251- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[4] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c), ScriptTransfer(addressFromStringValue(T[4]), 0, c)]))
252- else if ((U == 4))
253- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[3] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c), ScriptTransfer(addressFromStringValue(T[3]), 0, c)]))
254- else if ((U == 3))
255- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[2] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c), ScriptTransfer(addressFromStringValue(T[2]), 0, c)]))
256- else if ((U == 2))
257- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING"), DataEntry(((T[1] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c), ScriptTransfer(addressFromStringValue(T[1]), 0, c)]))
258- else if ((U == 1))
259- then ScriptResult(WriteSet([V, W, X, Y, DataEntry(((T[0] + "_MA_") + toBase58String(G)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, c), ScriptTransfer(addressFromStringValue(T[0]), 0, c)]))
260- else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(U)))
258+ let R = getIntegerValue(a, ("certification_fee_" + toBase58String(extract(Q))))
259+ if (((R * (W + 1)) > P))
260+ then throw(("The price is wrong, it should be " + toString((R * (W + 1)))))
261+ else if ((W == 6))
262+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[5] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c), ScriptTransfer(addressFromStringValue(V[5]), 0, c)]))
263+ else if ((W == 5))
264+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[4] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c), ScriptTransfer(addressFromStringValue(V[4]), 0, c)]))
265+ else if ((W == 4))
266+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[3] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c), ScriptTransfer(addressFromStringValue(V[3]), 0, c)]))
267+ else if ((W == 3))
268+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[2] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c), ScriptTransfer(addressFromStringValue(V[2]), 0, c)]))
269+ else if ((W == 2))
270+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING"), DataEntry(((V[1] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c), ScriptTransfer(addressFromStringValue(V[1]), 0, c)]))
271+ else if ((W == 1))
272+ then ScriptResult(WriteSet([X, Y, Z, aa, DataEntry(((V[0] + "_MA_") + toBase58String(J)), "PENDING")]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, c), ScriptTransfer(addressFromStringValue(V[0]), 0, c)]))
273+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(W)))
261274 }
262275 else throw("You are not allowed to do that")
263276 }
264277
265278
266279
267-@Callable(C)
268-func signAgreement (D,aa,F) = {
269- let L = extract(C.payment)
270- let M = extract(L.amount)
271- let G = extract(C.transactionId)
272- let J = (this == C.caller)
273- let ab = if (J)
274- then toString(addressFromPublicKey(fromBase58String(F)))
275- else toBase58String(C.caller.bytes)
276- let ac = p(((ab + "_MA_") + aa))
277- if (!(ac))
280+@Callable(F)
281+func signAgreement (G,ac,I) = {
282+ let O = extract(F.payment)
283+ let P = extract(O.amount)
284+ let J = extract(F.transactionId)
285+ let M = (this == F.caller)
286+ let ad = if (M)
287+ then toString(addressFromPublicKey(fromBase58String(I)))
288+ else toBase58String(F.caller.bytes)
289+ let ae = s(((ad + "_MA_") + ac))
290+ if (!(ae))
278291 then throw("Sorry there is no pending signature")
279- else ScriptResult(WriteSet([DataEntry(((ab + "_MA_") + aa), ("SIGNED_" + toBase58String(G)))]), TransferSet([ScriptTransfer(addressFromStringValue(ab), 0, c)]))
292+ else ScriptResult(WriteSet([DataEntry(((ad + "_MA_") + ac), ("SIGNED_" + toBase58String(J)))]), TransferSet([ScriptTransfer(addressFromStringValue(ad), 0, c)]))
280293 }
281294
282295
283296
284-@Callable(C)
297+@Callable(F)
285298 func usdnSignCredits () = {
286- let L = extract(C.payment)
287- let k = toBase58String(C.caller.bytes)
288- let ad = extract(L.assetId)
289- let M = extract(L.amount)
290- let ae = ((M * 2) / 1000000)
291- let K = j(k)
292- if ((toBase58String(ad) != "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"))
299+ let O = extract(F.payment)
300+ let n = toBase58String(F.caller.bytes)
301+ let af = extract(O.assetId)
302+ let P = extract(O.amount)
303+ let ag = ((P * 2) / 1000000)
304+ let N = m(n)
305+ if ((toBase58String(af) != d))
293306 then throw("Only USDN can be exchanged")
294- else if (if (((M % 1000000) != 0))
295- then ((M % 1000000) != 500000)
307+ else if (if (((P % 1000000) != 0))
308+ then ((P % 1000000) != 500000)
296309 else false)
297- then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(M), 6)) + ".") + takeRight(toString(M), 6)))
298- else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + k), (K + ae))]), TransferSet([ScriptTransfer(addressFromStringValue(b), M, ad)]))
310+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(P), 6)) + ".") + takeRight(toString(P), 6)))
311+ else ScriptResult(WriteSet([DataEntry(("addr_WHITELISTED_" + n), (N + ag))]), TransferSet([ScriptTransfer(addressFromStringValue(b), P, af)]))
299312 }
300313
301314
302-@Verifier(af)
303-func ag () = {
304- let g = af
305- if ($isInstanceOf(g, "InvokeScriptTransaction"))
315+@Verifier(ah)
316+func ai () = {
317+ let h = ah
318+ if ($isInstanceOf(h, "InvokeScriptTransaction"))
306319 then {
307- let ah = g
308- if (if (if ((ah.function == "fileCertification"))
320+ let aj = h
321+ if (if (if ((aj.function == "fileCertification"))
309322 then true
310- else (ah.function == "emailCertification"))
323+ else (aj.function == "emailCertification"))
311324 then true
312- else (ah.function == "createAgreement"))
313- then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[4])))
314- else if ((ah.function == "signAgreement"))
315- then sigVerify(af.bodyBytes, af.proofs[0], fromBase58String(z(ah.args[2])))
316- else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
325+ else (aj.function == "createAgreement"))
326+ then sigVerify(ah.bodyBytes, ah.proofs[0], fromBase58String(C(aj.args[4])))
327+ else if ((aj.function == "signAgreement"))
328+ then sigVerify(ah.bodyBytes, ah.proofs[0], fromBase58String(C(aj.args[2])))
329+ else sigVerify(ah.bodyBytes, ah.proofs[0], ah.senderPublicKey)
317330 }
318- else sigVerify(af.bodyBytes, af.proofs[0], af.senderPublicKey)
331+ else sigVerify(ah.bodyBytes, ah.proofs[0], ah.senderPublicKey)
319332 }
320333

github/deemru/w8io/026f985 
234.00 ms