BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • KT18qA4...wpop
FA2Ledger
operations (24)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
308
 
1
parameter (or (nat %burn)
2
              (or (pair %mint (bytes %link_to_metadata) (address %owner))
3
                  (or
4
                    (list %update_operators (or
5
                                             (pair %add_operator (address %owner)
6
                                                                 (address %operator)
7
                                                                 (nat %token_id))
8
                                             (pair %remove_operator (address %owner)
9
                                                                    (address %operator)
10
                                                                    (nat %token_id))))
11
                    (or
12
                      (pair %balance_of
13
                        (list %requests (pair (address %owner) (nat %token_id)))
14
                        (contract %callback (list (pair
15
                                                  (pair %request (address %owner)
16
                                                                 (nat %token_id))
17
                                                  (nat %balance)))))
18
                      (list %transfer (pair (address %from_)
19
                                           (list %txs (pair (address %to_)
20
                                                           (nat %token_id)
21
                                                           (nat %amount)))))))));
22
storage (pair (big_map %ledger nat address)
23
              (big_map %operators (pair address address nat) unit)
24
              (big_map %reverse_ledger address (list nat))
25
              (big_map %metadata string bytes)
26
              (big_map %token_metadata nat
27
                                       (pair (nat %token_id)
28
                                             (map %token_info string bytes)))
29
              (nat %next_token_id)
30
              (address %admin));
