Skip to content

Commit

Permalink
add code_hash to trace
Browse files Browse the repository at this point in the history
  • Loading branch information
0xmountaintop committed Mar 30, 2022
1 parent 8ccc105 commit 360115e
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 19 deletions.
14 changes: 8 additions & 6 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -1347,9 +1347,10 @@ func (bc *BlockChain) writeBlockWithState(block *types.Block, receipts []*types.
// Fill blockResult content
func (bc *BlockChain) writeBlockResult(state *state.StateDB, block *types.Block, blockResult *types.BlockResult) {
coinbase := types.AccountProofWrapper{
Address: block.Coinbase(),
Nonce: state.GetNonce(block.Coinbase()),
Balance: state.GetBalance(block.Coinbase()),
Address: block.Coinbase(),
Nonce: state.GetNonce(block.Coinbase()),
Balance: state.GetBalance(block.Coinbase()),
CodeHash: state.GetCodeHash(block.Coinbase()),
}
// Get coinbase address's account proof.
proof, err := state.GetProof(block.Coinbase())
Expand All @@ -1369,9 +1370,10 @@ func (bc *BlockChain) writeBlockResult(state *state.StateDB, block *types.Block,
// Get sender's address.
from, _ := types.Sender(types.MakeSigner(bc.chainConfig, block.Number()), tx)
evmTrace.Sender = &types.AccountProofWrapper{
Address: from,
Nonce: state.GetNonce(from),
Balance: state.GetBalance(from),
Address: from,
Nonce: state.GetNonce(from),
Balance: state.GetBalance(from),
CodeHash: state.GetCodeHash(from),
}
// Get sender's account proof.
proof, err := state.GetProof(from)
Expand Down
11 changes: 6 additions & 5 deletions core/types/l2trace.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,12 @@ type ExtraData struct {
}

type AccountProofWrapper struct {
Address common.Address `json:"address,omitempty"`
Nonce uint64 `json:"nonce,omitempty"`
Balance *big.Int `json:"balance,omitempty"`
Proof []string `json:"proof,omitempty"`
Storage *StorageProofWrapper `json:"storage,omitempty"` // StorageProofWrapper can be empty if irrelated to storage operation
Address common.Address `json:"address,omitempty"`
Nonce uint64 `json:"nonce,omitempty"`
Balance *big.Int `json:"balance,omitempty"`
CodeHash common.Hash `json:"code_hash,omitempty"`
Proof []string `json:"proof,omitempty"`
Storage *StorageProofWrapper `json:"storage,omitempty"` // StorageProofWrapper can be empty if irrelated to storage operation
}

// while key & value can also be retrieved from StructLogRes.Storage,
Expand Down
18 changes: 10 additions & 8 deletions core/vm/logger_trace.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,11 @@ func getWrappedProofForAddr(l *StructLogger, address common.Address) (*types.Acc
}

return &types.AccountProofWrapper{
Address: address,
Nonce: l.env.StateDB.GetNonce(address),
Balance: l.env.StateDB.GetBalance(address),
Proof: encodeProof(proof),
Address: address,
Nonce: l.env.StateDB.GetNonce(address),
Balance: l.env.StateDB.GetBalance(address),
CodeHash: l.env.StateDB.GetCodeHash(address),
Proof: encodeProof(proof),
}, nil
}

Expand All @@ -147,10 +148,11 @@ func getWrappedProofForStorage(l *StructLogger, address common.Address, key comm
}

return &types.AccountProofWrapper{
Address: address,
Nonce: l.env.StateDB.GetNonce(address),
Balance: l.env.StateDB.GetBalance(address),
Proof: encodeProof(proof),
Address: address,
Nonce: l.env.StateDB.GetNonce(address),
Balance: l.env.StateDB.GetBalance(address),
CodeHash: l.env.StateDB.GetCodeHash(address),
Proof: encodeProof(proof),
Storage: &types.StorageProofWrapper{
Key: key.String(),
Value: l.env.StateDB.GetState(address, key).String(),
Expand Down

0 comments on commit 360115e

Please sign in to comment.