BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Atomex
operations (10.4K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
130
 
1
parameter (or
2
            (or %fund
3
              (pair :initiate %initiate (address %participant)
4
                                        (pair %settings
5
                                          (pair (bytes %hashed_secret)
6
                                                (timestamp %refund_time))
7
                                          (mutez %payoff)))
8
              (bytes :hashed_secret %add))
9
            (or %withdraw (bytes :secret %redeem) (bytes :hashed_secret %refund)));
10
storage (pair
11
          (big_map bytes
12
                   (pair (pair %recipients (address %initiator) (address %participant))
13
                         (pair %settings (pair (mutez %amount) (timestamp %refund_time))
14
                                         (mutez %payoff))))
15
          unit);
16
code { NIL @operations operation ;
17
       SWAP ;
18
       { { DUP ; CAR @% ; DIP { CDR } } ; DIP { { DUP ; CAR @% ; DIP { CDR @% } } } } ;
19
       DIP { DUP } ;
20
       IF_LEFT
21
         { IF_LEFT
22
             { { { DUP ; CAR @% ; DIP { CDR @% } } } ;
23
               DUP ;
24
               CONTRACT @participant unit ;
25
               { IF_NONE { { UNIT ; FAILWITH } } {} } ;
26
               DROP ;
27
               SWAP ;
28
               { { DUP ; CAR ; DIP { CDR @% } } ; { DUP ; CAR @% ; DIP { CDR @% } } } ;
29
               DUP ;
30
               SIZE ;
31
               PUSH nat 32 ;
32
               { { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ;
33
               DIP { DIP { DUP } ;
34
                     SWAP ;
35
                     AMOUNT @amount ;
36
                     SUB ;
37
                     SENDER ;
38
                     DUP ;
39
                     CONTRACT @initiator unit ;
40
                     { IF_NONE { { UNIT ; FAILWITH } } {} } ;
41
                     DROP ;
42
                     DIP { { PAIR ; PAIR } ; SWAP } ;
43
                     { PAIR ; PAIR } ;
44
                     SOME @xcat ;
45
                     SWAP } ;
46
               DUP ;
47
               DIP { MEM ; NOT ; { IF {} { { UNIT ; FAILWITH } } } } }
48
             { DUP ;
49
               DIP { GET ;
50
                     { IF_NONE { { UNIT ; FAILWITH } } {} } ;
51
                     { { DUP ; CAR @% ; DIP { CDR @% } } } ;
52
                     DIP { { { DUP ; CAR ; DIP { CDR @% } } ;
53
                             { DUP ; CAR @% ; DIP { CDR @% } } } ;
54
                           SWAP ;
55
                           DUP ;
56
                           NOW ;
57
                           { { COMPARE ; LT } ; IF {} { { UNIT ; FAILWITH } } } ;
58
                           SWAP ;
59
                           AMOUNT @amount ;
60
                           ADD } ;
61
                     { DIP { PAIR } ; DIP { PAIR } ; PAIR } ;
62
                     SOME @xcat } } ;
63
           UPDATE ;
64
           PAIR @new_storage ;
65
           SWAP ;
66
           PAIR }
67
         { IF_LEFT
68
             { DUP ;
69
               SIZE ;
70
               PUSH nat 32 ;
71
               { { COMPARE ; EQ } ; IF {} { { UNIT ; FAILWITH } } } ;
72
               SHA256 ;
73
               SHA256 @hash ;
74
               DUP ;
75
               DIP { SWAP } ;
76
               { DIP { DIP { GET ;
77
                             { IF_NONE { { UNIT ; FAILWITH } } {} } ;
78
                             DUP ;
79
                             { { DUP ; CAR @% ; DIP { CDR @% } } } ;
80
                             CDR @% ;
81
                             CONTRACT @participant unit ;
82
                             { IF_NONE { { UNIT ; FAILWITH } } {} } ;
83
                             SWAP ;
84
                             { CAR ; CAR @% } ;
85
                             { DIP { DIP { SENDER ;
86
                                           CONTRACT @sender unit ;
87
                                           { IF_NONE { { UNIT ; FAILWITH } } {} } ;
88
                                           SWAP ;
89
                                           CDR @% ;
90
                                           { { DUP ; CAR ; DIP { CDR @% } } ;
91
                                             { DUP ; CAR @% ; DIP { CDR @% } } } ;
92
                                           DROP ;
93
                                           NOW ;
94
                                           { { COMPARE ; LT } ;
95
                                             IF {} { { UNIT ; FAILWITH } } } ;
96
                                           DUP ;
97
                                           PUSH mutez 0 ;
98
                                           { COMPARE ;
99
                                             LT ;
100
                                             IF
101
                                               { UNIT ; TRANSFER_TOKENS ; DIP { SWAP } ; CONS }
102
                                               { DROP ; DROP ; SWAP } } } } } ;
103
                             UNIT ;
104
                             TRANSFER_TOKENS } } } }
105
             { DUP ;
106
               DIP { GET ;
107
                     { IF_NONE { { UNIT ; FAILWITH } } {} } ;
108
                     DUP ;
109
                     { CAR ; CAR @% } ;
110
                     CONTRACT @initiator unit ;
111
                     { IF_NONE { { UNIT ; FAILWITH } } {} } ;
112
                     SWAP ;
113
                     CDR ;
114
                     { { DUP ; CAR ; DIP { CDR @% } } ;
115
                       { DUP ; CAR @% ; DIP { CDR @% } } } ;
116
                     SWAP ;
117
                     NOW ;
118
                     { { COMPARE ; GE } ; IF {} { { UNIT ; FAILWITH } } } ;
119
                     ADD ;
120
                     UNIT ;
121
                     TRANSFER_TOKENS ;
122
                     SWAP ;
123
                     { DIP { DIP { SWAP } } } } } ;
124
           NONE @none (pair (pair address address) (pair (pair mutez timestamp) mutez)) ;
125
           SWAP ;
126
           UPDATE @cleared_map ;
127
           SWAP ;
128
           DIP { SWAP ; DIP { PAIR } } ;
129
           CONS ;
130
           PAIR } }