BCD

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