tx · HqyWTsBRYcHeiDqbboNVtsiR8MeEMS5DmRfiw1hoMCwu

3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr:  -0.01600000 Waves

2022.12.19 12:15 [2366982] smart account 3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr > SELF 0.00000000 Waves

{ "type": 13, "id": "HqyWTsBRYcHeiDqbboNVtsiR8MeEMS5DmRfiw1hoMCwu", "fee": 1600000, "feeAssetId": null, "timestamp": 1671441435305, "version": 1, "sender": "3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr", "senderPublicKey": "EtZZHS4uqNXY5WPneZ8jY2aA95peXwthJVLzAMxMp379", "proofs": [ "4J43PboH2bK4Eo4qsLdtzcd4EfeRRcan5xZWk5Bv57Sfn1DJw1EoMGBzCrHDxh1snmd73AqAzynwse6Sp25orjne" ], "script": "base64:AAIFAAAAAAAABZwIAhIECgIIGBIDCgEIEgUKAwgICBIDCgEIEgMKAQgSAwoBCBIECgIICBIECgIICBIECgIICBIDCgEIEgUKAwgIBBIECgIICBIECgIIBBIDCgEIEgMKARgSAwoBCBIAEgMKAQgiCXRlc3RkZWxsbCIDU0VQIgVFTVBUWSIOc3RhdHVzVmVyaWZpZWQiEHN0YXR1c1VudmVyaWZpZWQiFmxhYmVsQ29tbXVuaXR5VmVyaWZpZWQiDGxhYmVsUG9vbHNMcCINZGVmYXVsdExhYmVscyIHdGhyb3dQRCIMdGhyb3dOb0Fzc2V0IhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIPa2V5QWRtaW5QdWJLZXlzIhRrZXlVc2VyUG9vbHNDb250cmFjdCISa2V5RmFjdG9yeUNvbnRyYWN0IgprZXlDcmVhdGVkIgdhc3NldElkIgdrZXlMb2dvIglrZXlUaWNrZXIiCWtleVN0YXR1cyITa2V5QXNzZXRQb29sc051bWJlciISa2V5VGlja2VyVG9Bc3NldElkIgZ0aWNrZXIiEmtleUFzc2V0SWRUb1RpY2tlciIga2V5QW1vdW50QW5kUHJpY2VBc3NldHNUb0xwQXNzZXQiC2Ftb3VudEFzc2V0IgpwcmljZUFzc2V0IiBrZXlMcEFzc2V0VG9BbW91bnRBbmRQcmljZUFzc2V0cyIHbHBBc3NldCIOa2V5QXNzZXRMYWJlbHMiCWtleUxhYmVscyIOZ2V0VmFsdWVPckZhaWwiB2FkZHJlc3MiA2tleSIEdHlwZSIFZXJyb3IiByRtYXRjaDAiA3N0ciIDaW50IgxnZXRTdHJPckZhaWwiAUAiDGdldEludE9yRmFpbCIKaXNWZXJpZmllZCIJZ2V0TGFiZWxzIgFzIg5nZXRBc3NldExhYmVscyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgFpIgJwayIJbXVzdEFkbWluIghhZG1pblBLcyIJaXNNYW5hZ2VyIglpc0NyZWF0ZWQiEHZlcmlmaWVkVG9TdGF0dXMiCHZlcmlmaWVkIg9hZGRMYWJlbEFjdGlvbnMiBWxhYmVsIgx0aHJvd09uRXJyb3IiBmxhYmVscyILYXNzZXRMYWJlbHMiCmNoZWNrTGFiZWwiDm5ld0Fzc2V0TGFiZWxzIhJkZWxldGVMYWJlbEFjdGlvbnMiEnNldFZlcmlmaWVkQWN0aW9ucyIdbGFiZWxDb21tdW5pdHlWZXJpZmllZEFjdGlvbnMiE3VwZGF0ZVRpY2tlckFjdGlvbnMiC2NoZWNrVGlja2VyIhNsaW5rZWRBc3NldElkT3JVbml0Ig10aWNrZXJJc1ZhbGlkIhF1c2VyUG9vbHNDb250cmFjdCILY2hlY2tDYWxsZXIiDWNoZWNrc0FkZHJlc3MiD2ZhY3RvcnlDb250cmFjdCIMY2hlY2tBZGRyZXNzIhNhc3NldFBvb2xzTnVtYmVyS2V5IhBhc3NldFBvb2xzTnVtYmVyIgpjaGVja0Fzc2V0IgRsb2dvIgxpc0NyZWF0ZWROb3ciDnNldExvZ29BY3Rpb25zIgZjaGVja3MiBmFjdGlvbiIVb25WZXJpZmljYXRpb25Mb3NzSW52Igtwb29sc051bWJlciIHYWN0aW9ucyIMYWRtaW5QdWJLZXlzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleQAAACoAAAAAAWEAAAAAAAAAAAIAAAAAAWICAAAAAl9fAAAAAAFjAgAAAAAAAAAAAWQAAAAAAAAAAAIAAAAAAWUAAAAAAAAAAAAAAAAAAWYCAAAAEkNPTU1VTklUWV9WRVJJRklFRAAAAAABZwIAAAAIUE9PTFNfTFAAAAAAAWgJAARMAAAAAgUAAAABZgkABEwAAAACBQAAAAFnBQAAAANuaWwBAAAAAWkAAAAACQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkAQAAAAFqAAAAAAkAAAIAAAABAgAAABRBc3NldCBkb2Vzbid0IGV4aXN0cwEAAAABawAAAAACAAAAFCVzX19tYW5hZ2VyUHVibGljS2V5AQAAAAFsAAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAAAFtAAAAAAIAAAAQJXNfX2FkbWluUHViS2V5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", "chainId": 84, "height": 2366982, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EUTibt4dLtBJJCJqVeJTeX3Ac13eNcnVShsXCEGBoZk2 Next: 95WbAadPiPz9u2qnJugT4WWkWVHBaS7X4Po1kJyCF564 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let testdelll = 1
4+let testdelll = 2
55
66 let SEP = "__"
77
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let testdelll = 1
4+let testdelll = 2
55
66 let SEP = "__"
77
88 let EMPTY = ""
99
1010 let statusVerified = 2
1111
1212 let statusUnverified = 0
1313
1414 let labelCommunityVerified = "COMMUNITY_VERIFIED"
1515
1616 let labelPoolsLp = "POOLS_LP"
1717
1818 let defaultLabels = [labelCommunityVerified, labelPoolsLp]
1919
2020 func throwPD () = throw("Permission denied")
2121
2222
2323 func throwNoAsset () = throw("Asset doesn't exists")
2424
2525
2626 func keyManagerPublicKey () = "%s__managerPublicKey"
2727
2828
2929 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
3030
3131
3232 func keyAdminPubKeys () = "%s__adminPubKeys"
3333
3434
3535 func keyUserPoolsContract () = "%s__userPoolsContract"
3636
3737
3838 func keyFactoryContract () = "%s__factoryContract"
3939
4040
4141 func keyCreated (assetId) = (("created_<" + assetId) + ">")
4242
4343
4444 func keyLogo (assetId) = (("logo_<" + assetId) + ">")
4545
4646
4747 func keyTicker (assetId) = (("ticker_<" + assetId) + ">")
4848
4949
5050 func keyStatus (assetId) = (("status_<" + assetId) + ">")
5151
5252
5353 func keyAssetPoolsNumber (assetId) = makeString(["%s%s", "pools", assetId], SEP)
5454
5555
5656 func keyTickerToAssetId (ticker) = makeString(["%s%s", "ticker2assetId", ticker], SEP)
5757
5858
5959 func keyAssetIdToTicker (assetId) = makeString(["%s%s", "assetId2ticker", assetId], SEP)
6060
6161
6262 func keyAmountAndPriceAssetsToLpAsset (amountAsset,priceAsset) = makeString(["%s%s%s", "amountAndPriceAssetsToLpAsset", amountAsset, priceAsset], SEP)
6363
6464
6565 func keyLpAssetToAmountAndPriceAssets (lpAsset) = makeString(["%s%s", "lpAssetToAmountAndPriceAssets", lpAsset], SEP)
6666
6767
6868 func keyAssetLabels (assetId) = makeString(["%s%s", "labels", assetId], SEP)
6969
7070
7171 func keyLabels () = makeString(["%s", "labels"], SEP)
7272
7373
7474 func getValueOrFail (address,key,type) = {
7575 let error = makeString(["mandatory ", toString(address), ".", key, " is not defined"], "")
7676 valueOrErrorMessage( match type {
7777 case str: String =>
7878 getString(address, key)
7979 case int: Int =>
8080 getInteger(address, key)
8181 case _ =>
8282 throw("invalid entry type")
8383 }, error)
8484 }
8585
8686
8787 func getStrOrFail (address,key) = {
8888 let @ = getValueOrFail(address, key, "")
8989 if ($isInstanceOf(@, "String"))
9090 then @
9191 else throw("Couldn't cast Int|String to String")
9292 }
9393
9494
9595 func getIntOrFail (address,key) = {
9696 let @ = getValueOrFail(address, key, 0)
9797 if ($isInstanceOf(@, "Int"))
9898 then @
9999 else throw("Couldn't cast Int|String to Int")
100100 }
101101
102102
103103 func isVerified (assetId) = (valueOrElse(getInteger(keyStatus(assetId)), statusUnverified) == statusVerified)
104104
105105
106106 func getLabels () = match getString(keyLabels()) {
107107 case s: String =>
108108 if ((size(s) == 0))
109109 then nil
110110 else split(s, SEP)
111111 case _ =>
112112 nil
113113 }
114114
115115
116116 func getAssetLabels (assetId) = match getString(keyAssetLabels(assetId)) {
117117 case s: String =>
118118 if ((size(s) == 0))
119119 then nil
120120 else split(s, SEP)
121121 case _ =>
122122 nil
123123 }
124124
125125
126126 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
127127 case s: String =>
128128 fromBase58String(s)
129129 case _: Unit =>
130130 unit
131131 case _ =>
132132 throw("Match error")
133133 }
134134
135135
136136 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
137137 case s: String =>
138138 fromBase58String(s)
139139 case _: Unit =>
140140 unit
141141 case _ =>
142142 throw("Match error")
143143 }
144144
145145
146146 func mustManager (i) = match managerPublicKeyOrUnit() {
147147 case pk: ByteVector =>
148148 if ((i.callerPublicKey == pk))
149149 then true
150150 else throwPD()
151151 case _: Unit =>
152152 if ((i.caller == this))
153153 then true
154154 else throwPD()
155155 case _ =>
156156 throw("Match error")
157157 }
158158
159159
160160 func mustAdmin (i) = {
161161 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
162162 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
163163 then true
164164 else {
165165 let isManager = mustManager(i)
166166 if ((isManager == isManager))
167167 then true
168168 else throw("Strict value is not equal to itself.")
169169 }
170170 }
171171
172172
173173 func isCreated (assetId) = valueOrElse(getBoolean(keyCreated(assetId)), false)
174174
175175
176176 func verifiedToStatus (verified) = if (verified)
177177 then statusVerified
178178 else statusUnverified
179179
180180
181181 func addLabelActions (assetId,label,throwOnError) = {
182182 let labels = getLabels()
183183 let assetLabels = getAssetLabels(assetId)
184184 let checkLabel = if (containsElement(labels, label))
185185 then true
186186 else throw("Label doesn't exist")
187187 if ((checkLabel == checkLabel))
188188 then {
189189 let newAssetLabels = if (containsElement(assetLabels, label))
190190 then if (throwOnError)
191191 then throw("Label has already been added")
192192 else assetLabels
193193 else (assetLabels :+ label)
194194 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
195195 }
196196 else throw("Strict value is not equal to itself.")
197197 }
198198
199199
200200 func deleteLabelActions (assetId,label,throwOnError) = {
201201 let assetLabels = getAssetLabels(assetId)
202202 let newAssetLabels = if (containsElement(assetLabels, label))
203203 then removeByIndex(assetLabels, value(indexOf(assetLabels, label)))
204204 else if (throwOnError)
205205 then throw("Label wasn't added")
206206 else assetLabels
207207 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
208208 }
209209
210210
211211 func setVerifiedActions (assetId,verified) = {
212212 let labelCommunityVerifiedActions = if (verified)
213213 then addLabelActions(assetId, labelCommunityVerified, false)
214214 else deleteLabelActions(assetId, labelCommunityVerified, false)
215215 ([IntegerEntry(keyStatus(assetId), verifiedToStatus(verified))] ++ labelCommunityVerifiedActions)
216216 }
217217
218218
219219 func updateTickerActions (assetId,ticker) = {
220220 let checkTicker = {
221221 let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
222222 let tickerIsValid = if ((ticker != ""))
223223 then if ((linkedAssetIdOrUnit == unit))
224224 then true
225225 else (value(linkedAssetIdOrUnit) == assetId)
226226 else false
227227 if (tickerIsValid)
228228 then true
229229 else throw("Invalid ticker")
230230 }
231231 if ((checkTicker == checkTicker))
232232 then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
233233 else throw("Strict value is not equal to itself.")
234234 }
235235
236236
237237 @Callable(i)
238238 func constructor (userPoolsContract,labels) = {
239239 let checkCaller = mustManager(i)
240240 if ((checkCaller == checkCaller))
241241 then {
242242 let checksAddress = valueOrErrorMessage(addressFromString(userPoolsContract), "Invalid address")
243243 if ((checksAddress == checksAddress))
244244 then [StringEntry(keyUserPoolsContract(), userPoolsContract), StringEntry(keyLabels(), makeString((defaultLabels ++ labels), SEP))]
245245 else throw("Strict value is not equal to itself.")
246246 }
247247 else throw("Strict value is not equal to itself.")
248248 }
249249
250250
251251
252252 @Callable(i)
253253 func constructorV2 (factoryContract) = {
254254 let checkCaller = mustManager(i)
255255 if ((checkCaller == checkCaller))
256256 then {
257257 let checkAddress = valueOrErrorMessage(addressFromString(factoryContract), "invalid factory contract address")
258258 if ((checkAddress == checkAddress))
259259 then [StringEntry(keyFactoryContract(), factoryContract)]
260260 else throw("Strict value is not equal to itself.")
261261 }
262262 else throw("Strict value is not equal to itself.")
263263 }
264264
265265
266266
267267 @Callable(i)
268268 func addAssetsLink (amountAsset,priceAsset,lpAsset) = {
269269 let checkCaller = mustAdmin(i)
270270 if ((checkCaller == checkCaller))
271271 then [StringEntry(keyAmountAndPriceAssetsToLpAsset(amountAsset, priceAsset), lpAsset), StringEntry(keyLpAssetToAmountAndPriceAssets(lpAsset), makeString([amountAsset, priceAsset], SEP))]
272272 else throw("Strict value is not equal to itself.")
273273 }
274274
275275
276276
277277 @Callable(i)
278278 func increaseAssetPoolsNumber (assetId) = {
279279 let checkCaller = mustAdmin(i)
280280 if ((checkCaller == checkCaller))
281281 then {
282282 let assetPoolsNumberKey = keyAssetPoolsNumber(assetId)
283283 let assetPoolsNumber = valueOrElse(getInteger(assetPoolsNumberKey), 0)
284284 [IntegerEntry(assetPoolsNumberKey, (assetPoolsNumber + 1))]
285285 }
286286 else throw("Strict value is not equal to itself.")
287287 }
288288
289289
290290
291291 @Callable(i)
292292 func createLabel (label) = {
293293 let labels = getLabels()
294294 let checkCaller = mustAdmin(i)
295295 if ((checkCaller == checkCaller))
296296 then {
297297 let checkLabel = [if (!(contains(label, SEP)))
298298 then true
299299 else throw("Invalid label name"), if (!(containsElement(labels, label)))
300300 then true
301301 else throw("Label exists")]
302302 if ((checkLabel == checkLabel))
303303 then [StringEntry(keyLabels(), makeString((labels :+ label), SEP))]
304304 else throw("Strict value is not equal to itself.")
305305 }
306306 else throw("Strict value is not equal to itself.")
307307 }
308308
309309
310310
311311 @Callable(i)
312312 func dropLabel (label) = {
313313 let labels = getLabels()
314314 let checkCaller = mustManager(i)
315315 if ((checkCaller == checkCaller))
316316 then {
317317 let checkLabel = if (containsElement(labels, label))
318318 then true
319319 else throw("Label doesn't exist")
320320 if ((checkLabel == checkLabel))
321321 then [StringEntry(keyLabels(), makeString(removeByIndex(labels, value(indexOf(labels, label))), SEP))]
322322 else throw("Strict value is not equal to itself.")
323323 }
324324 else throw("Strict value is not equal to itself.")
325325 }
326326
327327
328328
329329 @Callable(i)
330330 func addLabel (assetId,label) = {
331331 let checkCaller = mustAdmin(i)
332332 if ((checkCaller == checkCaller))
333333 then addLabelActions(assetId, label, true)
334334 else throw("Strict value is not equal to itself.")
335335 }
336336
337337
338338
339339 @Callable(i)
340340 func deleteLabel (assetId,label) = {
341341 let checkCaller = mustAdmin(i)
342342 if ((checkCaller == checkCaller))
343343 then deleteLabelActions(assetId, label, true)
344344 else throw("Strict value is not equal to itself.")
345345 }
346346
347347
348348
349349 @Callable(i)
350350 func updateTicker (assetId,ticker) = {
351351 let checkCaller = mustAdmin(i)
352352 if ((checkCaller == checkCaller))
353353 then {
354354 let checkAsset = if (isCreated(assetId))
355355 then true
356356 else throwNoAsset()
357357 if ((checkAsset == checkAsset))
358358 then updateTickerActions(assetId, ticker)
359359 else throw("Strict value is not equal to itself.")
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363
364364
365365
366366 @Callable(i)
367367 func deleteTicker (assetId) = {
368368 let checkCaller = mustAdmin(i)
369369 if ((checkCaller == checkCaller))
370370 then {
371371 let ticker = valueOrErrorMessage(getString(keyAssetIdToTicker(assetId)), "Invalid asset")
372372 [DeleteEntry(keyAssetIdToTicker(assetId)), DeleteEntry(keyTickerToAssetId(ticker))]
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
376376
377377
378378
379379 @Callable(i)
380380 func createOrUpdate (assetId,logo,verified) = {
381381 let checkCaller = mustAdmin(i)
382382 if ((checkCaller == checkCaller))
383383 then {
384384 let isCreatedNow = !(isCreated(assetId))
385385 if ((isCreatedNow == isCreatedNow))
386386 then {
387387 let setLogoActions = if ((logo == ""))
388388 then nil
389389 else [StringEntry(keyLogo(assetId), logo)]
390390 $Tuple2((([BooleanEntry(keyCreated(assetId), true)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
391391 }
392392 else throw("Strict value is not equal to itself.")
393393 }
394394 else throw("Strict value is not equal to itself.")
395395 }
396396
397397
398398
399399 @Callable(i)
400400 func setLogo (assetId,logo) = {
401401 let checks = [mustAdmin(i), if (isCreated(assetId))
402402 then true
403403 else throwNoAsset()]
404404 if ((checks == checks))
405405 then {
406406 let action = if ((logo == ""))
407407 then DeleteEntry(keyLogo(assetId))
408408 else StringEntry(keyLogo(assetId), logo)
409409 [action]
410410 }
411411 else throw("Strict value is not equal to itself.")
412412 }
413413
414414
415415
416416 @Callable(i)
417417 func setVerified (assetId,verified) = {
418418 let checks = [mustAdmin(i), if (isCreated(assetId))
419419 then true
420420 else throwNoAsset()]
421421 if ((checks == checks))
422422 then {
423423 let onVerificationLossInv = if (!(verified))
424424 then {
425425 let factoryContract = valueOrErrorMessage(addressFromString(getStrOrFail(this, keyFactoryContract())), "invalid factory contract address")
426426 invoke(factoryContract, "onVerificationLoss", [assetId], nil)
427427 }
428428 else unit
429429 if ((onVerificationLossInv == onVerificationLossInv))
430430 then $Tuple2(setVerifiedActions(assetId, verified), unit)
431431 else throw("Strict value is not equal to itself.")
432432 }
433433 else throw("Strict value is not equal to itself.")
434434 }
435435
436436
437437
438438 @Callable(i)
439439 func onEliminate (assetId) = {
440440 let poolsNumber = valueOrElse(getInteger(keyAssetPoolsNumber(assetId)), 0)
441441 let actions = if ((poolsNumber > 0))
442442 then nil
443443 else [DeleteEntry(keyLogo(assetId))]
444444 $Tuple2(actions, unit)
445445 }
446446
447447
448448
449449 @Callable(i)
450450 func setAdmins (adminPubKeys) = {
451451 let checkCaller = mustManager(i)
452452 if ((checkCaller == checkCaller))
453453 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
454454 else throw("Strict value is not equal to itself.")
455455 }
456456
457457
458458
459459 @Callable(i)
460460 func setManager (pendingManagerPublicKey) = {
461461 let checkCaller = mustManager(i)
462462 if ((checkCaller == checkCaller))
463463 then {
464464 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
465465 if ((checkManagerPublicKey == checkManagerPublicKey))
466466 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
467467 else throw("Strict value is not equal to itself.")
468468 }
469469 else throw("Strict value is not equal to itself.")
470470 }
471471
472472
473473
474474 @Callable(i)
475475 func confirmManager () = {
476476 let pm = pendingManagerPublicKeyOrUnit()
477477 let hasPM = if (isDefined(pm))
478478 then true
479479 else throw("No pending manager")
480480 if ((hasPM == hasPM))
481481 then {
482482 let checkPM = if ((i.callerPublicKey == value(pm)))
483483 then true
484484 else throw("You are not pending manager")
485485 if ((checkPM == checkPM))
486486 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
487487 else throw("Strict value is not equal to itself.")
488488 }
489489 else throw("Strict value is not equal to itself.")
490490 }
491491
492492
493493
494494 @Callable(i)
495495 func isVerifiedREADONLY (assetId) = $Tuple2(nil, isVerified(assetId))
496496
497497
498498 @Verifier(tx)
499499 func verify () = {
500500 let targetPublicKey = match managerPublicKeyOrUnit() {
501501 case pk: ByteVector =>
502502 pk
503503 case _: Unit =>
504504 tx.senderPublicKey
505505 case _ =>
506506 throw("Match error")
507507 }
508508 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
509509 }
510510

github/deemru/w8io/873ac7e 
54.21 ms