For the complete documentation index, see llms.txt. This page is also available as Markdown.

BSC Broadcast Tx

介紹BlockRazor BSC Transaction Sending 模式的 Broadcast Tx 接口以及集成方法

端點

地區
Relay地址

法蘭克福

64.130.47.75:50051

東京

63.254.162.18:50051

都柏林

141.98.217.82:50051

弗吉尼亞

208.91.105.204:50051

價格

支付方式
限流
價格
操作

免費

SendTx

  • TPS:10 Txs / 5s

  • 每日交易上限:10

免費

-

Personalized

SendTx

  • TPS:100 Txs / 5s

  • 每日交易上限:100000

SendTxs

  • BPS:4 batches / 1s

  • Txs per Batch:10

$50 / 日 $500 / 月

Package

SendTx

  • TPS:100 Txs / 5s

  • 每日交易上限:100000

SendTxs

  • BPS:4 batches / 1s

  • Txs per Batch:10

$1250 / 月 和其他9項服務打包購買

SendTx

請求參數

參數
必選
格式
示例
描述

Transaction

String

"0xf8……8219"

經過簽名的rawtx

請求示例

package main

import (
	"context"
	"encoding/hex"
	"fmt"
	"math/big"

	// directory of the generated code using the provided relay.proto file
	pb "github.com/BlockRazorinc/relay_example/protobuf"
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/crypto"
	"github.com/ethereum/go-ethereum/rlp"
	"google.golang.org/grpc"
)

// auth will be used to verify the credential
type Authentication struct {
	apiKey string
}

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

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

func main() {

	// blockrazor relay endpoint address
	blzrelayEndPoint := "ip:port"

	// auth will be used to verify the credential
	auth := Authentication{
		"your auth token",
	}

	// open gRPC connection to BlockRazor relay
	var err error
	conn, err := grpc.Dial(blzrelayEndPoint, grpc.WithInsecure(), grpc.WithPerRPCCredentials(&auth), grpc.WithWriteBufferSize(0), grpc.WithInitialConnWindowSize(128*1024))
	if err != nil {
		fmt.Println("error: ", err)
		return
	}

	// use the Gateway client connection interface.
	client := pb.NewGatewayClient(conn)

	// create context
	ctx := context.Background()

	// replace with your address
	from_private_address := "42b565……44d05c"
	to_public_address := "0x4321……3f1c66"

	// replace with your transaction data
	nonce := uint64(1)
	toAddress := common.HexToAddress(to_public_address)
	var data []byte
	gasPrice := big.NewInt(1e9)
	gasLimit := uint64(22000)
	value := big.NewInt(0)
	chainid := types.NewEIP155Signer(big.NewInt(56))

	// create new transaction
	tx := types.NewTransaction(nonce, toAddress, value, gasLimit, gasPrice, data)

	privateKey, err := crypto.HexToECDSA(from_private_address)
	if err != nil {
		fmt.Println("fail to casting private key to ECDSA")
		return
	}

	// sign transaction by private key
	signedTx, err := types.SignTx(tx, chainid, privateKey)
	if err != nil {
		fmt.Println("fail to sign transaction")
		return
	}

	// use rlp to encode your transaction
	body, _ := rlp.EncodeToBytes([]types.Transaction{*signedTx})

	// encode []byte to string
	encode_tx := hex.EncodeToString(body)

	// send raw tx by BlockRazor
	res, err := client.SendTx(ctx, &pb.SendTxRequest{Transaction: encode_tx})

	if err != nil {
		fmt.Println("failed to send raw tx: ", err)
		return
	} else {
		fmt.Println("raw tx sent by BlockRazor, tx hash is ", res.TxHash)
	}

}

返回示例

正常

异常

SendTxs

請求參數

參數
必選
格式
示例
描述

Transactions

Array[String]

["0xf8……8219", "0xcb……2ac0"]

經過簽名的raw tx列表

請求示例

返回示例

正常

异常

Proto

relay.proto文件代碼如下:

代码示例

https://github.com/BlockRazorinc/relay_example

最後更新於

這有幫助嗎?