THORChain Feature Freeze

A summary of THORChain’s Feature Freeze and next steps.

THORChain
THORChain
4 min readNov 21, 2019

--

The THORChain team have achieved Feature Freeze, defined as having finalised or implemented the full achitecture that will be delivered for ChaosNet.

Economics

Emission Curve

Status: implemented

The Emission Curve will target 2% after 10 years.

https://gitlab.com/thorchain/bepswap/thornode/blob/master/constants/constants.go

Bond and Pool Rewards

Status: drafted

Bonders will be paid 2 / 3rds and Stakers will be paid 1 / 3rd of the System Income, defined as block rewards and block liquidity fees.

https://gitlab.com/thorchain/bepswap/thornode/tree/emissionCurve

Slashing/Penalties

Status: under review

Nodes will be penalised if they fail to make witness transactions or sign delegated transactions. The penalty is a time-offset which reduces their Bond Rewards. Nodes will be slashed if they steal funds (defined as making any un-authorised transaction from a Yggdrasil vault) to the amount of the stolen funds.

[ADD] slash node accounts not observing inbound txs

Slash for not signing

Node Mechanics

Churn

Status: implemented

Nodes are churned every 3 days on schedule, or 6 hours after they request to leave. The highest bonded standby Node is chosen to enter. On schedule, the oldest Node and the “baddest” Node are alternated to leave, defined as having the highest penalty offset.

Add:”Allow active node accounts to leave”

Issue198 node churn

Asynchronous Liquidity Delegation

Status: implemented

Asgard is a vault with all Nodes, whilst Yggdrasil are made up of 2 of 3 TSS committees, chosen randomly. Yggdrasil vaults are funded up to 50% of the bonded assets. Yggdrasil vaults are given 100 blocks to sign an outgoing transaction.

enable yggdrasil

202-issue Don’t fund yggdrasil pool if we have less than MinimumNodesForYggdrasil

Governance

Status: finalised

Nodes have no ability to change any part of the network whilst they are running. They download a binary which contains a hard-coded constants.go file with the global parameters. The only way to change the parameters is for 67% of the Nodes to choose to run an updated binary with the same parameters.

205-issue remove validator related setting from admin config, use const instead

Bifröst

Observer

Status: finalised

The Observer makes witness transactions on connected chains. Assets are reported in the CHAIN.SYMBOL-XXX format. The Observer receives addresses to monitor from THORChain. The Observer maintains local purgeable state on the chain height and monitored addresses.

Signer

Status: finalised

The Signer prepares transaction payloads discovered in THORChain as corresponding to them in single-asset transfer format, before passing to the TSS module. The Signer maintains local purgeable state on the last signed height of each chain. The Signer broadcasts final signed transactions to a connected node.

TSS

Status: under re-implementation

The TSS receives transaction payloads from the local Signer and participates in signing ceremonies, before emitting the final signed transaction back to the Signer. The TSS is being re-implemented in the Binance Chain go-TSS library for better compatibility with the rest of the stack.

Liquidity

Swaps

Status: implemented

Users can swap any supported asset, including to a recipient.

Staking

Status: implemented

Users can stake (symmetrically or asymmetrically) any asset. Asymmetrical withdrawals was removed from the ChaosNet feature list since it needs more user research. Accordingly, internal arbitrage was also removed because it creates some edge cases not previously thought of.

New Pools

Status: implemented

New pools are listed every 50,000 blocks based on Rune depth. Anyone can create a new listing.

enable a pool every 3 days

Next Steps

The codebase is now in a single binary “THORNode”, containing all aspects necessary. Nodes will be deployed by a simple docker image, and will be hands-off the entire time for Operators.

The codebase will be refactored to remove unnecessary modules, as well as being cleaned up and optimised.

Testing

The codebase currently goes through the following tests:

  • Lint and Unit Tests
  • Integration Tests
  • Mocked Smoke Tests
  • Live Smoke Tests

Mocked Smoke Tests simulate a local Binance Node with transactions, whilst Live Smoke Tests use real testnet assets on the Binance Chain testnet. Around 35 different transaction events are currently tested and scanned for 100% compliance. More transaction events and scenarios will be added.

Audit

The team will conduct an internal audit of the code in December before tabbing an external service provider to independently verify the codebase. Since nothing like THORChain has been built before and it operates on some new fundamentals, this may take some time, but will be done prior to Mainnet.

New Testnet

A stable testnet environment is being targeted in the next few weeks, which will correspond with the front-end design refresh. This will be announced to the community.

THORChain Update

THORChain team are on track for feature freeze this week, then moving into testing and validation.

To keep up to date with the upcoming Public Alpha, please monitor community channels, particularly Telegram and Twitter:

--

--

THORChain
THORChain

The official team for THORChain — the decentralized liquidity network.