core/types, params: EIP#155
This commit is contained in:
@ -29,6 +29,7 @@ import (
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core"
|
||||
"github.com/ethereum/go-ethereum/core/state"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/core/vm"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/ethdb"
|
||||
@ -225,7 +226,7 @@ func RunState(chainConfig *params.ChainConfig, statedb *state.StateDB, env, tx m
|
||||
|
||||
key, _ := hex.DecodeString(tx["secretKey"])
|
||||
addr := crypto.PubkeyToAddress(crypto.ToECDSA(key).PublicKey)
|
||||
message := NewMessage(addr, to, data, value, gas, price, nonce)
|
||||
message := types.NewMessage(addr, to, nonce, value, gas, price, data)
|
||||
vmenv := NewEnvFromMap(chainConfig, statedb, env, tx)
|
||||
vmenv.origin = addr
|
||||
|
||||
|
@ -159,16 +159,11 @@ func verifyTxFields(txTest TransactionTest, decodedTx *types.Transaction) (err e
|
||||
}
|
||||
}()
|
||||
|
||||
var (
|
||||
decodedSender common.Address
|
||||
)
|
||||
var decodedSender common.Address
|
||||
|
||||
chainConfig := ¶ms.ChainConfig{HomesteadBlock: params.MainNetHomesteadBlock}
|
||||
if chainConfig.IsHomestead(common.String2Big(txTest.Blocknumber)) {
|
||||
decodedSender, err = decodedTx.From()
|
||||
} else {
|
||||
decodedSender, err = decodedTx.FromFrontier()
|
||||
}
|
||||
signer := types.MakeSigner(chainConfig, common.String2Big(txTest.Blocknumber))
|
||||
decodedSender, err = types.Sender(signer, decodedTx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -198,7 +193,7 @@ func verifyTxFields(txTest TransactionTest, decodedTx *types.Transaction) (err e
|
||||
return fmt.Errorf("Nonce mismatch: %v %v", expectedNonce, decodedTx.Nonce())
|
||||
}
|
||||
|
||||
v, r, s := decodedTx.SignatureValues()
|
||||
v, r, s := types.SignatureValues(signer, decodedTx)
|
||||
expectedR := mustConvertBigInt(txTest.Transaction.R, 16)
|
||||
if r.Cmp(expectedR) != 0 {
|
||||
return fmt.Errorf("R mismatch: %v %v", expectedR, r)
|
||||
|
@ -282,26 +282,3 @@ func (self *Env) Create(caller vm.ContractRef, data []byte, gas, price, value *b
|
||||
return core.Create(self, caller, data, gas, price, value)
|
||||
}
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
from common.Address
|
||||
to *common.Address
|
||||
value, gas, price *big.Int
|
||||
data []byte
|
||||
nonce uint64
|
||||
}
|
||||
|
||||
func NewMessage(from common.Address, to *common.Address, data []byte, value, gas, price *big.Int, nonce uint64) Message {
|
||||
return Message{from, to, value, gas, price, data, nonce}
|
||||
}
|
||||
|
||||
func (self Message) Hash() []byte { return nil }
|
||||
func (self Message) From() (common.Address, error) { return self.from, nil }
|
||||
func (self Message) FromFrontier() (common.Address, error) { return self.from, nil }
|
||||
func (self Message) To() *common.Address { return self.to }
|
||||
func (self Message) GasPrice() *big.Int { return self.price }
|
||||
func (self Message) Gas() *big.Int { return self.gas }
|
||||
func (self Message) Value() *big.Int { return self.value }
|
||||
func (self Message) Nonce() uint64 { return self.nonce }
|
||||
func (self Message) CheckNonce() bool { return true }
|
||||
func (self Message) Data() []byte { return self.data }
|
||||
|
@ -225,7 +225,12 @@ func RunVm(state *state.StateDB, env, exec map[string]string) ([]byte, vm.Logs,
|
||||
|
||||
caller := state.GetOrNewStateObject(from)
|
||||
|
||||
vmenv := NewEnvFromMap(¶ms.ChainConfig{params.MainNetHomesteadBlock, params.MainNetDAOForkBlock, true, nil, common.Hash{}, nil}, state, env, exec)
|
||||
chainConfig := ¶ms.ChainConfig{
|
||||
HomesteadBlock: params.MainNetHomesteadBlock,
|
||||
DAOForkBlock: params.MainNetDAOForkBlock,
|
||||
DAOForkSupport: true,
|
||||
}
|
||||
vmenv := NewEnvFromMap(chainConfig, state, env, exec)
|
||||
vmenv.vmTest = true
|
||||
vmenv.skipTransfer = true
|
||||
vmenv.initial = true
|
||||
|
Reference in New Issue
Block a user