# Col-4 upgrade governance proposal

**URL:** <https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246>\
**Category:** Governance & Proposals\
**Created:** [September 2, 2020, 7:34am UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246 "2020-09-02T07:34:58Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![EJ\_Lee](https://sea2.discourse-cdn.com/terra/user_avatar/classic-agora.terra.money/ej_lee/32/61_2.png) [@EJ\_Lee](https://classic-agora.terra.money/u/EJ_Lee)\
**Post date:** [September 2, 2020, 7:34am UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246/1 "2020-09-02T07:34:58Z")

</div>

# 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](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](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](https://classic-agora.terra.money/t/tip-oracle-optimization-spec/211)
- Pull request : [https://github.com/terra-project/core/pull/325](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](https://quip.com/DEZ9Aj97435d)
- Pull request : [https://github.com/terra-project/core/pull/348](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](https://github.com/terra-project/core/pull/352)

1. **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](https://github.com/terra-project/core/pull/343)

1. **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](https://blog.cosmos.network/launchpad-a-pre-stargate-stable-version-of-the-cosmos-sdk-e0c58d8c4e24?gi=72cee151bbf6), Cosmos SDK v0.39.1 Release Notes: [https://github.com/cosmos/cosmos-sdk/releases/tag/v0.39.1](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.39.1)

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](https://github.com/cosmos/cosmos-sdk/blob/master/x/staking/spec/08_params.md)

1. **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](https://classic-agora.terra.money/t/proposal-to-decrease-minspread-of-terra-luna-swaps/244/4)

1. **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](https://classic-agora.terra.money/t/proposal-to-increase-base-pool-value/245)

### Notes and/or Future Considerations

- An on-chain governance proposal will follow.

---

<div class="post-metadata">

**Author:** ![gaia](https://sea2.discourse-cdn.com/terra/user_avatar/classic-agora.terra.money/gaia/32/97_2.png) [@gaia](https://classic-agora.terra.money/u/gaia)\
**Post date:** [September 2, 2020, 3:22pm UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246/2 "2020-09-02T15:22:35Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![EJ\_Lee](https://sea2.discourse-cdn.com/terra/user_avatar/classic-agora.terra.money/ej_lee/32/61_2.png) [@EJ\_Lee](https://classic-agora.terra.money/u/EJ_Lee)\
**Post date:** [September 2, 2020, 3:27pm UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246/3 "2020-09-02T15:27:43Z")

</div>

Done! Thanks

---

<div class="post-metadata">

**Author:** ![Gavin](https://avatars.discourse-cdn.com/v4/letter/g/439d5e/32.png) [@Gavin](https://classic-agora.terra.money/u/Gavin)\
**Post date:** [September 7, 2020, 7:29pm UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246/4 "2020-09-07T19:29:01Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![EJ\_Lee](https://sea2.discourse-cdn.com/terra/user_avatar/classic-agora.terra.money/ej_lee/32/61_2.png) [@EJ\_Lee](https://classic-agora.terra.money/u/EJ_Lee)\
**Post date:** [September 9, 2020, 2:06am UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246/5 "2020-09-09T02:06:44Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Gavin](https://avatars.discourse-cdn.com/v4/letter/g/439d5e/32.png) [@Gavin](https://classic-agora.terra.money/u/Gavin)\
**Post date:** [September 9, 2020, 5:58pm UTC](https://classic-agora.terra.money/t/col-4-upgrade-governance-proposal/246/6 "2020-09-09T17:58:30Z")

</div>

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.
