BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Tezosx
  • /
  • KT1Krgk...UUbH
operations (19)Storage Code Interact Tokens Fork Views Details
Latest
​x
304
 
1
{ parameter (or
2
              (pair %requestVerification (address %caller_alias)
3
                                         (pair (address %token_kt1)
4
                                               (pair (address %identity_kt1)
5
                                                     (nat %country))))
6
              (or
7
                (pair %approve (address %caller_alias)
8
                               (pair (address %investor_alias) (address %token_kt1)))
9
                (or
10
                  (pair %deny (address %caller_alias)
11
                              (pair (address %investor_alias) (address %token_kt1)))
12
                  (or (pair %addAgent (address %caller_alias) (address %agent_alias))
13
                      (or
14
                        (pair %removeAgent (address %caller_alias)
15
                                           (address %agent_alias))
16
                        (or
17
                          (pair %setOwner (address %caller_alias) (address %new_owner))
18
                          (or (address %setAdmin)
19
                              (pair %setTokenRoute (address %caller_alias)
20
                                                   (pair (address %token_kt1)
21
                                                         (address %irs_kt1)))))))))) ;
22
  storage (pair (address %owner)
23
                (pair (address %admin)
24
                      (pair (big_map %agents address unit)
25
                            (pair
26
                              (big_map %requests (pair address address)
27
                                                 (pair
28
                                                   (or %status (unit %pending)
29
                                                               (or (unit %approved)
30
                                                                   (unit %denied)))
31
                                                   (pair (address %identity_kt1)
32
                                                         (nat %country))))
33
                              (big_map %token_routes address address))))) ;
34
  code { UNPAIR ;
35
         IF_LEFT
36
           { DUP 2 ;
37
             GET 3 ;
38
             SENDER ;
39
             COMPARE ;
40
             NEQ ;
41
             IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
42
             DUP ;
43
             GET 3 ;
44
             DUP 2 ;
45
             CAR ;
46
             PAIR ;
47
             DUP 3 ;
48
             GET 7 ;
49
             DUP 2 ;
50
             GET ;
51
             IF_NONE
52
               {}
53
               { CAR ;
54
                 IF_LEFT
55
                   { DROP }
56
                   { IF_LEFT { PUSH string "VR_ALREADY_APPROVED" ; FAILWITH } { DROP } } } ;
57
             DUP 2 ;
58
             GET 6 ;
59
             DIG 2 ;
60
             GET 5 ;
61
             UNIT ;
62
             LEFT (or unit unit) ;
63
             PAIR 3 ;
64
             DIG 2 ;
65
             DUP ;
66
             GET 7 ;
67
             DIG 2 ;
68
             SOME ;
69
             DIG 3 ;
70
             UPDATE ;
71
             UPDATE 7 ;
72
             NIL operation }
73
           { IF_LEFT
74
               { DUP 2 ;
75
                 GET 3 ;
76
                 SENDER ;
77
                 COMPARE ;
78
                 NEQ ;
79
                 IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
80
                 DUP ;
81
                 CAR ;
82
                 DUP 3 ;
83
                 CAR ;
84
                 DUP 2 ;
85
                 COMPARE ;
86
                 EQ ;
87
                 IF
88
                   { DROP }
89
                   { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "VR_NOT_AGENT" ; FAILWITH } } ;
90
                 DUP ;
91
                 GET 4 ;
92
                 DUP 2 ;
93
                 GET 3 ;
94
                 PAIR ;
95
                 DUP 3 ;
96
                 GET 7 ;
97
                 DUP 2 ;
98
                 GET ;
99
                 IF_NONE { PUSH string "VR_NO_REQUEST" ; FAILWITH } {} ;
100
                 UNIT ;
101
                 LEFT unit ;
102
                 RIGHT unit ;
103
                 DUP 2 ;
104
                 DIG 3 ;
105
                 DIG 5 ;
106
                 DUP ;
107
                 GET 7 ;
108
                 DIG 3 ;
109
                 DIG 4 ;
110
                 UPDATE 1 ;
111
                 SOME ;
112
                 DIG 3 ;
113
                 UPDATE ;
114
                 UPDATE 7 ;
115
                 DUP ;
116
                 GET 8 ;
117
                 DUP 4 ;
118
                 GET 4 ;
119
                 GET ;
120
                 IF_NONE { PUSH string "VR_NO_ROUTE" ; FAILWITH } {} ;
121
                 CONTRACT %registerInvestor (pair (address %caller_alias)
122
                                                  (pair (address %investor)
123
                                                        (pair (address %identity_kt1)
124
                                                              (nat %country)))) ;
125
                 IF_NONE { PUSH string "VR_IRS_ENTRYPOINT_NOT_FOUND" ; FAILWITH } {} ;
126
                 DUP 3 ;
127
                 GET 4 ;
128
                 DIG 3 ;
129
                 GET 3 ;
130
                 DIG 4 ;
131
                 GET 3 ;
132
                 SELF_ADDRESS ;
133
                 PAIR 4 ;
134
                 SWAP ;
135
                 PUSH mutez 0 ;
136
                 DIG 2 ;
137
                 TRANSFER_TOKENS ;
138
                 SWAP ;
139
                 NIL operation ;
140
                 DIG 2 ;
141
                 CONS }
142
               { IF_LEFT
143
                   { DUP 2 ;
144
                     GET 3 ;
145
                     SENDER ;
146
                     COMPARE ;
147
                     NEQ ;
148
                     IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
149
                     DUP ;
150
                     CAR ;
151
                     DUP 3 ;
152
                     CAR ;
153
                     DUP 2 ;
154
                     COMPARE ;
155
                     EQ ;
156
                     IF
157
                       { DROP }
158
                       { DUP 3 ;
159
                         GET 5 ;
160
                         SWAP ;
161
                         MEM ;
162
                         IF {} { PUSH string "VR_NOT_AGENT" ; FAILWITH } } ;
163
                     DUP ;
164
                     GET 4 ;
165
                     SWAP ;
166
                     GET 3 ;
167
                     PAIR ;
168
                     DUP 2 ;
169
                     GET 7 ;
170
                     DUP 2 ;
171
                     GET ;
172
                     IF_NONE { PUSH string "VR_NO_REQUEST" ; FAILWITH } {} ;
173
                     UNIT ;
174
                     RIGHT unit ;
175
                     RIGHT unit ;
176
                     SWAP ;
177
                     DIG 2 ;
178
                     DIG 3 ;
179
                     DUP ;
180
                     GET 7 ;
181
                     DIG 3 ;
182
                     DIG 4 ;
183
                     UPDATE 1 ;
184
                     SOME ;
185
                     DIG 3 ;
186
                     UPDATE ;
187
                     UPDATE 7 }
188
                   { IF_LEFT
189
                       { DUP 2 ;
190
                         GET 3 ;
191
                         SENDER ;
192
                         COMPARE ;
193
                         NEQ ;
194
                         IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
195
                         DUP 2 ;
196
                         CAR ;
197
                         DUP 2 ;
198
                         CAR ;
199
                         COMPARE ;
200
                         NEQ ;
201
                         IF { PUSH string "VR_NOT_OWNER" ; FAILWITH } {} ;
202
                         SWAP ;
203
                         DUP ;
204
                         GET 5 ;
205
                         UNIT ;
206
                         SOME ;
207
                         DIG 3 ;
208
                         CDR ;
209
                         UPDATE ;
210
                         UPDATE 5 }
211
                       { IF_LEFT
212
                           { DUP 2 ;
213
                             GET 3 ;
214
                             SENDER ;
215
                             COMPARE ;
216
                             NEQ ;
217
                             IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
218
                             DUP 2 ;
219
                             CAR ;
220
                             DUP 2 ;
221
                             CAR ;
222
                             COMPARE ;
223
                             NEQ ;
224
                             IF { PUSH string "VR_NOT_OWNER" ; FAILWITH } {} ;
225
                             DUP 2 ;
226
                             GET 5 ;
227
                             DUP 2 ;
228
                             CDR ;
229
                             MEM ;
230
                             IF {} { PUSH string "VR_AGENT_NOT_FOUND" ; FAILWITH } ;
231
                             SWAP ;
232
                             DUP ;
233
                             GET 5 ;
234
                             NONE unit ;
235
                             DIG 3 ;
236
                             CDR ;
237
                             UPDATE ;
238
                             UPDATE 5 }
239
                           { IF_LEFT
240
                               { DUP 2 ;
241
                                 GET 3 ;
242
                                 SENDER ;
243
                                 COMPARE ;
244
                                 NEQ ;
245
                                 IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
246
                                 DUP 2 ;
247
                                 CAR ;
248
                                 DUP 2 ;
249
                                 CAR ;
250
                                 COMPARE ;
251
                                 NEQ ;
252
                                 IF { PUSH string "VR_NOT_OWNER" ; FAILWITH } {} ;
253
                                 CDR ;
254
                                 UPDATE 1 }
255
                               { IF_LEFT
256
                                   { DUP 2 ;
257
                                     GET 3 ;
258
                                     SENDER ;
259
                                     COMPARE ;
260
                                     NEQ ;
261
                                     IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
262
                                     UPDATE 3 }
263
                                   { DUP 2 ;
264
                                     GET 3 ;
265
                                     SENDER ;
266
                                     COMPARE ;
267
                                     NEQ ;
268
                                     IF { PUSH string "VR_NOT_ADMIN" ; FAILWITH } {} ;
269
                                     DUP ;
270
                                     CAR ;
271
                                     DUP 2 ;
272
                                     GET 3 ;
273
                                     UNIT ;
274
                                     VIEW "owner" address ;
275
                                     IF_NONE
276
                                       { PUSH bool False }
277
                                       { DUP 2 ; COMPARE ; EQ } ;
278
                                     IF
279
                                       { DROP }
280
                                       { DUP 3 ;
281
                                         CAR ;
282
                                         COMPARE ;
283
                                         EQ ;
284
                                         IF
285
                                           {}
286
                                           { PUSH string "VR_NOT_TOKEN_OWNER" ; FAILWITH } } ;
287
                                     SWAP ;
288
                                     DUP ;
289
                                     GET 8 ;
290
                                     DUP 3 ;
291
                                     GET 4 ;
292
                                     SOME ;
293
                                     DIG 3 ;
294
                                     GET 3 ;
295
                                     UPDATE ;
296
                                     UPDATE 8 } } } } } ;
297
                 NIL operation } } ;
298
         PAIR } ;
299
  view "getRequest" (pair address address)
300
        (option (pair (or %status (unit %pending) (or (unit %approved) (unit %denied)))
301
                     (pair (address %identity_kt1) (nat %country))))
302
        { UNPAIR ; SWAP ; GET 7 ; SWAP ; GET } ;
303
  view "isAgent" address bool { UNPAIR ; SWAP ; GET 5 ; SWAP ; MEM } ;
304
  view "getTokenRoute" address (option address) { UNPAIR ; SWAP ; GET 8 ; SWAP ; GET } }