发送交易接口
大约 2 分钟
发送交易 API
概述
发送交易 API 提供两种格式用于提交 Solana 交易:标准的 JSON-RPC 2.0 格式和自定义的 REST API 格式。
服务信息
- 基础 URL:
http://ams.flashblock.trade
- 认证方式: 需要 Authorization Header
- 协议: HTTP/HTTPS
API 端点
1. JSON-RPC 交易提交
POST /
使用 JSON-RPC 2.0 规范提交交易。
请求格式:
{
"jsonrpc": "2.0",
"id": 1,
"method": "sendBundle",
"params": [
[
"base64_encoded_transaction_1",
"base64_encoded_transaction_2"
],
{
"encoding": "base64"
}
]
}
请求参数说明:
jsonrpc
: 固定值 "2.0"id
: 请求ID,用于匹配响应method
: 固定值 "sendBundle"params
: 参数数组params[0]
: base64 编码的交易数组params[1]
: 编码配置对象encoding
: 编码格式,固定为 "base64"
请求头:
Content-Type: application/json
Authorization: YOUR_API_KEY
成功响应:
{
"jsonrpc": "2.0",
"result": "5XHA7ofPAf3FaLUAY3kT52c...",
"id": 1
}
错误响应:
{
"jsonrpc": "2.0",
"error": {
"code": -1009,
"message": "Missing or invalid Authorization header",
"data": null
},
"id": null
}
错误码说明:
-1009
: 缺少或无效的 Authorization 头-1010
: 交易长度过短或不符合要求-1013
: Bundle 方法设置错误,需要 sendBundle
2. 自定义 REST API 交易提交
POST /api/v2/submit-batch
使用自定义 REST API 格式提交交易。
请求格式:
{
"transactions": [
"base64_encoded_transaction_1",
"base64_encoded_transaction_2"
]
}
请求参数说明:
transactions
: base64 编码的交易数组(可选,默认为空数组)
请求头:
Content-Type: application/json
Authorization: YOUR_API_KEY
成功响应:
{
"success": true,
"code": 200,
"message": "The transaction was submitted successfully, but the status of the transaction is pending.",
"data": {
"signatures": [
"5XHA7ofPAf3FaLUAY3kT52c...",
"4cmupyS9kyiEbfsW8kZkyEh..."
]
}
}
错误响应:
{
"success": false,
"code": 1009,
"message": "Missing or invalid Authorization header",
"data": {
"signatures": []
}
}
错误码说明:
1009
: 缺少或无效的 Authorization 头1010
: 交易长度过短或不符合要求
交易限制
- 最大交易数: 单次提交最多 4 笔交易
- 交易格式: 所有交易必须是有效的 base64 编码
- 最小小费: 每笔交易必须包含至少 0.001 SOL 的小费
最佳实践
小费集成建议
建议直接在原交易中包含小费,而不是创建单独的小费交易,无论交易数量多少。 这种方式:
- 减少交易数量和复杂度
- 提高交易成功率
- 最小化 gas 成本
- 提供更好的原子性
- 确保一致的交易排序
示例代码
JavaScript/Node.js
JSON-RPC 格式
const axios = require('axios');
async function submitTransactionRPC(transactions, apiKey) {
const payload = {
jsonrpc: "2.0",
id: 1,
method: "sendBundle",
params: [
transactions,
{ encoding: "base64" }
]
};
const response = await axios.post('http://ams.flashblock.trade/', payload, {
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
}
});
return response.data;
}
自定义 API 格式
async function submitTransactionAPI(transactions, apiKey) {
const payload = {
transactions: transactions
};
const response = await axios.post('http://ams.flashblock.trade/api/v2/submit-batch', payload, {
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
}
});
return response.data;
}
Python
JSON-RPC 格式
import requests
def submit_transaction_rpc(transactions, api_key):
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "sendBundle",
"params": [
transactions,
{"encoding": "base64"}
]
}
headers = {
'Content-Type': 'application/json',
'Authorization': api_key
}
response = requests.post('http://ams.flashblock.trade/',
json=payload,
headers=headers)
return response.json()
自定义 API 格式
def submit_transaction_api(transactions, api_key):
payload = {
"transactions": transactions
}
headers = {
'Content-Type': 'application/json',
'Authorization': api_key
}
response = requests.post('http://ams.flashblock.trade/api/v2/submit-batch',
json=payload,
headers=headers)
return response.json()