Skip to content

Commit

Permalink
To and From slices do not need to be pointers
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Seiler authored and Michael Seiler committed Jul 4, 2024
1 parent 4bdd290 commit 3473837
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 27 deletions.
4 changes: 2 additions & 2 deletions chain/types/ethtypes/eth_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -1049,13 +1049,13 @@ type EthTraceFilterCriteria struct {
// Optional, default: nil.
// The JSON decoding must treat a string as equivalent to an array with one value, for example
// "0x8888f1f195afa192cfee86069858" must be decoded as [ "0x8888f1f195afa192cfee86069858" ]
FromAddress *[]string `json:"fromAddress,omitempty"`
FromAddress []string `json:"fromAddress,omitempty"`

// Actor address or a list of addresses to which event logs should be sent.
// Optional, default: nil.
// The JSON decoding must treat a string as equivalent to an array with one value, for example
// "0x8888f1f195afa192cfee86069858" must be decoded as [ "0x8888f1f195afa192cfee86069858" ]
ToAddress *[]string `json:"toAddress,omitempty"`
ToAddress []string `json:"toAddress,omitempty"`

// Restricts traces returned to those emitted after this epoch (in hex).
// Optional, default: 0.
Expand Down
4 changes: 2 additions & 2 deletions itests/eth_transactions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -719,8 +719,8 @@ func TestTraceFilter(t *testing.T) {
filter = ethtypes.EthTraceFilterCriteria{
FromBlock: &fromBlock,
ToBlock: &toBlock,
FromAddress: &[]string{ethAddr.String()},
ToAddress: &[]string{contractAddr.String()},
FromAddress: []string{ethAddr.String()},
ToAddress: []string{contractAddr.String()},
}

// Trace filter should find the transaction
Expand Down
39 changes: 16 additions & 23 deletions node/impl/full/eth.go
Original file line number Diff line number Diff line change
Expand Up @@ -1080,21 +1080,17 @@ func (a *EthModule) EthTraceFilter(ctx context.Context, filter ethtypes.EthTrace

traceCounter := 0

var fromDecodedAddresses *[]ethtypes.EthAddress
var toDecodedAddresses *[]ethtypes.EthAddress
var fromDecodedAddresses []ethtypes.EthAddress
var toDecodedAddresses []ethtypes.EthAddress

if filter.FromAddress != nil {
fromDecodedAddresses, err = decodeAddressFilter(filter.FromAddress)
if err != nil {
return nil, xerrors.Errorf("cannot decode FromAddress: %w", err)
}
fromDecodedAddresses, err = decodeAddressFilter(filter.FromAddress)
if err != nil {
return nil, xerrors.Errorf("cannot decode FromAddress: %w", err)
}

if filter.ToAddress != nil {
toDecodedAddresses, err = decodeAddressFilter(filter.ToAddress)
if err != nil {
return nil, xerrors.Errorf("cannot decode ToAddress: %w", err)
}
toDecodedAddresses, err = decodeAddressFilter(filter.ToAddress)
if err != nil {
return nil, xerrors.Errorf("cannot decode ToAddress: %w", err)
}

for blkNum := fromBlock; blkNum <= toBlock; blkNum++ {
Expand Down Expand Up @@ -1134,25 +1130,22 @@ func (a *EthModule) EthTraceFilter(ctx context.Context, filter ethtypes.EthTrace
return results, nil
}

func decodeAddressFilter(addresses *[]string) (*[]ethtypes.EthAddress, error) {
if addresses == nil || len(*addresses) == 0 {
return nil, errors.New("addresses is nil or empty")
}
func decodeAddressFilter(addresses []string) ([]ethtypes.EthAddress, error) {
var decodedAddresses []ethtypes.EthAddress
for _, addr := range *addresses {
for _, addr := range addresses {
ethAddr, err := ethtypes.ParseEthAddress(addr)
if err != nil {
return nil, xerrors.Errorf("invalid address: %w", err)
}
decodedAddresses = append(decodedAddresses, ethAddr)
}

return &decodedAddresses, nil
return decodedAddresses, nil

}

// matchFilterCriteria checks if a trace matches the filter criteria.
func matchFilterCriteria(trace *ethtypes.EthTraceBlock, filter ethtypes.EthTraceFilterCriteria, fromDecodedAddresses *[]ethtypes.EthAddress, toDecodedAddresses *[]ethtypes.EthAddress) (bool, error) {
func matchFilterCriteria(trace *ethtypes.EthTraceBlock, filter ethtypes.EthTraceFilterCriteria, fromDecodedAddresses []ethtypes.EthAddress, toDecodedAddresses []ethtypes.EthAddress) (bool, error) {

var traceTo ethtypes.EthAddress
var traceFrom ethtypes.EthAddress
Expand Down Expand Up @@ -1183,9 +1176,9 @@ func matchFilterCriteria(trace *ethtypes.EthTraceBlock, filter ethtypes.EthTrace
}

// Match FromAddress
if fromDecodedAddresses != nil && len(*fromDecodedAddresses) > 0 {
if len(fromDecodedAddresses) > 0 {
fromMatch := false
for _, ethAddr := range *fromDecodedAddresses {
for _, ethAddr := range fromDecodedAddresses {
if traceFrom == ethAddr {
fromMatch = true
break
Expand All @@ -1197,9 +1190,9 @@ func matchFilterCriteria(trace *ethtypes.EthTraceBlock, filter ethtypes.EthTrace
}

// Match ToAddress
if toDecodedAddresses != nil && len(*toDecodedAddresses) > 0 {
if len(toDecodedAddresses) > 0 {
toMatch := false
for _, ethAddr := range *toDecodedAddresses {
for _, ethAddr := range toDecodedAddresses {
if traceTo == ethAddr {
toMatch = true
break
Expand Down

0 comments on commit 3473837

Please sign in to comment.