:::info[Note] If you wish to suggest changes on this document, please open a PR on the [Liquidity Provider Server Repository](https://github.com/rsksmart/liquidity-provider-server.git) ::: ## 🧠 Summary The **Liquidity Provider Trusted Accounts** feature extends the existing **Liquidity Provider Server (LPS)** and **FlyoverSDK** to allow Liquidity Providers (LPs) to configure a set of trusted Rootstock accounts that can bypass certain validation checks — such as the **reCAPTCHA** verification — during **PegIn** or **PegOut** operations. This functionality is part of the **Flyover Protocol**, aimed at enabling automated integrations for partners and liquidity providers who operate frequently. --- ## 🏗 Architecture and Design ### Components This feature adds functionality to two existing components: 1. **Liquidity Provider Server (LPS)** – Enables LPs to configure and manage trusted accounts with BTC/RBTC locking caps. 2. **FlyoverSDK** – Provides new methods that allow integrators to sign and submit quotes authenticated by trusted accounts. ### Design Notes - Backward compatible with existing FlyoverSDK versions `>= v1.7.0` and LPS versions `>= v2.3.0`. - The account paying for the operation doesn’t need to be the same as the whitelisted account, but a valid signature of the quote hash from the trusted account must be provided. --- ## ⚙️ Setup and Configuration ### Environment Requirements - **FlyoverSDK:** `>= v1.70` - **LPS:** `>= v2.3.0` ### Configuration - The LP must configure authorized trusted accounts in their **LPS instance**. - No additional `.env` variables or feature flags are required. --- ## 🔌 API / Interface Details ### FlyoverSDK Methods - `async acceptAuthenticatedQuote(quote: Quote, signature: string): Promise`: Accepts a PegIn quote authenticated by a trusted account’s signature. - `async acceptAuthenticatedPegoutQuote(quote: PegoutQuote, signature: string): Promise`: Accepts a PegOut quote authenticated by a trusted account’s signature. - `async signQuote(quote: Quote | PegoutQuote): Promise`: Generates a valid signature for a given quote using the whitelisted Rootstock account. ### Input / Output Same input and output as `acceptQuote` and `acceptPegoutQuote`. The difference is that these methods require a **`signature`** parameter, obtained via: - The `signQuote()` SDK method, or - A manually created signature by the SDK integrator. ### Possible errors Both error types are raised as **`FlyoverError`** instances: | Error Scenario | Description | |----------------|--------------| | Invalid Signature | The provided signature does not match a whitelisted account. | | Locking Cap Exceeded | The account exceeded its assigned BTC/RBTC locking cap. | --- ## 🧭 Integration Guide To integrate this feature: 1. Ensure you are using **FlyoverSDK >= v1.70**. 2. Obtain a whitelisted Rootstock account from your Liquidity Provider. 3. Use the SDK’s `signQuote` method to sign your quote hash. 4. Use the authenticated accept method (`acceptAuthenticatedQuote` or `acceptAuthenticatedPegoutQuote`) with the quote and signature. 5. The LP’s LPS instance will validate the signature against its trusted accounts configuration. > 🔐 Only accounts whitelisted by an LP will be accepted. > Each account has a configured BTC/RBTC locking cap that restricts usage volume. ### Authentication Trust is based solely on account whitelisting and signature verification. ### Integration Entry Points - Primary integration via **FlyoverSDK** - No direct API calls required --- ## 🧪 Testing ### Local Testing Setup - Deploy a **local LPS instance**. - Configure one or more trusted accounts. - Test using the new SDK methods with valid and invalid signatures to validate expected behavior. ### Test Utilities Example tests and automation demos can be found in: 🔗 [Flyover SDK Automation Demo](https://github.com/rsksmart/flyover-sdk/tree/main/utilities/pegin-pegout-automation-demo) ### Notes Follow the documentation in the above repository for commands and setup steps. --- ## 🧾 Changelog | Component | Version | Release Link | |------------|----------|---------------| | FlyoverSDK | v1.7.0 | [GitHub Release](https://github.com/rsksmart/flyover-sdk/releases/tag/v1.7.0) | | LPS | v2.3.0 | [GitHub Release](https://github.com/rsksmart/liquidity-provider-server/releases/tag/v2.3.0) | --- ## 📦 Related Resources - **Flyover SDK (npm):** [@rsksmart/flyover-sdk](https://www.npmjs.com/package/@rsksmart/flyover-sdk) - **GitHub Repo:** [Flyover SDK](https://github.com/rsksmart/flyover-sdk)