rpc: make ExampleClientSubscription work with the geth API (#19483)
This corrects the call to eth_getBlockByNumber, which previously returned this error: can't get latest block: missing value for required argument 1 Co-authored-by: Felix Lange <fjl@twurst.com>
This commit is contained in:
parent
ba068d40dd
commit
5c3993444d
|
@ -19,9 +19,9 @@ package rpc_test
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -31,16 +31,16 @@ import (
|
||||||
// eth_getBlockByNumber("latest", {})
|
// eth_getBlockByNumber("latest", {})
|
||||||
// returns the latest block object.
|
// returns the latest block object.
|
||||||
//
|
//
|
||||||
// eth_subscribe("newBlocks")
|
// eth_subscribe("newHeads")
|
||||||
// creates a subscription which fires block objects when new blocks arrive.
|
// creates a subscription which fires block objects when new blocks arrive.
|
||||||
|
|
||||||
type Block struct {
|
type Block struct {
|
||||||
Number *big.Int
|
Number *hexutil.Big
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExampleClientSubscription() {
|
func ExampleClientSubscription() {
|
||||||
// Connect the client.
|
// Connect the client.
|
||||||
client, _ := rpc.Dial("ws://127.0.0.1:8485")
|
client, _ := rpc.Dial("ws://127.0.0.1:8545")
|
||||||
subch := make(chan Block)
|
subch := make(chan Block)
|
||||||
|
|
||||||
// Ensure that subch receives the latest block.
|
// Ensure that subch receives the latest block.
|
||||||
|
@ -75,7 +75,8 @@ func subscribeBlocks(client *rpc.Client, subch chan Block) {
|
||||||
// The connection is established now.
|
// The connection is established now.
|
||||||
// Update the channel with the current block.
|
// Update the channel with the current block.
|
||||||
var lastBlock Block
|
var lastBlock Block
|
||||||
if err := client.CallContext(ctx, &lastBlock, "eth_getBlockByNumber", "latest"); err != nil {
|
err = client.CallContext(ctx, &lastBlock, "eth_getBlockByNumber", "latest", false)
|
||||||
|
if err != nil {
|
||||||
fmt.Println("can't get latest block:", err)
|
fmt.Println("can't get latest block:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue