跳转到正文
ORBITRAONE

开发者文档

从首次调用到最终确认状态。

面向 NexusSDK、NexusWASM 合约与节点工具的指南、概念说明与示例代码。示例均为示意性内容,从运行环境读取凭证,并设计用于随 SDK 访问权限发放的沙盒环境中运行。

开始

概览

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 引入的签名套件或凭证格式变更。
  • 影响节点运营方与验证者的协议参数。
  • 经协调披露后公开的安全修复。

您正在阅读预览版文档。其中的接口按工程设计记录,在正式发布前可能发生变更;每项变更都会记录在引入该变更的版本发行说明中。