TORQUE

Context

Prior art

The existing on-chain route to leverage on stock tokens is borrowing USDG on Morpho against stock collateral and looping it. At block 78,677,903 that supply is $1.51M across 167 markets and 96.6% borrowed, so there is little left to borrow, and positions there are liquidated the usual lending-market way.

Two buildathon entries also offer leverage on stock tokens. We read their code and checked their contracts on chain.

TORQUEGauntletUndertow
Network (as read)Robinhood Chain mainnetRobinhood testnet (2026-10-01)Robinhood testnet (2026-10-01)
Where leverage and settlement happenOn chain, in TorqueMarketOff chain, in the operator's game server; payouts through operator-posted merkle claimsOn chain: SpanCreditVault lends against a computed risk number
Price sourceChainlink RHNVDA / USD, cross-checked against the pool's 30-minute averageA seeded ETH game price on the operator's serverPriceRelay, set by a single updater key
What backs the loanReal NVDA, bought at open and held by the contractNo loan: payouts are split between playersDeposited collateral (MockNVDA on testnet)
CounterpartyA USDG LP vaultOther players (pari-mutuel)uUSD, a stablecoin the vault mints itself
Who can close a positionThe owner closes; anyone can knock it out at the knock-out levelThe operator's game serverAnyone can liquidate (liquidate() has no access check)
Admin key / pause / upgradesNone; one-shot setMarket at deploymentVault has pause and unpause, an owner and an operator; no proxySingle price-updater key; no pause or upgrade in the contract source

Sources

Gauntlet. The repo github.com/da0bar/gauntlet returned 404, so this was read from its published app bundle (alpha.gntlt.net/js/app.js) and on chain. TSLA vault 0xD83a88978313b34D2270C095775F4D457e485d4F on Robinhood testnet: bytecode has pause(), unpause(), owner(), operator(), transferOwnership() and a merkle-proof claim(); the EIP-1967 implementation slot is empty. Owner 0xD174D1B73b72F2A0626241Fc1230F7cD5ACEbaa1.

Undertow. Repo github.com/GokhanCey/undertow (vault/src). SpanCreditVault 0xB763256f9b121516aC0e62298a2f33c623c4D99a, PriceRelay 0x8450649468613a5073030724d3e6D4681af6794D and uUSD 0x4444A7d9E919D8B1dE6E9298a3B9A8acAD362f1C on Robinhood testnet. PriceRelay.updatePrice is onlyUpdater; UndertowDollar.mint is onlyVault; SpanCreditVault.liquidate(address) is external with no access check.

TORQUE. src/TorqueMarket.sol and src/TorqueVault.sol: no owner, no pause, no proxy. Verified on Sourcify; see Deployments.