Smart Contract Architecture

Overview

The Kona Protocol consists of a UI, a backend and a set of smart contracts. The UI and backend are used to facilitate the access and interactions with the smart contract, which are the only source of truth.

In the next section we describe the smart contracts that participate in the protocol.

Smart Contracts

KonaGlobals

This contract holds some variables that can be updated by the Admin (and later on, only by the Governor contract). Is it the place for other contract to look for these variables such as:

  • The address of the PoolManager SC
  • The address of the OracleManager SC
  • The address of the Staking SC
  • The reference rate

KonaToken

This is the ERC-20 utility token used in the protocol to dynamically balance the stakeholders and the economy. It is issued over time following a dynamic inflation curve with a fixed maximum supply.

KonaStaking

This is a Staking smart contract in which users can lock their KonaTokens to participate in the system and be able to vote for Oracles so that they can receive funds.

KonaPools

This is a smart contract to store the list of Pools that belong to the protocol. It is also in charge of distributing excess, slashing KonaTokens and rewarding stakers, at the end of each cycle. Besides that, it knows the current cycle number and its status (as we can be inside of a cycle or between two cycles).
It also reads and controls the variables and states to then move the cycle into a new status.

Pool

This is an extended ERC-20 SC that acts as a liquidity pool. A Pool knows its list of Oracles, its liquidity providers and the total capital that it manages. It manages requests to deposit and withdraw funds, and mints LP Tokens to liquidity providers.

KonaOracles

This smart contract knows the list of oracles that belong to the protocol.

Oracle

This is an individual Oracle that represents an institution that can originate loans. It can deploy loans, approve them (once they are ready to be funded), request funding from the Pool and also commit a stand by capital to the Pool (once per cycle).

Loan

This is an individual Loan. It is deployed by a Manager from an Oracle. It holds the loan conditions and it is used to receive repayments from the borrower.

KonaMath

This library holds all the equations and mathematical operations used in the system.

KonaDistribution

This library holds all the functions related to distributing assets, and rewarding/slash stakeholders.

KonaGovERC20

ERC-20 token used to determine the voting power for participants of the governance.

KonaGovNFT

ERC-721 token used to determine who participates of the governance.