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.
| TORQUE | Gauntlet | Undertow | |
|---|---|---|---|
| Network (as read) | Robinhood Chain mainnet | Robinhood testnet (2026-10-01) | Robinhood testnet (2026-10-01) |
| Where leverage and settlement happen | On chain, in TorqueMarket | Off chain, in the operator's game server; payouts through operator-posted merkle claims | On chain: SpanCreditVault lends against a computed risk number |
| Price source | Chainlink RHNVDA / USD, cross-checked against the pool's 30-minute average | A seeded ETH game price on the operator's server | PriceRelay, set by a single updater key |
| What backs the loan | Real NVDA, bought at open and held by the contract | No loan: payouts are split between players | Deposited collateral (MockNVDA on testnet) |
| Counterparty | A USDG LP vault | Other players (pari-mutuel) | uUSD, a stablecoin the vault mints itself |
| Who can close a position | The owner closes; anyone can knock it out at the knock-out level | The operator's game server | Anyone can liquidate (liquidate() has no access check) |
| Admin key / pause / upgrades | None; one-shot setMarket at deployment | Vault has pause and unpause, an owner and an operator; no proxy | Single 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.