BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Ubisoft Quartz Minting Validator
operations (6.67K)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
232
 
1
parameter (or
2
            (or (or (address %setAdminCandidate) (unit %acceptAdminCandidate))
3
                (or (bytes %setMetadataUri)
4
                    (pair %grantRole (string %irole) (list %iaddrs address))))
5
            (or
6
              (or (pair %revokeRole (string %irole) (list %iaddrs address))
7
                  (pair %setMintingLimit (nat %id) (nat %lim)))
8
              (pair %validateMint (nat %id) (nat %serialNr))));
9
storage (pair (address %admin)
10
              (pair (option %adminCandidate address)
11
                    (pair (map %role string (set address))
12
                          (pair (big_map %mintingLimits nat nat)
13
                                (big_map %metadata string bytes)))));
14
code { LAMBDA
15
         (pair (map string (set address)) (pair string address))
16
         bool
17
         { UNPAIR 3 ;
18
           PUSH unit Unit ;
19
           DUP 2 ;
20
           DUP 4 ;
21
           GET ;
22
           IF_NONE
23
             { PUSH string "role" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
24
             {} ;
25
           DUP 5 ;
26
           MEM ;
27
           SWAP ;
28
           DROP ;
29
           DUG 3 ;
30
           DROP 3 } ;
31
       LAMBDA
32
         (pair string
33
               (pair (map string (set address))
34
                     (pair string
35
                           (lambda
36
                             (pair (map string (set address)) (pair string address))
37
                             bool))))
38
         bool
39
         { UNPAIR 4 ;
40
           PUSH unit Unit ;
41
           DUP 5 ;
42
           SENDER ;
43
           PUSH string "minter" ;
44
           PAIR ;
45
           DUP 5 ;
46
           PAIR ;
47
           EXEC ;
48
           IF
49
             { PUSH bool True ; SWAP ; DROP }
50
             { PUSH string "CALLER_NOT_MINTER" ; FAILWITH } ;
51
           DUG 4 ;
52
           DROP 4 } ;
53
       DIG 2 ;
54
       UNPAIR ;
55
       DIP { UNPAIR 5 } ;
56
       IF_LEFT
57
         { IF_LEFT
58
             { IF_LEFT
59
                 { DUP 2 ;
60
                   SENDER ;
61
                   COMPARE ;
62
                   EQ ;
63
                   NOT ;
64
                   IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
65
                   DUP ;
66
                   SOME ;
67
                   DIP { DIG 2 ; DROP } ;
68
                   DUG 2 ;
69
                   DROP ;
70
                   PAIR 5 ;
71
                   NIL operation ;
72
                   PAIR }
73
                 { DROP ;
74
                   DUP 2 ;
75
                   IF_NONE
76
                     { PUSH string "ADMIN_CANDIDATE_NOT_SET" ; FAILWITH }
77
                     { DUP ;
78
                       SENDER ;
79
                       COMPARE ;
80
                       EQ ;
81
                       NOT ;
82
                       IF { PUSH string "CALLER_NOT_ADMIN_CANDIDATE" ; FAILWITH } {} ;
83
                       DUP ;
84
                       DIP { DIG 1 ; DROP } ;
85
                       DUG 1 ;
86
                       NONE address ;
87
                       DIP { DIG 2 ; DROP } ;
88
                       DUG 2 ;
89
                       DROP } ;
90
                   PAIR 5 ;
91
                   NIL operation ;
92
                   PAIR } }
93
             { IF_LEFT
94
                 { DUP 2 ;
95
                   SENDER ;
96
                   COMPARE ;
97
                   EQ ;
98
                   NOT ;
99
                   IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
100
                   DIG 5 ;
101
                   DUP 2 ;
102
                   SOME ;
103
                   PUSH string "" ;
104
                   UPDATE ;
105
                   DUG 5 ;
106
                   DROP ;
107
                   PAIR 5 ;
108
                   NIL operation ;
109
                   PAIR }
110
                 { UNPAIR ;
111
                   SWAP ;
112
                   DUP 3 ;
113
                   SENDER ;
114
                   COMPARE ;
115
                   EQ ;
116
                   NOT ;
117
                   IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
118
                   DUP ;
119
                   ITER { DUP 6 ;
120
                          DUP 7 ;
121
                          DUP 5 ;
122
                          GET ;
123
                          IF_NONE
124
                            { PUSH string "role" ;
125
                              PUSH string "AssetNotFound" ;
126
                              PAIR ;
127
                              FAILWITH }
128
                            {} ;
129
                          PUSH bool True ;
130
                          DUP 4 ;
131
                          UPDATE ;
132
                          SOME ;
133
                          DUP 5 ;
134
                          UPDATE ;
135
                          DIP { DIG 5 ; DROP } ;
136
                          DUG 5 ;
137
                          DROP } ;
138
                   DROP 2 ;
139
                   PAIR 5 ;
140
                   NIL operation ;
141
                   PAIR } } }
142
         { IF_LEFT
143
             { IF_LEFT
144
                 { UNPAIR ;
145
                   SWAP ;
146
                   DUP 3 ;
147
                   SENDER ;
148
                   COMPARE ;
149
                   EQ ;
150
                   NOT ;
151
                   IF { PUSH string "InvalidCaller" ; FAILWITH } {} ;
152
                   DUP ;
153
                   ITER { DUP 6 ;
154
                          DUP 7 ;
155
                          DUP 5 ;
156
                          GET ;
157
                          IF_NONE
158
                            { PUSH string "role" ;
159
                              PUSH string "AssetNotFound" ;
160
                              PAIR ;
161
                              FAILWITH }
162
                            {} ;
163
                          PUSH bool False ;
164
                          DUP 4 ;
165
                          UPDATE ;
166
                          SOME ;
167
                          DUP 5 ;
168
                          UPDATE ;
169
                          DIP { DIG 5 ; DROP } ;
170
                          DUG 5 ;
171
                          DROP } ;
172
                   DROP 2 ;
173
                   PAIR 5 ;
174
                   NIL operation ;
175
                   PAIR }
176
                 { UNPAIR ;
177
                   SWAP ;
178
                   DUP 8 ;
179
                   DUP 10 ;
180
                   PUSH string "minter" ;
181
                   PAIR ;
182
                   DUP 7 ;
183
                   PAIR ;
184
                   PUSH string "CALLER_NOT_MINTER" ;
185
                   PAIR ;
186
                   EXEC ;
187
                   NOT ;
188
                   IF
189
                     { PUSH string "r0" ; PUSH string "InvalidCondition" ; PAIR ; FAILWITH }
190
                     {} ;
191
                   DUP 6 ;
192
                   DUP 3 ;
193
                   MEM ;
194
                   IF { PUSH string "MINTING_LIMIT_ALREADY_SET" ; FAILWITH } {} ;
195
                   DUP 6 ;
196
                   DUP 3 ;
197
                   MEM ;
198
                   IF
199
                     { PUSH string "mintingLimits" ; PUSH string "KeyExists" ; PAIR ; FAILWITH }
200
                     { DUP 6 ; DUP 2 ; SOME ; DUP 4 ; UPDATE ; DIP { DIG 5 ; DROP } ; DUG 5 } ;
201
                   DROP 2 ;
202
                   PAIR 5 ;
203
                   NIL operation ;
204
                   PAIR } }
205
             { UNPAIR ;
206
               SWAP ;
207
               DUP 6 ;
208
               DUP 3 ;
209
               MEM ;
210
               NOT ;
211
               IF { PUSH string "SERIAL_NUMBER_OUT_OF_BOUNDS" ; FAILWITH } {} ;
212
               DUP 6 ;
213
               DUP 3 ;
214
               GET ;
215
               IF_NONE
216
                 { PUSH string "mintingLimits" ; PUSH string "AssetNotFound" ; PAIR ; FAILWITH }
217
                 {} ;
218
               DUP 2 ;
219
               COMPARE ;
220
               LE ;
221
               PUSH nat 0 ;
222
               DUP 3 ;
223
               COMPARE ;
224
               GT ;
225
               AND ;
226
               NOT ;
227
               IF { PUSH string "SERIAL_NUMBER_OUT_OF_BOUNDS" ; FAILWITH } {} ;
228
               DROP 2 ;
229
               PAIR 5 ;
230
               NIL operation ;
231
               PAIR } } ;
232
       DIP { DROP 2 } }