BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1ELHv...2h7R
operations (1)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
196
 
1
{ parameter (or
2
              (or (unit %default)
3
                  (or (address %propose_administrator) (address %remove_administrator)))
4
              (or (unit %set_administrator)
5
                  (or (pair %set_slippage_ratio (nat %numerator) (nat %denominator))
6
                      (list %set_symbol_relation_path (pair (address %oracle)
7
                                                           (pair (string %symbol)
8
                                                                 (bool %inversed))))))) ;
9
  storage (pair (big_map %administrators address int)
10
                (pair (pair %slippage_ratio (nat %numerator) (nat %denominator))
11
                      (list %symbol_relation_path (pair (address %oracle)
12
                                                       (pair (string %symbol)
13
                                                             (bool %inversed)))))) ;
14
  code { LAMBDA
15
           (pair unit
16
                 (pair (big_map address int)
17
                       (pair (pair nat nat) (list (pair address (pair string bool))))))
18
           (pair unit
19
                 (pair (big_map address int)
20
                       (pair (pair nat nat) (list (pair address (pair string bool))))))
21
           { CDR ;
22
             DUP ;
23
             CAR ;
24
             PUSH int 1 ;
25
             SWAP ;
26
             SENDER ;
27
             GET ;
28
             IF_NONE { PUSH int 21 ; FAILWITH } {} ;
29
             COMPARE ;
30
             EQ ;
31
             IF {} { PUSH int 401 ; FAILWITH } ;
32
             UNIT ;
33
             PAIR } ;
34
         SWAP ;
35
         UNPAIR ;
36
         IF_LEFT
37
           { IF_LEFT
38
               { DROP ;
39
                 SWAP ;
40
                 DROP ;
41
                 NIL operation ;
42
                 SENDER ;
43
                 CONTRACT unit ;
44
                 IF_NONE { PUSH int 125 ; FAILWITH } {} ;
45
                 AMOUNT ;
46
                 UNIT ;
47
                 TRANSFER_TOKENS ;
48
                 CONS }
49
               { IF_LEFT
50
                   { AMOUNT ;
51
                     PUSH mutez 0 ;
52
                     COMPARE ;
53
                     EQ ;
54
                     IF {} { AMOUNT ; FAILWITH } ;
55
                     DIG 2 ;
56
                     UNIT ;
57
                     SWAP ;
58
                     DIG 3 ;
59
                     DIG 2 ;
60
                     PAIR ;
61
                     EXEC ;
62
                     CDR ;
63
                     DUP ;
64
                     CAR ;
65
                     PUSH (option int) (Some 0) ;
66
                     DIG 3 ;
67
                     UPDATE ;
68
                     UPDATE 1 }
69
                   { AMOUNT ;
70
                     PUSH mutez 0 ;
71
                     COMPARE ;
72
                     EQ ;
73
                     IF {} { AMOUNT ; FAILWITH } ;
74
                     DIG 2 ;
75
                     UNIT ;
76
                     SWAP ;
77
                     DIG 3 ;
78
                     DIG 2 ;
79
                     PAIR ;
80
                     EXEC ;
81
                     CDR ;
82
                     DUP ;
83
                     CAR ;
84
                     NONE int ;
85
                     DIG 3 ;
86
                     UPDATE ;
87
                     UPDATE 1 } ;
88
                 NIL operation } }
89
           { IF_LEFT
90
               { DROP ;
91
                 SWAP ;
92
                 DROP ;
93
                 AMOUNT ;
94
                 PUSH mutez 0 ;
95
                 COMPARE ;
96
                 EQ ;
97
                 IF {} { AMOUNT ; FAILWITH } ;
98
                 DUP ;
99
                 CAR ;
100
                 PUSH int 0 ;
101
                 SWAP ;
102
                 SENDER ;
103
                 GET ;
104
                 IF_NONE { PUSH int 46 ; FAILWITH } {} ;
105
                 COMPARE ;
106
                 EQ ;
107
                 IF {} { PUSH int 405 ; FAILWITH } ;
108
                 DUP ;
109
                 CAR ;
110
                 PUSH (option int) (Some 1) ;
111
                 SENDER ;
112
                 UPDATE ;
113
                 UPDATE 1 }
114
               { IF_LEFT
115
                   { AMOUNT ;
116
                     PUSH mutez 0 ;
117
                     COMPARE ;
118
                     EQ ;
119
                     IF {} { AMOUNT ; FAILWITH } ;
120
                     DIG 2 ;
121
                     UNIT ;
122
                     SWAP ;
123
                     DIG 3 ;
124
                     DIG 2 ;
125
                     PAIR ;
126
                     EXEC ;
127
                     CDR ;
128
                     SWAP ;
129
                     UPDATE 3 }
130
                   { AMOUNT ;
131
                     PUSH mutez 0 ;
132
                     COMPARE ;
133
                     EQ ;
134
                     IF {} { AMOUNT ; FAILWITH } ;
135
                     DIG 2 ;
136
                     UNIT ;
137
                     SWAP ;
138
                     DIG 3 ;
139
                     DIG 2 ;
140
                     PAIR ;
141
                     EXEC ;
142
                     CDR ;
143
                     SWAP ;
144
                     UPDATE 4 } } ;
145
             NIL operation } ;
146
         PAIR } ;
147
  view "get_min_out" nat nat
148
        { UNPAIR ;
149
          PUSH nat 1000000 ;
150
          DUP 3 ;
151
          GET 4 ;
152
          ITER { DUP ;
153
                 GET 4 ;
154
                 PUSH bool False ;
155
                 COMPARE ;
156
                 EQ ;
157
                 IF
158
                   { PUSH nat 1000000 ;
159
                     SWAP ;
160
                     DUP ;
161
                     CAR ;
162
                     SWAP ;
163
                     GET 3 ;
164
                     VIEW "get_price" nat ;
165
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
166
                     DIG 2 ;
167
                     MUL ;
168
                     EDIV ;
169
                     IF_NONE { PUSH int 150 ; FAILWITH } { CAR } }
170
                   { DUP ;
171
                     CAR ;
172
                     SWAP ;
173
                     GET 3 ;
174
                     VIEW "get_price" nat ;
175
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
176
                     PUSH nat 1000000 ;
177
                     DIG 2 ;
178
                     MUL ;
179
                     EDIV ;
180
                     IF_NONE { PUSH int 152 ; FAILWITH } { CAR } } } ;
181
          DUP 3 ;
182
          GET 3 ;
183
          CDR ;
184
          PUSH nat 1000000000000000000 ;
185
          MUL ;
186
          DIG 3 ;
187
          GET 3 ;
188
          CAR ;
189
          DIG 2 ;
190
          PUSH nat 1000000000000 ;
191
          DIG 4 ;
192
          MUL ;
193
          MUL ;
194
          MUL ;
195
          EDIV ;
196
          IF_NONE { PUSH int 155 ; FAILWITH } { CAR } } }