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
Nonce *uint64 `json:"nonce,omitempty"`
// 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]
// SELFDESTRUCT: [contract addresss accountProof, stack.nth_last(0) addresss accountProof]
// SELFBALANCE: [contract addresss 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

View file

@ -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 addresss code_hash
func traceToAddressCodeHash(l *StructLogger, scope *ScopeContext, extraData *types.ExtraData) error {
// traceToAddressCode gets tx.to addresss 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
}
}