Skip to Content
nullPointdocs

Verify it live

Six claims about who can move the money. Each one is checked against the chain when this page loads (cached for a minute), or comes with a command you can run yourself.

Pick a network. The checks run on the server when the page is built, against the real contract and Hyperliquid.

  1. checked live: true01

    The contract, not a person, owns the vault's accounts.

    One Ethereum-style address, derived from the contract through NEAR Chain Signatures, is both the Intents account and the Hyperliquid account.

    Evidence and command

    Recomputed now from v1.signer for vault.nullpoint.near / hl-master: 0x610da6eff2adec2aae201c2970fdafe66189b939. The contract's configured address: 0x610da6eff2adec2aae201c2970fdafe66189b939.

    near contract call-function as-read-only v1.signer derived_public_key json-args '{"path":"hl-master","predecessor":"vault.nullpoint.near","domain_id":0}' network-config mainnet now
  2. checked live: true02

    The agent can trade, and it can't withdraw.

    Its Hyperliquid key is an approved agent on the vault's account. Hyperliquid refuses withdrawals and transfers signed by an agent key.

    Evidence and command

    Agents approved on the vault's Hyperliquid account right now: nullpoint-agent 0xd8b2be1be359685bd052cd5924541f38575ddb71 . The attack script uses this key to try withdraw3, usdSend and agentSendAsset to an outside address; all three are refused.

    npm run attack
  3. check with the command03

    Swaps can only ever pay the vault.

    sign_quote checks 1Click's signature, that the vault is recipient and refund address, the price and the cap, then builds the intent itself.

    Evidence and command

    The contract's unit tests run against real mainnet 1Click quotes, including a forged one that pays an attacker.

    cd contracts && cargo test -p vault
  4. checked live: true04

    The contract prices the vault itself.

    Coin and USDC balances come straight from the Intents contract, priced with signed 1Click quotes. The agent reports only the Hyperliquid side, within 2% of what the contract expects.

    Evidence and command

    Latest snapshot: NAV 42.57 USDC at 2026-11-12 22:54:45 UTC.

    near contract call-function as-read-only vault.nullpoint.near get_state json-args '{}' network-config mainnet now
  5. checked live: true05

    Every AI decision is signed and on the record.

    The model runs in a NEAR AI Cloud enclave; its answer is signed, checked against the enclave's attestation, and stored on-chain.

    Evidence and command

    Latest AI decision: HOLD (allowed by the limits), chat chatcmpl-fc2d6cdd-a97b-4be1-9b60-08b988215c3f, signed by enclave 0xfe0071895500a9755c18044948ab4f4e1a7f337e.

    npm run attack:llm
  6. check with the command06

    Your withdrawal doesn't depend on us.

    execute_withdraw has no caller check: once a payout is signed, anyone can submit it, and it can only pay the person who asked.

    Evidence and command

    The end-to-end test deposits, requests a withdrawal, and submits the signed payout from the user's own account.

    npm run e2e:testnet
Vault contractvault.nullpoint.near ↗
The vault's address (Intents + Hyperliquid)0x610da6eff2adec2aae201c2970fdafe66189b939 ↗
Agent accountagent.nullpoint.near ↗
Intents contractintents.near ↗
MPC signerv1.signer ↗

Latest payloads the contract asked NEAR's signers to sign

#4 intent_ft_withdraw · 2026-11-12 18:22 UTC
{
  "signer_id": "0x610da6eff2adec2aae201c2970fdafe66189b939",
  "verifying_contract": "intents.near",
  "deadline": "2026-11-12T18:27:35.828Z",
  "nonce": "Vij2xgAlKBKzAG00rpFf5xiNXKyV4xoyjtP6s1kw1ew=",
  "intents": [
    {
      "intent": "ft_withdraw",
      "token": "17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1",
      "receiver_id": "nullpoint.near",
      "amount": "4805994"
    }
  ]
}
#3 hl_send_asset · 2026-11-12 18:13 UTC
{
  "type": "sendAsset",
  "signatureChainId": "0xa4b1",
  "hyperliquidChain": "Mainnet",
  "destination": "0x754Ad91eC1806C6DD09909077aB02089eddC3C1E",
  "sourceDex": "",
  "destinationDex": "spot",
  "token": "USDC:0x6d1e7cde53ba9467b783cb7c530ce054",
  "amount": "5.755398",
  "fromSubAccount": "",
  "nonce": 1794507197221
}
#2 intent_transfer · 2026-11-12 17:49 UTC
{
  "signer_id": "0x610da6eff2adec2aae201c2970fdafe66189b939",
  "verifying_contract": "intents.near",
  "deadline": "2026-11-12T17:54:08.948Z",
  "nonce": "Vij2xgAlKBKzANXVar5d5xjSgEjrJtvAkj0Ml3sOTqc=",
  "intents": [
    {
      "intent": "transfer",
      "receiver_id": "aacf170fbfc012f9b6d4f94a5cbcf6607eeab0601b079509ff7c18b664180a0b",
      "tokens": {
        "nep141:17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1": "29319392"
      }
    }
  ]
}
#1 hl_approve_agent · 2026-11-12 17:47 UTC
{
  "type": "approveAgent",
  "signatureChainId": "0xa4b1",
  "hyperliquidChain": "Mainnet",
  "agentAddress": "0xd8b2be1be359685bd052cd5924541f38575ddb71",
  "agentName": "nullpoint-agent",
  "nonce": 1794505620221
}

Check it without this site

Everything above is a public read. With near-cli-rs:

# The vault's state: owner, agent, parameters, last NAV, paused or not
near contract call-function as-read-only vault.nullpoint.near get_state json-args '{}' network-config mainnet now

# Every AI decision, with chat id and enclave address
near contract call-function as-read-only vault.nullpoint.near get_decisions json-args '{"from":"0","limit":50}' network-config mainnet now

# Every payload the contract asked NEAR's signers to sign
near contract call-function as-read-only vault.nullpoint.near get_signed json-args '{"from":"0","limit":50}' network-config mainnet now

# What the vault holds in NEAR Intents (USDC, nBTC)
near contract call-function as-read-only intents.near mt_batch_balance_of json-args '{"account_id":"0x610da6eff2adec2aae201c2970fdafe66189b939","token_ids":["nep141:17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1","nep141:nbtc.bridge.near"]}' network-config mainnet now

The short is public on Hyperliquid's explorer under the same address. And npm run demo in the repo repeats the key checks with no keys at all (Run it yourself).

On this page