BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Ubinetic uUSD/YOU Oracle
operations (167K)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
292
 
1
{ parameter (or (or (contract %get_price nat) (unit %internal_observe_price))
2
                (or (unit %observe_price) (pair %set_reserves nat nat))) ;
3
  storage (pair
4
            (pair
5
              (pair (address %dex_contract)
6
                    (pair (nat %fee_denominator) (nat %fee_numerator)))
7
              (pair (nat %max_observation_age)
8
                    (pair (nat %median_price) (nat %min_obeservation_age))))
9
            (pair
10
              (pair (map %prices timestamp nat)
11
                    (pair (nat %required_observation_count) (nat %tmp_price)))
12
              (pair (pair (address %token_1_address) (nat %token_1_id))
13
                    (pair (address %token_2_address) (nat %token_2_id))))) ;
14
  code { LAMBDA
15
           unit
16
           unit
17
           { DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ;
18
         SWAP ;
19
         UNPAIR ;
20
         IF_LEFT
21
           { IF_LEFT
22
               { DIG 2 ;
23
                 DROP ;
24
                 NIL operation ;
25
                 SWAP ;
26
                 PUSH mutez 0 ;
27
                 SELF_ADDRESS ;
28
                 UNIT ;
29
                 VIEW "view_price" nat ;
30
                 IF_NONE { PUSH int 502 ; FAILWITH } {} ;
31
                 TRANSFER_TOKENS ;
32
                 CONS }
33
               { DUP 3 ;
34
                 UNIT ;
35
                 EXEC ;
36
                 NIL timestamp ;
37
                 DUP 4 ;
38
                 GET 3 ;
39
                 CAR ;
40
                 ITER { CAR ; CONS } ;
41
                 NIL timestamp ;
42
                 SWAP ;
43
                 ITER { CONS } ;
44
                 NIL timestamp ;
45
                 SWAP ;
46
                 ITER { CONS } ;
47
                 IF_CONS
48
                   { SWAP ;
49
                     DROP ;
50
                     NOW ;
51
                     DUP 5 ;
52
                     CAR ;
53
                     GET 6 ;
54
                     INT ;
55
                     DIG 2 ;
56
                     ADD ;
57
                     COMPARE ;
58
                     LT ;
59
                     IF {} { PUSH int 903 ; FAILWITH } }
60
                   {} ;
61
                 DUP 3 ;
62
                 UNPAIR ;
63
                 SWAP ;
64
                 UNPAIR ;
65
                 UNPAIR ;
66
                 DIG 6 ;
67
                 GET 3 ;
68
                 GET 4 ;
69
                 SOME ;
70
                 NOW ;
71
                 UPDATE ;
72
                 PAIR ;
73
                 PAIR ;
74
                 SWAP ;
75
                 PAIR ;
76
                 DUG 2 ;
77
                 EMPTY_MAP nat nat ;
78
                 DUP 4 ;
79
                 GET 3 ;
80
                 CAR ;
81
                 ITER { NOW ;
82
                        DUP 6 ;
83
                        CAR ;
84
                        GET 3 ;
85
                        INT ;
86
                        DUP 3 ;
87
                        CAR ;
88
                        ADD ;
89
                        COMPARE ;
90
                        GT ;
91
                        IF
92
                          { SWAP ;
93
                            DUP ;
94
                            DUG 2 ;
95
                            SWAP ;
96
                            DUP ;
97
                            DUG 2 ;
98
                            CDR ;
99
                            MEM ;
100
                            IF
101
                              {}
102
                              { SWAP ; PUSH (option nat) (Some 0) ; DUP 3 ; CDR ; UPDATE ; SWAP } ;
103
                            SWAP ;
104
                            DUP ;
105
                            DIG 2 ;
106
                            CDR ;
107
                            DUP ;
108
                            DUG 2 ;
109
                            GET ;
110
                            IF_NONE { PUSH int 98 ; FAILWITH } {} ;
111
                            PUSH nat 1 ;
112
                            ADD ;
113
                            SOME ;
114
                            SWAP ;
115
                            UPDATE }
116
                          { DIG 4 ;
117
                            UNPAIR ;
118
                            SWAP ;
119
                            UNPAIR ;
120
                            UNPAIR ;
121
                            NONE nat ;
122
                            DIG 5 ;
123
                            CAR ;
124
                            UPDATE ;
125
                            PAIR ;
126
                            PAIR ;
127
                            SWAP ;
128
                            PAIR ;
129
                            DUG 3 } } ;
130
                 PUSH nat 0 ;
131
                 PUSH nat 0 ;
132
                 DUP 6 ;
133
                 GET 3 ;
134
                 CAR ;
135
                 SIZE ;
136
                 DUP 4 ;
137
                 ITER { PUSH nat 2 ;
138
                        DUP 3 ;
139
                        EDIV ;
140
                        IF_NONE { PUSH int 107 ; FAILWITH } { CAR } ;
141
                        DUP 4 ;
142
                        COMPARE ;
143
                        LE ;
144
                        IF
145
                          { DIG 3 ; DROP ; DUP ; CAR ; DUG 3 ; CDR ; DIG 2 ; ADD ; SWAP }
146
                          { DROP } } ;
147
                 SWAP ;
148
                 DROP ;
149
                 DUP 6 ;
150
                 GET 3 ;
151
                 GET 3 ;
152
                 SWAP ;
153
                 COMPARE ;
154
                 GE ;
155
                 IF
156
                   { SWAP ;
157
                     DROP ;
158
                     SWAP ;
159
                     DROP ;
160
                     SWAP ;
161
                     DROP ;
162
                     DIG 2 ;
163
                     DROP ;
164
                     SWAP ;
165
                     UNPAIR ;
166
                     UNPAIR ;
167
                     SWAP ;
168
                     UNPAIR ;
169
                     SWAP ;
170
                     CDR ;
171
                     DIG 4 ;
172
                     PAIR ;
173
                     SWAP ;
174
                     PAIR ;
175
                     SWAP ;
176
                     PAIR ;
177
                     PAIR }
178
                   { DROP 4 ;
179
                     SWAP ;
180
                     DROP ;
181
                     UNPAIR ;
182
                     UNPAIR ;
183
                     SWAP ;
184
                     UNPAIR ;
185
                     SWAP ;
186
                     CDR ;
187
                     PUSH nat 0 ;
188
                     PAIR ;
189
                     SWAP ;
190
                     PAIR ;
191
                     SWAP ;
192
                     PAIR ;
193
                     PAIR } ;
194
                 NIL operation } }
195
           { IF_LEFT
196
               { DROP ;
197
                 SWAP ;
198
                 DROP ;
199
                 DUP ;
200
                 CAR ;
201
                 CAR ;
202
                 CAR ;
203
                 CONTRACT %getReserveBalance (pair
204
                                               (pair (pair address nat)
205
                                                     (pair address nat))
206
                                               (contract (pair nat nat))) ;
207
                 IF_NONE { PUSH int 75 ; FAILWITH } {} ;
208
                 NIL operation ;
209
                 SWAP ;
210
                 PUSH mutez 0 ;
211
                 SELF_ADDRESS ;
212
                 CONTRACT %set_reserves (pair nat nat) ;
213
                 IF_NONE { PUSH int 76 ; FAILWITH } {} ;
214
                 DIG 4 ;
215
                 DUP ;
216
                 GET 8 ;
217
                 SWAP ;
218
                 DUP ;
219
                 DUG 6 ;
220
                 GET 7 ;
221
                 PAIR ;
222
                 DIG 5 ;
223
                 DUP ;
224
                 GET 5 ;
225
                 CDR ;
226
                 SWAP ;
227
                 DUP ;
228
                 DUG 7 ;
229
                 GET 5 ;
230
                 CAR ;
231
                 PAIR ;
232
                 PAIR ;
233
                 PAIR ;
234
                 TRANSFER_TOKENS ;
235
                 CONS ;
236
                 SELF %internal_observe_price ;
237
                 PUSH mutez 0 ;
238
                 UNIT ;
239
                 TRANSFER_TOKENS ;
240
                 CONS }
241
               { DIG 2 ;
242
                 DROP ;
243
                 SWAP ;
244
                 UNPAIR ;
245
                 SWAP ;
246
                 UNPAIR ;
247
                 UNPAIR ;
248
                 SWAP ;
249
                 CAR ;
250
                 DUP 5 ;
251
                 CAR ;
252
                 PUSH nat 1000000 ;
253
                 DIG 6 ;
254
                 CDR ;
255
                 MUL ;
256
                 EDIV ;
257
                 IF_NONE { PUSH int 68 ; FAILWITH } { CAR } ;
258
                 SWAP ;
259
                 PAIR ;
260
                 SWAP ;
261
                 PAIR ;
262
                 PAIR ;
263
                 SWAP ;
264
                 PAIR ;
265
                 NIL operation } } ;
266
         NIL operation ;
267
         SWAP ;
268
         ITER { CONS } ;
269
         PAIR } ;
270
  view "get_min_out" nat nat
271
        { UNPAIR ;
272
          PUSH nat 1000000 ;
273
          DUP 3 ;
274
          CAR ;
275
          CAR ;
276
          GET 3 ;
277
          MUL ;
278
          DIG 2 ;
279
          CAR ;
280
          CAR ;
281
          GET 4 ;
282
          SELF_ADDRESS ;
283
          UNIT ;
284
          VIEW "view_price" nat ;
285
          IF_NONE { PUSH int 502 ; FAILWITH } {} ;
286
          DIG 3 ;
287
          MUL ;
288
          MUL ;
289
          EDIV ;
290
          IF_NONE { PUSH int 137 ; FAILWITH } { CAR } } ;
291
  view "view_price" unit nat
292
        { CDR ; DUP ; CAR ; GET 5 ; PUSH nat 0 ; COMPARE ; NEQ ; IF {} { PUSH int 501 ; FAILWITH } ; CAR ; GET 5 } }