fix(trace): change codeHash to code (#44)

This commit is contained in:
HAOYUatHZ 2022-03-16 16:17:50 +08:00 committed by GitHub
parent f07050dd0d
commit a5999cee90
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 18 deletions

View file

@ -47,7 +47,7 @@ type ExtraData struct {
// CREATE: sender nonce // CREATE: sender nonce
Nonce *uint64 `json:"nonce,omitempty"` Nonce *uint64 `json:"nonce,omitempty"`
// CALL | CALLCODE | DELEGATECALL | STATICCALL: [tx.to addresss code_hash, stack.nth_last(1) addresss code_hash] // CALL | CALLCODE | DELEGATECALL | STATICCALL: [tx.to addresss code_hash, stack.nth_last(1) addresss code_hash]
CodeHashList []common.Hash `json:"codeHashList,omitempty"` CodeList [][]byte `json:"codeList,omitempty"`
// SSTORE | SLOAD: [storageProof] // SSTORE | SLOAD: [storageProof]
// SELFDESTRUCT: [contract addresss accountProof, stack.nth_last(0) addresss accountProof] // SELFDESTRUCT: [contract addresss accountProof, stack.nth_last(0) addresss accountProof]
// SELFBALANCE: [contract addresss accountProof] // SELFBALANCE: [contract addresss accountProof]
@ -60,20 +60,20 @@ type ExtraData struct {
// NewExtraData create, init and return ExtraData // NewExtraData create, init and return ExtraData
func NewExtraData() *ExtraData { func NewExtraData() *ExtraData {
return &ExtraData{ return &ExtraData{
CodeHashList: make([]common.Hash, 0), CodeList: make([][]byte, 0),
ProofList: make([][]string, 0), ProofList: make([][]string, 0),
} }
} }
// SealExtraData doesn't show empty fields. // SealExtraData doesn't show empty fields.
func (e *ExtraData) SealExtraData() *ExtraData { func (e *ExtraData) SealExtraData() *ExtraData {
if len(e.CodeHashList) == 0 { if len(e.CodeList) == 0 {
e.CodeHashList = nil e.CodeList = nil
} }
if len(e.ProofList) == 0 { if len(e.ProofList) == 0 {
e.ProofList = nil e.ProofList = nil
} }
if e.From == nil && e.Nonce == nil && e.CodeHashList == nil && e.ProofList == nil { if e.From == nil && e.Nonce == nil && e.CodeList == nil && e.ProofList == nil {
return nil return nil
} }
return e return e

View file

@ -13,10 +13,10 @@ type traceFunc func(l *StructLogger, scope *ScopeContext, extraData *types.Extra
var ( var (
// OpcodeExecs the map to load opcodes' trace funcs. // OpcodeExecs the map to load opcodes' trace funcs.
OpcodeExecs = map[OpCode][]traceFunc{ OpcodeExecs = map[OpCode][]traceFunc{
CALL: {traceToAddressCodeHash, traceLastNAddressCodeHash(1), traceCallerProof, traceLastNAddressProof(1)}, CALL: {traceToAddressCode, traceLastNAddressCode(1), traceCallerProof, traceLastNAddressProof(1)},
CALLCODE: {traceToAddressCodeHash, traceLastNAddressCodeHash(1), traceCallerProof, traceLastNAddressProof(1)}, CALLCODE: {traceToAddressCode, traceLastNAddressCode(1), traceCallerProof, traceLastNAddressProof(1)},
DELEGATECALL: {traceToAddressCodeHash, traceLastNAddressCodeHash(1)}, DELEGATECALL: {traceToAddressCode, traceLastNAddressCode(1)},
STATICCALL: {traceToAddressCodeHash, traceLastNAddressCodeHash(1)}, STATICCALL: {traceToAddressCode, traceLastNAddressCode(1)},
CREATE: {traceSenderAddress, traceCreatedContractProof, traceNonce}, CREATE: {traceSenderAddress, traceCreatedContractProof, traceNonce},
CREATE2: {traceSenderAddress, traceCreatedContractProof}, CREATE2: {traceSenderAddress, traceCreatedContractProof},
SSTORE: {traceStorageProof}, SSTORE: {traceStorageProof},
@ -28,26 +28,26 @@ var (
} }
) )
// traceToAddressCodeHash gets tx.to addresss code_hash // traceToAddressCode gets tx.to addresss code
func traceToAddressCodeHash(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error { func traceToAddressCode(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error {
if l.env.To == nil { if l.env.To == nil {
return nil return nil
} }
codeHash := l.env.StateDB.GetCodeHash(*l.env.To) code := l.env.StateDB.GetCode(*l.env.To)
extraData.CodeHashList = append(extraData.CodeHashList, codeHash) extraData.CodeList = append(extraData.CodeList, code)
return nil return nil
} }
// traceLastNAddressCodeHash // traceLastNAddressCode
func traceLastNAddressCodeHash(n int) traceFunc { func traceLastNAddressCode(n int) traceFunc {
return func(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error { return func(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error {
stack := scope.Stack stack := scope.Stack
if stack.len() <= n { if stack.len() <= n {
return nil return nil
} }
address := common.Address(stack.data[stack.len()-1-n].Bytes20()) address := common.Address(stack.data[stack.len()-1-n].Bytes20())
codeHash := l.env.StateDB.GetCodeHash(address) code := l.env.StateDB.GetCode(address)
extraData.CodeHashList = append(extraData.CodeHashList, codeHash) extraData.CodeList = append(extraData.CodeList, code)
return nil return nil
} }
} }