mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 18:02:24 +00:00
code only on trie reader
This commit is contained in:
parent
42d3dc85bf
commit
d6c4d58f40
1 changed files with 16 additions and 8 deletions
|
|
@ -136,12 +136,12 @@ func (r *stateReader) Storage(addr common.Address, key common.Hash) (common.Hash
|
||||||
|
|
||||||
// ContractCode implements Reader, retrieving the code associated with a particular account.
|
// ContractCode implements Reader, retrieving the code associated with a particular account.
|
||||||
func (r *stateReader) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) {
|
func (r *stateReader) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) {
|
||||||
return nil, nil
|
return nil, errors.New("not supported")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContractCodeSize implements Reader, returning the size of the code associated with a particular account.
|
// ContractCodeSize implements Reader, returning the size of the code associated with a particular account.
|
||||||
func (r *stateReader) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) {
|
func (r *stateReader) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) {
|
||||||
return 0, nil
|
return 0, errors.New("not supported")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy implements Reader, returning a deep-copied snap reader.
|
// Copy implements Reader, returning a deep-copied snap reader.
|
||||||
|
|
@ -336,9 +336,13 @@ func (r *multiReader) Storage(addr common.Address, slot common.Hash) (common.Has
|
||||||
func (r *multiReader) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) {
|
func (r *multiReader) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) {
|
||||||
var errs []error
|
var errs []error
|
||||||
for _, reader := range r.readers {
|
for _, reader := range r.readers {
|
||||||
code, err := reader.ContractCode(addr, codeHash)
|
// Only trie reader can provide contract code.
|
||||||
if err == nil {
|
if _, ok := reader.(*trieReader); ok {
|
||||||
return code, nil
|
code, err := reader.ContractCode(addr, codeHash)
|
||||||
|
if err == nil {
|
||||||
|
return code, nil
|
||||||
|
}
|
||||||
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, errors.Join(errs...)
|
return nil, errors.Join(errs...)
|
||||||
|
|
@ -348,9 +352,13 @@ func (r *multiReader) ContractCode(addr common.Address, codeHash common.Hash) ([
|
||||||
func (r *multiReader) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) {
|
func (r *multiReader) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) {
|
||||||
var errs []error
|
var errs []error
|
||||||
for _, reader := range r.readers {
|
for _, reader := range r.readers {
|
||||||
size, err := reader.ContractCodeSize(addr, codeHash)
|
// Only trie reader can provide contract code.
|
||||||
if err == nil {
|
if _, ok := reader.(*trieReader); ok {
|
||||||
return size, nil
|
size, err := reader.ContractCodeSize(addr, codeHash)
|
||||||
|
if err == nil {
|
||||||
|
return size, nil
|
||||||
|
}
|
||||||
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0, errors.Join(errs...)
|
return 0, errors.Join(errs...)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue