# 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..![image](https://hackmd.io/_uploads/SkD-Mc9ha.png) | | | 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$ |