diff --git a/config/tendermint/config.go b/config/tendermint/config.go index ca6f820e3..759eb7418 100644 --- a/config/tendermint/config.go +++ b/config/tendermint/config.go @@ -58,7 +58,10 @@ func GetConfig(rootDir string) cfg.Config { Exit("Cannot set 'version' via config.toml") } mapConfig.SetDefault("chain_id", "tendermint_testnet_9") - mapConfig.SetDefault("version", "0.5.0") // JAE: encrypted p2p! + // Major: alpha + // Minor: encrypted p2p! + // Revision: ripemd for NewContractAddress + mapConfig.SetDefault("version", "0.5.1") mapConfig.SetDefault("genesis_file", rootDir+"/genesis.json") mapConfig.SetDefault("moniker", "anonymous") mapConfig.SetDefault("node_laddr", "0.0.0.0:46656") diff --git a/state/tx_cache.go b/state/tx_cache.go index 21a042237..c99bf295a 100644 --- a/state/tx_cache.go +++ b/state/tx_cache.go @@ -4,8 +4,8 @@ import ( acm "github.com/tendermint/tendermint/account" . "github.com/tendermint/tendermint/common" ptypes "github.com/tendermint/tendermint/permission/types" // for GlobalPermissionAddress ... + "github.com/tendermint/tendermint/types" "github.com/tendermint/tendermint/vm" - "github.com/tendermint/tendermint/vm/sha3" ) type TxCache struct { @@ -146,10 +146,7 @@ func (cache *TxCache) AddLog(log *vm.Log) { // Convenience function to return address of new contract func NewContractAddress(caller []byte, nonce int) []byte { - temp := make([]byte, 32+8) - copy(temp, caller) - PutInt64BE(temp[32:], int64(nonce)) - return sha3.Sha3(temp)[:20] + return types.NewContractAddress(caller, nonce) } // Converts backend.Account to vm.Account struct. diff --git a/types/tx.go b/types/tx.go index 9bc8484d0..ae547a36b 100644 --- a/types/tx.go +++ b/types/tx.go @@ -5,10 +5,12 @@ import ( "errors" "io" + "github.com/tendermint/tendermint/Godeps/_workspace/src/golang.org/x/crypto/ripemd160" + acm "github.com/tendermint/tendermint/account" - "github.com/tendermint/tendermint/wire" . "github.com/tendermint/tendermint/common" ptypes "github.com/tendermint/tendermint/permission/types" + "github.com/tendermint/tendermint/wire" ) var ( @@ -189,6 +191,15 @@ func (tx *CallTx) String() string { return Fmt("CallTx{%v -> %x: %x}", tx.Input, tx.Address, tx.Data) } +func NewContractAddress(caller []byte, nonce int) []byte { + temp := make([]byte, 32+8) + copy(temp, caller) + PutInt64BE(temp[32:], int64(nonce)) + hasher := ripemd160.New() + hasher.Write(temp) // does not error + return hasher.Sum(nil) +} + //----------------------------------------------------------------------------- type NameTx struct {