VEGA Testnet (Fairground) release 0.47.4

Version 0.47.4 of the Vega Protocol core software has been tagged and made available to validators to release to mainnet if they have tested it and are comfortable with the software.

This large, combined release includes a number of improvements and fixes to the core protocol.

A key theme of this combined release has been some improvements and fixes to the checkpointing feature; this includes fixes to ensure epochs and other key data is preserved as they should be during checkpoint restarts. In addition to this, the feature “free-form governance” has been implemented. This feature further decentralises the protocol by allowing users to submit governance proposals for community consideration and voting.

The protocol calculates a validator score for each validator. This score is used to set their voting power in Tendermint and determine their reward amounts. The changes introduced in this release mean that the protocol no longer prevents users from delegating to any node, however, an overcrowded node will impact the validator score, thus affecting rewards. Further scoring of performance measurements in future releases will bring with it the mechanism to adjust rewards in reflection of validator performance in the network. This is another step in getting the network more decentralised, and open to new validators joining the network.

A “null blockchain” implementation of the protocol has been created. Whilst this has no impact on the validators running the nodes, or users using the network, it’s an important part of our future testing, and validation of the protocol strategy. In fact it’s the first step into building an integrated tool, or suite of tools, in order to simulate networks in various conditions.

What’s coming next?
As of now the Vega team is finalising the implementation of the validators Vega wallet key rotation. This feature will enable validators to secure their keys in more efficient ways, and rotate their Vega signing through the network protocol.

To further this security Vega will release support for Clef; a key management system for ethereum. This has been integrated with the core node meaning that validators can also now secure their ethereum keys. This is a major improvement in security which is required much more as we get closer to enabling trading on mainnet.

The snapshot support has been improved and is getting close to being mainnet ready; this is currently in the testing phase. Snapshots enable nodes to save the state of the vega network and share it over the tendermint protocol. This would allow any new node to join the network at any time, without having to replay the whole block history (which could take a couple of days after a few months of block production). This feature is essential for the Vega protocol to become further decentralized.

Aside from these 3 main features, some QOL improvements have been built into the node to help validators maintain their infrastructure, e.g: better error handling of the different wallets required to run a node, improved configuration and database storage layout. In addition to this safety consensus / protocol improvements are being implemented around floating point calculations, these are mandatory to ensure deterministic state across the network. All these improvements will be explained in detail in a later post supporting the next release.

Changelog:

0.47.4

2022-01-05

:bug: Fixes

  • Send an epoch event when loaded from checkpoint

0.47.3

2021-12-24

:bug: Fixes

  • Non determinism in checkpoint fixed

0.47.2

2021-12-17

:bug: Fixes

  • Set minimum for validator power to avoid accidentally removing them
  • Limit delegation epochs in core API
  • Fix premature ending of epoch when loading from checkpoint
  • Wire network parameters to time service to flush out pending changes

0.47.1

2021-11-24

:bug: Fixes

  • Disable snapshots
  • Fixed non determinism in topology checkpoint
  • Do not validate assets when loading checkpoint from non-validators

The following fix has been implemented in the data-node:

  • Constrain the number of epochs for which Vega keeps delegations in memory

0.47.0

2021-11-24

:hammer_and_wrench: Improvements

  • Update CHANGELOG.md since GH Action implemented
  • Create release_ticket.md issue template
  • Return 400 on bad mint amounts sent via the faucet
  • Add free form governance net parameters to allKeys map
  • Add ability for the null-blockchain to deliver transactions
  • Introduce API to allow time-forwarding in the null-blockchain
  • Add support for validator key rotation
  • Remove the need for an Ethereum connection when using the null-blockchain
  • Allow reloading of null-blockchain configuration while core is running
  • Change validator weights to be based on validator score
  • Add checkpoint validator key rotation
  • Add network parameters overwrite from checkpoints
  • Add calls to enable state-sync via tendermint

The following improvements have been implemented in the data-node:

  • Tidy up repo to align with team processes and workflows
  • Add key rotation support
  • Add statistics to GraphQL API

:bug: Fixes

  • Fix non determinism in deposits snapshot
  • Add some logging + height/version handling fixes
  • Fix problem where chain id was not present on event bus during checkpoint loading
  • Fix rewards checkpoint not assigned to its correct place

The following fixes have been implemented in the data-node:

  • Don’t return API error when no rewards for party
  • Allow risk factor events to be streamed via GraphQL subscription

0.46.2

2021-11-24

:bug: Fixes

  • Limit the number of iterations for reward calculation for delegator and fix for division by zero

0.46.1

2021-11-22

:hammer_and_wrench: Improvements

  • Turn snapshots off for v0.46.1 only

0.46.0

2021-11-22

:hammer_and_wrench: Improvements

  • Update Vega wallet to version 0.10.0
  • Add changelog and project board Github actions and update linked PR action version
  • Unwrap the timestamps in reward payout event
  • Remove badger related code from the codebase
  • Add oracle snapshot
  • Add liquidity snapshot
  • Experiment at removing the snapshot details from the engine
  • Adding more error messages
  • Extend integration tests with global check for net deposits
  • Add tests to show margins not being released
  • Add trading fees feature test
  • Updating return codes
  • Implement liquidity supplied snapshot
  • Add target liquidity engine
  • Remove staking of cache at the beginning of the epoch for spam protection
  • Change spam error messages to debug and enabled reloading of configuration
  • Remove usage of vegatime.Now over the codebase
  • Add Prometheus metrics on snapshots
  • Add markets snapshot
  • Update issue templates #4389
  • Update GETTING_STARTED.md documentation
  • Refactor delegation
  • Add CLI options to start node with a null-blockchain
  • Add transaction hash to SubmitTransactionResponse
  • Add step to clear all events in integration tests
  • Fully remove expiry from withdrawals #4403
  • Add free form governance proposals
  • Deploy to Devnet with Jenkins and remove drone
  • Release version v0.46.0
  • Reduce the number of iterations in reward calculation
  • Include chain id in bus messages
  • Update validator power in tendermint based on their staking

The following improvements have been implemented in the data-node:

  • Add filtering/pagination GraphQL schema for rewards
  • Add handling for checking/storing Chain ID
  • Added subscriptions for delegations & rewards
  • Add changelog and project board Github actions and update linked PR action version
  • Turn off api_tests when run on the CI
  • Set time limit for system-tests, and also do not ignore failures for pull requests
  • Move to XDG file structure
  • Stabilise api tests
  • Populate target address for erc20WithdrawalApprovals
  • Remove SubmitTransaction GraphQL endpoint

:bug: Fixes

  • Remove state from the witness snapshot and infer it from votes
  • Fix notary implementation
  • Fix non deterministic test by using same idGenerator
  • Remove usage of time.Now() in the auction state
  • Implement Uint for network parameters and use it for monies values
  • Fix orders still being accepted after market in trading terminated state
  • Fix drone pipeline
  • Fix to set proper status on withdrawal errors
  • Fix to missing pending rewards in LNL checkpoint
  • Fix snapshot cleanup, improve logging when specified block height could not be reloaded.
  • Fix division by zero when all validator scores are 0
  • Fix reward account balance not being saved/loaded to/from checkpoint
  • Wire rewards checkpoint to checkpoint engine and store infrastructure fee accounts in collateral checkpoint

The following fixes have been implemented in the data-node:

  • Fix rewards schema and update vega dependencies to have reward event fixes
  • Update GraphQL schema to not require every asset to have a global reward account.