跳轉至

GetAllGasPriceStream

介紹

GetAllGasPriceStream 供BSC交易gas price訂閱服務,基於gRPC流按百分位向用戶推送BSC交易在最近上鏈區塊中的gas price,端點域名:grpc.bsc-fee.blockrazor.me:443

限流

Tier 4Tier 3Tier 2Tier 1Tier 0
Streams----10

請求參數

字段必選格式示例備注
blockRangeint20統計最近N個區塊中交易的gas price,N取值範圍1-20

請求示例

package main

import (
    "context"
    "crypto/tls"
    "log"

    pb "fee-test/bscfeepb"

    "google.golang.org/grpc"
    "google.golang.org/grpc/credentials"
)

const (
    gRPCEndpoint = "grpc.bsc-fee.blockrazor.xyz:443"
    auth         = "your_auth"
)

func main() {
    conn, err := grpc.Dial(
        gRPCEndpoint,
        grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
        grpc.WithPerRPCCredentials(&Authentication{auth}),
    )
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    client := pb.NewServerClient(conn)

    req := &pb.BlockRange{
        BlockRange: 5,
    }
    stream, err := client.GetAllGasPriceStream(context.Background(), req)
    if err != nil {
        panic(err)
    }

    for {
        message, err := stream.Recv()
        if err != nil {
            log.Printf("Failed to receive message: %v", err)
            break
        }
        log.Printf("Received Time: %s\n", message.Time.AsTime().Format("2006-01-02 15:04:05"))
        for _, gasPrice := range message.AllGasPrice {
            log.Printf("Received message percentile: %d\n", gasPrice.Percentile)
            log.Printf("Received message value: %s\n", gasPrice.Value)
        }
    }
}

type Authentication struct {
    auth string
}

func (a *Authentication) GetRequestMetadata(context.Context, ...string) (map[string]string, error) {
    return map[string]string{"apiKey": a.auth}, nil
}

func (a *Authentication) RequireTransportSecurity() bool {
    return false
}

Proto

syntax = "proto3";

package bscfeepb;

import "google/protobuf/timestamp.proto";

option go_package = "./pb/bscfeepb";

service Server {
    rpc GetAllGasPriceStream(BlockRange) returns(stream AllGasPriceStreamResponse) {};
}

message FeeValue {
    int32 percentile = 1;
    string value = 2;
}

message BlockRange {
    int32 blockRange = 2;
}

message AllGasPriceStreamResponse {
    repeated FeeValue allGasPrice = 1;
    google.protobuf.Timestamp time = 2;
}

返回示例

2025/04/08 10:18:21 Received Time: 2025-04-08 02:18:21
2025/04/08 10:18:21 Received message percentile: 25
2025/04/08 10:18:21 Received message value: 1000000000
2025/04/08 10:18:21 Received message percentile: 50
2025/04/08 10:18:21 Received message value: 1100000000
2025/04/08 10:18:21 Received message percentile: 75
2025/04/08 10:18:21 Received message value: 2020000000
2025/04/08 10:18:21 Received message percentile: 95
2025/04/08 10:18:21 Received message value: 5000000000
2025/04/08 10:18:21 Received message percentile: 99
2025/04/08 10:18:21 Received message value: 20000000000