BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1QuPo...dRzN
FA2Ledger
operations (1)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
254
 
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 %transfer (pair (address %from_)
10
                                     (list %txs (pair (address %to_) (nat %token_id)
11
                                                     (nat %amount))))))
12
              (or (map %update_metadata string bytes)
13
                  (list %update_operators (or
14
                                           (pair %add_operator (address %owner)
15
                                                               (address %operator)
16
                                                               (nat %token_id))
17
                                           (pair %remove_operator (address %owner)
18
                                                                  (address %operator)
19
                                                                  (nat %token_id)))))) ;
20
  storage (pair (big_map %ledger address nat) (big_map %operators address (set address))
21
                (nat %total_supply)
22
                (big_map %metadata string bytes)
23
                (big_map %token_metadata nat
24
                                         (pair (nat %token_id)
25
                                               (map %token_info string bytes)))
26
                (address %admin)) ;
27
  code { LAMBDA
28
           nat
29
           unit
30
           { PUSH nat 0 ;
31
             SWAP ;
32
             COMPARE ;
33
             EQ ;
34
             IF { UNIT } { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } } ;
35
         SWAP ;
36
         UNPAIR ;
37
         IF_LEFT
38
           { IF_LEFT
39
               { DUP 2 ;
40
                 NIL operation ;
41
                 DUP 3 ;
42
                 CDR ;
43
                 PUSH mutez 0 ;
44
                 NIL (pair (pair address nat) nat) ;
45
                 DIG 5 ;
46
                 CAR ;
47
                 ITER { SWAP ;
48
                        DUP 2 ;
49
                        CDR ;
50
                        DUP 9 ;
51
                        SWAP ;
52
                        EXEC ;
53
                        DROP ;
54
                        DUP 7 ;
55
                        CAR ;
56
                        DUP 3 ;
57
                        CAR ;
58
                        GET ;
59
                        IF_NONE { PUSH nat 0 } {} ;
60
                        DIG 2 ;
61
                        PAIR ;
62
                        CONS } ;
63
                 DIG 5 ;
64
                 DIG 6 ;
65
                 DROP 2 ;
66
                 TRANSFER_TOKENS ;
67
                 CONS }
68
               { DUP 2 ;
69
                 DUP 3 ;
70
                 CAR ;
71
                 DIG 2 ;
72
                 ITER { SWAP ;
73
                        PUSH string "FA2_NOT_OPERATOR" ;
74
                        DUP 5 ;
75
                        GET 3 ;
76
                        DUP 4 ;
77
                        CAR ;
78
                        GET ;
79
                        IF_NONE { EMPTY_SET address } {} ;
80
                        SENDER ;
81
                        MEM ;
82
                        SENDER ;
83
                        DUP 5 ;
84
                        CAR ;
85
                        COMPARE ;
86
                        EQ ;
87
                        OR ;
88
                        IF { DROP } { FAILWITH } ;
89
                        DUP 2 ;
90
                        CDR ;
91
                        ITER { SWAP ;
92
                               DUP 2 ;
93
                               GET 3 ;
94
                               DUP 7 ;
95
                               SWAP ;
96
                               EXEC ;
97
                               DROP ;
98
                               DUP ;
99
                               PUSH string "FA2_INSUFFICIENT_BALANCE" ;
100
                               DUP 4 ;
101
                               GET 4 ;
102
                               PUSH nat 0 ;
103
                               DIG 4 ;
104
                               DUP 7 ;
105
                               CAR ;
106
                               GET ;
107
                               IF_NONE {} { SWAP ; DROP } ;
108
                               SUB ;
109
                               ISNAT ;
110
                               IF_NONE { FAILWITH } { SWAP ; DROP } ;
111
                               DUP 4 ;
112
                               CAR ;
113
                               SWAP ;
114
                               SOME ;
115
                               SWAP ;
116
                               UPDATE ;
117
                               DUP ;
118
                               DUP 3 ;
119
                               GET 4 ;
120
                               PUSH nat 0 ;
121
                               DIG 3 ;
122
                               DUP 5 ;
123
                               CAR ;
124
                               GET ;
125
                               IF_NONE {} { SWAP ; DROP } ;
126
                               ADD ;
127
                               DIG 2 ;
128
                               CAR ;
129
                               SWAP ;
130
                               SOME ;
131
                               SWAP ;
132
                               UPDATE } ;
133
                        SWAP ;
134
                        DROP } ;
135
                 DIG 2 ;
136
                 DIG 3 ;
137
                 DROP 2 ;
138
                 UPDATE 1 ;
139
                 NIL operation } }
140
           { IF_LEFT
141
               { DIG 2 ;
142
                 DROP ;
143
                 SWAP ;
144
                 DUP ;
145
                 GET 10 ;
146
                 PUSH string "SENDER_NOT_ADMIN" ;
147
                 SENDER ;
148
                 DIG 2 ;
149
                 COMPARE ;
150
                 EQ ;
151
                 IF { DROP } { FAILWITH } ;
152
                 DUP ;
153
                 GET 9 ;
154
                 DIG 2 ;
155
                 PUSH nat 0 ;
156
                 PAIR ;
157
                 SOME ;
158
                 PUSH nat 0 ;
159
                 UPDATE ;
160
                 UPDATE 9 }
161
               { DUP 2 ;
162
                 DIG 2 ;
163
                 GET 3 ;
164
                 DIG 2 ;
165
                 ITER { IF_LEFT { PUSH bool True } { PUSH bool False } ;
166
                        SWAP ;
167
                        DUP ;
168
                        GET 4 ;
169
                        DUP 6 ;
170
                        SWAP ;
171
                        EXEC ;
172
                        DROP ;
173
                        PUSH string "FA2_NOT_OWNER" ;
174
                        DUP 2 ;
175
                        CAR ;
176
                        SENDER ;
177
                        COMPARE ;
178
                        EQ ;
179
                        IF { DROP } { FAILWITH } ;
180
                        EMPTY_SET address ;
181
                        DUP 4 ;
182
                        DUP 3 ;
183
                        CAR ;
184
                        GET ;
185
                        IF_NONE {} { SWAP ; DROP } ;
186
                        DIG 2 ;
187
                        DUP 3 ;
188
                        GET 3 ;
189
                        UPDATE ;
190
                        DIG 2 ;
191
                        SWAP ;
192
                        DIG 2 ;
193
                        CAR ;
194
                        SWAP ;
195
                        SOME ;
196
                        SWAP ;
197
                        UPDATE } ;
198
                 DIG 2 ;
199
                 DROP ;
200
                 UPDATE 3 } ;
201
             NIL operation } ;
202
         PAIR } ;
