BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1FPmp...nkZB
Delegatable
operations (27.1K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
500
 
1
parameter (or
2
            (or
3
              (or (address %add_receiver)
4
                  (or (unit %default) (lambda %execute unit (list operation))))
5
              (or
6
                (pair %forward_to_receiver (nat %amount)
7
                                           (pair (address %receiver)
8
                                                 (or %transfer_type (address %fa12)
9
                                                                    (or
10
                                                                      (pair %fa2
11
                                                                        (address %contract)
12
                                                                        (nat %token_id))
13
                                                                      (unit %tez)))))
14
                (or (address %propose_administrator) (address %remove_administrator))))
15
            (or
16
              (or
17
                (pair %remove_exchange
18
                  (or %src_token (address %fa12)
19
                                 (or (pair %fa2 (address %contract) (nat %token_id))
20
                                     (unit %tez)))
21
                  (or %dst_token (address %fa12)
22
                                 (or (pair %fa2 (address %contract) (nat %token_id))
23
                                     (unit %tez))))
24
                (or (address %remove_receiver) (unit %set_administrator)))
25
              (or
26
                (or (option %set_delegate key_hash)
27
                    (pair %set_exchange
28
                      (pair %exchange_key
29
                        (or %src_token (address %fa12)
30
                                       (or
31
                                         (pair %fa2 (address %contract) (nat %token_id))
32
                                         (unit %tez)))
33
                        (or %dst_token (address %fa12)
34
                                       (or
35
                                         (pair %fa2 (address %contract) (nat %token_id))
36
                                         (unit %tez))))
37
                      (pair %exchange_value (address %oracle)
38
                                            (lambda %exchange_lambda (pair nat nat)
39
                                                                     (list operation)))))
40
                (or
41
                  (list %swap (pair
42
                               (pair %exchange_key
43
                                 (or %src_token (address %fa12)
44
                                                (or
45
                                                  (pair %fa2 (address %contract)
46
                                                             (nat %token_id))
47
                                                  (unit %tez)))
48
                                 (or %dst_token (address %fa12)
49
                                                (or
50
                                                  (pair %fa2 (address %contract)
51
                                                             (nat %token_id))
52
                                                  (unit %tez))))
53
                               (nat %token_amount)))
54
                  (pair %update_trading_window (timestamp %initial_shift)
55
                                               (pair (nat %duration_in_seconds)
56
                                                     (nat %recurrence_in_seconds)))))));
57
storage (pair
58
          (pair (big_map %administrators address nat)
59
                (big_map %allowed_funds_receivers address unit))
60
          (pair
61
            (big_map %exchanges
62
              (pair
63
                (or %src_token (address %fa12)
64
                               (or (pair %fa2 (address %contract) (nat %token_id))
65
                                   (unit %tez)))
66
                (or %dst_token (address %fa12)
67
                               (or (pair %fa2 (address %contract) (nat %token_id))
68
                                   (unit %tez))))
69
              (pair (address %oracle)
70
                    (lambda %exchange_lambda (pair nat nat) (list operation))))
71
            (pair %trading_window (timestamp %initial_shift)
72
                                  (pair (nat %duration_in_seconds)
73
                                        (nat %recurrence_in_seconds)))));
74
code { LAMBDA
75
         (pair unit
76
               (pair (pair (big_map address nat) (big_map address unit))
77
                     (pair
78
                       (big_map
79
                         (pair (or address (or (pair address nat) unit))
80
                               (or address (or (pair address nat) unit)))
81
                         (pair address (lambda (pair nat nat) (list operation))))
82
                       (pair timestamp (pair nat nat)))))
83
         (pair unit
84
               (pair (pair (big_map address nat) (big_map address unit))
85
                     (pair
86
                       (big_map
87
                         (pair (or address (or (pair address nat) unit))
88
                               (or address (or (pair address nat) unit)))
89
                         (pair address (lambda (pair nat nat) (list operation))))
90
                       (pair timestamp (pair nat nat)))))
91
         { CDR ;
92
           PUSH nat 1 ;
93
           DUP 2 ;
94
           CAR ;
95
           CAR ;
96
           SENDER ;
97
           GET ;
98
           IF_NONE { PUSH int 21 ; FAILWITH } {} ;
99
           COMPARE ;
100
           EQ ;
101
           IF {} { PUSH int 401 ; FAILWITH } ;
102
           UNIT ;
103
           PAIR } ;
104
       SWAP ;
105
       UNPAIR ;
106
       IF_LEFT
107
         { IF_LEFT
108
             { IF_LEFT
109
                 { AMOUNT ;
110
                   PUSH mutez 0 ;
111
                   COMPARE ;
112
                   EQ ;
113
                   IF {} { AMOUNT ; FAILWITH } ;
114
                   DIG 2 ;
115
                   UNIT ;
116
                   SWAP ;
117
                   DIG 3 ;
118
                   DIG 2 ;
119
                   PAIR ;
120
                   EXEC ;
121
                   CDR ;
122
                   UNPAIR ;
123
                   UNPAIR ;
124
                   SWAP ;
125
                   PUSH (option unit) (Some Unit) ;
126
                   DIG 4 ;
127
                   UPDATE ;
128
                   SWAP ;
129
                   PAIR ;
130
                   PAIR ;
131
                   NIL operation }
132
                 { IF_LEFT
133
                     { DROP ; SWAP ; DROP ; NIL operation }
134
                     { AMOUNT ;
135
                       PUSH mutez 0 ;
136
                       COMPARE ;
137
                       EQ ;
138
                       IF {} { AMOUNT ; FAILWITH } ;
139
                       DIG 2 ;
140
                       UNIT ;
141
                       SWAP ;
142
                       DIG 3 ;
143
                       DIG 2 ;
144
                       PAIR ;
145
                       EXEC ;
146
                       CDR ;
147
                       SWAP ;
148
                       NIL operation ;
149
                       SWAP ;
150
                       UNIT ;
151
                       EXEC ;
152
                       NIL operation ;
153
                       SWAP ;
154
                       ITER { CONS } ;
155
                       ITER { CONS } } } }
156
             { IF_LEFT
157
                 { AMOUNT ;
158
                   PUSH mutez 0 ;
159
                   COMPARE ;
160
                   EQ ;
161
                   IF {} { AMOUNT ; FAILWITH } ;
162
                   DIG 2 ;
163
                   UNIT ;
164
                   SWAP ;
165
                   DIG 3 ;
166
                   DIG 2 ;
167
                   PAIR ;
168
                   EXEC ;
169
                   UNPAIR ;
170
                   SWAP ;
171
                   DUG 2 ;
172
                   DUP 3 ;
173
                   CAR ;
174
                   CDR ;
175
                   DUP 3 ;
176
                   GET 3 ;
177
                   MEM ;
178
                   IF {} { PUSH string "RECEIVER_NOT_ALLOWED" ; FAILWITH } ;
179
                   DUP 2 ;
180
                   GET 4 ;
181
                   IF_LEFT
182
                     { PUSH nat 0 ;
183
                       DUP 4 ;
184
                       CAR ;
185
                       COMPARE ;
186
                       GT ;
187
                       IF
188
                         { SWAP ;
189
                           DROP ;
190
                           CONTRACT %transfer (pair (address %from)
191
                                                    (pair (address %to) (nat %value))) ;
192
                           IF_NONE { PUSH int 19 ; FAILWITH } {} ;
193
                           NIL operation ;
194
                           SWAP ;
195
                           PUSH mutez 0 ;
196
                           DUP 4 ;
197
                           CAR ;
198
                           DIG 4 ;
199
                           GET 3 ;
200
                           SELF_ADDRESS ;
201
                           PAIR 3 ;
202
                           TRANSFER_TOKENS ;
203
                           CONS }
204
                         { DROP 3 ; NIL operation } }
205
                     { IF_LEFT
206
                         { PUSH nat 0 ;
207
                           DUP 4 ;
208
                           CAR ;
209
                           COMPARE ;
210
                           GT ;
211
                           IF
212
                             { SWAP ;
213
                               DROP ;
214
                               NIL operation ;
215
                               DUP 2 ;
216
                               CAR ;
217
                               CONTRACT %transfer (list (pair (address %from_)
218
                                                             (list %txs (pair
219
                                                                         (address %to_)
220
                                                                         (pair
221
                                                                           (nat %token_id)
222
                                                                           (nat %amount)))))) ;
223
                               IF_NONE { PUSH int 36 ; FAILWITH } {} ;
224
                               PUSH mutez 0 ;
225
                               NIL (pair address (list (pair address (pair nat nat)))) ;
226
                               NIL (pair address (pair nat nat)) ;
227
                               DUP 7 ;
228
                               CAR ;
229
                               DIG 6 ;
230
                               CDR ;
231
                               DIG 7 ;
232
                               GET 3 ;
233
                               PAIR 3 ;
234
                               CONS ;
235
                               SELF_ADDRESS ;
236
                               PAIR ;
237
                               CONS ;
238
                               TRANSFER_TOKENS ;
239
                               CONS }
240
                             { DROP 3 ; NIL operation } }
241
                         { DROP 2 ;
242
                           PUSH mutez 1 ;
243
                           DUP 2 ;
244
                           CAR ;
245
                           MUL ;
246
                           NIL operation ;
247
                           DIG 2 ;
248
                           GET 3 ;
249
                           CONTRACT unit ;
250
                           IF_NONE { PUSH int 93 ; FAILWITH } {} ;
251
                           DIG 2 ;
252
                           UNIT ;
253
                           TRANSFER_TOKENS ;
254
                           CONS } } }
255
                 { IF_LEFT
256
                     { AMOUNT ;
257
                       PUSH mutez 0 ;
258
                       COMPARE ;
259
                       EQ ;
260
                       IF {} { AMOUNT ; FAILWITH } ;
261
                       DIG 2 ;
262
                       UNIT ;
263
                       SWAP ;
264
                       DIG 3 ;
265
                       DIG 2 ;
266
                       PAIR ;
267
                       EXEC ;
268
                       CDR ;
269
                       UNPAIR ;
270
                       UNPAIR ;
271
                       PUSH (option nat) (Some 0) ;
272
                       DIG 4 ;
273
                       UPDATE ;
274
                       PAIR ;
275
                       PAIR }
276
                     { AMOUNT ;
277
                       PUSH mutez 0 ;
278
                       COMPARE ;
279
                       EQ ;
280
                       IF {} { AMOUNT ; FAILWITH } ;
281
                       DIG 2 ;
282
                       UNIT ;
283
                       SWAP ;
284
                       DIG 3 ;
285
                       DIG 2 ;
286
                       PAIR ;
287
                       EXEC ;
288
                       CDR ;
289
                       UNPAIR ;
290
                       UNPAIR ;
291
                       NONE nat ;
292
                       DIG 4 ;
293
                       UPDATE ;
294
                       PAIR ;
295
                       PAIR } ;
296
                   NIL operation } } }
297
         { IF_LEFT
298
             { IF_LEFT
299
                 { AMOUNT ;
300
                   PUSH mutez 0 ;
301
                   COMPARE ;
302
                   EQ ;
303
                   IF {} { AMOUNT ; FAILWITH } ;
304
                   DIG 2 ;
305
                   UNIT ;
306
                   SWAP ;
307
                   DIG 3 ;
308
                   DIG 2 ;
309
                   PAIR ;
310
                   EXEC ;
311
                   CDR ;
312
                   DUP ;
313
                   GET 3 ;
314
                   NONE (pair address (lambda (pair nat nat) (list operation))) ;
315
                   DIG 3 ;
316
                   UPDATE ;
317
                   UPDATE 3 }
318
                 { IF_LEFT
319
                     { AMOUNT ;
320
                       PUSH mutez 0 ;
321
                       COMPARE ;
322
                       EQ ;
323
                       IF {} { AMOUNT ; FAILWITH } ;
324
                       DIG 2 ;
325
                       UNIT ;
326
                       SWAP ;
327
                       DIG 3 ;
328
                       DIG 2 ;
329
                       PAIR ;
330
                       EXEC ;
331
                       CDR ;
332
                       UNPAIR ;
333
                       UNPAIR ;
334
                       SWAP ;
335
                       NONE unit ;
336
                       DIG 4 ;
337
                       UPDATE ;
338
                       SWAP ;
339
                       PAIR ;
340
                       PAIR }
341
                     { DROP ;
342
                       SWAP ;
343
                       DROP ;
344
                       AMOUNT ;
345
                       PUSH mutez 0 ;
346
                       COMPARE ;
347
                       EQ ;
348
                       IF {} { AMOUNT ; FAILWITH } ;
349
                       PUSH nat 0 ;
350
                       DUP 2 ;
351
                       CAR ;
352
                       CAR ;
353
                       SENDER ;
354
                       GET ;
355
                       IF_NONE { PUSH int 46 ; FAILWITH } {} ;
356
                       COMPARE ;
357
                       EQ ;
358
                       IF {} { PUSH int 405 ; FAILWITH } ;
359
                       UNPAIR ;
360
                       UNPAIR ;
361
                       PUSH (option nat) (Some 1) ;
362
                       SENDER ;
363
                       UPDATE ;
364
                       PAIR ;
365
                       PAIR } } ;
366
               NIL operation }
367
             { IF_LEFT
368
                 { IF_LEFT
369
                     { DIG 2 ;
370
                       UNIT ;
371
                       SWAP ;
372
                       DIG 3 ;
373
                       DIG 2 ;
374
                       PAIR ;
375
                       EXEC ;
376
                       CDR ;
377
                       SWAP ;
378
                       SET_DELEGATE ;
379
                       NIL operation ;
380
                       SWAP ;
381
                       CONS }
382
                     { AMOUNT ;
383
                       PUSH mutez 0 ;
384
                       COMPARE ;
385
                       EQ ;
386
                       IF {} { AMOUNT ; FAILWITH } ;
387
                       DIG 2 ;
388
                       UNIT ;
389
                       SWAP ;
390
                       DIG 3 ;
391
                       DIG 2 ;
392
                       PAIR ;
393
                       EXEC ;
394
                       CDR ;
395
                       DUP ;
396
                       GET 3 ;
397
                       DUP 3 ;
398
                       CDR ;
399
                       SOME ;
400
                       DIG 3 ;
401
                       CAR ;
402
                       UPDATE ;
403
                       UPDATE 3 ;
404
                       NIL operation } }
405
                 { IF_LEFT
406
                     { AMOUNT ;
407
                       PUSH mutez 0 ;
408
                       COMPARE ;
409
                       EQ ;
410
                       IF {} { AMOUNT ; FAILWITH } ;
411
                       DUP 2 ;
412
                       GET 7 ;
413
                       DUP 3 ;
414
                       GET 8 ;
415
                       DUP 4 ;
416
                       GET 5 ;
417
                       NOW ;
418
                       SUB ;
419
                       ISNAT ;
420
                       IF_NONE { PUSH int 75 ; FAILWITH } {} ;
421
                       EDIV ;
422
                       IF_NONE { PUSH int 76 ; FAILWITH } { CDR } ;
423
                       COMPARE ;
424
                       LE ;
425
                       IF {} { PUSH int 505 ; FAILWITH } ;
426
                       NIL operation ;
427
                       DUP 2 ;
428
                       ITER { DUP 4 ;
429
                              GET 3 ;
430
                              DUP 2 ;
431
                              CAR ;
432
                              MEM ;
433
                              IF
434
                                {}
435
                                { PUSH string "WrongCondition: self.data.exchanges.contains(exchange.exchange_key)" ;
436
                                  FAILWITH } ;
437
                              DUP 4 ;
438
                              GET 3 ;
439
                              DUP 2 ;
440
                              CAR ;
441
                              GET ;
442
                              IF_NONE { PUSH int 85 ; FAILWITH } {} ;
443
                              CDR ;
444
                              DUP 5 ;
445
                              GET 3 ;
446
                              DUP 3 ;
447
                              CAR ;
448
                              GET ;
449
                              IF_NONE { PUSH int 85 ; FAILWITH } {} ;
450
                              CAR ;
451
                              DUP 3 ;
452
                              CDR ;
453
                              VIEW "get_min_out" nat ;
454
                              IF_NONE { PUSH int 86 ; FAILWITH } {} ;
455
                              DUP 3 ;
456
                              CDR ;
457
                              PAIR ;
458
                              EXEC ;
459
                              NIL operation ;
460
                              SWAP ;
461
                              ITER { CONS } ;
462
                              ITER { DIG 2 ; SWAP ; CONS ; SWAP } ;
463
                              DROP } ;
464
                       SWAP ;
465
                       DROP ;
466
                       DIG 2 ;
467
                       DROP }
468
                     { AMOUNT ;
469
                       PUSH mutez 0 ;
470
                       COMPARE ;
471
                       EQ ;
472
                       IF {} { AMOUNT ; FAILWITH } ;
473
                       NOW ;
474
                       DUP 2 ;
475
                       CAR ;
476
                       COMPARE ;
477
                       LT ;
478
                       IF {} { PUSH int 506 ; FAILWITH } ;
479
                       DUP ;
480
                       GET 4 ;
481
                       DUP 2 ;
482
                       GET 3 ;
483
                       COMPARE ;
484
                       LT ;
485
                       IF {} { PUSH int 506 ; FAILWITH } ;
486
                       DIG 2 ;
487
                       UNIT ;
488
                       SWAP ;
489
                       DIG 3 ;
490
                       DIG 2 ;
491
                       PAIR ;
492
                       EXEC ;
493
                       CDR ;
494
                       SWAP ;
495
                       UPDATE 4 ;
496
                       NIL operation } } } } ;
497
       NIL operation ;
498
       SWAP ;
499
       ITER { CONS } ;
500
       PAIR }