Ir para o conteúdo
ORBITRAONE

Documentação para desenvolvedores

Da primeira chamada ao estado finalizado.

Guias, conceitos e exemplos para o NexusSDK, contratos NexusWASM e ferramentas de nó. Os exemplos são ilustrativos, leem credenciais a partir do ambiente e foram projetados para rodar nos ambientes de sandbox fornecidos com o acesso ao SDK.

Início

Visão geral

O que o NexusSDK expõe e as regras que todo serviço segue.

O NexusSDK é a interface de desenvolvedor do ORBITRA ONE™. Ele expõe primitivas de mercado, identidade, ativos e agentes como serviços tipados, apoiados pelos mesmos módulos nativos que executam o Orbitra Prime e liquidam no Orbitra L1.

Serviços

  • APIs de mercado — ordens, livros de ofertas, RFQ e deltas de compensação no ApexMatch, com pré-risco do Aegis em cada ordem.
  • Asset Studio — emissão e administração de ativos tokenizados, com permissões do emissor, eventos do ciclo de vida e verificação de elegibilidade.
  • Identidade de agentes — agentes de IA e bots registrados como identidades responsáveis, cada um vinculado a uma política do Cortex.
  • Troca de dados — publicação e licenciamento de conjuntos de dados e sinais com proveniência verificável.
  • VaultID — verificação de credenciais de elegibilidade e permissões, sem manipular documentos de identidade.
  • Pagamentos — solicitações de pagamento e liquidação com a mesma finalidade determinística das negociações.

Regras de design

  • Toda chamada é feita por uma identidade com permissões explícitas e delimitadas.
  • Toda mudança de estado retorna um recibo assinado que pode ser verificado de forma independente.
  • Os limites definidos no cliente são aplicados novamente pelo protocolo.
  • Credenciais e endpoints vêm do ambiente, nunca do código-fonte.

Início

Início rápido

Instale o SDK, configure as credenciais a partir do ambiente e faça a primeira chamada autenticada.

Os nomes de pacotes e crates usados nestes exemplos seguem um padrão ilustrativo. Os nomes de pacotes publicados, as credenciais de sandbox e os endpoints são fornecidos com o acesso ao SDK — registre seu interesse como desenvolvedor.

Instalar

Instalar o NexusSDK

# TypeScript and JavaScript
npm install @orbitra/nexus-sdk

# Python
pip install orbitra-nexus

# Rust
cargo add orbitra-nexus

Configurar as credenciais

O SDK lê duas variáveis de ambiente. Mantenha ambas fora do controle de versão e carregue-as a partir de um gerenciador de segredos ou do seu ambiente de implantação. Comece com credenciais de sandbox: o sandbox é isolado dos ativos e mercados reais.

  • ORBITRA_API_KEY — a credencial delimitada fornecida com o acesso ao SDK.
  • ORBITRA_ENDPOINT — o endpoint do ambiente fornecido com essa credencial.

Configurar o ambiente

# 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>"

Primeira chamada

Ler a conta atual

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);

A resposta descreve a conta associada à credencial: suas credenciais VaultID, as permissões concedidas a essa chave e os mercados aos quais ela pode ter acesso. Um erro de permissão significa que a chave é válida, mas não está delimitada para essa ação. Os exemplos seguintes usam o atalho NexusClient.fromEnv(), que lê as mesmas duas variáveis.

Conceitos

Contas e VaultID

Identidades, credenciais e permissões delimitadas para pessoas, instituições, aplicações e agentes.

VaultID é a camada de identidade, elegibilidade e permissão. Todo chamador — uma pessoa, uma instituição, uma aplicação ou um agente — atua por meio de uma identidade que possui credenciais. As aplicações verificam credenciais; elas nunca recebem os documentos por trás delas.

Tipos de identidade

  • Pessoa física — uma pessoa que possui credenciais de elegibilidade emitidas durante o onboarding.
  • Instituição — uma organização com subcontas, funções e regras de aprovação por duas pessoas.
  • Aplicação — um serviço registrado por um desenvolvedor, com apenas as permissões que declara.
  • Agente — um agente de IA ou bot vinculado a uma política do Cortex e revogável por seu proprietário.

Chaves delimitadas

As chaves de API são emitidas para uma identidade com um escopo: quais serviços, quais mercados, quais ações e por quanto tempo. Use uma chave separada para cada ambiente e cada aplicação, e revogue as chaves que já não forem necessárias.

Verificar uma credencial antes de habilitar um recurso

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;
}

