tx · 8FCBdbJytynKXN6uFDQhu5adeQhTErDFK9wGXLSnB4av

3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw:  -0.01000000 Waves

2021.08.30 15:06 [1681055] smart account 3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw > SELF 0.00000000 Waves

{ "type": 13, "id": "8FCBdbJytynKXN6uFDQhu5adeQhTErDFK9wGXLSnB4av", "fee": 1000000, "feeAssetId": null, "timestamp": 1630325204429, "version": 2, "chainId": 84, "sender": "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw", "senderPublicKey": "J4oyCYPVt7k14x7c4W8XAAWTJS4WKyxwJGZ8aqYtuL2S", "proofs": [ "4EgbYzpDRSb9A7XdZ4KYu2iendvMhLgkvWvSvf56o8hAhdrCehMwMFv52gfg2gATBswCH24F8tirnxbxRr1D2qKH" ], "script": "base64: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", "height": 1681055, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: Ax5c5ykGHYWX9zu8vwQFdhGZtAfrePTg9MwKiSSur926 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let storageVerifier = value(addressFromString("3PAjrTqYLgFG24kRwiyU34noumz4pz2kXPK"))
5+
6+let bank = "3PFacsvuU9sn2ZstaLCWKWn48yT1vfARRRU"
7+
8+let acceptedToken = base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y'
9+
10+let usdnID = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
11+
12+func checkEntry (prefix,uuid) = match getString(this, (prefix + uuid)) {
13+ case a: String =>
14+ a
15+ case _ =>
16+ "NONE"
17+}
18+
19+
20+func checkEntryEmail (uuid,domain) = match getString(this, ((uuid + "@") + domain)) {
21+ case a: String =>
22+ a
23+ case _ =>
24+ "NONE"
25+}
26+
27+
28+func checkUUID (uuid) = match getString(this, uuid) {
29+ case a: String =>
30+ a
31+ case _ =>
32+ "NONE"
33+}
34+
35+
36+func checkIfWhiteListed (callerAddress) = match getInteger(this, ("addr_WHITELISTED_" + callerAddress)) {
37+ case a: Int =>
38+ a
39+ case _ =>
40+ 0
41+}
42+
43+
44+func checkIfPendingToSign (key) = match getString(this, key) {
45+ case a: String =>
46+ if ((a == "PENDING"))
47+ then true
48+ else false
49+ case _ =>
50+ false
51+}
52+
53+
54+func getJsonBeforeValue (json,key) = {
55+ let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
56+ let data = take(json, ((keyIndex + size(key)) + 3))
57+ data
58+ }
59+
60+
61+func getJsonAfterValue (json,key) = {
62+ let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
63+ let data = takeRight(json, (size(json) - ((((keyIndex + size(key)) + 3) + 0) + 2)))
64+ data
65+ }
66+
67+
68+func asString (bv) = match bv {
69+ case bv0: String =>
70+ bv0
71+ case _ =>
72+ throw("Sponsored Public Key String expected")
73+}
74+
75+
76+@Callable(invoke)
77+func fileCertification (hash,title,uuid,data,signerPubKey) = {
78+ let id = value(invoke.transactionId)
79+ let entryExist = checkEntry(hash, uuid)
80+ let uuidExist = checkUUID(uuid)
81+ let callerIsDapp = (this == invoke.caller)
82+ let callerAddress = if (callerIsDapp)
83+ then toString(addressFromPublicKey(fromBase58String(signerPubKey)))
84+ else toBase58String(invoke.caller.bytes)
85+ let callerIsWhiteListedNum = checkIfWhiteListed(callerAddress)
86+ if ((entryExist != "NONE"))
87+ then throw("This entry already exist")
88+ else if ((uuidExist != "NONE"))
89+ then throw("This uuid already exist")
90+ else if ((size(uuid) != 36))
91+ then throw("Uuid should be 36 characters.")
92+ else if ((size(hash) != 64))
93+ then throw("Hash should be 64 characters.")
94+ else if ((size(title) > 64))
95+ then throw("Title is too long, 64 characters max.")
96+ else if ((callerIsWhiteListedNum > 0))
97+ then [StringEntry(uuid, toBase58String(id)), StringEntry((hash + uuid), toBase58String(id)), StringEntry((title + uuid), toBase58String(id)), IntegerEntry(("addr_WHITELISTED_" + callerAddress), (callerIsWhiteListedNum - 1)), StringEntry(((("data_fc_" + toBase58String(id)) + "_") + callerAddress), data), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken)]
98+ else if (!(callerIsDapp))
99+ then {
100+ let payment = value(invoke.payments[0])
101+ let amount = value(payment.amount)
102+ let paymentAssetId = if (isDefined(payment.assetId))
103+ then value(payment.assetId)
104+ else throw("Waves is not accepted as payment")
105+ let currentPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
106+ if ((acceptedToken != paymentAssetId))
107+ then throw("This token is not accepted at the moment")
108+ else if (if ((amount != currentPrice))
109+ then (0 >= callerIsWhiteListedNum)
110+ else false)
111+ then throw("The price is wrong")
112+ else [StringEntry(uuid, toBase58String(id)), StringEntry((hash + uuid), toBase58String(id)), StringEntry((title + uuid), toBase58String(id)), StringEntry(((("data_fc_" + toBase58String(id)) + "_") + callerAddress), data), ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)]
113+ }
114+ else throw("You are not allowed to do that")
115+ }
116+
117+
118+
119+@Callable(invoke)
120+func revokeCertification (certificationId,signerPubKey) = {
121+ let id = value(invoke.transactionId)
122+ let callerIsDapp = (this == invoke.caller)
123+ let callerAddress = if (callerIsDapp)
124+ then toString(addressFromPublicKey(fromBase58String(signerPubKey)))
125+ else toBase58String(invoke.caller.bytes)
126+ let entryExist = match getString(this, ((("data_fc_" + certificationId) + "_") + callerAddress)) {
127+ case a: String =>
128+ a
129+ case _ =>
130+ "NONE"
131+ }
132+ let isRevoked = match getString(this, ("STATUS_FC_" + certificationId)) {
133+ case a: String =>
134+ a
135+ case _ =>
136+ "NONE"
137+ }
138+ let callerIsWhiteListedNum = checkIfWhiteListed(callerAddress)
139+ let newJson = (((dropRight(entryExist, 1) + ",\"status\":\"REVOKED_") + toBase58String(id)) + "\"}")
140+ if ((isRevoked != "NONE"))
141+ then throw("This certification have already been revoked.")
142+ else if ((entryExist == "NONE"))
143+ then throw("You cannot change the status of this certification.")
144+ else if ((callerIsWhiteListedNum > 0))
145+ then [IntegerEntry(("addr_WHITELISTED_" + callerAddress), (callerIsWhiteListedNum - 1)), StringEntry(("STATUS_FC_" + certificationId), ("REVOKED_" + toBase58String(id))), StringEntry(((("data_fc_" + certificationId) + "_") + callerAddress), newJson)]
146+ else if (!(callerIsDapp))
147+ then {
148+ let payment = value(invoke.payments[0])
149+ let amount = value(payment.amount)
150+ let paymentAssetId = if (isDefined(payment.assetId))
151+ then value(payment.assetId)
152+ else throw("Waves is not accepted as payment")
153+ let currentPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
154+ if ((acceptedToken != paymentAssetId))
155+ then throw("This token is not accepted at the moment")
156+ else if (if ((amount != currentPrice))
157+ then (0 >= callerIsWhiteListedNum)
158+ else false)
159+ then throw("The price is wrong")
160+ else [StringEntry(("STATUS_FC_" + certificationId), ("REVOKED_" + toBase58String(id))), StringEntry(((("data_fc_" + certificationId) + "_") + callerAddress), newJson), ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)]
161+ }
162+ else throw("You are not allowed to do that")
163+ }
164+
165+
166+
167+@Callable(invoke)
168+func emailCertification (domain,title,uuid,data,signerPubKey) = {
169+ let id = value(invoke.transactionId)
170+ let entryExist = checkEntryEmail(domain, uuid)
171+ let uuidExist = checkUUID(uuid)
172+ let callerIsDapp = (this == invoke.caller)
173+ let callerAddress = if (callerIsDapp)
174+ then toString(addressFromPublicKey(fromBase58String(signerPubKey)))
175+ else toBase58String(invoke.caller.bytes)
176+ let callerIsWhiteListedNum = checkIfWhiteListed(callerAddress)
177+ if ((entryExist != "NONE"))
178+ then throw("This entry already exist")
179+ else if ((uuidExist != "NONE"))
180+ then throw("This uuid already exist")
181+ else if ((size(uuid) > 36))
182+ then throw("Uuid is too long, 36 characters max.")
183+ else if ((size(domain) > 64))
184+ then throw("Domain is too long, 64 characters max.")
185+ else if ((size(title) > 64))
186+ then throw("Title is too long, 64 characters max.")
187+ else if ((callerIsWhiteListedNum > 0))
188+ then [StringEntry(uuid, toBase58String(id)), StringEntry(((uuid + "@") + domain), toBase58String(id)), StringEntry((title + uuid), toBase58String(id)), IntegerEntry(("addr_WHITELISTED_" + callerAddress), (callerIsWhiteListedNum - 1)), StringEntry(((("data_ec_" + toBase58String(id)) + "_") + callerAddress), data), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken)]
189+ else if (!(callerIsDapp))
190+ then {
191+ let payment = value(invoke.payments[0])
192+ let amount = value(payment.amount)
193+ let paymentAssetId = if (isDefined(payment.assetId))
194+ then value(payment.assetId)
195+ else throw("Waves is not accepted as payment")
196+ let currentPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
197+ if ((acceptedToken != paymentAssetId))
198+ then throw("This token is not accepted at the moment")
199+ else if (if ((amount != currentPrice))
200+ then (0 >= callerIsWhiteListedNum)
201+ else false)
202+ then throw("The price is wrong")
203+ else [StringEntry(uuid, toBase58String(id)), StringEntry(((uuid + "@") + domain), toBase58String(id)), StringEntry((title + uuid), toBase58String(id)), StringEntry(((("data_ec_" + toBase58String(id)) + "_") + callerAddress), data), ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)]
204+ }
205+ else throw("You are not allowed to do that")
206+ }
207+
208+
209+
210+@Callable(invoke)
211+func createAgreement (hash,title,stringifiedJSON,counterParts,signerPubKey,uuid) = {
212+ let id = value(invoke.transactionId)
213+ let entryExist = checkEntry(hash, uuid)
214+ let uuidExist = checkUUID(uuid)
215+ let callerIsDapp = (this == invoke.caller)
216+ let callerAddress = if (callerIsDapp)
217+ then toString(addressFromPublicKey(fromBase58String(signerPubKey)))
218+ else toBase58String(invoke.caller.bytes)
219+ let callerIsWhiteListedNum = checkIfWhiteListed(callerAddress)
220+ let JSON = ((((getJsonBeforeValue(stringifiedJSON, "creator") + "\"") + callerAddress) + "\"") + getJsonAfterValue(stringifiedJSON, "creator"))
221+ let addressesArray = split(counterParts, ",")
222+ let totalAddresses = size(addressesArray)
223+ let globalDataTitle = StringEntry((title + uuid), toBase58String(id))
224+ let globalDataHash = StringEntry((hash + uuid), toBase58String(id))
225+ let globalDataJson = StringEntry(((("data_MA_" + toBase58String(id)) + "_") + callerAddress), JSON)
226+ let globalDataOwner = StringEntry(((callerAddress + "_MA_") + toBase58String(id)), ("SIGNED_" + toBase58String(id)))
227+ let dataWhiteListed = IntegerEntry(("addr_WHITELISTED_" + callerAddress), (callerIsWhiteListedNum - (totalAddresses + 1)))
228+ if ((entryExist != "NONE"))
229+ then throw("This entry already exist")
230+ else if ((uuidExist != "NONE"))
231+ then throw("This uuid already exist")
232+ else if ((size(uuid) > 36))
233+ then throw("Uuid is too long, 36 characters max.")
234+ else if ((size(hash) > 64))
235+ then throw("Message-id is too long, 64 characters max.")
236+ else if ((size(title) > 64))
237+ then throw("Title is too long, 64 characters max.")
238+ else if ((callerIsWhiteListedNum > 0))
239+ then if (((totalAddresses + 1) > callerIsWhiteListedNum))
240+ then throw("You don't have enough certification credit")
241+ else if ((totalAddresses == 6))
242+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, dataWhiteListed, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[3] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[4] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[5] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[3]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[4]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[5]), 0, acceptedToken)]
243+ else if ((totalAddresses == 5))
244+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, dataWhiteListed, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[3] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[4] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[3]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[4]), 0, acceptedToken)]
245+ else if ((totalAddresses == 4))
246+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, dataWhiteListed, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[3] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[3]), 0, acceptedToken)]
247+ else if ((totalAddresses == 3))
248+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, dataWhiteListed, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken)]
249+ else if ((totalAddresses == 2))
250+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, dataWhiteListed, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken)]
251+ else if ((totalAddresses == 1))
252+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, dataWhiteListed, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(callerAddress), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken)]
253+ else throw("Wrong number of participants")
254+ else if (!(callerIsDapp))
255+ then {
256+ let payment = value(invoke.payments[0])
257+ let amount = if (isDefined(payment.amount))
258+ then value(payment.amount)
259+ else 0
260+ let paymentAssetId = if (isDefined(payment.assetId))
261+ then value(payment.assetId)
262+ else acceptedToken
263+ let currentPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
264+ if (((currentPrice * (totalAddresses + 1)) > amount))
265+ then throw(("The price is wrong, it should be " + toString((currentPrice * (totalAddresses + 1)))))
266+ else if ((totalAddresses == 6))
267+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[3] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[4] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[5] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(bank), amount, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[3]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[4]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[5]), 0, acceptedToken)]
268+ else if ((totalAddresses == 5))
269+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[3] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[4] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(bank), amount, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[3]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[4]), 0, acceptedToken)]
270+ else if ((totalAddresses == 4))
271+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[3] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(bank), amount, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[3]), 0, acceptedToken)]
272+ else if ((totalAddresses == 3))
273+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[2] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(bank), amount, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[2]), 0, acceptedToken)]
274+ else if ((totalAddresses == 2))
275+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), StringEntry(((addressesArray[1] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(bank), amount, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[1]), 0, acceptedToken)]
276+ else if ((totalAddresses == 1))
277+ then [globalDataTitle, globalDataHash, globalDataJson, globalDataOwner, StringEntry(((addressesArray[0] + "_MA_") + toBase58String(id)), "PENDING"), ScriptTransfer(addressFromStringValue(bank), amount, acceptedToken), ScriptTransfer(addressFromStringValue(addressesArray[0]), 0, acceptedToken)]
278+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(totalAddresses)))
279+ }
280+ else throw("You are not allowed to do that")
281+ }
282+
283+
284+
285+@Callable(invoke)
286+func signAgreement (hash,agreementId,signerPubKey) = {
287+ let payment = value(invoke.payments[0])
288+ let amount = value(payment.amount)
289+ let id = value(invoke.transactionId)
290+ let callerIsDapp = (this == invoke.caller)
291+ let signer = if (callerIsDapp)
292+ then toString(addressFromPublicKey(fromBase58String(signerPubKey)))
293+ else toBase58String(invoke.caller.bytes)
294+ let signingRequestExist = checkIfPendingToSign(((signer + "_MA_") + agreementId))
295+ if (!(signingRequestExist))
296+ then throw("Sorry there is no pending signature")
297+ else [StringEntry(((signer + "_MA_") + agreementId), ("SIGNED_" + toBase58String(id))), ScriptTransfer(addressFromStringValue(signer), 0, acceptedToken)]
298+ }
299+
300+
301+
302+@Callable(invoke)
303+func usdnSignCredits () = {
304+ let payment = value(invoke.payments[0])
305+ let callerAddress = toBase58String(invoke.caller.bytes)
306+ let tokenId = value(payment.assetId)
307+ let amount = value(payment.amount)
308+ let numberOfCredits = ((amount * 2) / 1000000)
309+ let callerIsWhiteListedNum = checkIfWhiteListed(callerAddress)
310+ if ((toBase58String(tokenId) != usdnID))
311+ then throw("Only USDN can be exchanged")
312+ else if (if (((amount % 1000000) != 0))
313+ then ((amount % 1000000) != 500000)
314+ else false)
315+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(amount), 6)) + ".") + takeRight(toString(amount), 6)))
316+ else [IntegerEntry(("addr_WHITELISTED_" + callerAddress), (callerIsWhiteListedNum + numberOfCredits)), ScriptTransfer(addressFromStringValue(bank), amount, tokenId)]
317+ }
318+
319+
320+@Verifier(tx)
321+func verifier () = match tx {
322+ case inv: InvokeScriptTransaction =>
323+ if (if (if ((inv.function == "fileCertification"))
324+ then true
325+ else (inv.function == "emailCertification"))
326+ then true
327+ else (inv.function == "createAgreement"))
328+ then sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(asString(inv.args[4])))
329+ else if ((inv.function == "signAgreement"))
330+ then sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(asString(inv.args[2])))
331+ else if ((inv.function == "revokeCertification"))
332+ then sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(asString(inv.args[1])))
333+ else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
334+ case _ =>
335+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
336+}
337+

github/deemru/w8io/c3f4982 
38.71 ms