Skip to content

Apricot Phase 6

Compare
Choose a tag to compare
@patrick-ogrady patrick-ogrady released this 05 Sep 04:31
· 1990 commits to master since this release
db21c3b

This is a mandatory security upgrade. Please upgrade your node as soon as possible.

The changes in the upgrade go into effect at 4 PM EDT on September 6th, 2022 on both Fuji and Mainnet. You should upgrade your node before the changes go into effect, otherwise they may experience loss of uptime.

You may see some extraneous ERROR logs ("BAD BLOCK") on your node after upgrading. These may continue until the Apricot Phase 6 activation (at 4 PM EDT on September 6th).

The supported plugin version is 16.

PlatformVM APIs

  • Fixed GetBlock API when requesting the encoding as json
  • Changed the json key in AddSubnetValidatorTxs from subnet to subnetID
  • Added multiple asset support to getBalance
  • Updated PermissionlessValidators returned from getCurrentValidators and getPendingValidators to include validationRewardOwner and delegationRewardOwner
  • Deprecated rewardOwner in PermissionlessValidators returned from getCurrentValidators and getPendingValidators
  • Added subnetID argument to getCurrentSupply
  • Added multiple asset support to getStake
  • Added subnetID argument to getMinStake

PlatformVM Structures

  • Renamed existing blocks
    • ProposalBlock -> ApricotProposalBlock
    • AbortBlock -> ApricotAbortBlock
    • CommitBlock -> ApricotCommitBlock
    • StandardBlock -> ApricotStandardBlock
    • AtomicBlock -> ApricotAtomicBlock
  • Added new block types to be enabled in a future release
    • BlueberryProposalBlock
      • Introduces a Time field and an unused Txs field before the remaining ApricotProposalBlock fields
    • BlueberryAbortBlock
      • Introduces a Time field before the remaining ApricotAbortBlock fields
    • BlueberryCommitBlock
      • Introduces a Time field before the remaining ApricotCommitBlock fields
    • BlueberryStandardBlock
      • Introduces a Time field before the remaining ApricotStandardBlock fields
  • Added new transaction types to be enabled in a future release
    • RemoveSubnetValidatorTx
      • Can be included into BlueberryStandardBlocks
      • Allows a subnet owner to remove a validator from their subnet
    • TransformSubnetTx
      • Can be included into BlueberryStandardBlocks
      • Allows a subnet owner to convert their subnet into a permissionless subnet
    • AddPermissionlessValidatorTx
      • Can be included into BlueberryStandardBlocks
      • Adds a new validator to the requested permissionless subnet
    • AddPermissionlessDelegatorTx
      • Can be included into BlueberryStandardBlocks
      • Adds a new delegator to the requested permissionless validator on the requested subnet

PlatformVM Block Building

  • Fixed race in AdvanceTimeTx creation to avoid unnecessary block construction
  • Added block_formation_logic.md to describe how blocks are created
  • Refactored BlockBuilder into ApricotBlockBuilder
  • Added BlueberryBlockBuilder
  • Added OptionBlock builder visitor
  • Refactored Mempool issuance and removal logic to use transaction visitors

PlatformVM Block Execution

  • Added support for executing AddValidatorTx, AddDelegatorTx, and AddSubnetValidatorTx inside of a BlueberryStandardBlock
  • Refactored time advancement into a standard state modification structure
  • Refactored ProposalTxExecutor to abstract state diff creation
  • Standardized upgrade checking rules
  • Refactored subnet authorization checking

Wallet

  • Added support for new transaction types in the P-chain wallet
  • Fixed fee amounts used in the Primary Network wallet to reduce unnecessary fee burning

Networking

  • Defined p2p.proto to be used for future network messages
  • Added --network-tls-key-log-file-unsafe to support inspecting p2p messages
  • Added avalanche_network_accept_failed metrics to track networking Accept errors

Miscellaneous

  • Removed reserved fields from proto files and renumbered the existing fields
  • Added generic dynamically resized ring buffer
  • Updated gRPC version to v1.49.0 to fix non-deterministic errors reported in the rpcchainvm
  • Removed --signature-verification-enabled flag
  • Removed dead code
    • ids.QueueSet
    • timer.Repeater
    • timer.NewStagedTimer
    • timer.TimedMeter

Coreth

  • Incorrectly deprecated Native Asset Call
  • Migrated to go-ethereum v1.10.23
  • Added API to fetch Chain Config