BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • Ottez Evo-Fusion Chamber
operations (20)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
561
 
1
parameter (or
2
            (or
3
              (or %adminAction (or (map %accumulate address nat) (bool %pauseSale))
4
                               (or (pair %reveal bytes nat) (map %uploadDna nat bytes)))
5
              (pair %fuse (pair %tokensIds nat nat) (bytes %dna)))
6
            (list %verifyBalance (pair (pair %request (address %owner) (nat %token_id))
7
                                      (nat %balance))));
8
storage (pair (big_map %metadata string bytes)
9
              (pair %sale (bool %paused) (address %inTokenAddress)
10
                          (address %outTokenAddress)
11
                          (mutez %price)
12
                          (mutez %recharge)
13
                          (nat %fuseTokens)
14
                          (int %rechargeInterval)
15
                          (nat %soldAmount)
16
                          (nat %saleSupply)
17
                          (bytes %placeholderIpfs)
18
                          (nat %nextId))
19
              (big_map %tokenDna nat bytes)
20
              (big_map %tokenDnaRev bytes nat)
21
              (big_map %mintedDna bytes nat)
22
              (big_map %ledger address (pair (nat %accumulated) (nat %used)))
23
              (big_map %cooldown nat timestamp)
24
              (map %recipients address nat)
25
              (address %admin));
