mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-13 15:33:47 +00:00
fix(trace): change codeHash to code (#44)
This commit is contained in:
parent
f07050dd0d
commit
a5999cee90
2 changed files with 18 additions and 18 deletions
|
|
@ -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 address’s code_hash, stack.nth_last(1) address’s code_hash]
|
// 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]
|
// SSTORE | SLOAD: [storageProof]
|
||||||
// SELFDESTRUCT: [contract address’s accountProof, stack.nth_last(0) address’s accountProof]
|
// SELFDESTRUCT: [contract address’s accountProof, stack.nth_last(0) address’s accountProof]
|
||||||
// SELFBALANCE: [contract address’s accountProof]
|
// SELFBALANCE: [contract address’s 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
|
||||||
|
|
|
||||||
|
|
@ -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 address’s code_hash
|
// traceToAddressCode gets tx.to address’s 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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue