hackquest logo

Bloom

The wallet where dollars become assets and actions.

Videos

Imagen del proyecto 1
Imagen del proyecto 2
Imagen del proyecto 3
Imagen del proyecto 4

Pila tecnológica

Rust
Solidity
Web3
Ethers
Node
React
Next

Descripción

Quick Links:

1. GitHub: https://github.com/Aaditya1273/BLOOM
2. Live Link: https://bloom-page.vercel.app/
3. Vedio: https://youtu.be/8crMpT9Bd8U
4. WhitePaper: https://drive.google.com/file/d/1yaxMUIO-uTIR6JFx5ZynW0lEWmK2wWsY/view?usp=sharing
5. PPT: https://drive.google.com/file/d/1iM8E9Hn46Y3KiUri8w6zrMqep_9EUfBm/view?usp=sharing
6. Deployed Contract: https://explorer.testnet.chain.robinhood.com/address/0xc464c03bfe7efa388457b8b392454b99fa18b124

Bloom

The wallet where dollars become assets and actions.

Save in USDG. Send Robinhood Stock Tokens. Let your agent act under your rules.

Bloom is a consumer wallet on Robinhood Chain. Users save in USDG, use supported Robinhood Stock Tokens as programmable assets, and let an AI agent act under explicit risk and spending rules.


At a glance

What it is

A consumer wallet on Robinhood Chain for USDG savings, Stock Token sends and goal-based AI automation

The core idea

A price is not a permission. Borrowing, liquidation and agent actions are gated by a risk engine that understands halts, corporate actions, staleness and deviation

What is live

12 contracts plus mock assets on Robinhood Chain Testnet, the Stylus risk engine, a halt-aware reporter fed by the live Robinhood API, a hosted API and the full web app

Proof

139 Hardhat · 11 Foundry fuzz/invariant · 16 Stylus Rust · 9 reporter · 22 backend tests; 13/13 end-to-end checks against the live testnet


1. Introduction

Robinhood is bringing US equities onchain. On July 1, 2026 it announced that Robinhood Chain, built on the Arbitrum platform, is live, with Stock Tokens available in the Robinhood Wallet in more than 120 countries, and that Agentic Accounts would let people connect an AI model to their account while humans "set the specific safety guardrails" (Robinhood newsroom).

That creates two new kinds of money: dollars (USDG) and stock tokens that move 24/7, and agents that move them. Bloom is the wallet built for both. It is three screens, Home, Chat and Goals, on top of four onchain systems: an ERC-4626 savings vault, a canonical-only stock router with claim links, ERC-4337 smart accounts with policy-scoped agent keys, and the Bloom Risk Engine, a default-deny state machine for equity risk running as an Arbitrum Stylus contract.

2. The problem

Tokenized stocks trade around the clock. The stock market does not.

Robinhood's own documentation says end users can trade Stock Tokens onchain outside the window in which market makers mint and burn them, that corporate actions are applied through an onchain uiMultiplier, and that tradability varies per session (Robinhood Chain docs). So the token keeps moving while the underlying market can be:

Event

What happens to the stock

What a plain price feed sees

Trading halt

The exchange stops trading

A normal-looking last price

Split or corporate action

Price and shares-per-token re-base; the oracle may pause

A sudden jump, or a frozen value

After hours

No regular-session trading for most of the day

A price that is hours old

Oracle divergence

The feed drifts from the real market

One confident, wrong number

A lending market that treats a fresh price as permission to lend keeps lending and liquidating straight through all of it. Lending against stock tokens today is flying blind.

AI agents are getting wallets, guarded by a prompt

Agents that turn "save for my laptop" into transactions are arriving now. In most systems the only thing between the model and the money is a system prompt: injectable, nondeterministic and confident when wrong. In finance the failure mode is not a bad answer. It is a transfer.

USDG needs everyday use

Stable dollars on a new chain need real consumer jobs: saving, sending, investing, paying someone new. Not just vault deposits.

3. The solution

Wallet
Save in USDG into an ERC-4626 vault, send Robinhood Stock Tokens, invest in one tap, and pay anyone with a claim link. Every owner action is signed by the user's own wallet; the backend never holds user keys.

