【发布时间】:2022-08-16 04:13:05
【问题描述】:
我可以调用任何 API 来获取主网或任何集群的当前集群统计信息吗?
我在 Solana Explorer 源代码上看到他们正在手动计算它,但我有点希望也有一个 API?
https://github.com/solana-labs/solana/blob/master/explorer/src/components/TpsCard.tsx
标签: solana
我可以调用任何 API 来获取主网或任何集群的当前集群统计信息吗?
我在 Solana Explorer 源代码上看到他们正在手动计算它,但我有点希望也有一个 API?
https://github.com/solana-labs/solana/blob/master/explorer/src/components/TpsCard.tsx
标签: solana
在您的情况下,您需要https://docs.solana.com/developing/clients/jsonrpc-api#getrecentperformancesamples,您甚至可以看到它在 Solana Explorer 中的使用方式。
使用 curl,您可以执行以下操作:
curl http://localhost:8899 -X POST -H "Content-Type: application/json" -d '
{"jsonrpc":"2.0", "id":1, "method":"getRecentPerformanceSamples", "params": [1]}
'
这使:
{
"jsonrpc": "2.0",
"result": [
{
"numSlots": 126,
"numTransactions": 126,
"samplePeriodSecs": 60,
"slot": 348125
}
}
然后你可以通过numTransactions / samplePeriodSecs 计算出TPS。
【讨论】:
目前没有用于获取诸如 TPS 之类的 Solana 集群统计信息的 API 端点。
您可以使用getBlock 计算它,并使用一段时间内的交易列表来获得 TPS。
【讨论】:
仍然没有 API,但我设法从这里为我的 web3 项目刮取 TPS:https://explorer.solana.com/
用于测试的完整 Python 代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
web = webdriver.Chrome()
web.get(f'https://explorer.solana.com/')
get_solana_status = WebDriverWait(web,5).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[1]/div[3]/div[3]/div[3]/div[2]/table/tbody/tr[2]/td[2]"))).text
solana_status_comma = get_solana_status.replace(",", " ")
solana_status = "".join(solana_status_comma.split())
print(solana_status)
请注意,如果引发异常,您可能需要重新定位 XPATH,因为网页很可能已更改:https://selenium-python.readthedocs.io/locating-elements.html
【讨论】: