BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Playstables - Stables Pass
FA2Ledger
operations (8.41K)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
596
 
1
parameter (or
2
            (or
3
              (or
4
                (or
5
                  (pair %balance_of
6
                    (list %requests (pair (address %owner) (nat %token_id)))
7
                    (contract %callback (list (pair
8
                                              (pair %request (address %owner)
9
                                                             (nat %token_id))
10
                                              (nat %balance)))))
11
                  (address %declare_ownership))
12
                (or (unit %claim_ownership) (address %set_coowner)))
13
              (or (or (unit %pause) (unit %unpause))
14
                  (or (pair %set_metadata (string %k) (option %d bytes))
15
                      (pair %set_token_metadata (nat %tid) (map %tdata string bytes)))))
16
            (or
17
              (or
18
                (or
19
                  (list %update_tokens_metadatas (pair (nat %mup_id)
20
                                                      (list %mup_lines (pair
21
                                                                        (string %mul_key)
22
                                                                        (bytes %mul_value)))))
23
                  (list %update_operators (or
24
                                           (pair %add_operator (address %owner)
25
                                                               (pair (address %operator)
26
                                                                     (nat %token_id)))
27
                                           (pair %remove_operator (address %owner)
28
                                                                  (pair
29
                                                                    (address %operator)
30
                                                                    (nat %token_id))))))
31
                (or
32
                  (list %transfer (pair (address %from_)
33
                                       (list %txs (pair (address %to_)
34
                                                       (pair (nat %token_id)
35
                                                             (nat %amount))))))
36
                  (string %set_token_metadata_path)))
37
              (or (or (address %add_minter) (address %remove_minter))
38
                  (or (list %mint_list address) (nat %burn)))));
39
storage (pair (address %owner)
40
              (pair (address %coowner)
41
                    (pair (string %token_metadata_path)
42
                          (pair (option %owner_candidate address)
43
                                (pair (bool %paused)
44
                                      (pair
45
                                        (big_map %token_metadata nat
46
                                                                 (pair (nat %token_id)
47
                                                                       (map %token_info
48
                                                                         string
49
                                                                         bytes)))
50
                                        (pair (big_map %ledger nat address)
51
                                              (pair
52
                                                (set %operator (pair address
53
                                                                    (pair nat address)))
54
                                                (pair (big_map %minters address unit)
55
                                                      (pair (nat %next_token_id)
56
                                                            (big_map %metadata string
57
                                                                               bytes)))))))))));
