BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Tezosx
  • /
  • KT1Nahp...QCDj
operations (3)Storage Code Interact Tokens Fork Views Details
Latest
​x
199
 
1
{ parameter (or (pair %addCountry (address %caller_alias) (nat %country_code))
2
                (or (pair %removeCountry (address %caller_alias) (nat %country_code))
3
                    (or (pair %bindMC (address %caller_alias) (address %mc_addr))
4
                        (or (pair %bindIR (address %caller_alias) (address %ir_addr))
5
                            (or
6
                              (pair %transferred (address %from_)
7
                                                 (pair (address %to_) (nat %amount)))
8
                              (or (pair %created (address %to_) (nat %amount))
9
                                  (or (pair %destroyed (address %from_) (nat %amount))
10
                                      (or
11
                                        (pair %setOwner (address %caller_alias)
12
                                                        (address %new_owner))
13
                                        (address %setAdmin))))))))) ;
14
  storage (pair (address %admin)
15
                (pair (address %owner)
16
                      (pair (address %admin_sentinel)
17
                            (pair (address %bound_mc)
18
                                  (pair (address %bound_ir)
19
                                        (big_map %allowed_countries nat unit)))))) ;
20
  code { UNPAIR ;
21
         IF_LEFT
22
           { DUP 2 ;
23
             CAR ;
24
             SENDER ;
25
             COMPARE ;
26
             NEQ ;
27
             IF { PUSH string "CA_NOT_ADMIN" ; FAILWITH } {} ;
28
             DUP 2 ;
29
             GET 3 ;
30
             DUP 2 ;
31
             CAR ;
32
             COMPARE ;
33
             NEQ ;
34
             IF { PUSH string "CA_NOT_OWNER" ; FAILWITH } {} ;
35
             SWAP ;
36
             DUP ;
37
             GET 10 ;
38
             UNIT ;
39
             SOME ;
40
             DIG 3 ;
41
             CDR ;
42
             UPDATE ;
43
             UPDATE 10 }
44
           { IF_LEFT
45
               { DUP 2 ;
46
                 CAR ;
47
                 SENDER ;
48
                 COMPARE ;
49
                 NEQ ;
50
                 IF { PUSH string "CA_NOT_ADMIN" ; FAILWITH } {} ;
51
                 DUP 2 ;
52
                 GET 3 ;
53
                 DUP 2 ;
54
                 CAR ;
55
                 COMPARE ;
56
                 NEQ ;
57
                 IF { PUSH string "CA_NOT_OWNER" ; FAILWITH } {} ;
58
                 DUP 2 ;
59
                 GET 10 ;
60
                 DUP 2 ;
61
                 CDR ;
62
                 MEM ;
63
                 IF {} { PUSH string "CA_COUNTRY_NOT_FOUND" ; FAILWITH } ;
64
                 SWAP ;
65
                 DUP ;
66
                 GET 10 ;
67
                 NONE unit ;
68
                 DIG 3 ;
69
                 CDR ;
70
                 UPDATE ;
71
                 UPDATE 10 }
72
               { IF_LEFT
73
                   { DUP 2 ;
74
                     CAR ;
75
                     SENDER ;
76
                     COMPARE ;
77
                     NEQ ;
78
                     IF { PUSH string "CA_NOT_ADMIN" ; FAILWITH } {} ;
79
                     DUP 2 ;
80
                     GET 3 ;
81
                     DUP 2 ;
82
                     CAR ;
83
                     COMPARE ;
84
                     NEQ ;
85
                     IF { PUSH string "CA_NOT_OWNER" ; FAILWITH } {} ;
86
                     DUP 2 ;
87
                     GET 5 ;
88
                     DUP 3 ;
89
                     GET 7 ;
90
                     COMPARE ;
91
                     EQ ;
92
                     IF {} { PUSH string "CA_MC_ALREADY_BOUND" ; FAILWITH } ;
93
                     CDR ;
94
                     UPDATE 7 }
95
                   { IF_LEFT
96
                       { DUP 2 ;
97
                         CAR ;
98
                         SENDER ;
99
                         COMPARE ;
100
                         NEQ ;
101
                         IF { PUSH string "CA_NOT_ADMIN" ; FAILWITH } {} ;
102
                         DUP 2 ;
103
                         GET 3 ;
104
                         DUP 2 ;
105
                         CAR ;
106
                         COMPARE ;
107
                         NEQ ;
108
                         IF { PUSH string "CA_NOT_OWNER" ; FAILWITH } {} ;
109
                         DUP 2 ;
110
                         GET 5 ;
111
                         DUP 3 ;
112
                         GET 9 ;
113
                         COMPARE ;
114
                         EQ ;
115
                         IF {} { PUSH string "CA_IR_ALREADY_BOUND" ; FAILWITH } ;
116
                         CDR ;
117
                         UPDATE 9 }
118
                       { IF_LEFT
119
                           { DROP ;
120
                             DUP ;
121
                             GET 7 ;
122
                             SENDER ;
123
                             COMPARE ;
124
                             NEQ ;
125
                             IF { PUSH string "CA_NOT_MC" ; FAILWITH } {} }
126
                           { IF_LEFT
127
                               { DROP ;
128
                                 DUP ;
129
                                 GET 7 ;
130
                                 SENDER ;
131
                                 COMPARE ;
132
                                 NEQ ;
133
                                 IF { PUSH string "CA_NOT_MC" ; FAILWITH } {} }
134
                               { IF_LEFT
135
                                   { DROP ;
136
                                     DUP ;
137
                                     GET 7 ;
138
                                     SENDER ;
139
                                     COMPARE ;
140
                                     NEQ ;
141
                                     IF { PUSH string "CA_NOT_MC" ; FAILWITH } {} }
142
                                   { IF_LEFT
143
                                       { DUP 2 ;
144
                                         CAR ;
145
                                         SENDER ;
146
                                         COMPARE ;
147
                                         NEQ ;
148
                                         IF
149
                                           { PUSH string "CA_NOT_ADMIN" ; FAILWITH }
150
                                           {} ;
151
                                         DUP 2 ;
152
                                         GET 3 ;
153
                                         DUP 2 ;
154
                                         CAR ;
155
                                         COMPARE ;
156
                                         NEQ ;
157
                                         IF
158
                                           { PUSH string "CA_NOT_OWNER" ; FAILWITH }
159
                                           {} ;
160
                                         CDR ;
161
                                         UPDATE 3 }
162
                                       { DUP 2 ;
163
                                         CAR ;
164
                                         SENDER ;
165
                                         COMPARE ;
166
                                         NEQ ;
167
                                         IF
168
                                           { PUSH string "CA_NOT_ADMIN" ; FAILWITH }
169
                                           {} ;
170
                                         UPDATE 1 } } } } } } } } ;
171
         NIL operation ;
172
         PAIR } ;
173
  view "moduleCheck" (pair (address %from_) (pair (address %to_) (nat %amount))) bool
174
        { UNPAIR ;
175
          DUP 2 ;
176
          GET 5 ;
177
          DUP 3 ;
178
          GET 9 ;
179
          COMPARE ;
180
          EQ ;
181
          IF
182
            { DROP 2 ; PUSH bool False }
183
            { DUP 2 ;
184
              GET 9 ;
185
              DUP 2 ;
186
              CAR ;
187
              VIEW "countryOf" nat ;
188
              IF_NONE { PUSH bool False } { DUP 3 ; GET 10 ; SWAP ; MEM } ;
189
              IF
190
                { DUP 2 ;
191
                  GET 9 ;
192
                  SWAP ;
193
                  GET 3 ;
194
                  VIEW "countryOf" nat ;
195
                  IF_NONE { DROP ; PUSH bool False } { SWAP ; GET 10 ; SWAP ; MEM } }
196
                { DROP 2 ; PUSH bool False } } } ;
197
  view "isAllowed" nat bool { UNPAIR ; SWAP ; GET 10 ; SWAP ; MEM } ;
198
  view "getMCBound" unit address { GET 9 } ;
199
  view "getIRBound" unit address { GET 11 } }