Chia Blog

Version 2.0.0 Release

by Chia Team

We’re pleased to share the release of version 2.0! This release brings many new features and some significant upgrades that are pivotal to the evolution of the Chia blockchain. From plot compression support and GPU plotting, farming, and harvesting, to soft and hard fork protocol updates, version 2.0 is the next step in our journey to build a better blockchain.

Table of contents

Protocol Updates

Earlier this year, we introduced plot compression and GPU plotting and farming to Chia. With this release, we’re initiating protocol updates to support these features and have outlined specific details below.

CHIP-0012: Plot Filter Reduction Hard Fork

The increased speed of GPU plotting is great! However, if someone can create a plot too fast (in less than 28 seconds) and do so economically, they can continuously create and discard plots without storing them on disk. This is known as plot grinding and resembles Proof of Work.

Plot grinding is currently not feasible since plot creation time is too slow, even when using a GPU. While it is likely to become technically possible within the next year or so, it will still cost immensely more money than storing plots on disks. This economically discourages farmers from plot grinding as they’d make significantly less money than using the network as intended.

To discourage future plot grinding attempts, we and the community created CHIP-0012 to reduce the plot filter over the next decade gradually (the final reduction is set to occur in 2033). This update will cut the plot filter in half every three years. The first reduction (from 512 to 256) will occur at block 5,496,000, likely in June 2024. The technical details and economics of plot grinding can be found in the blog post on GPU plotting.

This represents a non-forward-compatible change to the protocol, also known as a hard fork. At Chia, it is our policy to only create a hard fork when necessary. As such, the introduction of CHIP-0012 was both an anticipated and necessary step forward for the sustained health of our ecosystem. Further details on blockchain forks and their value in the evolution of blockchain networks can be found in our recent blockchain forks blog post.

Alongside the introduction of CHIP-0012, version 2.0.0 includes the following outlined additions that will be enabled simultaneously with the hard fork.

New Conditions for Coin ID Calculations

Previously, the CLVM lacked the ability to calculate a coin ID while validating its components. With this release, we’re enabling new conditions for a coin’s ID signature verification using just one or two of a coin’s components (i.e., parent ID, puzzle hash, amount). We created six conditions listed below for this purpose:

  • AGG_SIG_PARENT
  • AGG_SIG_PUZZLE
  • AGG_SIG_AMOUNT
  • AGG_SIG_PUZZLE_AMOUNT
  • AGG_SIG_PARENT_AMOUNT
  • AGG_SIG_PARENT_PUZZLE

Following the hard fork activation, users may verify a signature regardless of whether they are missing one or two of the coin’s components. If any of the provided arguments are invalid, the operator will fail. As we consider the implementation of state channels (or a blockchain second-layer solution), these conditions enhance convenience for channel participants with more accessible signature verification.

Pre-allocated Soft Fork Conditions

In version 2.0.0, we’re setting new soft fork conditions with pre-calculated costs. These pre-allocated conditions allow future conditions with non-zero CLVM costs to be added to the network as soft forks. Previously, this functionality was only possible via hard forks.

Support for Advanced CLVM Serialization

Version 2.0.0 features an advanced CLVM serialization method as an amendment to the current format. Full nodes will be serialized in a new format that differentiates repeated structures, ensuring they are only processed once, thereby saving space and computation power in transaction processing. As an amendment, old farmer’s blocks will still be accepted by new farmer’s, but new farmer’s blocks won’t be accepted by older farmers.

Additionally, the new format does not apply the cost of computing the puzzle hash to the block cost. By mitigating the cost calculation penalties for large puzzles, this format increases the amount of transactions that fit in a block.

Plotting and Farming

The 2.0.0 Chia client has major new features for plotting and farming, including a new version of Bladebit that supports plotting with NVIDIA GPUs, plot compression for more farming space, and many quality-of-life improvements for farming, such as a health dashboard, harvester latency graph, and an improved plotting UI.

Plotters

