Skip to content

Latest commit

 

History

History
71 lines (48 loc) · 5.02 KB

adr-003.md

File metadata and controls

71 lines (48 loc) · 5.02 KB

ADR 003: Canis Major (1st Network Upgrade Scope of Breaking Changes)

Changelog

  • 28-04-2021: Initial Draft
  • 29-04-2021: Clarification of Long-term Changes
  • 30-04-2021: Removed the Custom Fork

Context

At this time, the Cronos.org Chain network has been live for one month and three issues that require a "hardfork" (i.e. a coordinated network upgrade due to consensus state machine-related breaking changes) have been identified:

  1. Due to a bug in Cosmos SDK v0.42.*, the vesting accounts are restricted to executing one action (e.g. delegation) during their vesting period and their delegations are not tracked. This bug e.g. affects the community participants of the Crossfire incentivized testnet.

  2. Due to bugs in IBC solo machine client implementation and specification, it is currently impossible to open connections from "IBC solo machines". These bugs prevent utilizing IBC solo machines in some planned network use cases, such as stablecoin issuance (in the meantime, one can instead use e.g. single-validator Tendermint networks).

  3. There is a demand to introduce product-driven network features beyond the initial fungible transfers, staking management etc.

The first issue should be addressed in Cosmos SDK v0.43.* releases. The second issue should be addressed in IBC v1.0.1 implementation and specification revision. The third issue is discussed in detail in ADR-001.

The scope of these issue hence depends on three external project releases (Cosmos SDK, ibc-go, CosmWasm) which may have divergent milestones in the near future. In addition to that, Cosmos SDK v0.43.* contains many other new features and breaking changes and CosmWasm's current implementation implies a few severe limitations (e.g. no Windows support or problems with the "State Sync" node feature).

Decision

The vesting account issue will be addressed by upgrading to the later stable release of Cosmos SDK and IBC solo machines issues will be resolved with the later revised IBC module release (i.e. not to be in the scope of the 1st network upgrade). Both of these issues have temporarily workarounds.

The current limitations of CosmWasm are acceptable on the testnet, but will not be in the scope of the 1st network upgrade. To partially address the third issue in the meantime, a modified IRISnet's NFT module will be added to the chain-main's codebase. This will be done across two PRs:

  1. The IRISnet's NFT module's code is to be vendored in the chain-main's codebase.

  2. The subsequent PR will modify its specification and code to match the basic expected business logic of CW721 (e.g. the token owner cannot modify the token's content in transfers).

Once all changes are included, the release should be first made for the next Croeseid public testnet upgrade. Besides the integration tests, all the new features should also be tested manually on the public testnet as well as in other network deployments (e.g. mainnet upgrade dry-runs).

If the vendored in code of the IRISnet's NFT module is compatible with the future Cosmos SDK's standard NFT module, a state migration code will be developed for the corresponding network upgrade.

Status

Accepted

Consequences

Positive

  • Earlier resolution of some of the existing live network's issues.
  • A smaller scope of breaking changes.

Negative

  • A need to develop a custom state migration code in the future.
  • A custom NFT functionality that is not widely supported.

Neutral

  • If the future standard Cosmos SDK NFT module is similar to the current IRISnet's NFT module, it may be possible to develop custom state migration code to move the NFT native assets to conform to standardized functionality.

References