🔌Integrating with external Defi protocols

Protect the privacy of users of any DeFi protocol by integrating Veilnyx

Introduction

The integration of Veilnyx with any DeFi protocol aims to supercharge the users of that protocol with Veilnyx's privacy and compliance features. In this integration example, we integrate Veilnyx with Uniswap, one of the leading decentralized exchange protocols offering liquidity and trading capabilities. This integration will enable users to execute trades on Uniswap while maintaining complete privacy over their transactions.

Benefits of Integrating with Uniswap

  • Enhanced Privacy: Users can trade on Uniswap without exposing their wallet address.

  • Selective Deanonymisation: Transactions can be decoded when necessary using a revoker and a guardian network, ensuring compliance and accountability.

  • Seamless Experience: The integration ensures that users can leverage the best of both protocols without compromising on usability.

Getting Started

Prerequisites

Before integrating Veilnyx with an external DeFi protocol, ensure you have the following prerequisites in place:

  • Veilnyx Protocol as Submodule: Include the Veilnyx protocol as a submodule in your project. This will provide the necessary functionalities required for the integration.

  • Interface/Periphery Contracts of the Target DeFi Protocol: Obtain the interface of the periphery contracts of the DeFi protocol you are integrating with. These contracts will be essential for interacting with the protocol’s core functionalities.

  • Address of the Periphery Contracts: Ensure you have the correct addresses of the periphery contracts of the DeFi protocol you're integrating with, on the deployment network (e.g., Ethereum mainnet, testnet, etc.). These addresses are crucial for interfacing with the target protocol.

  • Involved Token Addresses: Identify and obtain the addresses of the tokens involved in the transactions on the deployment network. This includes both the tokens you plan to trade and any intermediary tokens required by the protocol.

With these prerequisites in place, you are ready to proceed with the installation and setup of the Veilnyx protocol. Let's go!

Installation

To integrate Veilnyx with your chosen DeFi protocol, follow these steps to install and set up the necessary tools and libraries. This guide assumes you are using Foundry and Solidity for smart contract development.

Install Foundry: Foundry is a fast, portable, and modular toolkit for Ethereum application development. Installing Foundry will also handle the installation of the Solidity compiler (solc).

Install Veilnyx Protocol

Install the Veilnyx protocol using Foundry:

Create the interface of the periphery contract

Include just the interface of the periphery contract of the DeFi protocol you are integrating with in your project directory, under the interfaces folder.

circle-exclamation

Install OpenZeppelin Contracts

OpenZeppelin provides a library of modular, reusable, and secure smart contracts for Ethereum. Install OpenZeppelin contracts for secure ERC20-related operations.

With these steps completed, your development environment is set up, and you are ready to proceed with integrating Veilnyx with your target DeFi protocol.

Transaction Flow

You will use the Veilnyx SDK to create and submit a ZTransaction Veilnyx Pool proxy contract for execution of your transaction. Here’s how your ZTransaction will flow:

Veilnyx `IAdaptor` implementation

Veilnyx offers the IAdaptor An interface for protocol devs to implement in their DeFi adaptors. This interface offers a adaptorConnect(...) function:

inAssetIds : The array of incoming asset IDs involved in the transaction.

circle-info

Veilnyx offers a struct Asset to whitelist the assets you’re going to use during Veilnyx protocol initialization itself. The asset IDs used as inAssetIds and outAssetIds are returned once an asset is whitelisted during Veilnyx initialization. We will cover this in the deployment section.

inValues : The quantity of each incoming asset.

payload : Miscellaneous parameters (encoded as bytes) that your DeFi adaptor might need for the transaction to the target DeFi protocol. These are generally parameters expected by the target protocol to execute. For eg, Uniswap expects information of outToken, beneficiary, slippage protection, etc, to execute a swap, which can all be encoded in the payload params and made available to your adaptor contract by decoding it.

Here’s an implementation of the adaptorConnect(...) function of the UniswapV3 adaptor which executes a swap between WETH<>USDC tokens:

circle-info

The adaptorConnect(...) is called via delegatecall by the Veilnyx::AdaptorHandler.sol, with all the required input tokens/assets already in balance. The converted assets or outputs are then returned in the same function.

Deploy

Once you’re done testing your DeFi adaptor, it’s finally time to ship!

If you’re deploying on a network which has Veilnyx and the target DeFi protocols, then you just need to deploy your newly written adaptor. Just grab the Veilnyx PoolProxy contract address, the periphery contract addresses of your target protocol and deploy your adaptor with the required addresses:

If either protocols are not deployed on your target network, please refer to their respective documentation to deploy the protocols on your target network before proceeding with your adaptor deployment.

Last updated