tx · 7tR92wrGrPZnQmj3JSivqhxHn2mdsrxvaatQfRzsQ7qj

3Mzms5gHUDYufDRjSVN7g9DcCMG77pzFN4h:  -0.01400000 Waves

2021.09.29 08:35 [1723819] smart account 3Mzms5gHUDYufDRjSVN7g9DcCMG77pzFN4h > SELF 0.00000000 Waves

{ "type": 13, "id": "7tR92wrGrPZnQmj3JSivqhxHn2mdsrxvaatQfRzsQ7qj", "fee": 1400000, "feeAssetId": null, "timestamp": 1632893752549, "version": 2, "chainId": 84, "sender": "3Mzms5gHUDYufDRjSVN7g9DcCMG77pzFN4h", "senderPublicKey": "CU8dJ2mJQjVBWaDHwXjPztuVdy9XAyAnTuqSCKuNPARn", "proofs": [ "52yvtKFEdxUzhNv55qkeGHHSEGsNsTxZP4WioSFLWHyrFC9e53yjHYTCKD5gb1rVtnQ8tdy85q6BowMz6YGBXFtE" ], "script": "base64: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", "height": 1723819, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6hxkDUmwFCNq3KcJgrwBsXWybdESaPvQt4urz2icGUbv Next: Atw1mY2PkAnrYuQrUPX2XobfSXsRpW5qVtrGGxRfNHdj Diff:
OldNewDifferences
115115 then throw("Accept SIGN token only")
116116 else {
117117 let currentSIGNPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
118- let numCredit = (currentSIGNPrice / amount)
119- if ((0 >= numCredit))
120- then throw("Not enough for at least 1 credit")
121- else [IntegerEntry(("credits_" + toBase58String(acceptedToken)), numCredit), ScriptTransfer(addressFromStringValue(signDapp), amount, payment.assetId)]
118+ if (true)
119+ then throw(("Uy! " + toString(currentSIGNPrice)))
120+ else {
121+ let numCredit = (currentSIGNPrice / amount)
122+ if ((0 >= numCredit))
123+ then throw("Not enough for at least 1 credit")
124+ else [IntegerEntry(("credits_" + toBase58String(acceptedToken)), numCredit), ScriptTransfer(addressFromStringValue(signDapp), amount, payment.assetId)]
125+ }
122126 }
123127 }
124128
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let storageVerifier = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let signAdmin = "3N1wPgHFtezmRVBaqoojP8XJwTkark4hbif"
77
88 let feeAdmin = "3N1wPgHFtezmRVBaqoojP8XJwTkark4hbif"
99
1010 let bank = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
1212 let signToken = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1313
1414 let acceptedToken = base58'7bLUm2XNLWvVwgC9aPp9fNNAMVtbGwhwkqdgomJAgVbC'
1515
1616 let usdnID = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1717
1818 let signDapp = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1919
2020 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
2121
2222
2323 func checkEntry (prefix,uuid) = match getString(this, (prefix + uuid)) {
2424 case a: String =>
2525 a
2626 case _ =>
2727 "NONE"
2828 }
2929
3030
3131 func checkEntryEmail (uuid,domain) = match getString(this, ((uuid + "@") + domain)) {
3232 case a: String =>
3333 a
3434 case _ =>
3535 "NONE"
3636 }
3737
3838
3939 func checkUUID (uuid) = match getString(this, uuid) {
4040 case a: String =>
4141 a
4242 case _ =>
4343 "NONE"
4444 }
4545
4646
4747 func isAdress (addr) = if (if (if ((size(addr) == 35))
4848 then (take(addr, 2) == "3P")
4949 else false)
5050 then true
5151 else (take(addr, 2) == "3N"))
5252 then true
5353 else (take(addr, 2) == "3M")
5454
5555
5656 func countParties (accumulator,addr) = if ((size(addr) > 0))
5757 then (accumulator + 1)
5858 else (accumulator + 0)
5959
6060
6161 func checkIfPendingToSign (key) = match getString(this, key) {
6262 case a: String =>
6363 if ((a == "PENDING"))
6464 then true
6565 else false
6666 case _ =>
6767 false
6868 }
6969
7070
7171 func getValueString (json) = take(drop(json, 1), value(indexOf(drop(json, 1), "\"")))
7272
7373
7474 func getValue (json,key) = {
7575 let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
7676 let data = drop(json, ((keyIndex + size(key)) + 3))
7777 let jsonValue = getValueString(data)
7878 jsonValue
7979 }
8080
8181
8282 func getJsonBeforeValue (json,key) = {
8383 let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
8484 let data = take(json, ((keyIndex + size(key)) + 3))
8585 data
8686 }
8787
8888
8989 func getJsonAfterValue (json,key) = {
9090 let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
9191 let data = takeRight(json, (size(json) - ((((keyIndex + size(key)) + 3) + 0) + 2)))
9292 data
9393 }
9494
9595
9696 @Callable(i)
9797 func setFee (fee) = {
9898 let callerAddress = toBase58String(i.caller.bytes)
9999 if ((callerAddress == feeAdmin))
100100 then [IntegerEntry(("certification_fee_" + toBase58String(acceptedToken)), fee)]
101101 else throw("You are not allowed to change fee")
102102 }
103103
104104
105105
106106 @Callable(i)
107107 func refillCredits () = {
108108 let callerAddress = toBase58String(i.caller.bytes)
109109 let payment = value(i.payments[0])
110110 let amount = value(payment.amount)
111111 let paymentAssetId = if (isDefined(payment.assetId))
112112 then value(payment.assetId)
113113 else throw("Accept SIGN token only")
114114 if ((signToken != paymentAssetId))
115115 then throw("Accept SIGN token only")
116116 else {
117117 let currentSIGNPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
118- let numCredit = (currentSIGNPrice / amount)
119- if ((0 >= numCredit))
120- then throw("Not enough for at least 1 credit")
121- else [IntegerEntry(("credits_" + toBase58String(acceptedToken)), numCredit), ScriptTransfer(addressFromStringValue(signDapp), amount, payment.assetId)]
118+ if (true)
119+ then throw(("Uy! " + toString(currentSIGNPrice)))
120+ else {
121+ let numCredit = (currentSIGNPrice / amount)
122+ if ((0 >= numCredit))
123+ then throw("Not enough for at least 1 credit")
124+ else [IntegerEntry(("credits_" + toBase58String(acceptedToken)), numCredit), ScriptTransfer(addressFromStringValue(signDapp), amount, payment.assetId)]
125+ }
122126 }
123127 }
124128
125129
126130
127131 @Callable(invoke)
128132 func fileCertification (hash,title,uuid,data,signerPubKey) = {
129133 let id = value(invoke.transactionId)
130134 let entryExist = checkEntry(hash, uuid)
131135 let uuidExist = checkUUID(uuid)
132136 let callerAddress = toBase58String(invoke.caller.bytes)
133137 if ((entryExist != "NONE"))
134138 then throw("This entry already exist")
135139 else if ((uuidExist != "NONE"))
136140 then throw("This uuid already exist")
137141 else if ((size(uuid) != 36))
138142 then throw("Uuid should be 36 characters.")
139143 else if ((size(hash) != 64))
140144 then throw("Hash should be 64 characters.")
141145 else if ((size(title) > 150))
142146 then throw("Title is too long, 150 characters max.")
143147 else {
144148 let payment = value(invoke.payments[0])
145149 let amount = value(payment.amount)
146150 let paymentAssetId = if (isDefined(payment.assetId))
147151 then value(payment.assetId)
148152 else throw("Waves is not accepted as payment")
149153 let currentPrice = getIntegerValue(this, ("certification_fee_" + toBase58String(value(paymentAssetId))))
150154 let dappCredits = getIntegerByKey(("credits_" + toBase58String(acceptedToken)))
151155 if ((0 >= dappCredits))
152156 then throw("Not enough credit on the dapp, please refill")
153157 else if ((acceptedToken != paymentAssetId))
154158 then throw("This token is not accepted at the moment")
155159 else if ((amount != currentPrice))
156160 then throw("The price is wrong")
157161 else [StringEntry(uuid, toBase58String(id)), StringEntry((hash + uuid), toBase58String(id)), StringEntry((title + uuid), toBase58String(id)), StringEntry(((("data_fc_" + toBase58String(id)) + "_") + callerAddress), data), IntegerEntry(("credits_" + toBase58String(acceptedToken)), (dappCredits - 1)), ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)]
158162 }
159163 }
160164
161165
162166
163167 @Callable(invoke)
164168 func revokeCertification (certificationId,signerPubKey) = {
165169 let id = value(invoke.transactionId)
166170 let callerAddress = toBase58String(invoke.caller.bytes)
167171 let entryExist = match getString(this, ((("data_fc_" + certificationId) + "_") + callerAddress)) {
168172 case a: String =>
169173 a
170174 case _ =>
171175 "NONE"
172176 }
173177 let isRevoked = match getString(this, ("STATUS_FC_" + certificationId)) {
174178 case a: String =>
175179 a
176180 case _ =>
177181 "NONE"
178182 }
179183 let newJson = (((dropRight(entryExist, 1) + ",\"status\":\"REVOKED_") + toBase58String(id)) + "\"}")
180184 if ((isRevoked != "NONE"))
181185 then throw("This certification have already been revoked.")
182186 else if ((entryExist == "NONE"))
183187 then throw("You cannot change the status of this certification.")
184188 else {
185189 let payment = value(invoke.payments[0])
186190 let amount = value(payment.amount)
187191 let paymentAssetId = if (isDefined(payment.assetId))
188192 then value(payment.assetId)
189193 else throw("Waves is not accepted as payment")
190194 let currentPrice = getIntegerValue(this, ("certification_fee_" + toBase58String(value(paymentAssetId))))
191195 let dappCredits = getIntegerValue(this, ("credits_" + toBase58String(acceptedToken)))
192196 if ((0 >= dappCredits))
193197 then throw("Not enough credit on the dapp, please refill")
194198 else if ((acceptedToken != paymentAssetId))
195199 then throw("This token is not accepted at the moment")
196200 else if ((amount != currentPrice))
197201 then throw("The price is wrong")
198202 else [StringEntry(("STATUS_FC_" + certificationId), ("REVOKED_" + toBase58String(id))), StringEntry(((("data_fc_" + certificationId) + "_") + callerAddress), newJson), IntegerEntry(("credits_" + toBase58String(acceptedToken)), (dappCredits - 1)), ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)]
199203 }
200204 }
201205
202206
203207
204208 @Callable(i)
205209 func deleteEntry (entry) = {
206210 let caller = toString(addressFromPublicKey(i.callerPublicKey))
207211 if ((caller == signAdmin))
208212 then [DeleteEntry(entry)]
209213 else throw("no")
210214 }
211215
212216

github/deemru/w8io/026f985 
88.58 ms