Skip to content

Bankrbot vault deposits

user

USDG deposits into HISS vaults via Bankrbot: the three modes, the deposit pack, depositWithAcks ack hashes, and the onchain completion rule.

Overview

The Bankrbot vault deposit rail (Rail A, rail_a_vault_deposit) prepares and verifies on-chain USDG deposits into registered HISS vaults on Robinhood Chain (4663). HISS builds the deposit intent — exact vault address, calldata, amounts, and required acknowledgment hashes — and verifies the on-chain receipt. The depositor’s own wallet, or a Bankr flow the depositor authorized, sends the transaction. hissExecutesDeposit is hard-typed false in every pack. The only registered vault today is HISS Vault (hVAULT); unknown vaults fail closed with VAULT_UNKNOWN.

The three modes

  • Mode A — command pack. The API compiles a BankrbotVaultDepositPack with everything an agent or wallet needs, plus a copy-pasteable @bankrbot social command. Bankrbot’s ability to execute arbitrary contract deposits from a social command is unverified — always present Mode C alongside it.
  • Mode B — operator wallet (gated). A server-side submission path that is valid only when the HISS operator’s Bankr wallet is itself the depositor. Triple gated: BANKRBOT_DEPOSIT_EXECUTION_ENABLED, OWNER_APPROVED_BANKR_WALLET_DEPOSIT, and a server-only BANKR_API_KEY, plus an exact confirmPlanHash. Never a user-deposit path — refusals are honest (MODE_B_DISABLED, OWNER_APPROVAL_REQUIRED, BANKR_KEY_MISSING, RECEIVER_NOT_BANKR_WALLET).
  • Mode C — app link (guaranteed). The deposit widget at /app/vaults/hiss-vault with the amount prefilled. This path always works and is the recommended fallback whenever Mode A execution is uncertain.

Endpoints

MethodPathModeDescription
POST/api/bankrbot/vault-deposit/prepare-commandlive{ vaultId?, amountUsdg, receiver, expiresInSeconds?, nowIso? } → { pack, bankrbotSocialCommand, depositLinkUrl, modes, hissExecutesDeposit: false }.
POST/api/bankrbot/vault-deposit/submit-intentliveMode B (gated, operator-wallet-only): { confirmPlanHash, amountUsdg, receiver, … } → { job, verification, complete }.
GET/api/bankrbot/vault-deposit/status/[jobId]liveJob id (bvd_…) or raw deposit tx hash → { verification, complete }. Re-verifies on chain on every read.
POST/api/vaults/[slug]/deposit-bankrbot-intentliveMode A pinned to one registered vault.
GET/api/vaults/[slug]/deposit-linkliveMode C: vault identity, required ack texts + keccak256 hashes, deposit URL, and (with ?amount=&receiver=) a full pack.

Shared behavior: 256 KB body cap, 30 requests / 5 minutes per client per tool, credential-looking fields rejected and never echoed, and every response carries notInvestmentAdvice: true and liveOrderSent: false.

The pack

BankrbotVaultDepositPack (abridged)
{
  "packVersion": "bankrbot-vault-deposit-1.0.0",
  "mode": "A",
  "vaultSlug": "hiss-vault",
  "vaultAddress": "0x6d962604df1c6c5ef4b59d88863600fe71bb63e6",
  "chain": "robinhood", "chainId": 4663,
  "asset": "USDG", "assetDecimals": 6,
  "amount": "250", "amountUnits": "250000000", "maxAmount": "250",
  "spender": "0x6d96…63e6",            // always the vault itself
  "approvalRequired": true,
  "approveCalldata": "0x…",             // approve(vault, amountUnits)
  "depositCalldata": "0x…",             // depositWithAcks(units, receiver, riskAck, jurisdictionAck)
  "receiver": "0xYOUR_WALLET",
  "receiverMustBeDepositor": true,
  "ackHashes": { "risk": "0x1104…84cd", "jurisdiction": "0x0150…ff31" },
  "generatedAt": "…", "expiresAt": "…", // default TTL 900 s
  "planHash": "0x…",                    // the Mode B confirmation token
  "hissExecutesDeposit": false,
  "bankrbotSocialCommand": "@bankrbot deposit 250 USDG into the HISS Vault at 0x6d96… …",
  "depositLinkUrl": "https://www.hiss.finance/app/vaults/hiss-vault?amount=250"
}
  • Amounts are decimal strings, ≤ 6 dp, bounded at 10,000 USDG per pack.
  • The receiver must be the depositor — never the vault, the USDG token, or the zero address.
  • Packs expire (expiresAt); regenerate stale packs instead of reusing them.

Ack hashes — depositWithAcks only

Deposits call depositWithAcks(assets, receiver, riskAckHash, jurisdictionAckHash) carrying keccak256 of the two canonical acknowledgment texts (hiss-vault-depositor-risk-ack-v1 and hiss-vault-source-disclosure-ack-v1). A plain ERC-4626 deposit() reverts. The pack builder recomputes both hashes from the canonical texts and refuses to build if they do not match the vault’s pinned on-chain values — a mismatched pack would only produce a reverting transaction.

Completion truth

verify a deposit
curl -s https://www.hiss.finance/api/bankrbot/vault-deposit/status/0xDEPOSIT_TX_HASH
// → { kind: "tx-reconcile", verification: { found, txStatus, confirmedVaultDeposit, … },
//     complete: verification.confirmedVaultDeposit === true }
prepare a Mode A pack
curl -s https://www.hiss.finance/api/bankrbot/vault-deposit/prepare-command \
  -H "content-type: application/json" \
  -d '{"vaultId": "hiss-vault", "amountUsdg": "250", "receiver": "0xYOUR_WALLET"}'

Agent surfaces

MCP tools: hiss_prepare_bankrbot_vault_deposit, hiss_generate_bankrbot_deposit_command, hiss_reconcile_bankrbot_deposit_receipt. Skill pack: hiss-bankrbot-vault-deposit. Workflow index: GET /api/agents/schema. Wizard: /app/tools/bankrbot-vault-deposit. Depositor risk disclosures: vault depositor risks — depositors share profits and losses, and there is no guaranteed yield of any kind.

$HISS is independent research software in pre-execution readiness checks — not investment advice, and not affiliated with Robinhood, Bankr, or Chainlink.

Bankrbot vault deposits · HISS