POST /apiv2/bandwidth
เช่า TRON Bandwidth และมอบสิทธิ์ (delegate) ไปยังที่อยู่ผู้รับตามระยะเวลาที่กำหนด (5 นาที หรือ 1 ชั่วโมง)
⚠️ ระดับการเข้าถึง (Access tiers)
- บัญชีที่ได้รับการรับรอง (Accredited accounts) สามารถเช่า จำนวนเท่าใดก็ได้ (สูงสุด 5000) ภายในขนาดของพูลและขีดจำกัดสูงสุด โดยสามารถสร้าง หลายคำสั่งซื้อพร้อมกันได้ การรับรองจะได้รับการอนุมัติโดย ฝ่ายสนับสนุนของ Netts
- หากไม่มีการรับรอง คุณสามารถเช่าได้ ครั้งละ 400 หน่วย — คำสั่งซื้อถัดไปจะทำได้ก็ต่อเมื่อ การเช่าก่อนหน้าสิ้นสุดลงแล้วเท่านั้น คำขอสำหรับจำนวนอื่นที่ไม่ใช่ 400 หรือคำสั่งซื้อที่สองในขณะที่คำสั่งซื้อแรกยังใช้งานอยู่ จะถูกปฏิเสธ
URL ของ Endpoint
POST https://netts.io/apiv2/bandwidthส่วนหัวของคำขอ (Request Headers)
| ส่วนหัว (Header) | จำเป็น (Required) | คำอธิบาย (Description) |
|---|---|---|
| Content-Type | ใช่ | application/json |
| X-API-KEY | ใช่ | API key ของคุณจากแดชบอร์ด Netts |
| X-Real-IP | ใช่ | ที่อยู่ IP จากไวท์ลิสต์ของคุณ |
| X-Idempotency-Key | ไม่ | คีย์ที่ไคลเอนต์สร้างขึ้นเอง (base64) เพื่อลองส่งคำขอใหม่อย่างปลอดภัยโดยไม่ทำให้เกิดคำสั่งซื้อซ้ำ หากเว้นว่างไว้ เซิร์ฟเวอร์จะสร้างให้อัตโนมัติ |
เนื้อหาของคำขอ (Request Body)
{
"amount": 1500,
"receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"period": "5m"
}พารามิเตอร์ (Parameters)
| พารามิเตอร์ (Parameter) | ประเภท (Type) | จำเป็น (Required) | คำอธิบาย (Description) |
|---|---|---|---|
| amount | จำนวนเต็ม (integer) | ใช่ | หน่วยของ Bandwidth ที่ต้องการเช่า (ขั้นต่ำ: 400, สูงสุด: 5000) |
| receiveAddress | ข้อความ (string) | ใช่ | ที่อยู่ TRON ที่จะได้รับ Bandwidth (T…, ความยาว 34 ตัวอักษร, base58) |
| period | ข้อความ (string) | ใช่ | ระยะเวลาการเช่า: "5m" (5 นาที) หรือ "1h" (1 ชั่วโมง) |
| trx_send | บูลีน (boolean) | ไม่ | การันตีการทำธุรกรรม: หากไม่มี Bandwidth พร้อมใช้งาน จะส่ง TRX ไปยังที่อยู่ดังกล่าวแทนเพื่อให้ธุรกรรมยังคงดำเนินต่อไปได้ ทำงานเฉพาะเมื่อ amount = 400 เท่านั้น (จะถูกละเว้นในกรณีอื่น) ค่าเริ่มต้นคือ false |
| check | บูลีน (boolean) | ไม่ | หากเป็น true และผู้รับมี Bandwidth มากกว่า 400 อยู่แล้ว คำสั่งซื้อจะ ไม่ ถูก delegate และจะ ไม่มีการเรียกเก็บเงิน (สถานะ enough) ค่าเริ่มต้นคือ false |
| test | บูลีน (boolean) | ไม่ | การทดลองรัน (Dry run) หากเป็น true โฟลว์ของคำสั่งซื้อทั้งหมดจะถูกจำลองขึ้น — การตอบกลับจะแจ้ง ผลลัพธ์ ที่จะเกิดขึ้นและ ราคา ที่จะถูกเรียกเก็บ — โดยไม่มีการดำเนินการใดๆ บนเชนและไม่มีการเรียกเก็บเงิน ค่าเริ่มต้นคือ false |
ตัวอย่างคำขอ (Example Requests)
ตัวอย่างด้านล่างนี้ยังรวมถึงการ สร้างและส่ง
X-Idempotency-Keyเพื่อป้องกันไม่ให้การส่งซ้ำโดยไม่ได้ตั้งใจสร้างคำสั่งซื้อที่สอง ดูรายละเอียดกฎทั้งหมดได้ที่ ความเป็นนิจ (Idempotency)
cURL
API_KEY="your_api_key"
ADDR="TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
AMOUNT=1500
PERIOD="5m"
NONCE=$(( $(date +%s) / 2 )) # stable for retries within a 2s window; or your own order UUID
# X-Idempotency-Key = base64( HMAC-SHA256( API_KEY, "addr:amount:period:nonce" ) )
IDEMP=$(printf '%s' "${ADDR}:${AMOUNT}:${PERIOD}:${NONCE}" \
| openssl dgst -sha256 -hmac "$API_KEY" -binary | base64)
curl -X POST https://netts.io/apiv2/bandwidth \
-H "Content-Type: application/json" \
-H "X-API-KEY: $API_KEY" \
-H "X-Real-IP: your_whitelisted_ip" \
-H "X-Idempotency-Key: $IDEMP" \
-d "{\"amount\": $AMOUNT, \"receiveAddress\": \"$ADDR\", \"period\": \"$PERIOD\"}"Python
import time, hmac, hashlib, base64, requests
API_KEY = "your_api_key"
url = "https://netts.io/apiv2/bandwidth"
payload = {
"amount": 1500,
"receiveAddress": "TXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"period": "5m",
}
# X-Idempotency-Key = base64( HMAC-SHA256( API_KEY, "addr:amount:period:nonce" ) )
# Generate ONCE per order and resend the same value on every retry.
nonce = str(int(time.time() // 2)) # 2s bucket; or your own order UUID
message = f"{payload['receiveAddress']}:{payload['amount']}:{payload['period']}:{nonce}"
idem_key = base64.b64encode(
hmac.new(API_KEY.encode(), message.encode(), hashlib.sha256).digest()
).decode()
headers = {
"Content-Type": "application/json",
"X-API-KEY": API_KEY,
"X-Real-IP": "your_whitelisted_ip",
"X-Idempotency-Key": idem_key,
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
detail = data.get("detail", {})
if response.status_code == 200 and detail.get("status") == "completed":
d = detail["data"]
print(f"Order ID: {d['orderId']}")
print(f"Hashes: {d['hash']}") # array of delegation tx hashes
print(f"Bandwidth: {d['bandwidth']} for {d['period']}")
print(f"Cost: {d['paidTRX']} TRX")
else:
print(f"Code: {detail.get('code')} | {detail.get('msg', detail)}")มีตัวอย่างโค้ดไคลเอนต์แบบเต็ม (Python + cURL) ให้บริการในแพ็กเกจของบริการ (handler_bandwidth/doc/client_example/)
การตอบกลับ (Response)
สำเร็จ — Bandwidth ได้รับการ delegate แล้ว (200 OK)
{
"detail": {
"code": 10000,
"status": "completed",
"msg": "Successful",
"data": {
"orderId": "B5M<key14>",
"paidTRX": "<amount charged in TRX>",
"fulfilledBy": "bandwidth",
"hash": ["a1b2c3...", "d4e5f6..."],
"bandwidth": 1500,
"period": "5m"
}
}
}สำเร็จ — ส่ง TRX แทน Bandwidth (200 OK, เฉพาะเมื่อ amount=400 + trx_send=true)
เมื่อพูลไม่มี Bandwidth และเปิดใช้งาน trx_send ระบบจะส่ง TRX ไปยังที่อยู่ดังกล่าวเพื่อให้ธุรกรรมยังสามารถผ่านไปได้ จะมีการเรียกเก็บค่าบริการแบบคงที่ในกรณีนี้ โดยไม่คำนึงถึงระยะเวลาที่ร้องขอ
{
"detail": {
"code": 10000,
"status": "completed",
"msg": "Successful (sent TRX, bandwidth unavailable)",
"data": {
"orderId": "B5M<key14>",
"paidTRX": "<amount charged in TRX>",
"fulfilledBy": "trx",
"trxSendHash": ["<txid>"],
"hash": [],
"bandwidth": 400,
"period": "5m"
}
}
}มีเพียงพออยู่แล้ว — ไม่มีการเรียกเก็บเงิน (200 OK, เฉพาะเมื่อใช้ check=true)
{
"detail": {
"code": 10002,
"status": "enough",
"msg": "enough band for 1 transfer",
"data": { "orderId": "B5M<key14>", "paidTRX": 0, "bandwidth": 400, "period": "5m" }
}
}กำลังดำเนินการ — ผู้ให้บริการภายนอก (202 Accepted)
จะส่งกลับมาเมื่อคำสั่งซื้อถูกส่งต่อไปยังผู้ให้บริการภายนอกแบบอะซิงโครนัส ให้สอบถามสถานะไปยัง status endpoint (ด้านล่าง) ซ้ำๆ โดยใช้ orderId จนกว่าคำสั่งซื้อจะเสร็จสมบูรณ์
{
"detail": {
"code": 10001,
"status": "processing",
"msg": "Order accepted, processed by an external provider. Poll the status endpoint.",
"data": { "orderId": "B5M<key14>", "bandwidth": 1500, "period": "5m" }
}
}การทดสอบรัน (200 OK, เฉพาะเมื่อใช้ test=true)
โฟลว์ของคำสั่งซื้อทั้งหมดจะถูกจำลองขึ้น testAction จะบอกคุณว่ามีสิ่งใดที่ จะ เกิดขึ้น และ wouldCostTRX จะบอกราคาที่ จะ ถูกเรียกเก็บ จะไม่มีการ delegate ใดๆ ไม่มีการส่ง TRX และ ไม่มีการเรียกเก็บเงินใดๆ (paidTRX: 0)
{
"detail": {
"code": 10003,
"status": "test",
"msg": "Test run — no on-chain action, no charge",
"data": {
"orderId": "B5M<...>",
"testAction": "would_delegate",
"wouldCostTRX": "<amount that would be charged in TRX>",
"paidTRX": 0,
"bandwidth": 400,
"period": "5m",
"receiverFreeBandwidth": 600
}
}
}ค่าของ testAction: would_delegate (Bandwidth จะถูก delegate), would_trx_send (ไม่มี Bandwidth, amount=400 + trx_send → TRX จะถูกส่ง), enough (ผู้รับมี Bandwidth เพียงพออยู่แล้ว เมื่อใช้ check=true), หรือ would_error:<reason> (เช่น no_bandwidth, not_whitelisted)
ฟิลด์การตอบกลับ (Response Fields)
| ฟิลด์ (Field) | ประเภท (Type) | คำอธิบาย (Description) |
|---|---|---|
| detail.code | จำนวนเต็ม (integer) | 10000 ทำการ delegate/ส่ง TRX สำเร็จ, 10002 มีเพียงพอแล้ว, 10001 กำลังประมวลผล |
| detail.status | ข้อความ (string) | completed / enough / processing / failed |
| detail.data.orderId | ข้อความ (string) | รหัสคำสั่งซื้อ รูปแบบ B5M… (5 นาที) / B1H… (1 ชั่วโมง) — ใช้สำหรับ status endpoint |
| detail.data.paidTRX | ตัวเลข (number) | จำนวนเงินที่ถูกเรียกเก็บในหน่วย TRX (0 เมื่อสถานะเป็น enough) |
| detail.data.fulfilledBy | ข้อความ (string) | bandwidth (ทำการ delegate แล้ว) / trx (ส่ง TRX แล้ว) |
| detail.data.hash | อาร์เรย์ (array) | แฮชของธุรกรรมการ delegate (สูงสุด 10 รายการ) จะเป็นอาร์เรย์เสมอ (ว่างเปล่าสำหรับกรณี TRX) |
| detail.data.trxSendHash | อาร์เรย์ (array) | แฮชของธุรกรรมการโอน TRX จะแสดงเฉพาะเมื่อ fulfilledBy = trx |
| detail.data.bandwidth | จำนวนเต็ม (integer) | หน่วย Bandwidth ที่ได้รับการ delegate |
| detail.data.period | ข้อความ (string) | ระยะเวลาการเช่า (5m / 1h) |
Endpoint ตรวจสอบสถานะ (Status Endpoint)
GET https://netts.io/apiv2/bandwidth/status/{orderId}ส่วนหัว: X-API-KEY + X-Real-IP (คำสั่งซื้อต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตนแล้ว)
| สถานะคำสั่งซื้อ | HTTP | code | status |
|---|---|---|---|
| สำเร็จ | 200 | 10000 | completed (พร้อม hash / trxSendHash) |
| กำลังดำเนินการ | 200 | 10001 | processing |
| มีเพียงพออยู่แล้ว | 200 | 10002 | enough |
| ล้มเหลว | 200 | 5003 | failed |
| ไม่พบ / ไม่ใช่ของคุณ | 404 | -1 | — |
Endpoint การเรียกคืน (Reclaim Endpoint)
เรียกคืน (undelegate) Bandwidth จากคำสั่งซื้อที่ ได้รับการ delegate แล้ว ก่อนที่ระยะเวลาจะหมดอายุด้วยตนเอง Bandwidth จะถูก undelegate โดยอัตโนมัติและส่งคืนแฮชของธุรกรรมกลับมา
POST https://netts.io/apiv2/bandwidth/reclaim/{orderId}ส่วนหัว: X-API-KEY + X-Real-IP (คำสั่งซื้อต้องเป็นของผู้ใช้ที่ได้รับการยืนยันตัวตนแล้ว)
| สถานะคำสั่งซื้อ | HTTP | code | status | ผลลัพธ์ |
|---|---|---|---|---|
| ได้รับการ delegate แล้ว → ถูกเรียกคืนทันที | 200 | 10004 | reclaimed | reclaimHash (แฮชของธุรกรรม undelegate) |
| ถูกเรียกคืนไปแล้ว | 200 | 10004 | reclaimed | reclaimHash + ข้อความ "already reclaimed" |
| ไม่ได้อยู่ในสถานะที่ได้รับการ delegate (ไม่มีรายการให้เรียกคืน) | 400 | 5005 | failed | — |
| การเรียกคืนยังไม่เสร็จสมบูรณ์ | 503 | 5003 | failed | ให้ลองใหม่อีกครั้งในไม่ช้า |
| ไม่พบ / ไม่ใช่ของคุณ | 404 | -1 | — | — |
curl -X POST https://netts.io/apiv2/bandwidth/reclaim/B5M<...> \
-H "X-API-KEY: your_api_key" -H "X-Real-IP: your_whitelisted_ip"{
"detail": {
"code": 10004,
"status": "reclaimed",
"msg": "Bandwidth reclaimed",
"data": { "orderId": "B5M<...>", "reclaimHash": ["<txid>"] }
}
}import requests
order_id = "B5M..." # the orderId from your rental response
url = f"https://netts.io/apiv2/bandwidth/reclaim/{order_id}"
headers = {"X-API-KEY": "your_api_key", "X-Real-IP": "your_whitelisted_ip"}
resp = requests.post(url, headers=headers)
detail = resp.json()["detail"]
if resp.status_code == 200 and detail["status"] == "reclaimed":
print(f"Reclaimed: {detail['data']['reclaimHash']} ({detail['msg']})")
else:
print(f"Code {detail.get('code')}: {detail.get('msg', detail)}")ค่าธรรมเนียมการเช่าจะ ไม่ ได้รับการคืนเงินเมื่อทำการเรียกคืนก่อนกำหนดโดยสมัครใจ — การเรียกคืนเป็นการส่งคืน Bandwidth ที่ถูก delegate กลับเข้าสู่พูลก่อนหมดระยะเวลาเท่านั้น
การตอบกลับข้อผิดพลาด (Error Responses)
ข้อผิดพลาดในการยืนยันตัวตน (401)
{ "detail": { "code": -1, "msg": "Invalid API key or IP not in whitelist" } }ยอดคงเหลือไม่เพียงพอ (403)
{ "detail": { "code": 1004, "status": "failed", "msg": "Insufficient funds" } }ข้อผิดพลาดในการตรวจสอบข้อมูล (400)
{ "detail": { "code": 5004, "status": "failed", "msg": "Bandwidth amount out of range (400..5000)" } }การ Delegate ล้มเหลว / บริการไม่พร้อมใช้งาน (503)
{ "detail": { "code": 5003, "status": "failed", "msg": "Bandwidth delegation failed" } }ตารางอ้างอิงรหัสข้อผิดพลาด (Error Code Reference)
| รหัส (Code) | คำอธิบาย (Description) | สถานะ HTTP (HTTP Status) |
|---|---|---|
10000 | สำเร็จ (delegate แล้ว หรือส่ง TRX แล้ว) | 200 |
10000 | สำเร็จ (การตอบกลับจากแคช) | 208 |
10001 | รับคำขอแล้ว กำลังประมวลผลโดยผู้ให้บริการภายนอก | 202 |
10002 | ผู้รับมี Bandwidth เพียงพออยู่แล้ว (ไม่มีการเรียกเก็บเงิน) | 200 |
10003 | การทดสอบรัน — ดูตัวอย่างผลลัพธ์ + ราคา โดยไม่มีการเรียกเก็บเงิน (test=true) | 200 |
10004 | เรียกคืน Bandwidth สำเร็จ (undelegate โดยสมัครใจ) — ส่งคืน reclaimHash | 200 |
- | คำขอที่ซ้ำกันกำลังอยู่ระหว่างการประมวลผล | 409 |
-1 | API key ไม่ถูกต้อง / IP ไม่อยู่ในไวท์ลิสต์ | 401 |
1004 | ยอดคงเหลือไม่เพียงพอ | 403 |
1005 | ไม่มีที่อยู่ผู้ชำระเงินสำหรับผู้ใช้ | 400 |
5004 | จำนวน/ระยะเวลาไม่ถูกต้อง (การตรวจสอบล้มเหลว) | 400 |
5005 | ไม่มีรายการให้เรียกคืน (คำสั่งซื้อไม่ได้อยู่ในสถานะที่ได้รับการ delegate) | 400 |
5007 | หากไม่มีการรับรอง — เช่าได้ครั้งละหนึ่งรายการเท่านั้น คำสั่งซื้อก่อนหน้ายังคงทำงานอยู่ (รอจนกว่าจะสิ้นสุด) | 503 |
5008 | หากไม่มีการรับรอง — อนุญาตเฉพาะคำสั่งซื้อขนาด 400 หน่วยเท่านั้น จำเป็นต้องได้รับการรับรองสำหรับจำนวนที่มากขึ้น | 503 |
5003 | การ delegate Bandwidth ล้มเหลว / ไม่พร้อมใช้งาน | 503 |
5000 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ | 500 |
การจำกัดอัตราการส่งคำขอ (Rate Limits)
| ระยะเวลา (Period) | ขีดจำกัด (Limit) | คำอธิบาย (Description) |
|---|---|---|
| 1 วินาที | 50 คำขอ | สูงสุด 50 คำขอต่อวินาทีต่อหนึ่ง IP |
เกินขีดจำกัดอัตราการส่งคำขอ (429)
{ "message": "API rate limit exceeded" }ความเป็นนิจ (Idempotency)
ส่งส่วนหัวเพิ่มเติม X-Idempotency-Key เพื่อป้องกันไม่ให้การส่งซ้ำโดยไม่ได้ตั้งใจสร้างคำสั่งซื้อที่สองขึ้นมา — การตอบกลับเดิมจะถูกส่งกลับมาพร้อม HTTP 208 หากคุณไม่ได้ส่งส่วนหัวนี้ เซิร์ฟเวอร์จะสร้างคีย์ขึ้นมาให้โดยอัตโนมัติจากพารามิเตอร์ของคำขอของคุณภายในช่วงเวลาสั้นๆ
วิธีการสร้างคีย์
คีย์จะมีรูปแบบเป็น base64( HMAC-SHA256( secret, message ) ) — สตริง base64 ความยาว 44 ตัวอักษร โดยที่:
- secret = API key ของคุณ (
X-API-KEY); - message = ฟิลด์ต่างๆ ที่นำมาเชื่อมกันด้วยเครื่องหมาย
:—receiveAddress:amount:period:nonce.
nonce คือค่าใดๆ ที่ คงที่สำหรับการพยายามส่งซ้ำของคำสั่งซื้อเชิงตรรกะเดียวกัน แต่แตกต่างกันสำหรับคำสั่งซื้อคนละรายการ — เช่น UUID ที่คุณเก็บไว้สำหรับคำสั่งซื้อนั้น หรือกลุ่มช่วงเวลาแบบคร่าวๆ (timestamp bucket) ให้สร้างคีย์นี้เพียงครั้งเดียวต่อหนึ่งคำสั่งซื้อ และส่งค่าเดิมซ้ำทุกครั้งที่มีการลองส่งใหม่
import hmac, hashlib, base64, time
def make_idempotency_key(api_key, receive_address, amount, period, nonce=None):
if nonce is None:
nonce = str(int(time.time() // 2)) # 2-second bucket; or your own order UUID
message = f"{receive_address}:{amount}:{period}:{nonce}"
digest = hmac.new(api_key.encode(), message.encode(), hashlib.sha256).digest()
return base64.b64encode(digest).decode() # 44-char base64# then send it as a header:
-H "X-Idempotency-Key: <base64_key>"การรวม period ไว้ใน message เป็นสิ่งสำคัญ: การเช่าสำหรับ ที่อยู่เดียวกันเป็นเวลา 5 นาที และ 1 ชั่วโมง ถือเป็นคำสั่งซื้อที่ต่างกัน และต้องสร้างคีย์ที่ต่างกัน
การตรวจสอบความถูกต้อง
X-Idempotency-Keyที่ส่งมาจะต้องเป็นสตริง base64 ที่มีความยาว 16–64 ตัวอักษร (ชุดอักขระA–Z a–z 0–9 + / = _ -) คีย์ที่มีรูปแบบไม่ถูกต้องหรือยาวเกินไปจะถูกปฏิเสธด้วย HTTP 400 (code 5004)
| รหัสสถานะ (Status Code) | ความหมาย |
|---|---|
| 200 | ประมวลผลสำเร็จ (คำขอแรก) |
| 208 | ประมวลผลสำเร็จแล้วก่อนหน้านี้ — ส่งคืนการตอบกลับที่แคชไว้ (ไม่มีการเรียกเก็บเงินซ้ำ) |
| 409 | คำขอเดียวกันกำลังอยู่ระหว่างการประมวลผล — โปรดรอและอย่าเพิ่งลองส่งซ้ำ |
การลองใหม่อีกครั้งหลังจากล้มเหลว ระบบจะแคชเฉพาะผลลัพธ์ที่ สำเร็จ เท่านั้น (
completed/enough) หากความพยายามก่อนหน้า ล้มเหลวหรือหมดเวลา (ไม่มีการเรียกเก็บเงิน) คุณสามารถ ลองใหม่ได้อย่างปลอดภัยโดยใช้X-Idempotency-Keyเดิม — ระบบจะพยายามสร้างคำสั่งซื้อใหม่อีกครั้งแทนที่จะส่งคืนข้อผิดพลาดเดิม ในขณะที่ความพยายามยังคงดำเนินการอยู่ คุณจะได้รับ409ให้รอสักครู่แล้วลองใหม่
หมายเหตุ
- ระดับการเข้าถึง: บัญชีที่ได้รับการรับรองสามารถเช่าจำนวนเท่าใดก็ได้ภายในขีดจำกัดของพูล/ขีดจำกัดสูงสุด พร้อมคำสั่งซื้อที่ทำงานพร้อมกันได้; หากไม่มีการรับรอง — เช่าได้ครั้งละ 400 หน่วย (คำสั่งซื้อถัดไปทำได้หลังจากที่การเช่าก่อนหน้าสิ้นสุดลงแล้วเท่านั้น) ติดต่อฝ่ายสนับสนุนของ Netts สำหรับการรับรอง
- ขั้นต่ำ: 400 หน่วย สูงสุด: 5000 หน่วยต่อคำสั่งซื้อ (การกำหนดค่าปัจจุบัน)
- ระยะเวลา:
5m(300 วินาที) และ1h(3600 วินาที) Bandwidth จะถูกเรียกคืนโดยอัตโนมัติเมื่อหมดระยะเวลา - ไม่มีการเพิ่มส่วนเผื่อ (No buffer): ได้รับการ delegate ตามจำนวนที่ร้องขออย่างแม่นยำ
- hash เป็นอาร์เรย์: คำสั่งซื้อเดียวอาจสร้างแฮชการ delegate ได้สูงสุด 10 รายการ — ทั้งหมดจะถูกส่งกลับมา
- การกำหนดราคา: เรียกเก็บเงินเป็น TRX โดยขึ้นอยู่กับจำนวนและระยะเวลาที่ร้องขอ อัตราอาจแตกต่างกันไปตามช่วงเวลาของวัน ติดต่อฝ่ายสนับสนุนสำหรับราคาปัจจุบัน
- ค่าชดเชยคำสั่งซื้อขนาดเล็ก (delegation): สำหรับคำสั่งซื้อที่ ต่ำกว่า 1000 หน่วย จะมีการเพิ่มค่าบริการคงที่ 0.372 TRX เข้าไปในราคา เพื่อเป็นค่าชดเชยสำหรับการทำ delegation และ reclaim บนเชน คำสั่งซื้อตั้งแต่ 1000 หน่วยขึ้นไปจะไม่มีการเพิ่มค่าบริการนี้
- ค่าชดเชยการส่ง TRX: เมื่อคำสั่งซื้อได้รับการดำเนินการโดยการส่ง TRX (
fulfilledBy = trx) จะมีการเพิ่มค่าบริการคงที่ 0.268 TRX แทน (ค่าชดเชยสำหรับการโอน TRX บนเชน) - trx_send: ใช้ได้เฉพาะกับ
amount = 400เท่านั้น หากไม่มี Bandwidth พร้อมใช้งาน จะส่ง TRX ไปยังที่อยู่นั้นแทนเพื่อให้ธุรกรรมยังคงดำเนินต่อไปได้ - check: ข้ามการ delegate (และการเรียกเก็บเงิน) เมื่อผู้รับมี Bandwidth มากกว่า 400 อยู่แล้ว
- รูปแบบของรหัสคำสั่งซื้อ:
B5M…(5 นาที) /B1H…(1 ชั่วโมง) - เวลาในการตอบกลับ (Response timeout): สูงสุดประมาณ ~12 วินาทีในขณะที่รอการ delegate โดยทั่วไปจะใช้เวลา 1–2 วินาที