BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Ubisoft Quartz Whitelist
operations (23.3K)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
539
 
1
{ parameter (or
2
              (or
3
                (or
4
                  (or (pair %getUser (address %user) (contract (option nat)))
5
                      (address %declareOwnership))
6
                  (or (unit %claimOwnership) (unit %pause)))
7
                (or (or (unit %unpause) (address %addSuperuser))
8
                    (or (address %removeSuperuser) (address %addWhitelister))))
9
              (or
10
                (or (or (address %removeWhitelister) (list %assertReceivers address))
11
                    (or (list %assertTransfers (pair address (list address)))
12
                        (pair %assertTransferlist (nat %fromTransferListId)
13
                                                  (nat %toTransferListId))))
14
                (or
15
                  (or (pair %updateUser (address %user) (option %transferlistId nat))
16
                      (list %updateUsers (pair address (option nat))))
17
                  (pair %updateTransferlist (nat %transferlistId)
18
                                            (option %u (pair bool (set nat))))))) ;
19
  storage (pair (address %admin)
20
                (pair (address %users)
21
                      (pair (option %owner_candidate address)
22
                            (pair (bool %paused)
23
                                  (pair (set %superusers address)
24
                                        (pair (set %whitelister address)
25
                                              (pair
26
                                                (big_map %transferlists nat
27
                                                                        (pair
28
                                                                          (bool %unrestricted)
29
                                                                          (set %allowedTransferlists nat)))
30
                                                (big_map %metadata string bytes)))))))) ;
31
  code { LAMBDA
32
           (pair string bool)
33
           bool
34
           { UNPAIR 2 ;
35
             PUSH unit Unit ;
36
             DUP 3 ;
37
             NOT ;
38
             IF
39
               { PUSH bool True ; SWAP ; DROP }
40
               { PUSH string "CONTRACT_PAUSED" ; FAILWITH } ;
41
             DUG 2 ;
42
             DROP 2 } ;
43
         LAMBDA
44
           (pair string
45
                 (pair
46
                   (big_map nat
47
                            (pair (bool %unrestricted) (set %allowedTransferlists nat)))
48
                   (pair address address)))
49
           bool
50
           { UNPAIR 4 ;
51
             PUSH unit Unit ;
52
             PUSH bool True ;
53
             DUP 5 ;
54
             DUP 7 ;
55
             VIEW "getopt" (option nat) ;
56
             IF_NONE
57
               { PUSH string "USER_GETOPT_INTERNAL_ERROR" ; FAILWITH }
58
               { DUP ;
59
                 IF_NONE
60
                   { PUSH bool False ; DIP { DIG 1 ; DROP } ; DUG 1 }
61
                   { DUP 6 ;
62
                     DUP 2 ;
63
                     GET ;
64
                     IF_NONE
65
                       { PUSH bool False ; DIP { DIG 2 ; DROP } ; DUG 2 }
66
                       { DUP ; CAR ; DIP { DIG 3 ; DROP } ; DUG 3 ; DROP } ;
67
                     DROP } ;
68
                 DROP } ;
69
             DUP ;
70
             DIP { DIG 1 ; DROP } ;
71
             DUG 1 ;
72
             DROP ;
73
             DUG 4 ;
74
             DROP 4 } ;
75
         NIL operation ;
76
         DIG 3 ;
77
         UNPAIR ;
78
         DIP { UNPAIR 8 } ;
79
         IF_LEFT
80
           { IF_LEFT
81
               { IF_LEFT
82
                   { IF_LEFT
83
                       { UNPAIR ;
84
                         NONE nat ;
85
                         DUP 5 ;
86
                         DUP 3 ;
87
                         VIEW "getopt" (option nat) ;
88
                         IF_NONE
89
                           { PUSH string "USER_GETOPT_INTERNAL_ERROR" ; FAILWITH }
90
                           { DUP ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP } ;
91
                         DUP 12 ;
92
                         DUP 4 ;
93
                         AMOUNT ;
94
                         DUP 4 ;
95
                         TRANSFER_TOKENS ;
96
                         CONS ;
97
                         DIP { DIG 11 ; DROP } ;
98
                         DUG 11 ;
99
                         DROP 3 ;
100
                         PAIR 8 ;
101
                         DIG 1 ;
102
                         PAIR }
103
                       { DUP 2 ;
104
                         SENDER ;
105
                         COMPARE ;
106
                         EQ ;
107
                         NOT ;
108
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
109
                         DUP ;
110
                         SOME ;
111
                         DIP { DIG 3 ; DROP } ;
112
                         DUG 3 ;
113
                         DROP ;
114
                         PAIR 8 ;
115
                         DIG 1 ;
116
                         PAIR } }
117
                   { IF_LEFT
118
                       { DROP ;
119
                         DUP 3 ;
120
                         IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
121
                         SENDER ;
122
                         COMPARE ;
123
                         EQ ;
124
                         NOT ;
125
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
126
                         DUP 3 ;
127
                         IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
128
                         SWAP ;
129
                         DROP ;
130
                         NONE address ;
131
                         DIP { DIG 2 ; DROP } ;
132
                         DUG 2 ;
133
                         PAIR 8 ;
134
                         DIG 1 ;
135
                         PAIR }
136
                       { DROP ;
137
                         DUP ;
138
                         SENDER ;
139
                         COMPARE ;
140
                         EQ ;
141
                         NOT ;
142
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
143
                         DUP 4 ;
144
                         IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
145
                         PUSH bool True ;
146
                         DIP { DIG 3 ; DROP } ;
147
                         DUG 3 ;
148
                         PAIR 8 ;
149
                         DIG 1 ;
150
                         PAIR } } }
151
               { IF_LEFT
152
                   { IF_LEFT
153
                       { DROP ;
154
                         DUP ;
155
                         SENDER ;
156
                         COMPARE ;
157
                         EQ ;
158
                         NOT ;
159
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
160
                         DUP 4 ;
161
                         NOT ;
162
                         IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
163
                         PUSH bool False ;
164
                         DIP { DIG 3 ; DROP } ;
165
                         DUG 3 ;
166
                         PAIR 8 ;
167
                         DIG 1 ;
168
                         PAIR }
169
                       { DUP 2 ;
170
                         SENDER ;
171
                         COMPARE ;
172
                         EQ ;
173
                         NOT ;
174
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
175
                         DIG 5 ;
176
                         PUSH bool True ;
177
                         DUP 3 ;
178
                         UPDATE ;
179
                         DUG 5 ;
180
                         DROP ;
181
                         PAIR 8 ;
182
                         DIG 1 ;
183
                         PAIR } }
184
                   { IF_LEFT
185
                       { DUP 2 ;
186
                         SENDER ;
187
                         COMPARE ;
188
                         EQ ;
189
                         NOT ;
190
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
191
                         DIG 5 ;
192
                         PUSH bool False ;
193
                         DUP 3 ;
194
                         UPDATE ;
195
                         DUG 5 ;
196
                         DROP ;
197
                         PAIR 8 ;
198
                         DIG 1 ;
199
                         PAIR }
200
                       { DUP 2 ;
201
                         SENDER ;
202
                         COMPARE ;
203
                         EQ ;
204
                         NOT ;
205
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
206
                         DUP 7 ;
207
                         DUP 2 ;
208
                         MEM ;
209
                         IF
210
                           { PUSH string "whitelister" ;
211
                             PUSH string "KeyExists" ;
212
                             PAIR ;
213
                             FAILWITH }
214
                           { DUP 7 ; PUSH bool True ; DUP 3 ; UPDATE ; DIP { DIG 6 ; DROP } ; DUG 6 } ;
215
                         DROP ;
216
                         PAIR 8 ;
217
                         DIG 1 ;
218
                         PAIR } } } }
219
           { IF_LEFT
220
               { IF_LEFT
221
                   { IF_LEFT
222
                       { DUP 2 ;
223
                         SENDER ;
224
                         COMPARE ;
225
                         EQ ;
226
                         NOT ;
227
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
228
                         DUP 7 ;
229
                         PUSH bool False ;
230
                         DUP 3 ;
231
                         UPDATE ;
232
                         DIP { DIG 6 ; DROP } ;
233
                         DUG 6 ;
234
                         DROP ;
235
                         PAIR 8 ;
236
                         DIG 1 ;
237
                         PAIR }
238
                       { DUP ;
239
                         ITER { DUP 12 ;
240
                                DUP 2 ;
241
                                DUP 6 ;
242
                                PAIR ;
243
                                DUP 11 ;
244
                                PAIR ;
245
                                PUSH string "USER_GETOPT_INTERNAL_ERROR" ;
246
                                PAIR ;
247
                                EXEC ;
248
                                NOT ;
249
                                IF { PUSH string "USER_RESTRICTED" ; FAILWITH } {} ;
250
                                DROP } ;
251
                         DROP ;
252
                         PAIR 8 ;
253
                         DIG 1 ;
254
                         PAIR } }
255
                   { IF_LEFT
256
                       { DUP ;
257
                         ITER { DUP ;
258
                                CAR ;
259
                                DUP 2 ;
260
                                CDR ;
261
                                DUP ;
262
                                ITER { SELF_ADDRESS ;
263
                                       DUP 2 ;
264
                                       DUP 5 ;
265
                                       PAIR ;
266
                                       SENDER ;
267
                                       PAIR ;
268
                                       VIEW "assertTransfer" string ;
269
                                       IF_NONE
270
                                         { PUSH string "INTERNAL_ERROR" ; FAILWITH }
271
                                         { PUSH string "" ;
272
                                           DUP 2 ;
273
                                           COMPARE ;
274
                                           NEQ ;
275
                                           IF { DUP ; FAILWITH } {} ;
276
                                           DROP } ;
277
                                       DROP } ;
278
                                DROP 3 } ;
279
                         DROP ;
280
                         PAIR 8 ;
281
                         DIG 1 ;
282
                         PAIR }
283
                       { UNPAIR ;
284
                         SWAP ;
285
                         DUP 9 ;
286
                         DUP 3 ;
287
                         MEM ;
288
                         NOT ;
289
                         IF
290
                           { PUSH string "FROM_TRANSFERLIST_NOT_FOUND" ; FAILWITH }
291
                           {} ;
292
                         DUP 9 ;
293
                         DUP 2 ;
294
                         MEM ;
295
                         NOT ;
296
                         IF { PUSH string "TO_TRANSFERLIST_NOT_FOUND" ; FAILWITH } {} ;
297
                         DUP 9 ;
298
                         DUP 3 ;
299
                         GET ;
300
                         IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
301
                         CAR ;
302
                         NOT ;
303
                         IF
304
                           { PUSH string "FROM_INVALID_UNRESTRICTED_STATE" ; FAILWITH }
305
                           {} ;
306
                         DUP 9 ;
307
                         DUP 2 ;
308
                         GET ;
309
                         IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
310
                         CAR ;
311
                         NOT ;
312
                         IF
313
                           { PUSH string "TO_INVALID_UNRESTRICTED_STATE" ; FAILWITH }
314
                           {} ;
315
                         DUP 9 ;
316
                         DUP 3 ;
317
                         GET ;
318
                         IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
319
                         CDR ;
320
                         DUP 2 ;
321
                         MEM ;
322
                         NOT ;
323
                         IF
324
                           { PUSH string "TO_TRANSFERLIST_NOT_FOUND_IN_FROM" ; FAILWITH }
325
                           {} ;
326
                         DROP 2 ;
327
                         PAIR 8 ;
328
                         DIG 1 ;
329
                         PAIR } } }
330
               { IF_LEFT
331
                   { IF_LEFT
332
                       { UNPAIR ;
333
                         SWAP ;
334
                         DUP 8 ;
335
                         SENDER ;
336
                         MEM ;
337
                         DUP 4 ;
338
                         SENDER ;
339
                         COMPARE ;
340
                         EQ ;
341
                         OR ;
342
                         NOT ;
343
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
344
                         DUP 13 ;
345
                         DUP 7 ;
346
                         PUSH string "CONTRACT_PAUSED" ;
347
                         PAIR ;
348
                         EXEC ;
349
                         NOT ;
350
                         IF
351
                           { PUSH string "r0" ;
352
                             PUSH string "InvalidCondition" ;
353
                             PAIR ;
354
                             FAILWITH }
355
                           {} ;
356
                         DUP 11 ;
357
                         DUP 5 ;
358
                         CONTRACT %update (pair address (option nat)) ;
359
                         IF_NONE
360
                           { PUSH string "update" ;
361
                             PUSH string "EntryNotFound" ;
362
                             PAIR ;
363
                             FAILWITH }
364
                           {} ;
365
                         PUSH mutez 0 ;
366
                         DUP 4 ;
367
                         DUP 6 ;
368
                         PAIR ;
369
                         TRANSFER_TOKENS ;
370
                         CONS ;
371
                         DIP { DIG 10 ; DROP } ;
372
                         DUG 10 ;
373
                         DROP 2 ;
374
                         PAIR 8 ;
375
                         DIG 1 ;
376
                         PAIR }
377
                       { DUP 7 ;
378
                         SENDER ;
379
                         MEM ;
380
                         DUP 3 ;
381
                         SENDER ;
382
                         COMPARE ;
383
                         EQ ;
384
                         OR ;
385
                         NOT ;
386
                         IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
387
                         DUP 12 ;
388
                         DUP 6 ;
389
                         PUSH string "CONTRACT_PAUSED" ;
390
                         PAIR ;
391
                         EXEC ;
392
                         NOT ;
393
                         IF
394
                           { PUSH string "r1" ;
395
                             PUSH string "InvalidCondition" ;
396
                             PAIR ;
397
                             FAILWITH }
398
                           {} ;
399
                         DUP ;
400
                         ITER { DUP ;
401
                                CAR ;
402
                                DUP 2 ;
403
                                CDR ;
404
                                DUP 13 ;
405
                                DUP 7 ;
406
                                CONTRACT %update (pair address (option nat)) ;
407
                                IF_NONE
408
                                  { PUSH string "update" ;
409
                                    PUSH string "EntryNotFound" ;
410
                                    PAIR ;
411
                                    FAILWITH }
412
                                  {} ;
413
                                PUSH mutez 0 ;
414
                                DUP 4 ;
415
                                DUP 6 ;
416
                                PAIR ;
417
                                TRANSFER_TOKENS ;
418
                                CONS ;
419
                                DIP { DIG 12 ; DROP } ;
420
                                DUG 12 ;
421
                                DROP 3 } ;
422
                         DROP ;
423
                         PAIR 8 ;
424
                         DIG 1 ;
425
                         PAIR } }
426
                   { UNPAIR ;
427
                     SWAP ;
428
                     DUP 3 ;
429
                     SENDER ;
430
                     COMPARE ;
431
                     EQ ;
432
                     NOT ;
433
                     IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
434
                     DUP 13 ;
435
                     DUP 7 ;
436
                     PUSH string "CONTRACT_PAUSED" ;
437
                     PAIR ;
438
                     EXEC ;
439
                     NOT ;
440
                     IF
441
                       { PUSH string "r2" ; PUSH string "InvalidCondition" ; PAIR ; FAILWITH }
442
                       {} ;
443
                     DUP ;
444
                     IF_NONE
445
                       { DIG 8 ; NONE (pair bool (set nat)) ; DUP 4 ; UPDATE ; DUG 8 }
446
                       { DUP ; CDR ; DUP 2 ; CAR ; PAIR ; DIG 10 ; DUP 2 ; SOME ; DUP 6 ; UPDATE ; DUG 10 ; DROP 2 } ;
447
                     DROP 2 ;
448
                     PAIR 8 ;
449
                     DIG 1 ;
450
                     PAIR } } } ;
451
         DIP { DROP 2 } } ;
452
  view "assertTransfer" (pair address (pair address address)) string
453
        { UNPAIR ;
454
          DIP { CDR ; UNPAIR ; SWAP ; CDR ; CDR ; UNPAIR ; SWAP ; CDR ; UNPAIR ; SWAP ; DROP } ;
455
          UNPAIR 3 ;
456
          UNIT ;
457
          PUSH string "" ;
458
          NONE nat ;
459
          NONE nat ;
460
          PUSH bool False ;
461
          DUP 11 ;
462
          DUP 8 ;
463
          VIEW "getopt" (option nat) ;
464
          IF_NONE
465
            { PUSH string "USER_GETOPT_INTERNAL_ERROR" ; FAILWITH }
466
            { DUP ;
467
              DIP { DIG 3 ; DROP } ;
468
              DUG 3 ;
469
              DUP ;
470
              IF_NONE
471
                { PUSH bool True ; DIP { DIG 1 ; DROP } ; DUG 1 }
472
                { DUP 11 ;
473
                  DUP 2 ;
474
                  GET ;
475
                  IF_NONE
476
                    { PUSH bool True ; DIP { DIG 2 ; DROP } ; DUG 2 }
477
                    { DUP ; CAR ; NOT ; DIP { DIG 3 ; DROP } ; DUG 3 ; DROP } ;
478
                  DROP } ;
479
              DROP } ;
480
          DUP ;
481
          IF
482
            { PUSH string "FROM_RESTRICTED" ; DIP { DIG 3 ; DROP } ; DUG 3 }
483
            { PUSH bool False ;
484
              DUP 12 ;
485
              DUP 10 ;
486
              VIEW "getopt" (option nat) ;
487
              IF_NONE
488
                { PUSH string "USER_GETOPT_INTERNAL_ERROR" ; FAILWITH }
489
                { DUP ;
490
                  DIP { DIG 3 ; DROP } ;
491
                  DUG 3 ;
492
                  DUP ;
493
                  IF_NONE
494
                    { PUSH bool True ; DIP { DIG 1 ; DROP } ; DUG 1 }
495
                    { DUP 12 ;
496
                      DUP 2 ;
497
                      GET ;
498
                      IF_NONE
499
                        { PUSH bool True ; DIP { DIG 2 ; DROP } ; DUG 2 }
500
                        { DUP ; CAR ; NOT ; DIP { DIG 3 ; DROP } ; DUG 3 ; DROP } ;
501
                      DROP } ;
502
                  DROP } ;
503
              DUP ;
504
              IF
505
                { PUSH string "TO_RESTRICTED" ; DIP { DIG 4 ; DROP } ; DUG 4 }
506
                { DUP 11 ;
507
                  DUP 8 ;
508
                  MEM ;
509
                  NOT ;
510
                  IF
511
                    { DUP 4 ;
512
                      IF_NONE
513
                        { PUSH string "INTERNAL_ERROR" ; FAILWITH }
514
                        { DUP 4 ;
515
                          IF_NONE
516
                            { PUSH string "INTERNAL_ERROR" ; FAILWITH }
517
                            { DUP 12 ;
518
                              DUP 3 ;
519
                              GET ;
520
                              IF_NONE { PUSH string "NotFound" ; FAILWITH } {} ;
521
                              CDR ;
522
                              DUP ;
523
                              DUP 3 ;
524
                              MEM ;
525
                              NOT ;
526
                              IF
527
                                { PUSH string "TO_NOT_ALLOWED" ;
528
                                  DIP { DIG 7 ; DROP } ;
529
                                  DUG 7 }
530
                                {} ;
531
                              DROP 2 } ;
532
                          DROP } }
533
                    {} } ;
534
              DROP } ;
535
          DUP 4 ;
536
          DIP { DIG 4 ; DROP } ;
537
          DUG 4 ;
538
          DROP 4 ;
539
          DIP { DROP 6 } } }