进阶
二进制交易 (Binary-Tx)
发送原始二进制序列化交易,获得最小负载体积与最低延迟。
POST
/v1/send/binary为什么用二进制?
标准 JSON API 要求将交易 base64 编码,每 3 字节被扩展成 4 字符 —— 体积整体增加约 33%。二进制端点直接接受原始序列化字节,对延迟敏感的应用有多项优势。
| 优势 | 描述 |
|---|---|
| 负载更小 | 比 base64 编码的负载小约 25%(避开 base64 的 33% 膨胀),节省带宽 |
| 避免 TCP 分片 | 紧凑的负载更容易装进单个 TCP 包,省掉分片开销 |
| 更低延迟 | 收发两端都不用 base64 编/解码,服务端解析更快 |
| 零拷贝处理 | 服务端可直接转发交易字节,无需反序列化 |
请求
请求头
| 请求头 | 值 | 必填 |
|---|---|---|
| Authorization | Bearer YOUR_API_KEY | 必填 |
| Content-Type | application/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.binJavaScript
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
}