diff --git a/core/types/l2trace.go b/core/types/l2trace.go index 4569180f94..9a728a1198 100644 --- a/core/types/l2trace.go +++ b/core/types/l2trace.go @@ -47,7 +47,7 @@ type ExtraData struct { // CREATE: sender nonce Nonce *uint64 `json:"nonce,omitempty"` // CALL | CALLCODE | DELEGATECALL | STATICCALL: [tx.to address’s code_hash, stack.nth_last(1) address’s code_hash] - CodeHashList []common.Hash `json:"codeHashList,omitempty"` + CodeList [][]byte `json:"codeList,omitempty"` // SSTORE | SLOAD: [storageProof] // SELFDESTRUCT: [contract address’s accountProof, stack.nth_last(0) address’s accountProof] // SELFBALANCE: [contract address’s accountProof] @@ -60,20 +60,20 @@ type ExtraData struct { // NewExtraData create, init and return ExtraData func NewExtraData() *ExtraData { return &ExtraData{ - CodeHashList: make([]common.Hash, 0), - ProofList: make([][]string, 0), + CodeList: make([][]byte, 0), + ProofList: make([][]string, 0), } } // SealExtraData doesn't show empty fields. func (e *ExtraData) SealExtraData() *ExtraData { - if len(e.CodeHashList) == 0 { - e.CodeHashList = nil + if len(e.CodeList) == 0 { + e.CodeList = nil } if len(e.ProofList) == 0 { 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 e diff --git a/core/vm/logger_trace.go b/core/vm/logger_trace.go index 9984d9d7d3..d97e6c14c3 100644 --- a/core/vm/logger_trace.go +++ b/core/vm/logger_trace.go @@ -13,10 +13,10 @@ type traceFunc func(l *StructLogger, scope *ScopeContext, extraData *types.Extra var ( // OpcodeExecs the map to load opcodes' trace funcs. OpcodeExecs = map[OpCode][]traceFunc{ - CALL: {traceToAddressCodeHash, traceLastNAddressCodeHash(1), traceCallerProof, traceLastNAddressProof(1)}, - CALLCODE: {traceToAddressCodeHash, traceLastNAddressCodeHash(1), traceCallerProof, traceLastNAddressProof(1)}, - DELEGATECALL: {traceToAddressCodeHash, traceLastNAddressCodeHash(1)}, - STATICCALL: {traceToAddressCodeHash, traceLastNAddressCodeHash(1)}, + CALL: {traceToAddressCode, traceLastNAddressCode(1), traceCallerProof, traceLastNAddressProof(1)}, + CALLCODE: {traceToAddressCode, traceLastNAddressCode(1), traceCallerProof, traceLastNAddressProof(1)}, + DELEGATECALL: {traceToAddressCode, traceLastNAddressCode(1)}, + STATICCALL: {traceToAddressCode, traceLastNAddressCode(1)}, CREATE: {traceSenderAddress, traceCreatedContractProof, traceNonce}, CREATE2: {traceSenderAddress, traceCreatedContractProof}, SSTORE: {traceStorageProof}, @@ -28,26 +28,26 @@ var ( } ) -// traceToAddressCodeHash gets tx.to address’s code_hash -func traceToAddressCodeHash(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error { +// traceToAddressCode gets tx.to address’s code +func traceToAddressCode(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error { if l.env.To == nil { return nil } - codeHash := l.env.StateDB.GetCodeHash(*l.env.To) - extraData.CodeHashList = append(extraData.CodeHashList, codeHash) + code := l.env.StateDB.GetCode(*l.env.To) + extraData.CodeList = append(extraData.CodeList, code) return nil } -// traceLastNAddressCodeHash -func traceLastNAddressCodeHash(n int) traceFunc { +// traceLastNAddressCode +func traceLastNAddressCode(n int) traceFunc { return func(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error { stack := scope.Stack if stack.len() <= n { return nil } address := common.Address(stack.data[stack.len()-1-n].Bytes20()) - codeHash := l.env.StateDB.GetCodeHash(address) - extraData.CodeHashList = append(extraData.CodeHashList, codeHash) + code := l.env.StateDB.GetCode(address) + extraData.CodeList = append(extraData.CodeList, code) return nil } }