Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The Kima Light Demo is a reference implementation to help people understand how Kima works.
You can experience Kima's functionality directly in your browser, without needing to install or connect a wallet because the Light Demo App has been pre-configured to send funds between two accounts under the control of the Kima team.
The demo showcases two different scenarios:
payment between different users on different chains. Example: a user has funds on Ethereum but wants to buy an item from an eCommerce store that accepts payments only on Polygon
bridge between different chains (transfer to the same address on different chains). Example: a user has funds on Avalanche but wants to add liquidity to a liquidity pool on Ethereum.
You can configure the number of USDK to be sent between addresses, and choose which payee and payer are involved in the transaction.
After clicking the Pay
button, you can watch the transaction complete in real-time. Clicking the transaction (TX) IDs shows the transaction details in the relevant block explorer.
In the last screenshot,you can see that the transaction is finalised.
Similarly, the bridging demo (named Transfer
in the Light Demo App) moves value between a subset of addresses on different networks. You can configure the number of USDK to be sent between addresses and choose which accounts are used.
Once you have submitted the transaction, you can watch it complete in real-time by clicking the transaction links to the block explorers that are involved.
Kima is the world’s first infrastructure-agnostic money transfer protocol. The Kima platform is comprised of a blockchain and a toolkit that allows the seamless transfer of assets between different protocols and platforms.
Blockchains are siloed. Web3 apps built within those ecosystems are constrained by their on-chain liquidity. Many solutions developed for these challenges, known as bridges, suffer from flaws and vulnerabilities: security, user experience, complexity, and poor capital efficiency.
Kima addresses these challenges in a unique way, by creating a Web3 settlement layer which enables interchain transactions. This approach allows liquidity to be transferred between chains in a safe, secure, and cost-effective manner, enabling a reliable omnichain solution.
Security: Kima achieves unique security by eliminating all known attack vectors (no smart contracts, no oracles, no external relayers) and adding multiple layers of security (e.g., using a Trusted Execution Environment with Intel SGX and decoupled validation). The protocol uses game theory and financial incentives to maintain liquidity equilibrium and maximize capital efficiency.
Infrastructure: Kima simplifies and accelerates the creation of secure Omnichain applications, tackling interoperability problems without causing additional liquidity fragmentation. It provides a mechanism for users to perform cross-chain atomic swaps without token-wrapping.
The Kima blockchain, built using the Cosmos SDK, employs a committee-based consensus. "Wardens" in a rotating committee ensure asset pool synchronization and authorize withdrawals based on corresponding deposits. This structure uses Threshold Signature Schemes (TSS) and operates within a Trusted Execution Environment for enhanced security.
Kima maintains liquidity pools on each integrated layer-1 blockchain (e.g., Ethereum, Polygon, Solana) and synchronizes assets across these platforms without creating synthetic ("wrapped") tokens.
Permissioned Layer: Includes validators known for reliability (e.g., funds, banks, organizations). Permissionless Layer: Allows anyone with sufficient stake to become a block producer and warden, facilitating regular changes in the warden set.
The two-layer consensus mechanism ensures stability, security, and decentralization, with four main goals:
Manage and update the warden set.
Execute platform governance (e.g., selecting blockchains and tokens, setting fees).
Create an auditable record for accountability. -Enable cross-chain messaging for interacting with contracts across blockchains.
When users request cross-chain transfers, the warden committee is responsible for:
Recording the request and monitoring the deposit on the source chain.
Completing a threshold signature to release funds on the destination chain.
Recording the finalized process, providing an auditable record of validator actions.
This architecture, proven in other Cosmos SDK-built systems, ensures a secure, decentralized, and efficient cross-chain transfer system.
To read a more detailed account of Kima's architecture and approach, read the White Paper.
This documentation shows how to:
Use Kima as an end user
Become a validator for the Kima blockchain
Leverage Kima's SDK to effortlessly integrate all Kima's functionality into your application
Kima supports a variety of EVM-compatible Layer 1 and Layer 2 chains, and will ultimately allow the swift and secure transfer of value between the following blockchains:
Chain | Short Name |
---|
The short names are used in various API queries and are the same when using testnet.
Kima is currently available on the following testnets, which can be used for development and/or testing in the Kima Demo App:
Arbitrum Sepolia
Avalanche Fuji
Binance Smart Chain Testnet (aka BNB Testnet)
Ethereum Sepolia
Optimism Sepolia
Polygon Amoy
Solana Devnet
Tron Nile Testnet
Bitcoin Testnet
For an up to date list of support chains query the following endpoint:
GET https://api-testnet.kima.finance/kima-finance/kima-blockchain/chains/get_available_chains/{originChain}
Params
originChain
(string): the starting chain short name (see above)
Reponse
Chains
: string[]: the list of chain short names which can be bridged to from the origin chain
USDC
USDT
KEUR
WBTC
USDK: the Kima testnet stablecoin ()
Arbitrum | ARB |
Avalanche | AVX |
Binance Smart chain | BSC |
Bitcoin | BTC |
Ethereum | ETH |
Optimism | OPT |
Polygon | POL |
Solana | SOL |
Tron | TRX |
The Kima demo app serves two purposes:
to showcase payments and bridging using Kima
to illustrate the look and feel of the Kima front-end widget
You can either choose to connect your own wallet and experience the demo interactively with your own accounts (Kima Advanced Demo), or you can simply opt to try the Kima Light Demo, where you move funds between two accounts under the control of the Kima team and therefore do not need to connect your own wallet.
The Kima Advanced Demo supports the following testnets:
Ethereum Sepolia
Polygon Mumbai
Avalanche Fuji
Tron Nile Testnet
Optimism (Sepolia)
Arbitrum (Sepolia)
Binance Smart Chain Testnet (aka BNB Testnet)
Solana Devnet
To enable a smooth experience and a 360-degree overview of what is happening, we also provide a faucet and a block explorer.
If you haven't already, download an install Keplr wallet in your browser
Open Keplr, click the hamburgetr menu, and select "Add more chains" at the bottom (alternatively, you can browse to https://chains.keplr.app)
Connect your Keplr wallet
Filter to "Kima" and add Kima Mainnet (and Testnet) - this adds the 2 blockchains to your wallet
In your Keplr wallet, click the hamburger menu, select "Manage Chain Visibility" and make one, or both blockchains visible
If you have any tokens on any of the blockchains, they will now become visible
Here's a video demonstrating the full process:
The Kima Advanced Demo is a reference implementation to help people understand how Kima works.
You will need to have a wallet installed and to have some USDK (Kima's US dollar stablecoin) in your wallet on the testnet you want to use. This page explains how to do this. Remember that you will also need a small amount of the native token for the testnet you are sending funds from so you can pay for gas (for example, you will need Sepolia ETH if you want to send from Etherum's Sepolia testnet).
The demo showcases two different scenarios:
payment between different users on different chains. Example: a user has funds on Ethereum but wants to buy an item from an eCommerce store that accepts payments only on Polygon
bridge between different chains (transfer to the same address on different chains). Example: a user has funds on Avalanche but wants to add liquidity to a liquidity pool on Ethereum.
The payment implementation allows the user to make a payment to a Polygon address from an address on a testnet of their choice.
Here we have funds available on Ethereum's Sepolia testnet. We click the Connect
button to connect our wallet.
We approve the transaction and submit it.
We can watch the transaction complete in real-time, by clicking the transaction ID links to the relevant block explorers.
This demo allows us to send funds to our own wallet address on a network of our choice. Here we are sending USDK from Ethereum's Sepolia testnet to Polygon's Mumbai testnet.
First, we connect our wallet, ensuring we are on the network from which we wish to send funds.
The widget pre-fills the target address field with the same wallet address we are sending from, but this can be changed to a different address if desired.
We approve the transaction in our wallet...
... and then in the next step submit it.
As with the Payment demo, we can watch the transactions complete by clicking the transaction ID links.
Kima has two testnet faucets: one for the native KIMA token and one for the Kima stablecoin, USDK.
You will need KIMA tokens for development purposes.
You will need testnet USDK to interact with the Kima platform on whatever testnets you are developing on, and also if you would like to use the Kima Advanced Demo App.
The faucet will give out 100 USDK daily per wallet address.
Note that these are testnet tokens only and have no financial value or benefit
You will first need to have an EVM-compatible wallet installed in your browser, such as MetaMask or Rainbow, if you do not already have one installed. Note that Kima does not endorse, recommend or guarantee any specific wallet. Follow the installation instructions and ensure that you keep your seed phrase safe.
Visit the .
Select the network you want to send funds from, whether this is for payment or bridging.
Connect your wallet by clicking the Connect
button.
Your screen should now look like the screenshot below. Go ahead and click the Get Free 100 USDK
button.
Note that in order to send funds from a particular network, you will also need a small amount of that network's native token in order to pay for gas costs.
So, for example, to bridge or pay from Ethereum's Sepolia network, you will need a small amount of Sepolia ETH, which can be acquired from any Sepolia faucet.
To acquire testnet USDK on Solana or Tron, the process is broadly the same but you will need to use a wallet that is compatibile with these chains.
While we at Kima do not endorse or guarantee any particular wallet, we note that Phantom is a popular choice for interacting with Solana and TronLink is a popular choice for Tron, so we will demo the use of these two wallets in obtaining testnet USDK.
You will need to manually switch your Phantom wallet to use Solana's Devnet. In Phantom, you do this by clicking the Menu icon at the top left and then the Settings gearbox icon at the bottom left.
Within the settings menu you will see a submenu for Developer Settings, and this is where you can switch networks. You will see a banner advising that you are connected to a test network, as shown in the image below.
Solana faucet
From here, you can connect your wallet and request tokens as described in steps 4 to 6 above.
Again, you will need to manually switch your network in your TronLink wallet to use the Nile testnet. You can do this by clicking on the down arrow in the middle of the top navigation bar where the current network is displayed, as shown in the image below.
Tron faucet
From here, you can connect your wallet and request tokens as described in steps 4 to 6 above.
You will first need to have a wallet installed that is designed to interact with the Cosmos ecosystem, such as Keplr.
Connect your wallet by clicking the Connect
button.
Go ahead and click the Get Free 100 KIMA
button.
Your wallet will ask you to confirm the transaction, and you will soon see the tokens arrive in your wallet, as shown below.
Visit the .
The Kima blockchain relies on a network of validator nodes for its security and consensus. KIMA tokens are distributed to validators as an incentive for their participation in the network.
You can read more about both Kima's incentive model and its innovative security architecture in the White Paper
Two areas of Kima's security architecture stand out:
Threshold signature schemes (TSSs) allow a group of participants (“cosigners”) to securely generate and control the secret signing key for a digital signature scheme, such that a certain threshold (e.g., 7-out-of-10) cosigners must participate in the signing protocol in order to generate a signature.
To provide transaction privacy in a blockchain using committee-based consensus, each block producer can run their nodes inside an SGX enclave. Using Intel’s attestation feature, every block producer can verify that all the other committee members are running the authorized blockchain client inside an SGX enclave.
Kima does not rely on the security of Intel SGX to maintain its privacy or safeguard its assets. Instead, Kima uses SGX to complement the security of its system. Kima wardens run the threshold signature scheme inside an SGX enclave, thus the TSS key-shares are not directly accessible to the wardens or their system administrators.
For this reason, would-be validators need to ensure that they either have access to a machine that is compliant with the relevant SGX requirements, either by:
owning the relevant hardware
running their node on Azure
Read the validator requirements page for more details.
If you have questions about setup, or would prefer to be guided through the process, get in touch here.
curl: You will need curl for fetching the external IP and interacting with various web services. Ensure every team member has it installed and configured properly on their local systems.
git: Essential for version control and collaboration, git allows the team to clone necessary repositories and manage code changes effectively. Make sure all team members have git installed and are familiar with its basic commands.
text editor: Your choice of Vim, Nano, or whatever you are used to using as you will need to make updates to file.
Each team member will need sudo privileges to install system packages and perform various secure operations on their machines. This is crucial for maintaining the security and integrity of your development environment.
Each member must have an SSH key set up and linked to their GitHub account for secure repository access. This is essential for cloning private repositories and contributing to your projects securely.
If the team needs to access our private Git repository, please ensure each member has their SSH private key configured correctly. This involves generating an SSH key if they haven't already, adding it to their GitHub account, and ensuring it's accessible to their SSH agent.
If necessary, we can organize a session to assist anyone who hasn't set up their SSH keys or is unfamiliar with the process. It's crucial that everyone can access our repositories without any issues.
Public static IP
Open Ports:
22: SSH (Secure Shell) protocol 26656: Cosmos app CometBFT gossiping port for consensus 26657: Cosmos app CometBFT RPC port 9090: Cosmos app gRPC port 5051: TSS-ECDSA P2P port 5052: TSS-EDDSA P2P port 5053: TSS app EDDSA (Solana chain signer) gossiping port 8081: TSS-ECDSA info address 8082: TSS-ECDSA info address 7070: Cosmos validator management on genesis node port
Download scripts from the Github repository to your server using any convenient method. git clone git@github.com:kima-finance/kima-external-validator.git
Make the files executable with: sudo chmod +x setup-validator.sh
sudo chmod +x update-config.sh
sudo chmod +x run-validator.sh
cd
into the validator directory.
Create a new empty .env
file: Use the touch
command to create a new empty file named .env
.
Copy
Copy the contents of .env.template
to .env
:
If .env
already exists, this will overwrite it, so be sure you want to do this.
Copy
Edit the .env
file with your preferred text editor to add the path to your SSH key:
Copy
Replace /home/yourusername/.ssh/id_rsa
with the actual path to your SSH key. Save and exit
Also in the .env
file, you will need to add configuration details for each blockchain network you intend to connect with. This includes RPC and WSS endpoints, for example:
Copy
Replace "https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY"
and "https://bsc-dataseed1.binance.org"
with the actual network URLs and your API keys or relevant connection details. Again, save your changes and exit your text editor.
For Testnet API keys, you can consider services like Alchemy, QuickNode, and Ankr as alternatives to Infura, providing support for various chains including Ethereum, Polygon, AVAX, BSC, Arbitrum, Optimism, Solana, and Tron.
See the for details of how to acquire testnet API keys and network urls from these services.
Additionally, each blockchain's official documentation may offer public testnet endpoints or other API services suitable for development and testing purposes. Note that these may change, so always make sure you are consulting the latest version of the documentation
Remember, these are templates, and you might need to adjust paths, keys, and configuration details based on your specific environment and requirements.
Run: ./setup-validator.sh <validator-node-name>
This script installs all necessary components and starts the software installation process.
After successful installation, the status will look like this:
Your node will now synchronise with the blockchain network. This might take some time. Monitor the progress:
Copy
You should see something like this:
Once synchronization is complete, your screen should look like this:
This is the final step. Run: ./run-validator.sh
This will complete the validation node setup. Upon successful completion, you will become a validator for the Kima Network blockchain.
Because of the very specific nature of Kima's security model, explained in the validators intro and in the Kima White Paper, you need to ensure you meet the following hardware requirements before you become a Kima validator:
Must be an Intel XEON E-series or any other XEON supporting SGX-SPS (Server Platform Services). The motherboard must also support SGX.
CPU: 4vCPU (8vCPU recommended)
RAM: 16GB (32GB recommended)
Storage: 512GB HDD (1TB recommended)
Operating System: Ubuntu 22.04
Must be an Intel XEON E-series or any other XEON supporting SGX-SPS (Server Platform Services). The motherboard must also support SGX. The below list of supported SGX-compliant CPUs List is current for the first half of 2024
Intel XEON E-2174G
Intel XEON E-2176G
Intel XEON E-2178G
Intel XEON E-2186G
Intel XEON E-2188G
Intel XEON E-2274G
Intel XEON E-2276G
Intel XEON E-2278G
Intel XEON E-2286G
Intel XEON E-2288G
Intel XEON E-2334G
Intel XEON E-2386G
Intel XEON E-2388G
Transparency is one of the key features of public blockchain technology, and block explorers such as Etherscan provide users with an assurance that their transactions are being processed in a timely manner, as well as providing various other insights.
Kima's block explorer, currently available for the Kima Devnet, is an essential dashboard showing all the key facts about the state of the network, including transaction history.
If you are developing on Kima, this is where you will be able to monitor your transactions.
To get up and running quickly on the Kima testnet, it is probable that you will use a managed service such as Infura, Alchemy, Quicknode or Ankr, which are a practical solution because they abstract away the complexities of managing blockchain infrastructure.
These services provide RPC endpoints for different blockchains that you are able to access with API keys you create through the service.
Here is how to create API keys with each of the services.
Visit the Infura website and create an account. You will be prompted to create an API key.
When you select the networks you need to connect to, ensure that you check the boxes for the networks that Kima supports - see the list here.
For Alchemy, the process is slightly different. Sign up for an account here. Navigate to the dashboard and select Apps
in the left-hand navigation. You will be prompted to create an App. Select your network(s) and once you have saved your App, your API key will be revealed at the top right of the page.
Visit Quicknode and sign up for an account. You will then be prompted to create your first endpoint on a screen that looks like this:
To use the Ankr API, visit the Ankr website and in the Products menu in the top navigation bar, click on Web3 API. This will prompt you to set up an account and then you can navigate here and create an endpoint.
Manufacturer | Model |
---|---|
Supermicro
X11SCM-F
Supermicro
X11SCM-LN8F
Supermicro
X11SCW-F
Supermicro
X11SCZ-F
Supermicro
X11SSL-F
Supermicro
X11SCD-F
Supermicro
X11SCE-F
Supermicro
X11SCH-F
Supermicro
X11SCH-LN4F
Supermicro
X11SCL-F
Supermicro
X11SCL-LN4F
Supermicro
X12STW-TF
Supermicro
X12STW-F
Supermicro
X12STL-IF
Supermicro
X12STL-F
Supermicro
X12STH-SYS
Supermicro
X12STH-LN4F
Supermicro
X12STH-F
Supermicro
X12STE-F
Supermicro
X12STD-F
Dell
R240
Dell
R350
HP
DL20 G10
HP
DL20 G10+
Welcome to the Delegation documentation section. This guide covers everything you need to know about delegating to a validator, including the benefits, technical workings, and step-by-step instructions.
Delegating your $KIMA tokens has multiple benefits. Most of these are related to enhancing network security, reducing operation complexity and increasing participation.
Delegation allows for a wider distribution of decision-making power and staking responsibilities, thus reducing centralization.
A delegator who may not have the required technical expertise or resources to run a validator node can still participate in staking. Additionally, the amount required to run a validator often exceeds the funds a typical user might hold.
Delegation also allows delegators to diversify their portfolios by designating some tokens for delegation while keeping others for active trading or investment.
Delegators can participate in network decisions without having to manage the technical aspects of voting or governance. They can rely on validators to handle these aspects while still staking their tokens to influence network decisions.
Delegation is a process that facilitates efficient governance, consensus and operational management in a blockchain.
A participant in the network - a delegator - assigns their voting rights, governance power, and/or staking responsibilities to another participant, referred to as the delegate. This is often a validator of the network.
This process allows every token holder to participate in the staking process without running their own validator. The validator receives yields from the staking process for validating transactions directly. Then the validator shares a portion of the corresponding rewards with each delegator while taking a percentage of the rewards for being the delegate. Each validator can adjust the commission percentage to incentivize more participants to become delegators.
In Kima, delegation locks the tokens for a period of time. This prevents misuse of the delegation and instant withdrawals after receiving rewards or participating in network decisions.
If you are planning to undelegate for the purpose of switching validators, unstaking funds to use elsewhere, or just taking a break, follow the steps below. When you undelegate your tokens on the Kima network, they enter an Unbonding period of 21 days, which means they are locked until the period ends before being transferred back to your wallet. This ensures commitment to the KIMA network and prevent abuse and misuse of the delegation process.
This guide assumes you have previously delegated tokens on Kima.
Go to the KIMA explorer and click the Connect Keplr button.
Testnet explorer Mainnet explorer t/c
Approve the prompts.
In the explorer, click the Overview tab in the left sidebar of the home screen.
Scroll down until you can see the Delegations section. There, you should be able to see a summary of your delegated stake among the available validators.
Look for the delegated stake that you plan to undelegate and click on the Undelegate button.
Enter the amount of $KIMA you want to undelegate and click on Submit.
You will be prompted to approve the transaction. To confirm, click on Approve.
In the Delegations section, you should see that you no longer have any delegated stake. Your undelegated tokens will be in the Unbonding period.
After this period, you will be able to view your tokens in your wallet.
In this guide, you will learn how to set up a wallet and add funds to it. This process can vary depending on whether you're using the mainnet or testnet. We'll cover the following scenarios:
Setting up a wallet
Using a faucet (testnet only)
Some wallet options are Keplr (recommended), Station and Leap.
Then select your preferred browser/device. This guide shows the installation process using Google Chrome.
Add the wallet as a Chrome extension. To minimize risk, always verify that the team behind the extension corresponds with the Keplr app.
Click the Add to Chrome button and wait for the extension to open a new tab with the setup steps. Click the Create a new wallet button to begin the setup.
This will prompt you to choose a wallet creation method.
Read the security concerns about creating a new wallet using a recovery phrase carefully, and click 'I understood. Show my phrase.' Store that phrase in a secure place where only you can access it.
Now enter the words requested from your recovery phrase, add a name and a password to your wallet, then click Next.
Select the default networks and the setup will be completed.
Note that this step applies to the testnet only.
Kima has available faucets for both its native token ($KIMA) and the USDK stablecoin. To delegate on the testnet, you need to have $KIMA to execute the transaction and send the delegated amount.
For further reference, please visit the Kima Faucets documentation.)
In this guide, you will learn how to delegate tokens to a validator using the Kima explorer.
Mainnet explorer t/c
From the left sidebar, select Validators.
Connect your wallet by clicking the Connect Keplr button on the top right corner.
Keplr will now prompt you to add the Kima network (mainnet or testnet) to your wallet's chain registry. To complete the operation, click the Approve button.
You should now see your Kima address instead of Connect Keplr in the top right corner.
Keplr requires an extra step to display the KIMA network so you can view your tokens. From the extensions panel in Chrome, click on the Keplr extension and select the hamburger icon in the top left corner.
In the menu, select Settings.
On the next screen, select General.
Next, scroll down until you reach the Manage Chain Visibility button and click it.
This will open a new tab. In the search box, type kima for mainnet or kima-testnet for the testnet. and it should show the relevant network, along with your $KIMA tokens. Select it by clicking the checkbox and click Save.
You should now be able to see your $KIMA balance in your wallet.
Select one of the available validators in the Kima explorer and click on the Delegate button.
Enter the amount of $KIMA that you want to delegate. Ensure that you have sufficient balance for both the delegation amount and the fees for sending the transaction to the network. To confirm the delegation, click Submit.
You will now be prompted to approve the transaction. You will see the following information (numbers are examples):
Method to execute: Stake
Amount of tokens: 10 $KIMA
Transaction fees: 0.05 $KIMA
Check all details, then click Approve and wait for the transaction to complete.
You should now see a success message, along with the transaction hash of the delegation.
To see further transaction details, you can click on the transaction hash, which will take you to the transaction details within the explorer.
There you can view details such as:
Minimum period 30 days
Minimum delegation >0
Unbonding lockup period 7 days
Commission fee X%
Estimated APY minimum guarantee + rewards
Exit before period ends - no commission paid
Add KIMA to delegation will reset the period timer
Finally you can see your delegated stake in the overview page of the explorer.
Ensure that the Kima network is operational and that there are no ongoing issues or outages.
Double-check the validator’s details before delegating to avoid any mistakes.
Make sure you have enough tokens to cover both the delegation amount and any associated network fees.
This guide will help you learn how to provide liquidity for the Kima protocol.
Understand the Benefits: Start by reviewing the Benefits of becoming a Liquidity Provider section to learn about the incentives, rewards, and advantages of providing liquidity for Kima.
Review Supported Assets and Networks: Before proceeding, familiarize yourself with the Supported assets and networks section to understand which assets and networks are currently supported by Kima.
Set Up Your Environment: Follow the Prepare to provide liquidity section to set up your wallets and networks to interact with Kima.
Deposit Liquidity: Once set up, head to the Deposit assets in Kima pools section to start adding liquidity, and earning rewards.
Monitor and Withdraw: Manage and withdraw your liquidity by following the steps in the Withdraw assets from Kima section.
Please ensure you read the disclaimer.
The Kima Network has an on-chain governance mechanism for signaling (text proposals), changing parameters and allocating funds from the community pool.
Kima governance is driven by the Kima community. Proposals can be followed here.
Kima offers significant incentives for liquidity providers, whether they participate passively or actively. By joining our liquidity pool system, providers can maximize their returns and help secure cross chain liquidity, benefiting from Kima’s efficient and secure network.
Liquidity providers earn a portion of the network transaction fees. For every transaction processed through the liquidity pool, a small fee (0.05% of the transaction amount) is distributed to liquidity providers. Example: For every $1 million in daily transaction volume, liquidity providers earn $500 in network fees per day, or $182,500 annually. Passive liquidity providers, in this case, would receive half of that amount ($91,250/year).
Kima is designed to achieve high capital efficiency, meaning liquidity providers can earn more returns with less liquidity.
Kima’s liquidity pools span multiple blockchain networks, offering liquidity providers access to a broad range of opportunities. By providing liquidity across Ethereum, Polygon, Optimism, and other networks, providers can participate in various ecosystems while enjoying the benefits of Kima’s seamless cross-chain infrastructure.
Kima Finance leverages Trusted Execution Environments (TEEs) and a Threshold Signature Scheme (TSS) to ensure that all liquidity provider operations are secure and private. These advanced security mechanisms protect liquidity providers' assets while enabling the system to function at optimal performance.
Kima Finance’s liquidity pool system is designed to be efficient, secure, and flexible. Liquidity providers can benefit from participating in cross-chain pools, earning rewards through network fees and bounties. For more information on becoming a liquidity provider, refer to the Deposit assets in Kima pools section.
During the initial release period of Kima, the only supported assets will be USDC and USDT on EVM, Tron and Solana. More assets and blockchains will be added in later releases. Assets marked “optional” will be added on demand.
Network | Supported Assets |
---|---|
To withdraw an asset on any blockchain in the Kima Finance protocol,follow these steps:
Before withdrawing liquidity, make sure:
You have assets available for withdrawal.
You have at least 0.2 Kima tokens in your Keplr wallet.
Choose the amount you would like to withdraw.
Select the network from which you want to withdraw.
Once you have set the amount and network, click Withdraw to remove liquidity from the chosen pool.
Upon clicking Withdraw, a New Transfer window will appear. In this window:
Connect your wallet if it is not already connected.
Review the transaction details, including the source network, wallet address, and withdrawal amount.
After reviewing the transaction details, click Next to move to the confirmation step.
In this step, you'll need to approve the transaction, which allows the transfer of the liquidity from the pool you selected to your wallet.
Click Approve to proceed with the transaction.
For all transactions on the Kima Finance network, you will be asked to make two approvals through your Keplr wallet.
Important: You may have to wait a few seconds for the second approval request to appear. If the Keplr wallet does not automatically launch, open it manually to see the pending approval requests.
Once you’ve signed and approved both requests, the transaction process will begin.
Once the transaction reaches 100% completion, your asset’s liquidity will be withdrawn from the pool to your wallet.
You can verify your current liquidity assets still deposited with Kima.
Before you can start providing liquidity to Kima Finance pools, you will need to set up wallets for interacting with the Kima protocol, and the supported target blockchains.
Kima is a Cosmos based blockchain. To interact with Kima, you need to:
Install a Cosmos wallet such as Keplr.
Download your wallet
Follow the instructions to create a new wallet. Secure your seed phrase!
Add the Kima blockchain to the wallet.
Go to the Explorer page:
Browse to the Liquidity panel
Click the button in the upper right to connect your Keplr wallet
Accept all the parameters that will add Kima Mainnet chain to your wallet
You will need Kima tokens to pay gas for the provisioning operations.
Kima offers broad support for multiple blockchain networks, allowing you to connect using a variety of wallets compatible with WalletConnect. You are not limited to specific wallets; instead, you can choose from options such as:
EVM-compatible blockchains: To provide liquidity on any EVM-compatible blockchain (Ethereum, Arbitrum, BNB, etc.) use any EVM-compatible wallet such as MetaMask.
Solana: To provide liquidity on Solana, use Solflare, Phantom, or any other Solana-compatible wallet.
Tron: We have provided instructions for TronLink.
Bitcoin: We have provided instructions for XVerse.
Below are the setup instructions for each wallet option:
For EVM-compatible blockchains, such as Ethereum, Polygon, or Optimism, you may use a wallet such as MetaMask.
Install MetaMask: Download MetaMask as a browser extension or mobile app from the MetaMask website.
Create a wallet: Follow the prompts to create a wallet. Secure your seed phrase!
Add blockchains: Add the blockchains you’d like to provide liquidity on to your MetaMask wallet.
The easiest way is to browse to Chainlist.org and add the desired blockchains.
Kima supports the following blockchains:
For interacting with Kima's liquidity pools on Solana, you may use Solflare or a similar wallet that supports Solana.
Install Solflare: Download the Solflare wallet from the Solflare website.
Create a Wallet: Set up your Solflare wallet. Secure your seed phrase!
For interacting with Kima's liquidity pools on Tron, you may use TronLink or a similar wallet that supports Tron.
Install TronLink: Download TronLink from the TronLink website.
Create a Wallet: Follow the instructions to create your Tron wallet. Secure your seed phrase!
To provide liquidity to the Kima Finance Bitcoin pool, you may use XVerse wallet, a recommended wallet for interacting with Bitcoin.
How to Set Up XVerse Wallet:
Install XVerse: Download the XVerse wallet from the XVerse website.
Create a Wallet: Follow the prompts to set up your XVerse wallet. Secure your seed phrase!
You are now ready to start providing liquidity to Kima pools across various networks. If you encounter any issues during setup, refer to the official documentation of each wallet or reach out to the Kimae community for support.
Instructions for using these wallets do not represent an endorsement by Kima of any of the wallets mentioned.
Below is a step by-step guide on how to deposit assets:
Before depositing liquidity, make sure:
You have assets available for deposit.
The assets are on the supported assets list.
You have at least 0.2 Kima tokens in your Keplr wallet.
You have enough funds for gas on your desired network (e.g., ETH for Ethereum, MATIC for Polygon, etc).
Browse to the Kima Explorer.
Browse to the Liquidity panel
Click the button in the upper right to connect your Keplr wallet
Your existing positions are now visible.
Select the blockchain you’d like to provide liquidity on.
Choose the amount you would like to deposit.
Select the asset you’d like to provide.
Click Deposit.
Upon clicking Deposit, a New Transfer window will appear. In this window:
Connect your blockchain wallet if you haven't already.
Review the transaction details, including the source network, wallet address, and deposit amount. Click Next.
After reviewing the transaction details, click Submit.
Approve all the transactions your wallets ask you to approve.
For all Kima Network transactions, you will be asked to make two approvals through your Keplr wallet.
Important: You may have to wait a few seconds for the second approval request to appear. If the Keplr wallet does not automatically launch, open it manually to see the pending approval requests.
Once you’ve signed and approved both requests, the transaction process will begin.
Once the transaction reaches 100% completion, your asset’s liquidity is deposited in the pool.
You can now view your balance, or withdraw it.
Chain Name | Chain ID |
---|---|
Ethereum
1
Polygon
137
Avalanche C
43114
Optimism
10
Arbitrum (One)
42161
BNB Chain
56
Ethereum
USDC, USDT, WBTC
BNBChain
USDC, USDT
Solana
SDC, USDT, (optional: WBTC)
Polygon
USDC, USDT, (optional: WBTC)
Avalanche C
USDC, USDT, (optional: WBTC)
Optimism
USDC, USDT, (optional: WBTC)
Tron
USDT
Arbitrum (One)
USDC (optional: WBTC)
Because the Kima blockchain is a public network, you can interact with it however you see fit. You can choose to become a validator, if you want - see Becoming a Validator for more details - or you can build a variety of applications on top of it.
To make developing on top of Kima simpler, we have created a toolkit - the Kima Software Development Kit (SDK).
We provide:
a standalone server that you can run locally and use as middleware that sits between the front end of your dApp and the Kima blockchain, submitting requests and returning the response to the front end
a front-end widget with different configuration options that you can easily integrate into your dApp
Of course, the open ethos of Web3 means that you can develop your own solutions from scratch, but we strongly recommend building with both front end and back end components of our SDK so you can leverage the efforts our development team have made on your behalf.
There is an extra step that needs to happen if you are using Kima's tools to transfer to or from Solana wallets. The recipient wallet first needs to be "primed" by sending a small amount of USDK to the wallet before transfers or payments via Kima can take place.
This applies to the testnet only and will not be the case once Kima's mainnet goes live.
As a developer, what can you build with Kima? In order to onboard more users to Web3, we need to simplify the user experience, which means helping them avoid complicated procedures on bridging applications that may or may not be safe to use.
Integrating with Kima's SDK or front-end widget removes the need for your users to leave your dApp and enables them to effortlessly switch funds between networks with the click of a button.
You could think about using Kima for:
A quick glance at DeFi Llama shows that Ethereum's share of TVL is dropping as DEXs choose to deploy on different networks. Allowing users to bridge funds via a plugin on your own website provides them with a seamless user experience, whichever chain they want to use.
In-game payments can slow down the user experience and add unwanted friction. If your users also have to bridge their funds between chains, this can introduce frustration and boredom that may lead to them abandoning your game completely. Kima's smooth, intuitive transactions will mean your users barely notice them.
Similarly, buyers on eCommerce sites are more likely to proceed through the sales funnel if their experience is not impeded by having to visit a separate bridging application.
NFT collectors are no longer limited to one or two chains, and some of the coolest up-and-coming collections can be found on minority chains where fees are cheaper and transactions are faster. Make your marketplace effortlessly multi-chain by integrating Kima.
Wallet developers looking for an easy, intuitive way for their users to swap assets in-wallet need to look no further than Kima.
Essentially, as the number of networks within the thriving Web3 ecosystem expands, the need for sending value securely and quickly from one chain to another has become a pressing need.
The following are parameters that are currently present in the governance process:
Minimum deposit: 10,000 KIMA
Maximum deposit period: 14 days
Voting period: 7 days
Quorum: 33.40% of participating voting power
Pass threshold: 50% of participating voting power
Veto threshold: 33.40% of participating voting power
The deposit period lasts 14 days.
Before a governance proposal enters the voting period (i.e., for the proposal to be voted upon), there must be at least a minimum number of KIMA deposited (10,000). Anyone may contribute to this deposit, though it is usually filled by the proposal maker. Deposits of passed and failed proposals are returned to the contributors.
Deposits are burned only when proposals are vetoed. Deposits are not burned for failing to meet quorum or for being rejected.
The voting period is currently a fixed 7 day period. During the voting period, participants may select a vote of either 'Yes', 'No', 'Abstain', or 'NoWithVeto'. Voters may change their vote at any time before the voting period ends.
Abstain: The voter wishes to contribute to quorum without voting for or against a proposal.
Yes: Approval of the proposal in its current form.
No: Disapproval of the proposal in its current form.
NoWithVeto: NoWithVeto is a mechanism that allows voters to indicate that they strongly disagree with a proposal or if a proposal is identified to be spam. If more than 1/3 of voters cast a NoWithVeto vote, the proposal is rejected.
Voting 'NoWithVeto' has no immediate additional financial cost to the voter - you do not directly risk your KIMA by using this option.
There are four criteria:
Deposit is filled: A minimum deposit of 10,000 KIMA is required for the proposal to enter the voting period
anyone may contribute to this deposit
the deposit must be reached within 14 days (this is the deposit period)
Quorum is reached: A minimum of 33.40% of the network's total voting power (staked KIMA) is required to participate
Simple majority of 'Yes' votes: Greater than 50% of the participating voting power must back the 'Yes' vote by the end of the 7 day voting period
Not vetoed: Less than 33.4% of participating voting power must have backed 'NoWithVeto' by the end of the 7 day voting period
Currently, the criteria for submitting and passing/failing all proposal types is the same.
Once a proposal is on-chain, it cannot be changed to reflect feedback or new information. It is very important to give a proposal time off-chain to receive feedback, input, and edits before going on-chain and asking for votes.
The process of passing a proposal starts long before it goes on-chain!
There are currently several types of proposals supported by Kima:
Text: Proposal to agree to a certain strategy, plan, commitment, future upgrade or other statement. Text proposals do not directly cause any changes, but they can be used to take a record of the community's opinion or commitment to a future idea.
Community Pool Spend: Proposal to spend funds from the community pool on a project
Parameter Change: Proposal to change a core on-chain parameter.
Software Upgrade: Proposal to upgrade the chain version.
You will first want to determine which kind of proposal you are making. Be sure to review all details of your specific proposal type.
Engagement is likely to be critical to the success of a proposal. The degree to which you engage with the Kima community should be relative to the potential impact that your proposal may have on the stakeholders. This guide does not cover all ways of engaging but here are some suggestions:
Post your idea to the Cosmos Hub Forum
Mention the idea in a community call (often hosted on X/Twitter)
Host an AMA on Reddit
We encourage you to experiment and use your strengths to introduce proposal ideas and gather feedback.
There are many different ways to engage. One strategy involves a few stages of engagement before and after submitting a proposal on chain.
Why do it in stages? It's a more conservative approach to save resources. The idea is to check in with key stakeholders at each stage before investing more resources into developing your proposal.
In the first stage of this strategy, you should engage people (ideally experts) informally about your idea. You'll want to start with the minimal, critical components (name, value to Kima, timeline, any funding needs) and check:
Does it make sense?
Are there critical flaws?
How will this affect other projects or properties of the Hub?
You should be engaging with key stakeholders (e.g., a large validator operator) with a few short sentences to measure their support. Here is an example:
"We are considering a proposal for funding to work on project. We think it will help the Hub to outcome. Timeline is x, and we're asking for y amount. Do you think that this is a proposal that large validator may support?"
Why a large validator? They tend to be the de facto decision-makers on Kima, since their delegators also delegate their voting power. If you can establish a base layer of off-chain support, you can be more confident that it's worth proceeding to the next stage.
Note: Many validators will likely hesitate to commit support, and that's okay. It will be important to reassure these stakeholders that this isn't a binding commitment. You're just canvasing the community to get a feel for whether it's worthwhile to proceed. It's also an opportunity to connect with new people and to answer their questions about what it is you're working on. It will be important for them to clearly understand why you think what you're proposing will be valuable Kima, and if possible, why it will be valuable to them as long-term stakeholders.
If you're already confident about your idea, skip to Stage 2.
Not yet confident about your idea?
Great! Governance proposals potentially impact many stakeholders. Introduce your idea with known members of the community before investing resources into drafting a proposal. Don't let negative feedback dissuade you from exploring your idea if you think that it's still important.
If you know people who are very involved with Kima, send them a private message with a concise overview of what you think will result from your idea or proposed changes. Wait for them to ask questions before providing details. Do the same in semi-private channels where people tend to be respectful (and hopefully supportive).
Great! However, remember that governance proposals potentially impact many stakeholders, which can happen in unexpected ways. Introduce your idea with members of the community before investing resources into drafting a proposal. At this point you should seek out and carefully consider critical feedback in order to protect yourself from confirmation bias. This is the ideal time to see a critical flaw, because submitting a flawed proposal on-chain will waste resources and have reputational costs.
Posting your idea to the Cosmos Hub Forum is a great way to get broad feedback and perspective even if you don't have personal connections to any stakeholders or involved parties.
There will likely be differences of opinion about the value of what you're proposing to do and the strategy by which you're planning to do it. If you've considered feedback from broad perspectives and think that what you're doing is valuable and that your strategy should work, and you believe that others feel this way as well, it's likely worth drafting a proposal. However, remember that the largest KIMA stakers have the biggest vote, so a vocal minority isn't necessarily representative or predictive of the outcome of an on-chain vote.
You could choose to take a conservative approach and wait until you have some confidence that you roughly have initial support from a majority of the voting power before proceeding to drafting the details of your proposal. Or you could propose the idea, or define the problem statement and let the community participate freely in drafting competing solutions to solve the issue.
The next major section outlines and describes some potential elements of drafting a proposal. Ensure that you have considered your proposal and anticipated questions that the community will likely ask. Once your proposal is on-chain, you will not be able to change it.
It will be important to balance two things: being detailed and being concise. You'll want to be concise so that people can assess your proposal quickly. You'll want to be detailed so that voters will have a clear, meaningful understanding of what the changes are and how they are likely to be impacted.
Each major proposal type has a rough template available on the forum: Text, community pool spend, parameter change, software upgrade.
Each proposal should contain a summary with key details about what the proposal hopes to change. If you were viewing only the summary with no other context, it should be a good start to being able to make a decision.
Assume that many people will stop reading at this point. However it is important to provide in-depth information. The on-chain proposal text should also include a link to an un-editable version of the text, such as an IPFS pin, and a link to where discussion about the idea is happening.
A few more pointers for Parameter Change and Community Spend proposals are below.
An example of a successful parameter change proposal is Proposal #66. Note that this proposal went on-chain without the recommended IPFS pin.
Problem/Value: The problem or value that's motivating the parameter change(s).
Solution: How changing the parameter(s) will address the problem or improve the network.
Risks & Benefits: How making this/these change(s) may expose stakeholders to new benefits and/or risks.
The beneficiaries of the change(s) (ie. who will these changes impact and how?)
Voters should understand the importance of the change(s) in a simple way
Supplementary materials: Optional materials eg. models, graphs, tables, research, signed petition, etc
An example of a successful community spend proposal is Proposal #63.
Applicant(s) - The profile of the person(s)/entity making the proposal. Who you are and your involvement in Kima and/or other blockchain networks. An overview of team members involved and their relevant experience. Problem - What you're solving and/or opportunity you're addressing. Past, present (and possibly a prediction of the future without this work being done). Solution - How you're proposing to deliver the solution. Your plan to fix the problem or deliver value. The beneficiaries of this plan (ie. who will your plan impact and how?). Your reasons for selecting this plan. Your motivation for delivering this solution/value. Funding - amount and denomination proposed eg. 5000 KIMA. The entity controlling the account receiving the funding. Consider an itemized breakdown of funding per major deliverable. Note that the 'budget' of a spend proposal is generally the easiest thing to criticize. If your budget is vague, consider explaining the reasons you're unable to give a detailed breakdown and be clear about what happens if you do not meet your budget. Deliverables and timeline - the specifics of what you're delivering and how, and what to expect. What are the specific deliverables? (be detailed). When will each of these be delivered? How will each of these be delivered? What will happen if you do not deliver on time? Do you have a plan to return the funds if you're under-budget or the project fails? How will you be accountable to the KIMA stakeholders? How will you communicate updates and how often? How can the community observe your progress? How can the community provide feedback? How should the quality of deliverables be assessed? eg. metrics. Relationships and disclosures. Have you received or applied for grants or funding? for similar work? eg. from the Interchain Foundation. How will you and/or your organization benefit? Do you see this work continuing in the future and is there a plan? What are the risks involved with this work? Do you have conflicts of interest to declare? Begin with a well-considered draft proposal
Ideally, a proposal is first sent to the forum in Markdown format so that it can be further edited and available for comments. A changelog is a great tool so that people can see how the idea has developed over time and in response to feedback.
This Markdown-formatted post can eventually become the description text in a proposal sent on-chain.
Post a draft of your proposal as a topic in the appropriate category of the forum. Hub Proposals is a catch-all if you are not sure where to post, but there are categories for all types of proposals. Directly engage key members of the community for feedback. These could be large contributors, those likely to be most impacted by the proposal, and entities with high stake-backing (eg. high-ranked validators; large stakers). Alert the entire community to the draft proposal on other platforms such as Twitter, tagging accounts such as the Cosmos Hub account, the Cosmos Governance account, and other governance-focused groups.
Before going to mainnet, you can test your proposal on the testnet.
This is a great way to make sure your proposal looks the way you want and refine it before heading to mainnet.
A majority of the voting community should probably be aware of the proposal and have considered it before the proposal goes live on-chain. If you're taking a conservative approach, you should have reasonable confidence that your proposal will pass before risking deposit contributions. Make revisions to your draft proposal after each stage of engagement.
See the submitting guide for more on submitting proposals.
The deposit period currently lasts 14 days. If you submitted your transaction with the minimum deposit (10,000 KIMA), your proposal will immediately enter the voting period. If you did not submit the minimum deposit amount, then this may be an opportunity for others to show their support by contributing (and risking) their KIMA as a bond for your proposal. You can request contributions openly and also contact stakeholders directly (particularly stakeholders who are enthusiastic about your proposal). Remember that each contributor is risking their funds, and you can read more about the conditions for burning deposits here.
This is a stage where proposals may begin to get broader attention. Some block explorers display proposals in the deposit period, while others don't show them until they hit the voting period.
A large cross-section of the blockchain/cryptocurrency community exists on Twitter/X. Having your proposal in the deposit period is a good time to engage the so-called 'crypto Twitter' Kima community to prepare validators to vote (eg. tag @cosmosvalidator) and KIMA-holders that are staking (eg. tag @cosmoshub, @CosmosGov).
At this point you will want to track which validator has voted and which has not. You'll want to re-engage directly with top stake-holders, ie. the highest-ranking validator operators, to ensure that:
They are aware of your proposal
They can ask you any questions about your proposal; and
They are prepared to vote.
Remember that any voter may change their vote at any time before the voting period ends. That historically doesn't happen often, but there may be an opportunity to convince a voter to change their vote. The biggest risk is that stakeholders won't vote at all (for a number of reasons). Validator operators tend to need multiple reminders to vote.
How you choose to contact validator operators, how often, and what you say is up to you--remember that no validator is obligated to vote, and that operators are likely occupied by competing demands for their attention. Take care not to stress any potential relationship with validator operators.
Drafting and submitting a proposal is a process that takes time, attention, and involves risk.
In an ideal world, a proposal should only fail to pass in a situation where engaged and aware make an informed decision to vote down the proposal.
If you are considering drafting a proposal, you should first review the general background on drafting and submission:
How the voting process and governance mechanism works
How to draft your proposal and engage with the Kima community about it
How to format proposals
How to submit your proposal
You should also review details specific to each kind of proposal, listed in this section.
What are signaling proposals currently used for?
Signaling proposals are used to make an on-chain record of support or agreement on a certain topic or ideas. Text proposals do not contain any code. In other words, they do not directly cause any changes to the Hub if they are passed.
Past signaling proposals have been used for a variety of reasons:
Agreement to adopt (or not adopt) a feature in a future release
A high-signal alert to validators
On-chain record of community opinion
Ratification of a social norm
Signaling proposals are a great way to take an official public poll of community sentiment before investing more resources into a project. The most common use of text proposals is to confirm that the community is actually interested in what the proposer wants to develop, without asking for money to fund development that might not be concrete enough to have a budget yet.
Because the results of signaling proposals remain on-chain and are easily accessible to anyone, they are also a good way to formalize community opinions. Information contained in documentation or GitHub repos can be hard to find for new community members but signaling proposals in a block explorer or wallet is very accessible.
You might make a signaling proposal to gather opinions for work you want to do for the Hub, or because you think it is important to have a record of some perspective held by the community at large.
Technically, nothing happens on-chain. No code executes, and this 'unenforceable' property of text proposals is one of the biggest criticisms of the format. Regardless of whether the results of a signaling proposal are enforced by code, there can still be value from having a proposal on-chain and subject to discussion. Whether a proposal passes or fails, we all get information from it having been considered.
The community might have had a thorough, thoughtful discussion about a topic that they otherwise would not have had.
A development team interested in a feature might have a better idea of how their work will be received by the community.
The community might be more informed about a topic.
The community might feel confident that we are aligned on a particular definition or social norm.
Follow the instructions below to create a text proposal and submit it to the network.
Unlocks the potential for token-holders to vote to approve spending from the Community Pool.
2% of all staking rewards generated (via block rewards & transaction fees) are continually transferred to and accrue within the Community Pool. For example, from December 19, 2019 until January 20, 2020 (32 days), 28,726 ATOM were generated and added to the pool.
Though the rate of funding is currently fixed at 2% of staking rewards, the effective rate is dependent upon Kima staking rewards, which can change with inflation and block times. The current parameter Community Tax parameter of 2% may be modified with a governance proposal and enacted immediately after the proposal passes.
You may directly query Kima for the balance of the Community Pool:
Alternatively, the Kima Explorer will display the ongoing Community Pool balance.
Funds from the Kima Community Pool may be spent via a successful governance proposal.
We don't know 🤷
The prevailing assumption is that funds should be spent in a way that brings value to Kima. However, there is debate about how to keep the fund sustainable. There is also some debate about who should receive funding. For example, part of the community believes that the funds should only be used for those who need funding most. Other topics of concern include:
Retroactive grants
Price negotiation
Fund disbursal (eg. payments in stages; payments pegged to reduce volatility)
Radical overhaul of how the community-spend mechanism functions
We can expect this to take shape as proposals are discussed, accepted, and rejected by the Kima community.
How are funds disbursed after a community-spend proposal is passed?
If a community-spend proposal passes successfully, the number of $KIMA encoded in the proposal will be transferred from the community pool to the address encoded in the proposal, and this will happen immediately after the voting period ends.
As a strategy: funding is fast. Besides the time it takes to push your proposal on-chain, the only other limiting factor is a fixed 14-day voting period. As soon as the proposal passes, your account will be credited the full amount of your proposal request.
To build rapport. Engaging publicly with the community is the opportunity to develop relationships with stakeholders and to educate them about the importance of your work. Unforeseen partnerships could arise, and overall the community may value your work more if they are involved as stakeholders.
To be more independent. The Interchain Foundation (ICF) may not always be able to fund work. Having a more consistently funded source and having a report with its stakeholders means you can use your rapport to have confidence in your ability to secure funding without having to be dependent upon the ICF alone
Drafting and submitting a parameter-change governance proposal involves two kinds of risk: losing proposal deposit amounts and the potential to alter the function of the Kima network in an undesirable way.
The complete parameters of the Kima network are split up into different modules, each of which has its own set of parameters. Most parameters can be updated by submitting a governance proposal.
List of modules whose parameters can be changed via governance:
x/auth x/bank x/distribution x/evidence x/feegrant x/gov x/mint x/slashing x/staking ibc-go/transfer interchain-security/provider Each cosmos-sdk module uses MsgUpdateParams for providing parameter changes. You can learn more about it in the cosmos-sdk documentation of each module, for example msgupdateparam
There are ways to query the current settings for each module's parameter(s). Some can be queried with the command line program gaiad. You can begin by using the command gaiad q [module] -h to get help about the subcommands for the module you want to query. For example, gaiad q staking params returns the settings of relevant parameters:
bond_denom: uKIMA max_entries: 7 max_validators: 180 unbonding_time: 1814400s
If a parameter change proposal is successful, the change takes effect immediately upon completion of the voting period.
Note: You cannot currently query the bank module's parameter, which is sendenabled. You also cannot query the crisis module's parameters.
Parameters govern many aspects of Kima's behaviour. As circumstances and attitudes change, sometimes you might want to change a parameter to bring the chain's behaviour in line with community opinion. For example, the Cosmos Hub launched with 100 active validators and there have been 4 proposals to date that have increased the MaxValidators parameter. At the time of writing, the active set contains 180 validators.
The Cosmos Hub has been viewed as a slow-moving, highly secure chain and that is reflected in some of its other parameters, such as a 21 day unbonding period and 14 day voting period. These are quite long compared to other chains in the Cosmos Ecosystem
Because parameters dictate some of the ways in which the chain operates, changing them can have an impact beyond what is immediately obvious.
For example, reducing the unbonding period might seem like the only effect is in how quickly delegators can liquidate their assets. It might also have a much greater impact on the overall security of the network that would be hard to realize at first glance.
This is one of the reasons that having a thorough discussion before going on-chain is so important - talking through the impacts of a proposal is a great way to avoid unintended effects.
Use the draft-proposal command to create a draft proposal and populate it with required information.
This is a web server that works as middleware between the Kima Transaction Widget and Kima Chain. Once it receives a transaction request from the widget, it will submit a transaction to Kima Chain signed by a local wallet.
The server is an Express application and requires minimal setup. Here are the instructions:
We recommend Keplr, which is a widely used wallet for blockchains within the Cosmos ecosystem.
Install it from and make sure you back it up by saving the seed phrase.
You will need to record the mnemonic seed phrase rather than the private key, as the seed phrase is used as an environment variable.
If you are developing on the KIMA testnet, you can acquire test KIMA tokens from our .
Follow the if you have not used a faucet before.
https://github.com/kima-finance/kima-transaction-backend
If you are using Docker, you can add these to the docker-compose
; otherwise, create an .env file with the following key pairs:
Copy
A few notes about these environment variables:
KIMA_BACKEND_MNEMONIC
is the seed phrase from the wallet you installed.
Neither of these dependencies are mandatory as long as you do not want to invoke the /compliant
endpoint.
You can run:
npm i
then
npm run dev
but the easiest way to get up and running without any dependency issues is with Docker. Use docker-compose.yml for dev, docker-compose-prod.yml for prod.
Start the server with:
docker compose up
In your terminal, run the following command:
Copy
The server should respond with a valid authtoken with a five-second expiry.
The Kima Transaction Widget sends a POST request to this endpoint before it submits a transaction request. Returns JWT as cookie which has 5 seconds of life time. This cookie will be expired after 5 seconds. Kima Transaction Widget will call the second endpoint right after it receives JWT Auth Token.
This is a POST request that submits a cross-chain transaction using the developer wallet whose details are stored. Before the /submit
endpoint is called, the JWT will first be validated.
The reponse object will contain a transaction ID which can be used to track the success of the submission.
An example of the request body that should be sent:
Copy
This is a GET request which will return OK if the address is compliant. Note that this will work only if you have a Xplorisk account.
Copy
KIMA_BACKEND_SECRET
is the secret for generating JSON Web Tokens. Read more about JWT if you have not used them before.
For checking whether transactions involve risky wallets. you will need an account. The Xplorisk Lambda endpoint should be added to your .env file as XPLORISK_URL
.
The Kima Widget serves as a reference implementation written in React. If your project uses another framework, or you want to make a custom component, it’s possible to interact with the Kima Transaction Backend directly.
User selects the origin and target chains and amount
User approves Kima to transfer origin tokens
The transaction details are submitted to the Kima Transaction Backend
The UI polls the Kima GraphQL endpoint for status updates until the transaction has completed
The React component on the Kima Github:
@Kimafinance/kima-transaction-widget
The frontend component will need to provide the following information. This will be used to calculate the service fee and the approval for Kima to move tokens on behalf of the user.
Origin (from)
chain: this is the chain the user tokens will come from
token: the (stable coin) token the user will pay with (or bridge from)
address: the source user address- i.e. the connected user
amount: the amount of tokens to transfer
Target (to)
Chain: the destination chain
Token: the (stable coin) token being delivered
In a payment scenario this will be the same as the origin token
Address: the receiving address
In a bridge transaction this will be same as the connected user
See the list of chains and tokens in the Supported Blockchains section.
The procedure for adding the Kima Transaction Widget to a NextJS app is very similar to the React tutorial but you should be aware that you will need to export the widget component as a dynamic component with {ssr: false}
so that the application runs the widget on the client side.
Assuming you are building an app from scratch, you can run npx create-next-app <your-app-name>
to create a new app.
You can either run:
npm i @kimafinance/kima-transaction-widget
or else copy this package.json
to the root of your directory and then simply run npm i
.
Copy
Within your app
directory, create a components
directory and inside that create a file named widget.jsx
with the following code:
Copy
You can now use DynamicApp
on whatever page you like. In our example, we will create an index page index.jsx
in our pages
directory and copy the following code:
Copy
When you visit localhost:3000
you will see something like this:
Exactly as with the basic React implementation, you have all the same configuration options.
Note that in the above example, we have configured the title and payment title text, along with the colour. These are just some of the configuration options we describe below.
There are numerous ways to configure the modal for your own preferences and the look and feel of your dApp, which you can do via the following props:
Theme
The Theme prop allows you not only to switch between light and dark mode but also to specify your font colour and style and background colour:
Copy
Title
The Title prop enables you to give the widget whatever title you want and can be configured for each step of the widget.
Required: false
Type: TitleOption:
Copy
Payment Title
The PaymentTitle prop allows you to optionally set the title that appears on the payment screen if you are using the Payment component.
Required: false
Type: PaymentTitleOption
Copy
HelpUrl
This is a string, which should be to your own help documentation or FAQ. If unset, the link will default to Kima's help documentation.
Required: false
Type: string
Used to specify the scenario of kima-transaction-widget. Available modes are payment, bridget and status.
Required: true Type: ModeOptions Payment and bridge scenario for the purpose of widget, status mode is for tracking status of specific transaction of kima widget. To use status mode, txId prop should be determined export declare enum ModeOptions { payment = 'payment', bridge = 'bridge', status = 'status' }
TransactionOption
Within the payment scenario, you may optionally want to preset the chain and wallet address where the payment should go, as well as the payment amount.
Required: false
Type: TransactionOption
Copy
kimaBackendUrl
This is one of the few props that is mandatory to set, because this specifies Kima's transaction back end URL. In the bridge example above, we have made the assumption that you have the back end server running locally on localhost:3001
.
Required: true
Type: string
kimaNodeProviderQuery
Again, this is mandatory because this is used to specify the REST API URL for interactions with the Kima blockchain.
Required: true
Type: string
kimaExplorer
This is used to specify the URL of Kima's block explorer in the environment you are using. The widget needs this to provide updates to the status screen, as well as allowing users to link to their transactions to view progress.
It is not mandatory, but it is highly recommended.
Required: false Type: string Default: explorer.kima.finance
txID
Similarly, this is used to show users the progress of their transactions. It is not mandatory and is used only for status mode.
Required: false
Type: boolean
Default: -1
useFIAT
Used to specify whether users should be given the option to transact with fiat currency.
Required: false
Type: boolean
Default: false
autoConnect
This prop is optional and allows you to define whether connection of wallets such as MetaMask should be automatic or manual.
Required: false
Type: boolean
Default: false
Used to provide the widget with wallet connection and chain switching functionality.
walletConnectProjectId
Used to specify the WalletConnect project id. A default value is provided, but you can specify your own. To create a project, visit Reown Cloud and sign up for a free account (WalletConnect is now called Reown).
Required: false
Type: string
networkOption
Used to specify the network type.
Required: false
Type: NetworkOptions
Default: NetworkOptions.testnet
Once the user has approved the token transfer, it’s time to construct the submit
request to the Kima Transaction Backend.
POST /submit
Request Body:
originAddress
(Address): sending user address
originChain
(string): sending chain
targetAddress
(Address): receiving user address
targetChain
(string): receiving chain
targetSymbol
(string): receiving token symbol
amount
(number): amount of token to transfer
fee
(number): amount of token that Kima consumes to pay gas fee for pulling & releasing token transactions
For Bitcoin transactions:
Set these to the empty string or zero for non-BTC transactions
htlcCreationHash
(string): the tx hash locking the funds in the HTLC
htlcCreationVout
(number): the output index of the locked funds in the HTLC creation transaction
htlcExpirationTimestamp
(string): the timestamp when the HTLC contract expires and the user can reclaim the funds locked there
htclVersion
(string)
senderPubKey
(string): for bitcoin transactions this is the public key of the sender
Success Response:
height
: number
txIndex
: number
code
: number: error code; will be zero when successful
transactionHash
: string
events
: Event[]
type
: string
attributes
: Attribute[]
key
: string
value
: string
rawLog
?: string
data
?: MsgData[]
msgResponses
: Uint8Array
gasUsed
: bigint
gasWanted
: bigint
See the short names in the Supported Blockchains section.
The transaction Id will be needed to get the transaction status. The following code can be used to extract the Id from the submit
response.
Before calling submit
a JWT token must be obtained with the body payload. The JWT will be checked against the request body and if it does not match will respond with a 500
error.
If provided, the Kima Backend will use the Explorisk url defined in the ENV var XPLORISK_URL
to get the risk score for the origin and target user addresses. If the score is anything other than low
it will respond with a 500
error.
PLEASE READ THE ENTIRETY OF THIS "DISCLAIMER" SECTION CAREFULLY. NOTHING HEREIN CONSTITUTES LEGAL, FINANCIAL, BUSINESS OR TAX ADVICE AND YOU ARE STRONGLY ADVISED TO CONSULT YOUR OWN LEGAL, FINANCIAL, TAX OR OTHER PROFESSIONAL ADVISOR(S) BEFORE ENGAGING IN ANY ACTIVITY IN CONNECTION HEREWITH. NEITHER DIVERSIFI TECHNOLOGIES LTD (THE COMPANY), ANY OF THE PROJECT CONTRIBUTORS (THE KIMA TEAM) WHO HAVE WORKED ON KIMA (AS DEFINED HEREIN) OR PROJECT TO DEVELOP KIMA IN ANY WAY WHATSOEVER, ANY DISTRIBUTOR AND/OR VENDOR OF $KIMA TOKENS (OR SUCH OTHER RE-NAMED OR SUCCESSOR TICKER CODE OR NAME OF SUCH TOKENS) (THE DISTRIBUTOR), NOR ANY SERVICE PROVIDER SHALL BE LIABLE FOR ANY KIND OF DIRECT OR INDIRECT DAMAGE OR LOSS WHATSOEVER WHICH YOU MAY SUFFER IN CONNECTION WITH ACCESSING THE PAPER, DECK OR MATERIAL RELATING TO $KIMA (THE TOKEN DOCUMENTATION) AVAILABLE ON THE WEBSITE AT HTTPS://WWW.KIMA.NETWORK/ (THE WEBSITE, INCLUDING ANY SUB-DOMAINS THEREON) OR ANY OTHER WEBSITES OR MATERIALS PUBLISHED OR COMMUNICATED BY THE COMPANY OR ITS REPRESENTATIVES FROM TIME TO TIME.
This document is created by Kima for educational and informational purposes only. The contents of this document are not a financial promotion. None of the information or analyses presented are intended to form the basis for any investment decision and no specific recommendations are intended. Therefore, none of the contents of this document serve as an invitation or inducement to engage in any sort of investment activity. This document is not intended to be a prospectus, solicitation, inducement or oering for investment or the sale or issuance of securities or any interests or assets.
By accessing the Token Documentation or the Website (or any part thereof), you shall be deemed to represent and warrant to the Company, the Distributor, their respective affiliates, and the Kima team as follows:
(a) in any decision to acquire any $KIMA, you have not relied and shall not rely on any statement set out in the Token Documentation or the Website;
(b) you shall at your own expense ensure compliance with all laws, regulatory requirements and restrictions applicable to you (as the case may be);
(c) you acknowledge, understand and agree that $KIMA may have no value, there is no guarantee or representation of value or liquidity for $KIMA, and $KIMA is not an investment product nor is it intended for any speculative investment whatsoever;
(d) none of the Company, the Distributor, their respective affiliates, and/or the Kima team shall be responsible for or liable for the value of $KIMA, the transferability and/or liquidity of $KIMA and/or the availability of any market for $KIMA through third parties or otherwise; and
(e) you acknowledge, understand and agree that you are not eligible to participate in the distribution of $KIMA if you are a citizen, national, resident (tax or otherwise), domiciliary and/or green card or permanent visa holder of a geographic area or country (i) where it is likely that the distribution of $KIMA would be construed as the sale of a security (howsoever named), financial service or investment product and/or (ii) where participation in token distributions is prohibited by applicable law, decree, regulation, treaty, or administrative act (including without limitation the United States of America, Canada, and the People's Republic of China); and to this effect you agree to provide all such identity verification document when requested in order for the relevant checks to be carried out.
The Company, the Distributor and the Kima team do not and do not purport to make, and hereby disclaims, all representations, warranties or undertaking to any entity or person (including without limitation warranties as to the accuracy, completeness, timeliness, or reliability of the contents of the Token Documentation or the Website, or any other materials published by the Company or the Distributor). To the maximum extent permitted by law, the Company, the Distributor, their respective affiliates and service providers shall not be liable for any indirect, special, incidental, consequential or other losses of any kind, in tort, contract or otherwise (including, without limitation, any liability arising from default or negligence on the part of any of them, or any loss of revenue, income or profits, and loss of use or data) arising from the use of the Token Documentation or the Website, or any other materials published, or its contents (including without limitation any errors or omissions) or otherwise arising in connection with the same. Prospective acquirors of $KIMA should carefully consider and evaluate all risks and uncertainties (including financial and legal risks and uncertainties) associated with the distribution of $KIMA, the Company, the Distributor and the Kima team.
$KIMA is a functional multi-utility token which will be used as the medium of exchange between participants on Kima in a decentralised manner. The goal of introducing $KIMA is to provide a convenient and secure mode of payment and settlement between participants who interact within the ecosystem on Kima without any intermediaries such as centralised third party entity/institution/credit. It is not, and not intended to be, a medium of exchange accepted by the public (or a section of the public) as payment for goods or services or for the discharge of a debt; nor is it designed or intended to be used by any person as payment for any goods or services whatsoever that are not exclusively provided by the issuer. $KIMA does not in any way represent any shareholding, ownership, participation, right, title, or interest in the Company, the Distributor, their respective affiliates, or any other company, enterprise or undertaking, nor will $KIMA entitle token holders to any promise of fees, dividends, revenue, profits or investment returns, and are not intended to constitute securities in the British Virgin Islands, Singapore or any relevant jurisdiction. $KIMA may only be utilised on Kima, and ownership of the same carries no rights, express or implied, other than the right to use $KIMA as a means to enable usage of and interaction within Kima. The secondary market pricing of $KIMA is not dependent on the effort of the Kima team, and there is no token functionality or scheme designed to control or manipulate such secondary pricing.
Further, $KIMA provides the economic incentives which will be distributed to encourage users to exert efforts towards contribution and participation in the ecosystem on Kima, thereby creating a mutually beneficial system where every participant is fairly compensated for its efforts. $KIMA is an integral and indispensable part of Kima, because without $KIMA, there would be no incentive for users to expend resources to participate in activities or provide services for the benefit of the ecosystem. Given that additional $KIMA will be awarded to a user based only on its actual usage, activity and efforts made on Kima and/or proportionate to the frequency and volume of transactions, users of Kima and/or holders of $KIMA which did not actively participate will not receive any $KIMA incentives.
$KIMA are designed to be utilised, and that is the goal of the $KIMA distribution. In particular, it is highlighted that $KIMA:
(a) does not have any tangible or physical manifestation, and does not have any intrinsic value/pricing (nor does any person make any representation or give any commitment as to its value);
(b) is non-refundable, not redeemable for any assets of any entity or organisation, and cannot be exchanged for cash (or its equivalent value in any other digital asset) or any payment obligation by the Company, the Distributor or any of their respective affiliates;
(c) does not represent or confer on the token holder any right of any form with respect to the Company, the Distributor (or any of their respective affiliates), or their revenues or assets, including without limitation any right to receive future dividends, revenue, shares, ownership right or stake, share or security, any voting, distribution, redemption, liquidation, proprietary (including all forms of intellectual property or licence rights), right to receive accounts, financial statements or other financial data, the right to requisition or participate in shareholder meetings, the right to nominate a director, or other financial or legal rights or equivalent rights, or intellectual property rights or any other form of participation in or relating to Kima, the Company, the Distributor and/or their service providers;
(d) is not intended to represent any rights under a contract for differences or under any other contract the purpose or intended purpose of which is to secure a profit or avoid a loss;
(e) is not intended to be a representation of money (including electronic money), payment instrument, security, commodity, bond, debt instrument, unit in a collective investment or managed investment scheme or any other kind of financial instrument or investment;
(f) is not a loan to the Company, the Distributor or any of their respective affiliates, is not intended to represent a debt owed by the Company, the Distributor or any of their respective affiliates, and there is no expectation of profit nor interest payment; and
(g) does not provide the token holder with any ownership or other interest in the Company, the Distributor or any of their respective affiliates.
Notwithstanding the $KIMA distribution, users have no economic or legal right over or beneficial interest in the assets of the Company, the Distributor, or any of their affiliates after the token distribution.
For the avoidance of doubt, neither the Company nor the Distributor deals in, or is in the business of buying or selling any virtual asset or digital payment token (including $KIMA). Any sale or distribution of tokens would be performed during a restricted initial period solely for the purpose of obtaining project development funds, raising market/brand awareness, as well as community building and social engagement; this is not conducted with any element of repetitiveness or regularity which would constitute a business.
To the extent a secondary market or exchange for trading $KIMA does develop, it would be run and operated wholly independently of the Company, the Distributor, the distribution of $KIMA and Kima. Neither the Company nor the Distributor will create such secondary markets nor will either entity act as an exchange for $KIMA.
The information in this document is given in good faith, but no warranties, guarantees or representations are made by Kima with regard to the accuracy, completeness or suitability of the information presented. Kima expressly disclaims any and all responsibility, and Recipients expressly waive any claim, for any direct or consequential loss or damages of any kind whatsoever (whether foreseeable or not) arising directly or indirectly from: (i) reliance on any information contained in this document or any information which is made available in connection with any further inquiries, (ii) any error, omission, or inaccuracy in any such information, (iii) any action resulting therefrom or (iv) usage or acquisition of products. This disclaimer applies notwithstanding any negligence, default or lack of care. Kima may update, modify or correct this document at its sole discretion, without notice or incurring any obligation or liability to any recipient hereof. This document is strictly confidential and intended to be viewed exclusively by those recipients (“Recipient/s”) specifically authorized by Kima. This document shall not bind, convey any rights, obligations, terms, performance, covenants, representations or warranties on behalf of Kima to Recipient, or create any relationship between Kima and any Recipient or any other party.
Nothing in the Token Documentation or the Website constitutes any offer by the Company, the Distributor, or the Kima team to sell any $KIMA (as defined herein) nor shall it or any part of it nor the fact of its presentation form the basis of, or be relied upon in connection with, any contract or investment decision. Nothing contained in the Token Documentation or the Website is or may be relied upon as a promise, representation or undertaking as to the future performance of Kima. The agreement between the Distributor (or any third party) and you, in relation to any distribution or transfer of $KIMA, is to be governed only by the separate terms and conditions of such agreement.
Welcome to Kima Foundation’s website (the “Site”). We are committed to protecting your privacy and ensuring that your personal data is handled in a safe and responsible manner. This Privacy Policy explains how we collect, use, disclose, and safeguard your personal data in compliance with Singapore’s Personal Data Protection Act 2012 (PDPA) and other applicable regulations.
This Privacy Policy applies to all personal data collected by Kima Foundation through the Site, including any other digital platforms, tools, or services operated by us. By using our Site, you agree to the collection, use, and disclosure of your personal data as described in this Privacy Policy.
We may collect personal data from you in the following ways:
Directly from You: When you register, subscribe to our newsletter, participate in surveys, or contact us through our Site.
Automatically: When you interact with our Site, we may collect data such as IP addresses, browser type, operating system, referring URLs, and usage patterns through cookies and other tracking technologies.
Third Parties: We may receive personal data about you from third parties, such as social media platforms, if you use these services to interact with us.
Personal Identifiable Information (PII): Name, email address, contact number, and other details you provide.
Technical Data: IP address, browser type, device information, and log data.
Usage Data: Information about how you use our Site, including pages viewed and links clicked.
We may use your personal data for the following purposes:
Service Delivery: To provide you with information, products, or services that you request from us.
Communication: To send you newsletters, updates, and other information related to our activities, events, or promotional offers.
Analytics: To monitor and analyze usage trends, user behavior, and Site performance to improve our services.
Compliance: To comply with legal obligations, resolve disputes, enforce our terms of service, and protect our rights.
We may disclose your personal data to the following parties:
Service Providers: Third-party vendors that assist us in operating our Site, conducting our business, or providing services to you, subject to strict confidentiality agreements.
Legal Authorities: If required by law, or in response to valid requests by public authorities (e.g., a court or government agency).
Business Transfers: In connection with any merger, sale of assets, financing, or acquisition of all or a portion of our business by another entity.
We take reasonable steps to protect your personal data from unauthorized access, use, disclosure, alteration, or destruction. Our security measures include encryption, firewalls, secure access controls, and regular security assessments.
We will retain your personal data only for as long as it is necessary to fulfill the purposes for which it was collected, or as required by law. Once the data is no longer needed, we will securely delete or anonymize it.
Under the PDPA, you have the right to:
Access: Request access to the personal data we hold about you.
Correction: Request corrections to any inaccurate or incomplete personal data.
Withdrawal of Consent: Withdraw your consent to our use of your personal data at any time.
Data Portability: Request a copy of your personal data in a commonly used format.
Our Site uses cookies and similar technologies to enhance user experience, analyze Site performance, and deliver personalized content. You can control the use of cookies through your browser settings, but disabling cookies may affect your ability to use certain features of our Site.
Our Site may contain links to third-party websites. We are not responsible for the privacy practices or content of these sites. We encourage you to review the privacy policies of any third-party websites you visit.
We may update this Privacy Policy from time to time to reflect changes in our practices, legal requirements, or operational needs. The updated policy will be posted on our Site with the effective date, and we encourage you to review it periodically.
If you have any questions, concerns, or feedback regarding this Privacy Policy or our data protection practices, please contact our Data Protection Officer at:
This Privacy Policy is governed by and construed in accordance with the laws of Singapore. By using our Site, you consent to the collection and use of your personal data as described in this Privacy Policy.
Welcome to Kima Foundation (the “Foundation”). These Terms and Conditions (the “Terms”) govern your access to and use of our website (the “Website”) and any associated services provided by the Foundation (collectively, the “Services”). By accessing or using the Website or the Services, you agree to comply with and be bound by these Terms. If you do not agree with these Terms, you should not use the Website or Services.
You must be at least 18 years old to use our Services. By using the Website, you represent and warrant that you are of legal age to form a binding contract with the Foundation and meet all eligibility requirements. If you do not meet these requirements, you must not access or use the Website.
The Website and Services are provided solely for your personal, non-commercial use, and may not be used for any other purpose without our prior written consent.
When using the Website and Services, you agree not to:
Violate any applicable laws or regulations.
Infringe on the rights of others, including intellectual property rights.
Engage in any conduct that is fraudulent, abusive, or otherwise inappropriate.
Introduce any viruses, malware, or other harmful software to the Website.
Attempt to gain unauthorized access to any part of the Website, including any restricted areas or user accounts.
You may be required to register an account to access certain features of the Website. You agree to provide accurate and complete information during the registration process and to update such information as necessary. You are responsible for maintaining the confidentiality of your account credentials and for all activities that occur under your account.
All content, materials, and intellectual property available on the Website, including but not limited to text, graphics, logos, icons, and software, are owned by the Foundation or its licensors and are protected by copyright, trademark, and other applicable laws.
The Foundation grants you a limited, non-exclusive, non-transferable, and revocable license to access and use the Website and Services for personal, non-commercial use, in accordance with these Terms.
You may not modify, reproduce, distribute, create derivative works from, or otherwise exploit any content, materials, or intellectual property available on the Website without the Foundation’s prior written consent.
You may be permitted to submit or post content, such as comments or other materials, on the Website (“User-Generated Content”). You are solely responsible for the User-Generated Content you submit, and you represent and warrant that you have all necessary rights to do so.
By submitting User-Generated Content, you grant the Foundation a worldwide, non-exclusive, royalty-free, perpetual, and transferable license to use, reproduce, modify, adapt, publish, and display such content in any form, media, or technology now known or later developed.
The Foundation reserves the right to remove any User-Generated Content that violates these Terms or is otherwise objectionable, without prior notice.
Your privacy is important to us. Please review our Privacy Policy, which explains how we collect, use, and protect your personal information. By using the Website, you agree to the collection and use of your personal information in accordance with our Privacy Policy.
The Website and Services are provided on an “as-is” and “as available” basis, without any warranties of any kind, either express or implied. The Foundation disclaims all warranties, including but not limited to, implied warranties of merchantability, fitness for a particular purpose, and non-infringement.
To the fullest extent permitted by applicable law, the Foundation shall not be liable for any direct, indirect, incidental, consequential, or punitive damages arising out of or in connection with your use of the Website or Services, even if the Foundation has been advised of the possibility of such damages.
You agree to indemnify, defend, and hold harmless the Foundation, its officers, directors, employees, agents, and affiliates from and against any and all claims, liabilities, damages, losses, and expenses, including reasonable attorneys’ fees, arising out of or in any way connected with your use of the Website or Services, or your violation of these Terms.
The Foundation reserves the right to suspend or terminate your access to the Website or Services at any time, for any reason, and without prior notice. Upon termination, all provisions of these Terms that by their nature should survive will continue to apply, including but not limited to, ownership provisions, warranty disclaimers, and limitations of liability.
These Terms shall be governed by and construed in accordance with the laws of Singapore, without regard to its conflict of law principles.
You agree to submit to the exclusive jurisdiction of the courts of Singapore for any disputes arising out of or relating to these Terms or your use of the Website or Services.
The Foundation reserves the right to modify these Terms at any time. Any changes will be effective immediately upon posting on the Website. Your continued use of the Website or Services following the posting of changes constitutes your acceptance of the revised Terms. It is your responsibility to review the Terms regularly.
If any provision of these Terms is found to be invalid or unenforceable, the remaining provisions will continue in full force and effect.
These Terms, along with our Privacy Policy, constitute the entire agreement between you and the Foundation with respect to your use of the Website and Services, and supersede any prior agreements or understandings.
If you have any questions about these Terms, please contact us at:
In order for Kima to move tokens on behalf of the user an on chain approval needs to happen. An approval has 3 components:
Owner address: User
Spender address: Kima Pool
Total amount: origin token amount plus gas fees
Chain | Type | Pool Address |
---|---|---|
You can also obtain the pool addresses from the TSS endpoint. Use the type
in the chart above to determine which one to use.
GET https://api-testnet.kima.finance/kima-finance/kima-blockchain/kima/tss_pubkey
Success Response:
tssPubkey
(array object)
tssPubKey: string
ecdsa: string
eddsa: string
reserved: string
pagination
(object)
nextKey: string | null
total: number
Note: for Tron, the hex esdsa
address must be converted to a base 58 checksum address.
To calculate the total amount, the service (gas) fees are needed. Kima has an endpoint that estimates the service and gas fees for a given chain.
GET https://fee.kima.finance/fee/{chainName}
Example: https://fee.kima.finance/fee/AVX
Response
result: boolean
fee: string
: dash delimited list <Amount USD>-<Timestamp>-<Amount Crypto>
Amount USD: the service fee amount in USD
Timestamp: Javascript timestamp in milliseconds
Amount Crypto: the fee amount in the native token of the given chain- i.e. AVAX
See the short names in the Supported blockchains section.
To calculate the total service fee requires querying for the fees on both the source and target chains using the endpoint described above. There are a couple exceptions:
The fee is ZERO in the following cases as it is handled elsewhere:
Source or target chain is FIAT
Target chain is BTC
There is a constant value when the source chain is BTC
:
Source chain is BTC: 0.0004 BTC
Since the source and target chains can be different, the USD amount fee amounts should be used and added together. The user will pay the fee using the source token. Remember, even stable coins are not exactly one USD, so the USD fee amount should be converted into the source token amount using the USD price of the source token.
Putting it all together, the following is a typescript code example that queries the endpoint and calculates the total service fee.
Once all the info has been collected it’s time to make the on chain call. The exact details of how this is done depends on the origin chain and library used.
Example code using typescript and Viem
This snippet uses the getServiceFee()
function mentioned above. The getClientsForChain()
and getPoolAdressesForChain()
would be utility functions defined elsewhere.
You can add the widget to your React project simply by running:
yarn add @kimafinance/kima-transaction-widget
There are several configuration options, which we will describe below.
Note that if you are using a later version of webpack
(>= 5), you will need to polyfill node core modules using react-app-rewired
.
You can resolve this by adding a file at the root of your project named config-overrides.js
. Paste the following content into the file:
Copy
If you are creating your application from scratch and assuming you are using TypeScript, create a file App.tsx
and an Index.tsx
.
Let's demonstrate the Kima bridging function first, which allows your users to transfer value between chains.
Into your App.tsx
paste:
Copy
Create a simple index.css
with the following code:
Copy
In your Index.tsx
paste the following code:
Copy
Start your app with yarn start
and you should see the Kima modal on localhost:3000
.
It should look something like this:
The example above provides the most basic example of the bridge functionality, with generic styling and configuration.
Note that it makes the assumption that you also have the development server running on port 3001.
Next, try the Kima Transaction Widget's payment scenario.
Replace the code in App.tsx
with the following:
Copy
You should see a page that looks like this:
Note that in the above example, we have configured the title and payment title text, along with the colour. These are just some of the configuration options we describe below.
There are numerous ways to configure the modal for your own preferences and the look and feel of your dApp, which you can do via the following props:
Theme
The Theme prop allows you not only to switch between light and dark mode but also to specify your font colour and style and background colour:
Copy
Title
The Title prop enables you to give the widget whatever title you want and can be configured for each step of the widget.
Required: false
Type: TitleOption:
Copy
Payment Title
The PaymentTitle prop allows you to optionally set the title that appears on the payment screen if you are using the Payment component.
Required: false
Type: PaymentTitleOption
Copy
HelpUrl
This is a string, which should be to your own help documentation or FAQ. If unset, the link will default to Kima's help documentation.
Required: false
Type: string
Used to specify the scenario of kima-transaction-widget. Available modes are payment, bridget and status.
Required: true Type: ModeOptions Payment and bridge scenario for the purpose of widget, status mode is for tracking status of specific transaction of kima widget. To use status mode, txId prop should be determined export declare enum ModeOptions { payment = 'payment', bridge = 'bridge', status = 'status' }
TransactionOption
Within the payment scenario, you may optionally want to preset the chain and wallet address where the payment should go, as well as the payment amount.
Required: false
Type: TransactionOption
Copy
kimaBackendUrl
This is one of the few props that is mandatory to set, because this specifies Kima's transaction back end URL. In the bridge example above, we have made the assumption that you have the back end server running locally on localhost:3001
.
Required: true
Type: string
kimaNodeProviderQuery
Again, this is mandatory because this is used to specify the REST API URL for interactions with the Kima blockchain.
Required: true
Type: string
kimaExplorer
This is used to specify the URL of Kima's block explorer in the environment you are using. The widget needs this to provide updates to the status screen, as well as allowing users to link to their transactions to view progress.
It is not mandatory, but it is highly recommended.
Required: false Type: string Default: explorer.kima.finance
txID
Similarly, this is used to show users the progress of their transactions. It is not mandatory and is used only for status mode.
Required: false
Type: boolean
Default: -1
useFIAT
Used to specify whether users should be given the option to transact with fiat currency.
Required: false
Type: boolean
Default: false
autoConnect
This prop is optional and allows you to define whether connection of wallets such as MetaMask should be automatic or manual.
Required: false
Type: boolean
Default: false
Used to provide the widget with wallet connection and chain switching functionality.
walletConnectProjectId
Required: false
Type: string
networkOption
Used to specify the network type.
Required: false
Type: NetworkOptions
Default: NetworkOptions.testnet
If you want to dive deeper, you can find more technical detail in the two papers that are linked below.
Once the transaction has been submitted to the Kima Transaction Backend, you’ll want to display the transaction progress in the frontend. There are 2 GraphQL queries on the Kima subgraph for this purpose.
Kima Subgraph url: https://graphql.kima.finance/v1/graphql
Here is a code snippet for regular transactions using plain fetch
. See the docs for your favorite graphql client for constructing queries.
For liquidity pool transactions:
To exercise your rights, please contact our Data Protection Officer (DPO) at .
Kima Foundation 3 Fraser street #04-23a, Duo Tower, Singapore
Kima Foundation 3 Fraser street #04-23a, Duo Tower, Singapore .
The easiest way to see the widget working, including the workaround above, is to check out .
Used to specify the WalletConnect project id. A default value is provided, but you can specify your own. To create a project, visit and sign up for a free account (WalletConnect is now called Reown).
EVM
ecdsa
0x9a721c664f9d69e4da24f91386086fbd81da23c1
Solana
eddsa
5tvyUUqPMWVGaVsRXHoQWqGw6h9uifM45BHCTQgzwSdr
Tron
ecdsa (base58)
t3JFtrr3JVedB1oH6v1AUNSqqFZk4E5U
Web3 and crypto are currently at an inflection point which many technologies have failed to cross in the past. That is the main problem from which all the symptoms arise:
Complicated experience: New users coming into crypto and Web3 are forced to quickly understand a slew of technically intensive terms and methods just to perform simple operations that are essential for using the new products this technology enables.
Weak security: The current mechanisms and solutions are flawed. Despite blockchains being a superior solution for digital assets, blockchain-based are very vulnerable in transit between blockchain ecosystems. This is because these solutions are mostly built on technology incompatible with this purpose.
Expensive compliance: International financial regulations exist to protect consumers. But for the innovators building the future of finance, protection took a back seat to inclusivity and progress. This made compliance an expensive patch instead of an integrated solution.
Anyone can use Kima’s SDK to add functionalities to their dApps using Kima’s settlement layer, and thanks to its novel approach to infrastructure design, maximum security is already built into the platform, with opt-in compliance allowing dApps to expand into the preexisting monetary system and vice-versa.
dApp builders use Kima to onboard users from any chain or no chain at all, and let Kima handle the technical or security implications, allowing builders to focus on providing a better product for more users.
Institutions wishing to implemnt Web3s use Kima to extend their solutions to additional chains without spending resources on compliance or technological feasibility,
Web2 developers use Kima’s payment functionality to easily integrate web3 solutions into their existing products, joining the next evolution of the world wide web.
Kima enables transfers of assets between different blockchain networks and bank accounts, using a purpose-specific chain that transacts directly with the source and target blockchains/banks. This means that sensitive funds are secured in transit and are not kept on experimental technologies prone to exploits such as smart contracts, but rather on tested solutions - such as TSS and SGX - that have endured the rigours of real-world use.
Kima solves the problem in any situation where funds need to be sent seamlessly from one network to another without the user having to exit the application and go elsewhere to bridge funds. For example, a user may have funds on Ethereum but want to purchase from an eCommerce site which uses Polygon or Avalanche, or to add liquidity to a liquidity pool on a different chain. Removing the friction from the payment or bridging process and enabling a simple in-app experience is crucial to onboarding more users to the Web3 ecosystem. See Use Cases for a fuller description of all the things you can do with Kima.
Kima takes a simpler approach to settlement security: If it’s not there it can’t be hacked. This means no smart contracts, no oracles, no external relayers to trust that can be compromised. So how are funds moved without smart contracts? The technical solution is comprised of three parts:
External accounts EOAs (Externally Owned Accounts) are native blockchain wallets acting as pools. The security benefits of this are immense: No need for smart contracts on every blockchain, You can’t DDoS a wallet, and everything related to cross-contract messaging is non-existent so this is not an applicable attack surface.
TSS and Trusted execution environments Using TSS and Intel SGX technology, keys are shared between different actors without them having direct access to these keys. This means we can allow more people to run these nodes and not be worried about keys being compromised.
Efficient Liquidity management High TVL numbers only tell part of the story. Liquidity protocols need to balance between the liquidity pools to ensure a high service level. In other words, it’s not only about how much money is stored, it’s also about distributing the liquidity in a way that will serve demand in the most effective way. Kima’s Liquidity Management (LiMa) algorithm manages supply and demand and maintains equilibrium using financial incentives.
Fiat Support To allow for integration between the old and new monetary systems, Kima also employs an opt-in compliance system on the protocol level, allowing decentralized solutions access to legacy systems like Fiat payments, Stocks and Bonds. This layer will perform all the necessary checks, including KYC, AML and KYT verifications to provide a compliant record that satisfies regulatory requirements.
Anyone building in Web3 can see the challenges that Web3 compatibility brings. Instead of perceiving these challenges as independent problems with no relation to each other, Kima understands that these are symptoms of the same problem.
Kima’s solution is the first compatibility layer that solves the problem, instead of treating the various symptoms that arise from it.
You can see the Kima Demo App here and read about how to use it here.
See the current list of supported networks here.
You can find the Kima Whitepaper here.
We have quick-start instructions for installing a validator node in these pages.
The widget can be embedded into any React application, including NextJS. We do not currently support Vue or Angular applications. However, regardless of the framework you are using, you will be able to use the Kima back end and integrate your front end that way instead. Read the instructions here.