tx · BaB2ZSVurzRA2AMMuFm9a2mQ6PckCLZqWm9gt4XRLqBu

3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua:  -0.01400000 Waves

2021.03.28 16:10 [1457652] smart account 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua > SELF 0.00000000 Waves

{ "type": 13, "id": "BaB2ZSVurzRA2AMMuFm9a2mQ6PckCLZqWm9gt4XRLqBu", "fee": 1400000, "feeAssetId": null, "timestamp": 1616937075176, "version": 2, "chainId": 84, "sender": "3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua", "senderPublicKey": "CTyHhnVTxf16Z4CmGGneAK8WB5g2QyT4MB8kUn8vPPcu", "proofs": [ "4aV4b4eD6r3sZjHjxjPsLZLpC3voLosNeYifyQwfLNh3LvdBjMJFDsxBA9cZAebmVMABkEwBrM6iuZUZyZLn7gsS" ], "script": "base64:AAIEAAAAAAAAABAIAhIECgIICBIECgIICBIAAAAAFgAAAAAEc2VsZgkABCUAAAABBQAAAAR0aGlzAAAAAA1nZW5lc2lzSGVpZ2h0AAAAAAAAFjhmAAAAAAd3YXZlc0lkAgAAAAVXQVZFUwAAAAAGbWF4SW50AH/////////9AAAAABNtYXhEZXNjcmlwdGlvbkJ5dGVzAAAAAAAAAAPoAAAAAAxjb250cmFjdE5hbWUCAAAADVZhdWx0Q29udHJhY3QAAAAADGNvbnRyYWN0VGV4dAkAASwAAAACCQABLAAAAAICAAAARERvbid0IHRydXN0LCB2ZXJpZnkgISBUaGUgTkZUIElzc3VlciBhbmQgZEFwcCBhcmUgdGhlIHNhbWUgYWRkcmVzcyA8BQAAAARzZWxmAgAAAAI+LgAAAAARY29udHJhY3RTZXBhcmF0b3ICAAAAA19fXwAAAAALcmVjZWlwdE5hbWUCAAAADFZhdWx0UmVjZWlwdAAAAAALcmVjZWlwdFRleHQCAAAACGZ1Y2sgb2ZmAAAAAAx2ZXJpZmllck5hbWUCAAAADVZhdWx0VmVyaWZpZXIAAAAADXZlcmlmaWVyVGV4dDECAAAAEFNIQTI1NiBDaGVja3N1bToAAAAADXZlcmlmaWVyVGV4dDICAAAAB0Vycm9yczoAAAAADnJ1bGVzU2VwYXJhdG9yAgAAAAFfAAAAABRydWxlc05lc3RlZFNlcGFyYXRvcgIAAAABKwAAAAAOcnVsZXNVbmRlZmluZWQCAAAABG51bGwAAAAAD2Vycm9yc1NlcGFyYXRvcgIAAAABfAAAAAAIa2V5UnVsZXMCAAAABl9ydWxlcwAAAAANa2V5Tm9uY2VDb3VudAIAAAALTk9OQ0VfQ09VTlQBAAAACWlzSW5SYW5nZQAAAAEAAAAGbnVtYmVyAwkAAGcAAAACBQAAAAZudW1iZXIAAAAAAAAAAAAJAABmAAAAAgUAAAAGbWF4SW50BQAAAAZudW1iZXIHAQAAAA1nZW5lcmF0ZU5vbmNlAAAAAAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlOb25jZUNvdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABWlzSW50BQAAAAckbWF0Y2gwAwkAAGcAAAACBQAA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QXNzZXQEAAAAB2lzQXNzZXQFAAAAByRtYXRjaDAFAAAAB2lzQXNzZXQJAAACAAAAAQIAAAAXRVJST1I6IFVua25vd24gQ29udHJhY3QDCQEAAAACIT0AAAACCAUAAAAMY29udHJhY3RJbmZvAAAABmlzc3VlcgUAAAAEdGhpcwkAAAIAAAABAgAAABZFUlJPUjogQ29udHJhY3QgSXNzdWVyAwkBAAAAAiE9AAAAAggFAAAADGNvbnRyYWN0SW5mbwAAAARuYW1lBQAAAAxjb250cmFjdE5hbWUJAAACAAAAAQIAAAAURVJST1I6IENvbnRyYWN0IG5hbWUDAwMDCQEAAAACIT0AAAACCAUAAAAMY29udHJhY3RJbmZvAAAACGRlY2ltYWxzAAAAAAAAAAAABgkBAAAAAiE9AAAAAggFAAAADGNvbnRyYWN0SW5mbwAAAAhxdWFudGl0eQAAAAAAAAAAAQYJAQAAAAIhPQAAAAIIBQAAAAxjb250cmFjdEluZm8AAAAKcmVpc3N1YWJsZQcGCQEAAAACIT0AAAACCAUAAAAMY29udHJhY3RJbmZvAAAACHNjcmlwdGVkBwkAAAIAAAABAgAAABdFUlJPUjogQ29udHJhY3Qgbm90IE5GVAQAAAATY29udHJhY3REZXNjcmlwdGlvbgkABLUAAAACCAUAAAAMY29udHJhY3RJbmZvAAAAC2Rlc2NyaXB0aW9uBQAAABFjb250cmFjdFNlcGFyYXRvcgQAAAAOY29udHJhY3RIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABNjb250cmFjdERlc2NyaXB0aW9uAAAAAAAAAAABBAAAABVjb250cmFjdENhbGxlckFkZHJlc3MJAAGRAAAAAgUAAAATY29udHJhY3REZXNjcmlwdGlvbgAAAAAAAAAAAgQAAAAPY29udHJhY3RBc3NldElkCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAMEAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAQEAAAAEWNvbnRyYWN0QXNzZXRJbmZvBAAAAAck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", "height": 1457652, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FQ6Z3YShkphw2GdKkLmzkf8HoEhK6oRnrF9wZeofBXap Next: 7JEYE11GjyFnuMy1Kd4D5b89HsfxPu6KrQvdsvyvMdTK Diff:
OldNewDifferences
188188 }
189189 let errorsString = makeString(errorsList, errorsSeparator)
190190 let nonce = generateNonce()
191- let rulesSHA256 = toUtf8String(sha256(toBytes(rulesString)))
191+ let rulesSHA256 = toBase64String(sha256(toBytes(rulesString)))
192192 let verifierDescription = ((((((verifierText1 + " <") + rulesSHA256) + "> ") + verifierText2) + " ") + errorsString)
193193 if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
194194 then throw("ERROR: Too much errors")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let self = toString(this)
55
66 let genesisHeight = 1456230
77
88 let wavesId = "WAVES"
99
1010 let maxInt = 9223372036854775805
1111
1212 let maxDescriptionBytes = 1000
1313
1414 let contractName = "VaultContract"
1515
1616 let contractText = (("Don't trust, verify ! The NFT Issuer and dApp are the same address <" + self) + ">.")
1717
1818 let contractSeparator = "___"
1919
2020 let receiptName = "VaultReceipt"
2121
2222 let receiptText = "fuck off"
2323
2424 let verifierName = "VaultVerifier"
2525
2626 let verifierText1 = "SHA256 Checksum:"
2727
2828 let verifierText2 = "Errors:"
2929
3030 let rulesSeparator = "_"
3131
3232 let rulesNestedSeparator = "+"
3333
3434 let rulesUndefined = "null"
3535
3636 let errorsSeparator = "|"
3737
3838 let keyRules = "_rules"
3939
4040 let keyNonceCount = "NONCE_COUNT"
4141
4242 func isInRange (number) = if ((number >= 0))
4343 then (maxInt > number)
4444 else false
4545
4646
4747 func generateNonce () = match getInteger(this, keyNonceCount) {
4848 case isInt: Int =>
4949 if ((isInt >= maxInt))
5050 then 1
5151 else (isInt + 1)
5252 case _ =>
5353 1
5454 }
5555
5656
5757 func verifyRule (acc,rule) = if ((rule == rulesUndefined))
5858 then acc
5959 else {
6060 let ruleValues = split(rule, rulesNestedSeparator)
6161 if ((size(ruleValues) != 4))
6262 then (("<" + rule) + "> Broken structure") :: acc
6363 else match parseInt(ruleValues[0]) {
6464 case blockStart: Int =>
6565 if ((isInRange(blockStart) != true))
6666 then (("<" + rule) + "> blockStart out-of-range") :: acc
6767 else match parseInt(ruleValues[1]) {
6868 case blockEnd: Int =>
6969 if ((isInRange(blockEnd) != true))
7070 then (("<" + rule) + "> blockEnd out-of-range") :: acc
7171 else match parseInt(ruleValues[2]) {
7272 case isWhitelist: Int =>
7373 if (if ((isWhitelist != 0))
7474 then true
7575 else (isWhitelist != 1))
7676 then (("<" + rule) + "> isWhitelist is 0 (false) or 1 (true)") :: acc
7777 else acc
7878 case _ =>
7979 (("<" + rule) + "> isWhitelist not Integer") :: acc
8080 }
8181 case _ =>
8282 (("<" + rule) + "> blockEnd not Integer") :: acc
8383 }
8484 case _ =>
8585 (("<" + rule) + "> blockStart not Integer") :: acc
8686 }
8787 }
8888
8989
9090 @Callable(i)
9191 func verifyRules (incRulerAddress,incRulerKey) = {
9292 let rulerAddress = Address(fromBase58String(incRulerAddress))
9393 let rulesString = match getString(rulerAddress, (incRulerKey + keyRules)) {
9494 case isString: String =>
9595 isString
9696 case _ =>
9797 throw("ERROR: Data not found")
9898 }
9999 let rulesList = split(rulesString, rulesSeparator)
100100 if ((size(rulesList) != 15))
101101 then throw("ERROR: Wrong amount of rules")
102102 else {
103103 let errorsList = {
104104 let $list32903325 = rulesList
105105 let $size32903325 = size($list32903325)
106106 let $acc032903325 = nil
107107 if (($size32903325 == 0))
108108 then $acc032903325
109109 else {
110110 let $acc132903325 = verifyRule($acc032903325, $list32903325[0])
111111 if (($size32903325 == 1))
112112 then $acc132903325
113113 else {
114114 let $acc232903325 = verifyRule($acc132903325, $list32903325[1])
115115 if (($size32903325 == 2))
116116 then $acc232903325
117117 else {
118118 let $acc332903325 = verifyRule($acc232903325, $list32903325[2])
119119 if (($size32903325 == 3))
120120 then $acc332903325
121121 else {
122122 let $acc432903325 = verifyRule($acc332903325, $list32903325[3])
123123 if (($size32903325 == 4))
124124 then $acc432903325
125125 else {
126126 let $acc532903325 = verifyRule($acc432903325, $list32903325[4])
127127 if (($size32903325 == 5))
128128 then $acc532903325
129129 else {
130130 let $acc632903325 = verifyRule($acc532903325, $list32903325[5])
131131 if (($size32903325 == 6))
132132 then $acc632903325
133133 else {
134134 let $acc732903325 = verifyRule($acc632903325, $list32903325[6])
135135 if (($size32903325 == 7))
136136 then $acc732903325
137137 else {
138138 let $acc832903325 = verifyRule($acc732903325, $list32903325[7])
139139 if (($size32903325 == 8))
140140 then $acc832903325
141141 else {
142142 let $acc932903325 = verifyRule($acc832903325, $list32903325[8])
143143 if (($size32903325 == 9))
144144 then $acc932903325
145145 else {
146146 let $acc1032903325 = verifyRule($acc932903325, $list32903325[9])
147147 if (($size32903325 == 10))
148148 then $acc1032903325
149149 else {
150150 let $acc1132903325 = verifyRule($acc1032903325, $list32903325[10])
151151 if (($size32903325 == 11))
152152 then $acc1132903325
153153 else {
154154 let $acc1232903325 = verifyRule($acc1132903325, $list32903325[11])
155155 if (($size32903325 == 12))
156156 then $acc1232903325
157157 else {
158158 let $acc1332903325 = verifyRule($acc1232903325, $list32903325[12])
159159 if (($size32903325 == 13))
160160 then $acc1332903325
161161 else {
162162 let $acc1432903325 = verifyRule($acc1332903325, $list32903325[13])
163163 if (($size32903325 == 14))
164164 then $acc1432903325
165165 else {
166166 let $acc1532903325 = verifyRule($acc1432903325, $list32903325[14])
167167 if (($size32903325 == 15))
168168 then $acc1532903325
169169 else {
170170 let $acc1632903325 = verifyRule($acc1532903325, $list32903325[15])
171171 throw("List size exceed 15")
172172 }
173173 }
174174 }
175175 }
176176 }
177177 }
178178 }
179179 }
180180 }
181181 }
182182 }
183183 }
184184 }
185185 }
186186 }
187187 }
188188 }
189189 let errorsString = makeString(errorsList, errorsSeparator)
190190 let nonce = generateNonce()
191- let rulesSHA256 = toUtf8String(sha256(toBytes(rulesString)))
191+ let rulesSHA256 = toBase64String(sha256(toBytes(rulesString)))
192192 let verifierDescription = ((((((verifierText1 + " <") + rulesSHA256) + "> ") + verifierText2) + " ") + errorsString)
193193 if ((size(toBytes(verifierDescription)) > maxDescriptionBytes))
194194 then throw("ERROR: Too much errors")
195195 else {
196196 let veriferIssue = Issue(verifierName, verifierDescription, 1, 0, false, unit, nonce)
197197 let verifierId = calculateAssetId(veriferIssue)
198198 [IntegerEntry(keyNonceCount, nonce), veriferIssue, ScriptTransfer(i.caller, veriferIssue.quantity, verifierId)]
199199 }
200200 }
201201 }
202202
203203
204204
205205 @Callable(i)
206206 func deposit (incRulerAddress,incRulerTag) = if ((genesisHeight > height))
207207 then throw(("ERROR: Deposits are denied until block " + toString(genesisHeight)))
208208 else if ((this == i.caller))
209209 then throw("ERROR: Self-invoke is forbidden")
210210 else if ((size(i.payments) != 1))
211211 then throw("ERROR: Attached Payment != 1")
212212 else if (if ((1 > i.payments[0].amount))
213213 then true
214214 else (i.payments[0].amount > maxInt))
215215 then throw("ERROR: Payment amount")
216216 else {
217217 let contractAssetId = match i.payments[0].assetId {
218218 case isByteVector: ByteVector =>
219219 match assetInfo(isByteVector) {
220220 case isAsset: Asset =>
221221 toBase58String(isAsset.id)
222222 case _ =>
223223 throw("ERROR: Asset not found")
224224 }
225225 case isWaves: Unit =>
226226 wavesId
227227 case _ =>
228228 throw("ERROR: Unknown Asset type")
229229 }
230230 let nonce = generateNonce()
231231 let contractDescription = makeString([contractText, toString(height), toString(i.caller), contractAssetId, toString(i.payments[0].amount)], contractSeparator)
232232 if ((size(toBytes(contractDescription)) > maxDescriptionBytes))
233233 then throw("ERROR: Too long contract")
234234 else {
235235 let contractIssue = Issue(contractName, contractDescription, 1, 0, false, unit, nonce)
236236 let contractId = calculateAssetId(contractIssue)
237237 [IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
238238 }
239239 }
240240
241241
242242
243243 @Callable(i)
244244 func withdraw () = if ((this == i.caller))
245245 then throw("ERROR: Self-invoke is forbidden")
246246 else if ((size(i.payments) != 1))
247247 then throw("ERROR: Attached Payment != 1")
248248 else if ((i.payments[0].amount != 1))
249249 then throw("ERROR: Payment amount != 1")
250250 else {
251251 let contractIdByteVector = match i.payments[0].assetId {
252252 case isByteVector: ByteVector =>
253253 isByteVector
254254 case _ =>
255255 throw("ERROR: Contract type")
256256 }
257257 let contractInfo = match assetInfo(contractIdByteVector) {
258258 case isAsset: Asset =>
259259 isAsset
260260 case _ =>
261261 throw("ERROR: Unknown Contract")
262262 }
263263 if ((contractInfo.issuer != this))
264264 then throw("ERROR: Contract Issuer")
265265 else if ((contractInfo.name != contractName))
266266 then throw("ERROR: Contract name")
267267 else if (if (if (if ((contractInfo.decimals != 0))
268268 then true
269269 else (contractInfo.quantity != 1))
270270 then true
271271 else (contractInfo.reissuable != false))
272272 then true
273273 else (contractInfo.scripted != false))
274274 then throw("ERROR: Contract not NFT")
275275 else {
276276 let contractDescription = split(contractInfo.description, contractSeparator)
277277 let contractHeight = parseIntValue(contractDescription[1])
278278 let contractCallerAddress = contractDescription[2]
279279 let contractAssetId = contractDescription[3]
280280 let contractAssetQuantity = parseIntValue(contractDescription[4])
281281 let contractAssetInfo = match assetInfo(fromBase58String(contractAssetId)) {
282282 case isAsset: Asset =>
283283 isAsset
284284 case _ =>
285285 throw("ERROR: Unknown Asset")
286286 }
287287 if ((size(contractDescription) != 5))
288288 then throw("ERROR: Contract description")
289289 else if (if ((genesisHeight >= contractHeight))
290290 then true
291291 else (contractHeight >= height))
292292 then throw("ERROR: Height")
293293 else if (if ((1 > contractAssetQuantity))
294294 then true
295295 else (contractAssetQuantity > contractAssetInfo.quantity))
296296 then throw("ERROR: Asset quantity")
297297 else if ((contractAssetQuantity > assetBalance(this, contractAssetInfo.id)))
298298 then throw("ERROR: Vault balance")
299299 else {
300300 let nonce = generateNonce()
301301 let receiptDescription = makeString([receiptText, toString(contractHeight), toString(height), toBase58String(contractIdByteVector), contractCallerAddress, toString(i.caller), contractAssetId, toString(contractAssetQuantity)], contractSeparator)
302302 let receiptIssue = Issue(receiptName, receiptDescription, 1, 0, false, unit, nonce)
303303 let receiptId = calculateAssetId(receiptIssue)
304304 [IntegerEntry(keyNonceCount, nonce), Burn(contractIdByteVector, 1), receiptIssue, ScriptTransfer(i.caller, receiptIssue.quantity, receiptId), ScriptTransfer(i.caller, contractAssetQuantity, contractAssetInfo.id)]
305305 }
306306 }
307307 }
308308
309309
310310 @Verifier(tx)
311311 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
312312

github/deemru/w8io/169f3d6 
74.45 ms