This page covers the smart contract implementation details. See Glossary.
The interceptor standard
The Interceptor standard is Railnet’s solution for managing additional reward distribution. It provides a declarative on-chain configuration that off-chain indexing services read to correctly route rewards.How it works
1
Declare interception rules
The Vehicle declares distribution rules via the
interceptions() view function.2
Indexers query rules
Off-chain indexers (e.g., reward distributors, airdrop systems) read these rules to determine how to route rewards.
3
Rewards are distributed
The indexer applies the routing logic and distributes rewards according to the declared rules.
chainId targets).
Core structures
- Asset-specific rules — Different routing for different reward tokens
- Multi-recipient — Split rewards among multiple addresses
- Cross-chain support — Route rewards to different chains
- Pass-through — Unallocated rewards (where total
shareBps< 10,000) pass through to users - Last-matching-rule semantics — Later rules override earlier ones for the same asset, enabling powerful override patterns
Matching semantics
Interceptors use last-matching-rule semantics, similar to CSS or firewall rules:- The indexer iterates through the
interceptionsarray and selects the last entry that matches the reward token (either exactly or via theaddress(0)wildcard) - Within the selected rule, for each unique
target, only the last valid entry matching the currentchainId(or the0wildcard) is used
Distribution strategies
- Pass-through (100% to users)
- Fee collection (split)
- Reinvestment (100% to operator)
All additional rewards flow directly to end users with no operator intervention.Best for: Community-first strategies, DAOs with community governance, maximum transparency setups.
Reinvestment mechanics
When using the reinvestment strategy, the operator sells reward tokens and deposits the proceeds back into the Multi-Vehicle without minting new shares. This increases the share price for all holders.Calling
sectorAccountingEngine.deposit() without minting shares increases totalAssets while keeping totalSupply constant. Since share price = totalAssets / totalSupply, all existing holders benefit proportionally.Configuration
Prerequisites
- A deployed Multi-Vehicle or Vehicle
- The
VEHICLE_SET_INTERCEPTIONSrole scoped to the Vehicle contract
Asset-specific fees
Apply different fee rates to different reward tokens.Multi-recipient split
Split fees between multiple addresses.Hybrid fee + reinvestment
Take a small operator fee and reinvest the rest.Reinvestment workflow
After rewards accumulate at the operator reward vault:1
Sell reward tokens for the base asset
Use a DEX aggregator (e.g. 1inch, Paraswap) to sell accumulated reward tokens for the Multi-Vehicle’s base asset (e.g. USDC).
2
Deposit back into the Multi-Vehicle
Call
deposit() on the Sector Accounting Engine with allocate=false. This increases totalAssets without minting new shares, raising the share price for all holders.Requires: MULTI_VEHICLE_DEPOSIT role scoped to the Sector Accounting Engine.3
Verify share price impact
After reinvestment,
totalAssets increases while totalSupply stays the same, resulting in a higher share price.Advanced patterns
Governance token pass-through
Governance token pass-through
Let users keep governance tokens while reinvesting yield tokens.
Strategy comparison
Required role
Updating interception rules requires theVEHICLE_SET_INTERCEPTIONS role: