good morning!!!!

Skip to content
Snippets Groups Projects
Commit 82b5a8af authored by Taylor Gerring's avatar Taylor Gerring
Browse files

DRY up height logic

parent 865f3101
No related branches found
No related tags found
No related merge requests found
...@@ -116,22 +116,13 @@ func (self *XEth) DefaultGasPrice() *big.Int { return defaultGasPrice } ...@@ -116,22 +116,13 @@ func (self *XEth) DefaultGasPrice() *big.Int { return defaultGasPrice }
func (self *XEth) RemoteMining() *miner.RemoteAgent { return self.agent } func (self *XEth) RemoteMining() *miner.RemoteAgent { return self.agent }
func (self *XEth) AtStateNum(num int64) *XEth { func (self *XEth) AtStateNum(num int64) *XEth {
chain := self.backend.ChainManager() block := self.getBlockByHeight(num)
var block *types.Block
// -1 generally means "latest"
// -2 means "pending", which has no blocknum
if num < 0 {
num = chain.CurrentBlock().Number().Int64()
}
block = chain.GetBlockByNumber(uint64(num))
var st *state.StateDB var st *state.StateDB
if block != nil { if block != nil {
st = state.New(block.Root(), self.backend.StateDb()) st = state.New(block.Root(), self.backend.StateDb())
} else { } else {
st = chain.State() st = self.backend.ChainManager().State()
} }
return self.WithState(st) return self.WithState(st)
} }
...@@ -149,6 +140,22 @@ func (self *XEth) State() *State { return self.state } ...@@ -149,6 +140,22 @@ func (self *XEth) State() *State { return self.state }
func (self *XEth) Whisper() *Whisper { return self.whisper } func (self *XEth) Whisper() *Whisper { return self.whisper }
func (self *XEth) getBlockByHeight(height int64) *types.Block {
var num uint64
// -1 means "latest"
// -2 means "pending", which has no blocknum
if height <= -2 {
return &types.Block{}
} else if height == -1 {
num = self.CurrentBlock().NumberU64()
} else {
num = uint64(height)
}
return self.backend.ChainManager().GetBlockByNumber(num)
}
func (self *XEth) BlockByHash(strHash string) *Block { func (self *XEth) BlockByHash(strHash string) *Block {
hash := common.HexToHash(strHash) hash := common.HexToHash(strHash)
block := self.backend.ChainManager().GetBlock(hash) block := self.backend.ChainManager().GetBlock(hash)
...@@ -172,29 +179,11 @@ func (self *XEth) EthTransactionByHash(hash string) *types.Transaction { ...@@ -172,29 +179,11 @@ func (self *XEth) EthTransactionByHash(hash string) *types.Transaction {
} }
func (self *XEth) BlockByNumber(num int64) *Block { func (self *XEth) BlockByNumber(num int64) *Block {
if num == -2 { return NewBlock(self.getBlockByHeight(num))
// "pending" is non-existant
return &Block{}
}
if num == -1 {
return NewBlock(self.CurrentBlock())
}
return NewBlock(self.backend.ChainManager().GetBlockByNumber(uint64(num)))
} }
func (self *XEth) EthBlockByNumber(num int64) *types.Block { func (self *XEth) EthBlockByNumber(num int64) *types.Block {
if num == -2 { return self.getBlockByHeight(num)
// "pending" is non-existant
return &types.Block{}
}
if num == -1 {
return self.CurrentBlock()
}
return self.backend.ChainManager().GetBlockByNumber(uint64(num))
} }
func (self *XEth) CurrentBlock() *types.Block { func (self *XEth) CurrentBlock() *types.Block {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment