Oryn’s contracts are intentionally small in responsibility:
- factories create deterministic vaults
- vaults enforce claim and cancel rules
- the bridge factory registers Avalanche ICTT routes and dispatches bridge sends
- interfaces keep cross-contract calls narrow
Which contract should I read?
| Question | Contract |
|---|
| How is a standard vault address predicted? | EscrowFactory |
| How does a normal claim/cancel work? | EscrowVault |
| How does Avalanche add L1 hop support? | AvalancheEscrowFactory |
How does claimHop prevent route redirection? | AvalancheEscrowVault |
| How are Avalanche bridge routes registered? | ICMBridgeFactory |
| What external bridge functions are called? | Interfaces |
Contract families
| Family | Contracts | Purpose |
|---|
| Standard escrow | EscrowFactory, EscrowVault | Chain-agnostic HTLC vault creation and settlement. |
| Avalanche escrow | AvalancheEscrowFactory, AvalancheEscrowVault | Standard settlement plus optional L1 hop settlement. |
| Bridge routing | ICMBridgeFactory, IICMBridgeFactory, IICTT | ICTT route registration and bridge dispatch. |
Creation paths
| User experience | Factory function | Best for |
|---|
| Pre-fund predicted address | createEscrow | Deterministic funding workflows. |
| Single native-token transaction | createEscrowNative | Native token deposits. |
| Permit approval | createEscrowPermit | ERC20s with EIP-2612 support. |
| Signed authorization | createEscrowSigned | Relayer-submitted or gas-sponsored creation. |
| Multiple vaults | createEscrowBatch | Operational batch creation. |
All creation paths end in the same basic object: a minimal proxy vault with immutable escrow parameters.
Settlement paths
| Vault | Claim function | Cancel function |
|---|
EscrowVault | claim(bytes32) | refund() |
AvalancheEscrowVault with l1Hop = false | claim(bytes32) | refund() |
AvalancheEscrowVault with l1Hop = true | claimHop(bytes32,bytes,HopData) | refund() |
Review checklist
When reviewing a route or deployment, verify:
- token is whitelisted on the relevant escrow factory
- factory address in the order matches the chain registry
- vault address matches factory prediction
commitmentHash is nonzero and unique
- expiry windows are long enough for the route
- Avalanche routes are registered in
ICMBridgeFactory