<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Valha</title>
        <link>https://paragraph.com/@valha</link>
        <description>Valha is an abstraction layer to DeFi.</description>
        <lastBuildDate>Thu, 27 Aug 2026 17:27:40 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Valha</title>
            <url>https://storage.googleapis.com/papyrus_images/71d662d1e5d2d8401e7ea853a5ba2ffc68d7e54a45bf57ae67c1903a98d19169.png</url>
            <link>https://paragraph.com/@valha</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[#0 Valha insights - DeFi interaction functions study  ]]></title>
            <link>https://paragraph.com/@valha/0-valha-insights-defi-interaction-functions-study</link>
            <guid>FtICBCKX9SE7vSi6Q4ge</guid>
            <pubDate>Wed, 21 Dec 2022 16:35:53 GMT</pubDate>
            <description><![CDATA[On the Valha announcement article, we published this image:DeFi integration conandrumIn practice, we wanted to show what this lack of standardisation looks like for developers interacting with DeFi liquidity providement smart contracts.The scopeWe collected information on 85 protocols from 9 Layer 1 or Layer 2 (Ethereum, Arbitrum, Optimism, Avalanche, Polygon, BSC, Celo, Fantom, Tron).Those protocoles accounts for more than $30Bn or 60% of the overall value locked in DeFi (i.e.: we took most ...]]></description>
            <content:encoded><![CDATA[<p>On the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/0xe31a2BCbcE394893B6b1d891dbb041384e8A3247/_RGb8vwYDknfIFYazLjhYelM_1TzuIN9amSMX9q-EB0">Valha announcement article</a>, we published this image:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/89e9afd0293e573e5969c39f20749acb677c086dc43ddd1ec84fc286b0dc4173.png" alt="DeFi integration conandrum" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">DeFi integration conandrum</figcaption></figure><p>In practice, we wanted to show what this lack of standardisation looks like for developers interacting with DeFi liquidity providement smart contracts.</p><h2 id="h-the-scope" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The scope</h2><p>We collected information on 85 protocols from 9 Layer 1 or Layer 2 (Ethereum, Arbitrum, Optimism, Avalanche, Polygon, BSC, Celo, Fantom, Tron).</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/67cb246e8a96d4adc73f00908e6423b74597507edeb4b63e7455d4d46d09518f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Those protocoles accounts for more than $30Bn or 60% of the overall value locked in DeFi (i.e.: we took most of the DeFi protocols were the contracts were available).</p><h2 id="h-the-method" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The method</h2><p>We gathered information at the smart contract level on five atomic actions in DeFi</p><p><code>deposit, redeem, stake, unstake and claim.</code></p><ol><li><p>The <strong>deposit function</strong> consists of depositing a token (often a stablecoin, the chain&apos;s native token, or a known ERC-20) into a vault in order to generate yield and subsequently receive an LP token.</p></li><li><p><strong>Redeem</strong> is the opposite action.</p></li><li><p>The <strong>stake function</strong> consists of placing the LP token gleaned by the deposit action in a new location to earn additional return (ancillary fees, liquidity mining).</p></li><li><p><strong>Unstake</strong> is the opposite action.</p></li><li><p>The <strong>claim function</strong> consists in recovering the rewards earned by the investor if they are not directly accumulated in the token value.</p></li></ol><p>It should be noted that there are sometimes functions in the smart contract which allow to cumulate several actions (deposit and stake, claim and unstake) which are not taken into account here.</p><h2 id="h-the-big-highlights" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The big highlights</h2><h3 id="h-deposit" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Deposit</h3><ul><li><p>36 distinct deposit function names</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ad4c9270d4689ca95932969a5edf44ec92840021febdbefab2b9cead6479f20c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>Top 6 function names with their number of appearances (out of 104 cases)</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/76d4381728e5a6e39cdb04fc5da5ee81c323b58a52f66c7aa0943df31a3f810b.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>33 argument types combination out of 104 occurences (not taking into account order). On average, there is three occurrences of function with the same number and types of arguments for the deposit action.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9e8e15ff71113c029c06340d00ed2b7b1f32b095d28a3c7f4f5dd3c82b49c1b3.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The distribution is not uniform, in majority we have a single uint256 (basically a number) as an argument, or an address and an uint256. AMMs are the pools that require the most arguments to deposit as a liquidity provider at the opposite of native ETH staking functions which requires less than 1 argument on average.</p><h3 id="h-redeem" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Redeem</h3><ul><li><p>26 distinct redeem function variants</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/df99ac2d63926063836dec465d64b2f688560d17688dbcddd746b7f8b1e00147.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>Top 4 function names with their number of appearances. (ouf of 106 appearances)</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9022468f8696915f3efacc4d21ee3e9fba33ce1cb0888155a5db8a78a1278442.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>35 argument types combination out of 106 occurences (not taking into account order).</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5f352f264882c2af5a1b8f633c82adf7fe62d7345daecf7ec3d5b97b21fdc539.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Bridges and AMMs require more arguments to exit a position. For bridges it explains by the fact that we might want to consider a destination chain and a destination address. For AMM, you might configure the token you want to exit with for instance. There is no redeem function for native ethereum staking as this action is impossible to date.</p><h3 id="h-stake" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Stake</h3><ul><li><p>18 distinct stake function names</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/11e2cef09d2e222a1c9a6ee74c9f1efca8dd491f9b9cc45686f2af0285fbbb67.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>Top 5 function name and their frequency of occurrence (out of 52 appearances)</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a1cb2ab5798cf0f5aace76767164a233fc9456513e962d1f3df337d749b92c22.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>16 argument types combination out of 52 occurences (not taking into account order).</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8621e989bbca9b3bfbf96ca8790284a5edc276037a7e563436e65066ef740f7c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>All pool types require approximately the same number of arguments to enter a staking position as the process is similar between protocols.</p><h3 id="h-unstake" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Unstake</h3><ul><li><p>17 different unstake function names</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2967d20cdd62a50c82f8306bce9313f24f2298e664de83986ff6ff8b08b304b7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>Top 5 function name and their frequency of occurrence (out of 47 cases)</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fc50949e756351565847109b5ddb5490a493f2c715e32a31757e4c1f526f947b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>14 argument types combination out of 47 occurences (not taking into account order).</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e0041e7bbe138b5878c23f6d428688d12ea1b01ad30ad4857f57560ffcb93034.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>All pool types require approximately the same number of arguments to enter a staking position as the process is similar between protocols.</p><h3 id="h-claim" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Claim</h3><ul><li><p>14 distinct claim function types</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ab3bb2786ac96f5070f26ebdd432fdc7c4312c9d396bfb7df1209a988072052e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>Top 4 function name and their frequency of occurrence (out of 55 cases)</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8abecd04d80368e4fbc14955ee1e6c860ee321ac9a9215f434c7c2d4282c5796.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p>27 argument types combination out of 55 occurences (not taking into account order).</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fa3cf447f9f922f1862c56a8a027cd84d06c2dea39bfc60834cfa4b526fa51df.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>As there are a lot of claim function with zero argument it is normal to see a high frequency of no argument types combination within protocols. Claim rewards lending pool functions require twice as much argument as other pool categories. This is due to the somewhat complex claim structures on Aave and Compound in particular but it is not inherent to their pool category.</p><h2 id="h-takeaways" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Takeaways:</h2><ul><li><p>Standards such as ERC-4626 are far from being implemented yet.</p></li><li><p>Main standardization that we see is the adaptation to the Uniswap V2 code for AMM (Balancer, Sushiswap, PancakeSwap etc.).</p></li></ul>]]></content:encoded>
            <author>valha@newsletter.paragraph.com (Valha)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/8242cc5c960e0039747c12c469cddbed610dc78d60ea3e321567b461478b1514.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[#0 Valha integrations - How to deal with Angle-SLPs?]]></title>
            <link>https://paragraph.com/@valha/0-valha-integrations-how-to-deal-with-angle-slps</link>
            <guid>woiBIIDA7geUGNMVMaEL</guid>
            <pubDate>Mon, 19 Dec 2022 17:37:22 GMT</pubDate>
            <description><![CDATA[At Valha we are building a DeFi abstraction layer for developers in order to easily deal with integrations. We introduce this series of articles where we explain for developers how to easily interact with some of the protocols in DeFi especially to deposit/redeem/stake funds in yield generating pools. These explanations are an appetizer for integration. Valha offers comprehensive resources to leverage them in a more complete and detailed way. In this first episode, we are looking at Angle Pro...]]></description>
            <content:encoded><![CDATA[<p>At Valha we are building a DeFi abstraction layer for developers in order to easily deal with integrations.</p><p>We introduce this series of articles where we explain for developers how to easily interact with some of the protocols in DeFi especially to deposit/redeem/stake funds in yield generating pools.</p><p>These explanations are an appetizer for integration. Valha offers comprehensive resources to leverage them in a more complete and detailed way.</p><p>In this first episode, we are looking at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.angle.money/overview/readme"><strong>Angle Protocol</strong>.</a></p><p>You can also read this story on Medium:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@octave_18332/0-valha-integrations-how-to-deal-with-angle-slps-2174bf3534ec">https://medium.com/@octave_18332/0-valha-integrations-how-to-deal-with-angle-slps-2174bf3534ec</a></p><h2 id="h-angle-presentation" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Angle presentation</h2><p>Angle is a decentralized, capital efficient and over-collateralized stablecoin protocol.</p><p>The Stablecoin peg relies on three groups of stakeholders: 1) Stable seekers and holders, 2) Hedging Agents and 3) Standard Liquidity Providers.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/55c753c6710eb473f3e4ee5d4ffa61f259e9298dc4abcee013f68005ea4b5471.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><ul><li><p><strong>Stable Seekers or Users:</strong> they can mint stablecoins by depositing collateral and conversely redeem collateral by burning stablecoin.</p></li><li><p><strong>Hedging Agents (HAs):</strong> they get leveraged positions with the multiple of their choice on a pair collateral/stablecoin in the form of perpetual futures. By doing so, they insure the Core module against the volatility of the collateral.</p></li><li><p><strong>Standard Liquidity Providers (SLPs):</strong> they lend money to the Core module to act as a protection layer for the protocol and make up for the Hedging Agents and Stable seekers unbalanced positions. In return they get <strong>1) a part of the transaction fees</strong> induced by stable seekers minting and burning, as well as <strong>2) a part of the returns made from lending</strong> capital to lending pools and DeFi strategies (like Compound, Aave, Yearn).</p><p>An interesting thing to mention about SLPs is that they can get more yield than what they would get on Compound or Aave because they receive yield on collateral they did not bring initially. Thanks to this <strong>multiplier effect</strong>, Angle offers yield opportunities to SLPs that cannot be replicated.</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7ce86935ae279f5c76b7a5f806d7f48f12bba478afa754f7cf9bc46fe934a0b7.png" alt="Angle multiplier effect - Yield opportunity" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Angle multiplier effect - Yield opportunity</figcaption></figure><h2 id="h-integration-focus" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Integration focus</h2><ul><li><p>Protocol: Angle Protocol</p></li><li><p>Scope: SLPs</p></li><li><p>Version: V0</p></li></ul><p>Angle&apos;s Valha integration focuses solely on <strong>SLPs</strong>. Since LPs generate yield by depositing their tokens within specific vaults, this is an attractive way to easily access lucrative yield.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c245158d34e7f66290f01104c90f2adf52212d9cf33be2e6589ea3317b9312d6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-high-level-design" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">High level design</h2><ol><li><p><strong>Stable Master Contract</strong></p><p><code>StableMaster</code> is the contract handling all the accounting. It contains the logic for the fees that are taken to users minting and burning, and for the exchange rate between sanTokens and collateral. This contract is one of the point of entry in the protocol for SLPs (and also for Stable seekers).</p><pre data-type="codeBlock" text="address stableMasterFront = 0x5adDc89785D75C86aB939E9e15bfBBb7Fc086A87
"><code>address <span class="hljs-attr">stableMasterFront</span> = <span class="hljs-number">0</span>x5adDc89785D75C86aB939E9e15bfBBb7Fc086A87
</code></pre></li><li><p><strong>Gauge Contracts</strong></p><p><code>Gauge</code> contracts are a type of staking contracts for users to deposit their LP token in.</p><pre data-type="codeBlock" text="address sanDAI_EUR_Gauge = 0x8E2c0CbDa6bA7B65dbcA333798A3949B07638026
"><code>address <span class="hljs-attr">sanDAI_EUR_Gauge</span> = <span class="hljs-number">0</span>x8E2c0CbDa6bA7B65dbcA333798A3949B07638026
</code></pre></li><li><p><strong>Liquidity Pool Tokens</strong></p><p>“Liquidity Pool Tokens” or “LP Tokens” are tokens representing the share of a SLP into a pool.</p></li><li><p><strong>Underlying Tokens</strong></p><p>“Underlying Tokens” are the tokens used to enter a liquidity pool for SLP.</p></li></ol><h2 id="h-interactions" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Interactions</h2><p>☝️☝️☝️In the following snippets, we consider that the contract implementing the functions has <strong>enough ERC20 balance to execute the function</strong>.</p><p>NB: There are other ways to integrate with Angle protocol, if you think that there is better way to achieve some of the interactions above, feel free to jump in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/mrwsC5SQg7">Discord</a> to discuss it with the team!</p><p><strong>A) Deposit</strong></p><pre data-type="codeBlock" text="interface IERC20 {
    function approve(address spender, uint256 value) external;
}

interface IStableMasterInteraction {
    function deposit(
        uint256 amount,
        address user,
        address poolManager
    ) external;

    function withdraw(
        uint256 amount,
        address burner,
        address dest,
        address poolManager
    ) external;
}


/// @notice External function to deposit an underlying token into a SLP pool
/// @param _amount Amount of underlying token to deposit
/// @param _receiver Address that will receive the LP Tokens
/// @param _poolAddress Pool address to deposit in
/// @param _token Underlying token address that it uses to deposit
/// @dev Once this function is called, LP token will be minted for the corresponding amount of underlying token and distributed to the _receiver.

function deposit(uint256 _amount, address _receiver, address _poolAddress, address _token) external {
        address poolManager = getPoolManager(_poolAddress);
        IERC20(_token).approve(stableMasterFront, _amount);
        IStableMasterInteraction(stableMasterFront).deposit(_amount, _receiver, poolManager);
}
"><code><span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IERC20</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">approve</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> spender, <span class="hljs-keyword">uint256</span> value</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IStableMasterInteraction</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">deposit</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> user,
        <span class="hljs-keyword">address</span> poolManager
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">withdraw</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> burner,
        <span class="hljs-keyword">address</span> dest,
        <span class="hljs-keyword">address</span> poolManager
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}


<span class="hljs-comment">/// @notice External function to deposit an underlying token into a SLP pool</span>
<span class="hljs-comment">/// @param _amount Amount of underlying token to deposit</span>
<span class="hljs-comment">/// @param _receiver Address that will receive the LP Tokens</span>
<span class="hljs-comment">/// @param _poolAddress Pool address to deposit in</span>
<span class="hljs-comment">/// @param _token Underlying token address that it uses to deposit</span>
<span class="hljs-comment">/// @dev Once this function is called, LP token will be minted for the corresponding amount of underlying token and distributed to the _receiver.</span>

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">deposit</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> _amount, <span class="hljs-keyword">address</span> _receiver, <span class="hljs-keyword">address</span> _poolAddress, <span class="hljs-keyword">address</span> _token</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
        <span class="hljs-keyword">address</span> poolManager <span class="hljs-operator">=</span> getPoolManager(_poolAddress);
        IERC20(_token).approve(stableMasterFront, _amount);
        IStableMasterInteraction(stableMasterFront).deposit(_amount, _receiver, poolManager);
}
</code></pre><p><strong>B) Redeem</strong></p><pre data-type="codeBlock" text="interface IERC20 {
    function approve(address spender, uint256 value) external;
}

interface IStableMasterInteraction {
    function deposit(
        uint256 amount,
        address user,
        address poolManager
    ) external;

    function withdraw(
        uint256 amount,
        address burner,
        address dest,
        address poolManager
    ) external;
}

/// @notice External function to withdraw LP tokens from a SLP pool
/// @param _amount Amount of LP token to redeem
/// @param _burner Address that owns the LP token to be redeemed
/// @param _receiver Address that will receive the underlying token
/// @param _pool Address Pool address to withdraw from
/// @dev Once this function is called, LP tokens will be burnt and the corresponding amount of underlying token will be transferred to the _receiver.

function redeem(uint256 _amount, address _burner, address _receiver, address _poolAddress) external {
    address poolManager = getPoolManager(_poolAddress);
    IERC20(_poolAddress).approve(stableMasterFront, _amount);
    IStableMasterInteraction(stableMasterFront).withdraw(_amount, _burner, _receiver, poolManager);
}
"><code><span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IERC20</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">approve</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> spender, <span class="hljs-keyword">uint256</span> value</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IStableMasterInteraction</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">deposit</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> user,
        <span class="hljs-keyword">address</span> poolManager
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">withdraw</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> burner,
        <span class="hljs-keyword">address</span> dest,
        <span class="hljs-keyword">address</span> poolManager
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-comment">/// @notice External function to withdraw LP tokens from a SLP pool</span>
<span class="hljs-comment">/// @param _amount Amount of LP token to redeem</span>
<span class="hljs-comment">/// @param _burner Address that owns the LP token to be redeemed</span>
<span class="hljs-comment">/// @param _receiver Address that will receive the underlying token</span>
<span class="hljs-comment">/// @param _pool Address Pool address to withdraw from</span>
<span class="hljs-comment">/// @dev Once this function is called, LP tokens will be burnt and the corresponding amount of underlying token will be transferred to the _receiver.</span>

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">redeem</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> _amount, <span class="hljs-keyword">address</span> _burner, <span class="hljs-keyword">address</span> _receiver, <span class="hljs-keyword">address</span> _poolAddress</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
    <span class="hljs-keyword">address</span> poolManager <span class="hljs-operator">=</span> getPoolManager(_poolAddress);
    IERC20(_poolAddress).approve(stableMasterFront, _amount);
    IStableMasterInteraction(stableMasterFront).withdraw(_amount, _burner, _receiver, poolManager);
}
</code></pre><p><strong>C) Stake</strong></p><pre data-type="codeBlock" text="interface IGaugeInteraction {
    function deposit(
        uint256 amount,
        address user
    ) external;

    function withdraw(
        uint256 amount,
        bool claim_rewards
    ) external;

    function claim_rewards(
        address user,
        address receiver
    ) external;
}

interface IERC20 {
    function approve(address spender, uint256 value) external;
}

/// @notice External function to withdraw LP tokens from a SLP pool
/// @param _amount Amount of LP token to deposit in the gauge
/// @param _receiver Address which will own the LP tokens once staked. LP token ownership could be transferred to a new address
/// @param _poolAddress LP token pool address
///@param _gaugeAddress Address in which the LP token amount is staked
function stake(uint256 _amount, address _receiver, address _poolAddress, address _gaugeAddress) external {
     IERC20(_poolAddress).approve(_gaugeAddress, _amount);
     IGaugeInteraction(_gaugeAddress).deposit(_amount, _receiver);
}
"><code><span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IGaugeInteraction</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">deposit</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> user
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">withdraw</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">bool</span> claim_rewards
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">claim_rewards</span>(<span class="hljs-params">
        <span class="hljs-keyword">address</span> user,
        <span class="hljs-keyword">address</span> receiver
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IERC20</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">approve</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> spender, <span class="hljs-keyword">uint256</span> value</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-comment">/// @notice External function to withdraw LP tokens from a SLP pool</span>
<span class="hljs-comment">/// @param _amount Amount of LP token to deposit in the gauge</span>
<span class="hljs-comment">/// @param _receiver Address which will own the LP tokens once staked. LP token ownership could be transferred to a new address</span>
<span class="hljs-comment">/// @param _poolAddress LP token pool address</span>
<span class="hljs-comment">///@param _gaugeAddress Address in which the LP token amount is staked</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">stake</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> _amount, <span class="hljs-keyword">address</span> _receiver, <span class="hljs-keyword">address</span> _poolAddress, <span class="hljs-keyword">address</span> _gaugeAddress</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
     IERC20(_poolAddress).approve(_gaugeAddress, _amount);
     IGaugeInteraction(_gaugeAddress).deposit(_amount, _receiver);
}
</code></pre><p><strong>D) Unstake</strong></p><p>This function enables to get back your LP tokens from the staking addresses.</p><pre data-type="codeBlock" text="interface IGaugeInteraction {
    function deposit(
        uint256 amount,
        address user
    ) external;

    function withdraw(
        uint256 amount,
        bool claim_rewards
    ) external;

    function claim_rewards(
        address user,
        address receiver
    ) external;
}

