Col-4 upgrade governance proposal

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

  1. 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 and MsgUpdateContractOwner .
  • Pull request : https://github.com/terra-project/core/pull/335
  1. 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 and MsgAggregateExchangeRatePrevote message types are newly created. Agora discussion: (TIP) Oracle optimization - SPEC
  • Pull request : https://github.com/terra-project/core/pull/325
  1. 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 separate MsgSwap and MsgSend transactions to receive payments in a specified currency.Use cases for MsgSwapSend includes:
    • International payments
    • Cross boarder transactions
  • Formal proposal : Proposal to create MsgSwapSend
  • Pull request : https://github.com/terra-project/core/pull/348
  1. Mint Module
  • Add a mint module to Terra Core. This module may allow inflation of Luna, however initial inflation will be 0.
  1. MsgAuthorization Subkey Function - ( MsgSend , MsgSwap )
  • Add MsgAuthorization (subkey function), which allows users to delegate authority over accounts. With Columbus-4, delegated subkeys may only send MsgSend and MsgSwap 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
  1. Add Burn Address
  1. SDK Launchpad
  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
  1. Terra <> Luna minspread value
  1. Terra <> Luna base_pool value

Notes and/or Future Considerations

  • An on-chain governance proposal will follow.
3 Likes

Pls update the links in 9 and 10 from quip to the forum :slight_smile:

Done! Thanks

Hi @EJ_Lee,

Is this proposal simply an agreement to include the 10 main changes at a high overview? I’m wondering if there will be a second proposal to agree to the code and network launch coordination prior to upgrade.

Regarding Main Changes #9 and #10, these are active parameter-change proposals, so why are they being included in the mainnet upgrade proposal?

Hey, this proposal includes agreement to 10 main changes for Col-4 update. There won’t be a second proposal to agree to the code and network - this process will be done in our validator discord.

As you mention, main changes #9 and #10 are active parameter-change proposals. The reason why we include these proposals to Col-4 upgrade proposal, is to emphasize these two proposals.

1 Like

Thanks! Typically on the Cosmos Hub we use a dedicated proposal to approve the code and coordinate the launch in order to make the process as decentralized as possible.

1 Like