BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Atomex USDT
operations (185)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
332
 
1
parameter (or
2
            (or
3
              (pair %initiate
4
                (pair (pair (bytes %hashedSecret) (address %participant))
5
                      (pair (nat %payoffAmount) (timestamp %refundTime)))
6
                (pair (pair (address %tokenAddress) (nat %tokenId)) (nat %totalAmount)))
7
              (bytes %redeem))
8
            (bytes %refund));
9
storage (big_map bytes
10
                 (pair
11
                   (pair (pair (address %initiator) (address %participant))
12
                         (pair (nat %payoffAmount) (timestamp %refundTime)))
13
                   (pair (pair (address %tokenAddress) (nat %tokenId))
14
                         (nat %totalAmount))));
15
code { UNPAIR ;
16
       AMOUNT ;
17
       PUSH mutez 0 ;
18
       COMPARE ;
19
       NEQ ;
20
       IF { PUSH string "this contract does not accept tez" ; FAILWITH } {} ;
21
       IF_LEFT
22
         { IF_LEFT
23
             { DUP ;
24
               CDR ;
25
               CDR ;
26
               SWAP ;
27
               DUP ;
28
               DUG 2 ;
29
               CAR ;
30
               CDR ;
31
               CAR ;
32
               COMPARE ;
33
               GT ;
34
               IF { PUSH string "payoff amount exceeds the total" ; FAILWITH } {} ;
35
               NOW ;
36
               SWAP ;
37
               DUP ;
38
               DUG 2 ;
39
               CAR ;
40
               CDR ;
41
               CDR ;
42
               COMPARE ;
43
               LE ;
44
               IF { PUSH string "refund time has already come" ; FAILWITH } {} ;
45
               DUP ;
46
               CAR ;
47
               CAR ;
48
               CAR ;
49
               SIZE ;
50
               PUSH nat 32 ;
51
               COMPARE ;
52
               NEQ ;
53
               IF { PUSH string "hash size doesn't equal 32 bytes" ; FAILWITH } {} ;
54
               DUP ;
55
               CAR ;
56
               CAR ;
57
               CDR ;
58
               SOURCE ;
59
               COMPARE ;
60
               EQ ;
61
               IF { PUSH string "SOURCE cannot act as participant" ; FAILWITH } {} ;
62
               DUP ;
63
               CAR ;
64
               CAR ;
65
               CDR ;
66
               SENDER ;
67
               COMPARE ;
68
               EQ ;
69
               IF { PUSH string "SENDER cannot act as participant" ; FAILWITH } {} ;
70
               DUP ;
71
               CDR ;
72
               CDR ;
73
               SWAP ;
74
               DUP ;
75
               DUG 2 ;
76
               CDR ;
77
               CAR ;
78
               CDR ;
79
               DUP 3 ;
80
               CDR ;
81
               CAR ;
82
               CAR ;
83
               PAIR ;
84
               PAIR ;
85
               SWAP ;
86
               DUP ;
87
               DUG 2 ;
88
               CAR ;
89
               CDR ;
90
               CDR ;
91
               DUP 3 ;
92
               CAR ;
93
               CDR ;
94
               CAR ;
95
               PAIR ;
96
               DUP 3 ;
97
               CAR ;
98
               CAR ;
99
               CDR ;
100
               SENDER ;
101
               PAIR ;
102
               PAIR ;
103
               PAIR ;
104
               DUP 3 ;
105
               DUP 3 ;
106
               CAR ;
107
               CAR ;
108
               CAR ;
109
               GET ;
110
               IF_NONE
111
                 { UNIT ; DIG 3 ; DIG 2 ; DUP 4 ; CAR ; CAR ; CAR ; SWAP ; SOME ; SWAP ; UPDATE }
112
                 { DROP 2 ;
113
                   PUSH string "swap for this hash is already initiated" ;
114
                   FAILWITH } ;
115
               SWAP ;
116
               DROP ;
117
               SWAP ;
118
               DUP ;
119
               DUG 2 ;
120
               CDR ;
121
               CAR ;
122
               CAR ;
123
               CONTRACT %transfer (list (pair address
124
                                             (list (pair address (pair nat nat))))) ;
125
               IF_NONE { PUSH string "expected transfer entrypoint" ; FAILWITH } {} ;
126
               DUP 3 ;
127
               CDR ;
128
               CDR ;
129
               SELF_ADDRESS ;
130
               SENDER ;
131
               PAIR ;
132
               DIG 4 ;
133
               CDR ;
134
               CAR ;
135
               CDR ;
136
               DIG 3 ;
137
               DIG 2 ;
138
               UNPAIR ;
139
               DIG 2 ;
140
               PUSH mutez 0 ;
141
               NIL (pair address (list (pair address (pair nat nat)))) ;
142
               NIL (pair address (pair nat nat)) ;
143
               DIG 7 ;
144
               DIG 7 ;
145
               PAIR ;
146
               DIG 6 ;
147
               PAIR ;
148
               CONS ;
149
               DIG 4 ;
150
               PAIR ;
151
               CONS ;
152
               TRANSFER_TOKENS ;
153
               SWAP ;
154
               NIL operation }
155
             { DUP ;
156
               SIZE ;
157
               PUSH nat 32 ;
158
               COMPARE ;
159
               NEQ ;
160
               IF { PUSH string "secret size doesn't equal 32 bytes" ; FAILWITH } {} ;
161
               SHA256 ;
162
               SHA256 ;
163
               SWAP ;
164
               DUP ;
165
               DUG 2 ;
166
               SWAP ;
167
               DUP ;
168
               DUG 2 ;
169
               GET ;
170
               IF_NONE { PUSH string "no swap for such hash" ; FAILWITH } {} ;
171
               DUP ;
172
               CAR ;
173
               CDR ;
174
               CDR ;
175
               NOW ;
176
               COMPARE ;
177
               GE ;
178
               IF { PUSH string "refund time has already come" ; FAILWITH } {} ;
179
               DUP ;
180
               CDR ;
181
               CAR ;
182
               CAR ;
183
               CONTRACT %transfer (list (pair address
184
                                             (list (pair address (pair nat nat))))) ;
185
               IF_NONE { PUSH string "expected transfer entrypoint" ; FAILWITH } {} ;
186
               SWAP ;
187
               DUP ;
188
               DUG 2 ;
189
               CAR ;
190
               CDR ;
191
               CAR ;
192
               DUP 3 ;
193
               CDR ;
194
               CDR ;
195
               SUB ;
196
               ABS ;
197
               DUP 3 ;
198
               CAR ;
199
               CAR ;
200
               CDR ;
201
               SELF_ADDRESS ;
202
               PAIR ;
203
               DUP 4 ;
204
               CDR ;
205
               CAR ;
206
               CDR ;
207
               DUP 4 ;
208
               DIG 2 ;
209
               UNPAIR ;
210
               DIG 2 ;
211
               PUSH mutez 0 ;
212
               NIL (pair address (list (pair address (pair nat nat)))) ;
213
               NIL (pair address (pair nat nat)) ;
214
               DIG 7 ;
215
               DIG 7 ;
216
               PAIR ;
217
               DIG 6 ;
218
               PAIR ;
219
               CONS ;
220
               DIG 4 ;
221
               PAIR ;
222
               CONS ;
223
               TRANSFER_TOKENS ;
224
               DUP 3 ;
225
               CAR ;
226
               CDR ;
227
               CAR ;
228
               PUSH nat 0 ;
229
               SWAP ;
230
               DUP ;
231
               DUG 2 ;
232
               COMPARE ;
233
               GT ;
234
               IF
235
                 { NIL operation ;
236
                   SWAP ;
237
                   SENDER ;
238
                   SELF_ADDRESS ;
239
                   PAIR ;
240
                   DIG 5 ;
241
                   CDR ;
242
                   CAR ;
243
                   CDR ;
244
                   DIG 5 ;
245
                   DIG 2 ;
246
                   UNPAIR ;
247
                   DIG 2 ;
248
                   PUSH mutez 0 ;
249
                   NIL (pair address (list (pair address (pair nat nat)))) ;
250
                   NIL (pair address (pair nat nat)) ;
251
                   DIG 7 ;
252
                   DIG 7 ;
253
                   PAIR ;
254
                   DIG 6 ;
255
                   PAIR ;
256
                   CONS ;
257
                   DIG 4 ;
258
                   PAIR ;
259
                   CONS ;
260
                   TRANSFER_TOKENS ;
261
                   CONS }
262
                 { DIG 2 ; DIG 3 ; DROP 3 ; NIL operation } ;
263
               DIG 3 ;
264
               DIG 3 ;
265
               NONE (pair (pair (pair address address) (pair nat timestamp))
266
                          (pair (pair address nat) nat)) ;
267
               SWAP ;
268
               UPDATE ;
269
               SWAP } }
270
         { SWAP ;
271
           DUP ;
272
           DUG 2 ;
273
           SWAP ;
274
           DUP ;
275
           DUG 2 ;
276
           GET ;
277
           IF_NONE { PUSH string "no swap for such hash" ; FAILWITH } {} ;
278
           DUP ;
279
           CAR ;
280
           CDR ;
281
           CDR ;
282
           NOW ;
283
           COMPARE ;
284
           LT ;
285
           IF { PUSH string "refund time hasn't come" ; FAILWITH } {} ;
286
           DUP ;
287
           CDR ;
288
           CAR ;
289
           CAR ;
290
           CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ;
291
           IF_NONE { PUSH string "expected transfer entrypoint" ; FAILWITH } {} ;
292
           SWAP ;
293
           DUP ;
294
           DUG 2 ;
295
           CDR ;
296
           CDR ;
297
           DUP 3 ;
298
           CAR ;
299
           CAR ;
300
           CAR ;
301
           SELF_ADDRESS ;
302
           PAIR ;
303
           DIG 3 ;
304
           CDR ;
305
           CAR ;
306
           CDR ;
307
           DIG 3 ;
308
           DIG 2 ;
309
           UNPAIR ;
310
           DIG 2 ;
311
           PUSH mutez 0 ;
312
           NIL (pair address (list (pair address (pair nat nat)))) ;
313
           NIL (pair address (pair nat nat)) ;
314
           DIG 7 ;
315
           DIG 7 ;
316
           PAIR ;
317
           DIG 6 ;
318
           PAIR ;
319
           CONS ;
320
           DIG 4 ;
321
           PAIR ;
322
           CONS ;
323
           TRANSFER_TOKENS ;
324
           DUG 2 ;
325
           NONE (pair (pair (pair address address) (pair nat timestamp))
326
                      (pair (pair address nat) nat)) ;
327
           SWAP ;
328
           UPDATE ;
329
           NIL operation } ;
330
       DIG 2 ;
331
       CONS ;
332
       PAIR }