aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/gethrpctest/main.go2
-rw-r--r--crypto/crypto.go13
-rw-r--r--tests/block_test_util.go59
3 files changed, 18 insertions, 56 deletions
diff --git a/cmd/gethrpctest/main.go b/cmd/gethrpctest/main.go
index 38016fb35..b8b92a509 100644
--- a/cmd/gethrpctest/main.go
+++ b/cmd/gethrpctest/main.go
@@ -123,7 +123,7 @@ func MakeSystemNode(keydir string, privkey string, test *tests.BlockTest) (*node
}
// Initialize and register the Ethereum protocol
db, _ := ethdb.NewMemDatabase()
- if _, err := test.InsertPreState(db, accman); err != nil {
+ if _, err := test.InsertPreState(db); err != nil {
return nil, err
}
ethConf := &eth.Config{
diff --git a/crypto/crypto.go b/crypto/crypto.go
index f1f6affac..cd0e4e101 100644
--- a/crypto/crypto.go
+++ b/crypto/crypto.go
@@ -217,19 +217,6 @@ func Decrypt(prv *ecdsa.PrivateKey, ct []byte) ([]byte, error) {
return key.Decrypt(rand.Reader, ct, nil, nil)
}
-// Used only by block tests.
-func ImportBlockTestKey(privKeyBytes []byte) error {
- ks := NewKeyStorePassphrase(common.DefaultDataDir()+"/keystore", LightScryptN, LightScryptP)
- ecKey := ToECDSA(privKeyBytes)
- key := &Key{
- Id: uuid.NewRandom(),
- Address: PubkeyToAddress(ecKey.PublicKey),
- PrivateKey: ecKey,
- }
- err := ks.StoreKey(key, "")
- return err
-}
-
// creates a Key and stores that in the given KeyStore by decrypting a presale key JSON
func ImportPreSaleKey(keyStore KeyStore, keyJSON []byte, password string) (*Key, error) {
key, err := decryptPreSaleKey(keyJSON, password)
diff --git a/tests/block_test_util.go b/tests/block_test_util.go
index 482a9ae0a..9b00e516a 100644
--- a/tests/block_test_util.go
+++ b/tests/block_test_util.go
@@ -22,23 +22,18 @@ import (
"fmt"
"io"
"math/big"
- "path/filepath"
"runtime"
"strconv"
"strings"
- "time"
- "github.com/ethereum/go-ethereum/accounts"
+ "github.com/ethereum/ethash"
"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/crypto"
- "github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger/glog"
- "github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/rlp"
)
@@ -160,45 +155,39 @@ func runBlockTests(homesteadBlock *big.Int, bt map[string]*BlockTest, skipTests
}
return nil
-
}
-func runBlockTest(homesteadBlock *big.Int, test *BlockTest) error {
- ks := crypto.NewKeyStorePassphrase(filepath.Join(common.DefaultDataDir(), "keystore"), crypto.StandardScryptN, crypto.StandardScryptP)
- am := accounts.NewManager(ks)
- db, _ := ethdb.NewMemDatabase()
+func runBlockTest(homesteadBlock *big.Int, test *BlockTest) error {
// import pre accounts & construct test genesis block & state root
- _, err := test.InsertPreState(db, am)
- if err != nil {
+ db, _ := ethdb.NewMemDatabase()
+ if _, err := test.InsertPreState(db); err != nil {
return fmt.Errorf("InsertPreState: %v", err)
}
- cfg := &eth.Config{
- ChainConfig: &core.ChainConfig{HomesteadBlock: homesteadBlock},
- TestGenesisState: db,
- TestGenesisBlock: test.Genesis,
- Etherbase: common.Address{},
- AccountManager: am,
- PowShared: true,
- }
- ethereum, err := eth.New(&node.ServiceContext{EventMux: new(event.TypeMux)}, cfg)
+ core.WriteTd(db, test.Genesis.Hash(), test.Genesis.Difficulty())
+ core.WriteBlock(db, test.Genesis)
+ core.WriteCanonicalHash(db, test.Genesis.Hash(), test.Genesis.NumberU64())
+ core.WriteHeadBlockHash(db, test.Genesis.Hash())
+ evmux := new(event.TypeMux)
+ config := &core.ChainConfig{HomesteadBlock: homesteadBlock}
+ chain, err := core.NewBlockChain(db, config, ethash.NewShared(), evmux)
if err != nil {
return err
}
- cm := ethereum.BlockChain()
+
//vm.Debug = true
- validBlocks, err := test.TryBlocksInsert(cm)
+ validBlocks, err := test.TryBlocksInsert(chain)
if err != nil {
return err
}
lastblockhash := common.HexToHash(test.lastblockhash)
- cmlast := cm.LastBlockHash()
+ cmlast := chain.LastBlockHash()
if lastblockhash != cmlast {
return fmt.Errorf("lastblockhash validation mismatch: want: %x, have: %x", lastblockhash, cmlast)
}
- newDB, err := cm.State()
+ newDB, err := chain.State()
if err != nil {
return err
}
@@ -206,21 +195,17 @@ func runBlockTest(homesteadBlock *big.Int, test *BlockTest) error {
return fmt.Errorf("post state validation failed: %v", err)
}
- return test.ValidateImportedHeaders(cm, validBlocks)
+ return test.ValidateImportedHeaders(chain, validBlocks)
}
// InsertPreState populates the given database with the genesis
// accounts defined by the test.
-func (t *BlockTest) InsertPreState(db ethdb.Database, am *accounts.Manager) (*state.StateDB, error) {
+func (t *BlockTest) InsertPreState(db ethdb.Database) (*state.StateDB, error) {
statedb, err := state.New(common.Hash{}, db)
if err != nil {
return nil, err
}
for addrString, acct := range t.preAccounts {
- addr, err := hex.DecodeString(addrString)
- if err != nil {
- return nil, err
- }
code, err := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
if err != nil {
return nil, err
@@ -233,16 +218,6 @@ func (t *BlockTest) InsertPreState(db ethdb.Database, am *accounts.Manager) (*st
if err != nil {
return nil, err
}
-
- if acct.PrivateKey != "" {
- privkey, err := hex.DecodeString(strings.TrimPrefix(acct.PrivateKey, "0x"))
- err = crypto.ImportBlockTestKey(privkey)
- err = am.TimedUnlock(common.BytesToAddress(addr), "", 999999*time.Second)
- if err != nil {
- return nil, err
- }
- }
-
obj := statedb.CreateAccount(common.HexToAddress(addrString))
obj.SetCode(code)
obj.SetBalance(balance)