Arcadia Accounts

Arcadia Accounts

As mentioned earlier, Arcadia Accounts are the main moat of the protocol. Accounts serve as a user-controlled smart wallet from which the user can perform a multitude of actions.

Arcadia Accounts are owned by one specific user, the owner of the Account. Users can deploy one or more Accounts through the Arcadia Factory, ensuring the Account adheres to the code as developed by the Arcadia team. The owner of the Account holds many privileges, such as being able to deposit and withdraw assets, use the assets to interact with other DeFi protocols, change the creditor (see further) or transfer the Account to another owner.

The owner of the Account can deposit and withdraw a multitude of collateral assets. Accounts are asset-standard agnostic, meaning not only typical ERC20 tokens can be added, but it is foreseen to work with more complex assets like ERC721 (”NFTs”, such as Uniswap V3 LP positions) and ERC1155 assets. The owner of an account can deposit or withdraw multiple assets in a single transaction. To improve the UX for the latter, Accounts are integrated with Permit2 making it possible to issue limited and offline approvals.

The main jobs of an Arcadia Account are to hold and price assets contained within and to protect Creditors interests. To protect the interests of Creditors, the Account has functionality to fetch its own value and to compare it with open liabilities (such as debt, …). To price the assets, the Accounts use the Arcadia Registry. This Registry is the hub for all pricing modules, allowing the pricing of many different assets in a single contract call. The Registry knows which asset is priced in which pricing module, and will thus forward pricing requests to the appropriate pricing module.

Pricing modules are append-only, meaning the Arcadia team can continuously add new asset (types) that can be priced, and thus used as collateral in an Arcadia Account. Importantly; the Arcadia team cannot change the pricing of an existing asset, meaning it is not possible to suddenly update the manner how an asset is priced in the disadvantage of a user.

As each type of asset is priced differently, their logic all resorts in separate pricing modules. For example, there is a pricing module for simple ERC20s, another one for Uniswap V3 LP positions, one for (staked) Stargate LPs, …

Using the pricing modules through the Registry, the Arcadia Account can basically say “all the contents contained within this account, are worth xyz USD”. Their value is expressed in a numeraire, in the previous example being ‘USD’. Next to its value, the Account can also tell users the total value of the liabilities, for example “there is zyx USD debt taken out against this Account”. Once more, the liabilities are expressed in that same numeraire. More on the numeraires in the section on Arcadia Lending.

Each asset being used as collateral within the Account will have a given collateral factor and liquidation factor. Those factors, as set by the protocol from which you have taken out liabilities (such as: taken debt from Arcadia Lending), determine for how much a given asset will counted in its collateral value, and will determine how soon (or late) the Account should be liquidated. A practical example to illustrate this:

  • The Arcadia Lending USDC Creditor has a collateral factor of 0.9 for USDC and 0.8 for ETH. The liquidation factors are 0.95 and 0.9 respectively.

  • An Account holds 1000 USDC and 1 ETH, a total asset value of 3500 USD. Its collateral value is 2,900 USD (0.9 * 1000 + 0.8 * 2500). The weighted average collateral factor of the account is 0.829. This means that when keeping the same composition of the Account, a 5.83x leverage is possible.

  • The Account now takes out 9,000 USDC debt from Arcadia Lending and simply deposits the borrowed funds in the account. The total state of the Account is now:

    • 10,000 USDC + 1 ETH → 11,000 collateral value.

    • 9,000 USDC debt backed by 11,000 USDC collateral value.

  • The Account now swaps the total sum of 10,000 USDC to 4 ETH. The Account now contains 5 ETH (12,500 USD) and has 9,000 USDC debt.

    • 5 ETH → 10,000 collateral value

    • 9,000 USDC debt backed by 10,000 USDC collateral value.

Even though in the second state the Account is slightly less healthy, it is still within the permitted boundaries. This goes to show that liabilities can be issued against the value of the Account, not against the individual assets.

Each Account is an NFT on itself, and can be displayed in existing portfolio trackers as such (eg. Zapper, OpenSea, DeBank, …). Even more, an Account can be transferred (or sold!) as a whole, including all assets as collateral and all liabilities against the Account. Just like you’re used to transferring NFTs!

Every Account has a certain Account Version. Different Account versions can (co)exist. The Arcadia team can periodically push a new version to the Arcadia Factory, which might hold extended logic or other improvements. However, every Account owner must decide for themselves whether they want to upgrade to a new version. The Arcadia team can in no way push or force someone to upgrade. Upgrading the Account is as simple as a single function call, without involving any transfer of assets nor of closing open liabilities.

Arcadia Accounts are designed to hold active collateral. Our design principle has always been that liabilities should be issued against a certain value, not against individual specific assets. As such, even when having open liabilities, Account owners can change the assets contained within the Account, as long as the collateral value contained within the Account at the end of a transaction is sufficient to back its open liabilities. With that concept, the team introduces the concept of flash actions, which allow users to -within the same transaction- withdraw any and all assets and to use those assets to swap, stake, claim and more. It is important however, that sufficient quality assets are deposited back into the account at the end of the transaction, or the final health check will fail! The Arcadia team provides and uses a reference smart contract -dubbed the action manager- in which many of these separate actions can be bundled into a single transaction. We invite the community and partners to create and utilize their own external action manager, tailored to their specific needs.

Managing collateral is hard, Arcadia makes it easier. However, the team still realizes that even by using our simplifying dApp, some users might want to go a step further. We anticipated on that, and added an Account role named Asset Manager. Account owners can appoint one or more Asset Managers, including external smart contracts, which can take actions on behave of the Account owner. Asset Managers can perform flash actions on the Account, and as such automatically rebalance your Account, decrease leverage when the interest rate rises and vice-versa, purchase or sell tokens at a certain pricepoint and more. The possibilities are endless, however Account owners must understand that such an Asset Manager is a fully trusted role, and no Account owner should set an Asset Manager which he doesn’t trust with their funds! Only set it to a trusted, audited smart contract or your own programatically EOA.

Last updated