BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Ghostnet
  • /
  • KT1Edr2...a5cg
operations (7)Storage Code Interact Tokens Fork Views Events Statistics Details
Latest
​x
969
1006
 
1
{ parameter (or
2
              (or (or (unit %pause) (unit %unpause))
3
                  (or (unit %default)
4
                      (pair %start (mutez %roscaTotal)
5
                                   (pair (int %roscaDuration) (nat %maxParticipants)))))
6
              (or
7
                (or (or (unit %join) (unit %start_contributing))
8
                    (or (unit %contribute) (unit %end_contributing)))
9
                (or (or (unit %disturbute) (unit %continue))
10
                    (or (unit %reset) (address %changeAdmin))))) ;
11
  storage (pair (address %owner) (mutez %totalRosca) (int %durationRosca)
12
                (nat %maxUsers)
13
                (int %_state)
14
                (map %participant address
15
                                  (pair (nat %id) (bool %contributed)
16
                                        (bool %pot_received)))
17
                (mutez %rosca_total)
18
                (int %contributing_duration)
19
                (nat %max_participants)
20
                (bool %paused)
21
                (mutez %pot)
22
                (nat %participants_count)
23
                (nat %contributors_count)
24
                (mutez %contribute_amount)
25
                (option %end_time timestamp)
26
                (option %receiver address)
27
                (address %admin)) ;
28
  code { LAMBDA
29
           bool
30
           bool
31
           { PUSH unit Unit ;
32
             DUP 2 ;
33
             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
34
             PUSH bool True ;
35
             SWAP ;
36
             DROP 1 ;
37
             SWAP ;
38
             DROP 1 } ;
39
         LAMBDA
40
           (pair (map address (pair (nat %id) (bool %contributed) (bool %pot_received)))
41
                 address)
42
           bool
43
           { UNPAIR ;
44
             PUSH unit Unit ;
45
             DUP 2 ;
46
             DUP 4 ;
47
             GET ;
48
             IF_NONE
49
               { PUSH string "participant" ; PUSH string "ASSET_NOT_FOUND" ; PAIR ; FAILWITH }
50
               {} ;
51
             CDR ;
52
             CAR ;
53
             IF { PUSH string "ALREADY_CONTRIBUTED" ; FAILWITH } {} ;
54
             PUSH bool True ;
55
             SWAP ;
56
             DROP 1 ;
57
             DUG 2 ;
58
             DROP 2 } ;
59
         LAMBDA
60
           (map address (pair (nat %id) (bool %contributed) (bool %pot_received)))
61
           bool
62
           { PUSH unit Unit ;
63
             DUP 2 ;
64
             ITER { UNPAIR ;
65
                    DUP 4 ;
66
                    DUP 2 ;
67
                    GET ;
68
                    IF_NONE
69
                      { PUSH string "participant" ;
70
                        PUSH string "ASSET_NOT_FOUND" ;
71
                        PAIR ;
72
                        FAILWITH }
73
                      {} ;
74
                    CDR ;
75
                    CAR ;
76
                    NOT ;
77
                    IF { PUSH string "NOT ALL CONTRIBUTED" ; FAILWITH } {} ;
78
                    DROP 2 } ;
79
             PUSH bool True ;
80
             SWAP ;
81
             DROP 1 ;
82
             SWAP ;
83
             DROP 1 } ;
84
         LAMBDA
85
           (map address (pair (nat %id) (bool %contributed) (bool %pot_received)))
86
           bool
87
           { PUSH unit Unit ;
88
             DUP 2 ;
89
             ITER { UNPAIR ;
90
                    DUP 4 ;
91
                    DUP 2 ;
92
                    GET ;
93
                    IF_NONE
94
                      { PUSH string "participant" ;
95
                        PUSH string "ASSET_NOT_FOUND" ;
96
                        PAIR ;
97
                        FAILWITH }
98
                      {} ;
99
                    CDR ;
100
                    CDR ;
101
                    NOT ;
102
                    IF { PUSH string "NOT ALL RECEIVED" ; FAILWITH } {} ;
103
                    DROP 2 } ;
104
             PUSH bool True ;
105
             SWAP ;
106
             DROP 1 ;
107
             SWAP ;
108
             DROP 1 } ;
109
         LAMBDA
110
           (pair mutez nat)
111
           mutez
112
           { UNPAIR ;
113
             PUSH unit Unit ;
114
             PUSH nat 0 ;
115
             DUP 4 ;
116
             COMPARE ;
117
             GT ;
118
             NOT ;
119
             IF { PUSH string "ANY PARTICIPANTS DOESNT EXIST" ; FAILWITH } {} ;
120
             PUSH mutez 1 ;
121
             PUSH nat 1 ;
122
             DUP 5 ;
123
             INT ;
124
             PAIR ;
125
             PUSH nat 1 ;
126
             DUP 5 ;
127
             PUSH mutez 1 ;
128
             SWAP ;
129
             EDIV ;
130
             IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
131
             CAR ;
132
             INT ;
133
             PAIR ;
134
             DIP 1 { UNPAIR } ;
135
             UNPAIR ;
136
             DIG 3 ;
137
             DUP ;
138
             DIG 3 ;
139
             DUP ;
140
             DUG 4 ;
141
             MUL ;
142
             PUSH nat 0 ;
143
             COMPARE ;
144
             EQ ;
145
             IF { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
146
             PUSH int 0 ;
147
             DIG 4 ;
148
             DUP ;
149
             DUG 5 ;
150
             COMPARE ;
151
             GE ;
152
             IF { INT } { NEG } ;
153
             MUL ;
154
             DIP 1 { MUL ; ABS } ;
155
             DIP 2
156
                  { PUSH mutez 1 ;
157
                    SWAP ;
158
                    EDIV ;
159
                    IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
160
                    CAR } ;
161
             ABS ;
162
             DIG 2 ;
163
             MUL ;
164
             EDIV ;
165
             IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
166
             CAR ;
167
             PUSH mutez 1 ;
168
             MUL ;
169
             SWAP ;
170
             DROP 1 ;
171
             DUG 2 ;
172
             DROP 2 } ;
173
         NIL operation ;
174
         DIG 6 ;
175
         UNPAIR ;
176
         DIP 1 { UNPAIR 17 } ;
177
         IF_LEFT
178
           { IF_LEFT
179
               { IF_LEFT
180
                   { DROP 1 ;
181
                     DUP 23 ;
182
                     DUP 11 ;
183
                     EXEC ;
184
                     NOT ;
185
                     IF { PUSH string "ALREADY PAUSED" ; FAILWITH } {} ;
186
                     PUSH bool True ;
187
                     DIP 1 { DIG 9 ; DROP 1 } ;
188
                     DUG 9 ;
189
                     NIL operation ;
190
                     NIL operation ;
191
                     DUP 20 ;
192
                     ITER { CONS } ;
193
                     NOW ;
194
                     EMIT %Paused timestamp ;
195
                     CONS ;
196
                     ITER { CONS } ;
197
                     DIP 1 { DIG 17 ; DROP 1 } ;
198
                     DUG 17 ;
199
                     PAIR 17 ;
200
                     SWAP ;
201
                     PAIR }
202
                   { DROP 1 ;
203
                     DUP 10 ;
204
                     NOT ;
205
                     IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
206
                     PUSH bool False ;
207
                     DIP 1 { DIG 9 ; DROP 1 } ;
208
                     DUG 9 ;
209
                     NIL operation ;
210
                     NIL operation ;
211
                     DUP 20 ;
212
                     ITER { CONS } ;
213
                     NOW ;
214
                     EMIT %Resumed timestamp ;
215
                     CONS ;
216
                     ITER { CONS } ;
217
                     DIP 1 { DIG 17 ; DROP 1 } ;
218
                     DUG 17 ;
219
                     PAIR 17 ;
220
                     SWAP ;
221
                     PAIR } }
222
               { IF_LEFT
223
                   { DROP 1 ; PAIR 17 ; SWAP ; PAIR }
224
                   { UNPAIR ;
225
                     SWAP ;
226
                     UNPAIR ;
227
                     SWAP ;
228
                     DUP 20 ;
229
                     SENDER ;
230
                     COMPARE ;
231
                     EQ ;
232
                     NOT ;
233
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
234
                     DUP 8 ;
235
                     PUSH int 0 ;
236
                     COMPARE ;
237
                     NEQ ;
238
                     IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
239
                     DUP 26 ;
240
                     DUP 14 ;
241
                     EXEC ;
242
                     NOT ;
243
                     IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
244
                     DUP 8 ;
245
                     DUP ;
246
                     PUSH int 0 ;
247
                     COMPARE ;
248
                     EQ ;
249
                     IF
250
                       { DUP 4 ;
251
                         DIP 1 { DIG 10 ; DROP 1 } ;
252
                         DUG 10 ;
253
                         DUP 3 ;
254
                         DIP 1 { DIG 11 ; DROP 1 } ;
255
                         DUG 11 ;
256
                         DUP 2 ;
257
                         DIP 1 { DIG 12 ; DROP 1 } ;
258
                         DUG 12 ;
259
                         PUSH int 1 ;
260
                         DIP 1 { DIG 8 ; DROP 1 } ;
261
                         DUG 8 }
262
                       { PUSH string "INVALID_STATE" ; FAILWITH } ;
263
                     DROP 4 ;
264
                     PAIR 17 ;
265
                     SWAP ;
266
                     PAIR } } }
267
           { IF_LEFT
268
               { IF_LEFT
269
                   { IF_LEFT
270
                       { DROP 1 ;
271
                         DUP 5 ;
272
                         PUSH int 1 ;
273
                         COMPARE ;
274
                         NEQ ;
275
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
276
                         DUP 23 ;
277
                         DUP 11 ;
278
                         EXEC ;
279
                         NOT ;
280
                         IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
281
                         DUP 9 ;
282
                         DUP 13 ;
283
                         COMPARE ;
284
                         LE ;
285
                         NOT ;
286
                         IF
287
                           { PUSH string "Maximum number of participants reached." ;
288
                             FAILWITH }
289
                           {} ;
290
                         DUP 6 ;
291
                         SENDER ;
292
                         MEM ;
293
                         IF
294
                           { PUSH string "c1" ;
295
                             PUSH string "INVALID_CONDITION" ;
296
                             PAIR ;
297
                             FAILWITH }
298
                           {} ;
299
                         PUSH nat 1 ;
300
                         DUP 13 ;
301
                         ADD ;
302
                         DIP 1 { DIG 11 ; DROP 1 } ;
303
                         DUG 11 ;
304
                         DUP 6 ;
305
                         SENDER ;
306
                         MEM ;
307
                         IF
308
                           { PUSH string "participant" ;
309
                             PUSH string "KEY_EXISTS" ;
310
                             PAIR ;
311
                             FAILWITH }
312
                           { DUP 6 ;
313
                             PUSH bool False ;
314
                             PUSH bool False ;
315
                             PAIR ;
316
                             DUP 14 ;
317
                             PAIR ;
318
                             SOME ;
319
                             SENDER ;
320
                             UPDATE ;
321
                             DIP 1 { DIG 5 ; DROP 1 } ;
322
                             DUG 5 } ;
323
                         NIL operation ;
324
                         NIL operation ;
325
                         DUP 20 ;
326
                         ITER { CONS } ;
327
                         NOW ;
328
                         SENDER ;
329
                         PAIR ;
330
                         EMIT %Joined (pair (address %user) (timestamp %timestamp)) ;
331
                         CONS ;
332
                         ITER { CONS } ;
333
                         DIP 1 { DIG 17 ; DROP 1 } ;
334
                         DUG 17 ;
335
                         PAIR 17 ;
336
                         SWAP ;
337
                         PAIR }
338
                       { DROP 1 ;
339
                         DUP 17 ;
340
                         SENDER ;
341
                         COMPARE ;
342
                         EQ ;
343
                         NOT ;
344
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
345
                         DUP 5 ;
346
                         PUSH int 1 ;
347
                         COMPARE ;
348
                         NEQ ;
349
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
350
                         DUP 23 ;
351
                         DUP 11 ;
352
                         EXEC ;
353
                         NOT ;
354
                         IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
355
                         DUP 5 ;
356
                         DUP ;
357
                         PUSH int 1 ;
358
                         COMPARE ;
359
                         EQ ;
360
                         IF
361
                           { DUP 9 ;
362
                             NOW ;
363
                             ADD ;
364
                             SOME ;
365
                             DIP 1 { DIG 15 ; DROP 1 } ;
366
                             DUG 15 ;
367
                             NIL operation ;
368
                             NIL operation ;
369
                             DUP 21 ;
370
                             ITER { CONS } ;
371
                             NOW ;
372
                             EMIT %ContributionStarted timestamp ;
373
                             CONS ;
374
                             ITER { CONS } ;
375
                             DIP 1 { DIG 18 ; DROP 1 } ;
376
                             DUG 18 ;
377
                             PUSH int 2 ;
378
                             DIP 1 { DIG 5 ; DROP 1 } ;
379
                             DUG 5 }
380
                           { PUSH string "INVALID_STATE" ; FAILWITH } ;
381
                         DROP 1 ;
382
                         PAIR 17 ;
383
                         SWAP ;
384
                         PAIR } }
385
                   { IF_LEFT
386
                       { DROP 1 ;
387
                         DUP 5 ;
388
                         PUSH int 2 ;
389
                         COMPARE ;
390
                         NEQ ;
391
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
392
                         DUP 23 ;
393
                         DUP 11 ;
394
                         EXEC ;
395
                         NOT ;
396
                         IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
397
                         DUP 6 ;
398
                         SENDER ;
399
                         MEM ;
400
                         NOT ;
401
                         IF { PUSH string "NOT PARTICIPANT" ; FAILWITH } {} ;
402
                         DUP 22 ;
403
                         SENDER ;
404
                         DUP 8 ;
405
                         PAIR ;
406
                         EXEC ;
407
                         NOT ;
408
                         IF { PUSH string "Already Contributed" ; FAILWITH } {} ;
409
                         DUP 19 ;
410
                         DUP 13 ;
411
                         DUP 9 ;
412
                         PAIR ;
413
                         EXEC ;
414
                         AMOUNT ;
415
                         COMPARE ;
416
                         EQ ;
417
                         NOT ;
418
                         IF
419
                           { PUSH string "PLEASE MAKE SURE TO SEND THE EXACT AMOUNT" ;
420
                             FAILWITH }
421
                           {} ;
422
                         DUP 15 ;
423
                         IF_NONE
424
                           { PUSH bool False }
425
                           { NOW ; DUP 2 ; COMPARE ; GT ; SWAP ; DROP 1 } ;
426
                         NOT ;
427
                         IF { PUSH string "Contibution finished" ; FAILWITH } {} ;
428
                         PUSH nat 1 ;
429
                         DUP 14 ;
430
                         ADD ;
431
                         DIP 1 { DIG 12 ; DROP 1 } ;
432
                         DUG 12 ;
433
                         DUP 6 ;
434
                         DUP 7 ;
435
                         SENDER ;
436
                         GET ;
437
                         IF_NONE
438
                           { PUSH string "participant" ;
439
                             PUSH string "ASSET_NOT_FOUND" ;
440
                             PAIR ;
441
                             FAILWITH }
442
                           {} ;
443
                         UNPAIR ;
444
                         SWAP ;
445
                         CDR ;
446
                         PUSH bool True ;
447
                         PAIR ;
448
                         SWAP ;
449
                         PAIR ;
450
                         SOME ;
451
                         SENDER ;
452
                         UPDATE ;
453
                         DIP 1 { DIG 5 ; DROP 1 } ;
454
                         DUG 5 ;
455
                         AMOUNT ;
456
                         DUP 12 ;
457
                         ADD ;
458
                         DIP 1 { DIG 10 ; DROP 1 } ;
459
                         DUG 10 ;
460
                         NIL operation ;
461
                         NIL operation ;
462
                         DUP 20 ;
463
                         ITER { CONS } ;
464
                         NOW ;
465
                         SENDER ;
466
                         PAIR ;
467
                         EMIT %Contributed (pair (address %user) (timestamp %timestamp)) ;
468
                         CONS ;
469
                         ITER { CONS } ;
470
                         DIP 1 { DIG 17 ; DROP 1 } ;
471
                         DUG 17 ;
472
                         PAIR 17 ;
473
                         SWAP ;
474
                         PAIR }
475
                       { DROP 1 ;
476
                         DUP 17 ;
477
                         SENDER ;
478
                         COMPARE ;
479
                         EQ ;
480
                         NOT ;
481
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
482
                         DUP 5 ;
483
                         PUSH int 2 ;
484
                         COMPARE ;
485
                         NEQ ;
486
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
487
                         DUP 23 ;
488
                         DUP 11 ;
489
                         EXEC ;
490
                         NOT ;
491
                         IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
492
                         DUP 15 ;
493
                         IF_NONE
494
                           { PUSH bool False }
495
                           { DUP ; NOW ; COMPARE ; GT ; SWAP ; DROP 1 } ;
496
                         NOT ;
497
                         IF { PUSH string "Contibution finished" ; FAILWITH } {} ;
498
                         DUP 5 ;
499
                         DUP ;
500
                         PUSH int 2 ;
501
                         COMPARE ;
502
                         EQ ;
503
                         IF
504
                           { DUP 7 ;
505
                             ITER { UNPAIR ;
506
                                    DUP 9 ;
507
                                    DUP 2 ;
508
                                    GET ;
509
                                    IF_NONE
510
                                      { PUSH string "participant" ;
511
                                        PUSH string "ASSET_NOT_FOUND" ;
512
                                        PAIR ;
513
                                        FAILWITH }
514
                                      {} ;
515
                                    CDR ;
516
                                    CAR ;
517
                                    NOT ;
518
                                    IF
519
                                      { DUP 9 ;
520
                                        NONE (pair nat bool bool) ;
521
                                        DUP 3 ;
522
                                        UPDATE ;
523
                                        DIP 1 { DIG 8 ; DROP 1 } ;
524
                                        DUG 8 ;
525
                                        PUSH int 0 ;
526
                                        PUSH int 1 ;
527
                                        DUP 17 ;
528
                                        SUB ;
529
                                        COMPARE ;
530
                                        GE ;
531
                                        IF
532
                                          { PUSH int 1 ; DUP 16 ; SUB ; ABS }
533
                                          { PUSH string "NAT_NEG_ASSIGN" ; FAILWITH } ;
534
                                        DIP 1 { DIG 14 ; DROP 1 } ;
535
                                        DUG 14 }
536
                                      {} ;
537
                                    DROP 2 } ;
538
                             DUP 7 ;
539
                             ITER { UNPAIR ;
540
                                    DUP 9 ;
541
                                    DUP 2 ;
542
                                    GET ;
543
                                    IF_NONE
544
                                      { PUSH string "participant" ;
545
                                        PUSH string "ASSET_NOT_FOUND" ;
546
                                        PAIR ;
547
                                        FAILWITH }
548
                                      {} ;
549
                                    CDR ;
550
                                    CDR ;
551
                                    NOT ;
552
                                    IF
553
                                      { DUP ; SOME ; DIP 1 { DIG 18 ; DROP 1 } ; DUG 18 }
554
                                      {} ;
555
                                    DROP 2 } ;
556
                             PUSH int 3 ;
557
                             DIP 1 { DIG 5 ; DROP 1 } ;
558
                             DUG 5 }
559
                           { PUSH string "INVALID_STATE" ; FAILWITH } ;
560
                         DROP 1 ;
561
                         PAIR 17 ;
562
                         SWAP ;
563
                         PAIR } } }
564
               { IF_LEFT
565
                   { IF_LEFT
566
                       { DROP 1 ;
567
                         DUP 17 ;
568
                         SENDER ;
569
                         COMPARE ;
570
                         EQ ;
571
                         NOT ;
572
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
573
                         DUP 5 ;
574
                         PUSH int 3 ;
575
                         COMPARE ;
576
                         NEQ ;
577
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
578
                         DUP 23 ;
579
                         DUP 11 ;
580
                         EXEC ;
581
                         NOT ;
582
                         IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
583
                         PUSH mutez 0 ;
584
                         DUP 12 ;
585
                         COMPARE ;
586
                         GT ;
587
                         NOT ;
588
                         IF { PUSH string "Pot is equal to zero" ; FAILWITH } {} ;
589
                         DUP 5 ;
590
                         DUP ;
591
                         PUSH int 3 ;
592
                         COMPARE ;
593
                         EQ ;
594
                         IF
595
                           { DUP 17 ;
596
                             IF_NONE { PUSH string "RECEIVER IS NONE" ; FAILWITH } {} ;
597
                             PUSH mutez 0 ;
598
                             DIP 1 { DIG 12 ; DROP 1 } ;
599
                             DUG 12 ;
600
                             DUP 8 ;
601
                             DUP 9 ;
602
                             DUP 3 ;
603
                             GET ;
604
                             IF_NONE
605
                               { PUSH string "participant" ;
606
                                 PUSH string "ASSET_NOT_FOUND" ;
607
                                 PAIR ;
608
                                 FAILWITH }
609
                               {} ;
610
                             UNPAIR ;
611
                             SWAP ;
612
                             UNPAIR ;
613
                             SWAP ;
614
                             DROP 1 ;
615
                             PUSH bool True ;
616
                             SWAP ;
617
                             PAIR ;
618
                             SWAP ;
619
                             PAIR ;
620
                             SOME ;
621
                             DUP 3 ;
622
                             UPDATE ;
623
                             DIP 1 { DIG 7 ; DROP 1 } ;
624
                             DUG 7 ;
625
                             NIL operation ;
626
                             NIL operation ;
627
                             DUP 22 ;
628
                             ITER { CONS } ;
629
                             DUP 3 ;
630
                             CONTRACT unit ;
631
                             IF_NONE { PUSH string "ENTRY_NOT_FOUND" ; FAILWITH } {} ;
632
                             BALANCE ;
633
                             UNIT ;
634
                             TRANSFER_TOKENS ;
635
                             CONS ;
636
                             ITER { CONS } ;
637
                             DIP 1 { DIG 19 ; DROP 1 } ;
638
                             DUG 19 ;
639
                             NONE address ;
640
                             DIP 1 { DIG 17 ; DROP 1 } ;
641
                             DUG 17 ;
642
                             DROP 1 ;
643
                             PUSH int 4 ;
644
                             DIP 1 { DIG 5 ; DROP 1 } ;
645
                             DUG 5 }
646
                           { PUSH string "INVALID_STATE" ; FAILWITH } ;
647
                         DROP 1 ;
648
                         PAIR 17 ;
649
                         SWAP ;
650
                         PAIR }
651
                       { DROP 1 ;
652
                         DUP 17 ;
653
                         SENDER ;
654
                         COMPARE ;
655
                         EQ ;
656
                         NOT ;
657
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
658
                         DUP 5 ;
659
                         PUSH int 4 ;
660
                         COMPARE ;
661
                         NEQ ;
662
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
663
                         DUP 23 ;
664
                         DUP 11 ;
665
                         EXEC ;
666
                         NOT ;
667
                         IF { PUSH string "Rosca is Paused" ; FAILWITH } {} ;
668
                         DUP 20 ;
669
                         DUP 7 ;
670
                         EXEC ;
671
                         IF
672
                           { PUSH string "c3" ;
673
                             PUSH string "INVALID_CONDITION" ;
674
                             PAIR ;
675
                             FAILWITH }
676
                           {} ;
677
                         DUP 5 ;
678
                         DUP ;
679
                         PUSH int 4 ;
680
                         COMPARE ;
681
                         EQ ;
682
                         IF
683
                           { DUP 7 ;
684
                             ITER { UNPAIR ;
685
                                    DUP 9 ;
686
                                    DUP 10 ;
687
                                    DUP 3 ;
688
                                    GET ;
689
                                    IF_NONE
690
                                      { PUSH string "participant" ;
691
                                        PUSH string "ASSET_NOT_FOUND" ;
692
                                        PAIR ;
693
                                        FAILWITH }
694
                                      {} ;
695
                                    UNPAIR ;
696
                                    SWAP ;
697
                                    CDR ;
698
                                    PUSH bool False ;
699
                                    PAIR ;
700
                                    SWAP ;
701
                                    PAIR ;
702
                                    SOME ;
703
                                    DUP 3 ;
704
                                    UPDATE ;
705
                                    DIP 1 { DIG 8 ; DROP 1 } ;
706
                                    DUG 8 ;
707
                                    DROP 2 } ;
708
                             PUSH nat 0 ;
709
                             DIP 1 { DIG 13 ; DROP 1 } ;
710
                             DUG 13 ;
711
                             PUSH int 2 ;
712
                             DIP 1 { DIG 5 ; DROP 1 } ;
713
                             DUG 5 }
714
                           { PUSH string "INVALID_STATE" ; FAILWITH } ;
715
                         DROP 1 ;
716
                         PAIR 17 ;
717
                         SWAP ;
718
                         PAIR } }
719
                   { IF_LEFT
720
                       { DROP 1 ;
721
                         DUP 17 ;
722
                         SENDER ;
723
                         COMPARE ;
724
                         EQ ;
725
                         NOT ;
726
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
727
                         DUP 5 ;
728
                         PUSH int 4 ;
729
                         COMPARE ;
730
                         NEQ ;
731
                         IF { PUSH string "INVALID_STATE" ; FAILWITH } {} ;
732
                         DUP 20 ;
733
                         DUP 7 ;
734
                         EXEC ;
735
                         NOT ;
736
                         IF { PUSH string "Not All Recevied" ; FAILWITH } {} ;
737
                         DUP 5 ;
738
                         DUP ;
739
                         PUSH int 4 ;
740
                         COMPARE ;
741
                         EQ ;
742
                         IF
743
                           { DUP 7 ;
744
                             ITER { UNPAIR ;
745
                                    DUP 9 ;
746
                                    NONE (pair nat bool bool) ;
747
                                    DUP 3 ;
748
                                    UPDATE ;
749
                                    DIP 1 { DIG 8 ; DROP 1 } ;
750
                                    DUG 8 ;
751
                                    DROP 2 } ;
752
                             PUSH int 0 ;
753
                             DIP 1 { DIG 5 ; DROP 1 } ;
754
                             DUG 5 }
755
                           { PUSH string "INVALID_STATE" ; FAILWITH } ;
756
                         DROP 1 ;
757
                         PAIR 17 ;
758
                         SWAP ;
759
                         PAIR }
760
                       { PUSH address "tz1dtZf7WBC6VsCFof4mtxJfhpfmNeNb7Z1R" ;
761
                         DUP 2 ;
762
                         COMPARE ;
763
                         EQ ;
764
                         IF
765
                           { PUSH bool True }
766
                           { PUSH address "tz1f4mS8qV5D8fVZ8hQAJTUtmEjydsJiJNpu" ;
767
                             DUP 2 ;
768
                             COMPARE ;
769
                             EQ ;
770
                             IF { PUSH bool True } { PUSH bool False } } ;
771
                         NOT ;
772
                         IF
773
                           { PUSH string "r" ;
774
                             PUSH string "INVALID_CONDITION" ;
775
                             PAIR ;
776
                             FAILWITH }
777
                           {} ;
778
                         DUP ;
779
                         DIP 1 { DIG 17 ; DROP 1 } ;
780
                         DUG 17 ;
781
                         DROP 1 ;
782
                         PAIR 17 ;
783
                         SWAP ;
784
                         PAIR } } } } ;
785
         DIP 1 { DROP 5 } } ;
786
  view "show_balance" unit mutez { DROP 1 ; UNIT ; BALANCE ; SWAP ; DROP 1 } ;
787
  view "show_conributing_cost" unit mutez
788
        { CDR ;
789
          CDR ;
790
          CDR ;
791
          CDR ;
792
          CDR ;
793
          CDR ;
794
          CDR ;
795
          UNPAIR ;
796
          SWAP ;
797
          CDR ;
798
          CDR ;
799
          CDR ;
800
          CDR ;
801
          UNPAIR ;
802
          SWAP ;
803
          DROP 1 ;
804
          UNIT ;
805
          PUSH nat 0 ;
806
          DUP 3 ;
807
          COMPARE ;
808
          GT ;
809
          NOT ;
810
          IF { PUSH string "ANY PARTICIPANTS DOESNT EXIST" ; FAILWITH } {} ;
811
          PUSH mutez 1 ;
812
          PUSH nat 1 ;
813
          DUP 4 ;
814
          INT ;
815
          PAIR ;
816
          PUSH nat 1 ;
817
          DUP 6 ;
818
          PUSH mutez 1 ;
819
          SWAP ;
820
          EDIV ;
821
          IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
822
          CAR ;
823
          INT ;
824
          PAIR ;
825
          DIP 1 { UNPAIR } ;
826
          UNPAIR ;
827
          DIG 3 ;
828
          DUP ;
829
          DIG 3 ;
830
          DUP ;
831
          DUG 4 ;
832
          MUL ;
833
          PUSH nat 0 ;
834
          COMPARE ;
835
          EQ ;
836
          IF { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
837
          PUSH int 0 ;
838
          DIG 4 ;
839
          DUP ;
840
          DUG 5 ;
841
          COMPARE ;
842
          GE ;
843
          IF { INT } { NEG } ;
844
          MUL ;
845
          DIP 1 { MUL ; ABS } ;
846
          DIP 2
847
               { PUSH mutez 1 ;
848
                 SWAP ;
849
                 EDIV ;
850
                 IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
851
                 CAR } ;
852
          ABS ;
853
          DIG 2 ;
854
          MUL ;
855
          EDIV ;
856
          IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ;
857
          CAR ;
858
          PUSH mutez 1 ;
859
          MUL ;
860
          SWAP ;
861
          DROP 1 ;
862
          DIP 1 { DROP 2 } } ;
863
  view "show_currentState" unit string
864
        { CDR ;
865
          CDR ;
866
          CDR ;
867
          CDR ;
868
          CDR ;
869
          UNPAIR ;
870
          SWAP ;
871
          DROP 1 ;
872
          UNIT ;
873
          PUSH string "" ;
874
          DUP 3 ;
875
          DUP ;
876
          PUSH int 0 ;
877
          COMPARE ;
878
          EQ ;
879
          IF
880
            { PUSH string "Starting" ; DIP 1 { SWAP ; DROP 1 } ; SWAP }
881
            { DUP ;
882
              PUSH int 1 ;
883
              COMPARE ;
884
              EQ ;
885
              IF
886
                { PUSH string "Collecting" ; DIP 1 { SWAP ; DROP 1 } ; SWAP }
887
                { DUP ;
888
                  PUSH int 2 ;
889
                  COMPARE ;
890
                  EQ ;
891
                  IF
892
                    { PUSH string "Contributing" ; DIP 1 { SWAP ; DROP 1 } ; SWAP }
893
                    { DUP ;
894
                      PUSH int 3 ;
895
                      COMPARE ;
896
                      EQ ;
897
                      IF
898
                        { PUSH string "Distirbuting" ; DIP 1 { SWAP ; DROP 1 } ; SWAP }
899
                        { PUSH string "Distirbuted" ; DIP 1 { SWAP ; DROP 1 } ; SWAP } } } } ;
900
          DROP 1 ;
901
          DUP ;
902
          DIP 1 { SWAP ; DROP 1 } ;
903
          SWAP ;
904
          DROP 1 ;
905
          DIP 1 { DROP 1 } } ;
906
  view "show_receiver" unit address
907
        { CDR ;
908
          CDR ;
909
          CDR ;
910
          CDR ;
911
          CDR ;
912
          CDR ;
913
          CDR ;
914
          CDR ;
915
          CDR ;
916
          CDR ;
917
          CDR ;
918
          CDR ;
919
          CDR ;
920
          CDR ;
921
          CDR ;
922
          CDR ;
923
          UNPAIR ;
924
          SWAP ;
925
          DROP 1 ;
926
          UNIT ;
927
          DUP 2 ;
928
          IF_NONE { PUSH string "RECEIVER IS NONE" ; FAILWITH } {} ;
929
          DUP ;
930
          DIP 1 { SWAP ; DROP 1 } ;
931
          SWAP ;
932
          DROP 1 ;
933
          DIP 1 { DROP 1 } } ;
934
  view "show_isAllContributed" unit bool
935
        { CDR ;
936
          CDR ;
937
          CDR ;
938
          CDR ;
939
          CDR ;
940
          CDR ;
941
          UNPAIR ;
942
          SWAP ;
943
          DROP 1 ;
944
          UNIT ;
945
          DUP 2 ;
946
          ITER { UNPAIR ;
947
                 DUP 4 ;
948
                 DUP 2 ;
949
                 GET ;
950
                 IF_NONE
951
                   { PUSH string "participant" ;
952
                     PUSH string "ASSET_NOT_FOUND" ;
953
                     PAIR ;
954
                     FAILWITH }
955
                   {} ;
956
                 CDR ;
957
                 CAR ;
958
                 NOT ;
959
                 IF { PUSH string "NOT ALL CONTRIBUTED" ; FAILWITH } {} ;
960
                 DROP 2 } ;
961
          PUSH bool True ;
962
          SWAP ;
963
          DROP 1 ;
964
          DIP 1 { DROP 1 } } ;
965
  view "show_isAllReceived" unit bool
966
        { CDR ;
967
          CDR ;
968
          CDR ;
969
          CDR ;
970
          CDR ;
971
          CDR ;
972
          UNPAIR ;
973
          SWAP ;
974
          DROP 1 ;
975
          UNIT ;
976
          DUP 2 ;
977
          ITER { UNPAIR ;
978
                 DUP 4 ;
979
                 DUP 2 ;
980
                 GET ;
981
                 IF_NONE
982
                   { PUSH string "participant" ;
983
                     PUSH string "ASSET_NOT_FOUND" ;
984
                     PAIR ;
985
                     FAILWITH }
986
                   {} ;
987
                 CDR ;
988
                 CDR ;
989
                 NOT ;
990
                 IF { PUSH string "NOT ALL RECEIVED" ; FAILWITH } {} ;
991
                 DROP 2 } ;
992
          PUSH bool True ;
993
          SWAP ;
994
          DROP 1 ;
995
          DIP 1 { DROP 1 } } ;
996
  view "show_participant" address
997
        (option (pair (nat %id) (bool %contributed) (bool %pot_received)))
998
        { UNPAIR ;
999
          DIP 1 { CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ;
1000
          UNIT ;
1001
          DUP 3 ;
1002
          DUP 3 ;
1003
          GET ;
1004
          SWAP ;
1005
          DROP 1 ;
1006
          DIP 1 { DROP 2 } } }