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.
Updated 10 months ago