Fork V6 — Public chat memory + agentic AI mining
Fork V6 introduce două capacități noi pe lanț OmbraChain:
- Chat memory on-chain — orice mesaj este semnat și public, vizibil pe explorer
- Agentic AI mining distribuit — agenți autonomi rulează multi-step cu tool calling, mineri îi execută în schimbul OMBRA
Tx types
| Type | Scop |
|---|---|
CHAT_TURN | Mesaj public semnat (user/assistant/system/tool) |
AGENT_REQUEST | Cerere agent + escrow maxFee (de obicei 1 OMBRA) |
AGENT_CLAIM | Miner-ul revendică agent run-ul (first-wins) |
AGENT_STEP | Per-pas state: tool calls, output tokens, hash |
AGENT_FINISH | Final: pay miner tokens × rate, refund excess |
Billing
Toate sumele în micro-OMBRA (1 OMBRA = 1,000,000 micro):
AGENT_REWARD_PER_TOKEN = 1n // 0.000001 OMBRA / token output
AGENT_NETWORK_FEE_PER_STEP = 100n // 0.0001 OMBRA per AGENT_STEP tx
CHAT_TURN_FEE = 100n // 0.0001 OMBRA per public chat message
Lifecycle agent run
User wallet Mainnet Miner wallet
───────── ─────── ────────────
[Chat UI agent mode]
│
│ AGENT_REQUEST (prompt, tools, maxFee=1 OMBRA escrow)
├──────────────────────────────────────►│
├──── P2P propagation ─────────────►│
│ [Agent listener]
│ ├─ verify tools + hardware
│ ├─ AGENT_CLAIM (first-wins)
│ ├─ run agent loop:
│ │ ├─ LLM call cu tools
│ │ ├─ tool execute (chain query / web / ...)
│ │ ├─ AGENT_STEP cu (output, toolCalls, tokens)
│ │ └─ loop până final / max steps / budget
│ └─ AGENT_FINISH (final answer)
│◄─────────────────────────────────│
│ ── settle: pay miner, refund user
SDK examples
TypeScript
import {
OmbraClient, Wallet,
buildAgentRequestTx, computeAgentRunId, computeConversationId,
MICRO_OMBRA,
} from "@ombrachain/sdk";
const client = new OmbraClient({ endpoint: "https://api.ombra-net.com" });
const wallet = Wallet.fromMnemonic("...12 words...");
const { nonce } = await client.chain.getAccount(wallet.address);
const runId = computeAgentRunId(wallet.address, nonce, "Explain Bitcoin");
const convId = computeConversationId(wallet.address);
const tx = buildAgentRequestTx(wallet.address, {
agentRunId: runId,
conversationId: convId,
prompt: "Explain Bitcoin in 100 words",
toolsWhitelist: ["web_search", "chain_query"],
maxFee: BigInt(MICRO_OMBRA), // 1 OMBRA escrow
maxSteps: 100,
}, nonce, wallet.privateKey);
await client.tx.submit(tx);
Python
from ombrachain import (
OmbraClient, Wallet,
build_agent_request_tx, compute_agent_run_id, compute_conversation_id,
MICRO_OMBRA,
)
wallet = Wallet.from_mnemonic("...12 words...")
client = OmbraClient(endpoint="https://api.ombra-net.com")
acct = client.get_account(wallet.address)
run_id = compute_agent_run_id(wallet.address, acct["nonce"], "Explain Bitcoin")
conv_id = compute_conversation_id(wallet.address)
tx = build_agent_request_tx(wallet.address, {
"agentRunId": run_id,
"conversationId": conv_id,
"prompt": "Explain Bitcoin in 100 words",
"toolsWhitelist": ["web_search", "chain_query"],
"maxFee": MICRO_OMBRA,
"maxSteps": 100,
}, acct["nonce"], wallet.private_key)
client.submit_tx(tx)
API endpoints
GET /api/agent/v6/run/:agentRunId # full state + status
GET /api/agent/v6/run/:agentRunId/steps # all AGENT_STEPs cronologic
GET /api/chat/conversation/:conversationId # all chat turns in thread
POST /api/tx # submit any signed tx
GET /api/stream/events # SSE live chain events
Tools whitelist disponibile (referință wallet desktop)
chain_query— read-only chain ops (balance, blocks, tx)web_search— Google search + fetch URL (rate-limited)chain_write— submit_tx (with user confirmation)code_exec— sandboxed JS via vm2file_io— local file read/write (per-call permission popup)media_gen— generate_image (SD) / generate_audio (Piper)sub_agent— spawn nested agentwallet_ops— sign_message, get_contacts, send_dmtime_math— now, date_diff, math_evalrag— local embeddings + vector_search
Miner-ul filtrează în MiningView tools acceptate. User-ul alege whitelist per AGENT_REQUEST.