Não colete documentos de identidade na sua aplicação para recriar verificações de elegibilidade. Em vez disso, solicite a credencial: o VaultID confirma apenas se ela está presente e válida, nada mais.

Conceitos

Evidência e finalidade

O que um recibo contém, quando uma mudança de estado é final e como verificar ambos.

Toda chamada que altera o estado retorna um recibo: um registro assinado do que a rede fez com sua solicitação — quando ela foi recebida, onde foi sequenciada, o que o Aegis decidiu e o que mudou como resultado.

Conteúdo do recibo

  • Recebido — o registro de data e hora de entrada e a assinatura do gateway que aceitou a solicitação.
  • Sequência — a posição canônica atribuída pelo sequenciamento justo.
  • Veredito de risco — a decisão do Aegis e, em caso de rejeição, o limite que teria sido violado.
  • Resultado — execuções, deltas de compensação, eventos de contrato ou transferências produzidos pela transição.
  • Finalidade — uma referência ao certificado de quórum QSE quando a transição se torna final.

Uma transição é final quando um certificado de quórum QSE a cobre. Não há profundidade de confirmação a aguardar: uma vez certificado, o estado não se reorganiza sob o modelo de falhas declarado.

Aguardar a finalidade e verificar o certificado

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;
}

Construir

APIs de mercado e ordens no ApexMatch

Envie uma ordem limite post-only sob uma política do lado do cliente, em TypeScript, Python e Rust.

As APIs de mercado expõem o ApexMatch diretamente. As ordens são intenções assinadas: o SDK as assina com sua chave, o gateway verifica a assinatura, o sequenciamento justo atribui uma posição e o pré-risco do Aegis é executado antes que a ordem possa chegar ao livro.

Uma política do lado do cliente adiciona uma segunda proteção. O SDK a avalia antes de assinar, de modo que uma ordem fora dos seus próprios limites nunca sai do seu processo. O Aegis ainda aplica os limites no nível da conta na barreira do protocolo.

Enviar uma ordem limite sob uma política do lado do cliente

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);

Tipos de ordem

Os tipos principais — market, limit, stop, stop-limit, post-only e reduce-only — são nativos. Os tipos avançados, algorítmicos e institucionais compõem as mesmas primitivas; a linguagem completa de ordens está descrita em execução.

Os identificadores de mercado, preços e tamanhos usados nestes exemplos são ilustrativos. O acesso aos mercados pela API segue as mesmas regras de elegibilidade e jurisdição da interface.

Construir

Risco e simulação do Aegis

Simule a carteira pós-negociação e cenários de estresse antes de comprometer capital.

O Aegis expõe a mesma simulação que executa na barreira de pré-risco. Envie ordens propostas e, opcionalmente, cenários de estresse; o Aegis retorna o estado projetado da carteira e qualquer política que as ordens violariam, sem submeter nada de fato.

Simular antes de comprometer capital

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);
}

O que uma simulação retorna

  • Uso projetado de margem e garantia livre após as ordens propostas.
  • Distância da liquidação para cada posição que as ordens afetariam.
  • Um resultado para cada cenário de estresse solicitado.
  • Cada violação de política, com o limite e o valor projetado.

Uma simulação descreve a carteira no momento da solicitação. Os mercados se movem, portanto uma simulação não garante que uma ordem será aceita ou executada nos mesmos valores.

Construir

Agentes e políticas do Cortex

Registre uma identidade de agente e vincule-a a uma política explícita com limites e um controle de parada.

Um agente é uma identidade própria. Ele pode observar os mercados amplamente, mas atua apenas dentro de uma política do Cortex: o capital que pode alocar, as perdas que pode incorrer, a alavancagem, os mercados e os horários que pode usar, quando uma pessoa deve confirmar e quais fontes de dados pode utilizar.

Toda intenção que um agente propõe passa pelo ciclo do Cortex — observar, raciocinar, propor, simular, autorizar, executar. O motor de políticas autoriza ou rejeita cada uma, e toda ação produz um recibo atribuído ao agente.

Uma política do 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 }
}

Registrar o agente e vincular a política

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);

Parar um agente

O controle de parada revoga, com um único comando, todas as permissões do agente. As ordens abertas são canceladas conforme especificado na política, e a chave do agente deixa de poder assinar.

A automação, incluindo a automação assistida por IA, pode falhar ou se comportar de forma inesperada. As políticas limitam o dano; elas não eliminam o risco. Veja IA e negociação automatizada.

Construir

Contratos NexusWASM

