BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • KT1JzFN...zRfW
FA1FA1.2
operations (35.1K)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
236
 
1
{ parameter (or (pair %transfer (address %from) (pair (address %to) (nat %value)))
2
                (or (pair %approve (address %spender) (nat %value))
3
                    (or (pair %mintOrBurn (int %quantity) (address %target))
4
                        (or
5
                          (pair %getAllowance
6
                            (pair %request (address %owner) (address %spender))
7
                            (contract %callback nat))
8
                          (or
9
                            (pair %getBalance (address %owner) (contract %callback nat))
10
                            (pair %getTotalSupply (unit %request)
11
                                                  (contract %callback nat))))))) ;
12
  storage (pair
13
            (big_map %ledger address (pair (nat %amount) (map %allowances address nat)))
14
            (pair (address %admin)
15
                  (pair (nat %total_supply) (big_map %metadata string bytes)))) ;
16
  code { UNPAIR ;
17
         PUSH string "DontSendTez" ;
18
         PUSH mutez 0 ;
19
         AMOUNT ;
20
         COMPARE ;
21
         EQ ;
22
         IF { DROP } { FAILWITH } ;
23
         IF_LEFT
24
           { UNPAIR 3 ;
25
             DUP 4 ;
26
             CAR ;
27
             SENDER ;
28
             DUP 2 ;
29
             DUP 4 ;
30
             GET ;
31
             IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
32
             DUP 3 ;
33
             DUP 6 ;
34
             GET ;
35
             IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
36
             DUP 5 ;
37
             SENDER ;
38
             COMPARE ;
39
             EQ ;
40
             IF
41
               { DIG 2 ; DROP ; SWAP }
42
               { DUP 7 ;
43
                 DUP 3 ;
44
                 CDR ;
45
                 DUP 5 ;
46
                 GET ;
47
                 IF_NONE { PUSH nat 0 } {} ;
48
                 SUB ;
49
                 ISNAT ;
50
                 IF_NONE { PUSH string "NotEnoughAllowance" ; FAILWITH } {} ;
51
                 DUP 3 ;
52
                 DIG 3 ;
53
                 CDR ;
54
                 PUSH nat 0 ;
55
                 DUP 4 ;
56
                 COMPARE ;
57
                 EQ ;
58
                 IF { DIG 2 ; DROP ; NONE nat } { DIG 2 ; SOME } ;
59
                 DIG 4 ;
60
                 UPDATE ;
61
                 UPDATE 2 } ;
62
             DUP ;
63
             DUP 7 ;
64
             DIG 2 ;
65
             CAR ;
66
             SUB ;
67
             ISNAT ;
68
             IF_NONE { PUSH string "NotEnoughBalance" ; FAILWITH } {} ;
69
             UPDATE 1 ;
70
             DUP 2 ;
71
             DIG 6 ;
72
             DIG 3 ;
73
             CAR ;
74
             ADD ;
75
             UPDATE 1 ;
76
             DIG 5 ;
77
             DIG 3 ;
78
             DIG 3 ;
79
             SOME ;
80
             DIG 4 ;
81
             UPDATE ;
82
             DIG 2 ;
83
             SOME ;
84
             DIG 3 ;
85
             UPDATE ;
86
             UPDATE 1 ;
87
             NIL operation }
88
           { IF_LEFT
89
               { UNPAIR ;
90
                 DUP 3 ;
91
                 CAR ;
92
                 SENDER ;
93
                 DUP 2 ;
94
                 DUP 2 ;
95
                 GET ;
96
                 IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
97
                 PUSH nat 0 ;
98
                 DUP 6 ;
99
                 COMPARE ;
100
                 EQ ;
101
                 PUSH nat 0 ;
102
                 DUP 3 ;
103
                 CDR ;
104
                 DUP 7 ;
105
                 GET ;
106
                 IF_NONE { PUSH nat 0 } {} ;
107
                 COMPARE ;
108
                 EQ ;
109
                 OR ;
110
                 IF {} { PUSH string "UnsafeAllowanceChange" ; FAILWITH } ;
111
                 DIG 5 ;
112
                 DIG 3 ;
113
                 DUP 3 ;
114
                 DIG 3 ;
115
                 CDR ;
116
                 PUSH nat 0 ;
117
                 DUP 8 ;
118
                 COMPARE ;
119
                 EQ ;
120
                 IF { DIG 6 ; DROP ; NONE nat } { DIG 6 ; SOME } ;
121
                 DIG 6 ;
122
                 UPDATE ;
123
                 UPDATE 2 ;
124
                 SOME ;
125
                 DIG 3 ;
126
                 UPDATE ;
127
                 UPDATE 1 ;
128
                 NIL operation }
129
               { IF_LEFT
130
                   { UNPAIR ;
131
                     PUSH string "OnlyAdmin" ;
132
                     DUP 4 ;
133
                     GET 3 ;
134
                     SENDER ;
135
                     COMPARE ;
136
                     EQ ;
137
                     IF { DROP } { FAILWITH } ;
138
                     DUP 3 ;
139
                     CAR ;
140
                     DUP ;
141
                     DUP 4 ;
142
                     GET ;
143
                     IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
144
                     DUP ;
145
                     DUP 4 ;
146
                     DIG 2 ;
147
                     CAR ;
148
                     ADD ;
149
                     ISNAT ;
150
                     IF_NONE
151
                       { PUSH string "CannotBurnMoreThanTheTargetsBalance" ; FAILWITH }
152
                       {} ;
153
                     UPDATE 1 ;
154
                     DIG 2 ;
155
                     DUP 5 ;
156
                     GET 5 ;
157
                     ADD ;
158
                     ISNAT ;
159
                     IF_NONE
160
                       { PUSH string "CannotBurnMoreThanTheTotalSupply" ; FAILWITH }
161
                       {} ;
162
                     DIG 4 ;
163
                     DIG 3 ;
164
                     DIG 3 ;
165
                     SOME ;
166
                     DIG 4 ;
167
                     UPDATE ;
168
                     UPDATE 1 ;
169
                     SWAP ;
170
                     UPDATE 5 ;
171
                     NIL operation }
172
                   { IF_LEFT
173
                       { DUP 2 ;
174
                         SWAP ;
175
                         UNPAIR ;
176
                         NIL operation ;
177
                         DIG 2 ;
178
                         PUSH mutez 0 ;
179
                         DIG 5 ;
180
                         CAR ;
181
                         DUP 5 ;
182
                         CAR ;
183
                         GET ;
184
                         IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
185
                         CDR ;
186
                         DIG 4 ;
187
                         CDR ;
188
                         GET ;
189
                         IF_NONE { PUSH nat 0 } {} ;
190
                         TRANSFER_TOKENS }
191
                       { IF_LEFT
192
                           { DUP 2 ;
193
                             SWAP ;
194
                             UNPAIR ;
195
                             NIL operation ;
196
                             DIG 2 ;
197
                             PUSH mutez 0 ;
198
                             DIG 5 ;
199
                             CAR ;
200
                             DIG 4 ;
201
                             GET ;
202
                             IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
203
                             CAR ;
204
                             TRANSFER_TOKENS }
205
                           { DUP 2 ;
206
                             SWAP ;
207
                             CDR ;
208
                             NIL operation ;
209
                             SWAP ;
210
                             PUSH mutez 0 ;
211
                             DIG 4 ;
212
                             GET 5 ;
213
                             TRANSFER_TOKENS } } ;
214
                     CONS } } } ;
215
         PAIR } ;
216
  view "viewAllowance" (pair (address %owner) (address %spender)) nat
217
        { UNPAIR ;
218
          UNPAIR ;
219
          DIG 2 ;
220
          CAR ;
221
          SWAP ;
222
          GET ;
223
          IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
224
          CDR ;
225
          SWAP ;
226
          GET ;
227
          IF_NONE { PUSH nat 0 } {} } ;
228
  view "viewBalance" address nat
229
        { UNPAIR ;
230
          SWAP ;
231
          CAR ;
232
          SWAP ;
233
          GET ;
234
          IF_NONE { EMPTY_MAP address nat ; PUSH nat 0 ; PAIR } {} ;
235
          CAR } ;
236
  view "viewTotalSupply" unit nat { CDR ; GET 5 } }