BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Tezosx
  • /
  • KT1KPhB...66JR
operations (4)Storage Code Interact Tokens Fork Views Details
Latest
​x
222
 
1
{ parameter (or (pair %addModule (address %caller_alias) (address %mod_addr))
2
                (or (pair %removeModule (address %caller_alias) (address %mod_addr))
3
                    (or (pair %bindToken (address %caller_alias) (address %token_addr))
4
                        (or
5
                          (pair %transferred (address %from_)
6
                                             (pair (address %to_) (nat %amount)))
7
                          (or (pair %created (address %to_) (nat %amount))
8
                              (or (pair %destroyed (address %from_) (nat %amount))
9
                                  (or
10
                                    (pair %setOwner (address %caller_alias)
11
                                                    (address %new_owner))
12
                                    (address %setAdmin)))))))) ;
13
  storage (pair (address %admin)
14
                (pair (address %owner)
15
                      (pair (address %admin_sentinel)
16
                            (pair (address %bound_token)
17
                                  (pair (list %modules address)
18
                                        (big_map %bound_modules address unit)))))) ;
19
  code { UNPAIR ;
20
         IF_LEFT
21
           { DUP 2 ;
22
             CAR ;
23
             SENDER ;
24
             COMPARE ;
25
             NEQ ;
26
             IF { PUSH string "MC_NOT_ADMIN" ; FAILWITH } {} ;
27
             DUP 2 ;
28
             GET 3 ;
29
             DUP 2 ;
30
             CAR ;
31
             COMPARE ;
32
             NEQ ;
33
             IF { PUSH string "MC_NOT_OWNER" ; FAILWITH } {} ;
34
             DUP 2 ;
35
             GET 10 ;
36
             DUP 2 ;
37
             CDR ;
38
             MEM ;
39
             IF
40
               { DROP }
41
               { DUP 2 ;
42
                 DUP 3 ;
43
                 GET 9 ;
44
                 DUP 3 ;
45
                 CDR ;
46
                 CONS ;
47
                 UPDATE 9 ;
48
                 DIG 2 ;
49
                 GET 10 ;
50
                 UNIT ;
51
                 SOME ;
52
                 DIG 3 ;
53
                 CDR ;
54
                 UPDATE ;
55
                 UPDATE 10 } ;
56
             NIL operation }
57
           { IF_LEFT
58
               { DUP 2 ;
59
                 CAR ;
60
                 SENDER ;
61
                 COMPARE ;
62
                 NEQ ;
63
                 IF { PUSH string "MC_NOT_ADMIN" ; FAILWITH } {} ;
64
                 DUP 2 ;
65
                 GET 3 ;
66
                 DUP 2 ;
67
                 CAR ;
68
                 COMPARE ;
69
                 NEQ ;
70
                 IF { PUSH string "MC_NOT_OWNER" ; FAILWITH } {} ;
71
                 DUP 2 ;
72
                 GET 10 ;
73
                 DUP 2 ;
74
                 CDR ;
75
                 MEM ;
76
                 IF {} { PUSH string "MC_MODULE_NOT_BOUND" ; FAILWITH } ;
77
                 NIL address ;
78
                 DUP 3 ;
79
                 GET 9 ;
80
                 ITER { SWAP ; DUP 3 ; CDR ; DUP 3 ; COMPARE ; EQ ; IF { SWAP ; DROP } { SWAP ; CONS } } ;
81
                 NIL address ;
82
                 SWAP ;
83
                 ITER { CONS } ;
84
                 DUP 3 ;
85
                 SWAP ;
86
                 UPDATE 9 ;
87
                 DIG 2 ;
88
                 GET 10 ;
89
                 NONE unit ;
90
                 DIG 3 ;
91
                 CDR ;
92
                 UPDATE ;
93
                 UPDATE 10 ;
94
                 NIL operation }
95
               { IF_LEFT
96
                   { DUP 2 ;
97
                     CAR ;
98
                     SENDER ;
99
                     COMPARE ;
100
                     NEQ ;
101
                     IF { PUSH string "MC_NOT_ADMIN" ; FAILWITH } {} ;
102
                     DUP 2 ;
103
                     GET 3 ;
104
                     DUP 2 ;
105
                     CAR ;
106
                     COMPARE ;
107
                     NEQ ;
108
                     IF { PUSH string "MC_NOT_OWNER" ; FAILWITH } {} ;
109
                     DUP 2 ;
110
                     GET 5 ;
111
                     DUP 3 ;
112
                     GET 7 ;
113
                     COMPARE ;
114
                     EQ ;
115
                     IF {} { PUSH string "MC_ALREADY_BOUND" ; FAILWITH } ;
116
                     CDR ;
117
                     UPDATE 7 ;
118
                     NIL operation }
119
                   { IF_LEFT
120
                       { DUP 2 ;
121
                         GET 7 ;
122
                         SENDER ;
123
                         COMPARE ;
124
                         NEQ ;
125
                         IF { PUSH string "MC_NOT_TOKEN" ; FAILWITH } {} ;
126
                         NIL operation ;
127
                         DUP 3 ;
128
                         GET 9 ;
129
                         ITER { CONTRACT %transferred (pair (address %from_)
130
                                                            (pair (address %to_)
131
                                                                  (nat %amount))) ;
132
                                IF_NONE
133
                                  { PUSH string "MC_MODULE_HOOK_NOT_FOUND" ; FAILWITH }
134
                                  {} ;
135
                                PUSH mutez 0 ;
136
                                DUP 4 ;
137
                                TRANSFER_TOKENS ;
138
                                CONS } ;
139
                         SWAP ;
140
                         DROP }
141
                       { IF_LEFT
142
                           { DUP 2 ;
143
                             GET 7 ;
144
                             SENDER ;
145
                             COMPARE ;
146
                             NEQ ;
147
                             IF { PUSH string "MC_NOT_TOKEN" ; FAILWITH } {} ;
148
                             NIL operation ;
149
                             DUP 3 ;
150
                             GET 9 ;
151
                             ITER { CONTRACT %created (pair (address %to_) (nat %amount)) ;
152
                                    IF_NONE
153
                                      { PUSH string "MC_MODULE_HOOK_NOT_FOUND" ;
154
                                        FAILWITH }
155
                                      {} ;
156
                                    PUSH mutez 0 ;
157
                                    DUP 4 ;
158
                                    TRANSFER_TOKENS ;
159
                                    CONS } ;
160
                             SWAP ;
161
                             DROP }
162
                           { IF_LEFT
163
                               { DUP 2 ;
164
                                 GET 7 ;
165
                                 SENDER ;
166
                                 COMPARE ;
167
                                 NEQ ;
168
                                 IF { PUSH string "MC_NOT_TOKEN" ; FAILWITH } {} ;
169
                                 NIL operation ;
170
                                 DUP 3 ;
171
                                 GET 9 ;
172
                                 ITER { CONTRACT %destroyed (pair (address %from_)
173
                                                                  (nat %amount)) ;
174
                                        IF_NONE
175
                                          { PUSH string "MC_MODULE_HOOK_NOT_FOUND" ;
176
                                            FAILWITH }
177
                                          {} ;
178
                                        PUSH mutez 0 ;
179
                                        DUP 4 ;
180
                                        TRANSFER_TOKENS ;
181
                                        CONS } ;
182
                                 SWAP ;
183
                                 DROP }
184
                               { IF_LEFT
185
                                   { DUP 2 ;
186
                                     CAR ;
187
                                     SENDER ;
188
                                     COMPARE ;
189
                                     NEQ ;
190
                                     IF { PUSH string "MC_NOT_ADMIN" ; FAILWITH } {} ;
191
                                     DUP 2 ;
192
                                     GET 3 ;
193
                                     DUP 2 ;
194
                                     CAR ;
195
                                     COMPARE ;
196
                                     NEQ ;
197
                                     IF { PUSH string "MC_NOT_OWNER" ; FAILWITH } {} ;
198
                                     CDR ;
199
                                     UPDATE 3 }
200
                                   { DUP 2 ;
201
                                     CAR ;
202
                                     SENDER ;
203
                                     COMPARE ;
204
                                     NEQ ;
205
                                     IF { PUSH string "MC_NOT_ADMIN" ; FAILWITH } {} ;
206
                                     UPDATE 1 } ;
207
                                 NIL operation } } } } } } ;
208
         PAIR } ;
209
  view "canTransfer" (pair (address %from_) (pair (address %to_) (nat %amount))) bool
210
        { UNPAIR ;
211
          PUSH bool True ;
212
          DIG 2 ;
213
          GET 9 ;
214
          ITER { SWAP ;
215
                 IF
216
                   { DUP 2 ; VIEW "moduleCheck" bool ; IF_NONE { PUSH bool False } {} }
217
                   { DROP ; PUSH bool False } } ;
218
          SWAP ;
219
          DROP } ;
220
  view "getModules" unit (list address) { GET 11 } ;
221
  view "isModuleBound" address bool { UNPAIR ; SWAP ; GET 10 ; SWAP ; MEM } ;
222
  view "getTokenBound" unit address { GET 9 } }