26
code { NIL operation ;
27
       LAMBDA
28
         (pair nat (big_map string bytes)
29
               (pair bool address address mutez mutez nat int nat nat bytes nat)
30
               (big_map nat bytes)
31
               (big_map bytes nat)
32
               (big_map bytes nat)
33
               (big_map address (pair nat nat))
34
               (big_map nat timestamp)
35
               (map address nat)
36
               address)
37
         timestamp
38
         { UNPAIR ; SWAP ; GET 13 ; SWAP ; GET ; IF_NONE { PUSH int 1 ; NOW ; SUB } {} } ;
39
       LAMBDA
40
         (pair address (big_map string bytes)
41
               (pair bool address address mutez mutez nat int nat nat bytes nat)
42
               (big_map nat bytes)
43
               (big_map bytes nat)
44
               (big_map bytes nat)
45
               (big_map address (pair nat nat))
46
               (big_map nat timestamp)
47
               (map address nat)
48
               address)
49
         (pair nat nat)
50
         { UNPAIR ; SWAP ; GET 11 ; SWAP ; GET ; IF_NONE { PUSH nat 0 ; PUSH nat 0 ; PAIR } {} } ;
51
       DIG 3 ;
52
       UNPAIR ;
53
       IF_LEFT
54
         { IF_LEFT
55
             { DIG 3 ;
56
               DROP ;
57
               PUSH bool False ;
58
               DUP 3 ;
59
               GET 16 ;
60
               SENDER ;
61
               COMPARE ;
62
               EQ ;
63
               COMPARE ;
64
               EQ ;
65
               IF { PUSH string "INVALID_ACCESS" ; FAILWITH } {} ;
66
               IF_LEFT
67
                 { IF_LEFT
68
                     { ITER { UNPAIR ;
69
                              DUP 3 ;
70
                              DUP 2 ;
71
                              PAIR ;
72
                              DUP 5 ;
73
                              SWAP ;
74
                              EXEC ;
75
                              DIG 2 ;
76
                              UPDATE 1 ;
77
                              DUP 3 ;
78
                              DIG 3 ;
79
                              GET 11 ;
80
                              DIG 2 ;
81
                              DIG 3 ;
82
                              SWAP ;
83
                              SOME ;
84
                              SWAP ;
85
                              UPDATE ;
86
                              UPDATE 11 } ;
87
                       SWAP ;
88
                       DROP }
89
                     { DIG 2 ; DROP ; SWAP ; DUP ; GET 3 ; DIG 2 ; UPDATE 1 ; UPDATE 3 } ;
90
                   SWAP }
91
                 { DIG 2 ;
92
                   DROP ;
93
                   IF_LEFT
94
                     { DIG 2 ;
95
                       DROP ;
96
                       DUP 2 ;
97
                       GET 3 ;
98
                       GET 5 ;
99
                       CONTRACT %reveal (pair (pair bytes nat) nat) ;
100
                       IF_NONE
101
                         { PUSH string "CANNOT_INVOKE_FA2_REVEAL" ; FAILWITH }
102
                         {} ;
103
                       DIG 2 ;
104
                       NIL operation ;
105
                       DIG 2 ;
106
                       PUSH mutez 0 ;
107
                       DUP 5 ;
108
                       CDR ;
109
                       DIG 5 ;
110
                       PAIR ;
111
                       TRANSFER_TOKENS ;
112
                       CONS }
113
                     { ITER { UNPAIR ;
114
                              DUP 3 ;
115
                              DIG 3 ;
116
                              GET 5 ;
117
                              DUP 4 ;
118
                              DUP 4 ;
119
                              SWAP ;
120
                              SOME ;
121
                              SWAP ;
122
                              UPDATE ;
123
                              UPDATE 5 ;
124
                              DUG 2 ;
125
                              DUP 3 ;
126
                              DIG 3 ;
127
                              GET 7 ;
128
                              DIG 2 ;
129
                              DIG 3 ;
130
                              SWAP ;
131
                              SOME ;
132
                              SWAP ;
133
                              UPDATE ;
134
                              UPDATE 7 } ;
135
                       SWAP } } }
136
             { DIG 4 ;
137
               DROP ;
138
               SWAP ;
139
               PUSH bool True ;
140
               DUP 2 ;
141
               GET 3 ;
142
               CAR ;
143
               COMPARE ;
144
               EQ ;
145
               IF { PUSH string "SALE_PAUSED" ; FAILWITH } {} ;
146
               DUP ;
147
               GET 3 ;
148
               GET 17 ;
149
               DUP 2 ;
150
               GET 3 ;
151
               GET 15 ;
152
               COMPARE ;
153
               GE ;
154
               IF { PUSH string "SOLD_OUT" ; FAILWITH } {} ;
155
               DUP ;
156
               GET 3 ;
157
               GET 7 ;
158
               NOW ;
159
               DUP 3 ;
160
               DUP 5 ;
161
               CAR ;
162
               CAR ;
163
               PAIR ;
164
               DUP 7 ;
165
               SWAP ;
166
               EXEC ;
167
               COMPARE ;
168
               GT ;
169
               IF { DUP 2 ; GET 3 ; GET 9 ; ADD } {} ;
170
               NOW ;
171
               DUP 3 ;
172
               DUP 5 ;
173
               CAR ;
174
               CDR ;
175
               PAIR ;
176
               DIG 6 ;
177
               SWAP ;
178
               EXEC ;
179
               COMPARE ;
180
               GT ;
181
               IF { DUP 2 ; GET 3 ; GET 9 ; ADD } {} ;
182
               AMOUNT ;
183
               COMPARE ;
184
               NEQ ;
185
               IF { PUSH string "INVALID_AMOUNT" ; FAILWITH } {} ;
186
               DUP ;
187
               SENDER ;
188
               PAIR ;
189
               DIG 3 ;
190
               SWAP ;
191
               EXEC ;
192
               DUP ;
193
               CDR ;
194
               DUP 2 ;
195
               CAR ;
196
               SUB ;
197
               ISNAT ;
198
               IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
199
               DUP 3 ;
200
               GET 3 ;
201
               GET 11 ;
202
               SWAP ;
203
               COMPARE ;
204
               LT ;
205
               IF { PUSH string "INVALID_FUSE_BALANCE" ; FAILWITH } {} ;
206
               DUP 2 ;
207
               DUP 4 ;
208
               PUSH nat 9 ;
209
               DUP 2 ;
210
               CDR ;
211
               SIZE ;
212
               COMPARE ;
213
               NEQ ;
214
               IF { PUSH string "INVALID_DNA" ; FAILWITH } {} ;
215
               PUSH bool True ;
216
               DUP 3 ;
217
               GET 7 ;
218
               DUP 3 ;
219
               CDR ;
220
               MEM ;
221
               COMPARE ;
222
               EQ ;
223
               IF { PUSH string "DUPLICATE_DNA_GEN1" ; FAILWITH } {} ;
224
               PUSH bool True ;
225
               DUP 3 ;
226
               GET 9 ;
227
               DUP 3 ;
228
               CDR ;
229
               MEM ;
230
               COMPARE ;
231
               EQ ;
232
               IF { PUSH string "DUPLICATE_DNA_GEN2" ; FAILWITH } {} ;
233
               DUP 2 ;
234
               GET 5 ;
235
               DUP 2 ;
236
               CAR ;
237
               CAR ;
238
               GET ;
239
               IF_NONE { PUSH string "INVALID_TOKEN_ID" ; FAILWITH } {} ;
240
               DIG 2 ;
241
               GET 5 ;
242
               DUP 3 ;
243
               CAR ;
244
               CDR ;
245
               GET ;
246
               IF_NONE { PUSH string "INVALID_TOKEN_ID" ; FAILWITH } {} ;
247
               PUSH int 1 ;
248
               PUSH int 8 ;
249
               PUSH int 0 ;
250
               DUP 2 ;
251
               DUP 2 ;
252
               COMPARE ;
253
               LE ;
254
               LOOP { DUP ;
255
                      DUG 3 ;
256
                      DIP 3
257
                           { DUP 4 ;
258
                             CDR ;
259
                             PUSH nat 1 ;
260
                             DUP 3 ;
261
                             ABS ;
262
                             SLICE ;
263
                             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
264
                             DUP 3 ;
265
                             PUSH nat 1 ;
266
                             DUP 4 ;
267
                             ABS ;
268
                             SLICE ;
269
                             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
270
                             DUP 2 ;
271
                             COMPARE ;
272
                             NEQ ;
273
                             DUP 5 ;
274
                             PUSH nat 1 ;
275
                             DIG 4 ;
276
                             ABS ;
277
                             SLICE ;
278
                             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
279
                             DIG 2 ;
280
                             COMPARE ;
281
                             NEQ ;
282
                             AND ;
283
                             IF { PUSH string "INVALID_DNA" ; FAILWITH } {} } ;
284
                      DUP 3 ;
285
                      ADD ;
286
                      DUP 2 ;
287
                      DUP 2 ;
288
                      COMPARE ;
289
                      LE } ;
290
               DROP 3 ;
291
               DROP 3 ;
292
               NIL operation ;
293
               EMPTY_MAP string bytes ;
294
               PUSH string ".json" ;
295
               DUP 5 ;
296
               GET 3 ;
297
               GET 20 ;
298
               { PUSH string "" ;
299
                 PAIR ;
300
                 LEFT (pair string nat) ;
301
                 LOOP_LEFT { DUP ;
302
                             CDR ;
303
                             PUSH nat 0 ;
304
                             SWAP ;
305
                             DUP ;
306
                             DUG 2 ;
307
                             COMPARE ;
308
                             GT ;
309
                             IF
310
                               { SWAP ;
311
                                 CAR ;
312
                                 PUSH nat 10 ;
313
                                 DUP 3 ;
314
                                 EDIV ;
315
                                 IF_NONE { PUSH string "MOD by 0" ; FAILWITH } {} ;
316
                                 CDR ;
317
                                 EMPTY_MAP nat string ;
318
                                 PUSH string "9" ;
319
                                 SOME ;
320
                                 PUSH nat 9 ;
321
                                 UPDATE ;
322
                                 PUSH string "8" ;
323
                                 SOME ;
324
                                 PUSH nat 8 ;
325
                                 UPDATE ;
326
                                 PUSH string "7" ;
327
                                 SOME ;
328
                                 PUSH nat 7 ;
329
                                 UPDATE ;
330
                                 PUSH string "6" ;
331
                                 SOME ;
332
                                 PUSH nat 6 ;
333
                                 UPDATE ;
334
                                 PUSH string "5" ;
335
                                 SOME ;
336
                                 PUSH nat 5 ;
337
                                 UPDATE ;
338
                                 PUSH string "4" ;
339
                                 SOME ;
340
                                 PUSH nat 4 ;
341
                                 UPDATE ;
342
                                 PUSH string "3" ;
343
                                 SOME ;
344
                                 PUSH nat 3 ;
345
                                 UPDATE ;
346
                                 PUSH string "2" ;
347
                                 SOME ;
348
                                 PUSH nat 2 ;
349
                                 UPDATE ;
350
                                 PUSH string "1" ;
351
                                 SOME ;
352
                                 PUSH nat 1 ;
353
                                 UPDATE ;
354
                                 PUSH string "0" ;
355
                                 SOME ;
356
                                 PUSH nat 0 ;
357
                                 UPDATE ;
358
                                 SWAP ;
359
                                 GET ;
360
                                 IF_NONE { PUSH string "INVALID_NAT" ; FAILWITH } {} ;
361
                                 CONCAT ;
362
                                 PUSH nat 10 ;
363
                                 DIG 2 ;
364
                                 EDIV ;
365
                                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
366
                                 CAR ;
367
                                 SWAP ;
368
                                 PAIR ;
369
                                 LEFT (pair string nat) }
370
                               { DROP ; RIGHT (pair string nat) } } ;
371
                 CAR ;
372
                 PUSH string "" ;
373
                 SWAP ;
374
                 DUP ;
375
                 DUG 2 ;
376
                 COMPARE ;
377
                 EQ ;
378
                 IF { DROP ; PUSH string "0" } {} } ;
379
               CONCAT ;
380
               PACK ;
381
               DUP ;
382
               PUSH nat 6 ;
383
               DIG 2 ;
384
               SIZE ;
385
               SUB ;
386
               ABS ;
387
               PUSH nat 6 ;
388
               SLICE ;
389
               IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
390
               DUP 5 ;
391
               GET 3 ;
392
               GET 19 ;
393
               CONCAT ;
394
               SOME ;
395
               PUSH string "" ;
396
               UPDATE ;
397
               DUP 4 ;
398
               GET 3 ;
399
               GET 20 ;
400
               PUSH nat 1 ;
401
               SENDER ;
402
               PAIR 4 ;
403
               DUP 4 ;
404
               GET 3 ;
405
               GET 5 ;
406
               CONTRACT %mint (pair (address %address) (nat %amount) (nat %token_id)
407
                                    (map %metadata string bytes)) ;
408
               IF_NONE { PUSH string "CANNOT_INVOKE_FA2_MINT" ; FAILWITH } {} ;
409
               PUSH mutez 0 ;
410
               DIG 2 ;
411
               TRANSFER_TOKENS ;
412
               CONS ;
413
               SELF %verifyBalance ;
414
               NIL (pair address nat) ;
415
               DUP 6 ;
416
               CAR ;
417
               CDR ;
418
               SENDER ;
419
               PAIR ;
420
               CONS ;
421
               DUP 6 ;
422
               CAR ;
423
               CAR ;
424
               SENDER ;
425
               PAIR ;
426
               CONS ;
427
               PAIR ;
428
               DUP 4 ;
429
               GET 3 ;
430
               GET 3 ;
431
               CONTRACT %balance_of (pair
432
                                      (list %requests (pair (address %owner)
433
                                                           (nat %token_id)))
434
                                      (contract %callback (list (pair
435
                                                                (pair %request
436
                                                                  (address %owner)
437
                                                                  (nat %token_id))
438
                                                                (nat %balance))))) ;
439
               IF_NONE { PUSH string "CANNOT_INVOKE_FA2_BALANCE_OF" ; FAILWITH } {} ;
440
               PUSH mutez 0 ;
441
               DIG 2 ;
442
               TRANSFER_TOKENS ;
443
               CONS ;
444
               DUP 3 ;
445
               GET 15 ;
446
               ITER { UNPAIR ;
447
                      PUSH nat 10000 ;
448
                      DIG 2 ;
449
                      AMOUNT ;
450
                      MUL ;
451
                      EDIV ;
452
                      IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
453
                      CAR ;
454
                      SWAP ;
455
                      CONTRACT unit ;
456
                      IF_NONE { PUSH string "INVALID_TEZ_DESTINATION" ; FAILWITH } {} ;
457
                      SWAP ;
458
                      UNIT ;
459
                      TRANSFER_TOKENS ;
460
                      CONS } ;
461
               DUP 3 ;
462
               DUP 4 ;
463
               GET 9 ;
464
               DIG 4 ;
465
               GET 3 ;
466
               GET 20 ;
467
               DUP 6 ;
468
               CDR ;
469
               SWAP ;
470
               SOME ;
471
               SWAP ;
472
               UPDATE ;
473
               UPDATE 9 ;
474
               DUG 2 ;
475
               DUP 3 ;
476
               DUP 4 ;
477
               GET 3 ;
478
               PUSH nat 1 ;
479
               DIG 5 ;
480
               GET 3 ;
481
               GET 20 ;
482
               ADD ;
483
               UPDATE 20 ;
484
               UPDATE 3 ;
485
               DUG 2 ;
486
               DUP 3 ;
487
               DUP 4 ;
488
               GET 3 ;
489
               PUSH nat 1 ;
490
               DIG 5 ;
491
               GET 3 ;
492
               GET 15 ;
493
               ADD ;
494
               UPDATE 15 ;
495
               UPDATE 3 ;
496
               DUG 2 ;
497
               DUP 2 ;
498
               DUP 4 ;
499
               GET 3 ;
500
               GET 11 ;
501
               DIG 3 ;
502
               CDR ;
503
               ADD ;
504
               UPDATE 2 ;
505
               SWAP ;
506
               DUP 3 ;
507
               DIG 3 ;
508
               GET 11 ;
509
               DIG 3 ;
510
               SENDER ;
511
               SWAP ;
512
               SOME ;
513
               SWAP ;
514
               UPDATE ;
515
               UPDATE 11 ;
516
               SWAP ;
517
               DUP 2 ;
518
               DUP 3 ;
519
               GET 13 ;
520
               DIG 3 ;
521
               GET 3 ;
522
               GET 13 ;
523
               NOW ;
524
               ADD ;
525
               DUP 5 ;
526
               CAR ;
527
               CAR ;
528
               SWAP ;
529
               SOME ;
530
               SWAP ;
531
               UPDATE ;
532
               UPDATE 13 ;
533
               SWAP ;
534
               DUP 2 ;
535
               DUP 3 ;
536
               GET 13 ;
537
               DIG 3 ;
538
               GET 3 ;
539
               GET 13 ;
540
               NOW ;
541
               ADD ;
542
               DIG 4 ;
543
               CAR ;
544
               CDR ;
545
               SWAP ;
546
               SOME ;
547
               SWAP ;
548
               UPDATE ;
549
               UPDATE 13 ;
550
               SWAP } }
551
         { DIG 2 ;
552
           DIG 3 ;
553
           DROP 2 ;
554
           ITER { PUSH nat 1 ;
555
                  SWAP ;
556
                  CDR ;
557
                  COMPARE ;
558
                  LT ;
559
                  IF { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } {} } ;
560
           SWAP } ;
561
       PAIR }