interface IERC20 {
    function approve(address spender, uint256 value) external;
}

/// @notice External function to redeem LP tokens from a SLP pool
/// @param _amount Amount of LP token to redeem from the gauge
///@param _gaugeAddress Address in which the LP token amount is redeemed

function unstake(uint256 _amount, address _gaugeAddress) external {
        IERC20(_gaugeAddress).approve(_gaugeAddress, _amount);
        IGaugeInteraction(_gaugeAddress).withdraw(_amount, false);
    }
"><code><span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IGaugeInteraction</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">deposit</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> user
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">withdraw</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">bool</span> claim_rewards
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">claim_rewards</span>(<span class="hljs-params">
        <span class="hljs-keyword">address</span> user,
        <span class="hljs-keyword">address</span> receiver
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IERC20</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">approve</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> spender, <span class="hljs-keyword">uint256</span> value</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-comment">/// @notice External function to redeem LP tokens from a SLP pool</span>
<span class="hljs-comment">/// @param _amount Amount of LP token to redeem from the gauge</span>
<span class="hljs-comment">///@param _gaugeAddress Address in which the LP token amount is redeemed</span>

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">unstake</span>(<span class="hljs-params"><span class="hljs-keyword">uint256</span> _amount, <span class="hljs-keyword">address</span> _gaugeAddress</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
        IERC20(_gaugeAddress).approve(_gaugeAddress, _amount);
        IGaugeInteraction(_gaugeAddress).withdraw(_amount, <span class="hljs-literal">false</span>);
    }
