Technical Overview

This document provides a technical overview of the Kernel smart contract system, which facilitates token deposits and withdrawals to BEP20 asset-specific vaults.

The system is designed to manage user balances securely and efficiently via a StakerGateway acting as a mediator between the users and the Vaults.

This architecture supports a wide range of assets and ensures flexibility and security for all interactions.

Table of Contents


Actors

  1. User: Can stake and unstake suported assets

  2. StakerGateway: User's entrypoint, permits staking and unstaking

  3. KernelVault: Manages users' deposits for each asset handled by the protocol


Contracts

1. StakerGateway.sol

The StakerGateway is the contract that interfaces directly with users, enabling them to stake and unstake tokens to and from the protocol. It acts as the intermediary that ensures proper authorization and routing of transactions between users and vaults.

Key Features

  • Stake: User can stake an asset by depositing tokens into the related Vault

  • Unstake: Facilitates the unstaking of an asset by withdrawing tokens from the vault, ensures user eligibility and transfers tokens back to the user

Flows

  1. Staking

    1. User calls stake() function to stake an asset

    2. The StakerGateway transfers the tokens from User to the KernelVault responsible for the specific asset

    3. KernelVault increases User's balance

  2. Untaking

    1. User calls unstake() function to stake an asset

    2. The StakerGateway transfers the tokens from the KernelVault responsible for the specific asset to User

    3. KernelVault decreases User's balance

2. KernelVault.sol

The KernelVault is responsible for tracking the token balance of users within the system. It offers functionality for deposits and withdrawals and ensures that only StakerGateway can interact with the vaults.

One KernelVault is deployed for each asset. Vaults are deployed using the Beacon proxy pattern.

Key Features

  • Deposit: User can deposit tokens until the vault reaches a pre-defined limit, increasing his balance

  • Withdraw: User can withdraw tokens from the Vault, decreasing his balance

Security Considerations

  • Only StakerGateway can call KernelVault.sol's functions, ensuring secure and controlled access

  • User balances are securely stored within the vault, preventing unauthorized access or manipulation

3. AssetRegistry.sol

AssetRegistry manages the mapping of assets to their respective vaults. It stores information on supported assets and ensures that the system only processes transactions for valid asset-vault pairs.

Key Features

  • Asset-to-Vault Mapping: Keeps track of the vault associated with each supported asset

  • Asset Validation: Ensures that only supported assets are processed in the system

4. KernelConfig.sol

KernelConfig handles the overall configuration of the protocol, including role-based access control and functionalities pausing.

The contract allows pausing of Deposits to all Vaults or Withdrawals from all Vaults independently, or pausing all users' functions at the same time at protocol level.

Key Roles

  • Admin: Manages roles and perform critical tasks

  • Manager: Responsible for managing system configurations, such as adding vaults and assets

  • Pauser: Has the ability to pause the entire protocol or some specific features like deposit and withdrawa in case of emergency

Last updated