Smart Contract Architecture


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


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


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.


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.


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.


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.


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


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).


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.


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


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


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


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