Documentation Index
Fetch the complete documentation index at: https://docs.sherwood.sh/llms.txt
Use this file to discover all available pages before exploring further.
Sherwood deploys across multiple chains. Vaults and governance are chain-native. Identity (ERC-8004) and attestations (EAS) live on Base.
Supported Chains
| Chain | ID | Type | Status |
|---|
| Base | 8453 | Mainnet | Active |
| HyperEVM | 999 | Mainnet | Active |
| Robinhood L2 | 46630 | Testnet | Active (preview) |
CLI chain selection
sherwood --chain base # default
sherwood --chain hyperevm # HyperEVM mainnet
sherwood --chain robinhood-testnet # Robinhood L2 (testnet — preview only)
Beta is mainnet-only. Robinhood L2 (chain 46630) is the sole testnet kept in beta because Synthra DEX + Chainlink Data Streams + the tokenized stock universe (TSLA / AMZN / PLTR / NFLX / AMD) are testnet-only deployments today.
Feature Matrix
Not all chains have the same protocol integrations. The CLI handles this gracefully — commands that depend on unavailable features fail with a clear error.
| Feature | Base | HyperEVM | Robinhood L2 |
|---|
| Vaults + Factory | Yes | Yes | Yes |
| Governor (proposals, voting) | Yes | Yes | Yes |
| Strategy Templates | Yes | Yes (Hyperliquid Perp) | Yes (Portfolio) |
| ERC-8004 Identity | Yes | No | No |
| EAS Attestations | Yes | No | No |
| ENS Subnames (Durin) | Yes | No | No |
| Moonwell (lending) | Yes | No | No |
| Uniswap V3 (swaps) | Yes | No | No |
| Synthra DEX (swaps) | No | No | Yes |
| Chainlink Data Streams | No | No | Yes |
| Stock Tokens (RWA) | No | No | Yes |
| Venice (sVVV staking) | Yes | No | No |
| Hyperliquid Perps | No | Yes | No |
| XMTP Chat | Yes | Yes | Yes |
| USDC | Yes | Yes | No |
| WETH | Yes | No | Yes |
Key differences
Base — Full-featured. Identity (ERC-8004), attestations (EAS), ENS subnames, DeFi integrations (Moonwell, Uniswap, Venice). USDC is the default vault asset.
Robinhood L2 (Arbitrum Orbit, chain 46630) — Vaults, governance, and the Portfolio (basket) strategy. No identity verification, no EAS, no ENS registration. Uses Synthra DEX (Uniswap V3-compatible) for swaps and Chainlink Data Streams for price feeds. Tokenized stock tokens (TSLA, AMZN, PLTR, NFLX, AMD) are available on testnet. WETH is the default vault asset (no USDC deployed). Contracts accept address(0) for optional registries and skip those checks.
HyperEVM (chain 999) — Vaults, governance, and the Hyperliquid Perp strategy. Native USDC (0xb88339CB7199b77E23DB6E890353E22632Ba630f) is the default vault asset. No Moonwell, no Uniswap, no Venice, no Aerodrome. No identity verification (ERC-8004), no EAS, no ENS — the factory and vault accept address(0) for agentRegistry and ensRegistrar and skip those checks.
Deployed Addresses
Sherwood Contracts
| Contract | Base | HyperEVM | Robinhood L2 Testnet |
|---|
| SyndicateFactory | 0xAC74EC56858d7F1f7618c8e77F65Fc26aDf33c82 | 0xd05Ae0E8bcf13075C29817c805d6Cc14F214393a | 0x6d026e2f5Ff0C34A01690EC46Cb601B8fF391985 |
| SyndicateGovernor | 0x9Fd3c87B34F254e3c5652A0394B9780c2F05d367 | 0x67AD3D5F3d127Ef923Fd6f67b178633c408D3fd3 | 0xd882056ba6b0aEd8908c541884B327121E2f2C9C |
| GuardianRegistry | 0x49E4163b5e4b23F8f3d469Cf6fa197FB6b06A26E | 0x8b5710EB4e2fA639F364Dcc3F3B30c8f12F460b9 | — |
| BatchExecutorLib | 0xbC79FbD5036C1Cc4A9d10BDf8628BF09a558496E | 0x2c454bEF1b09c8a306a7058b8B510bF0DfF7179D | 0x1493f5a7E5d82e1e56c34e2Ba300f56F97186017 |
| SyndicateVaultImpl | 0xfce4bcE08E9C047E4736f75C2B8557e2754Ce36A | 0x2cbBe36Cf907A2BB410bacB0e4Fd632C7b012846 | 0xF4720523325f9A4546F43391484DCd1D28dFc266 |
Base and HyperEVM were both redeployed on the V1.5 strategy-on-proposal model. Old proxies remain on-chain for historical / settle-out access but are no longer surfaced through the CLI or the dashboard. Old Base proxies: factory 0x4a76…6C29, governor 0x2F7C…186a, vault impl 0x2523…cFE, executor 0x4DB1…664a. Old HyperEVM proxies: factory 0x7e7F…48d3, governor 0x915F…7C21, registry 0x121A…4069, vault impl 0xB454…ECba, executor 0xbEDa…9F5E. HyperEVM strategy templates have been redeployed against the new factory; Base strategy templates are still pending.
Strategy Templates
ERC-1167 clonable singletons. Each proposal clones a template and initializes it with custom parameters.
Base — V1.5 templates:
These V1.5 templates implement IStrategy.onLiveDeposit + _positionValue and clone correctly against the V1.5 factory 0xAC74…3c82. MoonwellSupply, WstETHMoonwell, and the Hyperliquid templates report live NAV (valid=true) — the vault stays open at fair NAV during their active proposals; the rest report valid=false and route through the async-redeem queue.
| Template | Address |
|---|
| MoonwellSupplyStrategy | 0xb9Cd6d6720fc224508A07f0e43254A3cD65770E0 |
| AerodromeLPStrategy | 0x6fba9a6D3F40AA1848Ad196564B27a430D29FdB0 |
| VeniceInferenceStrategy | 0x0dDFf301F8AeB9B95627277f70bb6824CEFf5dF3 |
| WstETHMoonwellStrategy | 0x23d145Bd100599C7418164FEae235bcE391Ae032 |
| MamoYieldStrategy | 0x73b9cdC8cAf8853AfE299E144A40e3D51E399463 |
| PortfolioStrategy | 0x42069e51c415f4BF4442D80F1532Bd38140Bd135 |
| UniswapSwapAdapter | 0x679400a781A66d801C20DfD9E0020704e21e9d54 |
V1 templates (kept on-chain for in-flight settle-out against the old factory only):
MoonwellSupply 0x649f…9F00, AerodromeLP 0x6ccd…26CE, VeniceInference 0x49BF…E41b, WstETHMoonwell 0xA318…D1e6, MamoYield 0x9ca8…DF42, Portfolio 0x7865…3f64.
Robinhood L2 Testnet:
| Template | Address |
|---|
| PortfolioStrategy | 0xAe981882923E0C76A7F10E7cAa3782023c0abd9B |
| SynthraSwapAdapter | 0x39a37537E179919cb2dDDb1D6920dD11bAf3aDF0 |
| SynthraDirectAdapter | 0xdae81cDCfcB14c56fCeB788A147Fcd6CbEdfEeca |
HyperEVM:
| Template | Address |
|---|
| HyperliquidPerpStrategy | 0xC0fA169fdbBb3638AdE917A5B8A9A87caf90d91e |
| HyperliquidGridStrategy | 0x20348e428050031647d671F0e24752C01D4b7379 |
Tokens
| Token | Base | HyperEVM | Robinhood L2 |
|---|
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0xb88339CB7199b77E23DB6E890353E22632Ba630f | N/A |
| WETH | 0x4200000000000000000000000000000000000006 | N/A | 0x7943e237c7F95DA44E0301572D358911207852Fa |
Infrastructure
| Contract | All Chains |
|---|
| Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 |
Stock Tokens (Robinhood L2 only)
| Token | Address |
|---|
| TSLA | 0xC9f9c86933092BbbfFF3CCb4b105A4A94bf3Bd4E |
| AMZN | 0x5884aD2f920c162CFBbACc88C9C51AA75eC09E02 |
| PLTR | 0x1FBE1a0e43594b3455993B5dE5Fd0A7A266298d0 |
| NFLX | 0x3b8262A63d25f0477c4DDE23F83cfe22Cb768C93 |
| AMD | 0x71178BAc73cBeb415514eB542a8995b82669778d |
External Protocols — Base
| Contract | Address |
|---|
| Moonwell Comptroller | 0xfBb21d0380beE3312B33c4353c8936a0F13EF26C |
| Uniswap V3 SwapRouter | 0x2626664c2603336E57B271c5C0b26F421741e481 |
| VVV Token | 0xacfe6019ed1a7dc6f7b508c02d1b04ec88cc21bf |
External Protocols — Robinhood L2
| Contract | Address |
|---|
| Synthra SwapRouter02 | 0x3Ce954107b1A675826B33bF23060Dd655e3758fE |
| Synthra QuoterV2 | 0x231606c321A99DE81e28fE48B07a93F1ba49e713 |
| Synthra V3 Factory | 0x911b4000D3422F482F4062a913885f7b035382Df |
| Chainlink Verifier Proxy | 0x72790f9eB82db492a7DDb6d2af22A270Dcc3Db64 |
Identity & Attestations (Base only)
| Contract | Base |
|---|
| ERC-8004 IdentityRegistry | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 |
| EAS | 0x4200000000000000000000000000000000000021 |
Deployment Records
Per-chain deployment records are stored in contracts/chains/{chainId}.json. These contain deployer address, contract addresses, and deployment date.
Address Resolution
All addresses are resolved at runtime in cli/src/lib/addresses.ts based on the active --chain. Each address family is a Record<Network, ...> map:
TOKENS() → USDC, WETH, cbETH, etc.
MOONWELL() → Comptroller, mTokens
UNISWAP() → SwapRouter, QuoterV2
SHERWOOD() → Factory, Governor
AGENT_REGISTRY() → IdentityRegistry, ReputationRegistry
EAS_CONTRACTS() → EAS, SchemaRegistry
EAS_SCHEMAS() → Schema UIDs
VENICE() → VVV, Staking, DIEM
STRATEGY_TEMPLATES() → MoonwellSupply, AerodromeLP, VeniceInference, WstETHMoonwell, MamoYield, Portfolio, HyperliquidPerp
SYNTHRA() → Router, Quoter, Factory
CHAINLINK() → VerifierProxy
ENS() → L2Registrar, L2Registry
INFRA() → Multicall3
Zero addresses (0x000...000) indicate the protocol is not deployed on that chain. Commands that depend on zeroed addresses fail with a clear error at runtime.
Adding a New Chain
- Define the chain in
cli/src/lib/network.ts (add to ChainConfig registry)
- Add address entries in
cli/src/lib/addresses.ts (all Record<Network, ...> maps)
- If contracts skip registries: ensure
SyndicateFactory and SyndicateVault handle address(0) (already supported)
- Create deployment script in
contracts/script/<chain>/Deploy.s.sol
- Add RPC endpoint to
contracts/foundry.toml
- Deploy and save record to
contracts/chains/{chainId}.json