BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1PvKz...2HkZ
operations (3)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
178
 
1
{ parameter (or
2
              (or (unit %default)
3
                  (or (address %propose_administrator) (address %remove_administrator)))
4
              (or (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
                   { AMOUNT ;
46
                     PUSH mutez 0 ;
47
                     COMPARE ;
48
                     EQ ;
49
                     IF {} { AMOUNT ; FAILWITH } ;
50
                     DIG 2 ;
51
                     UNIT ;
52
                     SWAP ;
53
                     DIG 3 ;
54
                     DIG 2 ;
55
                     PAIR ;
56
                     EXEC ;
57
                     CDR ;
58
                     DUP ;
59
                     CAR ;
60
                     PUSH (option int) (Some 0) ;
61
                     DIG 3 ;
62
                     UPDATE ;
63
                     UPDATE 1 }
64
                   { AMOUNT ;
65
                     PUSH mutez 0 ;
66
                     COMPARE ;
67
                     EQ ;
68
                     IF {} { AMOUNT ; FAILWITH } ;
69
                     DIG 2 ;
70
                     UNIT ;
71
                     SWAP ;
72
                     DIG 3 ;
73
                     DIG 2 ;
74
                     PAIR ;
75
                     EXEC ;
76
                     CDR ;
77
                     DUP ;
78
                     CAR ;
79
                     NONE int ;
80
                     DIG 3 ;
81
                     UPDATE ;
82
                     UPDATE 1 } ;
83
                 NIL operation } }
84
           { IF_LEFT
85
               { DROP ;
86
                 SWAP ;
87
                 DROP ;
88
                 AMOUNT ;
89
                 PUSH mutez 0 ;
90
                 COMPARE ;
91
                 EQ ;
92
                 IF {} { AMOUNT ; FAILWITH } ;
93
                 DUP ;
94
                 CAR ;
95
                 PUSH int 0 ;
96
                 SWAP ;
97
                 SENDER ;
98
                 GET ;
99
                 IF_NONE { PUSH int 46 ; FAILWITH } {} ;
100
                 COMPARE ;
101
                 EQ ;
102
                 IF {} { PUSH int 405 ; FAILWITH } ;
103
                 DUP ;
104
                 CAR ;
105
                 PUSH (option int) (Some 1) ;
106
                 SENDER ;
107
                 UPDATE ;
108
                 UPDATE 1 }
109
               { IF_LEFT
110
                   { AMOUNT ;
111
                     PUSH mutez 0 ;
112
                     COMPARE ;
113
                     EQ ;
114
                     IF {} { AMOUNT ; FAILWITH } ;
115
                     DIG 2 ;
116
                     UNIT ;
117
                     SWAP ;
118
                     DIG 3 ;
119
                     DIG 2 ;
120
                     PAIR ;
121
                     EXEC ;
122
                     CDR ;
123
                     SWAP ;
124
                     UPDATE 3 }
125
                   { AMOUNT ;
126
                     PUSH mutez 0 ;
127
                     COMPARE ;
128
                     EQ ;
129
                     IF {} { AMOUNT ; FAILWITH } ;
130
                     DIG 2 ;
131
                     UNIT ;
132
                     SWAP ;
133
                     DIG 3 ;
134
                     DIG 2 ;
135
                     PAIR ;
136
                     EXEC ;
137
                     CDR ;
138
                     SWAP ;
139
                     UPDATE 4 } } ;
140
             NIL operation } ;
141
         PAIR } ;
142
  view "get_price" unit nat
143
        { UNPAIR ;
144
          PUSH nat 1000000 ;
145
          DUP 3 ;
146
          GET 4 ;
147
          ITER { DUP ;
148
                 CDR ;
149
                 PUSH bool False ;
150
                 COMPARE ;
151
                 EQ ;
152
                 IF
153
                   { PUSH nat 1000000 ;
154
                     DUP 5 ;
155
                     GET 3 ;
156
                     DIG 2 ;
157
                     CAR ;
158
                     VIEW "get_price" nat ;
159
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
160
                     DIG 2 ;
161
                     MUL ;
162
                     EDIV ;
163
                     IF_NONE { PUSH int 414 ; FAILWITH } { CAR } }
164
                   { DUP 4 ;
165
                     GET 3 ;
166
                     SWAP ;
167
                     CAR ;
168
                     VIEW "get_price" nat ;
169
                     IF_NONE { PUSH int 502 ; FAILWITH } {} ;
170
                     PUSH nat 1000000 ;
171
                     DIG 2 ;
172
                     MUL ;
173
                     EDIV ;
174
                     IF_NONE { PUSH int 416 ; FAILWITH } { CAR } } } ;
175
          SWAP ;
176
          DROP ;
177
          SWAP ;
178
          DROP } }