BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • It's Just a Fantasy
FA2Ledger
operations (126)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
691
 
1
{ parameter (or
2
              (or
3
                (or (address %add_manager)
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
                      (list %burn (pair (address %from_)
12
                                       (pair (nat %token_id) (nat %amount))))))
13
                (or (map %create_token string bytes)
14
                    (or
15
                      (pair %lock (bool %metadata) (pair (bool %mint) (nat %token_id)))
16
                      (pair %mint (list %mint_items (pair (nat %amount) (address %to_)))
17
                                  (nat %token_id)))))
18
              (or
19
                (or (address %remove_manager)
20
                    (or (address %set_administrator)
21
                        (big_map %set_metadata string bytes)))
22
                (or
23
                  (list %transfer (pair (address %from_)
24
                                       (list %txs (pair (address %to_)
25
                                                       (pair (nat %token_id)
26
                                                             (nat %amount))))))
27
                  (or
28
                    (list %update_operators (or
29
                                             (pair %add_operator (address %owner)
30
                                                                 (pair
31
                                                                   (address %operator)
32
                                                                   (nat %token_id)))
33
                                             (pair %remove_operator (address %owner)
34
                                                                    (pair
35
                                                                      (address %operator)
36
                                                                      (nat %token_id)))))
37
                    (list %update_token_metadata (pair (nat %token_id)
38
                                                      (map %token_info string bytes))))))) ;
39
  storage (pair
40
            (pair (pair (address %administrator) (nat %last_token_id))
41
                  (pair (big_map %ledger (pair address nat) nat)
42
                        (big_map %locked nat (pair (bool %metadata) (bool %mint)))))
43
            (pair
44
              (pair (big_map %managers address unit) (big_map %metadata string bytes))
45
              (pair
46
                (big_map %operators
47
                  (pair (address %owner) (pair (address %operator) (nat %token_id)))
48
                  unit)
49
                (pair (big_map %supply nat nat)
50
                      (big_map %token_metadata nat
51
                                               (pair (nat %token_id)
52
                                                     (map %token_info string bytes))))))) ;