58
code { LAMBDA
59
         nat
60
         string
61
         { PUSH unit Unit ;
62
           PUSH nat 0 ;
63
           DUP 3 ;
64
           COMPARE ;
65
           GT ;
66
           IF
67
             { PUSH string "" ;
68
               EMPTY_MAP nat string ;
69
               PUSH string "9" ;
70
               SOME ;
71
               PUSH nat 9 ;
72
               UPDATE ;
73
               PUSH string "8" ;
74
               SOME ;
75
               PUSH nat 8 ;
76
               UPDATE ;
77
               PUSH string "7" ;
78
               SOME ;
79
               PUSH nat 7 ;
80
               UPDATE ;
81
               PUSH string "6" ;
82
               SOME ;
83
               PUSH nat 6 ;
84
               UPDATE ;
85
               PUSH string "5" ;
86
               SOME ;
87
               PUSH nat 5 ;
88
               UPDATE ;
89
               PUSH string "4" ;
90
               SOME ;
91
               PUSH nat 4 ;
92
               UPDATE ;
93
               PUSH string "3" ;
94
               SOME ;
95
               PUSH nat 3 ;
96
               UPDATE ;
97
               PUSH string "2" ;
98
               SOME ;
99
               PUSH nat 2 ;
100
               UPDATE ;
101
               PUSH string "1" ;
102
               SOME ;
103
               PUSH nat 1 ;
104
               UPDATE ;
105
               PUSH string "0" ;
106
               SOME ;
107
               PUSH nat 0 ;
108
               UPDATE ;
109
               PUSH nat 0 ;
110
               DUP 5 ;
111
               COMPARE ;
112
               GT ;
113
               LOOP { PUSH nat 10 ;
114
                      DUP 5 ;
115
                      EDIV ;
116
                      IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
117
                      DUP 3 ;
118
                      DUP 3 ;
119
                      DUP 3 ;
120
                      CDR ;
121
                      GET ;
122
                      IF_NONE { PUSH string "NOT_FOUND" ; FAILWITH } {} ;
123
                      CONCAT ;
124
                      DIP { DIG 2 ; DROP } ;
125
                      DUG 2 ;
126
                      DUP ;
127
                      CAR ;
128
                      DIP { DIG 4 ; DROP } ;
129
                      DUG 4 ;
130
                      DROP ;
131
                      PUSH nat 0 ;
132
                      DUP 5 ;
133
                      COMPARE ;
134
                      GT } ;
135
               DUP 2 ;
136
               DIP { DIG 2 ; DROP } ;
137
               DUG 2 ;
138
               DROP 2 }
139
             { PUSH string "0" ; SWAP ; DROP } ;
140
           DUG 1 ;
141
           DROP } ;
142
       LAMBDA
143
         (pair string string)
144
         bytes
145
         { UNPAIR 2 ;
146
           PUSH unit Unit ;
147
           DUP 3 ;
148
           PACK ;
149
           PUSH int 6 ;
150
           DUP 2 ;
151
           SIZE ;
152
           INT ;
153
           SUB ;
154
           ABS ;
155
           DUP 2 ;
156
           DUP 2 ;
157
           PUSH nat 6 ;
158
           SLICE ;
159
           IF_NONE { PUSH string "ERROR_SLICE" ; FAILWITH } {} ;
160
           DUP ;
161
           DIP { DIG 3 ; DROP } ;
162
           DUG 3 ;
163
           DROP 3 ;
164
           DUG 2 ;
165
           DROP 2 } ;
166
       NIL operation ;
167
       DIG 3 ;
168
       UNPAIR ;
169
       DIP { UNPAIR 11 } ;
170
       IF_LEFT
171
         { IF_LEFT
172
             { IF_LEFT
173
                 { IF_LEFT
174
                     { UNPAIR ;
175
                       NIL operation ;
176
                       NIL operation ;
177
                       DUP 16 ;
178
                       ITER { CONS } ;
179
                       DUP 4 ;
180
                       AMOUNT ;
181
                       DUP 5 ;
182
                       MAP { DUP 14 ;
183
                             DUP 2 ;
184
                             CDR ;
185
                             GET ;
186
                             IF_NONE
187
                               { PUSH nat 0 }
188
                               { DUP 2 ;
189
                                 CAR ;
190
                                 DUP 2 ;
191
                                 COMPARE ;
192
                                 EQ ;
193
                                 IF { PUSH nat 1 } { PUSH nat 0 } ;
194
                                 SWAP ;
195
                                 DROP } ;
196
                             DUP 2 ;
197
                             PAIR ;
198
                             SWAP ;
199
                             DROP } ;
200
                       TRANSFER_TOKENS ;
201
                       CONS ;
202
                       ITER { CONS } ;
203
                       DIP { DIG 13 ; DROP } ;
204
                       DUG 13 ;
205
                       DROP 2 ;
206
                       PAIR 11 ;
207
                       DIG 1 ;
208
                       PAIR }
209
                     { DUP 2 ;
210
                       SENDER ;
211
                       COMPARE ;
212
                       EQ ;
213
                       IF
214
                         { PUSH bool True }
215
                         { DUP 3 ;
216
                           SENDER ;
217
                           COMPARE ;
218
                           EQ ;
219
                           IF { PUSH bool True } { PUSH bool False } } ;
220
                       NOT ;
221
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
222
                       DUP ;
223
                       SOME ;
224
                       DIP { DIG 4 ; DROP } ;
225
                       DUG 4 ;
226
                       DROP ;
227
                       PAIR 11 ;
228
                       DIG 1 ;
229
                       PAIR } }
230
                 { IF_LEFT
231
                     { DROP ;
232
                       DUP 4 ;
233
                       IF_NONE
234
                         { PUSH bool False }
235
                         { SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP } ;
236
                       NOT ;
237
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
238
                       SENDER ;
239
                       SWAP ;
240
                       DROP ;
241
                       NONE address ;
242
                       DIP { DIG 3 ; DROP } ;
243
                       DUG 3 ;
244
                       PAIR 11 ;
245
                       DIG 1 ;
246
                       PAIR }
247
                     { DUP 2 ;
248
                       SENDER ;
249
                       COMPARE ;
250
                       EQ ;
251
                       NOT ;
252
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
253
                       DUP ;
254
                       DIP { DIG 2 ; DROP } ;
255
                       DUG 2 ;
256
                       DROP ;
257
                       PAIR 11 ;
258
                       DIG 1 ;
259
                       PAIR } } }
260
             { IF_LEFT
261
                 { IF_LEFT
262
                     { DROP ;
263
                       DUP ;
264
                       SENDER ;
265
                       COMPARE ;
266
                       EQ ;
267
                       NOT ;
268
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
269
                       DUP 5 ;
270
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
271
                       PUSH bool True ;
272
                       DIP { DIG 4 ; DROP } ;
273
                       DUG 4 ;
274
                       PAIR 11 ;
275
                       DIG 1 ;
276
                       PAIR }
277
                     { DROP ;
278
                       DUP ;
279
                       SENDER ;
280
                       COMPARE ;
281
                       EQ ;
282
                       NOT ;
283
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
284
                       DUP 5 ;
285
                       NOT ;
286
                       IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
287
                       PUSH bool False ;
288
                       DIP { DIG 4 ; DROP } ;
289
                       DUG 4 ;
290
                       PAIR 11 ;
291
                       DIG 1 ;
292
                       PAIR } }
293
                 { IF_LEFT
294
                     { UNPAIR ;
295
                       SWAP ;
296
                       DUP 3 ;
297
                       SENDER ;
298
                       COMPARE ;
299
                       EQ ;
300
                       NOT ;
301
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
302
                       DUP 7 ;
303
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
304
                       DUP 13 ;
305
                       DUP 2 ;
306
                       DUP 4 ;
307
                       UPDATE ;
308
                       DIP { DIG 12 ; DROP } ;
309
                       DUG 12 ;
310
                       DROP 2 ;
311
                       PAIR 11 ;
312
                       DIG 1 ;
313
                       PAIR }
314
                     { UNPAIR ;
315
                       SWAP ;
316
                       DUP 3 ;
317
                       SENDER ;
318
                       COMPARE ;
319
                       EQ ;
320
                       IF
321
                         { PUSH bool True }
322
                         { DUP 11 ; SENDER ; MEM ; IF { PUSH bool True } { PUSH bool False } } ;
323
                       NOT ;
324
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
325
                       DUP 7 ;
326
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
327
                       DUP 8 ;
328
                       DUP 9 ;
329
                       DUP 4 ;
330
                       GET ;
331
                       IF_NONE
332
                         { PUSH string "token_metadata" ;
333
                           PUSH string "ASSET_NOT_FOUND" ;
334
                           PAIR ;
335
                           FAILWITH }
336
                         {} ;
337
                       UNPAIR ;
338
                       DROP ;
339
                       DUP 4 ;
340
                       SWAP ;
341
                       DROP ;
342
                       DUP 3 ;
343
                       SWAP ;
344
                       PAIR ;
345
                       SOME ;
346
                       DUP 4 ;
347
                       UPDATE ;
348
                       DIP { DIG 7 ; DROP } ;
349
                       DUG 7 ;
350
                       DROP 2 ;
351
                       PAIR 11 ;
352
                       DIG 1 ;
353
                       PAIR } } } }
354
         { IF_LEFT
355
             { IF_LEFT
356
                 { IF_LEFT
357
                     { DUP 2 ;
358
                       SENDER ;
359
                       COMPARE ;
360
                       EQ ;
361
                       IF
362
                         { PUSH bool True }
363
                         { DUP 10 ; SENDER ; MEM ; IF { PUSH bool True } { PUSH bool False } } ;
364
                       NOT ;
365
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
366
                       DUP 6 ;
367
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
368
                       DUP ;
369
                       ITER { DUP ;
370
                              CAR ;
371
                              DUP 2 ;
372
                              CDR ;
373
                              DUP 10 ;
374
                              DUP 3 ;
375
                              GET ;
376
                              DUP ;
377
                              IF_NONE
378
                                { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH }
379
                                {} ;
380
                              DUP ;
381
                              CDR ;
382
                              DUP 4 ;
383
                              ITER { DUP ;
384
                                     CAR ;
385
                                     DUP 2 ;
386
                                     CDR ;
387
                                     DIG 3 ;
388
                                     DUP 2 ;
389
                                     SOME ;
390
                                     DUP 4 ;
391
                                     UPDATE ;
392
                                     DUG 3 ;
393
                                     DROP 3 } ;
394
                              DUP 13 ;
395
                              DUP 14 ;
396
                              DUP 7 ;
397
                              GET ;
398
                              IF_NONE
399
                                { PUSH string "token_metadata" ;
400
                                  PUSH string "ASSET_NOT_FOUND" ;
401
                                  PAIR ;
402
                                  FAILWITH }
403
                                {} ;
404
                              UNPAIR ;
405
                              DROP ;
406
                              DUP 7 ;
407
                              SWAP ;
408
                              DROP ;
409
                              DUP 3 ;
410
                              SWAP ;
411
                              PAIR ;
412
                              SOME ;
413
                              DUP 7 ;
414
                              UPDATE ;
415
                              DIP { DIG 12 ; DROP } ;
416
                              DUG 12 ;
417
                              DROP 6 } ;
418
                       DROP ;
419
                       PAIR 11 ;
420
                       DIG 1 ;
421
                       PAIR }
422
                     { PUSH bool False ;
423
                       NOT ;
424
                       IF { PUSH string "FA2_OPERATORS_UNSUPPORTED" ; FAILWITH } {} ;
425
                       DROP ;
426
                       PAIR 11 ;
427
                       DIG 1 ;
428
                       PAIR } }
429
                 { IF_LEFT
430
                     { PUSH bool False ;
431
                       NOT ;
432
                       IF { PUSH string "FA2_TX_DENIED" ; FAILWITH } {} ;
433
                       DROP ;
434
                       PAIR 11 ;
435
                       DIG 1 ;
436
                       PAIR }
437
                     { DUP 2 ;
438
                       SENDER ;
439
                       COMPARE ;
440
                       EQ ;
441
                       IF
442
                         { PUSH bool True }
443
                         { DUP 10 ; SENDER ; MEM ; IF { PUSH bool True } { PUSH bool False } } ;
444
                       NOT ;
445
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
446
                       DUP 6 ;
447
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
448
                       DUP ;
449
                       DIP { DIG 3 ; DROP } ;
450
                       DUG 3 ;
451
                       DROP ;
452
                       PAIR 11 ;
453
                       DIG 1 ;
454
                       PAIR } } }
455
             { IF_LEFT
456
                 { IF_LEFT
457
                     { DUP 2 ;
458
                       SENDER ;
459
                       COMPARE ;
460
                       EQ ;
461
                       NOT ;
462
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
463
                       DUP 6 ;
464
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
465
                       DUP 10 ;
466
                       DUP 2 ;
467
                       MEM ;
468
                       IF
469
                         { PUSH string "minters" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH }
470
                         { DUP 10 ;
471
                           PUSH unit Unit ;
472
                           SOME ;
473
                           DUP 3 ;
474
                           UPDATE ;
475
                           DIP { DIG 9 ; DROP } ;
476
                           DUG 9 } ;
477
                       DROP ;
478
                       PAIR 11 ;
479
                       DIG 1 ;
480
                       PAIR }
481
                     { DUP 2 ;
482
                       SENDER ;
483
                       COMPARE ;
484
                       EQ ;
485
                       NOT ;
486
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
487
                       DUP 6 ;
488
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
489
                       DUP 10 ;
490
                       NONE unit ;
491
                       DUP 3 ;
492
                       UPDATE ;
493
                       DIP { DIG 9 ; DROP } ;
494
                       DUG 9 ;
495
                       DROP ;
496
                       PAIR 11 ;
497
                       DIG 1 ;
498
                       PAIR } }
499
                 { IF_LEFT
500
                     { DUP 10 ;
501
                       SENDER ;
502
                       MEM ;
503
                       NOT ;
504
                       IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
505
                       DUP 6 ;
506
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
507
                       PUSH nat 51 ;
508
                       DUP 2 ;
509
                       SIZE ;
510
                       COMPARE ;
511
                       LT ;
512
                       NOT ;
513
                       IF { PUSH string "LIST_SIZE_EXCEDEED" ; FAILWITH } {} ;
514
                       DUP ;
515
                       ITER { DUP 9 ;
516
                              DUP 13 ;
517
                              MEM ;
518
                              IF
519
                                { PUSH string "ledger" ;
520
                                  PUSH string "KEY_EXISTS" ;
521
                                  PAIR ;
522
                                  FAILWITH }
523
                                { DUP 9 ; DUP 2 ; SOME ; DUP 14 ; UPDATE ; DIP { DIG 8 ; DROP } ; DUG 8 } ;
524
                              PUSH string ".json" ;
525
                              DUP 17 ;
526
                              DUP 14 ;
527
                              EXEC ;
528
                              DUP 7 ;
529
                              CONCAT ;
530
                              CONCAT ;
531
                              EMPTY_MAP string bytes ;
532
                              DUP 17 ;
533
                              DUP 3 ;
534
                              PUSH string "ERROR_SLICE" ;
535
                              PAIR ;
536
                              EXEC ;
537
                              SOME ;
538
                              PUSH string "" ;
539
                              UPDATE ;
540
                              DUP 10 ;
541
                              DUP 15 ;
542
                              MEM ;
543
                              IF
544
                                { PUSH string "token_metadata" ;
545
                                  PUSH string "KEY_EXISTS" ;
546
                                  PAIR ;
547
                                  FAILWITH }
548
                                { DUP 10 ;
549
                                  DUP 2 ;
550
                                  DUP 16 ;
551
                                  PAIR ;
552
                                  SOME ;
553
                                  DUP 16 ;
554
                                  UPDATE ;
555
                                  DIP { DIG 9 ; DROP } ;
556
                                  DUG 9 } ;
557
                              PUSH nat 1 ;
558
                              DUP 15 ;
559
                              ADD ;
560
                              DIP { DIG 13 ; DROP } ;
561
                              DUG 13 ;
562
                              DROP 3 } ;
563
                       DROP ;
564
                       PAIR 11 ;
565
                       DIG 1 ;
566
                       PAIR }
567
                     { DUP 8 ;
568
                       DUP 2 ;
569
                       GET ;
570
                       IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP } ;
571
                       IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ;
572
                       SENDER ;
573
                       DUP 2 ;
574
                       COMPARE ;
575
                       EQ ;
576
                       NOT ;
577
                       IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ;
578
                       DUP 7 ;
579
                       IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
580
                       DUP 9 ;
581
                       NONE address ;
582
                       DUP 4 ;
583
                       UPDATE ;
584
                       DIP { DIG 8 ; DROP } ;
585
                       DUG 8 ;
586
                       DUP 8 ;
587
                       NONE (pair nat (map string bytes)) ;
588
                       DUP 4 ;
589
                       UPDATE ;
590
                       DIP { DIG 7 ; DROP } ;
591
                       DUG 7 ;
592
                       DROP 2 ;
593
                       PAIR 11 ;
594
                       DIG 1 ;
595
                       PAIR } } } } ;
596
       DIP { DROP 2 } }