BCD

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