tx · 2cnYDqsmmwwDEDunk4E1WCSPnZswTsggJLGGeJMqwSyF

3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr:  -0.01700000 Waves

2023.03.14 18:59 [2489930] smart account 3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr > SELF 0.00000000 Waves

{ "type": 13, "id": "2cnYDqsmmwwDEDunk4E1WCSPnZswTsggJLGGeJMqwSyF", "fee": 1700000, "feeAssetId": null, "timestamp": 1678809623679, "version": 2, "chainId": 84, "sender": "3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr", "senderPublicKey": "EtZZHS4uqNXY5WPneZ8jY2aA95peXwthJVLzAMxMp379", "proofs": [ "26Crkd6akDhCaNWY58m8PyCupEypfqRNjXeFvyYccYND8WkGcMjf9jZhJuZ8H2XH5qwJPeS8LBapYwuV7xtAQ7Fw" ], "script": "base64:AAIFAAAAAAAABeYIAhIECgIICBIECgIICBIECgIIGBIDCgEIEgUKAwgICBIDCgEIEgMKAQgSAwoBCBIECgIICBIECgIICBIECgIICBIDCgEIEgUKAwgIBBIECgIICBIECgIIBBIDCgEIEgMKARgSAwoBCBIAEgMKAQgiA1NFUCIFRU1QVFkiDnN0YXR1c1ZlcmlmaWVkIhBzdGF0dXNVbnZlcmlmaWVkIhZsYWJlbENvbW11bml0eVZlcmlmaWVkIgxsYWJlbFBvb2xzTHAiDWRlZmF1bHRMYWJlbHMiB3Rocm93UEQiDHRocm93Tm9Bc3NldCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD2tleUFkbWluUHViS2V5cyIUa2V5VXNlclBvb2xzQ29udHJhY3QiEmtleUZhY3RvcnlDb250cmFjdCIKa2V5Q3JlYXRlZCIHYXNzZXRJZCIHa2V5TG9nbyIJa2V5VGlja2VyIglrZXlTdGF0dXMiE2tleUFzc2V0UG9vbHNOdW1iZXIiEmtleVRpY2tlclRvQXNzZXRJZCIGdGlja2VyIhJrZXlBc3NldElkVG9UaWNrZXIiIGtleUFtb3VudEFuZFByaWNlQXNzZXRzVG9McEFzc2V0IgthbW91bnRBc3NldCIKcHJpY2VBc3NldCIga2V5THBBc3NldFRvQW1vdW50QW5kUHJpY2VBc3NldHMiB2xwQXNzZXQiDmtleUFzc2V0TGFiZWxzIglrZXlMYWJlbHMiDGtleUFzc2V0TmFtZSITa2V5QXNzZXREZXNjcmlwdGlvbiIOZ2V0VmFsdWVPckZhaWwiB2FkZHJlc3MiA2tleSIEdHlwZSIFZXJyb3IiByRtYXRjaDAiA3N0ciIDaW50IgxnZXRTdHJPckZhaWwiAUAiDGdldEludE9yRmFpbCIKaXNWZXJpZmllZCIJZ2V0TGFiZWxzIgFzIg5nZXRBc3NldExhYmVscyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgFpIgJwayIJbXVzdEFkbWluIghhZG1pblBLcyIJaXNNYW5hZ2VyIglpc0NyZWF0ZWQiEHZlcmlmaWVkVG9TdGF0dXMiCHZlcmlmaWVkIg9hZGRMYWJlbEFjdGlvbnMiBWxhYmVsIgx0aHJvd09uRXJyb3IiBmxhYmVscyILYXNzZXRMYWJlbHMiCmNoZWNrTGFiZWwiDm5ld0Fzc2V0TGFiZWxzIhJkZWxldGVMYWJlbEFjdGlvbnMiEnNldFZlcmlmaWVkQWN0aW9ucyIdbGFiZWxDb21tdW5pdHlWZXJpZmllZEFjdGlvbnMiE3VwZGF0ZVRpY2tlckFjdGlvbnMiC2NoZWNrVGlja2VyIhNsaW5rZWRBc3NldElkT3JVbml0Ig10aWNrZXJJc1ZhbGlkIgdhc3NldElEIglhc3NldE5hbWUiC2NoZWNrQ2FsbGVyIhBhc3NldERlc2NyaXB0aW9uIhF1c2VyUG9vbHNDb250cmFjdCINY2hlY2tzQWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IgxjaGVja0FkZHJlc3MiE2Fzc2V0UG9vbHNOdW1iZXJLZXkiEGFzc2V0UG9vbHNOdW1iZXIiCmNoZWNrQXNzZXQiBGxvZ28iDGlzQ3JlYXRlZE5vdyIOc2V0TG9nb0FjdGlvbnMiBmNoZWNrcyIGYWN0aW9uIhVvblZlcmlmaWNhdGlvbkxvc3NJbnYiC3Bvb2xzTnVtYmVyIgdhY3Rpb25zIgxhZG1pblB1YktleXMiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5AAAAKwAAAAABYQIAAAACX18AAAAAAWICAAAAAAAAAAABYwAAAAAAAAAAAgAAAAABZAAAAAAAAAAAAAAAAAABZQIAAAASQ09NTVVOSVRZX1ZFUklGSUVEAAAAAAFmAgAAAAhQT09MU19MUAAAAAABZwkABEwAAAACBQAAAAFlCQAETAAAAAIFAAAAAWYFAAAAA25pbAEAAAABaAAAAAAJAAACAAAAAQIAAAARUGVybWlzc2lvbiBkZW5pZWQBAAAAAWkAAAAACQAAAgAAAAECAAAAFEFzc2V0IGRvZXNuJ3QgZXhpc3RzAQAAAAFqAAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAAWsAAAAAAgAA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", "height": 2489930, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5ywmBtsuzkxbnzcF4wbq5Uzjq8gViLaBKLYKsF9jezG1 Next: 7aNd3A3TnchNwvXagYynRYZgsHYwD4JeqGfjrsYbmrWM Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let tttttttttt = 1
5-
64 let SEP = "__"
75
86 let EMPTY = ""
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let tttttttttt = 1
5-
64 let SEP = "__"
75
86 let EMPTY = ""
97
108 let statusVerified = 2
119
1210 let statusUnverified = 0
1311
1412 let labelCommunityVerified = "COMMUNITY_VERIFIED"
1513
1614 let labelPoolsLp = "POOLS_LP"
1715
1816 let defaultLabels = [labelCommunityVerified, labelPoolsLp]
1917
2018 func throwPD () = throw("Permission denied")
2119
2220
2321 func throwNoAsset () = throw("Asset doesn't exists")
2422
2523
2624 func keyManagerPublicKey () = "%s__managerPublicKey"
2725
2826
2927 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
3028
3129
3230 func keyAdminPubKeys () = "%s__adminPubKeys"
3331
3432
3533 func keyUserPoolsContract () = "%s__userPoolsContract"
3634
3735
3836 func keyFactoryContract () = "%s__factoryContract"
3937
4038
4139 func keyCreated (assetId) = (("created_<" + assetId) + ">")
4240
4341
4442 func keyLogo (assetId) = (("logo_<" + assetId) + ">")
4543
4644
4745 func keyTicker (assetId) = (("ticker_<" + assetId) + ">")
4846
4947
5048 func keyStatus (assetId) = (("status_<" + assetId) + ">")
5149
5250
5351 func keyAssetPoolsNumber (assetId) = makeString(["%s%s", "pools", assetId], SEP)
5452
5553
5654 func keyTickerToAssetId (ticker) = makeString(["%s%s", "ticker2assetId", ticker], SEP)
5755
5856
5957 func keyAssetIdToTicker (assetId) = makeString(["%s%s", "assetId2ticker", assetId], SEP)
6058
6159
6260 func keyAmountAndPriceAssetsToLpAsset (amountAsset,priceAsset) = makeString(["%s%s%s", "amountAndPriceAssetsToLpAsset", amountAsset, priceAsset], SEP)
6361
6462
6563 func keyLpAssetToAmountAndPriceAssets (lpAsset) = makeString(["%s%s", "lpAssetToAmountAndPriceAssets", lpAsset], SEP)
6664
6765
6866 func keyAssetLabels (assetId) = makeString(["%s%s", "labels", assetId], SEP)
6967
7068
7169 func keyLabels () = makeString(["%s", "labels"], SEP)
7270
7371
7472 func keyAssetName (assetId) = makeString(["%s%s", "assetName", assetId], SEP)
7573
7674
7775 func keyAssetDescription (assetId) = makeString(["%s%s", "assetDescription", assetId], SEP)
7876
7977
8078 func getValueOrFail (address,key,type) = {
8179 let error = makeString(["mandatory ", toString(address), ".", key, " is not defined"], "")
8280 valueOrErrorMessage( match type {
8381 case str: String =>
8482 getString(address, key)
8583 case int: Int =>
8684 getInteger(address, key)
8785 case _ =>
8886 throw("invalid entry type")
8987 }, error)
9088 }
9189
9290
9391 func getStrOrFail (address,key) = {
9492 let @ = getValueOrFail(address, key, "")
9593 if ($isInstanceOf(@, "String"))
9694 then @
9795 else throw("Couldn't cast Int|String to String")
9896 }
9997
10098
10199 func getIntOrFail (address,key) = {
102100 let @ = getValueOrFail(address, key, 0)
103101 if ($isInstanceOf(@, "Int"))
104102 then @
105103 else throw("Couldn't cast Int|String to Int")
106104 }
107105
108106
109107 func isVerified (assetId) = (valueOrElse(getInteger(keyStatus(assetId)), statusUnverified) == statusVerified)
110108
111109
112110 func getLabels () = match getString(keyLabels()) {
113111 case s: String =>
114112 if ((size(s) == 0))
115113 then nil
116114 else split(s, SEP)
117115 case _ =>
118116 nil
119117 }
120118
121119
122120 func getAssetLabels (assetId) = match getString(keyAssetLabels(assetId)) {
123121 case s: String =>
124122 if ((size(s) == 0))
125123 then nil
126124 else split(s, SEP)
127125 case _ =>
128126 nil
129127 }
130128
131129
132130 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
133131 case s: String =>
134132 fromBase58String(s)
135133 case _: Unit =>
136134 unit
137135 case _ =>
138136 throw("Match error")
139137 }
140138
141139
142140 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
143141 case s: String =>
144142 fromBase58String(s)
145143 case _: Unit =>
146144 unit
147145 case _ =>
148146 throw("Match error")
149147 }
150148
151149
152150 func mustManager (i) = match managerPublicKeyOrUnit() {
153151 case pk: ByteVector =>
154152 if ((i.callerPublicKey == pk))
155153 then true
156154 else throwPD()
157155 case _: Unit =>
158156 if ((i.caller == this))
159157 then true
160158 else throwPD()
161159 case _ =>
162160 throw("Match error")
163161 }
164162
165163
166164 func mustAdmin (i) = {
167165 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
168166 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
169167 then true
170168 else {
171169 let isManager = mustManager(i)
172170 if ((isManager == isManager))
173171 then true
174172 else throw("Strict value is not equal to itself.")
175173 }
176174 }
177175
178176
179177 func isCreated (assetId) = valueOrElse(getBoolean(keyCreated(assetId)), false)
180178
181179
182180 func verifiedToStatus (verified) = if (verified)
183181 then statusVerified
184182 else statusUnverified
185183
186184
187185 func addLabelActions (assetId,label,throwOnError) = {
188186 let labels = getLabels()
189187 let assetLabels = getAssetLabels(assetId)
190188 let checkLabel = if (containsElement(labels, label))
191189 then true
192190 else throw("Label doesn't exist")
193191 if ((checkLabel == checkLabel))
194192 then {
195193 let newAssetLabels = if (containsElement(assetLabels, label))
196194 then if (throwOnError)
197195 then throw("Label has already been added")
198196 else assetLabels
199197 else (assetLabels :+ label)
200198 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
201199 }
202200 else throw("Strict value is not equal to itself.")
203201 }
204202
205203
206204 func deleteLabelActions (assetId,label,throwOnError) = {
207205 let assetLabels = getAssetLabels(assetId)
208206 let newAssetLabels = if (containsElement(assetLabels, label))
209207 then removeByIndex(assetLabels, value(indexOf(assetLabels, label)))
210208 else if (throwOnError)
211209 then throw("Label wasn't added")
212210 else assetLabels
213211 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
214212 }
215213
216214
217215 func setVerifiedActions (assetId,verified) = {
218216 let labelCommunityVerifiedActions = if (verified)
219217 then addLabelActions(assetId, labelCommunityVerified, false)
220218 else deleteLabelActions(assetId, labelCommunityVerified, false)
221219 ([IntegerEntry(keyStatus(assetId), verifiedToStatus(verified))] ++ labelCommunityVerifiedActions)
222220 }
223221
224222
225223 func updateTickerActions (assetId,ticker) = {
226224 let checkTicker = {
227225 let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
228226 let tickerIsValid = if ((ticker != ""))
229227 then if ((linkedAssetIdOrUnit == unit))
230228 then true
231229 else (value(linkedAssetIdOrUnit) == assetId)
232230 else false
233231 if (tickerIsValid)
234232 then true
235233 else throw("Invalid ticker")
236234 }
237235 if ((checkTicker == checkTicker))
238236 then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
239237 else throw("Strict value is not equal to itself.")
240238 }
241239
242240
243241 @Callable(i)
244242 func setAssetName (assetID,assetName) = {
245243 let checkCaller = mustAdmin(i)
246244 if ((checkCaller == checkCaller))
247245 then [StringEntry(keyAssetName(assetID), assetName)]
248246 else throw("Strict value is not equal to itself.")
249247 }
250248
251249
252250
253251 @Callable(i)
254252 func setAssetDescription (assetID,assetDescription) = {
255253 let checkCaller = mustAdmin(i)
256254 if ((checkCaller == checkCaller))
257255 then [StringEntry(keyAssetDescription(assetID), assetDescription)]
258256 else throw("Strict value is not equal to itself.")
259257 }
260258
261259
262260
263261 @Callable(i)
264262 func constructor (userPoolsContract,labels) = {
265263 let checkCaller = mustManager(i)
266264 if ((checkCaller == checkCaller))
267265 then {
268266 let checksAddress = valueOrErrorMessage(addressFromString(userPoolsContract), "Invalid address")
269267 if ((checksAddress == checksAddress))
270268 then [StringEntry(keyUserPoolsContract(), userPoolsContract), StringEntry(keyLabels(), makeString((defaultLabels ++ labels), SEP))]
271269 else throw("Strict value is not equal to itself.")
272270 }
273271 else throw("Strict value is not equal to itself.")
274272 }
275273
276274
277275
278276 @Callable(i)
279277 func constructorV2 (factoryContract) = {
280278 let checkCaller = mustManager(i)
281279 if ((checkCaller == checkCaller))
282280 then {
283281 let checkAddress = valueOrErrorMessage(addressFromString(factoryContract), "invalid factory contract address")
284282 if ((checkAddress == checkAddress))
285283 then [StringEntry(keyFactoryContract(), factoryContract)]
286284 else throw("Strict value is not equal to itself.")
287285 }
288286 else throw("Strict value is not equal to itself.")
289287 }
290288
291289
292290
293291 @Callable(i)
294292 func addAssetsLink (amountAsset,priceAsset,lpAsset) = {
295293 let checkCaller = mustAdmin(i)
296294 if ((checkCaller == checkCaller))
297295 then [StringEntry(keyAmountAndPriceAssetsToLpAsset(amountAsset, priceAsset), lpAsset), StringEntry(keyLpAssetToAmountAndPriceAssets(lpAsset), makeString([amountAsset, priceAsset], SEP))]
298296 else throw("Strict value is not equal to itself.")
299297 }
300298
301299
302300
303301 @Callable(i)
304302 func increaseAssetPoolsNumber (assetId) = {
305303 let checkCaller = mustAdmin(i)
306304 if ((checkCaller == checkCaller))
307305 then {
308306 let assetPoolsNumberKey = keyAssetPoolsNumber(assetId)
309307 let assetPoolsNumber = valueOrElse(getInteger(assetPoolsNumberKey), 0)
310308 [IntegerEntry(assetPoolsNumberKey, (assetPoolsNumber + 1))]
311309 }
312310 else throw("Strict value is not equal to itself.")
313311 }
314312
315313
316314
317315 @Callable(i)
318316 func createLabel (label) = {
319317 let labels = getLabels()
320318 let checkCaller = mustAdmin(i)
321319 if ((checkCaller == checkCaller))
322320 then {
323321 let checkLabel = [if (!(contains(label, SEP)))
324322 then true
325323 else throw("Invalid label name"), if (!(containsElement(labels, label)))
326324 then true
327325 else throw("Label exists")]
328326 if ((checkLabel == checkLabel))
329327 then [StringEntry(keyLabels(), makeString((labels :+ label), SEP))]
330328 else throw("Strict value is not equal to itself.")
331329 }
332330 else throw("Strict value is not equal to itself.")
333331 }
334332
335333
336334
337335 @Callable(i)
338336 func dropLabel (label) = {
339337 let labels = getLabels()
340338 let checkCaller = mustManager(i)
341339 if ((checkCaller == checkCaller))
342340 then {
343341 let checkLabel = if (containsElement(labels, label))
344342 then true
345343 else throw("Label doesn't exist")
346344 if ((checkLabel == checkLabel))
347345 then [StringEntry(keyLabels(), makeString(removeByIndex(labels, value(indexOf(labels, label))), SEP))]
348346 else throw("Strict value is not equal to itself.")
349347 }
350348 else throw("Strict value is not equal to itself.")
351349 }
352350
353351
354352
355353 @Callable(i)
356354 func addLabel (assetId,label) = {
357355 let checkCaller = mustAdmin(i)
358356 if ((checkCaller == checkCaller))
359357 then addLabelActions(assetId, label, true)
360358 else throw("Strict value is not equal to itself.")
361359 }
362360
363361
364362
365363 @Callable(i)
366364 func deleteLabel (assetId,label) = {
367365 let checkCaller = mustAdmin(i)
368366 if ((checkCaller == checkCaller))
369367 then deleteLabelActions(assetId, label, true)
370368 else throw("Strict value is not equal to itself.")
371369 }
372370
373371
374372
375373 @Callable(i)
376374 func updateTicker (assetId,ticker) = {
377375 let checkCaller = mustAdmin(i)
378376 if ((checkCaller == checkCaller))
379377 then {
380378 let checkAsset = if (isCreated(assetId))
381379 then true
382380 else throwNoAsset()
383381 if ((checkAsset == checkAsset))
384382 then updateTickerActions(assetId, ticker)
385383 else throw("Strict value is not equal to itself.")
386384 }
387385 else throw("Strict value is not equal to itself.")
388386 }
389387
390388
391389
392390 @Callable(i)
393391 func deleteTicker (assetId) = {
394392 let checkCaller = mustAdmin(i)
395393 if ((checkCaller == checkCaller))
396394 then {
397395 let ticker = valueOrErrorMessage(getString(keyAssetIdToTicker(assetId)), "Invalid asset")
398396 [DeleteEntry(keyAssetIdToTicker(assetId)), DeleteEntry(keyTickerToAssetId(ticker))]
399397 }
400398 else throw("Strict value is not equal to itself.")
401399 }
402400
403401
404402
405403 @Callable(i)
406404 func createOrUpdate (assetId,logo,verified) = {
407405 let checkCaller = mustAdmin(i)
408406 if ((checkCaller == checkCaller))
409407 then {
410408 let isCreatedNow = !(isCreated(assetId))
411409 if ((isCreatedNow == isCreatedNow))
412410 then {
413411 let setLogoActions = if ((logo == ""))
414412 then nil
415413 else [StringEntry(keyLogo(assetId), logo)]
416414 $Tuple2((([BooleanEntry(keyCreated(assetId), true)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
417415 }
418416 else throw("Strict value is not equal to itself.")
419417 }
420418 else throw("Strict value is not equal to itself.")
421419 }
422420
423421
424422
425423 @Callable(i)
426424 func setLogo (assetId,logo) = {
427425 let checks = [mustAdmin(i), if (isCreated(assetId))
428426 then true
429427 else throwNoAsset()]
430428 if ((checks == checks))
431429 then {
432430 let action = if ((logo == ""))
433431 then DeleteEntry(keyLogo(assetId))
434432 else StringEntry(keyLogo(assetId), logo)
435433 [action]
436434 }
437435 else throw("Strict value is not equal to itself.")
438436 }
439437
440438
441439
442440 @Callable(i)
443441 func setVerified (assetId,verified) = {
444442 let checks = [mustAdmin(i), if (isCreated(assetId))
445443 then true
446444 else throwNoAsset()]
447445 if ((checks == checks))
448446 then {
449447 let onVerificationLossInv = if (!(verified))
450448 then {
451449 let factoryContract = valueOrErrorMessage(addressFromString(getStrOrFail(this, keyFactoryContract())), "invalid factory contract address")
452450 invoke(factoryContract, "onVerificationLoss", [assetId], nil)
453451 }
454452 else unit
455453 if ((onVerificationLossInv == onVerificationLossInv))
456454 then $Tuple2(setVerifiedActions(assetId, verified), unit)
457455 else throw("Strict value is not equal to itself.")
458456 }
459457 else throw("Strict value is not equal to itself.")
460458 }
461459
462460
463461
464462 @Callable(i)
465463 func onEliminate (assetId) = {
466464 let poolsNumber = valueOrElse(getInteger(keyAssetPoolsNumber(assetId)), 0)
467465 let actions = if ((poolsNumber > 0))
468466 then nil
469467 else [DeleteEntry(keyLogo(assetId))]
470468 $Tuple2(actions, unit)
471469 }
472470
473471
474472
475473 @Callable(i)
476474 func setAdmins (adminPubKeys) = {
477475 let checkCaller = mustManager(i)
478476 if ((checkCaller == checkCaller))
479477 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
480478 else throw("Strict value is not equal to itself.")
481479 }
482480
483481
484482
485483 @Callable(i)
486484 func setManager (pendingManagerPublicKey) = {
487485 let checkCaller = mustManager(i)
488486 if ((checkCaller == checkCaller))
489487 then {
490488 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
491489 if ((checkManagerPublicKey == checkManagerPublicKey))
492490 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
493491 else throw("Strict value is not equal to itself.")
494492 }
495493 else throw("Strict value is not equal to itself.")
496494 }
497495
498496
499497
500498 @Callable(i)
501499 func confirmManager () = {
502500 let pm = pendingManagerPublicKeyOrUnit()
503501 let hasPM = if (isDefined(pm))
504502 then true
505503 else throw("No pending manager")
506504 if ((hasPM == hasPM))
507505 then {
508506 let checkPM = if ((i.callerPublicKey == value(pm)))
509507 then true
510508 else throw("You are not pending manager")
511509 if ((checkPM == checkPM))
512510 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
513511 else throw("Strict value is not equal to itself.")
514512 }
515513 else throw("Strict value is not equal to itself.")
516514 }
517515
518516
519517
520518 @Callable(i)
521519 func isVerifiedREADONLY (assetId) = $Tuple2(nil, isVerified(assetId))
522520
523521
524522 @Verifier(tx)
525523 func verify () = {
526524 let targetPublicKey = match managerPublicKeyOrUnit() {
527525 case pk: ByteVector =>
528526 pk
529527 case _: Unit =>
530528 tx.senderPublicKey
531529 case _ =>
532530 throw("Match error")
533531 }
534532 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
535533 }
536534

github/deemru/w8io/873ac7e 
70.35 ms