-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathoracle.tz
189 lines (189 loc) · 23.9 KB
/
oracle.tz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
parameter (or (contract %push (big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))))) (or (signature %revoke) (map %update string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))))));
storage (pair (big_map %oracleData string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) (option %publicKey key));
code
{
UNPAIR; # @parameter : @storage
IF_LEFT
{
# == push ==
# sp.transfer(self.data.oracleData, sp.tez(0), params) # @parameter%push : @storage
NIL operation; # list operation : @parameter%push : @storage
SWAP; # @parameter%push : list operation : @storage
PUSH mutez 0; # mutez : @parameter%push : list operation : @storage
DUP 4; # @storage : mutez : @parameter%push : list operation : @storage
CAR; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : mutez : @parameter%push : list operation : @storage
TRANSFER_TOKENS; # operation : list operation : @storage
CONS; # list operation : @storage
}
{
IF_LEFT
{
# == revoke ==
# sp.verify(sp.check_signature(self.data.publicKey.open_some(), params, sp.pack(sp.set_type_expr(sp.none, sp.TOption(sp.TKey))))) # @parameter%revoke : @storage
NONE key; # option key : @parameter%revoke : @storage
PACK; # bytes : @parameter%revoke : @storage
SWAP; # @parameter%revoke : bytes : @storage
DUP 3; # @storage : @parameter%revoke : bytes : @storage
CDR; # option key : @parameter%revoke : bytes : @storage
IF_NONE
{
PUSH int 117; # int : @parameter%revoke : bytes : @storage
FAILWITH; # FAILED
}
{}; # @some : @parameter%revoke : bytes : @storage
CHECK_SIGNATURE; # bool : @storage
IF
{}
{
PUSH string "WrongCondition: sp.check_signature(self.data.publicKey.open_some(), params, sp.pack(sp.set_type_expr(sp.none, sp.TOption(sp.TKey))))"; # string : @storage
FAILWITH; # FAILED
}; # @storage
# self.data.publicKey = sp.none # @storage
NONE key; # option key : @storage
UPDATE 2; # @storage
# self.data.oracleData = sp.set_type_expr({}, sp.TBigMap(sp.TString, sp.TPair(sp.TTimestamp, sp.TPair(sp.TTimestamp, sp.TPair(sp.TNat, sp.TPair(sp.TNat, sp.TPair(sp.TNat, sp.TPair(sp.TNat, sp.TNat)))))))) # @storage
EMPTY_BIG_MAP string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))); # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage
UPDATE 1; # @storage
}
{
SWAP; # @storage : @parameter%update
# == update ==
# sp.verify(self.data.publicKey.is_some(), 'revoked') # @storage : @parameter%update
DUP; # @storage : @storage : @parameter%update
DUG 2; # @storage : @parameter%update : @storage
CDR; # option key : @parameter%update : @storage
IF_NONE
{
PUSH string "revoked"; # string : @parameter%update : @storage
FAILWITH; # FAILED
}
{
DROP; # @parameter%update : @storage
}; # @parameter%update : @storage
# for assetData in params.items(): ... # @parameter%update : @storage
DUP; # @parameter%update : @parameter%update : @storage
ITER
{
# compute_oracle_79 = sp.local("compute_oracle_79", sp.fst(assetData.value)) # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
GET 3; # signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
SWAP; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : signature : @parameter%update : @storage
# compute_oracle_80 = sp.local("compute_oracle_80", sp.snd(assetData.value)) # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : signature : @parameter%update : @storage
DUP; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : signature : @parameter%update : @storage
DUG 2; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
GET 4; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
# if self.data.oracleData.contains(assetData.key): # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP 5; # @storage : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP 4; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # string : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
MEM; # bool : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
IF
{
# compute_oracle_85 = sp.local("compute_oracle_85", self.data.oracleData[assetData.key]) # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP 5; # @storage : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP 4; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # string : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
GET; # option (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
IF_NONE
{
PUSH int 85; # int : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
FAILWITH; # FAILED
}
{
# of_some: Get-item:85 # @some : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
}; # @some : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
# compute_oracle_86 = sp.local("compute_oracle_86", sp.fst(compute_oracle_85.value)) # @some : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # timestamp : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
SWAP; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : timestamp : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
# compute_oracle_87 = sp.local("compute_oracle_87", sp.fst(compute_oracle_80.value)) # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : timestamp : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : timestamp : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUG 2; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : timestamp : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # timestamp : timestamp : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
# if compute_oracle_87.value > compute_oracle_86.value: # timestamp : timestamp : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
COMPARE; # int : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
GT; # bool : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
IF
{
# sp.verify(sp.check_signature(self.data.publicKey.open_some(), compute_oracle_79.value, sp.pack((assetData.key, compute_oracle_80.value))), 'bad sig') # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP 4; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CAR; # string : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
PAIR; # pair string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
PACK; # bytes : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : signature : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DIG 2; # signature : bytes : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DUP 6; # @storage : signature : bytes : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CDR; # option key : signature : bytes : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
IF_NONE
{
PUSH int 117; # int : signature : bytes : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
FAILWITH; # FAILED
}
{}; # @some : signature : bytes : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
CHECK_SIGNATURE; # bool : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
IF
{}
{
PUSH string "bad sig"; # string : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
FAILWITH; # FAILED
}; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
# self.data.oracleData[assetData.key] = compute_oracle_80.value # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update : @storage
DIG 3; # @storage : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update
DUP; # @storage : @storage : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update
CAR; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage : pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update
DIG 2; # pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))) : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update
SOME; # option (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage : pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : @parameter%update
DIG 3; # pair string (pair signature (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))) : option (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage : @parameter%update
CAR; # string : option (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage : @parameter%update
UPDATE; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage : @parameter%update
UPDATE 1; # @storage : @parameter%update
SWAP; # @parameter%update : @storage
}
{
DROP 3; # @parameter%update : @storage
}; # @parameter%update : @storage
}
{
DROP 3; # @parameter%update : @storage
}; # @parameter%update : @storage
}; # @parameter%update : @storage
DROP; # @storage
}; # @storage
NIL operation; # list operation : @storage
}; # list operation : @storage
PAIR; # pair (list operation) @storage
};
view
"getPrice" string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))
{
UNPAIR; # @parameter : @storage
SWAP; # @storage : @parameter
# sp.verify(self.data.oracleData.contains(params), 'bad request') # @storage : @parameter
DUP; # @storage : @storage : @parameter
DUG 2; # @storage : @parameter : @storage
CAR; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @parameter : @storage
SWAP; # @parameter : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage
DUP; # @parameter : @parameter : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @storage
DUG 2; # @parameter : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @parameter : @storage
MEM; # bool : @parameter : @storage
IF
{}
{
PUSH string "bad request"; # string : @parameter : @storage
FAILWITH; # FAILED
}; # @parameter : @storage
SWAP; # @storage : @parameter
# sp.result(self.data.oracleData[params]) # @storage : @parameter
CAR; # big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat)))))) : @parameter
SWAP; # @parameter : big_map string (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))
GET; # option (pair timestamp (pair timestamp (pair nat (pair nat (pair nat (pair nat nat))))))
IF_NONE
{
PUSH int 163; # int
FAILWITH; # FAILED
}
{
# of_some: Get-item:163 # @some
}; # @some
};