BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • Sac Plume fourre-tout 45 chimères Pégase
FA2Ledger
operations (1)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
158
 
1
parameter (or
2
            (pair %balance_of (list %requests (pair (address %owner) (nat %token_id)))
3
                              (contract %callback (list (pair
4
                                                        (pair %request (address %owner)
5
                                                                       (nat %token_id))
6
                                                        (nat %balance)))))
7
            (or
8
              (list %transfer (pair (address %from_)
9
                                   (list %txs (pair (address %to_)
10
                                                   (pair (nat %token_id) (nat %amount))))))
11
              (list %update_operators (or
12
                                       (pair %add_operator (address %owner)
13
                                                           (pair (address %operator)
14
                                                                 (nat %token_id)))
15
                                       (pair %remove_operator (address %owner)
16
                                                              (pair (address %operator)
17
                                                                    (nat %token_id)))))));
18
storage (pair (pair (nat %last_token_id) (big_map %ledger nat address))
19
              (pair (big_map %metadata string bytes)
20
                    (pair
21
                      (big_map %operators
22
                        (pair (address %owner)
23
                              (pair (address %operator) (nat %token_id)))
24
                        unit)
25
                      (big_map %token_metadata nat
26
                                               (pair (nat %token_id)
27
                                                     (map %token_info string bytes))))));
28
code { UNPAIR ;
29
       IF_LEFT
30
         { NIL operation ;
31
           DUP ;
32
           DUP 3 ;
33
           CDR ;
34
           PUSH mutez 0 ;
35
           DUP 5 ;
36
           CAR ;
37
           MAP { DUP 7 ;
38
                 GET 6 ;
39
                 DUP 2 ;
40
                 CDR ;
41
                 MEM ;
42
                 IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
43
                 DUP ;
44
                 CAR ;
45
                 DUP 8 ;
46
                 CAR ;
47
                 CDR ;
48
                 DUP 3 ;
49
                 CDR ;
50
                 GET ;
51
                 IF_NONE { PUSH int 370 ; FAILWITH } {} ;
52
                 COMPARE ;
53
                 EQ ;
54
                 IF { PUSH nat 1 } { PUSH nat 0 } ;
55
                 SWAP ;
56
                 PAIR } ;
57
           DIG 4 ;
58
           DROP ;
59
           DIG 4 ;
60
           DROP ;
61
           TRANSFER_TOKENS ;
62
           CONS }
63
         { IF_LEFT
64
             { DUP ;
65
               ITER { DUP ;
66
                      CDR ;
67
                      ITER { DUP 4 ;
68
                             GET 6 ;
69
                             DUP 2 ;
70
                             GET 3 ;
71
                             MEM ;
72
                             IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
73
                             DUP 2 ;
74
                             CAR ;
75
                             SENDER ;
76
                             COMPARE ;
77
                             EQ ;
78
                             IF
79
                               { PUSH bool True }
80
                               { DUP 4 ; GET 5 ; DUP 2 ; GET 3 ; SENDER ; DUP 5 ; CAR ; PAIR 3 ; MEM } ;
81
                             IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
82
                             PUSH nat 0 ;
83
                             DUP 2 ;
84
                             GET 4 ;
85
                             COMPARE ;
86
                             GT ;
87
                             IF
88
                               { PUSH nat 1 ;
89
                                 DUP 2 ;
90
                                 GET 4 ;
91
                                 COMPARE ;
92
                                 EQ ;
93
                                 IF
94
                                   { DUP 2 ;
95
                                     CAR ;
96
                                     DUP 5 ;
97
                                     CAR ;
98
                                     CDR ;
99
                                     DUP 3 ;
100
                                     GET 3 ;
101
                                     GET ;
102
                                     IF_NONE { PUSH int 377 ; FAILWITH } {} ;
103
                                     COMPARE ;
104
                                     EQ }
105
                                   { PUSH bool False } ;
106
                                 IF
107
                                   {}
108
                                   { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } ;
109
                                 DIG 3 ;
110
                                 UNPAIR ;
111
                                 UNPAIR ;
112
                                 SWAP ;
113
                                 DUP 4 ;
114
                                 CAR ;
115
                                 SOME ;
116
                                 DIG 4 ;
117
                                 GET 3 ;
118
                                 UPDATE ;
119
                                 SWAP ;
120
                                 PAIR ;
121
                                 PAIR ;
122
                                 DUG 2 }
123
                               { DROP } } ;
124
                      DROP } ;
125
               DROP }
126
             { DUP ;
127
               ITER { IF_LEFT
128
                        { SENDER ;
129
                          DUP 2 ;
130
                          CAR ;
131
                          COMPARE ;
132
                          EQ ;
133
                          IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
134
                          DIG 2 ;
135
                          DUP ;
136
                          GET 5 ;
137
                          PUSH (option unit) (Some Unit) ;
138
                          DIG 3 ;
139
                          UPDATE ;
140
                          UPDATE 5 ;
141
                          SWAP }
142
                        { SENDER ;
143
                          DUP 2 ;
144
                          CAR ;
145
                          COMPARE ;
146
                          EQ ;
147
                          IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
148
                          DIG 2 ;
149
                          DUP ;
150
                          GET 5 ;
151
                          NONE unit ;
152
                          DIG 3 ;
153
                          UPDATE ;
154
                          UPDATE 5 ;
155
                          SWAP } } ;
156
               DROP } ;
157
           NIL operation } ;
158
       PAIR }