BCD

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