Minor tweaks for poc7
This commit is contained in:
parent
0015ce1e35
commit
b417766b36
@ -86,7 +86,7 @@ func (self *BlockPool) Blocks() (blocks ethchain.Blocks) {
|
||||
func (self *BlockPool) FetchHashes(peer *Peer) bool {
|
||||
highestTd := self.eth.HighestTDPeer()
|
||||
|
||||
if (self.peer == nil && peer.td.Cmp(highestTd) >= 0) || (self.peer != nil && peer.td.Cmp(self.peer.td) >= 0) || self.peer == peer {
|
||||
if (self.peer == nil && peer.td.Cmp(highestTd) >= 0) || (self.peer != nil && peer.td.Cmp(self.peer.td) > 0) || self.peer == peer {
|
||||
if self.peer != peer {
|
||||
poollogger.Debugf("Found better suitable peer (%v vs %v)\n", self.td, peer.td)
|
||||
|
||||
@ -102,7 +102,7 @@ func (self *BlockPool) FetchHashes(peer *Peer) bool {
|
||||
peer.doneFetchingHashes = false
|
||||
|
||||
const amount = 256
|
||||
peerlogger.Debugf("Fetching hashes (%d)\n", amount)
|
||||
peerlogger.Debugf("Fetching hashes (%d) %x...\n", amount, peer.lastReceivedHash[0:4])
|
||||
peer.QueueMessage(ethwire.NewMessage(ethwire.MsgGetBlockHashesTy, []interface{}{peer.lastReceivedHash, uint32(amount)}))
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,22 @@ func (bc *BlockChain) NewBlock(coinbase []byte) *Block {
|
||||
return block
|
||||
}
|
||||
|
||||
func (bc *BlockChain) Reset() {
|
||||
AddTestNetFunds(bc.genesisBlock)
|
||||
|
||||
bc.genesisBlock.state.Trie.Sync()
|
||||
// Prepare the genesis block
|
||||
bc.Add(bc.genesisBlock)
|
||||
fk := append([]byte("bloom"), bc.genesisBlock.Hash()...)
|
||||
bc.Ethereum.Db().Put(fk, make([]byte, 255))
|
||||
bc.CurrentBlock = bc.genesisBlock
|
||||
|
||||
bc.SetTotalDifficulty(ethutil.Big("0"))
|
||||
|
||||
// Set the last know difficulty (might be 0x0 as initial value, Genesis)
|
||||
bc.TD = ethutil.BigD(ethutil.Config.Db.LastKnownTD())
|
||||
}
|
||||
|
||||
func (bc *BlockChain) HasBlock(hash []byte) bool {
|
||||
data, _ := ethutil.Config.Db.Get(hash)
|
||||
return len(data) != 0
|
||||
@ -149,28 +165,22 @@ func AddTestNetFunds(block *Block) {
|
||||
}
|
||||
|
||||
func (bc *BlockChain) setLastBlock() {
|
||||
// Prep genesis
|
||||
AddTestNetFunds(bc.genesisBlock)
|
||||
|
||||
data, _ := ethutil.Config.Db.Get([]byte("LastBlock"))
|
||||
if len(data) != 0 {
|
||||
// Prep genesis
|
||||
AddTestNetFunds(bc.genesisBlock)
|
||||
|
||||
block := NewBlockFromBytes(data)
|
||||
bc.CurrentBlock = block
|
||||
bc.LastBlockHash = block.Hash()
|
||||
bc.LastBlockNumber = block.Number.Uint64()
|
||||
|
||||
// Set the last know difficulty (might be 0x0 as initial value, Genesis)
|
||||
bc.TD = ethutil.BigD(ethutil.Config.Db.LastKnownTD())
|
||||
} else {
|
||||
bc.genesisBlock.state.Trie.Sync()
|
||||
// Prepare the genesis block
|
||||
bc.Add(bc.genesisBlock)
|
||||
fk := append([]byte("bloom"), bc.genesisBlock.Hash()...)
|
||||
bc.Ethereum.Db().Put(fk, make([]byte, 255))
|
||||
bc.CurrentBlock = bc.genesisBlock
|
||||
bc.Reset()
|
||||
}
|
||||
|
||||
// Set the last know difficulty (might be 0x0 as initial value, Genesis)
|
||||
bc.TD = ethutil.BigD(ethutil.Config.Db.LastKnownTD())
|
||||
|
||||
chainlogger.Infof("Last block (#%d) %x\n", bc.LastBlockNumber, bc.CurrentBlock.Hash())
|
||||
}
|
||||
|
||||
|
@ -276,15 +276,6 @@ func (self *StateTransition) Eval(msg *ethstate.Message, script []byte, context
|
||||
|
||||
ret, _, err = callerClosure.Call(vm, self.tx.Data)
|
||||
|
||||
if err == nil {
|
||||
// Execute POSTs
|
||||
for e := vm.Queue().Front(); e != nil; e = e.Next() {
|
||||
msg := e.Value.(*ethvm.Message)
|
||||
|
||||
msg.Exec(msg.Addr(), transactor)
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -144,11 +144,10 @@ const (
|
||||
SWAP16 = 0x9f
|
||||
|
||||
// 0xf0 range - closures
|
||||
CREATE = 0xf0
|
||||
CALL = 0xf1
|
||||
RETURN = 0xf2
|
||||
POST = 0xf3
|
||||
CALLSTATELESS = 0xf4
|
||||
CREATE = 0xf0
|
||||
CALL = 0xf1
|
||||
RETURN = 0xf2
|
||||
CALLCODE = 0xf3
|
||||
|
||||
// 0x70 range - other
|
||||
LOG = 0xfe // XXX Unofficial
|
||||
@ -293,11 +292,10 @@ var opCodeToString = map[OpCode]string{
|
||||
SWAP16: "SWAP16",
|
||||
|
||||
// 0xf0 range
|
||||
CREATE: "CREATE",
|
||||
CALL: "CALL",
|
||||
RETURN: "RETURN",
|
||||
POST: "POST",
|
||||
CALLSTATELESS: "CALLSTATELESS",
|
||||
CREATE: "CREATE",
|
||||
CALL: "CALL",
|
||||
RETURN: "RETURN",
|
||||
CALLCODE: "CALLCODE",
|
||||
|
||||
// 0x70 range - other
|
||||
LOG: "LOG",
|
||||
|
@ -3,6 +3,7 @@ package ethpipe
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/ethereum/eth-go/ethchain"
|
||||
@ -92,6 +93,7 @@ func (self *JSPipe) NumberToHuman(balance string) string {
|
||||
}
|
||||
|
||||
func (self *JSPipe) StorageAt(addr, storageAddr string) string {
|
||||
fmt.Println("get", addr, storageAddr)
|
||||
storage := self.World().SafeGet(ethutil.Hex2Bytes(addr)).Storage(ethutil.Hex2Bytes(storageAddr))
|
||||
|
||||
return ethutil.Bytes2Hex(storage.Bytes())
|
||||
|
@ -61,7 +61,7 @@ func (self *Pipe) ExecuteObject(object *Object, data []byte, value, gas, price *
|
||||
vm := ethvm.New(NewEnv(self.Vm.State, block, value.BigInt(), initiator.Address()))
|
||||
vm.Verbose = true
|
||||
|
||||
msg := ethvm.NewMessage(vm, object.Address(), data, gas.BigInt(), price.BigInt(), value.BigInt())
|
||||
msg := ethvm.NewExecution(vm, object.Address(), data, gas.BigInt(), price.BigInt(), value.BigInt())
|
||||
ret, err := msg.Exec(object.Address(), initiator)
|
||||
|
||||
fmt.Println("returned from call", ret, err)
|
||||
|
@ -181,8 +181,6 @@ func (s *State) Reset() {
|
||||
func (s *State) Sync() {
|
||||
// Sync all nested states
|
||||
for _, stateObject := range s.stateObjects {
|
||||
//s.UpdateStateObject(stateObject)
|
||||
|
||||
if stateObject.State == nil {
|
||||
continue
|
||||
}
|
||||
@ -200,9 +198,11 @@ func (self *State) Empty() {
|
||||
}
|
||||
|
||||
func (self *State) Update() {
|
||||
var deleted bool
|
||||
for _, stateObject := range self.stateObjects {
|
||||
if stateObject.remove {
|
||||
self.DeleteStateObject(stateObject)
|
||||
deleted = true
|
||||
} else {
|
||||
stateObject.Sync()
|
||||
|
||||
@ -211,11 +211,13 @@ func (self *State) Update() {
|
||||
}
|
||||
|
||||
// FIXME trie delete is broken
|
||||
valid, t2 := ethtrie.ParanoiaCheck(self.Trie)
|
||||
if !valid {
|
||||
statelogger.Infof("Warn: PARANOIA: Different state root during copy %x vs %x\n", self.Trie.Root, t2.Root)
|
||||
if deleted {
|
||||
valid, t2 := ethtrie.ParanoiaCheck(self.Trie)
|
||||
if !valid {
|
||||
statelogger.Infof("Warn: PARANOIA: Different state root during copy %x vs %x\n", self.Trie.Root, t2.Root)
|
||||
|
||||
self.Trie = t2
|
||||
self.Trie = t2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user