Escreva, em Rust, um contrato com capacidades delimitadas que chama uma primitiva nativa de mercado.

Os contratos NexusWASM compilam para WebAssembly e são executados em um sandbox medido. Um contrato declara suas capacidades — as primitivas que pode chamar e o estado que pode tocar — e o runtime rejeita qualquer chamada fora dessa declaração.

Um contrato de tesouraria com capacidades delimitadas

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)
    }
}

Compilar

Compilar para WebAssembly

rustup target add wasm32-unknown-unknown
cargo build --release --target wasm32-unknown-unknown
  • O processamento e o armazenamento têm preços explícitos, portanto o custo de um contrato decorre do que ele faz.
  • O acesso declarado ao estado permite que contratos independentes sejam executados em paralelo no VectorLanes.
  • As chamadas de mercado feitas por um contrato passam pelo pré-risco do Aegis para a própria conta do contrato, como qualquer outra ordem.
  • A implantação submete o módulo com sua lista de capacidades; um módulo que chama uma primitiva não declarada é rejeitado.

Construir

Caminho de migração do EVM Capsule

Execute contratos EVM existentes de forma isolada e, depois, migre os caminhos que importam para o NexusWASM.

O EVM Capsule é um domínio de compatibilidade isolado para bytecode e ferramentas Ethereum. Ele tem seus próprios tetos de gas e de recursos, alcança os ativos do núcleo apenas por um gateway com limite de taxa e pode ser interrompido por mecanismos de interrupção sem afetar o runtime principal.

A capsule é um limite de compatibilidade, não o ambiente de execução principal. As primitivas nativas de mercado são chamadas a partir do NexusWASM; a capsule se conecta aos ativos do núcleo apenas por meio do seu gateway governado.

Etapas de migração

  • Implante sem alterações. Contratos existentes e ferramentas já conhecidas são executados dentro da capsule, medidos em relação aos próprios tetos.
  • Faça a ponte de forma deliberada. Movimente ativos pelo gateway com limite de taxa, com tetos de rota dimensionados para sua exposição.
  • Meça. Identifique onde o desempenho nativo ou o acesso ao mercado mais importa — normalmente no tratamento de ordens, na liquidação e na lógica de risco.
  • Porte. Reimplemente esses caminhos como contratos NexusWASM que chamam o ApexMatch e o Aegis diretamente, mantendo a versão da capsule como referência.
  • Verifique e desative. Reproduza as mesmas entradas nas duas versões, migre os usuários para os contratos nativos quando os resultados coincidirem e encerre a implantação na capsule.

Operar

Validadores e ferramentas de nó

Verifique uma versão, configure um nó a partir do ambiente e inspecione suas funções.

Os operadores executam o cliente de nó para reproduzir o estado finalizado, atender aplicações ou, uma vez admitidos como validadores, assumir funções de proponente e de comitê sob o QSE. Um único cliente atende a cada função: a configuração vem do ambiente, e as chaves de assinatura permanecem em um HSM ou em um signatário MPC.

Verificar, configurar e inspecionar um nó

# 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

Os nomes de comando exibidos são ilustrativos. O cliente do operador, suas chaves de assinatura de versão e os identificadores de rede são fornecidos com o acesso de operador — veja validadores.

Regras de operação

  • Verifique a assinatura de cada versão antes da instalação ou da atualização.
  • Referencie as chaves pelo signatário, nunca por arquivo: as chaves de validador não devem estar na máquina do nó.
  • Exporte as medições de funções e de serviço para seu próprio monitoramento e alertas.
  • Rotacione as suítes de assinatura por meio de comandos do Q-Switch, em vez de trocas de chave ad-hoc.

Operar

Changelog

Como as notas de versão são publicadas e o que cada uma registra.

As notas de versão acompanham cada versão do NexusSDK e são publicadas neste gateway ao lado da documentação daquela versão. O seletor de versões mostra qual edição você está lendo.

Toda nota de versão registra

  • Interfaces novas, alteradas e removidas, com um exemplo de cada nova forma.
  • Descontinuações, o substituto de cada uma e os passos para migrar.
  • Mudanças em suítes de assinatura ou em formatos de credencial introduzidas pelo Q-Switch.
  • Parâmetros de protocolo que afetam operadores de nó e validadores.
  • Correções de segurança, uma vez coordenada a divulgação.

Você está lendo a edição de prévia. Suas interfaces são documentadas conforme projetadas e podem mudar antes da disponibilidade geral; cada mudança é registrada nas notas de versão da versão que a introduz.