diff --git a/core/block_cache.go b/core/block_cache.go
deleted file mode 100644
index 0fd711448..000000000
--- a/core/block_cache.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package core
-
-import (
- "sync"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/types"
-)
-
-// BlockCache implements a caching mechanism specifically for blocks and uses FILO to pop
-type BlockCache struct {
- size int
-
- hashes []common.Hash
- blocks map[common.Hash]*types.Block
-
- mu sync.RWMutex
-}
-
-// Creates and returns a `BlockCache` with `size`. If `size` is smaller than 1 it will panic
-func NewBlockCache(size int) *BlockCache {
- if size < 1 {
- panic("block cache size not allowed to be smaller than 1")
- }
-
- bc := &BlockCache{size: size}
- bc.Clear()
- return bc
-}
-
-func (bc *BlockCache) Clear() {
- bc.blocks = make(map[common.Hash]*types.Block)
- bc.hashes = nil
-
-}
-
-func (bc *BlockCache) Push(block *types.Block) {
- bc.mu.Lock()
- defer bc.mu.Unlock()
-
- if len(bc.hashes) == bc.size {
- delete(bc.blocks, bc.hashes[0])
-
- // XXX There are a few other options on solving this
- // 1) use a poller / GC like mechanism to clean up untracked objects
- // 2) copy as below
- // re-use the slice and remove the reference to bc.hashes[0]
- // this will allow the element to be garbage collected.
- copy(bc.hashes, bc.hashes[1:])
- } else {
- bc.hashes = append(bc.hashes, common.Hash{})
- }
-
- hash := block.Hash()
- bc.blocks[hash] = block
- bc.hashes[len(bc.hashes)-1] = hash
-}
-
-func (bc *BlockCache) Delete(hash common.Hash) {
- bc.mu.Lock()
- defer bc.mu.Unlock()
-
- if _, ok := bc.blocks[hash]; ok {
- delete(bc.blocks, hash)
- for i, h := range bc.hashes {
- if hash == h {
- bc.hashes = bc.hashes[:i+copy(bc.hashes[i:], bc.hashes[i+1:])]
- // or ? => bc.hashes = append(bc.hashes[:i], bc.hashes[i+1]...)
-
- break
- }
- }
- }
-}
-
-func (bc *BlockCache) Get(hash common.Hash) *types.Block {
- bc.mu.RLock()
- defer bc.mu.RUnlock()
-
- if block, haz := bc.blocks[hash]; haz {
- return block
- }
-
- return nil
-}
-
-func (bc *BlockCache) Has(hash common.Hash) bool {
- bc.mu.RLock()
- defer bc.mu.RUnlock()
-
- _, ok := bc.blocks[hash]
- return ok
-}
-
-func (bc *BlockCache) Each(cb func(int, *types.Block)) {
- bc.mu.Lock()
- defer bc.mu.Unlock()
-
- i := 0
- for _, block := range bc.blocks {
- cb(i, block)
- i++
- }
-}
diff --git a/core/block_cache_test.go b/core/block_cache_test.go
deleted file mode 100644
index ef826d5bd..000000000
--- a/core/block_cache_test.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package core
-
-import (
- "math/big"
- "testing"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/types"
-)
-
-func newChain(size int) (chain []*types.Block) {
- var parentHash common.Hash
- for i := 0; i < size; i++ {
- head := &types.Header{ParentHash: parentHash, Number: big.NewInt(int64(i))}
- block := types.NewBlock(head, nil, nil, nil)
- chain = append(chain, block)
- parentHash = block.Hash()
- }
- return chain
-}
-
-func insertChainCache(cache *BlockCache, chain []*types.Block) {
- for _, block := range chain {
- cache.Push(block)
- }
-}
-
-func TestNewBlockCache(t *testing.T) {
- chain := newChain(3)
- cache := NewBlockCache(2)
- insertChainCache(cache, chain)
-
- if cache.hashes[0] != chain[1].Hash() {
- t.Error("oldest block incorrect")
- }
-}
-
-func TestInclusion(t *testing.T) {
- chain := newChain(3)
- cache := NewBlockCache(3)
- insertChainCache(cache, chain)
-
- for _, block := range chain {
- if b := cache.Get(block.Hash()); b == nil {
- t.Errorf("getting %x failed", block.Hash())
- }
- }
-}
-
-func TestDeletion(t *testing.T) {
- chain := newChain(3)
- cache := NewBlockCache(3)
- insertChainCache(cache, chain)
-
- cache.Delete(chain[1].Hash())
-
- if cache.Has(chain[1].Hash()) {
- t.Errorf("expected %x not to be included")
- }
-}
diff --git a/core/state/state_object.go b/core/state/state_object.go
index 0af0fbd5a..69c64ae40 100644
--- a/core/state/state_object.go
+++ b/core/state/state_object.go
@@ -87,10 +87,6 @@ type StateObject struct {
dirty bool
}
-func (self *StateObject) Reset() {
- self.storage = make(Storage)
-}
-
func NewStateObject(address common.Address, db common.Database) *StateObject {
object := &StateObject{db: db, address: address, balance: new(big.Int), gasPool: new(big.Int), dirty: true}
object.trie = trie.NewSecure((common.Hash{}).Bytes(), db)
@@ -184,14 +180,6 @@ func (self *StateObject) Update() {
}
}
-func (c *StateObject) GetInstr(pc *big.Int) *common.Value {
- if int64(len(c.code)-1) < pc.Int64() {
- return common.NewValue(0)
- }
-
- return common.NewValueFromBytes([]byte{c.code[pc.Int64()]})
-}
-
func (c *StateObject) AddBalance(amount *big.Int) {
c.SetBalance(new(big.Int).Add(c.balance, amount))
@@ -268,10 +256,6 @@ func (self *StateObject) Copy() *StateObject {
return stateObject
}
-func (self *StateObject) Set(stateObject *StateObject) {
- *self = *stateObject
-}
-
//
// Attribute accessors
//
@@ -280,20 +264,11 @@ func (self *StateObject) Balance() *big.Int {
return self.balance
}
-func (c *StateObject) N() *big.Int {
- return big.NewInt(int64(c.nonce))
-}
-
// Returns the address of the contract/account
func (c *StateObject) Address() common.Address {
return c.address
}
-// Returns the initialization Code
-func (c *StateObject) Init() Code {
- return c.initCode
-}
-
func (self *StateObject) Trie() *trie.SecureTrie {
return self.trie
}
@@ -311,11 +286,6 @@ func (self *StateObject) SetCode(code []byte) {
self.dirty = true
}
-func (self *StateObject) SetInitCode(code []byte) {
- self.initCode = code
- self.dirty = true
-}
-
func (self *StateObject) SetNonce(nonce uint64) {
self.nonce = nonce
self.dirty = true
@@ -354,19 +324,6 @@ func (c *StateObject) CodeHash() common.Bytes {
return crypto.Sha3(c.code)
}
-func (c *StateObject) RlpDecode(data []byte) {
- decoder := common.NewValueFromBytes(data)
- c.nonce = decoder.Get(0).Uint()
- c.balance = decoder.Get(1).BigInt()
- c.trie = trie.NewSecure(decoder.Get(2).Bytes(), c.db)
- c.storage = make(map[string]common.Hash)
- c.gasPool = new(big.Int)
-
- c.codeHash = decoder.Get(3).Bytes()
-
- c.code, _ = c.db.Get(c.codeHash)
-}
-
// Storage change object. Used by the manifest for notifying changes to
// the sub channels.
type StorageState struct {
diff --git a/core/state/statedb.go b/core/state/statedb.go
index 577f7162e..b754f0887 100644
--- a/core/state/statedb.go
+++ b/core/state/statedb.go
@@ -18,7 +18,6 @@
package state
import (
- "bytes"
"math/big"
"github.com/ethereum/go-ethereum/common"
@@ -276,10 +275,6 @@ func (self *StateDB) CreateAccount(addr common.Address) *StateObject {
// Setting, copying of the state methods
//
-func (s *StateDB) Cmp(other *StateDB) bool {
- return bytes.Equal(s.trie.Root(), other.trie.Root())
-}
-
func (self *StateDB) Copy() *StateDB {
state := New(common.Hash{}, self.db)
state.trie = self.trie
@@ -311,22 +306,6 @@ func (s *StateDB) Root() common.Hash {
return common.BytesToHash(s.trie.Root())
}
-func (s *StateDB) Trie() *trie.SecureTrie {
- return s.trie
-}
-
-// Resets the trie and all siblings
-func (s *StateDB) Reset() {
- s.trie.Reset()
-
- // Reset all nested states
- for _, stateObject := range s.stateObjects {
- stateObject.Reset()
- }
-
- s.Empty()
-}
-
// Syncs the trie and all siblings
func (s *StateDB) Sync() {
// Sync all nested states
diff --git a/core/types/transaction.go b/core/types/transaction.go
index 28a7e02b3..8260d7423 100644
--- a/core/types/transaction.go
+++ b/core/types/transaction.go
@@ -33,10 +33,6 @@ import (
var ErrInvalidSig = errors.New("invalid v, r, s values")
-func IsContractAddr(addr []byte) bool {
- return len(addr) == 0
-}
-
type Transaction struct {
data txdata
// caches
diff --git a/core/vm/errors.go b/core/vm/errors.go
index 24567e9a1..e2fc84065 100644
--- a/core/vm/errors.go
+++ b/core/vm/errors.go
@@ -25,20 +25,3 @@ import (
var OutOfGasError = errors.New("Out of gas")
var DepthError = fmt.Errorf("Max call depth exceeded (%d)", params.CallCreateDepth)
-
-type StackError struct {
- req, has int
-}
-
-func StackErr(req, has int) StackError {
- return StackError{req, has}
-}
-
-func (self StackError) Error() string {
- return fmt.Sprintf("stack error! require %v, have %v", self.req, self.has)
-}
-
-func IsStackErr(err error) bool {
- _, ok := err.(StackError)
- return ok
-}