BCD

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