</code></pre><p><strong>E) Claim</strong></p><p>This method enables to get liquidity mining rewards in ANGLE tokens.</p><pre data-type="codeBlock" text="interface IGaugeInteraction {
    function deposit(
        uint256 amount,
        address user
    ) external;

    function withdraw(
        uint256 amount,
        bool claim_rewards
    ) external;

    function claim_rewards(
        address user,
        address receiver
    ) external;
}

/// @notice This reward can be earned once the LP tokens are staked
///@param _gaugeAddress Address in which the LP token amount is staked
///@param _user Address associated to the staked LP tokens
///@param _receiver Address receiving the claim rewards

function claim_rewards(address _gaugeAddress, address _user, address _receiver) external {
        IGaugeInteraction(_gaugeAddress).claim_rewards(_user, _receiver);
    }
"><code><span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">IGaugeInteraction</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">deposit</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">address</span> user
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">withdraw</span>(<span class="hljs-params">
        <span class="hljs-keyword">uint256</span> amount,
        <span class="hljs-keyword">bool</span> claim_rewards
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;

    <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">claim_rewards</span>(<span class="hljs-params">
        <span class="hljs-keyword">address</span> user,
        <span class="hljs-keyword">address</span> receiver
    </span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span></span>;
}

<span class="hljs-comment">/// @notice This reward can be earned once the LP tokens are staked</span>
<span class="hljs-comment">///@param _gaugeAddress Address in which the LP token amount is staked</span>
<span class="hljs-comment">///@param _user Address associated to the staked LP tokens</span>
<span class="hljs-comment">///@param _receiver Address receiving the claim rewards</span>

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">claim_rewards</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> _gaugeAddress, <span class="hljs-keyword">address</span> _user, <span class="hljs-keyword">address</span> _receiver</span>) <span class="hljs-title"><span class="hljs-keyword">external</span></span> </span>{
        IGaugeInteraction(_gaugeAddress).claim_rewards(_user, _receiver);
    }
