tx · CQZKyPQQLi9xTV1sQPqeoHdXzEA6af74zetaaFpTkrKR

3Mzms5gHUDYufDRjSVN7g9DcCMG77pzFN4h:  -0.01400000 Waves

2021.09.29 08:45 [1723832] smart account 3Mzms5gHUDYufDRjSVN7g9DcCMG77pzFN4h > SELF 0.00000000 Waves

{ "type": 13, "id": "CQZKyPQQLi9xTV1sQPqeoHdXzEA6af74zetaaFpTkrKR", "fee": 1400000, "feeAssetId": null, "timestamp": 1632894312939, "version": 2, "chainId": 84, "sender": "3Mzms5gHUDYufDRjSVN7g9DcCMG77pzFN4h", "senderPublicKey": "CU8dJ2mJQjVBWaDHwXjPztuVdy9XAyAnTuqSCKuNPARn", "proofs": [ "4jg6Gpp5JtEx1KvsfX6ANqFfvjmMHYEgimi6UbRfgJh8wPoP2NCUjZMRM3WwimyRszWTvobyDhk4rZEyRac9GAZG" ], "script": "base64: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", "height": 1723832, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FM7oQEjeePCqXvW5bg3bghixggux158zh2WdCWfeHLX Next: 8bHGCJXzxAMtsgVSdvenVNU3SHJv6NZHTLSbigHsZig6 Diff:
OldNewDifferences
1212 let signToken = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1313
1414 let acceptedToken = base58'7bLUm2XNLWvVwgC9aPp9fNNAMVtbGwhwkqdgomJAgVbC'
15+
16+let acceptedDecimal = 100000000
1517
1618 let usdnID = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1719
116118 else {
117119 let currentSIGNPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
118120 if (true)
119- then throw(("Uy! " + toString((currentSIGNPrice / 100000000))))
121+ then throw(("Uy! " + toString((currentSIGNPrice / acceptedDecimal))))
120122 else {
121- let numCredit = ((currentSIGNPrice / 100000000) / amount)
123+ let numCredit = ((currentSIGNPrice / acceptedDecimal) / amount)
122124 if ((0 >= numCredit))
123125 then throw("Not enough for at least 1 credit")
124126 else [IntegerEntry(("credits_" + toBase58String(acceptedToken)), numCredit), ScriptTransfer(addressFromStringValue(signDapp), amount, payment.assetId)]
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'
15+
16+let acceptedDecimal = 100000000
1517
1618 let usdnID = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1719
1820 let signDapp = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1921
2022 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
2123
2224
2325 func checkEntry (prefix,uuid) = match getString(this, (prefix + uuid)) {
2426 case a: String =>
2527 a
2628 case _ =>
2729 "NONE"
2830 }
2931
3032
3133 func checkEntryEmail (uuid,domain) = match getString(this, ((uuid + "@") + domain)) {
3234 case a: String =>
3335 a
3436 case _ =>
3537 "NONE"
3638 }
3739
3840
3941 func checkUUID (uuid) = match getString(this, uuid) {
4042 case a: String =>
4143 a
4244 case _ =>
4345 "NONE"
4446 }
4547
4648
4749 func isAdress (addr) = if (if (if ((size(addr) == 35))
4850 then (take(addr, 2) == "3P")
4951 else false)
5052 then true
5153 else (take(addr, 2) == "3N"))
5254 then true
5355 else (take(addr, 2) == "3M")
5456
5557
5658 func countParties (accumulator,addr) = if ((size(addr) > 0))
5759 then (accumulator + 1)
5860 else (accumulator + 0)
5961
6062
6163 func checkIfPendingToSign (key) = match getString(this, key) {
6264 case a: String =>
6365 if ((a == "PENDING"))
6466 then true
6567 else false
6668 case _ =>
6769 false
6870 }
6971
7072
7173 func getValueString (json) = take(drop(json, 1), value(indexOf(drop(json, 1), "\"")))
7274
7375
7476 func getValue (json,key) = {
7577 let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
7678 let data = drop(json, ((keyIndex + size(key)) + 3))
7779 let jsonValue = getValueString(data)
7880 jsonValue
7981 }
8082
8183
8284 func getJsonBeforeValue (json,key) = {
8385 let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
8486 let data = take(json, ((keyIndex + size(key)) + 3))
8587 data
8688 }
8789
8890
8991 func getJsonAfterValue (json,key) = {
9092 let keyIndex = value(indexOf(json, (("\"" + key) + "\":")))
9193 let data = takeRight(json, (size(json) - ((((keyIndex + size(key)) + 3) + 0) + 2)))
9294 data
9395 }
9496
9597
9698 @Callable(i)
9799 func setFee (fee) = {
98100 let callerAddress = toBase58String(i.caller.bytes)
99101 if ((callerAddress == feeAdmin))
100102 then [IntegerEntry(("certification_fee_" + toBase58String(acceptedToken)), fee)]
101103 else throw("You are not allowed to change fee")
102104 }
103105
104106
105107
106108 @Callable(i)
107109 func refillCredits () = {
108110 let callerAddress = toBase58String(i.caller.bytes)
109111 let payment = value(i.payments[0])
110112 let amount = value(payment.amount)
111113 let paymentAssetId = if (isDefined(payment.assetId))
112114 then value(payment.assetId)
113115 else throw("Accept SIGN token only")
114116 if ((signToken != paymentAssetId))
115117 then throw("Accept SIGN token only")
116118 else {
117119 let currentSIGNPrice = getIntegerValue(storageVerifier, ("certification_fee_" + toBase58String(value(paymentAssetId))))
118120 if (true)
119- then throw(("Uy! " + toString((currentSIGNPrice / 100000000))))
121+ then throw(("Uy! " + toString((currentSIGNPrice / acceptedDecimal))))
120122 else {
121- let numCredit = ((currentSIGNPrice / 100000000) / amount)
123+ let numCredit = ((currentSIGNPrice / acceptedDecimal) / amount)
122124 if ((0 >= numCredit))
123125 then throw("Not enough for at least 1 credit")
124126 else [IntegerEntry(("credits_" + toBase58String(acceptedToken)), numCredit), ScriptTransfer(addressFromStringValue(signDapp), amount, payment.assetId)]
125127 }
126128 }
127129 }
128130
129131
130132
131133 @Callable(invoke)
132134 func fileCertification (hash,title,uuid,data,signerPubKey) = {
133135 let id = value(invoke.transactionId)
134136 let entryExist = checkEntry(hash, uuid)
135137 let uuidExist = checkUUID(uuid)
136138 let callerAddress = toBase58String(invoke.caller.bytes)
137139 if ((entryExist != "NONE"))
138140 then throw("This entry already exist")
139141 else if ((uuidExist != "NONE"))
140142 then throw("This uuid already exist")
141143 else if ((size(uuid) != 36))
142144 then throw("Uuid should be 36 characters.")
143145 else if ((size(hash) != 64))
144146 then throw("Hash should be 64 characters.")
145147 else if ((size(title) > 150))
146148 then throw("Title is too long, 150 characters max.")
147149 else {
148150 let payment = value(invoke.payments[0])
149151 let amount = value(payment.amount)
150152 let paymentAssetId = if (isDefined(payment.assetId))
151153 then value(payment.assetId)
152154 else throw("Waves is not accepted as payment")
153155 let currentPrice = getIntegerValue(this, ("certification_fee_" + toBase58String(value(paymentAssetId))))
154156 let dappCredits = getIntegerByKey(("credits_" + toBase58String(acceptedToken)))
155157 if ((0 >= dappCredits))
156158 then throw("Not enough credit on the dapp, please refill")
157159 else if ((acceptedToken != paymentAssetId))
158160 then throw("This token is not accepted at the moment")
159161 else if ((amount != currentPrice))
160162 then throw("The price is wrong")
161163 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)]
162164 }
163165 }
164166
165167
166168
167169 @Callable(invoke)
168170 func revokeCertification (certificationId,signerPubKey) = {
169171 let id = value(invoke.transactionId)
170172 let callerAddress = toBase58String(invoke.caller.bytes)
171173 let entryExist = match getString(this, ((("data_fc_" + certificationId) + "_") + callerAddress)) {
172174 case a: String =>
173175 a
174176 case _ =>
175177 "NONE"
176178 }
177179 let isRevoked = match getString(this, ("STATUS_FC_" + certificationId)) {
178180 case a: String =>
179181 a
180182 case _ =>
181183 "NONE"
182184 }
183185 let newJson = (((dropRight(entryExist, 1) + ",\"status\":\"REVOKED_") + toBase58String(id)) + "\"}")
184186 if ((isRevoked != "NONE"))
185187 then throw("This certification have already been revoked.")
186188 else if ((entryExist == "NONE"))
187189 then throw("You cannot change the status of this certification.")
188190 else {
189191 let payment = value(invoke.payments[0])
190192 let amount = value(payment.amount)
191193 let paymentAssetId = if (isDefined(payment.assetId))
192194 then value(payment.assetId)
193195 else throw("Waves is not accepted as payment")
194196 let currentPrice = getIntegerValue(this, ("certification_fee_" + toBase58String(value(paymentAssetId))))
195197 let dappCredits = getIntegerValue(this, ("credits_" + toBase58String(acceptedToken)))
196198 if ((0 >= dappCredits))
197199 then throw("Not enough credit on the dapp, please refill")
198200 else if ((acceptedToken != paymentAssetId))
199201 then throw("This token is not accepted at the moment")
200202 else if ((amount != currentPrice))
201203 then throw("The price is wrong")
202204 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)]
203205 }
204206 }
205207
206208
207209
208210 @Callable(i)
209211 func deleteEntry (entry) = {
210212 let caller = toString(addressFromPublicKey(i.callerPublicKey))
211213 if ((caller == signAdmin))
212214 then [DeleteEntry(entry)]
213215 else throw("no")
214216 }
215217
216218

github/deemru/w8io/026f985 
48.45 ms