BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Youves Exchange On Demand Oracle
operations (3)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
352
 
1
{ parameter (or
2
              (or (address %propose_administrator)
3
                  (or (address %remove_administrator) (unit %set_administrator)))
4
              (or
5
                (or
6
                  (list %set_aggregation_path (pair (address %oracle)
7
                                                   (pair (option %symbol string)
8
                                                         (pair
9
                                                           (option %validity_in_seconds int)
10
                                                           (pair
11
                                                             (nat %price_precision_factor)
12
                                                             (bool %reverse))))))
13
                  (nat %set_dst_token_precision_factor))
14
                (or (nat %set_price_precision_factor)
15
                    (nat %set_src_token_precision_factor)))) ;
16
  storage (pair
17
            (pair (big_map %administrators address nat)
18
                  (pair
19
                    (list %aggregation_path (pair (address %oracle)
20
                                                 (pair (option %symbol string)
21
                                                       (pair
22
                                                         (option %validity_in_seconds int)
23
                                                         (pair
24
                                                           (nat %price_precision_factor)
25
                                                           (bool %reverse))))))
26
                    (nat %dst_token_precision_factor)))
27
            (pair (pair (big_map %metadata string bytes) (nat %price_precision_factor))
28
                  (pair (pair %slippage_ratio (nat %numerator) (nat %denominator))
29
                        (nat %src_token_precision_factor)))) ;
30
  code { LAMBDA
31
           (pair unit
32
                 (pair
33
                   (pair (big_map address nat)
34
                         (pair
35
                           (list (pair address
36
                                      (pair (option string)
37
                                            (pair (option int) (pair nat bool)))))
38
                           nat))
39
                   (pair (pair (big_map string bytes) nat) (pair (pair nat nat) nat))))
40
           (pair unit
41
                 (pair
42
                   (pair (big_map address nat)
43
                         (pair
44
                           (list (pair address
45
                                      (pair (option string)
46
                                            (pair (option int) (pair nat bool)))))
47
                           nat))
48
                   (pair (pair (big_map string bytes) nat) (pair (pair nat nat) nat))))
49
           { CDR ;
50
             PUSH nat 1 ;
51
             DUP 2 ;
52
             CAR ;
53
             CAR ;
54
             SENDER ;
55
             GET ;
56
             IF_NONE { PUSH int 21 ; FAILWITH } {} ;
57
             COMPARE ;
58
             EQ ;
59
             IF {} { PUSH int 401 ; FAILWITH } ;
60
             UNIT ;
61
             PAIR } ;
62
         SWAP ;
63
         UNPAIR ;
64
         IF_LEFT
65
           { IF_LEFT
66
               { AMOUNT ;
67
                 PUSH mutez 0 ;
68
                 COMPARE ;
69
                 EQ ;
70
                 IF {} { AMOUNT ; FAILWITH } ;
71
                 DIG 2 ;
72
                 UNIT ;
73
                 SWAP ;
74
                 DIG 3 ;
75
                 DIG 2 ;
76
                 PAIR ;
77
                 EXEC ;
78
                 CDR ;
79
                 UNPAIR ;
80
                 UNPAIR ;
81
                 PUSH (option nat) (Some 0) ;
82
                 DIG 4 ;
83
                 UPDATE ;
84
                 PAIR ;
85
                 PAIR }
86
               { IF_LEFT
87
                   { AMOUNT ;
88
                     PUSH mutez 0 ;
89
                     COMPARE ;
90
                     EQ ;
91
                     IF {} { AMOUNT ; FAILWITH } ;
92
                     DIG 2 ;
93
                     UNIT ;
94
                     SWAP ;
95
                     DIG 3 ;
96
                     DIG 2 ;
97
                     PAIR ;
98
                     EXEC ;
99
                     CDR ;
100
                     UNPAIR ;
101
                     UNPAIR ;
102
                     NONE nat ;
103
                     DIG 4 ;
104
                     UPDATE ;
105
                     PAIR ;
106
                     PAIR }
107
                   { DROP ;
108
                     SWAP ;
109
                     DROP ;
110
                     AMOUNT ;
111
                     PUSH mutez 0 ;
112
                     COMPARE ;
113
                     EQ ;
114
                     IF {} { AMOUNT ; FAILWITH } ;
115
                     PUSH nat 0 ;
116
                     DUP 2 ;
117
                     CAR ;
118
                     CAR ;
119
                     SENDER ;
120
                     GET ;
121
                     IF_NONE { PUSH int 46 ; FAILWITH } {} ;
122
                     COMPARE ;
123
                     EQ ;
124
                     IF {} { PUSH int 405 ; FAILWITH } ;
125
                     UNPAIR ;
126
                     UNPAIR ;
127
                     PUSH (option nat) (Some 1) ;
128
                     SENDER ;
129
                     UPDATE ;
130
                     PAIR ;
131
                     PAIR } } }
132
           { IF_LEFT
133
               { IF_LEFT
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
                     UNPAIR ;
148
                     UNPAIR ;
149
                     SWAP ;
150
                     CDR ;
151
                     DIG 3 ;
152
                     PAIR ;
153
                     SWAP ;
154
                     PAIR ;
155
                     PAIR }
156
                   { AMOUNT ;
157
                     PUSH mutez 0 ;
158
                     COMPARE ;
159
                     EQ ;
160
                     IF {} { AMOUNT ; FAILWITH } ;
161
                     DIG 2 ;
162
                     UNIT ;
163
                     SWAP ;
164
                     DIG 3 ;
165
                     DIG 2 ;
166
                     PAIR ;
167
                     EXEC ;
168
                     CDR ;
169
                     UNPAIR ;
170
                     UNPAIR ;
171
                     SWAP ;
172
                     CAR ;
173
                     DIG 3 ;
174
                     SWAP ;
175
                     PAIR ;
176
                     SWAP ;
177
                     PAIR ;
178
                     PAIR } }
179
               { IF_LEFT
180
                   { AMOUNT ;
181
                     PUSH mutez 0 ;
182
                     COMPARE ;
183
                     EQ ;
184
                     IF {} { AMOUNT ; FAILWITH } ;
185
                     DIG 2 ;
186
                     UNIT ;
187
                     SWAP ;
188
                     DIG 3 ;
189
                     DIG 2 ;
190
                     PAIR ;
191
                     EXEC ;
192
                     CDR ;
193
                     UNPAIR ;
194
                     SWAP ;
195
                     UNPAIR ;
196
                     CAR ;
197
                     DIG 3 ;
198
                     SWAP ;
199
                     PAIR ;
200
                     PAIR ;
201
                     SWAP ;
202
                     PAIR }
203
                   { AMOUNT ;
204
                     PUSH mutez 0 ;
205
                     COMPARE ;
206
                     EQ ;
207
                     IF {} { AMOUNT ; FAILWITH } ;
208
                     DIG 2 ;
209
                     UNIT ;
210
                     SWAP ;
211
                     DIG 3 ;
212
                     DIG 2 ;
213
                     PAIR ;
214
                     EXEC ;
215
                     CDR ;
216
                     SWAP ;
217
                     UPDATE 6 } } } ;
218
         NIL operation ;
219
         PAIR } ;
