BCD

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