The new Bladebit version 3.0 can create compressed plots entirely in RAM, using a CUDA-capable GPU or a CPU. In-memory plotting with a GPU is the fastest and most energy-efficient way to plot, as it does not use up any SSD endurance. Plotting entirely in memory requires 256 GB of RAM when using a GPU or 416 GB when using a CPU.

Most farmers don’t have access to a server, workstation, or high-end desktop with 256 GB of RAM, so we have also enabled Bladebit cudaplot to support temporary SSD storage. Bladebit 3.1 (available in a future version of Chia) will support plotting on consumer desktop boards and workstation laptops with as little as 64 GB of RAM, with the assistance of an SSD. Plotting with any disk still requires high sustained write bandwidth and endurance, so please visit the SSD endurance page to learn about selecting a data center SSD or high-endurance consumer SSD (like this one!).

Plotter TypeComputeTemp SSD (GB)RAM (GB)Plot Times (min)Energy EfficiencyStatusCompression Supported
cudaplotGPUNone2561-3HighestReleased, Bladebit 3.0Yes
cudaplot + SSDGPU~18064, 1283-8HighIn Chia 2.1, Bladebit 3.1Yes
ramplotCPUNone4163-5HighBladebit 3.0Yes
diskplotCPU512415-60MediumReleased, Bladebit 2.0In future update
Table 1. Plotter Type Support

Plot Compression Support

Plot compression increases the number of plots you can store on disk, increasing farming rewards. We designed the Chia Proof of Space consensus with plotting tables to prevent Hellman attacks, or time-space tradeoffs. The most important takeaway from the blog post in January was this: with plot compression, plot size decrease is linear, while compute to decompress scales exponentially.

Plot compression is entirely optional and requires replotting.

Old plots will still work on the Chia 2.0 build. Most farmers will want to think about replotting to get the highest amount of farming rewards; low compression levels require minimal compute and power overhead for the extra effective farming space. GPU harvesting is highly efficient, with most large farms only increasing the overall power consumption by a few percent. The Chia 2.0 build supports compression levels C1 through C7. A table with the new plot sizes is kept up-to-date here. We have a lot of documentation to get farmers started with compressed plots. Head over to the Chia docs site and join the #farming-and-plotting Chia Discord channel or #bladebit-beta channel to get help!

Farming Strategy

Be ready for the plot filter reduction that will occur next June 2024. As detailed in CHIP-0012, this will double the number of plots needing to be decompressed at each signage point!

Farmers must ensure their hardware doesn’t get overloaded when the hard fork activates. However, most harvesters are likely to be unaffected, given their farms fall under maximum capacity. Plot compression is – and always will be – optional.

Chia has tools to help farmers size their plots and pick the best compression ratio for their system. To determine how to use compressed plots best and what compression levels are right for your setup, check out this blog post. Bladebit includes a “simulate” command showing farmers how much space can be farmed on a given compression level with their CPU or GPU hardware. Community members have also put together some excellent plotting and farming guides and hardware best practices.

Harvester Support for Compressed Plots

The Chia 2.0.0 client supports compressed plots in the GUI, or on the CLI with a new config file update, at levels C1-C7. Farming with CPU will take about 500MB of extra memory, and the default is set to use half the user CPU threads. If you are using the GUI, head on over to the new harvester tab in the settings page to enable compressed plot support.

Farming UI Improvements

The new farm tab is here! At the top of your dashboard, you will now see farm health. Sync status gives you a quick view of the blockchain, plots passing the filter will tell you if something is going on with the harvester, and missing signage points can signal network issues. Pooling health will now report the same information that the pool does for valid, stale, invalid, or missing partials for pool points.

The new Harvest tab now has total raw and effective capacity, showing how much extra space you get from plot compression. The new harvester latency log and updated harvester protocol can provide compressed plot information and the latency log. Plot compression adds latency for the CPU or GPU to decompress the plot. The more plots you have, the more compute and latency are required. The new graph will help farmers quickly identify issues from disk latency to different compression settings.

