BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Shadownet
  • /
  • KT1Pj3r...e7Lw
operations (37)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
359
 
1
{ parameter (or
2
              (or (address %add_bootloader)
3
                  (or
4
                    (pair %execute_sale (bytes %sale_id)
5
                                        (pair (address %buyer)
6
                                              (pair (nat %amount) (bytes %extra))))
7
                    (address %remove_bootloader)))
8
              (or (or (address %set_admin) (nat %set_platform_fee_bps))
9
                  (or
10
                    (pair %set_sale (address %bootloader)
11
                                    (pair (nat %generator_id)
12
                                          (pair %sale_config
13
                                            (option %max_per_wallet nat)
14
                                            (pair (bool %paused)
15
                                                  (pair (mutez %price)
16
                                                        (option %start_time timestamp))))))
17
                    (address %set_treasury)))) ;
18
  storage (pair (address %administrator)
19
                (pair (big_map %bootloaders address unit)
20
                      (pair (big_map %mints (pair (pair address nat) address) nat)
21
                            (pair (nat %platform_fee_bps)
22
                                  (pair
23
                                    (big_map %sales (pair address nat)
24
                                                    (pair (address %creator)
25
                                                          (pair %sale_config
26
                                                            (option %max_per_wallet nat)
27
                                                            (pair (bool %paused)
28
                                                                  (pair (mutez %price)
29
                                                                        (option %start_time timestamp))))))
30
                                    (address %treasury)))))) ;
31
  code { LAMBDA
32
           (pair unit
33
                 (pair address
34
                       (pair (big_map address unit)
35
                             (pair (big_map (pair (pair address nat) address) nat)
36
                                   (pair nat
37
                                         (pair
38
                                           (big_map (pair address nat)
39
                                                    (pair address
40
                                                          (pair (option nat)
41
                                                                (pair bool
42
                                                                      (pair mutez
43
                                                                            (option timestamp))))))
44
                                           address))))))
45
           (pair unit
46
                 (pair address
47
                       (pair (big_map address unit)
48
                             (pair (big_map (pair (pair address nat) address) nat)
49
                                   (pair nat
50
                                         (pair
51
                                           (big_map (pair address nat)
52
                                                    (pair address
53
                                                          (pair (option nat)
54
                                                                (pair bool
55
                                                                      (pair mutez
56
                                                                            (option timestamp))))))
57
                                           address))))))
58
           { CDR ;
59
             DUP ;
60
             CAR ;
61
             SENDER ;
62
             COMPARE ;
63
             EQ ;
64
             IF {} { PUSH string "ONLY_ADMIN" ; FAILWITH } ;
65
             UNIT ;
66
             PAIR } ;
67
         SWAP ;
68
         UNPAIR ;
69
         IF_LEFT
70
           { IF_LEFT
71
               { DIG 2 ;
72
                 UNIT ;
73
                 SWAP ;
74
                 DIG 3 ;
75
                 DIG 2 ;
76
                 PAIR ;
77
                 EXEC ;
78
                 CDR ;
79
                 DUP ;
80
                 GET 3 ;
81
                 PUSH (option unit) (Some Unit) ;
82
                 DIG 3 ;
83
                 UPDATE ;
84
                 UPDATE 3 ;
85
                 NIL operation }
86
               { IF_LEFT
87
                   { PUSH nat 0 ;
88
                     DUP 2 ;
89
                     GET 5 ;
90
                     COMPARE ;
91
                     GT ;
92
                     IF {} { PUSH string "ZERO_AMOUNT" ; FAILWITH } ;
93
                     PUSH bytes 0x ;
94
                     DUP 2 ;
95
                     GET 6 ;
96
                     COMPARE ;
97
                     EQ ;
98
                     IF {} { PUSH string "UNSUPPORTED_EXTRA" ; FAILWITH } ;
99
                     DUP ;
100
                     CAR ;
101
                     UNPACK (pair address nat) ;
102
                     IF_NONE { PUSH string "INVALID_SALE_ID" ; FAILWITH } {} ;
103
                     DUP ;
104
                     UNPAIR ;
105
                     SENDER ;
106
                     DUP 2 ;
107
                     COMPARE ;
108
                     EQ ;
109
                     IF {} { PUSH string "SALE_BOOTLOADER_MISMATCH" ; FAILWITH } ;
110
                     DUP 2 ;
111
                     SENDER ;
112
                     PAIR ;
113
                     DUP 6 ;
114
                     GET 9 ;
115
                     DUP 2 ;
116
                     GET ;
117
                     IF_NONE { PUSH string "INVALID_SALE_ID" ; FAILWITH } {} ;
118
                     DUP ;
119
                     CDR ;
120
                     DUP ;
121
                     GET 3 ;
122
                     IF { PUSH string "SALE_PAUSED" ; FAILWITH } {} ;
123
                     DUP 7 ;
124
                     GET 5 ;
125
                     DUP 2 ;
126
                     GET 5 ;
127
                     MUL ;
128
                     AMOUNT ;
129
                     COMPARE ;
130
                     EQ ;
131
                     IF {} { PUSH string "PRICE_MISMATCH" ; FAILWITH } ;
132
                     DUP ;
133
                     GET 6 ;
134
                     IF_NONE
135
                       {}
136
                       { NOW ;
137
                         COMPARE ;
138
                         GE ;
139
                         IF {} { PUSH string "SALE_NOT_STARTED" ; FAILWITH } } ;
140
                     DUP 7 ;
141
                     GET 3 ;
142
                     DUP 4 ;
143
                     PAIR ;
144
                     DUP 9 ;
145
                     GET 5 ;
146
                     DUP 2 ;
147
                     GET ;
148
                     IF_NONE { PUSH nat 0 } {} ;
149
                     DUP 3 ;
150
                     CAR ;
151
                     IF_NONE
152
                       { DIG 2 ; DROP }
153
                       { DIG 3 ;
154
                         DROP ;
155
                         DUP 9 ;
156
                         GET 5 ;
157
                         DUP 3 ;
158
                         ADD ;
159
                         COMPARE ;
160
                         LE ;
161
                         IF {} { PUSH string "EXCEEDS_MAX_PER_WALLET" ; FAILWITH } } ;
162
                     DIG 8 ;
163
                     DUP ;
164
                     GET 5 ;
165
                     DUP 10 ;
166
                     GET 5 ;
167
                     DIG 3 ;
168
                     ADD ;
169
                     SOME ;
170
                     DIG 3 ;
171
                     UPDATE ;
172
                     UPDATE 5 ;
173
                     DUG 6 ;
174
                     PUSH nat 10000 ;
175
                     DUP 8 ;
176
                     GET 7 ;
177
                     AMOUNT ;
178
                     MUL ;
179
                     EDIV ;
180
                     IF_NONE { PUSH int 148 ; FAILWITH } {} ;
181
                     CAR ;
182
                     DUP ;
183
                     AMOUNT ;
184
                     SUB_MUTEZ ;
185
                     IF_NONE { PUSH int 151 ; FAILWITH } {} ;
186
                     PUSH mutez 0 ;
187
                     DUP 3 ;
188
                     COMPARE ;
189
                     GT ;
190
                     IF
191
                       { NIL operation ;
192
                         DUP 10 ;
193
                         GET 10 ;
194
                         CONTRACT unit ;
195
                         IF_NONE { PUSH int 154 ; FAILWITH } {} ;
196
                         DIG 3 ;
197
                         UNIT ;
198
                         TRANSFER_TOKENS ;
199
                         CONS }
200
                       { SWAP ; DROP ; NIL operation } ;
201
                     PUSH mutez 0 ;
202
                     DUP 3 ;
203
                     COMPARE ;
204
                     GT ;
205
                     IF
206
                       { DIG 3 ;
207
                         DROP ;
208
                         DIG 3 ;
209
                         DROP ;
210
                         DIG 3 ;
211
                         DROP ;
212
                         DIG 3 ;
213
                         DROP ;
214
                         DIG 3 ;
215
                         DROP ;
216
                         DIG 4 ;
217
                         DROP ;
218
                         DIG 2 ;
219
                         CAR ;
220
                         CONTRACT unit ;
221
                         IF_NONE { PUSH int 156 ; FAILWITH } {} ;
222
                         DIG 2 ;
223
                         UNIT ;
224
                         TRANSFER_TOKENS ;
225
                         CONS }
226
                       { SWAP ;
227
                         DROP ;
228
                         SWAP ;
229
                         DROP ;
230
                         SWAP ;
231
                         DROP ;
232
                         SWAP ;
233
                         DROP ;
234
                         SWAP ;
235
                         DROP ;
236
                         SWAP ;
237
                         DROP ;
238
                         SWAP ;
239
                         DROP ;
240
                         DIG 2 ;
241
                         DROP } }
242
                   { DIG 2 ;
243
                     UNIT ;
244
                     SWAP ;
245
                     DIG 3 ;
246
                     DIG 2 ;
247
                     PAIR ;
248
                     EXEC ;
249
                     CDR ;
250
                     DUP ;
251
                     GET 3 ;
252
                     NONE unit ;
253
                     DIG 3 ;
254
                     UPDATE ;
255
                     UPDATE 3 ;
256
                     NIL operation } } }
257
           { IF_LEFT
258
               { IF_LEFT
259
                   { DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; UPDATE 1 }
260
                   { DIG 2 ;
261
                     UNIT ;
262
                     SWAP ;
263
                     DIG 3 ;
264
                     DIG 2 ;
265
                     PAIR ;
266
                     EXEC ;
267
                     CDR ;
268
                     SWAP ;
269
                     PUSH nat 10000 ;
270
                     DUP 2 ;
271
                     COMPARE ;
272
                     LE ;
273
                     IF {} { PUSH string "BPS_TOO_HIGH" ; FAILWITH } ;
274
                     UPDATE 7 } }
275
               { IF_LEFT
276
                   { DUP 2 ;
277
                     GET 3 ;
278
                     DUP 2 ;
279
                     CAR ;
280
                     MEM ;
281
                     IF {} { PUSH string "INVALID_BOOTLOADER" ; FAILWITH } ;
282
                     DUP ;
283
                     CAR ;
284
                     DUP 2 ;
285
                     GET 3 ;
286
                     VIEW "get_generator_author" address ;
287
                     IF_NONE { PUSH string "INVALID_BOOTLOADER" ; FAILWITH } {} ;
288
                     DUP ;
289
                     SENDER ;
290
                     COMPARE ;
291
                     EQ ;
292
                     IF {} { PUSH string "ONLY_CREATOR" ; FAILWITH } ;
293
                     DUP 2 ;
294
                     GET 3 ;
295
                     DUP 3 ;
296
                     CAR ;
297
                     PAIR ;
298
                     DUP 4 ;
299
                     GET 9 ;
300
                     DUP 2 ;
301
                     GET ;
302
                     IF_NONE
303
                       { DIG 4 ; DROP }
304
                       { DIG 5 ;
305
                         DROP ;
306
                         CAR ;
307
                         SENDER ;
308
                         COMPARE ;
309
                         EQ ;
310
                         IF {} { PUSH string "ONLY_CREATOR" ; FAILWITH } } ;
311
                     DIG 3 ;
312
                     DUP ;
313
                     GET 9 ;
314
                     DIG 4 ;
315
                     GET 4 ;
316
                     DIG 4 ;
317
                     PAIR ;
318
                     SOME ;
319
                     DIG 3 ;
320
                     UPDATE ;
321
                     UPDATE 9 }
322
                   { DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; UPDATE 10 } } ;
323
             NIL operation } ;
324
         NIL operation ;
325
         SWAP ;
326
         ITER { CONS } ;
327
         PAIR } ;
328
  view "is_sale_configured" (pair (address %bootloader) (bytes %sale_id)) bool
329
        { UNPAIR ;
330
          PUSH bool False ;
331
          DUP 2 ;
332
          CDR ;
333
          UNPACK (pair address nat) ;
334
          DUP ;
335
          IF_NONE
336
            { DROP ; SWAP ; DROP ; SWAP ; DROP }
337
            { DIG 2 ;
338
              DROP ;
339
              DUP ;
340
              UNPAIR ;
341
              DUP 5 ;
342
              CAR ;
343
              COMPARE ;
344
              EQ ;
345
              IF
346
                { SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; GET 9 ; SWAP ; DIG 2 ; CAR ; PAIR ; MEM }
347
                { DROP 5 ; PUSH bool False } } } ;
348
  view "get_sale" (pair (address %bootloader) (nat %generator_id))
349
        (pair (address %creator)
350
              (pair %sale_config (option %max_per_wallet nat)
351
                                 (pair (bool %paused)
352
                                       (pair (mutez %price)
353
                                             (option %start_time timestamp)))))
354
        { UNPAIR ;
355
          SWAP ;
356
          GET 9 ;
357
          SWAP ;
358
          GET ;
359
          IF_NONE { PUSH string "INVALID_SALE_ID" ; FAILWITH } {} } }