BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • NFT marketplace tutorial
FA2Ledger
operations (1)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
229
 
1
parameter (or
2
            (or
3
              (pair %balance_of (list %requests (pair (address %owner) (nat %token_id)))
4
                                (contract %callback (list (pair
5
                                                          (pair %request
6
                                                            (address %owner)
7
                                                            (nat %token_id))
8
                                                          (nat %balance)))))
9
              (list %mint (pair (address %to_) (map %metadata string bytes))))
10
            (or (address %set_administrator)
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 (address %operator)
19
                                                                     (nat %token_id)))
20
                                           (pair %remove_operator (address %owner)
21
                                                                  (pair
22
                                                                    (address %operator)
23
                                                                    (nat %token_id))))))));
24
storage (pair
25
          (pair (address %administrator)
26
                (pair (nat %last_token_id) (big_map %ledger nat address)))
27
          (pair (big_map %metadata string bytes)
28
                (pair
29
                  (big_map %operators
30
                    (pair (address %owner) (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
                     DUP 2 ;
48
                     CDR ;
49
                     MEM ;
50
                     IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
51
                     DUP ;
52
                     CAR ;
53
                     DUP 8 ;
54
                     CAR ;
55
                     GET 4 ;
56
                     DUP 3 ;
57
                     CDR ;
58
                     GET ;
59
                     IF_NONE { PUSH int 370 ; FAILWITH } {} ;
60
                     COMPARE ;
61
                     EQ ;
62
                     IF { PUSH nat 1 } { PUSH nat 0 } ;
63
                     SWAP ;
64
                     PAIR } ;
65
               DIG 4 ;
66
               DROP ;
67
               DIG 4 ;
68
               DROP ;
69
               TRANSFER_TOKENS ;
70
               CONS }
71
             { DUP 2 ;
72
               CAR ;
73
               CAR ;
74
               SENDER ;
75
               COMPARE ;
76
               EQ ;
77
               IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
78
               DUP ;
79
               ITER { DUP 3 ;
80
                      CAR ;
81
                      GET 3 ;
82
                      DIG 3 ;
83
                      DUP ;
84
                      GET 6 ;
85
                      DUP 4 ;
86
                      CDR ;
87
                      DUP 4 ;
88
                      PAIR ;
89
                      SOME ;
90
                      DUP 4 ;
91
                      UPDATE ;
92
                      UPDATE 6 ;
93
                      UNPAIR ;
94
                      UNPAIR ;
95
                      SWAP ;
96
                      UNPAIR ;
97
                      SWAP ;
98
                      DIG 5 ;
99
                      CAR ;
100
                      SOME ;
101
                      DIG 5 ;
102
                      UPDATE ;
103
                      SWAP ;
104
                      PUSH nat 1 ;
105
                      ADD ;
106
                      PAIR ;
107
                      SWAP ;
108
                      PAIR ;
109
                      PAIR ;
110
                      SWAP } ;
111
               DROP ;
112
               NIL operation } }
113
         { IF_LEFT
114
             { DUP 2 ;
115
               CAR ;
116
               CAR ;
117
               SENDER ;
118
               COMPARE ;
119
               EQ ;
120
               IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
121
               SWAP ;
122
               UNPAIR ;
123
               CDR ;
124
               DIG 2 ;
125
               PAIR ;
126
               PAIR }
127
             { IF_LEFT
128
                 { DUP ;
129
                   ITER { DUP ;
130
                          CDR ;
131
                          ITER { DUP 4 ;
132
                                 GET 6 ;
133
                                 DUP 2 ;
134
                                 GET 3 ;
135
                                 MEM ;
136
                                 IF
137
                                   {}
138
                                   { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
139
                                 DUP 2 ;
140
                                 CAR ;
141
                                 SENDER ;
142
                                 COMPARE ;
143
                                 EQ ;
144
                                 IF
145
                                   { PUSH bool True }
146
                                   { DUP 4 ; GET 5 ; DUP 2 ; GET 3 ; SENDER ; DUP 5 ; CAR ; PAIR 3 ; MEM } ;
147
                                 IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
148
                                 PUSH nat 0 ;
149
                                 DUP 2 ;
150
                                 GET 4 ;
151
                                 COMPARE ;
152
                                 GT ;
153
                                 IF
154
                                   { PUSH nat 1 ;
155
                                     DUP 2 ;
156
                                     GET 4 ;
157
                                     COMPARE ;
158
                                     EQ ;
159
                                     IF
160
                                       { DUP 2 ;
161
                                         CAR ;
162
                                         DUP 5 ;
163
                                         CAR ;
164
                                         GET 4 ;
165
                                         DUP 3 ;
166
                                         GET 3 ;
167
                                         GET ;
168
                                         IF_NONE { PUSH int 377 ; FAILWITH } {} ;
169
                                         COMPARE ;
170
                                         EQ }
171
                                       { PUSH bool False } ;
172
                                     IF
173
                                       {}
174
                                       { PUSH string "FA2_INSUFFICIENT_BALANCE" ;
175
                                         FAILWITH } ;
176
                                     DIG 3 ;
177
                                     UNPAIR ;
178
                                     UNPAIR ;
179
                                     SWAP ;
180
                                     UNPAIR ;
181
                                     SWAP ;
182
                                     DUP 5 ;
183
                                     CAR ;
184
                                     SOME ;
185
                                     DIG 5 ;
186
                                     GET 3 ;
187
                                     UPDATE ;
188
                                     SWAP ;
189
                                     PAIR ;
190
                                     SWAP ;
191
                                     PAIR ;
192
                                     PAIR ;
193
                                     DUG 2 }
194
                                   { DROP } } ;
195
                          DROP } ;
196
                   DROP }
197
                 { DUP ;
198
                   ITER { IF_LEFT
199
                            { SENDER ;
200
                              DUP 2 ;
201
                              CAR ;
202
                              COMPARE ;
203
                              EQ ;
204
                              IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
205
                              DIG 2 ;
206
                              DUP ;
207
                              GET 5 ;
208
                              PUSH (option unit) (Some Unit) ;
209
                              DIG 3 ;
210
                              UPDATE ;
211
                              UPDATE 5 ;
212
                              SWAP }
213
                            { SENDER ;
214
                              DUP 2 ;
215
                              CAR ;
216
                              COMPARE ;
217
                              EQ ;
218
                              IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
219
                              DIG 2 ;
220
                              DUP ;
221
                              GET 5 ;
222
                              NONE unit ;
223
                              DIG 3 ;
224
                              UPDATE ;
225
                              UPDATE 5 ;
226
                              SWAP } } ;
227
                   DROP } } ;
228
           NIL operation } ;
229
       PAIR }