CHIP-0011: CLVM BLS Additions

CHIP-0011 adds new CLVM operators to increase on-chain BLS capabilities, as well as new functionalities, such as calculating a remainder, calculating a coin ID from its component parts, verifying secp signatures, and future use of zero-knowledge proofs. Below, we outline specific details for each new addition.

As part of our network optimizations, it is important to note that CHIP-0011 institutes a soft fork.

The CLVM operator additions are forward compatible, meaning any successful calls following the CHIP’s implementation would have succeeded beforehand. Further, the new CLVM operators are not backward compatible, given that some successful calls preceding the CHIP will no longer succeed afterward.

Addition of New BLS Operators

Occasionally, we narrow the scope of what is allowed on the blockchain through a soft fork. One such instance is our introduction of a comprehensive set of BLS operators to supplement point_add functionality. CHIP-0011 incorporates a new set of operators necessary to leverage the full capabilities of BLS signatures. The new operators enable more complex CLVM performance, including signature verification and the use of zero-knowledge (ZK) proofs.

It is worth noting that an additional operator protocol update will enable these new operators that were soft forked into the CLVM to be accessed without the soft fork operator. Developers can use all operators following the hard fork outlined in CHIP-0012, including the BLS codes mentioned above, without requiring the extra “softfork” call.

Operators for Calculating a Remainder

Prior versions of the CLVM did not allow for the direct calculation of a remainder from division or from division of an exponential operation. Version 2.0.0 provides two new operators, modpow and % to allow for such calculations moving forward.

Verifying secp Signatures

To better support signing devices, such as hardware security modules (HSMs), we’re enabling new signature types. Operators will be added to verify both secp256k1 and secp256r1 signatures. This level of support equips the Chia blockchain with the functionality necessary to support HSMs, hardware wallets, Apple Secure Enclave, and Android’s trusted execution environment.

These new operators activate Chialisp support for modern iOS and Android devices as highly secure private keys usable across multiple devices for vault management.

Transition to BLST Library

Previously, we’ve emphasized the use of BLS libraries. However, following our hard fork, we’re transitioning to the quicker BLST library. The newer library offers significant performance gains in the validation and submission of transactions.

General User Experience Improvements

Wallet Address Book (GUI)

Version 2.0.0 also includes an exciting new feature beyond our additions to plot compression and GPU plotting. We’ve added support for a local wallet address book in the GUI. Wallet owners can save all relevant XCH addresses, DIDs, or domain names against a set of contacts, providing efficient access when sending transactions. Users will also see the contact name for any transactions that have been sent as a more helpful way to recognize any previous transaction. You will also have your own contact card that will store your own addresses, DIDs or domain names.

The address book works as one common address book that is accessible across any local wallet keys on the same machine.

For Developers and Creators (RPC and CLI only)

Get Wallet Address RPC

The new get_wallet_addresses RPC allows developers to derive wallet addresses from any point in the wallet keyspace for any of the user’s keys. This will make it easier to get a specific wallet address along the derivation path for a specific key.

WalletConnect

In version 2.0.0, we’re rolling out a few improvements to our WalletConnect APIs. We’ve added support for the clawback command so DApps can initiate clawback commands to any connected wallet. The newly added get_wallet_addresses command has also been added as a command that can be called through WalletConnect.

General System and Application Support Updates

  • 2.0.0 is the last Chia update to officially support the v1 full node database. All users are recommended to upgrade to v2 database in order to support future updates.
  • Python 3.7 is no longer supported with this release. If you are running Ubuntu 18.04, you may need to manually update your Python version.
  • This release is the last Chia update to support macOS 10.14 Mojave, macOS 10.15 Catalina. Future updates will only support macOS 11 Big Sur or higher.
  • This release no longer supports Windows 8.1. This and future updates will only support  Windows 10 or higher.
  • Offer files created on 1.6.2 or older Chia clients are no longer supported.