BCD

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