BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Youves Engine Oracle
operations (1)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
277
 
1
{ parameter (or (or (address %propose_administrator) (address %remove_administrator))
2
                (or (unit %set_administrator)
3
                    (or
4
                      (list %set_aggregation_path (pair (address %oracle)
5
                                                       (pair (option %symbol string)
6
                                                             (pair
7
                                                               (option %validity_in_seconds int)
8
                                                               (pair
9
                                                                 (nat %price_precision_factor)
10
                                                                 (bool %reverse))))))
11
                      (nat %set_price_precision_factor)))) ;
12
  storage (pair
13
            (pair (big_map %administrators address nat)
14
                  (list %aggregation_path (pair (address %oracle)
15
                                               (pair (option %symbol string)
16
                                                     (pair
17
                                                       (option %validity_in_seconds int)
18
                                                       (pair
19
                                                         (nat %price_precision_factor)
20
                                                         (bool %reverse)))))))
21
            (pair (big_map %metadata string bytes) (nat %price_precision_factor))) ;
22
  code { LAMBDA
23
           (pair unit
24
                 (pair
25
                   (pair (big_map address nat)
26
                         (list (pair address
27
                                    (pair (option string)
28
                                          (pair (option int) (pair nat bool))))))
29
                   (pair (big_map string bytes) nat)))
30
           (pair unit
31
                 (pair
32
                   (pair (big_map address nat)
33
                         (list (pair address
34
                                    (pair (option string)
35
                                          (pair (option int) (pair nat bool))))))
36
                   (pair (big_map string bytes) nat)))
37
           { CDR ;
38
             DUP ;
39
             CAR ;
40
             CAR ;
41
             PUSH nat 1 ;
42
             SWAP ;
43
             SENDER ;
44
             GET ;
45
             IF_NONE { PUSH int 21 ; FAILWITH } {} ;
46
             COMPARE ;
47
             EQ ;
48
             IF {} { PUSH int 401 ; FAILWITH } ;
49
             UNIT ;
50
             PAIR } ;
51
         SWAP ;
52
         UNPAIR ;
53
         IF_LEFT
54
           { IF_LEFT
55
               { AMOUNT ;
56
                 PUSH mutez 0 ;
57
                 COMPARE ;
58
                 EQ ;
59
                 IF {} { AMOUNT ; FAILWITH } ;
60
                 DIG 2 ;
61
                 UNIT ;
62
                 SWAP ;
63
                 DIG 3 ;
64
                 DIG 2 ;
65
                 PAIR ;
66
                 EXEC ;
67
                 CDR ;
68
                 UNPAIR ;
69
                 UNPAIR ;
70
                 PUSH (option nat) (Some 0) ;
71
                 DIG 4 ;
72
                 UPDATE ;
73
                 PAIR ;
74
                 PAIR }
75
               { AMOUNT ;
76
                 PUSH mutez 0 ;
77
                 COMPARE ;
78
                 EQ ;
79
                 IF {} { AMOUNT ; FAILWITH } ;
80
                 DIG 2 ;
81
                 UNIT ;
82
                 SWAP ;
83
                 DIG 3 ;
84
                 DIG 2 ;
85
                 PAIR ;
86
                 EXEC ;
87
                 CDR ;
88
                 UNPAIR ;
89
                 UNPAIR ;
90
                 NONE nat ;
91
                 DIG 4 ;
92
                 UPDATE ;
93
                 PAIR ;
94
                 PAIR } }
95
           { IF_LEFT
96
               { DROP ;
97
                 SWAP ;
98
                 DROP ;
99
                 AMOUNT ;
100
                 PUSH mutez 0 ;
101
                 COMPARE ;
102
                 EQ ;
103
                 IF {} { AMOUNT ; FAILWITH } ;
104
                 DUP ;
105
                 CAR ;
106
                 CAR ;
107
                 PUSH nat 0 ;
108
                 SWAP ;
109
                 SENDER ;
110
                 GET ;
111
                 IF_NONE { PUSH int 46 ; FAILWITH } {} ;
112
                 COMPARE ;
113
                 EQ ;
114
                 IF {} { PUSH int 405 ; FAILWITH } ;
115
                 UNPAIR ;
116
                 UNPAIR ;
117
                 PUSH (option nat) (Some 1) ;
118
                 SENDER ;
119
                 UPDATE ;
120
                 PAIR ;
121
                 PAIR }
122
               { IF_LEFT
123
                   { AMOUNT ;
124
                     PUSH mutez 0 ;
125
                     COMPARE ;
126
                     EQ ;
127
                     IF {} { AMOUNT ; FAILWITH } ;
128
                     DIG 2 ;
129
                     UNIT ;
130
                     SWAP ;
131
                     DIG 3 ;
132
                     DIG 2 ;
133
                     PAIR ;
134
                     EXEC ;
135
                     CDR ;
136
                     UNPAIR ;
137
                     CAR ;
138
                     DIG 2 ;
139
                     SWAP ;
140
                     PAIR ;
141
                     PAIR }
142
                   { AMOUNT ;
143
                     PUSH mutez 0 ;
144
                     COMPARE ;
145
                     EQ ;
146
                     IF {} { AMOUNT ; FAILWITH } ;
147
                     DIG 2 ;
148
                     UNIT ;
149
                     SWAP ;
150
                     DIG 3 ;
151
                     DIG 2 ;
152
                     PAIR ;
153
                     EXEC ;
154
                     CDR ;
155
                     SWAP ;
156
                     UPDATE 4 } } } ;
157
         NIL operation ;
158
         PAIR } ;
159
  view "get_price" unit nat
160
        { UNPAIR ;
161
          SWAP ;
162
          DUP ;
163
          DUG 2 ;
164
          GET 4 ;
165
          DUP 3 ;
166
          CAR ;
167
          CDR ;
168
          ITER { DUP ;
169
                 GET 3 ;
170
                 IF_NONE
171
                   { DUP ;
172
                     CAR ;
173
                     UNIT ;
174
                     VIEW "get_price" nat ;
175
                     IF_NONE { PUSH string "Invalid view: get_price" ; FAILWITH } {} ;
176
                     SWAP ;
177
                     DUP ;
178
                     DUG 2 ;
179
                     GET 7 ;
180
                     DUP 6 ;
181
                     GET 4 ;
182
                     DIG 2 ;
183
                     MUL ;
184
                     EDIV ;
185
                     IF_NONE { PUSH int 123 ; FAILWITH } { CAR } }
186
                   { DROP ;
187
                     DUP ;
188
                     GET 5 ;
189
                     IF_NONE
190
                       { DUP ;
191
                         CAR ;
192
                         SWAP ;
193
                         DUP ;
194
                         DUG 2 ;
195
                         GET 3 ;
196
                         IF_NONE { PUSH int 90 ; FAILWITH } {} ;
197
                         VIEW "get_price" nat ;
198
                         IF_NONE
199
                           { PUSH string "Invalid view: get_price" ; FAILWITH }
200
                           {} ;
201
                         SWAP ;
202
                         DUP ;
203
                         DUG 2 ;
204
                         GET 7 ;
205
                         DUP 6 ;
206
                         GET 4 ;
207
                         DIG 2 ;
208
                         MUL ;
209
                         EDIV ;
210
                         IF_NONE { PUSH int 114 ; FAILWITH } { CAR } }
211
                       { DROP ;
212
                         DUP ;
213
                         CAR ;
214
                         SWAP ;
215
                         DUP ;
216
                         DUG 2 ;
217
                         GET 3 ;
218
                         IF_NONE { PUSH int 90 ; FAILWITH } {} ;
219
                         VIEW "get_price_with_timestamp"
220
                               (pair (nat %price) (timestamp %last_update_timestamp)) ;
221
                         IF_NONE
222
                           { PUSH string "Invalid view: get_price_with_timestamp" ;
223
                             FAILWITH }
224
                           {} ;
225
                         SWAP ;
226
                         DUP ;
227
                         DUG 2 ;
228
                         GET 5 ;
229
                         IF_NONE { PUSH int 97 ; FAILWITH } {} ;
230
                         SWAP ;
231
                         DUP ;
232
                         DUG 2 ;
233
                         CDR ;
234
                         ADD ;
235
                         NOW ;
236
                         COMPARE ;
237
                         LE ;
238
                         IF {} { PUSH string "PriceTooOld" ; FAILWITH } ;
239
                         SWAP ;
240
                         DUP ;
241
                         DUG 2 ;
242
                         GET 7 ;
243
                         DUP 6 ;
244
                         GET 4 ;
245
                         DIG 2 ;
246
                         CAR ;
247
                         MUL ;
248
                         EDIV ;
249
                         IF_NONE { PUSH int 104 ; FAILWITH } { CAR } } } ;
250
                 PUSH bool True ;
251
                 DIG 2 ;
252
                 GET 8 ;
253
                 COMPARE ;
254
                 EQ ;
255
                 IF
256
                   { DIG 3 ;
257
                     DUP ;
258
                     GET 4 ;
259
                     SWAP ;
260
                     DUP ;
261
                     DUG 5 ;
262
                     GET 4 ;
263
                     MUL ;
264
                     EDIV ;
265
                     IF_NONE { PUSH int 130 ; FAILWITH } { CAR } }
266
                   {} ;
267
                 DUP 4 ;
268
                 GET 4 ;
269
                 SWAP ;
270
                 DIG 2 ;
271
                 MUL ;
272
                 EDIV ;
273
                 IF_NONE { PUSH int 136 ; FAILWITH } { CAR } } ;
274
          SWAP ;
275
          DROP ;
276
          SWAP ;
277
          DROP } }