
When the concept of the Kinesis Monetary System was originally conceived, Kinesis required a state-of-the-art blockchain that had great community support, was flexible, was low cost to operate and transact upon and was able to support the unique aspects of the Kinesis Monetary System – specifically around the way the network fees and yields were managed.
Kinesis chose the Stellar network as it provided everything we needed in order to implement the unique fees and yield structure into the blockchain.
To understand how the Kinesis Blockchain works there are a few concepts you need to familiarise yourself with:
1) For native assets on a Stellar blockchain (like KAU and KAG), all the tokens that will ever exist for that token were created and placed into the root account when the blockchain was created. When a client ‘mints’ a token (adding to the coins in circulation) it is transferred to their wallet via a treasury account (the ‘Emission’ account). The Stellar blockchain does not have the capability to ‘burn’ or ‘destroy’ native tokens (when a token is redeemed for physical metal). Kinesis reduces the coins in circulation when a token is redeemed by transferring the token back to the Emission account, which takes it out of circulation.
2) Unlike an ERC-20 token, Stellar is a ledger-based system, and as of version 17 (our current version), it doesn’t support Smart Contracts. Therefore, there are a number of accounts that form part of the Kinesis Blockchain.
3) The Stellar blockchain has a Root account, which is where the specification of the blockchain is defined and all the tokens that will ever be issued are held until distributed.
4) The Root and Emission accounts do not get included in the coins in circulation calculations as they are holding accounts only. For more information on the function of the Root account, please see:
https://github.com/stellar/stellar-core/blob/master/src/ledger/LedgerManagerImpl.cpp#L93
Therefore, the core accounts for the Kinesis blockchain are:
- Root account – Holds all the tokens that will ever be issued.
- Emission account – Treasury account to hold the reserve tokens.
- Hot Wallet – Exchange transactional custodial account.
- Cold Wallet – Exchange external custodial account.
- Fee Pool account – Holding of fees before yield distribution.
Calculating the Coins in circulation
As outlined above, Stellar does not have a burn function, therefore to calculate the coins in circulation, sum up the coins minted and minus the coins redeemed.
Total coins in circulation = SUM (‘Coins Minted’) – SUM (‘Coins Redeemed’)
Coins Minted – Are the transfers only from the Emission account to a non-root account?
Coins Redeemed – Are any transfers from Hot Wallet back to the Emission/Root account?
We show the coins in circulation on the top of the explorer (https://explorer.kinesis.money).
How to validate the token supply of KAU and KAG?
As an open-source system, you can set up a full Kinesis blockchain node by following the instructions at https://github.com/bullioncapital/nodes. If you want a full copy of the ledger, make sure your horizon instance ingests data from ledger 2, which may take a little time to complete.
When your horizon service is up and running, you can query total coins in circulation via http://<HORIZON>:<HORIZON_PORT>/coin_in_circulation endpoint. It will show you the total minted, total redemption and current total coins in circulation.
If you have SQL and database skills, you can directly query your horizon database when fully ingested. We have open sourced the following: the SQL query we use to display the data in the explorer:
https://github.com/bullioncapital/kinesis-horizon/blob/main/services/horizon/internal/db2/schema/migrations/54_kinesis_coin_in_circulation.sql
When you query the horizon coin_in_circulation endpoint via the browser you will get the following response showing the ingest_latest_ledger and the records for mint, redemption and circulation data.
Please note: You will need to have a fully synced node from ledger 2 in order to get accurate coin-in-circulation. Also, when you quote the number make sure you add a Blockchain reference (see highlighted fields above).
How do we process the fees?
There are three ways fees are collected and added to the fee pools, which are displayed on the Kinesis Monetary System (KMS) web application.
Blockchain Fees
When transactions are completed on the blockchain, a fee is paid by the sender, which accumulates in the ledger header. These fees are then distributed to participants in the Kinesis ecosystem on a periodic basis (currently monthly) based on their activity. A process occurs each month called ‘inflation’ where the fees from transactions are sent to an account within the KMS to be distributed as a yield.
Some fees that are generated and stored in the ledger header may not be distributed and are returned back to the emission account. Examples include when fees are paid to return coins back to the treasury account as part of a redemption or when fees are paid from the root or emission account usually generated from the emission of new coins.
This is because the minting transaction on the blockchain is an operational transaction to send the coins to the customer and is not intended to generate fees. Any fees related to the minting of the coins would be collected through the mint as outlined below.
Mint application fees
Whenever coins are minted by users through an account on the Kinesis Mint, a USD fee is charged. The USD fees are converted proportionally to KAU and KAG daily and added to the fee pool directly.
KMS fees
A 0.22% execution fee is charged to all exchange order executions, which is collected and sent to the fee pool using the Inflation mechanism described below. Other fees that get included here are the card fees, Kinesis Pay fees etc.
Why do some accounts appear not to get paid a yield?
In order to receive a yield there are a number of rules that must be satisfied as per our T&Cs for eligibility. The owner of the holding wallet must have:
- Registered with Kinesis,
- Linked a KMS account with the wallet
- Undertaken a full KYC verification process and have been approved.
If the balance is held in a non-linked wallet on the blockchain then it is not paid a yield.
Why does Kinesis use the Stellar Inflation feature?
Whilst the Inflation operation has not been used by the Stellar Community for a little while, it does play a role in the Kinesis Blockchain. We use the Inflation operation to distribute fees to known Kinesis Blockchain accounts (‘Fee Pool account’) so they can be redistributed through the yield engine. The Inflation process is run once a month as part of the yield calculation.
Why do we run two different Networks KAU & KAG?
Unlike the Stellar Public chain where users can issue their own asset (non-native asset), the Kinesis Blockchain is intended to be used as a single asset network or native asset.
By having a native asset it provides us with two specific benefits:
- Have transactions in a native currency KAU (Gold) or KAG (Silver).
- We can collect the transaction fees in the native currency e.g if you transact KAU, we collect fees in KAU.
Are all the Kinesis accounts shown on the blockchain?
Yes, all balances on the blockchain are reflective of the transactions that occur on the blockchain.
However, if customers deposit or withdraw using the KMS, distinguishing the balances of those accounts may not be possible just by looking at the blockchain. This is because where funds are deposited in the KMS, the amounts may be transferred to and from the hot wallet (custodial account) which operationally allows withdrawals more seamlessly.
Open or Closed Source?
Kinesis embraces open source and we publish all of our code for the blockchain on our publicly available git repository.
We encourage developers and anyone interested to check out the blockchain code:
- https://github.com/bullioncapital/kinesis-core
- https://github.com/bullioncapital/kinesis-horizon
- https://github.com/bullioncapital/nodes
See an article written in 2018 covering the topic “Why the Kinesis Blockchain Network is forked from Stellar”.