BCD

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