# Product Comparison
## Li.Fi
Based on our conversations with the LiFi team, they require 0 fees! However if Allo wants to activate fees, they offer a fee share.
### How it works:
Li.Fi is available on 20 chains, and is open to moving onto more. They provide swapping, bridging, and onramping.
When bridging, they will compare quotes between many different underlying bridges, then select the bridge with the best total price.
They allow for selecting a slippage tolerance which is 0.5% by default.
Li.Fi has been around for 2.5+ years, they also allow us to integrate on the application layer or the contract level
| Metric | Li.Fi |
|-------------------------|---------------------------------------------|
| **Fees/Costs per Bridge**| Fee: 0% and 0c |
| |
| **Chains Available** | Currently on 20 chains: ETH, POLYGON, BASE, OPTIMISM, ARBITRUM, BSC, PolygonZKEvm, avalance, gnosis, etc..
|
| | Willing to work with other chains |
| **Level of Integration**| Integration on both frontend and contracts |
| | Can transfer messages cross-chain, via zaps |
| **In Operation** | Over 2.5 years+ |
| **Time to Implement** | Quick based on chosen strategy |
| **Team Support** | Available and willing to provide support |
| **Upkeep Requirements** | Not specified |
| **Benefits (On/Offramping)** | Onramping available via SDK |
| **Offers Insurance** | [Bridge insurance](https://li.fi/knowledge-hub/introducing-bridge-insurance/) |
### Sequence diagram LiFi flow - direct deposit
```mermaid
sequenceDiagram
participant RO as Round Operator
participant AC as Allo Contract
participant SC as Modified Strategy
participant ACx as Proxy Contract
participant D as Donor
participant P as Project
participant Bridge as LiFi Diamond
RO->>+AC: createPool(...)
AC-->>-RO: Returns Pool ID
RO->>+AC: registerRecipient(_poolId, _data)
AC->>+SC: registerRecipient(...)
SC-->>-AC: Returns Recipient ID
AC-->>-RO: Project is Registered
D->>+ACx: _forwardFunctionCall(allocate, _data, _sender)
Bridge->>ACx: Deposits Funds & Calls Proxy
ACx->>AC: Decodes message & calls allocate
AC->>SC: Verifies & Executes Checks
SC->>AC: Allocated Event Emitted
AC->>P: Transfers Funds to Project
ACx-->>-D: Vote Recorded & Funds Transferred
RO->>+AC: fundPool(_poolId, _amount)
AC-->>-RO: Pool is Funded
RO->>+AC: updateDistribution(_merkleRoot, _distributionMetadata)
AC->>+SC: Distribution Data Updated
SC-->>-AC: Update Confirmed
AC-->>-RO: Distribution Data Updated
RO->>+AC: distribute(_poolId, _recipientIds, _data)
AC->>SC: distribute(...)
SC->>P: Matching Funds Distributed
AC-->>-RO: Funds Distributed to Projects
```
### Testing examples:
# Token Transfers Comparison
| Transfer Route | Amount (USDC) | Received Amount (USDC) | TOTAL FEES Paid in usd |
|---------------------------|---------------|------------------------|----------|
| **Polygon to Optimism** | 1000 | 997 | 3$ |
| | 100 | 98.48 | 1.52$ |
| | 10 | 8.93 | 1.07$ |
| **Base to Optimism** | 1000 | 1000 | 0$
| | 100 | 98.6 | 1.4$| |
| | 10 | 8 | 2$ |
| **Arbitrum to Optimism** | 1000 | 997 | 3 |
| | 100 | 98.6 | 1.4$ |
| | 10 | 8.88 | 1.22$ |
| **Ethereum to Optimism** | 1000 | 998.2 | 1.8$ |
| | 100 | 99 | 1$ |
| | 10 | 9 | 1$ |