เอกสารประกอบ Leader Slot Information API
Leader Slot Information (getLeaderSlots) API คืออะไร?
getLeaderSlots เป็นเมธอด Solana RPC แบบขยายที่คืนค่าเรคคอร์ดของ leader slot ที่กำลังจะมาถึง พร้อมด้วย identity ของ validator, น้ำหนัก stake, เมตาดาตาของ endpoint เครือข่าย, ตำแหน่งโดยประมาณของ leader และค่าวัด latency อ้างอิง หากคุณถือ ERPC usage credits (API tokens) คุณสามารถเรียกใช้งานได้ในรูปแบบเดียวกับเมธอด Solana RPC มาตรฐานAPI นี้ให้ข้อมูล:
- ตารางเวลาของ leader validator โดยเริ่มจาก slot ที่ร้องขอ
stakeWeightของ leader validator แต่ละราย- ภูมิภาค เมือง ประเทศ พิกัด องค์กร ASN และเขตเวลาโดยประมาณของ leader
- ค่าวัด ping อ้างอิงจากภูมิภาคสังเกตการณ์ของ ERPC ผ่าน
pingToLeaders
ตัวอย่าง Endpoint และ Request Body
text
https://edge.erpc.global?api-key=<YOUR_API_KEY>https://edge.erpc.global?api-key=<YOUR_API_KEY>ระบุหมายเลข slot เริ่มต้นใน
paramsjson
{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [416462031]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "getLeaderSlots",
"params": [416462031]
}ตัวอย่าง (HTTP)
bash
curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getLeaderSlots",
"params":[416462031]
}'curl 'https://edge.erpc.global?api-key=<YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"getLeaderSlots",
"params":[416462031]
}'ตัวอย่าง Response (JSON)
Response ปัจจุบันจะห่อเรคคอร์ดไว้ใน
result.data[] ส่วน result.total แสดงจำนวนเรคคอร์ดที่ถูกคืนกลับมาjson
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Leader schedule records retrieved successfully",
"total": 100,
"data": [
{
"identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
"epoch": 964,
"slot": "416462031",
"stakeWeight": 2502391.138720913,
"ipAddress": "5.199.172.175",
"gossipPort": 12000,
"tpuPort": 12003,
"tpuQuicPort": 12009,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "stockholm",
"leaderCity": "Šiauliai",
"leaderCountry": "LT",
"leaderLat": 55.93333,
"leaderLon": 23.31667,
"leaderOrg": "AS16125 UAB Cherry Servers",
"leaderTimezone": "Europe/Vilnius",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 27.742,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
"epoch": 964,
"slot": "416462032",
"stakeWeight": 280745.689124988,
"ipAddress": "64.130.43.229",
"gossipPort": 8001,
"tpuPort": 5004,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "amsterdam",
"leaderCity": "Amsterdam",
"leaderCountry": "NL",
"leaderLat": 52.37403,
"leaderLon": 4.88969,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Amsterdam",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 16.835,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
"epoch": 964,
"slot": "416462036",
"stakeWeight": 12254651.761860535,
"ipAddress": "64.130.41.46",
"gossipPort": 8000,
"tpuPort": 9001,
"tpuQuicPort": 9007,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.1924,
"leaderLon": 8.6753,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 0.974,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
}
]
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"message": "Leader schedule records retrieved successfully",
"total": 100,
"data": [
{
"identity": "BSVckjdW2f8kcXPGcrPPtV9kUDBZ8w8PjrrGVnxgEdwq",
"epoch": 964,
"slot": "416462031",
"stakeWeight": 2502391.138720913,
"ipAddress": "5.199.172.175",
"gossipPort": 12000,
"tpuPort": 12003,
"tpuQuicPort": 12009,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "stockholm",
"leaderCity": "Šiauliai",
"leaderCountry": "LT",
"leaderLat": 55.93333,
"leaderLon": 23.31667,
"leaderOrg": "AS16125 UAB Cherry Servers",
"leaderTimezone": "Europe/Vilnius",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 27.742,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "2oHUYyW2PU9VJh4XBs5TbGgzdernunvGqyKth3kxW4ns",
"epoch": 964,
"slot": "416462032",
"stakeWeight": 280745.689124988,
"ipAddress": "64.130.43.229",
"gossipPort": 8001,
"tpuPort": 5004,
"tpuQuicPort": 5010,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "amsterdam",
"leaderCity": "Amsterdam",
"leaderCountry": "NL",
"leaderLat": 52.37403,
"leaderLon": 4.88969,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Amsterdam",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 16.835,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
},
{
"identity": "JupmVLmA8RoyTUbTMMuTtoPWHEiNQobxgTeGTrPNkzT",
"epoch": 964,
"slot": "416462036",
"stakeWeight": 12254651.761860535,
"ipAddress": "64.130.41.46",
"gossipPort": 8000,
"tpuPort": 9001,
"tpuQuicPort": 9007,
"rpcAddress": null,
"version": "3.1.13",
"featureSet": "534737035",
"leaderRegion": "frankfurt",
"leaderCity": "Frankfurt am Main",
"leaderCountry": "DE",
"leaderLat": 50.1924,
"leaderLon": 8.6753,
"leaderOrg": "AS20326 TeraSwitch Networks Inc.",
"leaderTimezone": "Europe/Berlin",
"pingToLeaders": [
{
"city": "Frankfurt am Main",
"region": "frankfurt",
"ms": 0.974,
"fromIp": "185.191.118.11",
"country": "DE",
"lat": 50.139,
"lon": 8.6725,
"org": "AS213896 UAB Cherry Servers",
"postal": "60320",
"timezone": "Europe/Berlin"
}
]
}
]
}
}ฟิลด์ของ Response
| ฟิลด์ | ความหมาย |
|---|---|
result.success | ระบุว่าคำขอสำเร็จหรือไม่ |
result.message | ข้อความสถานะที่อ่านเข้าใจได้ |
result.total | จำนวนเรคคอร์ด leader slot ที่คืนกลับมา ปัจจุบัน API คืนค่า 100 เรคคอร์ดต่อหนึ่งคำขอ |
result.data[] | เรคคอร์ด leader slot ที่เรียงลำดับ โดยเริ่มจาก slot ที่ร้องขอ |
identity | public key ของ identity ของ leader validator |
epoch | Solana epoch ที่บรรจุ slot นั้นอยู่ |
slot | หมายเลข slot จะถูกคืนค่าเป็น string ดังนั้นไคลเอนต์ไม่ควรสันนิษฐานว่าเป็นตัวเลขแบบ JSON |
stakeWeight | stake ที่ถูกมอบหมายให้กับ leader validator โดยทั่วไป stake ที่สูงกว่าหมายความว่า validator จะปรากฏในตารางเวลา leader บ่อยขึ้นเมื่อเวลาผ่านไป |
leaderRegion | ป้ายกำกับภูมิภาคการทำงานที่ถูกทำให้เป็นมาตรฐาน ใช้สำหรับการกำหนดเส้นทางและการวิเคราะห์ อาจจัดกลุ่มเมืองหรือตำแหน่งของผู้ให้บริการที่อยู่ใกล้กัน |
leaderCity, leaderCountry, leaderLat, leaderLon, leaderOrg, leaderTimezone | ตำแหน่งทางภูมิศาสตร์และองค์กรเครือข่ายโดยประมาณของ leader validator |
pingToLeaders[] | latency อ้างอิงจากภูมิภาคสังเกตการณ์ของ ERPC ไปยัง leader รวมถึงภูมิภาค เมือง ms, fromIp ประเทศ พิกัด องค์กร ASN รหัสไปรษณีย์ และเขตเวลา |
การมองเห็น Leader Slots เป็นภาพ
Response เดียวกันนี้สามารถมองเป็นไทม์ไลน์การทำงานแบบ slot ต่อ slot ได้ ตัวอย่างนี้ใช้ Frankfurt เป็นจุดสังเกตการณ์
| ช่วง Slot | ภูมิภาคของ leader | ตำแหน่งของ leader | น้ำหนัก stake | Ping จาก Frankfurt | การตีความเชิงปฏิบัติการ |
|---|---|---|---|---|---|
| 416462031 | stockholm | Šiauliai, LT | 2,502,391.14 | 27.742 ms | latency ภายในยุโรปอยู่ในระดับที่สมเหตุสมผล แต่ไม่ใช่เมโทรเดียวกัน |
| 416462032-416462035 | amsterdam | Amsterdam, NL | 280,745.69 | 16.835 ms | ช่วงหน้าต่างยุโรปที่ latency ต่ำ ทรัพยากรใน Amsterdam อาจมีประโยชน์ |
| 416462036 | frankfurt | Frankfurt am Main, DE | 12,254,651.76 | 0.974 ms | leader อยู่ในภูมิภาคเดียวกัน ทรัพยากรใน Frankfurt ได้เปรียบอย่างมากสำหรับ slot นี้ |
มุมมองนี้มีประโยชน์เพราะ Solana เป็นเครือข่ายระดับโลก ต่างจาก HFT แบบดั้งเดิมที่เป้าหมายหลักมักเป็นการอยู่ใกล้ matching engine เพียงตัวเดียว leader ของ Solana จะหมุนเวียนไปทั่ว validator รอบโลก ภูมิภาคที่เร็วที่สุดจะเปลี่ยนไปตามการเปลี่ยนแปลงของตารางเวลา leader
เว็บไซต์ข้อมูลเครือข่าย Solana
สำหรับมุมมองสาธารณะของการกระจายตัวของ validator และเครือข่าย ให้ใช้ Validators Solutions ใช้เพื่อทำความเข้าใจภาพรวมของเครือข่าย Solana ที่กว้างขึ้น จากนั้นใช้
getLeaderSlots เพื่อให้ได้ข้อมูลตารางเวลาระดับ slot, น้ำหนัก stake, ตำแหน่งของ validator และค่า ping ที่วัดได้ ซึ่งจำเป็นสำหรับการกำหนดเส้นทางเชิงปฏิบัติการการใช้ Token
API ดึงเรคคอร์ด leader slot จำนวน 100 รายการโดยเริ่มจาก slot ที่ระบุ แต่ละคำขอใช้ 420 tokens
ทำไมข้อมูล Leader Slot จึงสำคัญ
- หาก leader อยู่ห่างไกลในเชิงภูมิศาสตร์หรือในเส้นทางเครือข่าย การส่ง transaction โดยตรงจะมีประสิทธิภาพต่ำลง
- น้ำหนัก stake ช่วยประเมินว่า validator มีแนวโน้มจะปรากฏในตารางเวลา leader บ่อยเพียงใดเมื่อเวลาผ่านไป
- ในช่วงการเปลี่ยนผ่าน leader ระดับโลก กลยุทธ์การสลับตามภูมิภาคมีความสำคัญมากกว่าค่า latency เฉลี่ยระดับโลกเพียงค่าเดียว
- การผสานข้อมูลตารางเวลา slot, น้ำหนัก stake, ตำแหน่งของ leader และข้อมูล ping ที่วัดได้ ช่วยให้สามารถปรับการกำหนดเส้นทางและการวางตำแหน่ง validator ให้เหมาะสมที่สุด
ความเป็นมา
หนึ่ง Solana epoch ประกอบด้วย slot ประมาณ 432,000 slot การเก็บรวบรวมตารางเวลา leader, เมตาดาตาของ validator, ตำแหน่งทางภูมิศาสตร์ และค่าวัด latency อย่างต่อเนื่อง จำเป็นต้องใช้ data pipeline เฉพาะทาง ERPC ดูแลข้อมูลนี้และเปิดเผยออกมาเป็นแผนที่ leader slot ที่พร้อมใช้งานได้ทันทีผ่านอินเทอร์เฟซ RPC
กรณีการใช้งานเชิงกลยุทธ์
- การปรับการตรวจจับให้เหมาะสม: ให้ความสำคัญกับช่วงหน้าต่าง leader ที่อยู่ใกล้และมี latency ต่ำ
- การ deploy หลายภูมิภาค: deploy ใน FRA, AMS, NY, TY, SGP และภูมิภาคเชิงกลยุทธ์อื่น ๆ เพื่อลดช่องว่างในช่วงเปลี่ยนผ่าน
- การวางแผนโดยคำนึงถึง stake: ใช้
stakeWeightเพื่อทำความเข้าใจว่า leader รายใดมีความสำคัญบ่อยกว่าในช่วงหน้าต่างที่ยาวขึ้น - การมองเห็นเป็นภาพและการวิเคราะห์: ติดตามสัดส่วนของ leader, การกระจายตัวของ stake และการกระจายตัวของ latency แยกตามภูมิภาค
ความพร้อมใช้งาน
getLeaderSlots พร้อมให้บริการแก่ผู้ใช้ ERPC ทุกราย สามารถออกหรือตรวจสอบ API tokens และ usage credits ได้บน ERPC Web Dashboard- ERPC Web Dashboard: ERPC Web Dashboard
อัตราความสำเร็จของ Transaction และ SWQoS Endpoint
เพื่อยกระดับอัตราความสำเร็จของ transaction และความเร็วในการดำเนินการให้ดียิ่งขึ้น เราขอแนะนำให้ใช้ SWQoS Endpoint โดย SWQoS (Stake-weighted Quality of Service) จะให้ความสำคัญกับ validator ที่มีการเชื่อมต่อแบบ stake leader จะจัดสรรแบนด์วิดท์ประมาณ 80% ให้กับทราฟฟิกที่มีลำดับความสำคัญ และ 20% ให้กับทราฟฟิกที่ไม่มีลำดับความสำคัญ โดยเลนที่มีลำดับความสำคัญให้ throughput มากกว่าประมาณ 5 เท่า การจัดลำดับนี้เกิดขึ้นก่อนการประเมิน Priority-fee ซึ่งหมายความว่าการเข้าสู่เลนลำดับความสำคัญของ SWQoS เป็นเงื่อนไขเบื้องต้นสำหรับประสิทธิภาพ latency ต่ำอย่างแท้จริง







