diff options
author | gary rong <garyrong0905@gmail.com> | 2018-07-24 22:22:03 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2018-07-24 22:22:03 +0800 |
commit | cab1cff11cbcd4ff60f1a149deb71ec87413b487 (patch) | |
tree | 2e7c89b0a541a03e23294d4b444892a9420cbc9c /crypto | |
parent | 2909f6d7a2ceb5b1cdeb4cc3966531018a0b8334 (diff) | |
download | dexon-cab1cff11cbcd4ff60f1a149deb71ec87413b487.tar.gz dexon-cab1cff11cbcd4ff60f1a149deb71ec87413b487.tar.zst dexon-cab1cff11cbcd4ff60f1a149deb71ec87413b487.zip |
core, crypto, params: implement CREATE2 evm instrction (#17196)
* core, crypto, params: implement CREATE2 evm instrction
* core/vm: add opcode to string mapping
* core: remove past fork checking
* core, crypto: use option2 to generate new address
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/crypto.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/crypto/crypto.go b/crypto/crypto.go index 619440e81..dec6e3c19 100644 --- a/crypto/crypto.go +++ b/crypto/crypto.go @@ -76,6 +76,12 @@ func CreateAddress(b common.Address, nonce uint64) common.Address { return common.BytesToAddress(Keccak256(data)[12:]) } +// CreateAddress2 creates an ethereum address given the address bytes, initial +// contract code and a salt. +func CreateAddress2(b common.Address, salt common.Hash, code []byte) common.Address { + return common.BytesToAddress(Keccak256([]byte{0xff}, b.Bytes(), salt.Bytes(), code)[12:]) +} + // ToECDSA creates a private key with the given D value. func ToECDSA(d []byte) (*ecdsa.PrivateKey, error) { return toECDSA(d, true) |