步骤 1:获取可扩展的委托人
步骤 1:检查所有可延长的委托
POST
https://api.tronsave.io/v2/get-extendable-delegates
速率限制 (Rate limit): 每1秒1个请求。
请求头
名称
类型
描述
apikey*
String
Tronsave API密钥,适用于内部账户
请求体
名称
类型
描述
extendTo*
String
你想要延长的时间(以毫秒为单位)
maxPriceAccepted
Number
你愿意支付的最大延长费用(数字)
receiver*
String
接收资源委托的地址
requester
String
请求者的地址。如果未提供,则从 API 密钥中获取请求者。
resourceType
String
“ENERGY”或“BANDWIDTH”,默认: “ENERGY”
{
"extendOrderBook": [
{
"price": 133,
"value": 64319
},
...
], // 概述每个价格的扩展能源数量
"totalDelegateAmount": 64319,
// 收件人在Tronsave上的当前总委托
"totalAvailableExtendAmount": 64319,
// 收件人在Tronsave上的可用总委托
"totalEstimateTrx": 8554427,
// 如果使用下面的extend_data创建延长请求,估算的TRX支付
"yourBalance": 20000000,
// API密钥的内部余额
"isAbleToExtend": true,
// 比较余额和totalEstimateTrx
"extendData": [
{
"delegator": "TMN2uTdy6rQYaTm4A5g732kHRf72tKsA44",
"isExtend": true,
"extraSmount": 0,
"extendTo": 1728459019
}
]
// 用于创建下面延长请求的扩展数据
}
{
"MISSING_PARAMS": "请求体中缺少某些参数",
"INVALID_PARAMS": "某些参数无效"
}
{
"API_KEY_REQUIRED": "请求头中缺少API密钥",
"INVALID_API_KEY": "API密钥不正确"
}
{
"RATE_LIMIT": "已达到速率限制"
}
示例
{
"extendTo":1728704969000,
"maxPriceAccepted":165,
"receiver":"TFwUFWr3QV376677Z8VWXxGUAMF11111111",
"resourceType": "ENERGY"
}
{
"apikey": <YOUR_API_KEY>
}
{
"extendOrderBook": [
{
"price": 108,
"value": 100000
},
{
"price": 122,
"value": 200000
}
],
"totalDelegateAmount": 500000,
"totalAvailableExtendAmount": 300000,
"totalEstimateTrx": 24426224,
"isAbleToExtend": true,
"yourBalance": 37780396,
"extendData": [
{
"delegator": "TQBV7xU489Rq8ZCsYi72zBhJM2222222",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1728704969000
},
{
"delegator": "TMN2uTdy6rQYaTm4A5g732kHR333333333",
"isExtend": true,
"extraAmount": 0,
"extendTo": 1728704969000
}
]
}
示例代码
const GetEstimateExtendData = async (extendTo, maxPriceAccepted) => {
const url = TRONSAVE_API_URL + `/v2/get-extendable-delegates`
const body = {
extendTo, // 要扩展到的时间(秒)
receiver: RECEIVER, // 接收资源委托的地址
maxPriceAccepted, // 可选。要支付扩展的最大价格
resourceType: RESOURCE_TYPE, // ENERGY 或 BANDWIDTH,可选,默认值为 ENERGY
}
const data = await fetch(url, {
method: "POST",
headers: {
'apikey': API_KEY,
"content-type": "application/json",
},
body: JSON.stringify(body)
})
const response = await data.json()
/**
* 示例响应
* @link
{
"error": false,
"message": "成功",
"data": {
"extendOrderBook": [
{
"price": 784,
"value": 1002
}
],
"totalDelegateAmount": 5003, // 总委托数量
"totalAvailableExtendAmount": 5003, // 可扩展的总数量
"totalEstimateTrx": 4085783, // 预估 TRX 总量
"isAbleToExtend": true, // 是否可以扩展
"yourBalance": 2377366851, // 您的余额
"extendData": [ // 扩展数据
{
"delegator": "TGGVrYaT8Xoos...6dmSZkohGGcouYL4", // 委托者地址
"isExtend": true, // 是否扩展
"extraAmount": 0, // 额外数量
"extendTo": 1745833276 // 扩展至的时间戳
},
{
"delegator": "TQBV7xU489Rq8Z...zBhJMdrDr51wA2", // 委托者地址
"isExtend": true, // 是否扩展
"extraAmount": 0, // 额外数量
"extendTo": 1745833276 // 扩展至的时间戳
},
{
"delegator": "TSHZv6xsYHMRCbdVh...qNozxaPPjDR6", // 委托者地址
"isExtend": true, // 是否扩展
"extraAmount": 0, // 额外数量
"extendTo": 1745833276 // 扩展至的时间戳
}
]
}
}
*/
return response
}
function getEstimateExtendData(int $extendTo, int $maxPriceAccepted): array {
$url = TRONSAVE_API_URL . "/v2/get-extendable-delegates";
$body = [
'extendTo' => $extendTo,
'receiver' => RECEIVER,
'maxPriceAccepted' => $maxPriceAccepted,
'resourceType' => RESOURCE_TYPE,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'apikey: ' . API_KEY,
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
def get_estimate_extend_data(extend_to: int, max_price_accepted: int) -> Dict[str, Any]:
"""Get estimate extend data"""
url = f"{TRONSAVE_API_URL}/v2/get-extendable-delegates"
headers = {
'apikey': API_KEY,
'Content-Type': 'application/json'
}
body = {
'extendTo': extend_to,
'receiver': RECEIVER,
'maxPriceAccepted': max_price_accepted,
'resourceType': RESOURCE_TYPE,
}
response = requests.post(url, headers=headers, json=body)
return response.json()
Last updated