mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
Add contracts
This commit is contained in:
parent
d25d14ac63
commit
a5947288bc
9 changed files with 196 additions and 17 deletions
|
|
@ -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 {
|
||||||
|
|
|
||||||
19
core/vm/ewasm_precompile_ecadd.go
Normal file
19
core/vm/ewasm_precompile_ecadd.go
Normal file
File diff suppressed because one or more lines are too long
19
core/vm/ewasm_precompile_ecmul.go
Normal file
19
core/vm/ewasm_precompile_ecmul.go
Normal file
File diff suppressed because one or more lines are too long
19
core/vm/ewasm_precompile_ecpairing.go
Normal file
19
core/vm/ewasm_precompile_ecpairing.go
Normal file
File diff suppressed because one or more lines are too long
19
core/vm/ewasm_precompile_ecrecover.go
Normal file
19
core/vm/ewasm_precompile_ecrecover.go
Normal file
File diff suppressed because one or more lines are too long
19
core/vm/ewasm_precompile_expmod.go
Normal file
19
core/vm/ewasm_precompile_expmod.go
Normal file
File diff suppressed because one or more lines are too long
19
core/vm/ewasm_precompile_identity.go
Normal file
19
core/vm/ewasm_precompile_identity.go
Normal file
File diff suppressed because one or more lines are too long
57
core/vm/ewasm_precompile_ripemd160hash.go
Normal file
57
core/vm/ewasm_precompile_ripemd160hash.go
Normal file
File diff suppressed because one or more lines are too long
19
core/vm/ewasm_precompile_sha256.go
Normal file
19
core/vm/ewasm_precompile_sha256.go
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue