BCD

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