53
  code { UNPAIR ;
54
         IF_LEFT
55
           { IF_LEFT
56
               { IF_LEFT
57
                   { SWAP ;
58
                     DUP ;
59
                     DUG 2 ;
60
                     CAR ;
61
                     CAR ;
62
                     CAR ;
63
                     SENDER ;
64
                     COMPARE ;
65
                     EQ ;
66
                     IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
67
                     SWAP ;
68
                     UNPAIR ;
69
                     SWAP ;
70
                     UNPAIR ;
71
                     UNPAIR ;
72
                     PUSH (option unit) (Some Unit) ;
73
                     DIG 5 ;
74
                     UPDATE ;
75
                     PAIR ;
76
                     PAIR ;
77
                     SWAP ;
78
                     PAIR ;
79
                     NIL operation }
80
                   { IF_LEFT
81
                       { NIL operation ;
82
                         DUP ;
83
                         DUP 3 ;
84
                         CDR ;
85
                         PUSH mutez 0 ;
86
                         DUP 5 ;
87
                         CAR ;
88
                         MAP { DUP 7 ;
89
                               GET 8 ;
90
                               SWAP ;
91
                               DUP ;
92
                               DUG 2 ;
93
                               CDR ;
94
                               MEM ;
95
                               IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
96
                               DUP 7 ;
97
                               CAR ;
98
                               GET 3 ;
99
                               SWAP ;
100
                               DUP ;
101
                               CDR ;
102
                               SWAP ;
103
                               DUP ;
104
                               DUG 3 ;
105
                               CAR ;
106
                               PAIR ;
107
                               GET ;
108
                               IF_NONE { PUSH nat 0 } {} ;
109
                               SWAP ;
110
                               PAIR } ;
111
                         DIG 4 ;
112
                         DROP ;
113
                         DIG 4 ;
114
                         DROP ;
115
                         TRANSFER_TOKENS ;
116
                         CONS }
117
                       { DUP ;
118
                         ITER { DUP 3 ;
119
                                GET 8 ;
120
                                SWAP ;
121
                                DUP ;
122
                                DUG 2 ;
123
                                GET 3 ;
124
                                MEM ;
125
                                IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
126
                                DUP ;
127
                                CAR ;
128
                                SENDER ;
129
                                COMPARE ;
130
                                EQ ;
131
                                IF
132
                                  { PUSH bool True }
133
                                  { DUP 3 ;
134
                                    GET 5 ;
135
                                    SWAP ;
136
                                    DUP ;
137
                                    DUG 2 ;
138
                                    GET 3 ;
139
                                    SENDER ;
140
                                    DUP 4 ;
141
                                    CAR ;
142
                                    PAIR 3 ;
143
                                    MEM } ;
144
                                IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
145
                                DUP 3 ;
146
                                UNPAIR ;
147
                                UNPAIR ;
148
                                SWAP ;
149
                                UNPAIR ;
150
                                DUP 5 ;
151
                                GET 4 ;
152
                                DIG 7 ;
153
                                CAR ;
154
                                GET 3 ;
155
                                DIG 6 ;
156
                                DUP ;
157
                                GET 3 ;
158
                                SWAP ;
159
                                DUP ;
160
                                DUG 8 ;
161
                                CAR ;
162
                                PAIR ;
163
                                GET ;
164
                                IF_NONE { PUSH nat 0 } {} ;
165
                                SUB ;
166
                                ISNAT ;
167
                                IF_NONE
168
                                  { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH }
169
                                  {} ;
170
                                SOME ;
171
                                DIG 5 ;
172
                                DUP ;
173
                                GET 3 ;
174
                                SWAP ;
175
                                DUP ;
176
                                DUG 7 ;
177
                                CAR ;
178
                                PAIR ;
179
                                UPDATE ;
180
                                PAIR ;
181
                                SWAP ;
182
                                PAIR ;
183
                                PAIR ;
184
                                DUG 2 ;
185
                                DUP ;
186
                                GET 4 ;
187
                                DUP 4 ;
188
                                GET 7 ;
189
                                DUP 3 ;
190
                                GET 3 ;
191
                                GET ;
192
                                IF_NONE { PUSH nat 0 } {} ;
193
                                SUB ;
194
                                ISNAT ;
195
                                IF_NONE
196
                                  { DIG 2 ;
197
                                    DUP ;
198
                                    GET 7 ;
199
                                    PUSH (option nat) (Some 0) ;
200
                                    DIG 3 ;
201
                                    GET 3 ;
202
                                    UPDATE ;
203
                                    UPDATE 7 ;
204
                                    SWAP }
205
                                  { DIG 3 ;
206
                                    DUP ;
207
                                    GET 7 ;
208
                                    DIG 2 ;
209
                                    SOME ;
210
                                    DIG 3 ;
211
                                    GET 3 ;
212
                                    UPDATE ;
213
                                    UPDATE 7 ;
214
                                    SWAP } } ;
215
                         DROP ;
216
                         NIL operation } } }
217
               { IF_LEFT
218
                   { SWAP ;
219
                     DUP ;
220
                     DUG 2 ;
221
                     CAR ;
222
                     CAR ;
223
                     CAR ;
224
                     SENDER ;
225
                     COMPARE ;
226
                     EQ ;
227
                     IF
228
                       { PUSH bool True }
229
                       { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
230
                     IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
231
                     PUSH nat 1 ;
232
                     DUP 3 ;
233
                     CAR ;
234
                     CAR ;
235
                     CDR ;
236
                     ADD ;
237
                     DIG 2 ;
238
                     DUP ;
239
                     GET 8 ;
240
                     DIG 3 ;
241
                     DUP 4 ;
242
                     PAIR ;
243
                     SOME ;
244
                     DUP 4 ;
245
                     UPDATE ;
246
                     UPDATE 8 ;
247
                     DUP ;
248
                     GET 7 ;
249
                     PUSH (option nat) (Some 0) ;
250
                     DIG 3 ;
251
                     UPDATE ;
252
                     UPDATE 7 ;
253
                     UNPAIR ;
254
                     UNPAIR ;
255
                     UNPAIR ;
256
                     SWAP ;
257
                     PUSH nat 1 ;
258
                     ADD ;
259
                     SWAP ;
260
                     PAIR ;
261
                     PAIR ;
262
                     PAIR }
263
                   { IF_LEFT
264
                       { SWAP ;
265
                         DUP ;
266
                         DUG 2 ;
267
                         CAR ;
268
                         CAR ;
269
                         CAR ;
270
                         SENDER ;
271
                         COMPARE ;
272
                         EQ ;
273
                         IF
274
                           { PUSH bool True }
275
                           { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
276
                         IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
277
                         SWAP ;
278
                         DUP ;
279
                         DUG 2 ;
280
                         GET 8 ;
281
                         SWAP ;
282
                         DUP ;
283
                         DUG 2 ;
284
                         GET 4 ;
285
                         MEM ;
286
                         IF {} { PUSH string "OE_TOKEN_MISSING" ; FAILWITH } ;
287
                         SWAP ;
288
                         DUP ;
289
                         DUG 2 ;
290
                         CAR ;
291
                         GET 4 ;
292
                         SWAP ;
293
                         DUP ;
294
                         DUG 2 ;
295
                         GET 4 ;
296
                         GET ;
297
                         IF_NONE { PUSH (pair bool bool) (Pair False False) } {} ;
298
                         DUP ;
299
                         CAR ;
300
                         IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; CAR } ;
301
                         UPDATE 1 ;
302
                         DUP ;
303
                         CDR ;
304
                         IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 } ;
305
                         UPDATE 2 ;
306
                         DIG 2 ;
307
                         UNPAIR ;
308
                         UNPAIR ;
309
                         SWAP ;
310
                         UNPAIR ;
311
                         SWAP ;
312
                         DIG 4 ;
313
                         SOME ;
314
                         DIG 5 ;
315
                         GET 4 ;
316
                         UPDATE ;
317
                         SWAP ;
318
                         PAIR ;
319
                         SWAP ;
320
                         PAIR ;
321
                         PAIR }
322
                       { SWAP ;
323
                         DUP ;
324
                         DUG 2 ;
325
                         CAR ;
326
                         CAR ;
327
                         CAR ;
328
                         SENDER ;
329
                         COMPARE ;
330
                         EQ ;
331
                         IF
332
                           { PUSH bool True }
333
                           { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
334
                         IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
335
                         SWAP ;
336
                         DUP ;
337
                         DUG 2 ;
338
                         GET 8 ;
339
                         SWAP ;
340
                         DUP ;
341
                         DUG 2 ;
342
                         CDR ;
343
                         MEM ;
344
                         IF {} { PUSH string "OE_TOKEN_N_EXTIST" ; FAILWITH } ;
345
                         SWAP ;
346
                         DUP ;
347
                         DUG 2 ;
348
                         CAR ;
349
                         GET 4 ;
350
                         SWAP ;
351
                         DUP ;
352
                         DUG 2 ;
353
                         CDR ;
354
                         MEM ;
355
                         IF
356
                           { SWAP ;
357
                             DUP ;
358
                             DUG 2 ;
359
                             CAR ;
360
                             GET 4 ;
361
                             SWAP ;
362
                             DUP ;
363
                             DUG 2 ;
364
                             CDR ;
365
                             GET ;
366
                             IF_NONE { PUSH int 135 ; FAILWITH } {} ;
367
                             CDR ;
368
                             NOT }
369
                           { PUSH bool True } ;
370
                         IF {} { PUSH string "OE_MINT_LOCKED" ; FAILWITH } ;
371
                         PUSH nat 0 ;
372
                         SWAP ;
373
                         DUP ;
374
                         DUG 2 ;
375
                         CAR ;
376
                         ITER { DUP 4 ;
377
                                UNPAIR ;
378
                                UNPAIR ;
379
                                SWAP ;
380
                                UNPAIR ;
381
                                DUP 5 ;
382
                                CAR ;
383
                                DIG 8 ;
384
                                CAR ;
385
                                GET 3 ;
386
                                DUP 9 ;
387
                                CDR ;
388
                                DUP 8 ;
389
                                CDR ;
390
                                PAIR ;
391
                                GET ;
392
                                IF_NONE { PUSH nat 0 } {} ;
393
                                ADD ;
394
                                SOME ;
395
                                DUP 8 ;
396
                                CDR ;
397
                                DUP 7 ;
398
                                CDR ;
399
                                PAIR ;
400
                                UPDATE ;
401
                                PAIR ;
402
                                SWAP ;
403
                                PAIR ;
404
                                PAIR ;
405
                                DUG 3 ;
406
                                CAR ;
407
                                ADD } ;
408
                         DUP 3 ;
409
                         GET 7 ;
410
                         DUP 3 ;
411
                         CDR ;
412
                         GET ;
413
                         IF_NONE { PUSH nat 0 } {} ;
414
                         DIG 3 ;
415
                         DUP ;
416
                         GET 7 ;
417
                         DIG 3 ;
418
                         DIG 3 ;
419
                         ADD ;
420
                         SOME ;
421
                         DIG 3 ;
422
                         CDR ;
423
                         UPDATE ;
424
                         UPDATE 7 } } ;
425
                 NIL operation } }
426
           { IF_LEFT
427
               { IF_LEFT
428
                   { SWAP ;
429
                     DUP ;
430
                     DUG 2 ;
431
                     CAR ;
432
                     CAR ;
433
                     CAR ;
434
                     SENDER ;
435
                     COMPARE ;
436
                     EQ ;
437
                     IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
438
                     SWAP ;
439
                     UNPAIR ;
440
                     SWAP ;
441
                     UNPAIR ;
442
                     UNPAIR ;
443
                     NONE unit ;
444
                     DIG 5 ;
445
                     UPDATE ;
446
                     PAIR ;
447
                     PAIR ;
448
                     SWAP ;
449
                     PAIR }
450
                   { IF_LEFT
451
                       { SWAP ;
452
                         DUP ;
453
                         DUG 2 ;
454
                         CAR ;
455
                         CAR ;
456
                         CAR ;
457
                         SENDER ;
458
                         COMPARE ;
459
                         EQ ;
460
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
461
                         SWAP ;
462
                         UNPAIR ;
463
                         UNPAIR ;
464
                         CDR ;
465
                         DIG 3 ;
466
                         PAIR ;
467
                         PAIR ;
468
                         PAIR }
469
                       { SWAP ;
470
                         DUP ;
471
                         DUG 2 ;
472
                         CAR ;
473
                         CAR ;
474
                         CAR ;
475
                         SENDER ;
476
                         COMPARE ;
477
                         EQ ;
478
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
479
                         SWAP ;
480
                         UNPAIR ;
481
                         SWAP ;
482
                         UNPAIR ;
483
                         CAR ;
484
                         DIG 3 ;
485
                         SWAP ;
486
                         PAIR ;
487
                         PAIR ;
488
                         SWAP ;
489
                         PAIR } } }
490
               { IF_LEFT
491
                   { DUP ;
492
                     ITER { DUP ;
493
                            CDR ;
494
                            ITER { DUP 4 ;
495
                                   GET 8 ;
496
                                   SWAP ;
497
                                   DUP ;
498
                                   DUG 2 ;
499
                                   GET 3 ;
500
                                   MEM ;
501
                                   IF
502
                                     {}
503
                                     { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
504
                                   SWAP ;
505
                                   DUP ;
506
                                   DUG 2 ;
507
                                   CAR ;
508
                                   SENDER ;
509
                                   COMPARE ;
510
                                   EQ ;
511
                                   IF
512
                                     { PUSH bool True }
513
                                     { DUP 4 ;
514
                                       GET 5 ;
515
                                       SWAP ;
516
                                       DUP ;
517
                                       DUG 2 ;
518
                                       GET 3 ;
519
                                       SENDER ;
520
                                       DUP 5 ;
521
                                       CAR ;
522
                                       PAIR 3 ;
523
                                       MEM } ;
524
                                   IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
525
                                   DUP ;
526
                                   GET 4 ;
527
                                   PUSH nat 0 ;
528
                                   COMPARE ;
529
                                   LT ;
530
                                   IF
531
                                     { DUP 4 ;
532
                                       UNPAIR ;
533
                                       UNPAIR ;
534
                                       SWAP ;
535
                                       UNPAIR ;
536
                                       DUP 5 ;
537
                                       GET 4 ;
538
                                       DIG 8 ;
539
                                       CAR ;
540
                                       GET 3 ;
541
                                       DUP 7 ;
542
                                       GET 3 ;
543
                                       DUP 9 ;
544
                                       CAR ;
545
                                       PAIR ;
546
                                       GET ;
547
                                       IF_NONE { PUSH nat 0 } {} ;
548
                                       SUB ;
549
                                       ISNAT ;
550
                                       IF_NONE
551
                                         { PUSH string "FA2_INSUFFICIENT_BALANCE" ;
552
                                           FAILWITH }
553
                                         {} ;
554
                                       SOME ;
555
                                       DUP 6 ;
556
                                       GET 3 ;
557
                                       DUP 8 ;
558
                                       CAR ;
559
                                       PAIR ;
560
                                       UPDATE ;
561
                                       PAIR ;
562
                                       SWAP ;
563
                                       PAIR ;
564
                                       PAIR ;
565
                                       DUP ;
566
                                       DUG 4 ;
567
                                       UNPAIR ;
568
                                       UNPAIR ;
569
                                       SWAP ;
570
                                       UNPAIR ;
571
                                       DUP 5 ;
572
                                       GET 4 ;
573
                                       DIG 8 ;
574
                                       CAR ;
575
                                       GET 3 ;
576
                                       DIG 6 ;
577
                                       DUP ;
578
                                       GET 3 ;
579
                                       SWAP ;
580
                                       DUP ;
581
                                       DUG 8 ;
582
                                       CAR ;
583
                                       PAIR ;
584
                                       GET ;
585
                                       IF_NONE { PUSH nat 0 } {} ;
586
                                       ADD ;
587
                                       SOME ;
588
                                       DIG 5 ;
589
                                       DUP ;
590
                                       GET 3 ;
591
                                       SWAP ;
592
                                       CAR ;
593
                                       PAIR ;
594
                                       UPDATE ;
595
                                       PAIR ;
596
                                       SWAP ;
597
                                       PAIR ;
598
                                       PAIR ;
599
                                       DUG 2 }
600
                                     { DROP } } ;
601
                            DROP } ;
602
                     DROP }
603
                   { IF_LEFT
604
                       { DUP ;
605
                         ITER { IF_LEFT
606
                                  { DUP ;
607
                                    CAR ;
608
                                    SENDER ;
609
                                    COMPARE ;
610
                                    EQ ;
611
                                    IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
612
                                    DIG 2 ;
613
                                    DUP ;
614
                                    GET 5 ;
615
                                    PUSH (option unit) (Some Unit) ;
616
                                    DIG 3 ;
617
                                    UPDATE ;
618
                                    UPDATE 5 ;
619
                                    SWAP }
620
                                  { DUP ;
621
                                    CAR ;
622
                                    SENDER ;
623
                                    COMPARE ;
624
                                    EQ ;
625
                                    IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
626
                                    DIG 2 ;
627
                                    DUP ;
628
                                    GET 5 ;
629
                                    NONE unit ;
630
                                    DIG 3 ;
631
                                    UPDATE ;
632
                                    UPDATE 5 ;
633
                                    SWAP } } ;
634
                         DROP }
635
                       { SWAP ;
636
                         DUP ;
637
                         DUG 2 ;
638
                         CAR ;
639
                         CAR ;
640
                         CAR ;
641
                         SENDER ;
642
                         COMPARE ;
643
                         EQ ;
644
                         IF
645
                           { PUSH bool True }
646
                           { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
647
                         IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
648
                         DUP ;
649
                         ITER { DUP 3 ;
650
                                CAR ;
651
                                GET 4 ;
652
                                SWAP ;
653
                                DUP ;
654
                                DUG 2 ;
655
                                CAR ;
656
                                MEM ;
657
                                IF
658
                                  { DUP 3 ;
659
                                    CAR ;
660
                                    GET 4 ;
661
                                    SWAP ;
662
                                    DUP ;
663
                                    DUG 2 ;
664
                                    CAR ;
665
                                    GET ;
666
                                    IF_NONE { PUSH int 71 ; FAILWITH } {} ;
667
                                    CAR ;
668
                                    NOT }
669
                                  { PUSH bool True } ;
670
                                IF {} { PUSH string "OE_TOKEN_LOCKED" ; FAILWITH } ;
671
                                DIG 2 ;
672
                                DUP ;
673
                                GET 8 ;
674
                                DIG 2 ;
675
                                DUP ;
676
                                CDR ;
677
                                SWAP ;
678
                                DUP ;
679
                                DUG 4 ;
680
                                CAR ;
681
                                PAIR ;
682
                                SOME ;
683
                                DIG 3 ;
684
                                CAR ;
685
                                UPDATE ;
686
                                UPDATE 8 ;
687
                                SWAP } ;
688
                         DROP } } } ;
689
             NIL operation } ;
690
         PAIR } ;
691
  view "get_last_token_id" unit nat { CDR ; CAR ; CAR ; CDR } }