Fixed inconsistencies
This commit is contained in:
@@ -104,18 +104,21 @@ func (self *StateManager) Stop() {
|
||||
}
|
||||
|
||||
func (self *StateManager) updateThread() {
|
||||
blockChan := self.eth.Eventer().Register("block")
|
||||
blockChan := self.eth.Eventer().Register("blocks")
|
||||
|
||||
out:
|
||||
for {
|
||||
select {
|
||||
case event := <-blockChan:
|
||||
block := event.Data.(*Block)
|
||||
err := self.Process(block, false)
|
||||
if err != nil {
|
||||
statelogger.Infoln(err)
|
||||
statelogger.Debugf("Block #%v failed (%x...)\n", block.Number, block.Hash()[0:4])
|
||||
statelogger.Debugln(block)
|
||||
blocks := event.Data.(Blocks)
|
||||
for _, block := range blocks {
|
||||
err := self.Process(block, false)
|
||||
if err != nil {
|
||||
statelogger.Infoln(err)
|
||||
statelogger.Debugf("Block #%v failed (%x...)\n", block.Number, block.Hash()[0:4])
|
||||
statelogger.Debugln(block)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
case <-self.quit:
|
||||
|
@@ -292,9 +292,9 @@ func (self *StateTransition) Eval(msg *ethstate.Message, script []byte, context
|
||||
func MakeContract(tx *Transaction, state *ethstate.State) *ethstate.StateObject {
|
||||
// Create contract if there's no recipient
|
||||
if tx.IsContract() {
|
||||
addr := tx.CreationAddress()
|
||||
addr := tx.CreationAddress(state)
|
||||
|
||||
contract := state.NewStateObject(addr)
|
||||
contract := state.GetOrNewStateObject(addr)
|
||||
contract.InitCode = tx.Data
|
||||
contract.State = ethstate.New(ethtrie.New(ethutil.Config.Db, ""))
|
||||
|
||||
|
@@ -6,6 +6,7 @@ import (
|
||||
"math/big"
|
||||
|
||||
"github.com/ethereum/eth-go/ethcrypto"
|
||||
"github.com/ethereum/eth-go/ethstate"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"github.com/obscuren/secp256k1-go"
|
||||
)
|
||||
@@ -77,8 +78,14 @@ func (tx *Transaction) IsContract() bool {
|
||||
return tx.CreatesContract()
|
||||
}
|
||||
|
||||
func (tx *Transaction) CreationAddress() []byte {
|
||||
return ethcrypto.Sha3Bin(ethutil.NewValue([]interface{}{tx.Sender(), tx.Nonce}).Encode())[12:]
|
||||
func (tx *Transaction) CreationAddress(state *ethstate.State) []byte {
|
||||
// Generate a new address
|
||||
addr := ethcrypto.Sha3Bin(ethutil.NewValue([]interface{}{tx.Sender(), tx.Nonce}).Encode())[12:]
|
||||
//for i := uint64(0); state.GetStateObject(addr) != nil; i++ {
|
||||
// addr = ethcrypto.Sha3Bin(ethutil.NewValue([]interface{}{tx.Sender(), tx.Nonce + i}).Encode())[12:]
|
||||
//}
|
||||
|
||||
return addr
|
||||
}
|
||||
|
||||
func (tx *Transaction) Signature(key []byte) []byte {
|
||||
|
Reference in New Issue
Block a user