203
  view "get_balance" (pair (address %owner) (nat %token_id)) nat
204
        { UNPAIR ;
205
          PUSH nat 0 ;
206
          DUP 2 ;
207
          CDR ;
208
          COMPARE ;
209
          EQ ;
210
          IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
211
          SWAP ;
212
          CAR ;
213
          SWAP ;
214
          CAR ;
215
          GET ;
216
          IF_NONE { PUSH nat 0 } {} } ;
217
  view "total_supply" nat nat
218
        { UNPAIR ;
219
          PUSH nat 0 ;
220
          SWAP ;
221
          COMPARE ;
222
          EQ ;
223
          IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
224
          GET 5 } ;
225
  view "all_tokens" unit (list nat) { DROP ; NIL nat ; PUSH nat 0 ; CONS } ;
226
  view "is_operator" (pair (address %owner) (address %operator) (nat %token_id)) bool
227
        { UNPAIR ;
228
          PUSH nat 0 ;
229
          DUP 2 ;
230
          GET 4 ;
231
          COMPARE ;
232
          EQ ;
233
          IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
234
          SWAP ;
235
          GET 3 ;
236
          DUP 2 ;
237
          CAR ;
238
          GET ;
239
          IF_NONE { EMPTY_SET address } {} ;
240
          SWAP ;
241
          GET 3 ;
242
          MEM } ;
243
  view "token_metadata" nat (pair (nat %token_id) (map %token_info string bytes))
244
        { UNPAIR ;
245
          PUSH nat 0 ;
246
          DUP 2 ;
247
          COMPARE ;
248
          EQ ;
249
          IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
250
          SWAP ;
251
          GET 9 ;
252
          SWAP ;
253
          GET ;
254
          IF_NONE { PUSH string "NO_METADATA_PROVIDED" ; FAILWITH } {} } }