neo_solidity/ir/context/builtins/
native_calls.rs

1fn resolve_native_calls_member(member: &str) -> Option<BuiltinCall> {
2    match member {
3        // ========== NEO native contract ==========
4        "neoTotalSupply" => Some(BuiltinCall::NativeCall {
5            contract: NativeContract::Neo,
6            method: "totalSupply".to_string(),
7        }),
8        "neoBalanceOf" => Some(BuiltinCall::NativeCall {
9            contract: NativeContract::Neo,
10            method: "balanceOf".to_string(),
11        }),
12        "neoTransfer" => Some(BuiltinCall::NativeCall {
13            contract: NativeContract::Neo,
14            method: "transfer".to_string(),
15        }),
16        "neoDecimals" => Some(BuiltinCall::NativeCall {
17            contract: NativeContract::Neo,
18            method: "decimals".to_string(),
19        }),
20        "neoSymbol" => Some(BuiltinCall::NativeCall {
21            contract: NativeContract::Neo,
22            method: "symbol".to_string(),
23        }),
24        "vote" => Some(BuiltinCall::NativeCall {
25            contract: NativeContract::Neo,
26            method: "vote".to_string(),
27        }),
28        "getCandidates" => Some(BuiltinCall::NativeCall {
29            contract: NativeContract::Neo,
30            method: "getCandidates".to_string(),
31        }),
32        "registerCandidate" => Some(BuiltinCall::NativeCall {
33            contract: NativeContract::Neo,
34            method: "registerCandidate".to_string(),
35        }),
36        "unregisterCandidate" => Some(BuiltinCall::NativeCall {
37            contract: NativeContract::Neo,
38            method: "unregisterCandidate".to_string(),
39        }),
40        "getGasPerBlock" => Some(BuiltinCall::NativeCall {
41            contract: NativeContract::Neo,
42            method: "getGasPerBlock".to_string(),
43        }),
44        "getRegisterPrice" => Some(BuiltinCall::NativeCall {
45            contract: NativeContract::Neo,
46            method: "getRegisterPrice".to_string(),
47        }),
48        "setRegisterPrice" => Some(BuiltinCall::NativeCall {
49            contract: NativeContract::Neo,
50            method: "setRegisterPrice".to_string(),
51        }),
52        "setGasPerBlock" => Some(BuiltinCall::NativeCall {
53            contract: NativeContract::Neo,
54            method: "setGasPerBlock".to_string(),
55        }),
56        "getAccountState" => Some(BuiltinCall::GetNeoAccountState),
57        "unclaimedGas" => Some(BuiltinCall::NativeCall {
58            contract: NativeContract::Neo,
59            method: "unclaimedGas".to_string(),
60        }),
61        "getCandidateVote" => Some(BuiltinCall::NativeCall {
62            contract: NativeContract::Neo,
63            method: "getCandidateVote".to_string(),
64        }),
65        "getCommittee" => Some(BuiltinCall::NativeCall {
66            contract: NativeContract::Neo,
67            method: "getCommittee".to_string(),
68        }),
69        "getCommitteeAddress" => Some(BuiltinCall::NativeCall {
70            contract: NativeContract::Neo,
71            method: "getCommitteeAddress".to_string(),
72        }),
73        "getNextBlockValidators" => Some(BuiltinCall::NativeCall {
74            contract: NativeContract::Neo,
75            method: "getNextBlockValidators".to_string(),
76        }),
77        "getAllCandidates" => Some(BuiltinCall::NativeCall {
78            contract: NativeContract::Neo,
79            method: "getAllCandidates".to_string(),
80        }),
81
82        // ========== GAS native contract ==========
83        "gasTotalSupply" => Some(BuiltinCall::NativeCall {
84            contract: NativeContract::Gas,
85            method: "totalSupply".to_string(),
86        }),
87        "gasBalanceOf" => Some(BuiltinCall::NativeCall {
88            contract: NativeContract::Gas,
89            method: "balanceOf".to_string(),
90        }),
91        "gasTransfer" => Some(BuiltinCall::NativeCall {
92            contract: NativeContract::Gas,
93            method: "transfer".to_string(),
94        }),
95        "gasDecimals" => Some(BuiltinCall::NativeCall {
96            contract: NativeContract::Gas,
97            method: "decimals".to_string(),
98        }),
99        "gasSymbol" => Some(BuiltinCall::NativeCall {
100            contract: NativeContract::Gas,
101            method: "symbol".to_string(),
102        }),
103
104        // ========== ContractManagement native contract ==========
105        "deployContract" => Some(BuiltinCall::DeployContract),
106        "updateContract" => Some(BuiltinCall::NativeCall {
107            contract: NativeContract::ContractManagement,
108            method: "update".to_string(),
109        }),
110        "destroyContract" => Some(BuiltinCall::NativeCall {
111            contract: NativeContract::ContractManagement,
112            method: "destroy".to_string(),
113        }),
114        "getContract" => Some(BuiltinCall::GetContract),
115        "getContractById" => Some(BuiltinCall::NativeCall {
116            contract: NativeContract::ContractManagement,
117            method: "getContractById".to_string(),
118        }),
119        "listContracts" => Some(BuiltinCall::NativeCall {
120            contract: NativeContract::ContractManagement,
121            method: "getContractHashes".to_string(),
122        }),
123        "hasMethod" => Some(BuiltinCall::NativeCall {
124            contract: NativeContract::ContractManagement,
125            method: "hasMethod".to_string(),
126        }),
127        "isContract" => Some(BuiltinCall::NativeCall {
128            contract: NativeContract::ContractManagement,
129            method: "isContract".to_string(),
130        }),
131        "getMinimumDeploymentFee" => Some(BuiltinCall::NativeCall {
132            contract: NativeContract::ContractManagement,
133            method: "getMinimumDeploymentFee".to_string(),
134        }),
135        "setMinimumDeploymentFee" => Some(BuiltinCall::NativeCall {
136            contract: NativeContract::ContractManagement,
137            method: "setMinimumDeploymentFee".to_string(),
138        }),
139
140        // ========== Policy native contract ==========
141        "getFeePerByte" => Some(BuiltinCall::NativeCall {
142            contract: NativeContract::Policy,
143            method: "getFeePerByte".to_string(),
144        }),
145        "setFeePerByte" => Some(BuiltinCall::NativeCall {
146            contract: NativeContract::Policy,
147            method: "setFeePerByte".to_string(),
148        }),
149        "getExecFeeFactor" => Some(BuiltinCall::NativeCall {
150            contract: NativeContract::Policy,
151            method: "getExecFeeFactor".to_string(),
152        }),
153        "getExecPicoFeeFactor" => Some(BuiltinCall::NativeCall {
154            contract: NativeContract::Policy,
155            method: "getExecPicoFeeFactor".to_string(),
156        }),
157        "setExecFeeFactor" => Some(BuiltinCall::NativeCall {
158            contract: NativeContract::Policy,
159            method: "setExecFeeFactor".to_string(),
160        }),
161        "getStoragePrice" => Some(BuiltinCall::NativeCall {
162            contract: NativeContract::Policy,
163            method: "getStoragePrice".to_string(),
164        }),
165        "getMillisecondsPerBlock" => Some(BuiltinCall::NativeCall {
166            contract: NativeContract::Policy,
167            method: "getMillisecondsPerBlock".to_string(),
168        }),
169        "setMillisecondsPerBlock" => Some(BuiltinCall::NativeCall {
170            contract: NativeContract::Policy,
171            method: "setMillisecondsPerBlock".to_string(),
172        }),
173        "getMaxValidUntilBlockIncrement" => Some(BuiltinCall::NativeCall {
174            contract: NativeContract::Policy,
175            method: "getMaxValidUntilBlockIncrement".to_string(),
176        }),
177        "setMaxValidUntilBlockIncrement" => Some(BuiltinCall::NativeCall {
178            contract: NativeContract::Policy,
179            method: "setMaxValidUntilBlockIncrement".to_string(),
180        }),
181        "getMaxTraceableBlocks" => Some(BuiltinCall::NativeCall {
182            contract: NativeContract::Policy,
183            method: "getMaxTraceableBlocks".to_string(),
184        }),
185        "setMaxTraceableBlocks" => Some(BuiltinCall::NativeCall {
186            contract: NativeContract::Policy,
187            method: "setMaxTraceableBlocks".to_string(),
188        }),
189        "getAttributeFee" => Some(BuiltinCall::NativeCall {
190            contract: NativeContract::Policy,
191            method: "getAttributeFee".to_string(),
192        }),
193        "setAttributeFee" => Some(BuiltinCall::NativeCall {
194            contract: NativeContract::Policy,
195            method: "setAttributeFee".to_string(),
196        }),
197        "setStoragePrice" => Some(BuiltinCall::NativeCall {
198            contract: NativeContract::Policy,
199            method: "setStoragePrice".to_string(),
200        }),
201        "blockAccount" => Some(BuiltinCall::NativeCall {
202            contract: NativeContract::Policy,
203            method: "blockAccount".to_string(),
204        }),
205        "unblockAccount" => Some(BuiltinCall::NativeCall {
206            contract: NativeContract::Policy,
207            method: "unblockAccount".to_string(),
208        }),
209        "isBlocked" => Some(BuiltinCall::NativeCall {
210            contract: NativeContract::Policy,
211            method: "isBlocked".to_string(),
212        }),
213        "getBlockedAccounts" => Some(BuiltinCall::NativeCall {
214            contract: NativeContract::Policy,
215            method: "getBlockedAccounts".to_string(),
216        }),
217        "recoverFund" => Some(BuiltinCall::NativeCall {
218            contract: NativeContract::Policy,
219            method: "recoverFund".to_string(),
220        }),
221        "setWhitelistFeeContract" => Some(BuiltinCall::NativeCall {
222            contract: NativeContract::Policy,
223            method: "setWhitelistFeeContract".to_string(),
224        }),
225        "removeWhitelistFeeContract" => Some(BuiltinCall::NativeCall {
226            contract: NativeContract::Policy,
227            method: "removeWhitelistFeeContract".to_string(),
228        }),
229        "getWhitelistFeeContracts" => Some(BuiltinCall::NativeCall {
230            contract: NativeContract::Policy,
231            method: "getWhitelistFeeContracts".to_string(),
232        }),
233
234        // ========== Oracle native contract ==========
235        "requestOracleData" => Some(BuiltinCall::NativeCall {
236            contract: NativeContract::Oracle,
237            method: "request".to_string(),
238        }),
239        "getOraclePrice" => Some(BuiltinCall::NativeCall {
240            contract: NativeContract::Oracle,
241            method: "getPrice".to_string(),
242        }),
243        "setOraclePrice" => Some(BuiltinCall::NativeCall {
244            contract: NativeContract::Oracle,
245            method: "setPrice".to_string(),
246        }),
247        "oracleFinish" => Some(BuiltinCall::NativeCall {
248            contract: NativeContract::Oracle,
249            method: "finish".to_string(),
250        }),
251        "oracleVerify" => Some(BuiltinCall::NativeCall {
252            contract: NativeContract::Oracle,
253            method: "verify".to_string(),
254        }),
255
256        // ========== RoleManagement native contract ==========
257        "designateAsRole" => Some(BuiltinCall::NativeCall {
258            contract: NativeContract::RoleManagement,
259            method: "designateAsRole".to_string(),
260        }),
261        "getDesignatedByRole" => Some(BuiltinCall::NativeCall {
262            contract: NativeContract::RoleManagement,
263            method: "getDesignatedByRole".to_string(),
264        }),
265
266        // ========== Ledger native contract ==========
267        "currentIndex" => Some(BuiltinCall::NativeCall {
268            contract: NativeContract::Ledger,
269            method: "currentIndex".to_string(),
270        }),
271        "currentHash" => Some(BuiltinCall::NativeCall {
272            contract: NativeContract::Ledger,
273            method: "currentHash".to_string(),
274        }),
275        "getBlock" => Some(BuiltinCall::NativeCall {
276            contract: NativeContract::Ledger,
277            method: "getBlock".to_string(),
278        }),
279        "getTransaction" => Some(BuiltinCall::NativeCall {
280            contract: NativeContract::Ledger,
281            method: "getTransaction".to_string(),
282        }),
283        "getTransactionHeight" => Some(BuiltinCall::NativeCall {
284            contract: NativeContract::Ledger,
285            method: "getTransactionHeight".to_string(),
286        }),
287        "getTransactionFromBlock" => Some(BuiltinCall::NativeCall {
288            contract: NativeContract::Ledger,
289            method: "getTransactionFromBlock".to_string(),
290        }),
291        "getTransactionSigners" => Some(BuiltinCall::NativeCall {
292            contract: NativeContract::Ledger,
293            method: "getTransactionSigners".to_string(),
294        }),
295        "getTransactionVMState" => Some(BuiltinCall::NativeCall {
296            contract: NativeContract::Ledger,
297            method: "getTransactionVMState".to_string(),
298        }),
299
300        // ========== Helpers ==========
301        "externalNativeCall" => Some(BuiltinCall::ContractCall),
302
303        // ========== Notary native contract ==========
304        "notaryVerify" => Some(BuiltinCall::NativeCall {
305            contract: NativeContract::Notary,
306            method: "verify".to_string(),
307        }),
308        "notaryBalanceOf" => Some(BuiltinCall::NativeCall {
309            contract: NativeContract::Notary,
310            method: "balanceOf".to_string(),
311        }),
312        "notaryExpirationOf" => Some(BuiltinCall::NativeCall {
313            contract: NativeContract::Notary,
314            method: "expirationOf".to_string(),
315        }),
316        "notaryLockDepositUntil" => Some(BuiltinCall::NativeCall {
317            contract: NativeContract::Notary,
318            method: "lockDepositUntil".to_string(),
319        }),
320        "notaryWithdraw" => Some(BuiltinCall::NativeCall {
321            contract: NativeContract::Notary,
322            method: "withdraw".to_string(),
323        }),
324        "notaryGetMaxNotValidBeforeDelta" => Some(BuiltinCall::NativeCall {
325            contract: NativeContract::Notary,
326            method: "getMaxNotValidBeforeDelta".to_string(),
327        }),
328        "notarySetMaxNotValidBeforeDelta" => Some(BuiltinCall::NativeCall {
329            contract: NativeContract::Notary,
330            method: "setMaxNotValidBeforeDelta".to_string(),
331        }),
332        "notaryOnNEP17Payment" => Some(BuiltinCall::NativeCall {
333            contract: NativeContract::Notary,
334            method: "onNEP17Payment".to_string(),
335        }),
336
337        // ========== Treasury native contract ==========
338        "treasuryVerify" => Some(BuiltinCall::NativeCall {
339            contract: NativeContract::Treasury,
340            method: "verify".to_string(),
341        }),
342        "treasuryOnNEP17Payment" => Some(BuiltinCall::NativeCall {
343            contract: NativeContract::Treasury,
344            method: "onNEP17Payment".to_string(),
345        }),
346        "treasuryOnNEP11Payment" => Some(BuiltinCall::NativeCall {
347            contract: NativeContract::Treasury,
348            method: "onNEP11Payment".to_string(),
349        }),
350
351        _ => None,
352    }
353}