Deposit once. Yield from everywhere Polkadot reaches. Your in-flight position is tradeable while it settles.
1Conduit is a yield aggregator native to Polkadot Hub. Users and AI agents can discover yield-bearing positions across local Hub lending protocols and XCM-connected parachains, and invest through a single router contract in one transaction.
In-flight XCM positions are represented as transferable ERC-721 receipt NFTs. Whoever holds the NFT at settlement time receives the yield. This turns the async nature of XCM into a useful product primitive instead of an implementation detail.
| PVM Category | Implementation | Honest Claim |
|---|---|---|
| PVM-experiments | RiskOracle.sol compiled via Revive to RISC-V PVM. Every contract in 1Conduit runs on PolkaVM's RISC-V execution environment. |
Solidity contracts compiled to native RISC-V via Revive run more efficiently than EVM bytecode interpretation. The entire stack - registry, router, adapters, XCM dispatch - is PVM-native. |
| Native Assets | MockDOT as the XCM path input on testnet; architecture routes native DOT on mainnet without wrapping or bridging. | DOT is Polkadot's native asset. The XCM path uses it directly. No bridge, no wrapper. |
| Polkadot Native Functionality | XCMAdapter.sol calls the XCM precompile at 0x00000000000000000000000000000000000a0000 from Solidity. Two-phase settlement with PendingReceipt NFT is designed around XCM's honest async model. |
XCM is asynchronous by design. 1Conduit does not fake synchronous cross-chain execution - it makes the async nature a product feature. This is not possible on Ethereum. |
This architecture is not possible on Ethereum - there is no native async cross-consensus messaging, no XCM precompile, and no protocol-native relay asset equivalent to DOT.
flowchart TD
Router["ConduitRouter.sol\ndeposit/settle/withdraw"]
Registry["ConduitRegistry.sol\nregisterAdapter/getAllProducts"]
Oracle["RiskOracle.sol\ngetScore/updateScore"]
Local["LocalLendingAdapter.sol\nisXCM=false"]
XCM["XCMAdapter.sol\nisXCM=true"]
Vault["EscrowVault.sol\nreceipt custody"]
NFT["PendingReceiptNFT.sol\ntransferable pending receipts"]
Precompile["XCM Precompile\n0x...0a0000"]
Router --> Registry
Router --> Oracle
Router --> Local
Router --> XCM
XCM --> Vault
XCM --> NFT
XCM --> Precompile
Network: Paseo Asset Hub (Chain ID: 420420417)
Explorer: https://blockscout-testnet.polkadot.io
Relayer address: 0x6Bee0885A5d7c621215AD773a8c692a1bD16Aa60
Full deployment history and transaction references live in contracts/DEPLOYED_ADDRESSES.md.
The original RiskOracle was implemented in Rust using ink! v6. During development, ink! v6 proved unreliable on Paseo Passet Hub following its discontinuation in January 2026. The community successor (wrevive) launched March 3, 2026 and is explicitly not production-ready. Rather than introduce an unstable dependency at submission time, we ported RiskOracle to Solidity - the scoring formula is unchanged.
The PVM-experiments story is carried by the full stack: every contract in 1Conduit - registry, router, adapters, and XCM dispatch - runs on PolkaVM's RISC-V execution environment. The sharpest Polkadot-native demonstration remains the XCM precompile call in Module 6: a Solidity contract dispatching cross-chain messages in a single transaction. This primitive does not exist on Ethereum.
v2 migration path: RevX (Parity's new Rust IDE, launched February 2026) is the intended path for reintroducing a Rust RiskOracle once it stabilises.
- Node.js 18+
- pnpm
- Foundry (foundry-polkadot fork - see docs/SETUP.md)
- An account funded with PAS on Paseo Asset Hub
cd frontend
pnpm install
pnpm dev
# Open http://localhost:3000
# Connect MetaMask or Talisman to Paseo Asset Hub (Chain ID: 420420417)cd contracts
forge test
# Expected: all tests pass, zero failurescd scripts
npm install
cp .env.example .env
# Fill in RELAYER_PRIVATE_KEY and contract addresses
npx tsx relayer.ts settle <receiptId>- Trustless settlement - replace permissioned relayer with XCM response handling or light-client proof verification
- Multiple XCM destinations - Acala, HydraDX, and other parachains via the adapter registry pattern
- Rust RiskOracle via RevX - reintroduce the Rust scoring component once RevX (Parity's new Rust IDE, launched February 2026) stabilises