VENTURE

docs

five contracts. everything the interface shows is read from them, and everything below is verifiable on-chain.

chain

network
Robinhood Chain — Arbitrum Orbit L2
chain id
4663
rpc
https://rpc.mainnet.chain.robinhood.com
explorer
https://robinhoodchain.blockscout.com
raise asset
native ETH

Reads from the browser go through a same-origin proxy at /api/rpc. The upstream endpoint answers browsers with a duplicated Access-Control-Allow-Origin header, which every browser rejects, so a direct call from the page never leaves.

contracts

Registry
0xf771842e52349bF2e5Fa60451Ad73e29cFab6e05
RoundFactory
0xdbfE93A9AfdF2fe8b285D633a4C1A6349B2f075f
WETH
0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73

Round, Vesting and RoundToken have no fixed address — the factory deploys a fresh set for every round, in one transaction.

  • Registry — enumerates every round, so the feed needs no indexer.
  • RoundFactory — deploys token, escrow and vesting together and registers them.
  • RoundToken — fixed supply, minted once, no mint path afterwards, no owner.
  • Round — the escrow. Holds contributions, enforces the caps, refunds or finalizes.
  • Vesting — per-wallet schedules with a cliff. Holds the sold tokens after a round closes.

round lifecycle

A round is only ever in one of five states, and the state is derived, not set:

Upcoming
created, before openAt
Open
accepting eth, up to the hard cap
Succeeded
past closeAt with the soft cap met
Failed
past closeAt with the soft cap missed — refunds open
Finalized
raise sent to treasury, sold tokens moved into vesting

finalize() is permissionless. A founder cannot hold a successful round hostage by refusing to close it.

Registering a vesting schedule is pull-based: each backer calls startVesting() once. Writing every schedule inside finalize() would make closing a round cost gas proportional to the number of backers — a popular enough round could not be closed at all.

vesting maths

Accrual measures from the close of the round. The cliff gates release; it does not restart the clock.

vested(t) = 0 while t < start + cliff, otherwise total × (t − start) / duration, capped at total.

So a 7-day cliff on a 30-day term releases roughly 23% the moment the cliff passes, then streams to 100% at day 30. Allocations are stored as uint128, so a round whose supply exceeds that is rejected at creation rather than silently truncating someone's entitlement at claim time.

fees

Venture takes nothing. No fee on contributing, none on finalizing, none on claiming, and no cut of any treasury. There is no address in the contracts that collects one, so it is not a policy that could be changed later — there is nowhere for a fee to go.

A failed round returns the exact amount contributed. You pay gas; that is all.

permanence

Every round parameter is immutable from creation: supply, price, both caps, the treasury address, the cliff and the duration. There is no owner, no pause, and no upgrade path on any contract.

That is the product — a round you can check before you fund it — and it is also the risk. A bug cannot be patched, and a founder who publishes honest terms can still fail to build anything. The contracts are unaudited. Read the disclaimer.