BCD

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