diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-23 23:59:09 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-23 23:59:09 +0800 |
commit | 0330077d76b48934ab024a309000f83c78047d8a (patch) | |
tree | 2a3ffbcd5bd941b30ed28d0eb5c30553a25324e0 /vm/address.go | |
parent | d7eaa97a297151637af090ecb05bbd6d260d90b8 (diff) | |
download | dexon-0330077d76b48934ab024a309000f83c78047d8a.tar dexon-0330077d76b48934ab024a309000f83c78047d8a.tar.gz dexon-0330077d76b48934ab024a309000f83c78047d8a.tar.bz2 dexon-0330077d76b48934ab024a309000f83c78047d8a.tar.lz dexon-0330077d76b48934ab024a309000f83c78047d8a.tar.xz dexon-0330077d76b48934ab024a309000f83c78047d8a.tar.zst dexon-0330077d76b48934ab024a309000f83c78047d8a.zip |
moved state and vm to core
Diffstat (limited to 'vm/address.go')
-rw-r--r-- | vm/address.go | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/vm/address.go b/vm/address.go deleted file mode 100644 index 215f4bc8f..000000000 --- a/vm/address.go +++ /dev/null @@ -1,77 +0,0 @@ -package vm - -import ( - "math/big" - - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/common" -) - -type Address interface { - Call(in []byte) []byte -} - -type PrecompiledAccount struct { - Gas func(l int) *big.Int - fn func(in []byte) []byte -} - -func (self PrecompiledAccount) Call(in []byte) []byte { - return self.fn(in) -} - -var Precompiled = PrecompiledContracts() - -// XXX Could set directly. Testing requires resetting and setting of pre compiled contracts. -func PrecompiledContracts() map[string]*PrecompiledAccount { - return map[string]*PrecompiledAccount{ - // ECRECOVER - string(common.LeftPadBytes([]byte{1}, 20)): &PrecompiledAccount{func(l int) *big.Int { - return GasEcrecover - }, ecrecoverFunc}, - - // SHA256 - string(common.LeftPadBytes([]byte{2}, 20)): &PrecompiledAccount{func(l int) *big.Int { - n := big.NewInt(int64(l+31) / 32) - n.Mul(n, GasSha256Word) - return n.Add(n, GasSha256Base) - }, sha256Func}, - - // RIPEMD160 - string(common.LeftPadBytes([]byte{3}, 20)): &PrecompiledAccount{func(l int) *big.Int { - n := big.NewInt(int64(l+31) / 32) - n.Mul(n, GasRipemdWord) - return n.Add(n, GasRipemdBase) - }, ripemd160Func}, - - string(common.LeftPadBytes([]byte{4}, 20)): &PrecompiledAccount{func(l int) *big.Int { - n := big.NewInt(int64(l+31) / 32) - n.Mul(n, GasIdentityWord) - - return n.Add(n, GasIdentityBase) - }, memCpy}, - } -} - -func sha256Func(in []byte) []byte { - return crypto.Sha256(in) -} - -func ripemd160Func(in []byte) []byte { - return common.LeftPadBytes(crypto.Ripemd160(in), 32) -} - -func ecrecoverFunc(in []byte) []byte { - // In case of an invalid sig. Defaults to return nil - defer func() { recover() }() - - hash := in[:32] - v := common.BigD(in[32:64]).Bytes()[0] - 27 - sig := append(in[64:], v) - - return common.LeftPadBytes(crypto.Sha3(crypto.Ecrecover(append(hash, sig...))[1:])[12:], 32) -} - -func memCpy(in []byte) []byte { - return in -} |