Goal-bound AI agent
"Save $500 for my laptop" becomes an onchain policy: $50/day, at most 30% in Stock Tokens, only approved assets, expiry built in. The agent acts through a scoped ERC-4337 session key that can never exceed it.

Stylus risk engine
A Rust/WASM contract that reads the Chainlink price plus EIP-712 signed Robinhood market reports and returns one answer per asset: risk state, max LTV, whether borrowing and liquidation are allowed.

The AI proposes. Your policy decides. The chain enforces.

Bloom doesn't replace the price oracle. It adds equity-specific risk interpretation around it.

4. What makes Bloom different

Price-feed lending

Prompt-guarded agents

Bloom

Sees trading halts

No

No

Yes: signed market reports

Handles splits and corporate actions

No

No

Yes: oracle pause, report flag and multiplier checks

Knows a price is stale

Heartbeat only

No

Yes: feed heartbeat and report age

Blocks liquidations on bad data

No

n/a

Yes: protected mode reverts liquidation if any collateral isn't NORMAL

Agent limits

n/a

A prompt

Onchain policy: closed call set, caps, allowlist, expiry

Survives a compromised server

n/a

No

Yes: enforcement lives in contracts, not in the app

Reusable by other protocols

No

No

Yes: one call, getRisk(asset)

Five properties hold by construction (proofs in the whitepaper, ):

  1. Default deny. An asset is NORMAL only if all seven adverse predicates are false. Anything missing, malformed, stale or contradictory denies.

  2. Adverse monotonicity. No additional signal can move an asset into NORMAL.

  3. Silence denies. If the reporter, feed or sequencer goes quiet, the asset becomes STALE and its max LTV drops to 0.

  4. Portfolio default deny. One non-NORMAL collateral asset zeroes the whole position's borrow capacity.

  5. Protected liquidation. Nobody is liquidated on a halted, stale, deviating or corporate-action price.

And one honest result nobody else will show you: Stylus costs more gas than the EVM for this workload (1.57× to ingest a report, 1.95× to evaluate risk), because the engine is call-bound rather than compute-bound. We measured it, explain it, and keep Stylus for the memory-safe, natively tested Rust core (§9).

5. Product tour

Save $100 in USDG

"Save $500 for my laptop."

Save dialog: $100 moved into savings, transaction confirmedGoal card: Laptop goal active, $50 a day, approved assets USDG QQQ NVDA

One tap into the savings vault; the user's wallet signs.

The sentence becomes an onchain policy; the user signs once and the agent is active.

"Send Sarah $5 of QQQ."

Live halt: borrowing stops

Chat confirmation: risk check passed, policy check passed, sent successfullyRisk dashboard: AAPL HALTED, borrowing disabled, max LTV 0%, agent refuses

Risk check, policy check, a plain-English plan, then the agent executes onchain.

A signed report lands on the Stylus engine; AAPL flips to HALTED, LTV 0%, and the agent refuses.

The four frames above come from the product film, which rebuilds the app's UI with its exact design tokens. The screenshots below are captures of the running app.

Landing

Home

Chat

Risk: halted

LandingHomeChatRisk halted

About this testnet demo: USDG and Stock Tokens are testnet mocks, price data is live from the Robinhood API, the risk engine is the live Stylus contract

Mobile (390px): home · chat · goals · risk · activity · claim

6. Architecture and workflows

System architecture

Workflow: from a sentence to an agent action

The risk lattice: ordered checks, first failure wins, default deny

Every red state returns max LTV 0%, disables borrowing and pauses liquidations. Facts about the data are checked before facts about the market, so a market signal is never read from untrustworthy data.

Workflow: a live trading halt

More detail: ARCHITECTURE.md, and the formal model in the whitepaper.

7. Market

Every figure below is quoted from its source; none is a Bloom estimate.

Metric

Value

Source

Tokenized real-world assets, total market cap

$19.3B at the end of Q1 2026, up 256.7% from $5.42B at the start of 2025

CoinGecko RWA Report 2026

Tokenized stocks, market cap

$486.69M on Mar 31, 2026, up from $2.09M on Jun 30, 2025 (about 233× in nine months)

CoinGecko RWA Report 2026

Largest tokenized stocks

Circle $171.39M (35.2%), Tesla $61.70M (12.7%), Nvidia $42.59M (8.8%)

CoinGecko RWA Report 2026

Robinhood Chain

Mainnet live Jul 1, 2026, built on the Arbitrum platform; Stock Tokens in the Robinhood Wallet in 120+ countries

Robinhood newsroom

Agentic finance

Robinhood Agentic Accounts: users connect their AI model of choice; "humans remain in control by deciding exactly how much capital to allocate and set the specific safety guardrails"

Robinhood newsroom

Stock Token mechanics

Every Stock Token has a live Chainlink feed; corporate actions apply through an onchain uiMultiplier; tradability varies per session

Robinhood Chain docs

Why now. Tokenized stocks are the fastest-growing slice of the RWA market, the largest US retail broker has put them onchain on an Arbitrum chain, and the same company is handing wallets to AI agents with human-set guardrails. Every lending market, agent and wallet built on top of that needs to know whether it is safe to act on a stock token right now, and to enforce the guardrails somewhere a model can't talk its way past. Bloom is the consumer app and the risk primitive for that world.

Who uses what.

Customer

What they use

Why

Retail users

The Bloom wallet

Save in USDG, send stock tokens, automate goals safely

Lending protocols and money markets

getRisk(asset)

Stop lending and liquidating through halts and corporate actions

Agent and wallet builders

BloomPolicy + BloomAccount pattern

Give agents real limits the chain enforces

Structured-product and vault builders

Risk states as a gate

Pause strategies automatically on market events

8. Business model and roadmap

Planned, not implemented. Nothing below is live today.

Revenue line

How it would work

Savings spread

A small share of vault yield, disclosed in-app

Swap and send fees

A transparent fee on Stock Token swaps routed through the StockRouter

Risk-engine access for protocols

Free getRisk reads onchain; paid SLAs, dedicated reporters and data coverage for institutional integrators

Premium agent goals

Advanced automation (rebalancing, recurring investing) inside the same onchain policy model

Stage

Milestones

Now: testnet release candidate

Live Stylus engine, full app, 197 tests, 13/13 live E2E, hosting configs

Next

k-of-n reporter quorum, guardian agent denylist, Stylus source verification, external audit, ERC-1271 sign-in

Mainnet

Canonical USDG and Stock Tokens with Chainlink stock feeds (the gated deploy script already supports this), an interest-rate model, the USDG/USD feed

Scale

getRisk integrations with lending protocols on Robinhood Chain, more assets, mobile

9. Measured results

All measured on September 25, 2026 at tag bloom-v2-rc1 (details and methods in the whitepaper, §10).

Suite

Result

Hardhat (engine vectors onchain, vault, router, claims, policy, account, ERC-4337, role separation, demo flow)

139 / 139

Foundry (property fuzzing at 1,000 runs per property, vault invariants at 128 runs × depth 64)

11 / 11

Stylus Rust (43 shared spec vectors, EIP-712 parity, contract tests)

16 / 16

Reporter

9 / 9

Backend (intents, sign-in and replay, authorization matrix, rate limits, CORS, key separation)

22 / 22

End-to-end demo against the live testnet

13 / 13

Wallet flow against the live testnet (a fresh wallet signs every owner action)

7 / 7

Frontend

tsc, eslint, next build clean

Stylus versus EVM, measured with scripts/bench-risk-engine.js (sends no transactions):

Operation

EVM twin

Stylus

Ratio

submitReport, steady state (execution gas)

100,811

158,613 (median of 12 live receipts)

1.57×

getRisk (execution gas)

≈ 55,500

≈ 108,200

1.95×

Runtime code size

8,931 B

32,795 B compressed

3.67×

Live reporter cycle. One cycle advanced every asset's report nonce by exactly one (AAPL 70→71, NVDA 64→65, QQQ 69→70, SPY 65→66); the AAPL report (tx 0x57e3…dec0) carried $336.31 while the Robinhood API quoted a bid of $336.14 and an ask of $336.26. Running cost at a 120-second cycle over four assets: about 0.005 testnet ETH per day.

