Col-4 upgrade governance proposal
- Terraform labs
- September 3, 2020
Context
Terra Core is software that all nodes and validators should run in order to participate in Terra’s network. Terraform Labs has upgraded Terra Core to Columbus-3 on December 2019, which included a number of changes (https://medium.com/terra-money/columbus-3-testnet-launch-announcement-9ffe33141026).
This proposal aims to upgrade Terra Core to Columbus-4, the next key evolution of the protocol. The three key objectives of this proposal is to:
- Give a high level overview of the Columbus-4 update to Terra’s users, developers and validators
- Create an on-chain governance proposal to initiate a chain upgrade from Columbus-3 to Columbus-4
- Create an open discussion regarding key changes of Columbus-4
Main Changes
- CosmWasm Integration
- Enables Smart Contract functionality on Terra’s blockchain. With Columbus-3 or earlier, adding new features to Terra always involved adding a new Cosmos SDK module to Terra Core itself. The CosmWasm Smart Contract engine integrates standard WebAssembly runtimes (Wasmer) with Cosmos-SDK, allowing anyone to upload and execute Smart Contracts. This opens up the ability for developers to create decentralized applications that leverage the unique advantages of the Terra blockchain, such as fast finality, native stablecoins, oracle prices, and on-chain swaps.
- This adds 5 new message types:
MsgStoreCode
,MsgInstantiateContract
,MsgExecuteContract
,MsgMigrateContract
andMsgUpdateContractOwner
. - Pull request : https://github.com/terra-project/core/pull/335
- Oracle Optimization
- To resolve issues found with Columbus-3’s oracle system, such as front-running & incorrect cross exchange rates, the oracle module will calculate cross exchange rate (forex rate) internally and run a vote. We will rely on voting weight calculations to decide a standard denomination for oracles.
- Additionally, oracle vote messages are aggregated, such that votes for all oracle denominations are compressed to single prevote and vote messages each. This prevents the message bus being clogged from separate prevote and vote objects per denom.
MsgAggregateExchangeRateVote
andMsgAggregateExchangeRatePrevote
message types are newly created. Agora discussion: (TIP) Oracle optimization - SPEC - Pull request : https://github.com/terra-project/core/pull/325
MsgSwapSend
- Add a new type of Msg, which automatically swaps tokens to a specified denomination and then sends it to the recipient. For
MsgSwapSend
, tax is charged to the sender.MsgSwapSend
improves user experience for a variety of cases, as there is no need to go through two separateMsgSwap
andMsgSend
transactions to receive payments in a specified currency.Use cases forMsgSwapSend
includes:- International payments
- Cross boarder transactions
- Formal proposal : Proposal to create MsgSwapSend
- Pull request : https://github.com/terra-project/core/pull/348
- Mint Module
- Add a mint module to Terra Core. This module may allow inflation of Luna, however initial inflation will be 0.
- MsgAuthorization Subkey Function - (
MsgSend
,MsgSwap
)
- Add
MsgAuthorization
(subkey function), which allows users to delegate authority over accounts. With Columbus-4, delegated subkeys may only sendMsgSend
andMsgSwap
transactions. Subkey functions allow various types of new services including:- delegating user account permissions, which can alleviate the hassle of managing user accounts and keys. Imagine a user new to cryptocurrency having their account managed by a trusted relative that understands the inner workings of key management.
- granular management of actions from delegated permissions, such as setting specific transaction counts and account limits.
- Pull request : https://github.com/terra-project/core/pull/352
- Add Burn Address
- Add a Burn address.
- If a user sends tokens to a Burn address, the Burn address automatically burns tokens at the next block.
- Pull request : https://github.com/terra-project/core/pull/343
- SDK Launchpad
- Launchpad is a stabilized version of the Cosmos SDK before Stargate, which will introduce multiple new features and changes - including IBC and Protobuf migration. Columbus-4 bumps its base SDK version to Launchpad (v0.39.1), preparing Terra Core for even more exciting features to come.
- Introductory post by Cosmos: https://blog.cosmos.network/launchpad-a-pre-stargate-stable-version-of-the-cosmos-sdk-e0c58d8c4e24, Cosmos SDK v0.39.1 Release Notes: https://github.com/cosmos/cosmos-sdk/releases/tag/v0.39.1
- Increasing the value of
MaxEntries
- Cosmos SDK defines a governance parameter under the
staking
module that limits how many unbonding entries (unique delegator-to-validator combination pair) can exist at the same time. Currently on Terra Core, this value is set to 7. - We are proposing to effectively remove this limit by setting the governance parameter under
KeyMaxEntries
to be 100. This is for generating and ensuring fungibility of bLuna, which is a liquidated representation of a Luna staking position used for Anchor. - Reference: https://github.com/cosmos/cosmos-sdk/blob/master/x/staking/spec/08_params.md
- Terra <> Luna minspread value
- Change Terra<>Luna swap’s minspread value from 2% to 0.5%.
- Formal proposal :Proposal to decrease minspread of Terra <> Luna swaps
- Terra <> Luna base_pool value
- Change Terra<>Luna swap’s base_pool value from 250,000 SDR to 625,000 SDR
- Formal proposal : Proposal to increase base_pool value
Notes and/or Future Considerations
- An on-chain governance proposal will follow.