|
|
|
@ -138,16 +138,16 @@ func (ec *Client) getBlock(ctx context.Context, method string, args ...interface |
|
|
|
|
} |
|
|
|
|
// Quick-verify transaction and uncle lists. This mostly helps with debugging the server.
|
|
|
|
|
if head.UncleHash == types.EmptyUncleHash && len(body.UncleHashes) > 0 { |
|
|
|
|
return nil, fmt.Errorf("server returned non-empty uncle list but block header indicates no uncles") |
|
|
|
|
return nil, errors.New("server returned non-empty uncle list but block header indicates no uncles") |
|
|
|
|
} |
|
|
|
|
if head.UncleHash != types.EmptyUncleHash && len(body.UncleHashes) == 0 { |
|
|
|
|
return nil, fmt.Errorf("server returned empty uncle list but block header indicates uncles") |
|
|
|
|
return nil, errors.New("server returned empty uncle list but block header indicates uncles") |
|
|
|
|
} |
|
|
|
|
if head.TxHash == types.EmptyTxsHash && len(body.Transactions) > 0 { |
|
|
|
|
return nil, fmt.Errorf("server returned non-empty transaction list but block header indicates no transactions") |
|
|
|
|
return nil, errors.New("server returned non-empty transaction list but block header indicates no transactions") |
|
|
|
|
} |
|
|
|
|
if head.TxHash != types.EmptyTxsHash && len(body.Transactions) == 0 { |
|
|
|
|
return nil, fmt.Errorf("server returned empty transaction list but block header indicates transactions") |
|
|
|
|
return nil, errors.New("server returned empty transaction list but block header indicates transactions") |
|
|
|
|
} |
|
|
|
|
// Load uncles because they are not included in the block response.
|
|
|
|
|
var uncles []*types.Header |
|
|
|
@ -232,7 +232,7 @@ func (ec *Client) TransactionByHash(ctx context.Context, hash common.Hash) (tx * |
|
|
|
|
} else if json == nil { |
|
|
|
|
return nil, false, ethereum.NotFound |
|
|
|
|
} else if _, r, _ := json.tx.RawSignatureValues(); r == nil { |
|
|
|
|
return nil, false, fmt.Errorf("server returned transaction without signature") |
|
|
|
|
return nil, false, errors.New("server returned transaction without signature") |
|
|
|
|
} |
|
|
|
|
if json.From != nil && json.BlockHash != nil { |
|
|
|
|
setSenderFromServer(json.tx, *json.From, *json.BlockHash) |
|
|
|
@ -284,7 +284,7 @@ func (ec *Client) TransactionInBlock(ctx context.Context, blockHash common.Hash, |
|
|
|
|
if json == nil { |
|
|
|
|
return nil, ethereum.NotFound |
|
|
|
|
} else if _, r, _ := json.tx.RawSignatureValues(); r == nil { |
|
|
|
|
return nil, fmt.Errorf("server returned transaction without signature") |
|
|
|
|
return nil, errors.New("server returned transaction without signature") |
|
|
|
|
} |
|
|
|
|
if json.From != nil && json.BlockHash != nil { |
|
|
|
|
setSenderFromServer(json.tx, *json.From, *json.BlockHash) |
|
|
|
@ -421,7 +421,7 @@ func toFilterArg(q ethereum.FilterQuery) (interface{}, error) { |
|
|
|
|
if q.BlockHash != nil { |
|
|
|
|
arg["blockHash"] = *q.BlockHash |
|
|
|
|
if q.FromBlock != nil || q.ToBlock != nil { |
|
|
|
|
return nil, fmt.Errorf("cannot specify both BlockHash and FromBlock/ToBlock") |
|
|
|
|
return nil, errors.New("cannot specify both BlockHash and FromBlock/ToBlock") |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if q.FromBlock == nil { |
|
|
|
|