BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • youves Checker Target Oracle
operations (8.09K)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
201
 
1
{ parameter (or
2
              (or (unit %default)
3
                  (or (contract %getPrice nat) (address %propose_administrator)))
4
              (or (or (address %remove_administrator) (unit %set_administrator))
5
                  (or (address %set_price_oracle)
6
                      (list %set_symbol_relation_path (pair (string %symbol)
7
                                                           (bool %inversed)))))) ;
8
  storage (pair (big_map %administrators address int)
9
                (pair (address %generic_oracle)
10
                      (list %symbol_relation_path (pair (string %symbol) (bool %inversed))))) ;
11
  code { LAMBDA
12
           (pair unit
13
                 (pair (big_map address int) (pair address (list (pair string bool)))))
14
           (pair unit
15
                 (pair (big_map address int) (pair address (list (pair string bool)))))
16
           { CDR ;
17
             DUP ;
18
             CAR ;
19
             PUSH int 1 ;
20
             SWAP ;
21
             SENDER ;
22
             GET ;
23
             IF_NONE { PUSH int 21 ; FAILWITH } {} ;
24
             COMPARE ;
25
             EQ ;
26
             IF {} { PUSH int 401 ; FAILWITH } ;
27
             UNIT ;
28
             PAIR } ;
29
         SWAP ;
30
         UNPAIR ;
31
         IF_LEFT
32
           { IF_LEFT
33
               { DROP ;
34
                 SWAP ;
35
                 DROP ;
36
                 NIL operation ;
37
                 SENDER ;
38
                 CONTRACT unit ;
39
                 IF_NONE { PUSH int 391 ; FAILWITH } {} ;
40
                 AMOUNT ;
41
                 UNIT ;
42
                 TRANSFER_TOKENS ;
43
                 CONS }
44
               { IF_LEFT
45
                   { DIG 2 ;
46
                     DROP ;
47
                     AMOUNT ;
48
                     PUSH mutez 0 ;
49
                     COMPARE ;
50
                     EQ ;
51
                     IF {} { AMOUNT ; FAILWITH } ;
52
                     NIL operation ;
53
                     SWAP ;
54
                     PUSH mutez 0 ;
55
                     SELF_ADDRESS ;
56
                     UNIT ;
57
                     VIEW "get_price" nat ;
58
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
59
                     TRANSFER_TOKENS ;
60
                     CONS }
61
                   { AMOUNT ;
62
                     PUSH mutez 0 ;
63
                     COMPARE ;
64
                     EQ ;
65
                     IF {} { AMOUNT ; FAILWITH } ;
66
                     DIG 2 ;
67
                     UNIT ;
68
                     SWAP ;
69
                     DIG 3 ;
70
                     DIG 2 ;
71
                     PAIR ;
72
                     EXEC ;
73
                     CDR ;
74
                     DUP ;
75
                     CAR ;
76
                     PUSH (option int) (Some 0) ;
77
                     DIG 3 ;
78
                     UPDATE ;
79
                     UPDATE 1 ;
80
                     NIL operation } } }
81
           { IF_LEFT
82
               { IF_LEFT
83
                   { AMOUNT ;
84
                     PUSH mutez 0 ;
85
                     COMPARE ;
86
                     EQ ;
87
                     IF {} { AMOUNT ; FAILWITH } ;
88
                     DIG 2 ;
89
                     UNIT ;
90
                     SWAP ;
91
                     DIG 3 ;
92
                     DIG 2 ;
93
                     PAIR ;
94
                     EXEC ;
95
                     CDR ;
96
                     DUP ;
97
                     CAR ;
98
                     NONE int ;
99
                     DIG 3 ;
100
                     UPDATE ;
101
                     UPDATE 1 }
102
                   { DROP ;
103
                     SWAP ;
104
                     DROP ;
105
                     AMOUNT ;
106
                     PUSH mutez 0 ;
107
                     COMPARE ;
108
                     EQ ;
109
                     IF {} { AMOUNT ; FAILWITH } ;
110
                     DUP ;
111
                     CAR ;
112
                     PUSH int 0 ;
113
                     SWAP ;
114
                     SENDER ;
115
                     GET ;
116
                     IF_NONE { PUSH int 46 ; FAILWITH } {} ;
117
                     COMPARE ;
118
                     EQ ;
119
                     IF {} { PUSH int 405 ; FAILWITH } ;
120
                     DUP ;
121
                     CAR ;
122
                     PUSH (option int) (Some 1) ;
123
                     SENDER ;
124
                     UPDATE ;
125
                     UPDATE 1 } }
126
               { IF_LEFT
127
                   { AMOUNT ;
128
                     PUSH mutez 0 ;
129
                     COMPARE ;
130
                     EQ ;
131
                     IF {} { AMOUNT ; FAILWITH } ;
132
                     DIG 2 ;
133
                     UNIT ;
134
                     SWAP ;
135
                     DIG 3 ;
136
                     DIG 2 ;
137
                     PAIR ;
138
                     EXEC ;
139
                     CDR ;
140
                     SWAP ;
141
                     UPDATE 3 }
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
          PUSH nat 1000000 ;
162
          DUP 3 ;
163
          GET 4 ;
164
          ITER { DUP ;
165
                 CDR ;
166
                 PUSH bool False ;
167
                 COMPARE ;
168
                 EQ ;
169
                 IF
170
                   { PUSH nat 1000000 ;
171
                     DUP 5 ;
172
                     GET 3 ;
173
                     DIG 2 ;
174
                     CAR ;
175
                     VIEW "get_price" nat ;
176
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
177
                     DIG 2 ;
178
                     MUL ;
179
                     EDIV ;
180
                     IF_NONE { PUSH int 420 ; FAILWITH } { CAR } }
181
                   { DUP 4 ;
182
                     GET 3 ;
183
                     SWAP ;
184
                     CAR ;
185
                     VIEW "get_price" nat ;
186
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
187
                     PUSH nat 1000000 ;
188
                     DIG 2 ;
189
                     MUL ;
190
                     EDIV ;
191
                     IF_NONE { PUSH int 422 ; FAILWITH } { CAR } } } ;
192
          SWAP ;
193
          DROP ;
194
          SWAP ;
195
          DROP ;
196
          PUSH nat 1000000000 ;
197
          PUSH nat 2718281828 ;
198
          DIG 2 ;
199
          MUL ;
200
          EDIV ;
201
          IF_NONE { PUSH int 423 ; FAILWITH } { CAR } } }