|
1 | | -# OIF: Intent-based cross-chain swaps |
| 1 | +# The Open Intents Framework (OIF): Permissionless Cross-chain Intents |
2 | 2 |
|
3 | | -OIF is an intent-based cross-chain swap protocol. Users sign customizable intents describing the desired assets, delivery, validation, execution, etc which can be permissionlessly filled and delivered by solvers. |
| 3 | +The OIF is a full-stack developer framework that allows cross-chain intents to permissionlessly be deployed, solved, and discovered. Its comprised of two main pieces: |
| 4 | +- Smart contracts (this repo) |
| 5 | +- [Open-source solver](https://github.com/openintentsframework/oif-solvers) |
4 | 6 |
|
5 | | -The goal of the OIF is to provide a base implementation that can be permissionlessly expanded while providing a foundation for more expressible intent that can be composed with OIF deployments. |
| 7 | +At a high-level, the OIF is a modular, intent-based cross-chain swap protocol. Users sign customizable intents describing the desired assets, delivery, validation, execution, etc., which can be permissionlessly filled and delivered by solvers. |
6 | 8 |
|
| 9 | +The goal of the OIF is to provide a base implementation that can be permissionlessly expanded while providing a foundation for more expressible intents that can be composed with OIF deployments. |
7 | 10 |
|
8 | | -OIF is built with output-input separation. The goal is to fully separate the various system components and support different mechanisms of asset collection. Specifically, both Output First and Input Second flows are facilitated by resource locks and traditional escrows in a single system. |
| 11 | +OIF is built with output-input separation. The goal is to fully separate the various system components and support different mechanisms of asset collection. Specifically, both Output First and Input Second flows are facilitated by [Resource Locks](https://docs.onebalance.io/concepts/resource-locks) and traditional escrows in a single system. |
9 | 12 |
|
10 | 13 | To achieve this, the system has been modularised: |
11 | 14 | - **InputSettler**: Input collection contract on the input chain. Serves multiple proposes, but the main one is to finalise intents. This contracts is responsible for validating that the intents was filled on the validation chain(using the oracle) and unlocking input contracts to the filler. |
12 | 15 | - **OutputSettler**: Output delivery contract on the output chain. Allows solvers to fill outputs of orders. |
13 | 16 | - **Oracle**: Proof layer. Generally a messaging protocol but can be anything: Optimistic proofs, light clients, storage proofs, off-chain agent, etc. Generates proof of filled outputs. |
14 | 17 |
|
15 | | - |
| 18 | +### System Diagram |
16 | 19 |  |
17 | 20 | Refer to the SVG diagram chart. |
18 | 21 |
|
|
0 commit comments