跳轉至

GetGasPriceStream

介紹

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

限流

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

請求參數

字段必選格式示例備注
percentileint50獲取指定分位的gas price,枚舉值:25、50、75、95、99
blockRangeint20統計最近N個區塊中交易的gas price,N取值範圍1-20

請求示例

package main

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

    // directory of the generated code using the provided proto file
    pb "fee-test/bscfeepb"

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

const (
    gRPCEndpoint = "grpc.bsc-fee.blockrazor.xyz:443" // endpoint address
    auth         = "your_auth" // auth to be verified
)

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

    // create the gRPC client
    client := pb.NewServerClient(conn)

    // send gRPC request
    req := &pb.TransactionFee{
        Percentile: 95,
        BlockRange: 10,
    }
    stream, err := client.GetGasPriceStream(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 message: %s\n", message.Time.AsTime().Format("2006-01-02 15:04:05"))
        log.Printf("Received GasPrice: %v\n", message.GasPrice.Percentile)
        log.Printf("Received GasPrice: %v\n", message.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 GetGasPriceStream(TransactionFee) returns(stream TransactionFeeStreamResponse) {};
}

message TransactionFee {
    int32 percentile = 1;
    int32 blockRange = 2;
}

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

message TransactionFeeStreamResponse {
    FeeValue gasPrice = 1;
    google.protobuf.Timestamp time = 2;
}

返回示例

2025/03/26 10:25:42 Received message: 2025-03-26 02:25:42
2025/03/26 10:25:42 Received GasPrice: 95
2025/03/26 10:25:42 Received GasPrice: 1000000000 // 对应分位的gas price,单位为wei
2025/03/26 10:25:45 Received message: 2025-03-26 02:25:45
2025/03/26 10:25:45 Received GasPrice: 95
2025/03/26 10:25:45 Received GasPrice: 1000000000