BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • Ctez FA12
FA1FA1.2
operations (2.24K)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
202
 
1
parameter (or
2
            (or
3
              (or (pair %approve (address %spender) (nat %value))
4
                  (pair %getAllowance
5
                    (pair %request (address %owner) (address %spender))
6
                    (contract %callback nat)))
7
              (or (pair %getBalance (address %owner) (contract %callback nat))
8
                  (pair %getTotalSupply (unit %request) (contract %callback nat))))
9
            (or (pair %mintOrBurn (int %quantity) (address %target))
10
                (pair %transfer (address %from) (address %to) (nat %value))));
11
storage (pair (big_map %tokens address nat)
12
              (big_map %allowances (pair (address %owner) (address %spender)) nat)
13
              (address %admin)
14
              (nat %total_supply)
15
              (big_map %metadata string bytes)
16
              (big_map %token_metadata nat
17
                                       (pair (nat %token_id)
18
                                             (map %token_info string bytes))));
19
code { UNPAIR ;
20
       PUSH mutez 0 ;
21
       AMOUNT ;
22
       COMPARE ;
23
       NEQ ;
24
       IF { PUSH string "DontSendTez" ; FAILWITH } {} ;
25
       IF_LEFT
26
         { IF_LEFT
27
             { IF_LEFT
28
                 { DUP 2 ;
29
                   GET 3 ;
30
                   DUP 2 ;
31
                   CAR ;
32
                   SENDER ;
33
                   PAIR ;
34
                   PUSH nat 0 ;
35
                   DUP 4 ;
36
                   CDR ;
37
                   COMPARE ;
38
                   GT ;
39
                   PUSH nat 0 ;
40
                   DUP 4 ;
41
                   DUP 4 ;
42
                   GET ;
43
                   IF_NONE { PUSH nat 0 } {} ;
44
                   COMPARE ;
45
                   GT ;
46
                   AND ;
47
                   IF { PUSH string "UnsafeAllowanceChange" ; FAILWITH } {} ;
48
                   DIG 3 ;
49
                   DIG 3 ;
50
                   CDR ;
51
                   DIG 3 ;
52
                   PUSH nat 0 ;
53
                   DUP 3 ;
54
                   COMPARE ;
55
                   EQ ;
56
                   IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ;
57
                   DIG 3 ;
58
                   UPDATE ;
59
                   UPDATE 3 ;
60
                   NIL operation }
61
                 { DUP 2 ;
62
                   NIL operation ;
63
                   DUP 3 ;
64
                   CDR ;
65
                   PUSH mutez 0 ;
66
                   DIG 5 ;
67
                   GET 3 ;
68
                   DIG 5 ;
69
                   CAR ;
70
                   GET ;
71
                   IF_NONE { PUSH nat 0 } {} ;
72
                   TRANSFER_TOKENS ;
73
                   CONS } }
74
             { IF_LEFT
75
                 { DUP 2 ;
76
                   NIL operation ;
77
                   DUP 3 ;
78
                   CDR ;
79
                   PUSH mutez 0 ;
80
                   DIG 5 ;
81
                   CAR ;
82
                   DIG 5 ;
83
                   CAR ;
84
                   GET ;
85
                   IF_NONE { PUSH nat 0 } {} ;
86
                   TRANSFER_TOKENS }
87
                 { DUP 2 ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 4 ; GET 7 ; TRANSFER_TOKENS } ;
88
               CONS } }
89
         { IF_LEFT
90
             { DUP 2 ;
91
               GET 5 ;
92
               SENDER ;
93
               COMPARE ;
94
               NEQ ;
95
               IF { PUSH string "OnlyAdmin" ; FAILWITH } {} ;
96
               DUP ;
97
               CAR ;
98
               DUP 3 ;
99
               CAR ;
100
               DUP 3 ;
101
               CDR ;
102
               GET ;
103
               IF_NONE { PUSH nat 0 } {} ;
104
               ADD ;
105
               ISNAT ;
106
               IF_NONE
107
                 { PUSH string "Cannot burn more than the target's balance." ; FAILWITH }
108
                 {} ;
109
               DUP 2 ;
110
               CAR ;
111
               DUP 4 ;
112
               GET 7 ;
113
               ADD ;
114
               ABS ;
115
               DUP 4 ;
116
               DIG 4 ;
117
               CAR ;
118
               PUSH nat 0 ;
119
               DUP 5 ;
120
               COMPARE ;
121
               EQ ;
122
               IF { DIG 3 ; DROP ; NONE nat } { DIG 3 ; SOME } ;
123
               DIG 4 ;
124
               CDR ;
125
               UPDATE ;
126
               UPDATE 1 ;
127
               SWAP ;
128
               UPDATE 7 }
129
             { DUP 2 ;
130
               GET 3 ;
131
               DUP 3 ;
132
               CAR ;
133
               DUP 3 ;
134
               CAR ;
135
               SENDER ;
136
               COMPARE ;
137
               EQ ;
138
               IF
139
                 { SWAP }
140
                 { SENDER ;
141
                   DUP 4 ;
142
                   CAR ;
143
                   PAIR ;
144
                   DUP 4 ;
145
                   GET 4 ;
146
                   DUP 4 ;
147
                   DUP 3 ;
148
                   GET ;
149
                   IF_NONE { PUSH nat 0 } {} ;
150
                   SUB ;
151
                   ISNAT ;
152
                   IF_NONE { PUSH string "NotEnoughAllowance" ; FAILWITH } {} ;
153
                   DIG 3 ;
154
                   PUSH nat 0 ;
155
                   DUP 3 ;
156
                   COMPARE ;
157
                   EQ ;
158
                   IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ;
159
                   DIG 2 ;
160
                   UPDATE } ;
161
               DUP 3 ;
162
               GET 4 ;
163
               DUP 3 ;
164
               DUP 5 ;
165
               CAR ;
166
               GET ;
167
               IF_NONE { PUSH nat 0 } {} ;
168
               SUB ;
169
               ISNAT ;
170
               IF_NONE { PUSH string "NotEnoughBalance" ; FAILWITH } {} ;
171
               DIG 2 ;
172
               PUSH nat 0 ;
173
               DUP 3 ;
174
               COMPARE ;
175
               EQ ;
176
               IF { SWAP ; DROP ; NONE nat } { SWAP ; SOME } ;
177
               DUP 4 ;
178
               CAR ;
179
               UPDATE ;
180
               DUP 3 ;
181
               GET 4 ;
182
               DUP 2 ;
183
               DUP 5 ;
184
               GET 3 ;
185
               GET ;
186
               IF_NONE { PUSH nat 0 } {} ;
187
               ADD ;
188
               DIG 4 ;
189
               DIG 2 ;
190
               PUSH nat 0 ;
191
               DUP 4 ;
192
               COMPARE ;
193
               EQ ;
194
               IF { DIG 2 ; DROP ; NONE nat } { DIG 2 ; SOME } ;
195
               DIG 4 ;
196
               GET 3 ;
197
               UPDATE ;
198
               UPDATE 1 ;
199
               SWAP ;
200
               UPDATE 3 } ;
201
           NIL operation } ;
202
       PAIR }