At the end of Q2 Cartesi released a public alpha version of Staking Delegation on the Ropsten test network with the main objective of receiving community feedback. Since then the team has implemented several improvements over the original design, based on the collected data from the alpha stage and the participation of our community — huge thank you to everyone who provided their suggestions!
Today we are reaching a beta phase of Staking Delegation on Ropsten test network as a major step towards a mainnet release in October. Among the improvements we can highlight the following:
- Improved smart contract design, which makes it easier to audit and less prone to bugs;
- Reduced gas costs in all transactions for both pool operators and pool users;
- More flexibility for commission configuration;
- Replaced the Uniswap V3 price oracle with a Chainlink price oracle for improved reliability;
- New noether beta release, with support of new pool implementation
- Several improvements to UI/UX, including:
- New toolbar;
- New dark mode;
- UI for metamask transaction feedback;
- List of pools user is participating in;
- UX improvements to pool staking;
- New metric for pool block production;
- Loading of more blocks per page in blocks page;
- New pool management page.
Check it out now: https://preview.explorer.cartesi.io!
If you need a review of our delegated staking system, read the announcement article.
The code for the smart contracts has been broken down into smaller parts which makes the auditing process much easier and reduces the chances of bugs that could compromise staked CTSI. In addition, external and internal auditing are underway and the contracts will be reviewed thoroughly before our mainnet release. The test coverage has been greatly improved as well. A detailed explanation of how the contracts works are published in the code repository
The new contract design requires users to stake their tokens in a two-step process. The first step is to deposit tokens into a selected pool. The second step is to stake those deposited tokens after 6 hours of maturation. This maturation period is required as a security measure, to prevent a prediction exploit. The steps involved will be depicted in the following sections.
Due to a simpler smart contract design, the overall gas costs of the transactions have been reduced greatly, even with the requirement of an additional transaction (deposit).
The table below shows the difference of some average gas costs (in units of gas) of the alpha version vs the beta version:
Lower costs are beneficial for both pool operators and pool users. The lower the fee is, the lower the commission that is required to be taken by the pool operator, thus there will be higher rewards left for users.
The community expressed concern about having an immutable commission configuration in the pool. A discussion about a more flexible model was the subject of a CIP. We decided to implement a model that allows pool operators to increase the fee only once a week and have it limited to a maximum increase. A flat rate commission pool can increase the value up to 5 percentage points, and a gas tax-based commission pool can increase the value up to 20.000 gas.
We believe the chosen model is simple enough and meets the expectations of pool operators while preserving the interest of pool users.
The gas tax-based commission model uses two oracles to calculate the commission taken from every block reward: a gas price oracle and a CTSI price oracle.
The gas price oracle used was already the Chainlink fast gas feed.
We started by using a Uniswap V2 CTSI price oracle, then migrated to a Uniswap V3 price oracle.
We decided to switch to a newly deployed ETH/CTSI Chainlink price feed, that consolidates prices from several exchanges, both centralized and decentralized, improving the information reliability, instead of trusting a single dex (Uniswap).
We released a new beta version of noether, with support for the new pool implementation. Noether will automatically rebalance the pool as needed, checking if it’s necessary to do so every 30 seconds.
The process to set up the node is the same as described in the previous articles, the only difference is the Docker image version. For this release use the image below. New beta versions may be released during the test phase.
The UI code has been completely refactored, improving maintainability and performance. Several improvements have been implemented.
The new header bar shows the connected Metamask user.
We have a new dark-mode UI!
List of user pools
The video below demonstrates the steps to stake to a pool:
- Allowance: authorizes the pool to move CTSI out of the user’s wallet
- Deposit: transfer CTSI from user wallet to the pool
- Stake: after 6 hours the user can stake the deposited tokens
Pool Production rate
We included a new metric for pools that will help users to decide which pool to choose.
The block production rate is the average interval between blocks produced by the pool considering his last 10 blocks. This reflects on how often the pool users receive their rewards.
The number of blocks loaded by default in the blocks page has been increased to 100 blocks. This improves the visualization of the blocks chart, which shows the floating block difficulty.
Pool Management Page
This beta release precedes the mainnet release. Everyone is invited to create or join pools in the Ropsten network for this test phase. The more data and feedback we collect helps us make our major step towards mainnet release. As we did in the alpha phase, a CTSI faucet smart contract is available in the footer of the explorer. It sends 100.000 fake CTSI to anyone who wants to try the system.
Mainnet is expected to launch in October. We will start with some selected staking partners, followed by opening up the system for anyone to create pools in a fully decentralized way.