Transaction execution fixes

This commit is contained in:
obscuren
2014-11-12 01:36:36 +01:00
parent 9bb1ac7564
commit 60cdb1148c
12 changed files with 61 additions and 33 deletions

View File

@@ -319,8 +319,8 @@ func (block *Block) Trie() *trie.Trie {
return block.state.Trie
}
func (block *Block) GetRoot() interface{} {
return block.state.Trie.Root
func (block *Block) Root() interface{} {
return block.state.Root()
}
func (block *Block) Diff() *big.Int {
@@ -340,7 +340,7 @@ func (block *Block) miningHeader() []interface{} {
// Coinbase address
block.Coinbase,
// root state
block.state.Trie.Root,
block.Root(),
// tx root
block.TxSha,
// Sha of tx
@@ -393,7 +393,7 @@ func (block *Block) String() string {
block.PrevHash,
block.UncleSha,
block.Coinbase,
block.state.Trie.Root,
block.Root(),
block.TxSha,
block.ReceiptSha,
block.LogsBloom,

View File

@@ -161,7 +161,7 @@ done:
cumulative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, txGas))
bloom := ethutil.LeftPadBytes(LogsBloom(state.Logs()).Bytes(), 64)
receipt := &Receipt{ethutil.CopyBytes(state.Root()), cumulative, bloom, state.Logs()}
//fmt.Println(receipt)
fmt.Println(receipt)
// Notify all subscribers
go self.eth.EventMux().Post(TxPostEvent{tx})
@@ -217,13 +217,11 @@ func (sm *BlockManager) ProcessWithParent(block, parent *Block) (td *big.Int, me
}
//block.SetReceipts(receipts)
/*
txSha := DeriveSha(block.transactions)
if bytes.Compare(txSha, block.TxSha) != 0 {
err = fmt.Errorf("Error validating transaction sha. Received %x, got %x", block.TxSha, txSha)
return
}
*/
txSha := DeriveSha(block.transactions)
if bytes.Compare(txSha, block.TxSha) != 0 {
err = fmt.Errorf("Error validating transaction sha. Received %x, got %x", block.TxSha, txSha)
return
}
receiptSha := DeriveSha(receipts)
if bytes.Compare(receiptSha, block.ReceiptSha) != 0 {
@@ -250,7 +248,7 @@ func (sm *BlockManager) ProcessWithParent(block, parent *Block) (td *big.Int, me
state.Update()
if !block.State().Cmp(state) {
err = fmt.Errorf("Invalid merkle root.\nrec: %x\nis: %x", block.State().Trie.Root, state.Trie.Root)
err = fmt.Errorf("Invalid merkle root.\nrec: %x\nis: %x", block.State().Root(), state.Root())
return
}

View File

@@ -47,7 +47,7 @@ func (bc *ChainManager) NewBlock(coinbase []byte) *Block {
hash := ZeroHash256
if bc.CurrentBlock != nil {
root = bc.CurrentBlock.state.Trie.Root
root = bc.CurrentBlock.Root()
hash = bc.LastBlockHash
}

View File

@@ -247,6 +247,8 @@ func (self *StateTransition) Eval(msg *state.Message, script []byte, context *st
)
evm := vm.New(env, vm.DebugVmTy)
// TMP this will change in the refactor
callerClosure.SetExecution(vm.NewExecution(evm, nil, nil, nil, nil, self.tx.Value))
ret, _, err = callerClosure.Call(evm, self.tx.Data)
return