Add contracts

This commit is contained in:
Guillaume Ballet 2019-01-17 14:25:01 +01:00
parent fbafd837df
commit 29a815f92c
9 changed files with 196 additions and 17 deletions

View file

@ -66,14 +66,14 @@ var PrecompiledContractsByzantium = map[common.Address]PrecompiledContract{
// PrecompiledContractsEWASM contains the default set of pre-compiled Ethereum // PrecompiledContractsEWASM contains the default set of pre-compiled Ethereum
// contracts used for Ethereum 1.x release. // contracts used for Ethereum 1.x release.
var PrecompiledContractsEWASM = map[common.Address]PrecompiledContract{ var PrecompiledContractsEWASM = map[common.Address]PrecompiledContract{
common.BytesToAddress([]byte{1}): newEWASMPrecompile(ewasmEcrecoverCode), common.BytesToAddress([]byte{1}): newEWASMPrecompile(ewasmEcRecoverCode),
common.BytesToAddress([]byte{2}): newEWASMPrecompile(ewasmSha256HashCode), common.BytesToAddress([]byte{2}): newEWASMPrecompile(ewasmSha256HashCode),
common.BytesToAddress([]byte{3}): newEWASMPrecompile(ewasmRipemd160hashCode), common.BytesToAddress([]byte{3}): newEWASMPrecompile(ewasmRipemd160hashCode),
common.BytesToAddress([]byte{4}): newEWASMPrecompile(ewasmDataCopyCode), common.BytesToAddress([]byte{4}): newEWASMPrecompile(ewasmIdentityCode),
common.BytesToAddress([]byte{5}): newEWASMPrecompile(ewasmBigModExpCode), common.BytesToAddress([]byte{5}): newEWASMPrecompile(ewasmExpModCode),
common.BytesToAddress([]byte{6}): newEWASMPrecompile(ewasmBn256AddCode), common.BytesToAddress([]byte{6}): newEWASMPrecompile(ewasmEcAddCode),
common.BytesToAddress([]byte{7}): newEWASMPrecompile(ewasmBn256ScalarMulCode), common.BytesToAddress([]byte{7}): newEWASMPrecompile(ewasmEcMulCode),
common.BytesToAddress([]byte{8}): newEWASMPrecompile(ewasmBn256PairingCode), common.BytesToAddress([]byte{8}): newEWASMPrecompile(ewasmEcPairingCode),
} }
// RunPrecompiledContract runs and evaluates the output of a precompiled contract. // RunPrecompiledContract runs and evaluates the output of a precompiled contract.
@ -92,17 +92,6 @@ type ewasmPrecompile struct {
vm *exec.VM vm *exec.VM
} }
var (
ewasmEcrecoverCode = []byte{}
ewasmSha256HashCode = []byte{}
ewasmRipemd160hashCode = []byte{}
ewasmDataCopyCode = []byte{}
ewasmBigModExpCode = []byte{}
ewasmBn256AddCode = []byte{}
ewasmBn256ScalarMulCode = []byte{}
ewasmBn256PairingCode = []byte{}
)
func newEWASMPrecompile(code []byte) *ewasmPrecompile { func newEWASMPrecompile(code []byte) *ewasmPrecompile {
module, err := wasm.ReadModule(bytes.NewReader(code), nil) module, err := wasm.ReadModule(bytes.NewReader(code), nil)
if err != nil { if err != nil {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long