31
code { PUSH string "FA2_TOKEN_UNDEFINED" ;
32
       PUSH string "FA2_INSUFFICIENT_BALANCE" ;
33
       DIG 2 ;
34
       UNPAIR ;
35
       IF_LEFT
36
         { DIG 2 ;
37
           DIG 3 ;
38
           DROP 2 ;
39
           DUP 2 ;
40
           CAR ;
41
           DUP 2 ;
42
           GET ;
43
           IF_NONE
44
             { PUSH string "UNKNOWN_TOKEN" ; FAILWITH }
45
             { SENDER ;
46
               SWAP ;
47
               COMPARE ;
48
               NEQ ;
49
               IF
50
                 { PUSH string "NOT_TOKEN_OWNER" ; FAILWITH }
51
                 { DUP 2 ; CAR ; DUP 2 ; NONE address ; SWAP ; UPDATE } } ;
52
           SENDER ;
53
           DUP 4 ;
54
           GET 5 ;
55
           DUP 2 ;
56
           GET ;
57
           IF_NONE
58
             { DIG 2 ; DROP 2 ; PUSH string "NOT_A_USER" ; FAILWITH }
59
             { DUP 5 ;
60
               GET 5 ;
61
               NIL nat ;
62
               DIG 2 ;
63
               ITER { SWAP ; DUP 6 ; DUP 3 ; COMPARE ; EQ ; IF { SWAP ; DROP } { SWAP ; CONS } } ;
64
               DIG 4 ;
65
               DROP ;
66
               SOME ;
67
               DIG 2 ;
68
               UPDATE } ;
69
           DUG 2 ;
70
           UPDATE 1 ;
71
           SWAP ;
72
           UPDATE 5 ;
73
           NIL operation }
74
         { IF_LEFT
75
             { DIG 2 ;
76
               DIG 3 ;
77
               DROP 2 ;
78
               UNPAIR ;
79
               DUP 3 ;
80
               GET 11 ;
81
               DUP 4 ;
82
               DUP 5 ;
83
               CAR ;
84
               DUP 5 ;
85
               DUP 4 ;
86
               SWAP ;
87
               SOME ;
88
               SWAP ;
89
               UPDATE ;
90
               UPDATE 1 ;
91
               DUP 5 ;
92
               GET 5 ;
93
               DUP 5 ;
94
               GET ;
95
               IF_NONE
96
                 { DUP 5 ; GET 5 ; NIL nat ; DUP 4 ; CONS ; DIG 5 ; SWAP ; SOME ; SWAP ; UPDATE }
97
                 { DUP 6 ; GET 5 ; SWAP ; DUP 4 ; CONS ; SOME ; DIG 5 ; UPDATE } ;
98
               UPDATE 5 ;
99
               DIG 3 ;
100
               GET 9 ;
101
               EMPTY_MAP string bytes ;
102
               DIG 4 ;
103
               SOME ;
104
               PUSH string "" ;
105
               UPDATE ;
106
               DUP 4 ;
107
               PAIR ;
108
               DUP 4 ;
109
               SWAP ;
110
               SOME ;
111
               SWAP ;
112
               UPDATE ;
113
               UPDATE 9 ;
114
               PUSH nat 1 ;
115
               DIG 2 ;
116
               ADD ;
117
               UPDATE 11 ;
118
               NIL operation }
119
             { IF_LEFT
120
                 { DIG 2 ;
121
                   DIG 3 ;
122
                   DROP 2 ;
123
                   SENDER ;
124
                   DUP 3 ;
125
                   GET 3 ;
126
                   DIG 2 ;
127
                   ITER { SWAP ;
128
                          DUP 3 ;
129
                          DUP 3 ;
130
                          IF_LEFT {} {} ;
131
                          CAR ;
132
                          COMPARE ;
133
                          EQ ;
134
                          IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
135
                          SWAP ;
136
                          IF_LEFT
137
                            { SWAP ; UNIT ; SOME ; DUP 3 ; GET 4 ; DUP 4 ; GET 3 ; PAIR ; DIG 3 ; CAR ; PAIR ; UPDATE }
138
                            { SWAP ;
139
                              DUP 2 ;
140
                              GET 4 ;
141
                              DUP 3 ;
142
                              GET 3 ;
143
                              PAIR ;
144
                              DIG 2 ;
145
                              CAR ;
146
                              PAIR ;
147
                              NONE unit ;
148
                              SWAP ;
149
                              UPDATE } } ;
150
                   SWAP ;
151
                   DROP ;
152
                   UPDATE 3 ;
153
                   NIL operation }
154
                 { IF_LEFT
155
                     { DIG 2 ;
156
                       DROP ;
157
                       DUP ;
158
                       CAR ;
159
                       MAP { DUP 3 ;
160
                             CAR ;
161
                             DUP 2 ;
162
                             CDR ;
163
                             GET ;
164
                             IF_NONE
165
                               { DROP ; DUP 3 ; FAILWITH }
166
                               { DUP 2 ;
167
                                 CAR ;
168
                                 SWAP ;
169
                                 COMPARE ;
170
                                 EQ ;
171
                                 IF { PUSH nat 1 } { PUSH nat 0 } ;
172
                                 SWAP ;
173
                                 PAIR } } ;
174
                       DIG 3 ;
175
                       DROP ;
176
                       SWAP ;
177
                       CDR ;
178
                       PUSH mutez 0 ;
179
                       DIG 2 ;
180
                       TRANSFER_TOKENS ;
181
                       SWAP ;
182
                       NIL operation ;
183
                       DIG 2 ;
184
                       CONS }
185
                     { DUP 2 ;
186
                       GET 5 ;
187
                       DUP 3 ;
188
                       CAR ;
189
                       PAIR ;
190
                       SWAP ;
191
                       ITER { SWAP ;
192
                              DUP 2 ;
193
                              CDR ;
194
                              ITER { SWAP ;
195
                                     UNPAIR ;
196
                                     PUSH nat 0 ;
197
                                     DUP 4 ;
198
                                     GET 4 ;
199
                                     COMPARE ;
200
                                     EQ ;
201
                                     IF
202
                                       { DIG 2 ; DROP ; PAIR }
203
                                       { PUSH nat 1 ;
204
                                         DUP 4 ;
205
                                         GET 4 ;
206
                                         COMPARE ;
207
                                         NEQ ;
208
                                         IF
209
                                           { DROP 3 ; DUP 3 ; FAILWITH }
210
                                           { DUP ;
211
                                             DUP 4 ;
212
                                             GET 3 ;
213
                                             GET ;
214
                                             IF_NONE
215
                                               { DROP 3 ; DUP 4 ; FAILWITH }
216
                                               { DUP 5 ;
217
                                                 CAR ;
218
                                                 DUP 2 ;
219
                                                 COMPARE ;
220
                                                 NEQ ;
221
                                                 IF
222
                                                   { DROP 4 ; DUP 3 ; FAILWITH }
223
                                                   { DUP 6 ;
224
                                                     GET 3 ;
225
                                                     DUP 5 ;
226
                                                     GET 3 ;
227
                                                     SENDER ;
228
                                                     DIG 3 ;
229
                                                     DUP 2 ;
230
                                                     DUP 2 ;
231
                                                     COMPARE ;
232
                                                     EQ ;
233
                                                     IF
234
                                                       { DROP 4 }
235
                                                       { DUG 3 ;
236
                                                         PAIR ;
237
                                                         DIG 2 ;
238
                                                         PAIR ;
239
                                                         MEM ;
240
                                                         IF
241
                                                           {}
242
                                                           { PUSH string "FA2_NOT_OPERATOR" ;
243
                                                             FAILWITH } } ;
244
                                                     DUP 2 ;
245
                                                     DUP 5 ;
246
                                                     CAR ;
247
                                                     GET ;
248
                                                     IF_NONE
249
                                                       { SWAP ; DROP ; DUP 5 ; FAILWITH }
250
                                                       { DIG 2 ;
251
                                                         NIL nat ;
252
                                                         DIG 2 ;
253
                                                         ITER { SWAP ;
254
                                                                DUP 5 ;
255
                                                                GET 3 ;
256
                                                                DUP 3 ;
257
                                                                COMPARE ;
258
                                                                EQ ;
259
                                                                IF
260
                                                                  { SWAP ; DROP }
261
                                                                  { SWAP ; CONS } } ;
262
                                                         SOME ;
263
                                                         DUP 5 ;
264
                                                         CAR ;
265
                                                         UPDATE } ;
266
                                                     DUP ;
267
                                                     DUP 4 ;
268
                                                     CAR ;
269
                                                     GET ;
270
                                                     IF_NONE
271
                                                       { NIL nat ;
272
                                                         DUP 4 ;
273
                                                         GET 3 ;
274
                                                         CONS ;
275
                                                         DUP 4 ;
276
                                                         CAR ;
277
                                                         SWAP ;
278
                                                         SOME ;
279
                                                         SWAP ;
280
                                                         UPDATE }
281
                                                       { DUP 4 ;
282
                                                         GET 3 ;
283
                                                         CONS ;
284
                                                         SOME ;
285
                                                         DUP 4 ;
286
                                                         CAR ;
287
                                                         UPDATE } ;
288
                                                     SWAP ;
289
                                                     DUP 3 ;
290
                                                     CAR ;
291
                                                     SOME ;
292
                                                     DIG 3 ;
293
                                                     GET 3 ;
294
                                                     UPDATE ;
295
                                                     PAIR } } } } } ;
296
                              SWAP ;
297
                              DROP } ;
298
                       DIG 2 ;
299
                       DIG 3 ;
300
                       DROP 2 ;
301
                       UNPAIR ;
302
                       DIG 2 ;
303
                       SWAP ;
304
                       UPDATE 1 ;
305
                       SWAP ;
306
                       UPDATE 5 ;
307
                       NIL operation } } } } ;
308
       PAIR }