BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • QuipuSwap Dex Core 2.0
FA2Ledger
operations (1.86M)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
674
1123
 
1
{ parameter (or (or (unit %default) (pair %setup_func (nat %idx) (bytes %func_bytes)))
2
                (or %use
3
                  (or
4
                    (or
5
                      (or
6
                        (or (list %add_managers (pair (address %manager) (bool %add)))
7
                            (pair %balance_of
8
                              (list %requests (pair (address %owner) (nat %token_id)))
9
                              (contract %callback (list (pair
10
                                                        (pair %request (address %owner)
11
                                                                       (nat %token_id))
12
                                                        (nat %balance))))))
13
                        (or
14
                          (pair %ban (nat %pair_id)
15
                                     (pair %ban_params (key_hash %baker)
16
                                                       (nat %ban_period)))
17
                          (pair %claim (nat %pair_id) (address %receiver)
18
                                       (option %referral_code nat))))
19
                      (or
20
                        (or
21
                          (pair %claim_interface_fee
22
                            (or %token
23
                              (or (address %fa12) (pair %fa2 (address %token) (nat %id)))
24
                              (unit %tez))
25
                            (address %receiver)
26
                            (option %referral_code nat))
27
                          (pair %claim_interface_tez_fee (nat %pair_id)
28
                                                         (address %receiver)
29
                                                         (option %referral_code nat)))
30
                        (or (unit %close) (unit %confirm_admin))))
31
                    (or
32
                      (or
33
                        (or
34
                          (pair %divest_liquidity (nat %pair_id) (nat %min_token_a_out)
35
                                                  (nat %min_token_b_out)
36
                                                  (nat %shares)
37
                                                  (address %liquidity_receiver)
38
                                                  (key_hash %candidate)
39
                                                  (timestamp %deadline)
40
                                                  (option %referral_code nat))
41
                          (pair %flash_swap_callback (nat %pair_id)
42
                                                     (nat %prev_tez_balance)
43
                                                     (nat %amount_in)))
44
                        (or
45
                          (pair %invest_liquidity (nat %pair_id) (nat %token_a_in)
46
                                                  (nat %token_b_in)
47
                                                  (nat %shares)
48
                                                  (address %shares_receiver)
49
                                                  (key_hash %candidate)
50
                                                  (timestamp %deadline)
51
                                                  (option %referral_code nat))
52
                          (pair %launch_callback
53
                            (pair %vote_params (address %voter) (key_hash %candidate)
54
                                               (bool %execute_voting)
55
                                               (nat %votes))
56
                            (address %bucket))))
57
                      (or
58
                        (or
59
                          (pair %launch_exchange
60
                            (pair %pair
61
                              (or %token_a
62
                                (or (address %fa12)
63
                                    (pair %fa2 (address %token) (nat %id)))
64
                                (unit %tez))
65
                              (or %token_b
66
                                (or (address %fa12)
67
                                    (pair %fa2 (address %token) (nat %id)))
68
                                (unit %tez)))
69
                            (nat %token_a_in)
70
                            (nat %token_b_in)
71
                            (address %shares_receiver)
72
                            (key_hash %candidate)
73
                            (timestamp %deadline)
74
                            (option %referral_code nat))
75
                          (list %permit (pair key signature (bytes %permit_hash))))
76
                        (or (address %set_admin) (address %set_auction)))))
77
                  (or
78
                    (or
79
                      (or (or (nat %set_baker_rate) (nat %set_collecting_period))
80
                          (or
81
                            (pair %set_expiry (address %issuer) (nat %expiry)
82
                                              (option %permit_hash bytes))
83
                            (pair %set_fees (nat %interface_fee) (nat %swap_fee)
84
                                            (nat %auction_fee)
85
                                            (nat %withdraw_fee_reward))))
86
                      (or
87
                        (or (address %set_flash_swaps_proxy)
88
                            (pair %swap (option %lambda (lambda unit (list operation)))
89
                                        (list %swaps (pair
90
                                                      (or %direction (unit %a_to_b)
91
                                                                     (unit %b_to_a))
92
                                                      (nat %pair_id)))
93
                                        (timestamp %deadline)
94
                                        (address %receiver)
95
                                        (address %referrer)
96
                                        (nat %amount_in)
97
                                        (nat %min_amount_out)
98
                                        (option %referral_code nat)))
99
                        (or
100
                          (list %transfer (pair (address %from_)
101
                                               (list %txs (pair (address %to_)
102
                                                               (nat %token_id)
103
                                                               (nat %amount)))))
104
                          (list %update_operators (or
105
                                                   (pair %add_operator (address %owner)
106
                                                                       (address %operator)
107
                                                                       (nat %token_id))
108
                                                   (pair %remove_operator
109
                                                     (address %owner)
110
                                                     (address %operator)
111
                                                     (nat %token_id)))))))
112
                    (or
113
                      (or
114
                        (pair %update_token_metadata (nat %token_id)
115
                                                     (map %token_info string bytes))
116
                        (pair %vote (nat %pair_id) (key_hash %candidate)
117
                                    (option %referral_code nat)))
118
                      (or
119
                        (pair %withdraw_auction_fee (option %pair_id nat)
120
                                                    (or %token
121
                                                      (or (address %fa12)
122
                                                          (pair %fa2 (address %token)
123
                                                                     (nat %id)))
124
                                                      (unit %tez))
125
                                                    (option %referral_code nat))
126
                        (pair %withdraw_profit (contract %receiver unit) (nat %pair_id)
127
                                               (option %referral_code nat))))))) ;
128
  storage (pair
129
            (pair %storage
130
              (big_map %token_metadata nat
131
                                       (pair (nat %token_id)
132
                                             (map %token_info string bytes)))
133
              (big_map %ledger (pair address nat) nat)
134
              (big_map %accounts (pair address nat) (set address))
135
              (big_map %tokens nat
136
                               (pair
137
                                 (or %token_a
138
                                   (or (address %fa12)
139
                                       (pair %fa2 (address %token) (nat %id)))
140
                                   (unit %tez))
141
                                 (or %token_b
142
                                   (or (address %fa12)
143
                                       (pair %fa2 (address %token) (nat %id)))
144
                                   (unit %tez))))
145
              (big_map %token_to_id bytes nat)
146
              (big_map %pairs nat
147
                              (pair (nat %token_a_pool) (nat %token_b_pool)
148
                                    (nat %token_a_price_cml)
149
                                    (nat %token_b_price_cml)
150
                                    (nat %total_supply)
151
                                    (timestamp %last_block_timestamp)
152
                                    (option %bucket address)))
153
              (big_map %permits address
154
                                (pair
155
                                  (map %permits bytes
156
                                                (pair (timestamp %created_at)
157
                                                      (option %expiry nat)))
158
                                  (option %expiry nat)))
159
              (big_map %interface_fee
160
                (pair
161
                  (or (or (address %fa12) (pair %fa2 (address %token) (nat %id)))
162
                      (unit %tez))
163
                  address)
164
                nat)
165
              (big_map %interface_tez_fee (pair nat address) nat)
166
              (big_map %auction_fee
167
                (or (or (address %fa12) (pair %fa2 (address %token) (nat %id)))
168
                    (unit %tez))
169
                nat)
170
              (big_map %auction_tez_fee nat nat)
171
              (set %managers address)
172
              (pair %fees (nat %interface_fee) (nat %swap_fee) (nat %auction_fee)
173
                          (nat %withdraw_fee_reward))
174
              (address %admin)
175
              (option %pending_admin address)
176
              (address %baker_registry)
177
              (address %flash_swaps_proxy)
178
              (address %auction)
179
              (nat %permits_counter)
180
              (nat %default_expiry)
181
              (bool %entered)
182
              (nat %tokens_count)
183
              (nat %collecting_period)
184
              (nat %baker_rate_f))
185
            (big_map %dex_core_lambdas nat bytes)
186
            (big_map %metadata string bytes)) ;
187
  code { UNPAIR ;
188
         IF_LEFT
189
           { IF_LEFT
190
               { DROP }
191
               { PUSH string "400" ;
192
                 DUP 3 ;
193
                 CAR ;
194
                 GET 27 ;
195
                 SENDER ;
196
                 COMPARE ;
197
                 EQ ;
198
                 IF { DROP } { FAILWITH } ;
199
                 PUSH string "102" ;
200
                 PUSH nat 27 ;
201
                 DUP 3 ;
202
                 CAR ;
203
                 COMPARE ;
204
                 LE ;
205
                 IF { DROP } { FAILWITH } ;
206
                 DUP 2 ;
207
                 GET 3 ;
208
                 DUP 2 ;
209
                 CAR ;
210
                 GET ;
211
                 IF_NONE
212
                   { UNIT ; DUP 3 ; DIG 3 ; GET 3 ; DUP 4 ; CDR ; DIG 4 ; CAR ; SWAP ; SOME ; SWAP ; UPDATE ; UPDATE 3 }
213
                   { DROP 2 ; PUSH string "101" ; FAILWITH } ;
214
                 SWAP ;
215
                 DROP } ;
216
             NIL operation }
217
           { DUP 2 ;
218
             GET 3 ;
219
             DUP 2 ;
220
             IF_LEFT
221
               { IF_LEFT
222
                   { IF_LEFT
223
                       { IF_LEFT
224
                           { IF_LEFT { DROP ; PUSH nat 13 } { DROP ; PUSH nat 22 } }
225
                           { IF_LEFT { DROP ; PUSH nat 17 } { DROP ; PUSH nat 26 } } }
226
                       { IF_LEFT
227
                           { IF_LEFT { DROP ; PUSH nat 5 } { DROP ; PUSH nat 6 } }
228
                           { IF_LEFT { DROP ; PUSH nat 25 } { DROP ; PUSH nat 10 } } } }
229
                   { IF_LEFT
230
                       { IF_LEFT
231
                           { IF_LEFT { DROP ; PUSH nat 2 } { DROP ; PUSH nat 24 } }
232
                           { IF_LEFT { DROP ; PUSH nat 1 } { DROP ; PUSH nat 23 } } }
233
                       { IF_LEFT
234
                           { IF_LEFT { DROP ; PUSH nat 0 } { DROP ; PUSH nat 18 } }
235
                           { IF_LEFT { DROP ; PUSH nat 9 } { DROP ; PUSH nat 12 } } } } }
236
               { IF_LEFT
237
                   { IF_LEFT
238
                       { IF_LEFT
239
                           { IF_LEFT { DROP ; PUSH nat 27 } { DROP ; PUSH nat 15 } }
240
                           { IF_LEFT { DROP ; PUSH nat 19 } { DROP ; PUSH nat 14 } } }
241
                       { IF_LEFT
242
                           { IF_LEFT { DROP ; PUSH nat 11 } { DROP ; PUSH nat 3 } }
243
                           { IF_LEFT { DROP ; PUSH nat 20 } { DROP ; PUSH nat 21 } } } }
244
                   { IF_LEFT
245
                       { IF_LEFT { DROP ; PUSH nat 16 } { DROP ; PUSH nat 8 } }
246
                       { IF_LEFT { DROP ; PUSH nat 7 } { DROP ; PUSH nat 4 } } } } ;
247
             GET ;
248
             IF_NONE { PUSH string "100" ; FAILWITH } {} ;
249
             UNPACK (lambda
250
                      (pair
251
                        (or
252
                          (or
253
                            (or
254
                              (or
255
                                (or
256
                                  (list %add_managers (pair (address %manager)
257
                                                           (bool %add)))
258
                                  (pair %balance_of
259
                                    (list %requests (pair (address %owner)
260
                                                         (nat %token_id)))
261
                                    (contract %callback (list (pair
262
                                                              (pair %request
263
                                                                (address %owner)
264
                                                                (nat %token_id))
265
                                                              (nat %balance))))))
266
                                (or
267
                                  (pair %ban (nat %pair_id)
268
                                             (pair %ban_params (key_hash %baker)
269
                                                               (nat %ban_period)))
270
                                  (pair %claim (nat %pair_id) (address %receiver)
271
                                               (option %referral_code nat))))
272
                              (or
273
                                (or
274
                                  (pair %claim_interface_fee
275
                                    (or %token
276
                                      (or (address %fa12)
277
                                          (pair %fa2 (address %token) (nat %id)))
278
                                      (unit %tez))
279
                                    (address %receiver)
280
                                    (option %referral_code nat))
281
                                  (pair %claim_interface_tez_fee (nat %pair_id)
282
                                                                 (address %receiver)
283
                                                                 (option %referral_code nat)))
284
                                (or (unit %close) (unit %confirm_admin))))
285
                            (or
286
                              (or
287
                                (or
288
                                  (pair %divest_liquidity (nat %pair_id)
289
                                                          (nat %min_token_a_out)
290
                                                          (nat %min_token_b_out)
291
                                                          (nat %shares)
292
                                                          (address %liquidity_receiver)
293
                                                          (key_hash %candidate)
294
                                                          (timestamp %deadline)
295
                                                          (option %referral_code nat))
296
                                  (pair %flash_swap_callback (nat %pair_id)
297
                                                             (nat %prev_tez_balance)
298
                                                             (nat %amount_in)))
299
                                (or
300
                                  (pair %invest_liquidity (nat %pair_id)
301
                                                          (nat %token_a_in)
302
                                                          (nat %token_b_in)
303
                                                          (nat %shares)
304
                                                          (address %shares_receiver)
305
                                                          (key_hash %candidate)
306
                                                          (timestamp %deadline)
307
                                                          (option %referral_code nat))
308
                                  (pair %launch_callback
309
                                    (pair %vote_params (address %voter)
310
                                                       (key_hash %candidate)
311
                                                       (bool %execute_voting)
312
                                                       (nat %votes))
313
                                    (address %bucket))))
314
                              (or
315
                                (or
316
                                  (pair %launch_exchange
317
                                    (pair %pair
318
                                      (or %token_a
319
                                        (or (address %fa12)
320
                                            (pair %fa2 (address %token) (nat %id)))
321
                                        (unit %tez))
322
                                      (or %token_b
323
                                        (or (address %fa12)
324
                                            (pair %fa2 (address %token) (nat %id)))
325
                                        (unit %tez)))
326
                                    (nat %token_a_in)
327
                                    (nat %token_b_in)
328
                                    (address %shares_receiver)
329
                                    (key_hash %candidate)
330
                                    (timestamp %deadline)
331
                                    (option %referral_code nat))
332
                                  (list %permit (pair key signature (bytes %permit_hash))))
333
                                (or (address %set_admin) (address %set_auction)))))
334
                          (or
335
                            (or
336
                              (or
337
                                (or (nat %set_baker_rate) (nat %set_collecting_period))
338
                                (or
339
                                  (pair %set_expiry (address %issuer) (nat %expiry)
340
                                                    (option %permit_hash bytes))
341
                                  (pair %set_fees (nat %interface_fee) (nat %swap_fee)
342
                                                  (nat %auction_fee)
343
                                                  (nat %withdraw_fee_reward))))
344
                              (or
345
                                (or (address %set_flash_swaps_proxy)
346
                                    (pair %swap
347
                                      (option %lambda (lambda unit (list operation)))
348
                                      (list %swaps (pair
349
                                                    (or %direction (unit %a_to_b)
350
                                                                   (unit %b_to_a))
351
                                                    (nat %pair_id)))
352
                                      (timestamp %deadline)
353
                                      (address %receiver)
354
                                      (address %referrer)
355
                                      (nat %amount_in)
356
                                      (nat %min_amount_out)
357
                                      (option %referral_code nat)))
358
                                (or
359
                                  (list %transfer (pair (address %from_)
360
                                                       (list %txs (pair (address %to_)
361
                                                                       (nat %token_id)
362
                                                                       (nat %amount)))))
363
                                  (list %update_operators (or
364
                                                           (pair %add_operator
365
                                                             (address %owner)
366
                                                             (address %operator)
367
                                                             (nat %token_id))
368
                                                           (pair %remove_operator
369
                                                             (address %owner)
370
                                                             (address %operator)
371
                                                             (nat %token_id)))))))
372
                            (or
373
                              (or
374
                                (pair %update_token_metadata (nat %token_id)
375
                                                             (map %token_info string
376
                                                                              bytes))
377
                                (pair %vote (nat %pair_id) (key_hash %candidate)
378
                                            (option %referral_code nat)))
379
                              (or
380
                                (pair %withdraw_auction_fee (option %pair_id nat)
381
                                                            (or %token
382
                                                              (or (address %fa12)
383
                                                                  (pair %fa2
384
                                                                    (address %token)
385
                                                                    (nat %id)))
386
                                                              (unit %tez))
387
                                                            (option %referral_code nat))
388
                                (pair %withdraw_profit (contract %receiver unit)
389
                                                       (nat %pair_id)
390
                                                       (option %referral_code nat))))))
391
                        (big_map %token_metadata nat
392
                                                 (pair (nat %token_id)
393
                                                       (map %token_info string bytes)))
394
                        (big_map %ledger (pair address nat) nat)
395
                        (big_map %accounts (pair address nat) (set address))
396
                        (big_map %tokens nat
397
                                         (pair
398
                                           (or %token_a
399
                                             (or (address %fa12)
400
                                                 (pair %fa2 (address %token) (nat %id)))
401
                                             (unit %tez))
402
                                           (or %token_b
403
                                             (or (address %fa12)
404
                                                 (pair %fa2 (address %token) (nat %id)))
405
                                             (unit %tez))))
406
                        (big_map %token_to_id bytes nat)
407
                        (big_map %pairs nat
408
                                        (pair (nat %token_a_pool) (nat %token_b_pool)
409
                                              (nat %token_a_price_cml)
410
                                              (nat %token_b_price_cml)
411
                                              (nat %total_supply)
412
                                              (timestamp %last_block_timestamp)
413
                                              (option %bucket address)))
414
                        (big_map %permits address
415
                                          (pair
416
                                            (map %permits bytes
417
                                                          (pair (timestamp %created_at)
418
                                                                (option %expiry nat)))
419
                                            (option %expiry nat)))
420
                        (big_map %interface_fee
421
                          (pair
422
                            (or
423
                              (or (address %fa12) (pair %fa2 (address %token) (nat %id)))
424
                              (unit %tez))
425
                            address)
426
                          nat)
427
                        (big_map %interface_tez_fee (pair nat address) nat)
428
                        (big_map %auction_fee
429
                          (or
430
                            (or (address %fa12) (pair %fa2 (address %token) (nat %id)))
431
                            (unit %tez))
432
                          nat)
433
                        (big_map %auction_tez_fee nat nat)
434
                        (set %managers address)
435
                        (pair %fees (nat %interface_fee) (nat %swap_fee)
436
                                    (nat %auction_fee)
437
                                    (nat %withdraw_fee_reward))
438
                        (address %admin)
439
                        (option %pending_admin address)
440
                        (address %baker_registry)
441
                        (address %flash_swaps_proxy)
442
                        (address %auction)
443
                        (nat %permits_counter)
444
                        (nat %default_expiry)
445
                        (bool %entered)
446
                        (nat %tokens_count)
447
                        (nat %collecting_period)
448
                        (nat %baker_rate_f))
449
                      (pair (list operation)
450
                            (big_map %token_metadata nat
451
                                                     (pair (nat %token_id)
452
                                                           (map %token_info string bytes)))
453
                            (big_map %ledger (pair address nat) nat)
454
                            (big_map %accounts (pair address nat) (set address))
455
                            (big_map %tokens nat
456
                                             (pair
457
                                               (or %token_a
458
                                                 (or (address %fa12)
459
                                                     (pair %fa2 (address %token)
460
                                                                (nat %id)))
461
                                                 (unit %tez))
462
                                               (or %token_b
463
                                                 (or (address %fa12)
464
                                                     (pair %fa2 (address %token)
465
                                                                (nat %id)))
466
                                                 (unit %tez))))
467
                            (big_map %token_to_id bytes nat)
468
                            (big_map %pairs nat
469
                                            (pair (nat %token_a_pool)
470
                                                  (nat %token_b_pool)
471
                                                  (nat %token_a_price_cml)
472
                                                  (nat %token_b_price_cml)
473
                                                  (nat %total_supply)
474
                                                  (timestamp %last_block_timestamp)
475
                                                  (option %bucket address)))
476
                            (big_map %permits address
477
                                              (pair
478
                                                (map %permits bytes
479
                                                              (pair
480
                                                                (timestamp %created_at)
481
                                                                (option %expiry nat)))
482
                                                (option %expiry nat)))
483
                            (big_map %interface_fee
484
                              (pair
485
                                (or
486
                                  (or (address %fa12)
487
                                      (pair %fa2 (address %token) (nat %id)))
488
                                  (unit %tez))
489
                                address)
490
                              nat)
491
                            (big_map %interface_tez_fee (pair nat address) nat)
492
                            (big_map %auction_fee
493
                              (or
494
                                (or (address %fa12)
495
                                    (pair %fa2 (address %token) (nat %id)))
496
                                (unit %tez))
497
                              nat)
498
                            (big_map %auction_tez_fee nat nat)
499
                            (set %managers address)
500
                            (pair %fees (nat %interface_fee) (nat %swap_fee)
501
                                        (nat %auction_fee)
502
                                        (nat %withdraw_fee_reward))
503
                            (address %admin)
504
                            (option %pending_admin address)
505
                            (address %baker_registry)
506
                            (address %flash_swaps_proxy)
507
                            (address %auction)
508
                            (nat %permits_counter)
509
                            (nat %default_expiry)
510
                            (bool %entered)
511
                            (nat %tokens_count)
512
                            (nat %collecting_period)
513
                            (nat %baker_rate_f))) ;
514
             IF_NONE
515
               { DROP ; PUSH string "103" ; FAILWITH }
516
               { DUP 3 ; CAR ; DIG 2 ; PAIR ; EXEC } ;
517
             SWAP ;
518
             DUP 2 ;
519
             CDR ;
520
             UPDATE 1 ;
521
             SWAP ;
522
             CAR } ;
523
         PAIR } ;
524
  view "get_baker_rate" unit nat { CDR ; CAR ; GET 46 } ;
525
  view "get_collecting_period" unit nat { CDR ; CAR ; GET 45 } ;
526
  view "get_cumulative_prices" (list nat)
527
        (list (pair (nat %request)
528
                   (pair %cumulative_prices (timestamp %last_block_timestamp)
529
                                            (nat %token_a_price_cml)
530
                                            (nat %token_b_price_cml))))
531
        { PUSH nat 1000000000000000000 ;
532
          LAMBDA
533
            (pair nat nat)
534
            nat
535
            { UNPAIR ;
536
              EDIV ;
537
              IF_NONE
538
                { PUSH string "408" ; FAILWITH }
539
                { PUSH nat 0 ;
540
                  DUP 2 ;
541
                  CDR ;
542
                  COMPARE ;
543
                  GT ;
544
                  IF { PUSH nat 1 ; SWAP ; CAR ; ADD } { CAR } } } ;
545
          DIG 2 ;
546
          UNPAIR ;
547
          NIL (pair nat (pair timestamp nat nat)) ;
548
          SWAP ;
549
          ITER { SWAP ;
550
                 DUP 3 ;
551
                 CAR ;
552
                 GET 11 ;
553
                 DUP 3 ;
554
                 GET ;
555
                 IF_NONE { PUSH string "108" ; FAILWITH } {} ;
556
                 DUP 6 ;
557
                 DUP 2 ;
558
                 GET 7 ;
559
                 PAIR ;
560
                 DUP 6 ;
561
                 SWAP ;
562
                 EXEC ;
563
                 DUP 7 ;
564
                 DUP 3 ;
565
                 GET 5 ;
566
                 PAIR ;
567
                 DUP 7 ;
568
                 SWAP ;
569
                 EXEC ;
570
                 DIG 2 ;
571
                 GET 11 ;
572
                 PAIR 3 ;
573
                 DIG 2 ;
574
                 PAIR ;
575
                 CONS } ;
576
          SWAP ;
577
          DIG 2 ;
578
          DIG 3 ;
579
          DROP 3 } ;
580
  view "get_toks_per_share" (list (pair (nat %pair_id) (nat %shares_amt)))
581
        (list (pair (pair %request (nat %pair_id) (nat %shares_amt))
582
                   (pair %tokens_per_share (nat %token_a_amt) (nat %token_b_amt))))
583
        { UNPAIR ;
584
          NIL (pair (pair nat nat) (pair nat nat)) ;
585
          SWAP ;
586
          ITER { SWAP ;
587
                 DUP 3 ;
588
                 CAR ;
589
                 GET 11 ;
590
                 DUP 3 ;
591
                 CAR ;
592
                 GET ;
593
                 IF_NONE { PUSH string "108" ; FAILWITH } {} ;
594
                 PUSH string "109" ;
595
                 PUSH nat 0 ;
596
                 DUP 3 ;
597
                 GET 3 ;
598
                 DUP 4 ;
599
                 CAR ;
600
                 MUL ;
601
                 COMPARE ;
602
                 NEQ ;
603
                 IF { DROP } { FAILWITH } ;
604
                 DUP ;
605
                 GET 9 ;
606
                 DUP 2 ;
607
                 GET 3 ;
608
                 DUP 5 ;
609
                 CDR ;
610
                 MUL ;
611
                 EDIV ;
612
                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
613
                 CAR ;
614
                 DUP 2 ;
615
                 GET 9 ;
616
                 DIG 2 ;
617
                 CAR ;
618
                 DUP 5 ;
619
                 CDR ;
620
                 MUL ;
621
                 EDIV ;
622
                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
623
                 CAR ;
624
                 PAIR ;
625
                 DIG 2 ;
626
                 PAIR ;
627
                 CONS } ;
628
          SWAP ;
629
          DROP } ;
630
  view "get_swap_min_res"
631
        (pair
632
          (list %swaps (pair (or %direction (unit %a_to_b) (unit %b_to_a)) (nat %pair_id)))
633
          (nat %amount_in))
634
        nat
635
        { PUSH string "108" ;
636
          PUSH string "113" ;
637
          PUSH address "tz1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZNkiRg" ;
638
          PUSH nat 1000000000000000000 ;
639
          LAMBDA
640
            (pair nat nat)
641
            nat
642
            { UNPAIR ;
643
              EDIV ;
644
              IF_NONE
645
                { PUSH string "408" ; FAILWITH }
646
                { PUSH nat 0 ;
647
                  DUP 2 ;
648
                  CDR ;
649
                  COMPARE ;
650
                  GT ;
651
                  IF { PUSH nat 1 ; SWAP ; CAR ; ADD } { CAR } } } ;
652
          DIG 5 ;
653
          UNPAIR ;
654
          DUP ;
655
          CAR ;
656
          IF_CONS { SWAP ; DROP ; SOME } { NONE (pair (or unit unit) nat) } ;
657
          IF_NONE { PUSH string "117" ; FAILWITH } {} ;
658
          DUP 3 ;
659
          CAR ;
660
          GET 7 ;
661
          DUP 2 ;
662
          CDR ;
663
          GET ;
664
          IF_NONE { DUP 8 ; FAILWITH } {} ;
665
          PUSH nat 0 ;
666
          DUP 4 ;
667
          CDR ;
668
          NONE address ;
669
          DUP 10 ;
670
          DIG 10 ;
671
          DIG 6 ;
672
          CAR ;
673
          IF_LEFT { DROP ; DIG 5 ; CAR } { DROP ; DIG 5 ; CDR } ;
674
          NIL (pair address address nat) ;
675
          DIG 8 ;
676
          CAR ;
677
          PAIR 8 ;
678
          SWAP ;
679
          CAR ;
680
          ITER { SWAP ;
681
                 DUP ;
682
                 CAR ;
683
                 GET 11 ;
684
                 DUP 3 ;
685
                 CDR ;
686
                 GET ;
687
                 IF_NONE { DUP 6 ; FAILWITH } {} ;
688
                 PUSH string "109" ;
689
                 PUSH nat 0 ;
690
                 DUP 3 ;
691
                 GET 3 ;
692
                 DUP 4 ;
693
                 CAR ;
694
                 MUL ;
695
                 COMPARE ;
696
                 NEQ ;
697
                 IF { DROP } { FAILWITH } ;
698
                 PUSH string "118" ;
699
                 PUSH nat 0 ;
700
                 DUP 4 ;
701
                 GET 13 ;
702
                 COMPARE ;
703
                 NEQ ;
704
                 IF { DROP } { FAILWITH } ;
705
                 DUP 2 ;
706
                 CAR ;
707
                 GET 7 ;
708
                 DUP 4 ;
709
                 CDR ;
710
                 GET ;
711
                 IF_NONE { DUP 7 ; FAILWITH } {} ;
712
                 DUP ;
713
                 CAR ;
714
                 DUP 3 ;
715
                 CAR ;
716
                 PAIR ;
717
                 SWAP ;
718
                 CDR ;
719
                 DUP 3 ;
720
                 GET 3 ;
721
                 PAIR ;
722
                 DUP 5 ;
723
                 CAR ;
724
                 IF_LEFT { DROP ; SWAP } { DROP } ;
725
                 SWAP ;
726
                 PAIR ;
727
                 PUSH string "119" ;
728
                 DUP 4 ;
729
                 GET 5 ;
730
                 DUP 3 ;
731
                 CDR ;
732
                 CDR ;
733
                 COMPARE ;
734
                 EQ ;
735
                 IF { DROP } { FAILWITH } ;
736
                 DUP 3 ;
737
                 CAR ;
738
                 GET 25 ;
739
                 DUP ;
740
                 GET 5 ;
741
                 DUP 2 ;
742
                 GET 3 ;
743
                 DUP 3 ;
744
                 CAR ;
745
                 ADD ;
746
                 ADD ;
747
                 DUP 8 ;
748
                 SUB ;
749
                 ISNAT ;
750
                 IF_NONE { PUSH string "406" ; FAILWITH } {} ;
751
                 DUP 5 ;
752
                 GET 13 ;
753
                 MUL ;
754
                 DUP 3 ;
755
                 CAR ;
756
                 CAR ;
757
                 DUP 2 ;
758
                 MUL ;
759
                 DUP 2 ;
760
                 DUP 10 ;
761
                 DUP 6 ;
762
                 CDR ;
763
                 CAR ;
764
                 MUL ;
765
                 ADD ;
766
                 SWAP ;
767
                 EDIV ;
768
                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
769
                 CAR ;
770
                 DUP 3 ;
771
                 CAR ;
772
                 DUP 7 ;
773
                 GET 13 ;
774
                 MUL ;
775
                 DUP 10 ;
776
                 DIG 4 ;
777
                 GET 3 ;
778
                 DUP 8 ;
779
                 GET 13 ;
780
                 MUL ;
781
                 DIG 4 ;
782
                 ADD ;
783
                 EDIV ;
784
                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
785
                 CAR ;
786
                 DUP 2 ;
787
                 DUP 10 ;
788
                 DUP 3 ;
789
                 MUL ;
790
                 DUP 11 ;
791
                 DUP 9 ;
792
                 GET 13 ;
793
                 MUL ;
794
                 SUB ;
795
                 SUB ;
796
                 ISNAT ;
797
                 IF_NONE { PUSH string "406" ; FAILWITH } {} ;
798
                 DUP 7 ;
799
                 DUP 9 ;
800
                 CDR ;
801
                 DUP 9 ;
802
                 CAR ;
803
                 DUP 10 ;
804
                 GET 9 ;
805
                 DIG 10 ;
806
                 GET 5 ;
807
                 UNIT ;
808
                 RIGHT (or address (pair address nat)) ;
809
                 DUP 2 ;
810
                 COMPARE ;
811
                 EQ ;
812
                 IF
813
                   { DROP ;
814
                     DUP 2 ;
815
                     DUP 3 ;
816
                     GET 17 ;
817
                     DIG 8 ;
818
                     DIG 4 ;
819
                     GET 17 ;
820
                     DUP 5 ;
821
                     DUP 7 ;
822
                     PAIR ;
823
                     GET ;
824
                     IF_NONE { PUSH nat 0 } {} ;
825
                     ADD ;
826
                     DIG 3 ;
827
                     DUP 5 ;
828
                     PAIR ;
829
                     SWAP ;
830
                     SOME ;
831
                     SWAP ;
832
                     UPDATE ;
833
                     UPDATE 17 ;
834
                     DUP ;
835
                     DUP 2 ;
836
                     GET 21 ;
837
                     DIG 5 ;
838
                     DIG 3 ;
839
                     GET 21 ;
840
                     DUP 5 ;
841
                     GET ;
842
                     IF_NONE { PUSH nat 0 } {} ;
843
                     ADD ;
844
                     DIG 3 ;
845
                     SWAP ;
846
                     SOME ;
847
                     SWAP ;
848
                     UPDATE ;
849
                     UPDATE 21 }
850
                   { DIG 3 ;
851
                     DROP ;
852
                     DUP 3 ;
853
                     DUP 4 ;
854
                     GET 15 ;
855
                     DIG 8 ;
856
                     DIG 5 ;
857
                     GET 15 ;
858
                     DUP 6 ;
859
                     DUP 6 ;
860
                     PAIR ;
861
                     GET ;
862
                     IF_NONE { PUSH nat 0 } {} ;
863
                     ADD ;
864
                     DIG 4 ;
865
                     DUP 5 ;
866
                     PAIR ;
867
                     SWAP ;
868
                     SOME ;
869
                     SWAP ;
870
                     UPDATE ;
871
                     UPDATE 15 ;
872
                     DUP ;
873
                     DUP 2 ;
874
                     GET 19 ;
875
                     DIG 5 ;
876
                     DIG 3 ;
877
                     GET 19 ;
878
                     DUP 5 ;
879
                     GET ;
880
                     IF_NONE { PUSH nat 0 } {} ;
881
                     ADD ;
882
                     DIG 3 ;
883
                     SWAP ;
884
                     SOME ;
885
                     SWAP ;
886
                     UPDATE ;
887
                     UPDATE 19 } ;
888
                 UPDATE 1 ;
889
                 PUSH nat 0 ;
890
                 DUP 2 ;
891
                 GET 14 ;
892
                 COMPARE ;
893
                 GT ;
894
                 UNIT ;
895
                 RIGHT (or address (pair address nat)) ;
896
                 DUP 3 ;
897
                 GET 5 ;
898
                 COMPARE ;
899
                 EQ ;
900
                 AND ;
901
                 IF
902
                   { DUP ;
903
                     GET 13 ;
904
                     DUP 6 ;
905
                     GET 12 ;
906
                     IF_NONE { DUP 10 ; FAILWITH } {} ;
907
                     DUP 3 ;
908
                     GET 11 ;
909
                     IF_NONE { DUP 11 ; FAILWITH } {} ;
910
                     PAIR 3 ;
911
                     UNIT ;
912
                     DUP 3 ;
913
                     DIG 3 ;
914
                     GET 3 ;
915
                     DIG 3 ;
916
                     CONS ;
917
                     UPDATE 3 }
918
                   { UNIT ; SWAP } ;
919
                 SWAP ;
920
                 DROP ;
921
                 DUP 4 ;
922
                 DUP 5 ;
923
                 CAR ;
924
                 DUP 5 ;
925
                 DUP 7 ;
926
                 CAR ;
927
                 CAR ;
928
                 SUB ;
929
                 ISNAT ;
930
                 IF_NONE { PUSH string "406" ; FAILWITH } {} ;
931
                 UPDATE 1 ;
932
                 UPDATE 1 ;
933
                 DUP ;
934
                 DUP 2 ;
935
                 CDR ;
936
                 DIG 4 ;
937
                 DIG 3 ;
938
                 CDR ;
939
                 CAR ;
940
                 ADD ;
941
                 UPDATE 1 ;
942
                 UPDATE 2 ;
943
                 SWAP ;
944
                 UNIT ;
945
                 RIGHT (or address (pair address nat)) ;
946
                 DIG 4 ;
947
                 CAR ;
948
                 CDR ;
949
                 COMPARE ;
950
                 EQ ;
951
                 IF { DUP 4 ; GET 12 } { NONE address } ;
952
                 UPDATE 11 ;
953
                 DIG 2 ;
954
                 UPDATE 13 ;
955
                 DUP 2 ;
956
                 CAR ;
957
                 CDR ;
958
                 UPDATE 5 ;
959
                 DUP 2 ;
960
                 CAR ;
961
                 CAR ;
962
                 DIG 2 ;
963
                 CDR ;
964
                 CAR ;
965
                 DUP 5 ;
966
                 CAR ;
967
                 IF_LEFT
968
                   { DROP ; DUP 4 ; SWAP ; UPDATE 1 ; SWAP ; UPDATE 3 }
969
                   { DROP ; DUP 4 ; DIG 2 ; UPDATE 1 ; SWAP ; UPDATE 3 } ;
970
                 DUP 2 ;
971
                 DUP 3 ;
972
                 CAR ;
973
                 DIG 3 ;
974
                 CAR ;
975
                 GET 11 ;
976
                 DUP 5 ;
977
                 GET 11 ;
978
                 NOW ;
979
                 SUB ;
980
                 ISNAT ;
981
                 IF_NONE { PUSH string "406" ; FAILWITH } {} ;
982
                 PUSH nat 0 ;
983
                 DUP 7 ;
984
                 GET 3 ;
985
                 COMPARE ;
986
                 GT ;
987
                 PUSH nat 0 ;
988
                 DUP 8 ;
989
                 CAR ;
990
                 COMPARE ;
991
                 GT ;
992
                 PUSH nat 0 ;
993
                 DUP 4 ;
994
                 COMPARE ;
995
                 GT ;
996
                 AND ;
997
                 AND ;
998
                 IF
999
                   { DUP 6 ;
1000
                     DUP 2 ;
1001
                     DUP 8 ;
1002
                     CAR ;
1003
                     DUP 12 ;
1004
                     DUP 10 ;
1005
                     GET 3 ;
1006
                     MUL ;
1007
                     PAIR ;
1008
                     DUP 11 ;
1009
                     SWAP ;
1010
                     EXEC ;
1011
                     MUL ;
1012
                     DIG 7 ;
1013
                     GET 5 ;
1014
                     ADD ;
1015
                     UPDATE 5 ;
1016
                     DUP ;
1017
                     DIG 2 ;
1018
                     DUP 3 ;
1019
                     GET 3 ;
1020
                     DUP 11 ;
1021
                     DUP 5 ;
1022
                     CAR ;
1023
                     MUL ;
1024
                     PAIR ;
1025
                     DUP 10 ;
1026
                     SWAP ;
1027
                     EXEC ;
1028
                     MUL ;
1029
                     DIG 2 ;
1030
                     GET 7 ;
1031
                     ADD ;
1032
                     UPDATE 7 ;
1033
                     UNIT ;
1034
                     SWAP }
1035
                   { DROP ; UNIT ; DIG 5 } ;
1036
                 SWAP ;
1037
                 DROP ;
1038
                 DUP 5 ;
1039
                 CAR ;
1040
                 UPDATE 1 ;
1041
                 DIG 4 ;
1042
                 GET 3 ;
1043
                 UPDATE 3 ;
1044
                 NOW ;
1045
                 UPDATE 11 ;
1046
                 DIG 4 ;
1047
                 CDR ;
1048
                 SWAP ;
1049
                 SOME ;
1050
                 SWAP ;
1051
                 UPDATE ;
1052
                 UPDATE 11 ;
1053
                 UPDATE 1 ;
1054
                 DUP ;
1055
                 PUSH nat 1 ;
1056
                 DIG 2 ;
1057
                 GET 14 ;
1058
                 ADD ;
1059
                 UPDATE 14 } ;
1060
          SWAP ;
1061
          DIG 2 ;
1062
          DIG 3 ;
1063
          DIG 4 ;
1064
          DROP 4 ;
1065
          GET 13 } ;
1066
  view "get_total_supply" (list nat) (list (pair (nat %request) (nat %total_supply)))
1067
        { UNPAIR ;
1068
          NIL (pair nat nat) ;
1069
          SWAP ;
1070
          ITER { SWAP ;
1071
                 DUP 3 ;
1072
                 CAR ;
1073
                 GET 11 ;
1074
                 DUP 3 ;
1075
                 GET ;
1076
                 IF_NONE { PUSH string "108" ; FAILWITH } {} ;
1077
                 GET 9 ;
1078
                 DIG 2 ;
1079
                 PAIR ;
1080
                 CONS } ;
1081
          SWAP ;
1082
          DROP } ;
1083
  view "get_reserves" (list nat)
1084
        (list (pair (nat %request)
1085
                   (pair %reserves (nat %token_a_pool) (nat %token_b_pool))))
1086
        { UNPAIR ;
1087
          NIL (pair nat (pair nat nat)) ;
1088
          SWAP ;
1089
          ITER { SWAP ;
1090
                 DUP 3 ;
1091
                 CAR ;
1092
                 GET 11 ;
1093
                 DUP 3 ;
1094
                 GET ;
1095
                 IF_NONE { PUSH string "108" ; FAILWITH } {} ;
1096
                 SWAP ;
1097
                 DUP 2 ;
1098
                 GET 3 ;
1099
                 DIG 2 ;
1100
                 CAR ;
1101
                 PAIR ;
1102
                 DIG 2 ;
1103
                 PAIR ;
1104
                 CONS } ;
1105
          SWAP ;
1106
          DROP } ;
1107
  view "check_is_banned_baker" (pair (nat %pair_id) (key_hash %baker)) bool
1108
        { UNPAIR ;
1109
          SWAP ;
1110
          CAR ;
1111
          GET 11 ;
1112
          DUP 2 ;
1113
          CAR ;
1114
          GET ;
1115
          IF_NONE { PUSH string "108" ; FAILWITH } {} ;
1116
          GET 12 ;
1117
          IF_NONE { PUSH string "113" ; FAILWITH } {} ;
1118
          PUSH string "125" ;
1119
          SWAP ;
1120
          DIG 2 ;
1121
          CDR ;
1122
          VIEW "is_banned_baker" bool ;
1123
          IF_NONE { FAILWITH } { SWAP ; DROP } } }