开始
概览
NexusSDK 提供的能力,以及每项服务遵循的规则。
NexusSDK 是 ORBITRA ONE™ 的开发者接口。它将市场、身份、资产与智能体基础组件封装为带类型的服务,其底层由驱动 Orbitra Prime 运行、并在 Orbitra L1 上结算的同一套原生模块提供支持。
服务
- 市场 API——在 ApexMatch 上处理订单、订单簿、RFQ 与清算增量,每笔订单均经过 Aegis 预风控。
- Asset Studio——发行与管理代币化资产,涵盖发行方权限、生命周期事件与资格核验。
- 智能体身份——AI 智能体与机器人以可问责身份注册,并各自绑定一项 Cortex 策略。
- 数据交换——发布与授权具备可验证来源的数据集与信号。
- VaultID——核验资格与权限凭证,而无需处理身份文件本身。
- 支付——支付请求与结算,具备与交易相同的确定性终局性。
设计原则
- 每次调用均由拥有明确、限定范围权限的身份发起。
- 每次状态变更都会返回一份可独立验证的签名凭证。
- 您在客户端设置的限额,协议会再次强制执行。
- 凭证与终端地址均来自运行环境,绝不写入源代码。
开始
快速入门
安装 SDK,从运行环境配置凭证,并发起首次经身份验证的调用。
示例中的软件包与 crate 名称仅为示意性写法。正式发布的软件包名称、沙盒凭证与终端地址将随 SDK 访问权限一并发放——登记开发者意向。
安装
安装 NexusSDK
# TypeScript and JavaScript
npm install @orbitra/nexus-sdk
# Python
pip install orbitra-nexus
# Rust
cargo add orbitra-nexus配置凭证
SDK 会读取两个环境变量。请勿将其纳入源代码版本控制,应从密钥管理服务或部署环境中加载。建议先使用沙盒凭证:沙盒环境与真实资产及市场完全隔离。
- ORBITRA_API_KEY——随 SDK 访问权限发放的限定范围凭证。
- ORBITRA_ENDPOINT——与该凭证一并发放的环境终端地址。
设置环境变量
# Both values are issued with SDK access. Never commit them to a repository.
export ORBITRA_API_KEY="<issued-with-sdk-access>"
export ORBITRA_ENDPOINT="<issued-with-sdk-access>"首次调用
读取当前账户
import { NexusClient } from '@orbitra/nexus-sdk';
const apiKey = process.env.ORBITRA_API_KEY;
const endpoint = process.env.ORBITRA_ENDPOINT;
if (!apiKey || !endpoint) {
throw new Error('Set ORBITRA_API_KEY and ORBITRA_ENDPOINT before running this example.');
}
const nexus = new NexusClient({ apiKey, endpoint });
const account = await nexus.accounts.current();
console.log(account.id, account.permissions);响应内容描述该凭证对应的账户:其 VaultID 凭证、授予该密钥的权限,以及可访问的市场。权限错误表示该密钥有效,但未获得执行该操作的范围授权。后续示例使用简写形式 NexusClient.fromEnv(),它读取相同的两个环境变量。
概念
账户与 VaultID
面向个人、机构、应用与智能体的身份、凭证及限定范围权限。
VaultID 是身份、资格与权限层。每一位调用者——无论是个人、机构、应用还是智能体——都通过持有凭证的身份进行操作。应用只核验凭证本身,永远不会获取其背后的原始文件。
身份类型
- 个人——持有开户流程中签发的资格凭证的自然人。
- 机构——拥有子账户、角色与双人审批规则的组织。
- 应用——由开发者注册的服务,仅持有其自身声明的权限。
- 智能体——绑定 Cortex 策略、且可由其所有者撤销的 AI 智能体或机器人。
限定范围的密钥
API 密钥签发给某个身份时会附带明确范围:可使用哪些服务、哪些市场、哪些操作,以及有效期限。请为每个环境与每个应用使用独立密钥,并及时撤销不再需要的密钥。
在启用功能前核验凭证
import { NexusClient } from '@orbitra/nexus-sdk';
const nexus = NexusClient.fromEnv();
export async function canTradeOptions(subjectId: string): Promise<boolean> {
// Returns whether the credential is present and valid, never the data behind it.
const result = await nexus.vaultid.verify({
subject: subjectId,
credential: 'eligibility.options',
});
return result.valid;
}请勿在您的应用中收集身份文件以自行实现资格核验。应直接请求凭证:VaultID 只确认该凭证是否存在且有效,不会提供更多信息。
概念
证据与终局性
凭证包含的内容、状态变更何时成为最终确认,以及如何对两者进行验证。
每次引发状态变更的调用都会返回一份凭证:这是网络处理您请求过程的签名记录——包括请求何时被接收、在何处完成排序、Aegis 做出何种判定,以及最终产生了哪些变化。
凭证内容
- 接收——请求的接入时间戳,以及受理该请求的网关签名。
- 排序——公平排序机制分配的规范位置。
- 风险判定——Aegis 的决定;若被拒绝,还会说明将被突破的具体限额。
- 结果——该状态转换产生的成交、清算增量、合约事件或转账。
- 终局性——状态转换完成最终确认后,指向对应 QSE 法定人数证书的引用。
当一份 QSE 法定人数证书覆盖某次状态转换时,该转换即完成最终确认。无需等待任何确认深度:在所声明的故障模型下,一旦获得证书,该状态便不会发生重组。
等待最终确认并验证证书
import { NexusClient } from '@orbitra/nexus-sdk';
const nexus = NexusClient.fromEnv();
export async function confirmFinal(transitionId: string): Promise<boolean> {
// Resolves once a QSE quorum certificate covers the transition.
const finality = await nexus.finality.wait(transitionId);
// Checks the certificate signatures locally against the validator set it names.
const verified = await nexus.finality.verify(finality.certificate);
return finality.status === 'final' && verified;
}构建
市场 API 与 ApexMatch 订单
使用 TypeScript、Python 与 Rust,在客户端策略约束下提交一笔只做挂单(post-only)的限价订单。
市场 API 直接开放 ApexMatch 的能力。订单本质上是已签名的意图:SDK 使用您的密钥对其签名,网关验证签名,公平排序机制分配位置,随后 Aegis 预风控运行完毕,订单才能进入订单簿。
客户端策略提供第二重保障。SDK 会在签名前对其进行评估,因此任何超出您自身限额的订单都不会离开您的进程。Aegis 仍会在协议关口强制执行账户级限额。
在客户端策略约束下提交限价订单
import { NexusClient, definePolicy } from '@orbitra/nexus-sdk';
// fromEnv() reads ORBITRA_API_KEY and ORBITRA_ENDPOINT.
const nexus = NexusClient.fromEnv();
// Evaluated locally before the order is signed.
// Aegis enforces account-level limits again at the protocol gate.
const policy = definePolicy({
markets: { allow: ['EURUSD'] },
maxOrderNotional: '50000',
maxLeverage: 2,
requirePostOnly: true,
});
const receipt = await nexus.orders.place(
{
market: 'EURUSD',
side: 'buy',
type: 'limit',
price: '1.0850',
size: '10000',
postOnly: true,
clientOrderId: 'docs-example-001',
},
{ policy },
);
console.log(receipt.status, receipt.sequence, receipt.riskVerdict);订单类型
核心订单类型——市价、限价、止损、止损限价、只做挂单与只减仓——均为原生支持。高级、算法与机构类订单基于相同的基础组件构建;完整的订单体系说明见执行页面。
示例中的市场代码、价格与数量均为示意性内容。通过 API 访问市场须遵循与界面相同的资格与司法管辖区规则。
构建
风险与 Aegis 模拟
在投入资金前,模拟交易后的投资组合状态与压力情景。
Aegis 开放其在预风控关口运行的同一套模拟能力。发送拟提交的订单及可选的压力情景,Aegis 会返回预测的投资组合状态,以及订单将突破的任何策略限制,且不会实际提交任何内容。
提交前先进行模拟
import { NexusClient } from '@orbitra/nexus-sdk';
const nexus = NexusClient.fromEnv();
// Nothing is submitted: Aegis returns the projected post-trade state.
const simulation = await nexus.risk.simulate({
orders: [
{ market: 'EURUSD', side: 'buy', type: 'limit', price: '1.0850', size: '10000' },
],
scenarios: ['volatility-shock', 'liquidity-drain'],
});
console.log('margin used', simulation.marginUsed);
console.log('liquidation distance', simulation.liquidationDistance);
for (const breach of simulation.policyBreaches) {
console.warn(breach.policy, breach.limit, breach.projected);
}模拟返回的内容
- 拟提交订单成交后,预计的保证金占用与可用抵押品。
- 订单将影响的每个持仓的强平距离。
- 每个请求的压力情景对应的结果。
- 每一项策略突破,包括对应限额与预测数值。
模拟结果反映的是请求发生那一刻的投资组合状态。市场行情会变动,因此模拟并不保证订单会以相同数值被接受或成交。
构建
智能体与 Cortex 策略
注册一个智能体身份,并将其绑定至具备明确限额与紧急停止控制的策略。
智能体本身即是一个独立身份。它可以广泛观察市场,但只能在 Cortex 策略范围内行动:可分配的资金、可能承受的亏损、可使用的杠杆、市场与时段,何时须由人工确认,以及可依赖的数据来源。
智能体提出的每项意图都要经过 Cortex 循环——观察、推理、提议、模拟、授权、执行。策略引擎会对每一项予以授权或拒绝,且每次操作都会生成归属于该智能体的凭证。
Cortex 策略示例
{
"policyVersion": "1",
"capital": { "maxAllocation": "100000", "asset": "USD" },
"loss": { "dailyLimit": "2000", "lifetimeLimit": "10000" },
"leverage": { "ceiling": 3 },
"markets": { "allow": ["EURUSD", "GBPUSD"], "deny": [] },
"session": { "hours": "Mon-Fri 07:00-17:00 UTC", "expiresAfter": "P30D" },
"confirmation": { "requiredAboveNotional": "25000" },
"dataSources": ["prism:fx-majors", "account:portfolio"],
"kill": { "onBreach": "revoke-all", "cancelOpenOrders": true }
}注册智能体并绑定策略
import { readFile } from 'node:fs/promises';
import { NexusClient } from '@orbitra/nexus-sdk';
const nexus = NexusClient.fromEnv();
const policy = JSON.parse(await readFile('./policies/fx-hedger.json', 'utf8'));
const agent = await nexus.agents.register({ name: 'fx-hedger', policy });
// At any time, one command revokes every permission the agent holds.
await nexus.agents.kill(agent.id);停止智能体
紧急停止控制可通过一条指令撤销该智能体持有的全部权限。未平仓订单将按策略规定被撤销,且该智能体的密钥将无法再进行签名。
自动化机制,包括 AI 辅助自动化,可能出现故障或意外行为。策略可限定损失范围,但无法消除风险本身。参见自动化与 AI 辅助交易。
构建
NexusWASM 合约
使用 Rust 编写一个能力范围受限的合约,并调用原生市场基础组件。
NexusWASM 合约编译为 WebAssembly,并在按用量计费的沙箱中运行。合约需声明自身的能力——可调用的基础组件与可访问的状态——运行时会拒绝任何超出该声明范围的调用。
一个能力范围受限的资金管理合约
use orbitra_nexus_wasm::prelude::*;
use orbitra_nexus_wasm::market::{LimitOrder, MarketId, OrderReceipt, Side};
/// Rebalances a treasury position with post-only limit orders on one market.
/// The capability list is checked at deployment; any other call is rejected at runtime.
#[contract(capabilities = [market::place_order, market::cancel_order, storage::read_write])]
pub struct TreasuryRebalancer {
market: MarketId,
max_order_size: Decimal,
}
#[contract_impl]
impl TreasuryRebalancer {
#[call(owner_only)]
pub fn rebalance(
&mut self,
ctx: &mut Context,
side: Side,
price: Decimal,
size: Decimal,
) -> Result<OrderReceipt> {
ensure!(size <= self.max_order_size, ContractError::SizeAboveLimit);
let order = LimitOrder::new(self.market.clone(), side, price, size).post_only(true);
// Native call into ApexMatch. Aegis pre-risk applies to the contract's own account.
ctx.market().place_order(order)
}
}构建
编译为 WebAssembly
rustup target add wasm32-unknown-unknown
cargo build --release --target wasm32-unknown-unknown- 计算与存储均按明确价格计费,因此合约的成本直接取决于其实际执行的操作。
- 声明式状态访问使相互独立的合约可在 VectorLanes 上并行运行。
- 合约发出的市场调用会像任何其他订单一样,针对合约自身账户经过 Aegis 预风控。
- 部署时会随模块一并提交其能力清单;调用未声明基础组件的模块将被拒绝。
构建
EVM Capsule 迁移路径
先在隔离环境中运行现有 EVM 合约,再将关键路径迁移至 NexusWASM。
EVM Capsule 是面向以太坊字节码与工具链的隔离兼容域。它拥有自己的 gas 与资源上限,只能通过限速网关接触核心资产,并可在不影响核心运行时的情况下由熔断器暂停。
该隔离环境是一个兼容性边界,而非核心执行环境。原生市场基础组件由 NexusWASM 调用;该隔离环境只能通过其受治理的网关接触核心资产。
迁移步骤
- 原样部署。 现有合约与熟悉的工具链在该隔离环境内运行,按其自身上限计量。
- 谨慎跨链。 通过限速网关转移资产,并按自身敞口设定路由上限。
- 评估衡量。 识别原生性能或市场访问最为关键的环节——通常是订单处理、结算与风险逻辑。
- 迁移移植。 将这些关键路径重新实现为直接调用 ApexMatch 与 Aegis 的 NexusWASM 合约,同时保留隔离环境版本作为参考。
- 验证并退役。 对两个版本重放相同输入,结果一致后将用户迁移至原生合约,并逐步停用该隔离环境部署。
运维
验证者与节点工具
验证发行版本,从运行环境配置节点,并查看已分配的职责。
运营方运行节点客户端,以重放已最终确认的状态、服务于应用,或在获准成为验证者后,在 QSE 下承担提议者与委员会职责。同一客户端可服务于各种角色:配置来自运行环境,签名密钥始终保存在 HSM 或 MPC 签名器中。
验证、配置并查看节点状态
# Verify the release before installing it. Release-signing keys are published with operator access.
orbitra-node verify-release ./orbitra-node.tar.gz --signature ./orbitra-node.tar.gz.sig
# Configuration comes from the environment. Keys stay in the HSM or MPC signer.
export ORBITRA_NETWORK="<issued-with-operator-access>"
export ORBITRA_ENDPOINT="<issued-with-operator-access>"
export ORBITRA_SIGNER="hsm" # or "mpc"
orbitra-node init --network "$ORBITRA_NETWORK" --signer "$ORBITRA_SIGNER"
orbitra-node start
# Inspect assigned duties, quorum participation and service measurements.
orbitra-node status --duties --service
# Rehearse a Q-Switch signature-suite rotation without applying it.
orbitra-node keys rotate --suite next --dry-run示例中显示的命令名称仅为示意。运营方客户端、其发行版签名密钥与网络标识符均随运营方访问权限一并发放——参见验证者。
运营规则
- 安装或升级前,务必验证每个发行版本的签名。
- 始终通过签名器引用密钥,绝不使用文件方式:验证者密钥不应存放在节点主机上。
- 将职责与服务度量数据导出至您自己的监控与告警系统。
- 通过 Q-Switch 命令轮换签名套件,而非临时更换密钥。
运维
更新日志
发行说明的发布方式,以及每份说明记录的内容。
每个 NexusSDK 版本均附有发行说明,并与该版本的文档一同发布于本网关。版本选择器会显示您当前阅读的版本。
每份发行说明记录的内容
- 新增、变更与移除的接口,并为每种新形式提供示例。
- 已弃用的内容、对应的替代方案,以及迁移步骤。
- 通过 Q-Switch 引入的签名套件或凭证格式变更。
- 影响节点运营方与验证者的协议参数。
- 经协调披露后公开的安全修复。
您正在阅读预览版文档。其中的接口按工程设计记录,在正式发布前可能发生变更;每项变更都会记录在引入该变更的版本发行说明中。