Before you begin
You need a strategy to wrap and an External Access Control (EAC) contract. Fee Manager and AccountList are optional.Starting fresh? At minimum, deploy an EAC before proceeding — it’s a single transaction. See Compliance — Deploy and configure access control.
Choose your configuration
Before deploying, decide on three key parameters:FeeManager — your fee structure
FeeManager — your fee structure
Deploy a FeeManager to collect fees on your Conduit. You can configure:
- Management fee — annualized, prorated by time elapsed
- Performance fee — charged on gains above a high water mark
- Deposit fee — deducted from shares received
- Redeem fee — deducted from assets received
address(0) if you don’t need fees. To deploy a Fee Manager, see Configure fees.AccountList — compliance and access control
AccountList — compliance and access control
Deploy an AccountList to control who can deposit, transfer, and hold shares. It combines an allow-list, a block-list, and an optional sanctions oracle, with one of three modes:
Precedence is sanctions, then block-list, then the allow-list mode. Redeems are the exception: any non-sanctioned holder can always exit, even if blocked or de-listed. Sanctions screening plugs into Chainalysis-style oracles via
ISanctionsList and fails closed if the oracle reverts.Set to address(0) for permissionless access. To deploy an AccountList, see Compliance.Deploy the Conduit
1
Get the ConduitFactory address
Railnet deploys a ConduitFactory on each supported chain. Look up factory addresses in Supported protocols.
spawn is gated on the CONDUIT_SPAWN role held in the factory’s own access control — Railnet’s, not the EAC you pass in params — so have your deployer address granted that role first.2
Configure spawn parameters
Define your Conduit’s configuration. The
vehicle parameter accepts any STEAM-compliant contract — a Multi-Vehicle or a Vehicle. The deposit asset is that Vehicle’s own asset() and the initial deposit amount is read from the AssetRegistry — neither is passed here.3
Approve and spawn
Look up the initial deposit amount in the AssetRegistry, approve the factory, then spawn the Conduit. The deployment salt travels inside
params, so spawn takes a single argument.The initial deposit protects against inflation attacks by bootstrapping the share supply. Once the seed query settles, the factory sends the shares it received to the burn address, checks
totalSupply() >= initialExpectedSupply, and calls enable(). See Asset registry for initial deposit sizing guidance.4
Finalize (async strategies only)
For sync yield sources, the Conduit is enabled inside
spawn. For async yield sources (or strategies wrapping async sources) the seed deposit cannot settle in the same transaction: the factory records a PendingDeposit, emits PendingConduitDeposit, and returns a Conduit that is not yet enabled. Wait for the deposit to settle, then finalize:Verify deployment
After deployment, confirm the Conduit is operational:Next steps
Deposits & withdrawals
Process deposits and withdrawals through your Conduit.
Compliance & access control
Configure roles and permissions for your Conduit.
Configure fees & revenue
Set up fee structures and revenue distribution.
Supported protocols
Look up deployed factory and infrastructure addresses per chain.