开发者
签名与数据流
Ora API 中少数需要你自己的钱包签名的流程,以及如何读取实时数据流。
需要你签名的交易
Section titled “需要你签名的交易”大多数链上操作完全在 Ora 一侧执行,使用的是 Ora 为你的代币管理的钱包:发射、买入、卖出、清仓、销毁、锁定、策略和奖励领取。对于这些操作,你的脚本永远不会接触私钥。
少数流程会 从你自己的钱包 转出资金,因此它们会返回需要由该钱包签名的交易:
| 流程 | 构建 | 然后 |
|---|---|---|
| 为发射注资 | POST /engine/fund |
签名并发送,然后调用 POST /engine/fund/confirm |
| 取消发射 | POST /engine/cancel |
调用 POST /engine/cancel/submit,附上已签名的交易 |
| 收取收益 | POST /engine/collect |
调用 POST /engine/collect/submit,附上已签名的交易 |
| 购买老钱包 | POST /portfolio/marketplace/quote |
调用 POST /portfolio/marketplace/buy,附上已签名的存入交易 |
要以无人值守的方式运行这些流程,你的脚本需要该钱包的密钥。如果用的是你注册时创建的内嵌钱包,请改为在应用中签名。
实时数据以 Server-Sent Events 的形式推送。浏览器的 EventSource 无法发送请求头,因此请在你的服务器、脚本或扩展中用 fetch 读取数据流:
const res = await fetch(`https://api.useora.xyz/engine/tokens/${mint}/stream`, { headers: { Authorization: `Bearer ${process.env.ORA_API_KEY}`, Accept: 'text/event-stream' },});const reader = res.body.pipeThrough(new TextDecoderStream()).getReader();let buf = '';for (;;) { const { value, done } = await reader.read(); if (done) break; // reconnect with backoff buf += value; for (let i; (i = buf.indexOf('\n\n')) >= 0; buf = buf.slice(i + 2)) { const frame = buf.slice(0, i); // "event: …" and "data: {…}" lines console.log(frame); }}每个打开的数据流在你的速率限制中计为一个请求。
| 数据流 | 内容 |
|---|---|
/engine/tokens/{mint}/stream |
在一个连接上获取一个代币的数据:先是一个 snapshot,随后是状态事件;先是 trades_snapshot,随后是每一笔 trade;还有已知的持有该代币的钱包,以及持有者统计。 |
/user/tracked-wallets/trades/stream |
你所追踪钱包的实时交易。 |
/sol-usd/events |
SOL/USD 价格。 |
/blockhash/events |
最新的区块哈希和区块高度,大约每 220 毫秒一次。 |
/jito/tip-lamports/events |
Jito 小费下限的各分位数。 |
/jito/tip-accounts/events |
Jito 小费账户列表。 |