Neutron Contracts
Smart contract is the core component of Cosmos LSD Stack, and comprised of two contracts: StakeManager and LSD token. Among them, StakeManager takes responsible for handling staking logic, validator set management, reward distribution, and withdrawals, and Lsd token is a cw20_base compatible contract, users get after stake and will be burnt after unstake.
StakeManager
StakeManager contract holds all LSD functionalities, it consists with many pools, each pool represents a individual project party associated with an admin account who is privileged to config pool’s parameters.
Project party
register_pool: Create pool ICA and withdraw ICA, and bind interchain routes e.g. channel, portinit_pool: Pool should be initiated with validator set, fee receiver, commission rate and lsd token infoconfig_pool: Update pool configs such as lsm_support, era_seconds, commission fee, fee receiver etc.add_pool_validators: Adds validators to the poolrm_pool_validator: Removes validator from the pool.pool_update_validator: Updates validator information for the pool.
User
stake:- Attached with wasm invocation, users can stake token and get LSD token from source chain by ibc transfer function
- Users can call smart contract directly in neutron chain to stake
stake_lsm: Users can stake their LSM to get LSD token avoiding 21 days unbonding periodunstake: Anyone who owns LSD token can call this function, LSD token will be burnt and users have to wait unbonding period of time to withdraw their assetswithdraw: When unstake become mature, users can withdraw
Stack
StaFi DAO can config stack parameters:
- default LSD token code id
- administrator address of stack
- entrusted pools: It is a great feature for project party who can rapidly run a LSD token without running its own relay service, StaFi DAO will run it instead. It is fully secure as all functions a relay needs to execute are permissionless.
Token Redemption
redeem_token_for_share: This is a permissionless method that is called in real-time via relay to redeem stake_lsm’s LST back to the original chain in exchange for corresponding shares.
New Era Process
- Characteristics: The new era process is permissionless, showcasing the decentralized nature of the Cosmos LSD Stack, allowing anyone to trigger the beginning of a new era. Each step in the process includes sufficient condition checks to prevent the contract from re-processing transactions or prematurely moving to subsequent steps.
- Conditions: The new era process can be triggered when a pool meets the conditions for starting a new era (i.e., reaching the time to start the next era).
- Processes and Functions:
era_update: Transfers an era’s stored tokens on the neutron chain to an account on the original chain through ICA and interchain transactions.era_stake: Handles staking, unstaking, and withdrawal transactions on the original chain.era_withdraw_collect: Collects rewards from the previous era into the pool ICA account in preparation for restake.era_restake: Restake rewards generated in the previous era.era_active: Handles the data changes caused by new stakes or unstakes in the new era process, calculates the new era’s rate, and initiates the new era.
- ICQ Query Frequency Adjustment: During the new era process, the contract will flexibly update the frequency of ICQ queries as needed to reduce the cost for ICQ relayers.
- When a Redelegate action occurs,
pool_update_validators_icqmust be executed to synchronize the contract content’s ICQ with the latest validator-related queries.
Native CosmWasm Contracts
Coming Soon, Stay tuned