From 80f26086eeb126cb87000f283cb5ccc3df95dbcc Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Wed, 21 Oct 2015 02:31:46 +0200 Subject: core, tests: get_hash fix Make sure that we're fetching the hash from the current chain and not the canonical chain. --- core/vm/environment.go | 2 +- core/vm_env.go | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'core') diff --git a/core/vm/environment.go b/core/vm/environment.go index ec739b26c..299d12674 100644 --- a/core/vm/environment.go +++ b/core/vm/environment.go @@ -39,7 +39,7 @@ type Environment interface { // The block number this VM is invoken on BlockNumber() *big.Int // The n'th hash ago from this block number - GetHash(n uint64) common.Hash + GetHash(uint64) common.Hash // The handler's address Coinbase() common.Address // The current time (block time) diff --git a/core/vm_env.go b/core/vm_env.go index 715fde52f..c8b50debc 100644 --- a/core/vm_env.go +++ b/core/vm_env.go @@ -59,8 +59,10 @@ func (self *VMEnv) SetDepth(i int) { self.depth = i } func (self *VMEnv) VmType() vm.Type { return self.typ } func (self *VMEnv) SetVmType(t vm.Type) { self.typ = t } func (self *VMEnv) GetHash(n uint64) common.Hash { - if block := self.chain.GetBlockByNumber(n); block != nil { - return block.Hash() + for block := self.chain.GetBlock(self.header.ParentHash); block != nil; block = self.chain.GetBlock(block.ParentHash()) { + if block.NumberU64() == n { + return block.Hash() + } } return common.Hash{} -- cgit v1.2.3