10. Deployed contracts

Live on Robinhood Chain Testnet (chain 46630), deployed 2026-09-25, with the risk engine running as a real Arbitrum Stylus (Rust/WASM) contract. Manifest: deployments/robinhood-testnet.json. Integrity is checkable read-only with npx hardhat run scripts/verify-deployment.js --network robinhoodTestnet.

Contract

Address

BloomRiskEngine (Stylus)

https://explorer.testnet.chain.robinhood.com/address/0xc464c03bfe7efa388457b8b392454b99fa18b124

BloomVault

https://explorer.testnet.chain.robinhood.com/address/0x74b4413B3f8433Ec62469Edd03099a4CFE87fFD8

BloomPolicy

https://explorer.testnet.chain.robinhood.com/address/0xbB70407361baEE36cf6d904585D0332f3bc07FF5

BloomAccountFactory

https://explorer.testnet.chain.robinhood.com/address/0xca8e103387c15476De7EB190B9f20c8E2c86510A

StockRouter

https://explorer.testnet.chain.robinhood.com/address/0xCE57171cAF60C59cB4bAe61f5580A53F59433A0c

BloomClaims

https://explorer.testnet.chain.robinhood.com/address/0x03E75b560021A99BB7DB13A7a9C8e884268AA844

BloomAssetRegistry

https://explorer.testnet.chain.robinhood.com/address/0xa850F501b37420000C16Af1B589c67869Cb287c7

EntryPoint v0.8

https://explorer.testnet.chain.robinhood.com/address/0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108

MockUSDG (testnet mock)

https://explorer.testnet.chain.robinhood.com/address/0x44EE1b04e58d7e156630eecafE3447Fcb2bA73E9

MockSequencerUptimeFeed

https://explorer.testnet.chain.robinhood.com/address/0x251EB53886FF648320050fb4Be7357459f99460e

MockLendingAdapter

https://explorer.testnet.chain.robinhood.com/address/0xaC003B28FE2da20422fBbFCef70cdFB562C922C7

MockSwapVenue

https://explorer.testnet.chain.robinhood.com/address/0x1a895320723619D2E3F395ceca27D210A7e59ED3

AAPL (testnet )

https://explorer.testnet.chain.robinhood.com/address/0x707B9aDC0fc8F656bcc1E9160C6eaEa4A8966Dc3

NVDA (testnet )

https://explorer.testnet.chain.robinhood.com/address/0xbE552A9Bd5389518c6EB3FB97bF7064F43226ce9

QQQ (testnet )

https://explorer.testnet.chain.robinhood.com/address/0x4F7141763FeB5dB91178343d3c894E88992794A3

SPY (testnet )

https://explorer.testnet.chain.robinhood.com/address/0x2AF710af85914DEe0AA89017223638367645f6b4

Canonical mainnet dependencies Bloom is configured for (mainnet not deployed; the gated script refuses above its cost limit):

Asset

Address

Chainlink feed

USDG

0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168

USDG/USD 0x61B7e5650328764B076A108EFF5fa7282a1B9aD2

AAPL

0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9

0x6B22A786bAa607d76728168703a39Ea9C99f2cD0

NVDA

0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC

0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15

QQQ

0xD5f3879160bc7c32ebb4dC785F8a4F505888de68

0x80901d846d5D7B030F26B480776EE3b29374C2ae

SPY

0x117cc2133c37B721F49dE2A7a74833232B3B4C0C

0x319724394D3A0e3669269846abE664Cd621f9f6A

EntryPoint v0.8

0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108

—

11. License and attribution

MIT. See LICENSE. Bloom evolved from the Aura codebase: its smart-account, vault and Stylus foundations were reused and hardened, and the original sources are archived in legacy/aura/ with attribution preserved. Account abstraction builds on eth-infinitism's ERC-4337 contracts, and the token and access-control primitives come from OpenZeppelin.

Progreso del hackathon

Completed on Testnet.

Estado de recaudación de fondos

NA

Líder del equipo
AAaditya Rawat
Enlace del proyecto
Desplegar ecosistema
RobinhoodRobinhood
Sector
DeFiRWAAI