# Base ### 介紹 {% hint style="info" %} 目前Base RPC僅支持`eth_sendRawTransaction`方法。 {% endhint %} 本API用於在Base鏈上發送已簽名的交易,支持gRPC和HTTPS協議。 ### 端點 {% tabs %} {% tab title="gRPC" %}
地區端點
法蘭克福frankfurt.grpc.base.blockrazor.xyz:80
弗吉尼亞virginia.grpc.base.blockrazor.xyz:80
東京tokyo.grpc.base.blockrazor.xyz:80
{% endtab %} {% tab title="HTTPS" %}
地區端點
法蘭克福https://frankfurt-base.blockrazor.io:10101/eth_sendRawTransaction
弗吉尼亞https://virginia-base.blockrazor.io:10101/eth_sendRawTransaction
東京https://tokyo-base.blockrazor.io:10101/eth_sendRawTransaction
{% endtab %} {% endtabs %} ### 限流
Tier 4Tier 3Tier 2Tier 1Tier 0
TPS1 Tx / 5s1 Tx / 5s3 TPS5 TPSCustom
### 請求參數
參數必選格式示例備註
rawTransactionstring[hex]"0xd46e8dd67c5d32be8d24c6b0afe7c5c3f4e9c3b2dae18d0c6b0cf5c8f3e8b2c1"已簽名的raw transaction
### 請求示例 {% tabs %} {% tab title="gRPC" %} [查看](https://github.com/BlockRazorinc/base-api-client-go/blob/c4bec3d65e55ffb0da07253fa78aefe1b1c07e33/main.go#L150)示例 ```go // sendTransactions is an example function for sending a transaction. // It's designed to reuse an existing gRPC client connection to avoid connection latency. func sendTransactions(client basepb.BaseApiClient, authToken string, rawTxString string) { log.Println("[SendTx] Sending transaction...") ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() // Add the authentication token to the outgoing request's metadata. md := metadata.Pairs("authorization", authToken) ctx = metadata.NewOutgoingContext(ctx, md) req := &basepb.SendTransactionRequest{ RawTransaction: rawTxString, } res, err := client.SendTransaction(ctx, req) if err != nil { log.Printf("[SendTx] Failed to send transaction: %v", err) } else { log.Printf("[SendTx] Transaction sent successfully. Hash: %s", res.GetTxHash()) } } ``` {% endtab %} {% tab title="HTTPS" %} ```shellscript curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{ "jsonrpc": "2.0", "method": "eth_sendRawTransaction", "params": [ "0xf8668206bf831e988e825208940d287d6c8e5f8ad086f90d1933de060fdc578c2d808082422ea082d586bdef05fd6af532ca2943740f092cc5275731f175c0e0538a3e6a9b3c0ba060d2454b3b7679cc6c31ec70d6a8d926dcc40cf8cd4442776e018bd54787befb" ], "id": 67 }' \ https://virginia-base.blockrazor.io:10101/eth_sendRawTransaction ``` {% endtab %} {% endtabs %} #### [proto](https://github.com/BlockRazorinc/base-api-client-go/blob/1d46c2983420d6da645992a9f3ed51688f7dac88/proto/BaseApi.proto) ```go syntax = "proto3"; option go_package = "./basepb"; import "google/protobuf/wrappers.proto"; message BaseBlock { string parent_hash = 1; string fee_recipient = 2; bytes state_root = 3; bytes receipts_root = 4; bytes logs_bloom = 5; bytes prev_randao = 6; uint64 block_number = 7; uint64 gas_limit = 8; uint64 gas_used = 9; uint64 timestamp = 10; bytes extra_data = 11; repeated uint64 base_fee_per_gas = 12; string block_hash = 13; repeated bytes transactions = 14; repeated Withdrawal withdrawals = 15; google.protobuf.UInt64Value blob_gas_used = 16; google.protobuf.UInt64Value excess_blob_gas = 17; google.protobuf.BytesValue withdrawals_root = 18; } message Withdrawal { uint64 index = 1; uint64 validator = 2; bytes address = 3; uint64 amount = 4; } message GetRawFlashBlocksStreamRequest { } message GetBlockStreamRequest { } message SendTransactionRequest { string rawTransaction = 1; } message SendTransactionResponse { string txHash = 1; } message FlashBlockStrRequest { } message RawFlashBlockStrResponse { bytes message = 1; } service BaseApi { rpc SendTransaction(SendTransactionRequest) returns (SendTransactionResponse); rpc GetBlockStream(GetBlockStreamRequest) returns (stream BaseBlock); rpc GetRawFlashBlockStream(GetRawFlashBlocksStreamRequest) returns (stream RawFlashBlockStrResponse); } ``` ### 返回 **正常** ```go res: txHash:"0xaf430540d20eae2448947ffb254b03180b82333ef0c56bd526f7047489c195b5" ``` **異常** ```go res: txHash:"Unknown TxHash" ```