tx · 5ywmBtsuzkxbnzcF4wbq5Uzjq8gViLaBKLYKsF9jezG1

3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr:  -0.01700000 Waves

2023.03.14 18:57 [2489928] smart account 3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr > SELF 0.00000000 Waves

{ "type": 13, "id": "5ywmBtsuzkxbnzcF4wbq5Uzjq8gViLaBKLYKsF9jezG1", "fee": 1700000, "feeAssetId": null, "timestamp": 1678809472988, "version": 2, "chainId": 84, "sender": "3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr", "senderPublicKey": "EtZZHS4uqNXY5WPneZ8jY2aA95peXwthJVLzAMxMp379", "proofs": [ "5n5yMGUkGupeNXoSGxxag5jcymnhra8Bqw18PNXxAFF6rfbp36tQkr8Gt3dZZGAaaUNdAtSxpcotQsRcoq5iUgdR" ], "script": "base64:AAIFAAAAAAAABfIIAhIECgIICBIECgIICBIECgIIGBIDCgEIEgUKAwgICBIDCgEIEgMKAQgSAwoBCBIECgIICBIECgIICBIECgIICBIDCgEIEgUKAwgIBBIECgIICBIECgIIBBIDCgEIEgMKARgSAwoBCBIAEgMKAQgiCnR0dHR0dHR0dHQiA1NFUCIFRU1QVFkiDnN0YXR1c1ZlcmlmaWVkIhBzdGF0dXNVbnZlcmlmaWVkIhZsYWJlbENvbW11bml0eVZlcmlmaWVkIgxsYWJlbFBvb2xzTHAiDWRlZmF1bHRMYWJlbHMiB3Rocm93UEQiDHRocm93Tm9Bc3NldCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD2tleUFkbWluUHViS2V5cyIUa2V5VXNlclBvb2xzQ29udHJhY3QiEmtleUZhY3RvcnlDb250cmFjdCIKa2V5Q3JlYXRlZCIHYXNzZXRJZCIHa2V5TG9nbyIJa2V5VGlja2VyIglrZXlTdGF0dXMiE2tleUFzc2V0UG9vbHNOdW1iZXIiEmtleVRpY2tlclRvQXNzZXRJZCIGdGlja2VyIhJrZXlBc3NldElkVG9UaWNrZXIiIGtleUFtb3VudEFuZFByaWNlQXNzZXRzVG9McEFzc2V0IgthbW91bnRBc3NldCIKcHJpY2VBc3NldCIga2V5THBBc3NldFRvQW1vdW50QW5kUHJpY2VBc3NldHMiB2xwQXNzZXQiDmtleUFzc2V0TGFiZWxzIglrZXlMYWJlbHMiDGtleUFzc2V0TmFtZSITa2V5QXNzZXREZXNjcmlwdGlvbiIOZ2V0VmFsdWVPckZhaWwiB2FkZHJlc3MiA2tleSIEdHlwZSIFZXJyb3IiByRtYXRjaDAiA3N0ciIDaW50IgxnZXRTdHJPckZhaWwiAUAiDGdldEludE9yRmFpbCIKaXNWZXJpZmllZCIJZ2V0TGFiZWxzIgFzIg5nZXRBc3NldExhYmVscyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgFpIgJwayIJbXVzdEFkbWluIghhZG1pblBLcyIJaXNNYW5hZ2VyIglpc0NyZWF0ZWQiEHZlcmlmaWVkVG9TdGF0dXMiCHZlcmlmaWVkIg9hZGRMYWJlbEFjdGlvbnMiBWxhYmVsIgx0aHJvd09uRXJyb3IiBmxhYmVscyILYXNzZXRMYWJlbHMiCmNoZWNrTGFiZWwiDm5ld0Fzc2V0TGFiZWxzIhJkZWxldGVMYWJlbEFjdGlvbnMiEnNldFZlcmlmaWVkQWN0aW9ucyIdbGFiZWxDb21tdW5pdHlWZXJpZmllZEFjdGlvbnMiE3VwZGF0ZVRpY2tlckFjdGlvbnMiC2NoZWNrVGlja2VyIhNsaW5rZWRBc3NldElkT3JVbml0Ig10aWNrZXJJc1ZhbGlkIgdhc3NldElEIglhc3NldE5hbWUiC2NoZWNrQ2FsbGVyIhBhc3NldERlc2NyaXB0aW9uIhF1c2VyUG9vbHNDb250cmFjdCINY2hlY2tzQWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IgxjaGVja0FkZHJlc3MiE2Fzc2V0UG9vbHNOdW1iZXJLZXkiEGFzc2V0UG9vbHNOdW1iZXIiCmNoZWNrQXNzZXQiBGxvZ28iDGlzQ3JlYXRlZE5vdyIOc2V0TG9nb0FjdGlvbnMiBmNoZWNrcyIGYWN0aW9uIhVvblZlcmlmaWNhdGlvbkxvc3NJbnYiC3Bvb2xzTnVtYmVyIgdhY3Rpb25zIgxhZG1pblB1YktleXMiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5AAAALAAAAAABYQAAAAAAAAAAAQAAAAABYgIAAAACX18AAAAAAWMCAAAAAAAAAAABZAAAAAAAAAAAAgAAAAABZQAAAAAAAAAAAAAAAAABZgIAAAASQ09NTVVOSVRZX1ZFUklGSUVEAAAAAAFnAgAAAAhQT09MU19MUAAAAAABaAkABEwAAAACBQAAAAFmCQAETAAAAAIFAAAAAWcFAAAAA25pbAEAAAABaQAAAAAJAAACAAAAAQIAAAARUGVybWlzc2lvbiBkZW5pZWQBAAAAAWoAAAAACQAAAgAAAAECAAAAFEFzc2V0IGRvZXNuJ3QgZXhpc3RzAQAAAAFrAAAAAAIAAAAUJXNfX21h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", "height": 2489928, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9CgsGiZDnsRpsExX9PpD5W1iNS3BUEaEthznykry6GBN Next: 2cnYDqsmmwwDEDunk4E1WCSPnZswTsggJLGGeJMqwSyF Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let tttttttttt = 1
5+
46 let SEP = "__"
57
68 let EMPTY = ""
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let tttttttttt = 1
5+
46 let SEP = "__"
57
68 let EMPTY = ""
79
810 let statusVerified = 2
911
1012 let statusUnverified = 0
1113
1214 let labelCommunityVerified = "COMMUNITY_VERIFIED"
1315
1416 let labelPoolsLp = "POOLS_LP"
1517
1618 let defaultLabels = [labelCommunityVerified, labelPoolsLp]
1719
1820 func throwPD () = throw("Permission denied")
1921
2022
2123 func throwNoAsset () = throw("Asset doesn't exists")
2224
2325
2426 func keyManagerPublicKey () = "%s__managerPublicKey"
2527
2628
2729 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
2830
2931
3032 func keyAdminPubKeys () = "%s__adminPubKeys"
3133
3234
3335 func keyUserPoolsContract () = "%s__userPoolsContract"
3436
3537
3638 func keyFactoryContract () = "%s__factoryContract"
3739
3840
3941 func keyCreated (assetId) = (("created_<" + assetId) + ">")
4042
4143
4244 func keyLogo (assetId) = (("logo_<" + assetId) + ">")
4345
4446
4547 func keyTicker (assetId) = (("ticker_<" + assetId) + ">")
4648
4749
4850 func keyStatus (assetId) = (("status_<" + assetId) + ">")
4951
5052
5153 func keyAssetPoolsNumber (assetId) = makeString(["%s%s", "pools", assetId], SEP)
5254
5355
5456 func keyTickerToAssetId (ticker) = makeString(["%s%s", "ticker2assetId", ticker], SEP)
5557
5658
5759 func keyAssetIdToTicker (assetId) = makeString(["%s%s", "assetId2ticker", assetId], SEP)
5860
5961
6062 func keyAmountAndPriceAssetsToLpAsset (amountAsset,priceAsset) = makeString(["%s%s%s", "amountAndPriceAssetsToLpAsset", amountAsset, priceAsset], SEP)
6163
6264
6365 func keyLpAssetToAmountAndPriceAssets (lpAsset) = makeString(["%s%s", "lpAssetToAmountAndPriceAssets", lpAsset], SEP)
6466
6567
6668 func keyAssetLabels (assetId) = makeString(["%s%s", "labels", assetId], SEP)
6769
6870
6971 func keyLabels () = makeString(["%s", "labels"], SEP)
7072
7173
7274 func keyAssetName (assetId) = makeString(["%s%s", "assetName", assetId], SEP)
7375
7476
7577 func keyAssetDescription (assetId) = makeString(["%s%s", "assetDescription", assetId], SEP)
7678
7779
7880 func getValueOrFail (address,key,type) = {
7981 let error = makeString(["mandatory ", toString(address), ".", key, " is not defined"], "")
8082 valueOrErrorMessage( match type {
8183 case str: String =>
8284 getString(address, key)
8385 case int: Int =>
8486 getInteger(address, key)
8587 case _ =>
8688 throw("invalid entry type")
8789 }, error)
8890 }
8991
9092
9193 func getStrOrFail (address,key) = {
9294 let @ = getValueOrFail(address, key, "")
9395 if ($isInstanceOf(@, "String"))
9496 then @
9597 else throw("Couldn't cast Int|String to String")
9698 }
9799
98100
99101 func getIntOrFail (address,key) = {
100102 let @ = getValueOrFail(address, key, 0)
101103 if ($isInstanceOf(@, "Int"))
102104 then @
103105 else throw("Couldn't cast Int|String to Int")
104106 }
105107
106108
107109 func isVerified (assetId) = (valueOrElse(getInteger(keyStatus(assetId)), statusUnverified) == statusVerified)
108110
109111
110112 func getLabels () = match getString(keyLabels()) {
111113 case s: String =>
112114 if ((size(s) == 0))
113115 then nil
114116 else split(s, SEP)
115117 case _ =>
116118 nil
117119 }
118120
119121
120122 func getAssetLabels (assetId) = match getString(keyAssetLabels(assetId)) {
121123 case s: String =>
122124 if ((size(s) == 0))
123125 then nil
124126 else split(s, SEP)
125127 case _ =>
126128 nil
127129 }
128130
129131
130132 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
131133 case s: String =>
132134 fromBase58String(s)
133135 case _: Unit =>
134136 unit
135137 case _ =>
136138 throw("Match error")
137139 }
138140
139141
140142 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
141143 case s: String =>
142144 fromBase58String(s)
143145 case _: Unit =>
144146 unit
145147 case _ =>
146148 throw("Match error")
147149 }
148150
149151
150152 func mustManager (i) = match managerPublicKeyOrUnit() {
151153 case pk: ByteVector =>
152154 if ((i.callerPublicKey == pk))
153155 then true
154156 else throwPD()
155157 case _: Unit =>
156158 if ((i.caller == this))
157159 then true
158160 else throwPD()
159161 case _ =>
160162 throw("Match error")
161163 }
162164
163165
164166 func mustAdmin (i) = {
165167 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
166168 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
167169 then true
168170 else {
169171 let isManager = mustManager(i)
170172 if ((isManager == isManager))
171173 then true
172174 else throw("Strict value is not equal to itself.")
173175 }
174176 }
175177
176178
177179 func isCreated (assetId) = valueOrElse(getBoolean(keyCreated(assetId)), false)
178180
179181
180182 func verifiedToStatus (verified) = if (verified)
181183 then statusVerified
182184 else statusUnverified
183185
184186
185187 func addLabelActions (assetId,label,throwOnError) = {
186188 let labels = getLabels()
187189 let assetLabels = getAssetLabels(assetId)
188190 let checkLabel = if (containsElement(labels, label))
189191 then true
190192 else throw("Label doesn't exist")
191193 if ((checkLabel == checkLabel))
192194 then {
193195 let newAssetLabels = if (containsElement(assetLabels, label))
194196 then if (throwOnError)
195197 then throw("Label has already been added")
196198 else assetLabels
197199 else (assetLabels :+ label)
198200 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
199201 }
200202 else throw("Strict value is not equal to itself.")
201203 }
202204
203205
204206 func deleteLabelActions (assetId,label,throwOnError) = {
205207 let assetLabels = getAssetLabels(assetId)
206208 let newAssetLabels = if (containsElement(assetLabels, label))
207209 then removeByIndex(assetLabels, value(indexOf(assetLabels, label)))
208210 else if (throwOnError)
209211 then throw("Label wasn't added")
210212 else assetLabels
211213 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
212214 }
213215
214216
215217 func setVerifiedActions (assetId,verified) = {
216218 let labelCommunityVerifiedActions = if (verified)
217219 then addLabelActions(assetId, labelCommunityVerified, false)
218220 else deleteLabelActions(assetId, labelCommunityVerified, false)
219221 ([IntegerEntry(keyStatus(assetId), verifiedToStatus(verified))] ++ labelCommunityVerifiedActions)
220222 }
221223
222224
223225 func updateTickerActions (assetId,ticker) = {
224226 let checkTicker = {
225227 let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
226228 let tickerIsValid = if ((ticker != ""))
227229 then if ((linkedAssetIdOrUnit == unit))
228230 then true
229231 else (value(linkedAssetIdOrUnit) == assetId)
230232 else false
231233 if (tickerIsValid)
232234 then true
233235 else throw("Invalid ticker")
234236 }
235237 if ((checkTicker == checkTicker))
236238 then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
237239 else throw("Strict value is not equal to itself.")
238240 }
239241
240242
241243 @Callable(i)
242244 func setAssetName (assetID,assetName) = {
243245 let checkCaller = mustAdmin(i)
244246 if ((checkCaller == checkCaller))
245247 then [StringEntry(keyAssetName(assetID), assetName)]
246248 else throw("Strict value is not equal to itself.")
247249 }
248250
249251
250252
251253 @Callable(i)
252254 func setAssetDescription (assetID,assetDescription) = {
253255 let checkCaller = mustAdmin(i)
254256 if ((checkCaller == checkCaller))
255257 then [StringEntry(keyAssetDescription(assetID), assetDescription)]
256258 else throw("Strict value is not equal to itself.")
257259 }
258260
259261
260262
261263 @Callable(i)
262264 func constructor (userPoolsContract,labels) = {
263265 let checkCaller = mustManager(i)
264266 if ((checkCaller == checkCaller))
265267 then {
266268 let checksAddress = valueOrErrorMessage(addressFromString(userPoolsContract), "Invalid address")
267269 if ((checksAddress == checksAddress))
268270 then [StringEntry(keyUserPoolsContract(), userPoolsContract), StringEntry(keyLabels(), makeString((defaultLabels ++ labels), SEP))]
269271 else throw("Strict value is not equal to itself.")
270272 }
271273 else throw("Strict value is not equal to itself.")
272274 }
273275
274276
275277
276278 @Callable(i)
277279 func constructorV2 (factoryContract) = {
278280 let checkCaller = mustManager(i)
279281 if ((checkCaller == checkCaller))
280282 then {
281283 let checkAddress = valueOrErrorMessage(addressFromString(factoryContract), "invalid factory contract address")
282284 if ((checkAddress == checkAddress))
283285 then [StringEntry(keyFactoryContract(), factoryContract)]
284286 else throw("Strict value is not equal to itself.")
285287 }
286288 else throw("Strict value is not equal to itself.")
287289 }
288290
289291
290292
291293 @Callable(i)
292294 func addAssetsLink (amountAsset,priceAsset,lpAsset) = {
293295 let checkCaller = mustAdmin(i)
294296 if ((checkCaller == checkCaller))
295297 then [StringEntry(keyAmountAndPriceAssetsToLpAsset(amountAsset, priceAsset), lpAsset), StringEntry(keyLpAssetToAmountAndPriceAssets(lpAsset), makeString([amountAsset, priceAsset], SEP))]
296298 else throw("Strict value is not equal to itself.")
297299 }
298300
299301
300302
301303 @Callable(i)
302304 func increaseAssetPoolsNumber (assetId) = {
303305 let checkCaller = mustAdmin(i)
304306 if ((checkCaller == checkCaller))
305307 then {
306308 let assetPoolsNumberKey = keyAssetPoolsNumber(assetId)
307309 let assetPoolsNumber = valueOrElse(getInteger(assetPoolsNumberKey), 0)
308310 [IntegerEntry(assetPoolsNumberKey, (assetPoolsNumber + 1))]
309311 }
310312 else throw("Strict value is not equal to itself.")
311313 }
312314
313315
314316
315317 @Callable(i)
316318 func createLabel (label) = {
317319 let labels = getLabels()
318320 let checkCaller = mustAdmin(i)
319321 if ((checkCaller == checkCaller))
320322 then {
321323 let checkLabel = [if (!(contains(label, SEP)))
322324 then true
323325 else throw("Invalid label name"), if (!(containsElement(labels, label)))
324326 then true
325327 else throw("Label exists")]
326328 if ((checkLabel == checkLabel))
327329 then [StringEntry(keyLabels(), makeString((labels :+ label), SEP))]
328330 else throw("Strict value is not equal to itself.")
329331 }
330332 else throw("Strict value is not equal to itself.")
331333 }
332334
333335
334336
335337 @Callable(i)
336338 func dropLabel (label) = {
337339 let labels = getLabels()
338340 let checkCaller = mustManager(i)
339341 if ((checkCaller == checkCaller))
340342 then {
341343 let checkLabel = if (containsElement(labels, label))
342344 then true
343345 else throw("Label doesn't exist")
344346 if ((checkLabel == checkLabel))
345347 then [StringEntry(keyLabels(), makeString(removeByIndex(labels, value(indexOf(labels, label))), SEP))]
346348 else throw("Strict value is not equal to itself.")
347349 }
348350 else throw("Strict value is not equal to itself.")
349351 }
350352
351353
352354
353355 @Callable(i)
354356 func addLabel (assetId,label) = {
355357 let checkCaller = mustAdmin(i)
356358 if ((checkCaller == checkCaller))
357359 then addLabelActions(assetId, label, true)
358360 else throw("Strict value is not equal to itself.")
359361 }
360362
361363
362364
363365 @Callable(i)
364366 func deleteLabel (assetId,label) = {
365367 let checkCaller = mustAdmin(i)
366368 if ((checkCaller == checkCaller))
367369 then deleteLabelActions(assetId, label, true)
368370 else throw("Strict value is not equal to itself.")
369371 }
370372
371373
372374
373375 @Callable(i)
374376 func updateTicker (assetId,ticker) = {
375377 let checkCaller = mustAdmin(i)
376378 if ((checkCaller == checkCaller))
377379 then {
378380 let checkAsset = if (isCreated(assetId))
379381 then true
380382 else throwNoAsset()
381383 if ((checkAsset == checkAsset))
382384 then updateTickerActions(assetId, ticker)
383385 else throw("Strict value is not equal to itself.")
384386 }
385387 else throw("Strict value is not equal to itself.")
386388 }
387389
388390
389391
390392 @Callable(i)
391393 func deleteTicker (assetId) = {
392394 let checkCaller = mustAdmin(i)
393395 if ((checkCaller == checkCaller))
394396 then {
395397 let ticker = valueOrErrorMessage(getString(keyAssetIdToTicker(assetId)), "Invalid asset")
396398 [DeleteEntry(keyAssetIdToTicker(assetId)), DeleteEntry(keyTickerToAssetId(ticker))]
397399 }
398400 else throw("Strict value is not equal to itself.")
399401 }
400402
401403
402404
403405 @Callable(i)
404406 func createOrUpdate (assetId,logo,verified) = {
405407 let checkCaller = mustAdmin(i)
406408 if ((checkCaller == checkCaller))
407409 then {
408410 let isCreatedNow = !(isCreated(assetId))
409411 if ((isCreatedNow == isCreatedNow))
410412 then {
411413 let setLogoActions = if ((logo == ""))
412414 then nil
413415 else [StringEntry(keyLogo(assetId), logo)]
414416 $Tuple2((([BooleanEntry(keyCreated(assetId), true)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
415417 }
416418 else throw("Strict value is not equal to itself.")
417419 }
418420 else throw("Strict value is not equal to itself.")
419421 }
420422
421423
422424
423425 @Callable(i)
424426 func setLogo (assetId,logo) = {
425427 let checks = [mustAdmin(i), if (isCreated(assetId))
426428 then true
427429 else throwNoAsset()]
428430 if ((checks == checks))
429431 then {
430432 let action = if ((logo == ""))
431433 then DeleteEntry(keyLogo(assetId))
432434 else StringEntry(keyLogo(assetId), logo)
433435 [action]
434436 }
435437 else throw("Strict value is not equal to itself.")
436438 }
437439
438440
439441
440442 @Callable(i)
441443 func setVerified (assetId,verified) = {
442444 let checks = [mustAdmin(i), if (isCreated(assetId))
443445 then true
444446 else throwNoAsset()]
445447 if ((checks == checks))
446448 then {
447449 let onVerificationLossInv = if (!(verified))
448450 then {
449451 let factoryContract = valueOrErrorMessage(addressFromString(getStrOrFail(this, keyFactoryContract())), "invalid factory contract address")
450452 invoke(factoryContract, "onVerificationLoss", [assetId], nil)
451453 }
452454 else unit
453455 if ((onVerificationLossInv == onVerificationLossInv))
454456 then $Tuple2(setVerifiedActions(assetId, verified), unit)
455457 else throw("Strict value is not equal to itself.")
456458 }
457459 else throw("Strict value is not equal to itself.")
458460 }
459461
460462
461463
462464 @Callable(i)
463465 func onEliminate (assetId) = {
464466 let poolsNumber = valueOrElse(getInteger(keyAssetPoolsNumber(assetId)), 0)
465467 let actions = if ((poolsNumber > 0))
466468 then nil
467469 else [DeleteEntry(keyLogo(assetId))]
468470 $Tuple2(actions, unit)
469471 }
470472
471473
472474
473475 @Callable(i)
474476 func setAdmins (adminPubKeys) = {
475477 let checkCaller = mustManager(i)
476478 if ((checkCaller == checkCaller))
477479 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
478480 else throw("Strict value is not equal to itself.")
479481 }
480482
481483
482484
483485 @Callable(i)
484486 func setManager (pendingManagerPublicKey) = {
485487 let checkCaller = mustManager(i)
486488 if ((checkCaller == checkCaller))
487489 then {
488490 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
489491 if ((checkManagerPublicKey == checkManagerPublicKey))
490492 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
491493 else throw("Strict value is not equal to itself.")
492494 }
493495 else throw("Strict value is not equal to itself.")
494496 }
495497
496498
497499
498500 @Callable(i)
499501 func confirmManager () = {
500502 let pm = pendingManagerPublicKeyOrUnit()
501503 let hasPM = if (isDefined(pm))
502504 then true
503505 else throw("No pending manager")
504506 if ((hasPM == hasPM))
505507 then {
506508 let checkPM = if ((i.callerPublicKey == value(pm)))
507509 then true
508510 else throw("You are not pending manager")
509511 if ((checkPM == checkPM))
510512 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
511513 else throw("Strict value is not equal to itself.")
512514 }
513515 else throw("Strict value is not equal to itself.")
514516 }
515517
516518
517519
518520 @Callable(i)
519521 func isVerifiedREADONLY (assetId) = $Tuple2(nil, isVerified(assetId))
520522
521523
522524 @Verifier(tx)
523525 func verify () = {
524526 let targetPublicKey = match managerPublicKeyOrUnit() {
525527 case pk: ByteVector =>
526528 pk
527529 case _: Unit =>
528530 tx.senderPublicKey
529531 case _ =>
530532 throw("Match error")
531533 }
532534 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
533535 }
534536

github/deemru/w8io/873ac7e 
46.99 ms