Open axic opened 6 years ago
BTW, can you pass reference to calldata buffer directly to the contract main function?
Sample precompile in Rust: https://github.com/ewasm/ewasm-precompile-sha256/blob/master/src/lib.rs
Great idea. More generally, we can discuss how to constrain Wasm and EEI to get nice properties, such as allowing "magic gas calculation".
Proposal to expose these functions from the EEI:
useGas
getCallDataSize
callDataCopy
getCaller
(good for contracts like blockhash - or should be getTxOrigin
?!)getCallValue
(not necessary, but could be useful to reject calls with value)return
revert
The only features ewasm would need to expose are:
useGas
calldatacopy
/calldatasize
)return
/revert
This could be a way to get wasm VMs implemented and experimented with in a more controlled environment on the main chain.
It is not clear whether the precompiles would have "magic gas calculation rules" or just use "a metering process" on them.