220
  view "get_min_out" nat nat
221
        { UNPAIR ;
222
          SELF_ADDRESS ;
223
          UNIT ;
224
          VIEW "get_price" nat ;
225
          IF_NONE { PUSH string "InvalidView: get_price" ; FAILWITH } {} ;
226
          DUP 3 ;
227
          GET 5 ;
228
          CDR ;
229
          DUP 4 ;
230
          GET 3 ;
231
          CDR ;
232
          DUP 5 ;
233
          GET 6 ;
234
          MUL ;
235
          MUL ;
236
          DUP 4 ;
237
          GET 5 ;
238
          CAR ;
239
          DIG 2 ;
240
          DIG 4 ;
241
          CAR ;
242
          GET 4 ;
243
          DIG 4 ;
244
          MUL ;
245
          MUL ;
246
          MUL ;
247
          EDIV ;
248
          IF_NONE { PUSH int 317 ; FAILWITH } { CAR } } ;
249
  view "get_price" unit nat
250
        { UNPAIR ;
251
          DUP 2 ;
252
          GET 3 ;
253
          CDR ;
254
          DUP 3 ;
255
          CAR ;
256
          GET 3 ;
257
          ITER { DUP ;
258
                 GET 3 ;
259
                 IF_NONE
260
                   { DUP ;
261
                     CAR ;
262
                     UNIT ;
263
                     VIEW "get_price" nat ;
264
                     IF_NONE { PUSH string "Invalid view: get_price" ; FAILWITH } {} ;
265
                     DUP 2 ;
266
                     GET 7 ;
267
                     DUP 6 ;
268
                     GET 3 ;
269
                     CDR ;
270
                     DIG 2 ;
271
                     MUL ;
272
                     EDIV ;
273
                     IF_NONE { PUSH int 296 ; FAILWITH } { CAR } }
274
                   { DROP ;
275
                     DUP ;
276
                     GET 5 ;
277
                     IF_NONE
278
                       { DUP ;
279
                         CAR ;
280
                         DUP 2 ;
281
                         GET 3 ;
282
                         IF_NONE { PUSH int 263 ; FAILWITH } {} ;
283
                         VIEW "get_price" nat ;
284
                         IF_NONE
285
                           { PUSH string "Invalid view: get_price" ; FAILWITH }
286
                           {} ;
287
                         DUP 2 ;
288
                         GET 7 ;
289
                         DUP 6 ;
290
                         GET 3 ;
291
                         CDR ;
292
                         DIG 2 ;
293
                         MUL ;
294
                         EDIV ;
295
                         IF_NONE { PUSH int 287 ; FAILWITH } { CAR } }
296
                       { DROP ;
297
                         DUP ;
298
                         CAR ;
299
                         DUP 2 ;
300
                         GET 3 ;
301
                         IF_NONE { PUSH int 263 ; FAILWITH } {} ;
302
                         VIEW "get_price_with_timestamp"
303
                               (pair (nat %price) (timestamp %last_update_timestamp)) ;
304
                         IF_NONE
305
                           { PUSH string "Invalid view: get_price_with_timestamp" ;
306
                             FAILWITH }
307
                           {} ;
308
                         DUP 2 ;
309
                         GET 5 ;
310
                         IF_NONE { PUSH int 270 ; FAILWITH } {} ;
311
                         DUP 2 ;
312
                         CDR ;
313
                         ADD ;
314
                         NOW ;
315
                         COMPARE ;
316
                         LE ;
317
                         IF {} { PUSH string "PriceTooOld" ; FAILWITH } ;
318
                         DUP 2 ;
319
                         GET 7 ;
320
                         DUP 6 ;
321
                         GET 3 ;
322
                         CDR ;
323
                         DIG 2 ;
324
                         CAR ;
325
                         MUL ;
326
                         EDIV ;
327
                         IF_NONE { PUSH int 277 ; FAILWITH } { CAR } } } ;
328
                 PUSH bool True ;
329
                 DIG 2 ;
330
                 GET 8 ;
331
                 COMPARE ;
332
                 EQ ;
333
                 IF
334
                   { DUP 4 ;
335
                     GET 3 ;
336
                     CDR ;
337
                     DIG 2 ;
338
                     MUL ;
339
                     EDIV ;
340
                     IF_NONE { PUSH int 302 ; FAILWITH } { CAR } }
341
                   { DUP 4 ;
342
                     GET 3 ;
343
                     CDR ;
344
                     SWAP ;
345
                     DIG 2 ;
346
                     MUL ;
347
                     EDIV ;
348
                     IF_NONE { PUSH int 304 ; FAILWITH } { CAR } } } ;
349
          SWAP ;
350
          DROP ;
351
          SWAP ;
352
          DROP } }