</code></pre><h2 id="h-to-go-further" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">To go further</h2><p><strong><em>At Valha, we have the mission to make DeFi easier for developers. We want to make the promise of composability more tangible than ever by creating an abstraction layer on top of which it is intuitive, secure and efficient to integrate with any protocol in DeFi.</em></strong></p><p><strong><em>If you do not want to maintain all your integrations yourself, check our </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://valha.readme.io/reference/introduction"><strong><em>documentation</em></strong></a><strong><em> or jump into our </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/mrwsC5SQg7"><strong><em>Discord</em></strong></a><strong><em> to discuss it.</em></strong></p><p><strong><em>We also maintain an open-source repository of many DeFi integrations and are always for the lookup for new contributors, so feel free to explore or </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Valha-xyz/valha-defi-connectors"><strong><em>Github</em></strong></a><strong><em>. Reach out to us on </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ValhaHQ"><strong><em>Twitter</em></strong></a><strong><em> or in our </em></strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/mrwsC5SQg7"><strong><em>Discord</em></strong></a><strong><em> for potential collaboration in the future.</em></strong></p>]]></content:encoded>
            <author>valha@newsletter.paragraph.com (Valha)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1feb437b4bdeb6385dd631883c0d00e59e10dd62712c6960159f3f3bcc29063b.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Introducing valha — The DeFi abstraction layer for developers]]></title>
            <link>https://paragraph.com/@valha/introducing-valha-the-defi-abstraction-layer-for-developers</link>
            <guid>D84XzXvIW2Dsw4UQajUe</guid>
            <pubDate>Mon, 12 Dec 2022 09:04:11 GMT</pubDate>
            <description><![CDATA[Foundation thesisThe last 20 years have shown a profound change in people’s experience of saving and investing. Instead of going to their local bank, it is easy to have a digital-only and intuitive experience. The financial interface has changed, but not the backbone of financial operations. The financial infrastructure remains siloed into IT systems with different standards and limited interoperability. Even new financial applications like Robinhood are built on those old infrastructures. As...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3b16218a28d48f328a779525aac85e58bc922ad3dfc15daa84ec4e0bb996397f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-foundation-thesis" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Foundation thesis</h2><p>The last 20 years have shown a profound change in people’s experience of saving and investing. Instead of going to their local bank, it is easy to have a digital-only and intuitive experience.</p><p>The financial interface has changed, but not the backbone of financial operations. The financial infrastructure remains siloed into IT systems with different standards and limited interoperability. Even new financial applications like Robinhood are built on those old infrastructures.</p><p>As a result, the investment experience remains:</p><ul><li><p><strong>fragmented</strong>: entities and individuals have accounts on different platforms to invest in various assets</p></li><li><p><strong>opaque</strong>: it is hard to understand how your savings or investment account are invested</p></li><li><p><strong>cumbersome</strong>: KYC process to go through each time, hard to transfer savings and investments accounts from one bank/platform to another</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7cdd4e8947fc04d3eeb999b6c0dd8d18de2f6a4a9f6a1b41eeacfdc4132182e9.png" alt="DeFi Manhattan when mass adoption is a reality" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">DeFi Manhattan when mass adoption is a reality</figcaption></figure><h3 id="h-the-defi-promise-is-not-yet-a-reality" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">The DeFi promise is not yet a reality</h3><p>Decentralized finance offers a new paradigm with direct and transparent access to investment for any investor.</p><p>To interact with DeFi protocols today, you have to browse and connect to protocols’ websites one by one in order to invest in DeFi pools, and connect again to different services to track these positions.</p><p>Due to the profusion of protocols and underlying pools, the experience is far from what was hoped for. The promised composability gives way to fragmentation.</p><p>This problem persists at every level:</p><ul><li><p>For wallets or investment platforms, it takes a huge amount of time to integrate with smart contracts and test them with dozens of DeFi protocols and thousands of pools.</p></li><li><p>For protocols themselves, the integration work with these distribution platforms or with other protocols is colossal too (i.e. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://curve.fi/">curve</a> / <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.convexfinance.com/">convex</a> integrations).</p></li></ul><p>DeFi is great but too fragmented for a coherent UX that reaps the most benefits to users.</p><p>Enters Valha.</p><h3 id="h-valha-defi-made-easy" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Valha: DeFi made easy</h3><p>We are building a <strong>DeFi abstraction layer to facilitate interaction with protocols and pools</strong>. Our goal is to help distribute the yield to the masses.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/89e9afd0293e573e5969c39f20749acb677c086dc43ddd1ec84fc286b0dc4173.png" alt="State of DeFi today vs. Valha" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">State of DeFi today vs. Valha</figcaption></figure><h2 id="h-valha-implementation" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Valha implementation</h2><p>Valha is composed of two main elements: a github repository and an API built on top of it.</p><h3 id="h-github-repository" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Github repository</h3><p>As a DeFi protocol builder, to integrate into Valha and maximise distribution, you only have to to follow the steps precised in our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Valha-xyz/valha-defi-connectors">Github</a>:</p><ol><li><p>List your pools</p></li><li><p>Code your analytics connector</p></li><li><p>Code your interaction connector</p></li><li><p>Test and merge</p></li></ol><h3 id="h-api" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">API</h3><p>We built an API on top of the github repository. This API allows to agnostically interact with DeFi pools in the exact same way. The API ignores differences in function names, arguments and requirements by creating a rigorous standardization process.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8e6b45135056d501f8e7bbe2936645e1b0f8ad8977667daf150063588df844e9.webp" alt="An example SDK built on top of the API" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">An example SDK built on top of the API</figcaption></figure><h3 id="h-protocols-supported" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Protocols supported</h3><p>Today, we support 9 protocols with more than 30 pools on 5 different chains (Mainnet, Polygon, BSC, Arbitrum, Optimism).</p><h2 id="h-use-cases" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Use cases</h2><h3 id="h-for-wallets-and-investment-platforms-support-defi-opportunities-natively" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">For wallets and investment platforms: support DeFi opportunities natively.</h3><p><strong>POV</strong>: You have built a wallet which is the main gateway into the DeFi ecosystem. You are certain that you will be the vector of a massive adoption for non savvy-users.</p><p><strong>The problem?</strong> You have a shiny user interface but your users need to click on external links in order to access investment pools. Setting up an external link to investment pools is not the most exciting user experience.</p><p>You and your developer team have created a few direct plug-ins within your app but they are time-consuming to build and maintain and it is not your priority.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/91f8aa8b9787830267b8cf32f654e02bbccdcf04120c957d1d5bcd1313bc667e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Only DeFi-savvy people have the expertise to explore the ecosystem by hand, we want to help everyone to do it as well. The majority of users will mainly interact only with a single interface.</p><p>With Valha, we propose a method to do this shadow work agnostically.</p><h3 id="h-for-protocols-reduce-integration-time-and-maximise-visibility" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">For protocols: reduce integration time and maximise visibility</h3><p><strong>POV</strong>: You have designed a protocol that has just launched on Mainnet. You’re certain that your protocol is offering innovative financial products that will undoubtedly be useful for a lot of users.</p><p><strong>The problem?</strong> Word of mouth and 1-to-1 partnerships are time-consuming and expensive because relationships are not built overnight.</p><p>Once you have connected with your partners, it is time for technical integration, and every developer on both sides is overloaded with 187 integrations on the board.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/edbe8a8156d3f508aefd9a14ea051ce8f0204ff5d0e29d0d0bf6af6ee3ed523b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>In short, it is no easy task.</p><p>Otherwise, you can integrate Valha and its connectors seamlessly.</p><h3 id="h-valha-offers-a-new-defi-integration-paradigm" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Valha offers a new DeFi integration paradigm</h3><ol><li><p>A protocol deploys its vaults.</p></li><li><p>It lists the vault by creating its own Valha connectors: interaction and position adapters.</p></li><li><p>We automatically test all the integrations to ensure they work as expected for end-users.</p></li><li><p>The integration is now instantly accessible across chains with standardized access through an API. End-users are only a single transaction away from depositing and staking funds.</p></li></ol><h2 id="h-and-what-about-the-erc-4626-standard" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">And, what about the ERC-4626 standard?</h2><p>Valha is looking to continue the revolution initiated by the ERC-4626.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8ce740c5494c1180b25648cb274cbeb415b5a88ada00ee222e2532352ed81d50.png" alt="Valha vs. ERC 4626 representation, an inspiration from https://twitter.com/Ulydev/status/1590732377650737153" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Valha vs. ERC 4626 representation, an inspiration from https://twitter.com/Ulydev/status/1590732377650737153</figcaption></figure><p>The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://erc4626.info/">ERC-4626</a> standard consists in providing a standard API for tokenized yield-bearing vaults (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.convexfinance.com/">Maple</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yearn.finance/vaults">Yearn</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.morpho.xyz/">Morpho</a> use the standard). It is a great step forward DeFi composability. We are big fans of the standard and eager to use it extensively.</p><p>But.</p><p>Standards are immovable and always lag behind implementation. It takes time to spread accross the whole ecosystem and the effort to adapt to the standard is quite significant for developers as it requires a custom wrapper as well as implementation checks and audits.</p><p>There is also no guarantee that a standard will keep up-to-date with the evolution of the ecosystem.</p><p>Valha wants to complement ERC-4626:</p><ul><li><p>First, by enabling the construction of ad-hoc connectors to protocols instead of time-consuming ERC wrappers.</p></li><li><p>Second, by abstracting away the complexity to other on-chain interactions: stake, unstake, claim rewards, boost.</p></li></ul><h3 id="h-join-the-movement" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Join the Movement 🦫</h3><ul><li><p>Join our community on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.com/invite/mrwsC5SQg7">Discord</a></p></li><li><p>Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ValhaHQ">Twitter @ValhaHQ</a></p></li><li><p>To dive deeper into our connectors, you can look at our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Valha-xyz/valha-defi-connectors">Github</a></p></li></ul><p>Our goal is to help structure and distribute financial assets in a more efficient, transparent and secure way than TradFi will ever be capable of.</p><p>DeFi won’t be built in a day or alone. So, let’s connect!</p><p><em>If you want to partner with Valha to give feedback on the abstraction layer and to work for your protocol discovery, please reach out to us on </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ValhaHQ"><em>Twitter</em></a><em> or in the</em> <em>#partnerships channel in</em> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/mrwsC5SQg7"><em>Discord</em></a><em>.<br>This is still a work in progress so any feedback or constructive critics are welcome.</em></p>]]></content:encoded>
            <author>valha@newsletter.paragraph.com (Valha)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/7cdd4e8947fc04d3eeb999b6c0dd8d18de2f6a4a9f6a1b41eeacfdc4132182e9.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>