进阶

二进制交易 (Binary-Tx)

发送原始二进制序列化交易,获得最小负载体积与最低延迟。

POST/v1/send/binary

为什么用二进制?

标准 JSON API 要求将交易 base64 编码,每 3 字节被扩展成 4 字符 —— 体积整体增加约 33%。二进制端点直接接受原始序列化字节,对延迟敏感的应用有多项优势。

优势描述
负载更小比 base64 编码的负载小约 25%(避开 base64 的 33% 膨胀),节省带宽
避免 TCP 分片紧凑的负载更容易装进单个 TCP 包,省掉分片开销
更低延迟收发两端都不用 base64 编/解码,服务端解析更快
零拷贝处理服务端可直接转发交易字节,无需反序列化

请求

请求头

请求头必填
AuthorizationBearer YOUR_API_KEY必填
Content-Typeapplication/octet-stream必填

请求体

请求体即签名、序列化后的交易原始字节。不包 JSON、不做 base64 —— 就是原始字节。该端点使用默认配置(skip preflight、3 次重试、启用 Anti-MEV)。如需自定义 options,请使用 JSON 端点

示例

cURL
curl -X POST https://bolttx.io/v1/send/binary \
  -H "Authorization: Bearer btx_live_abc123" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @transaction.bin
JavaScript
const transaction = new Transaction().add(/* instructions */);
transaction.sign(keypair);

// Serialize to raw bytes (no base64)
const rawBytes = transaction.serialize();

const response = await fetch("https://bolttx.io/v1/send/binary", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/octet-stream",
  },
  body: rawBytes,
});

const result = await response.json();
console.log("Signature:", result.signature);
Rust
use reqwest::Client;
use solana_sdk::transaction::Transaction;

let tx = Transaction::new(/* instructions */);
let raw_bytes = bincode::serialize(&tx)?;

let client = Client::new();
let res = client
    .post("https://bolttx.io/v1/send/binary")
    .header("Authorization", "Bearer YOUR_API_KEY")
    .header("Content-Type", "application/octet-stream")
    .body(raw_bytes)
    .send()
    .await?;

let result: serde_json::Value = res.json().await?;
println!("Signature: {}", result["signature"]);

响应

成功 (200)

响应格式与标准 发送交易 端点完全一致。

{
  "success": true,
  "signature": "5xKnR8qXe...",
  "slot": 234567890
}

延伸阅读