The Chia Blockchain

The Chia Blockchain uses a Proof of Space and Time consensus to achieve similar security to Proof of Work, but at a fraction of the power consumption. The blockchain utilizes the Coinset model, which is similar to the Unspent Transaction Output (UTXO) model of Bitcoin. In the Coinset model, everything is a coin, and to track a balance all unspent coins must be retrieved and summed together. This differs significantly from the Account model, where the ledger balance of each “account” that has transacted is recorded in each block.

In Chia, rather than a “wallet” holding a balance which it can draw from, it instead tracks coins on the blockchain that it has the ability to spend. In most cases, every individual transaction is a coin, so if you receive a 0.1 xch transaction every day for 10 days, your wallet balance is 1 xch, made up of 10x 0.1 xch coins. If you were to send 0.15 xch to another address, the wallet would spend 2x 0.1 xch coins, and create 2 new coins, one 0.15 xch to send to the intended recipient, and a 0.05 xch “change” coin which will be sent to the next derived address in your wallet. If the receiver then sent 0.1 xch, their wallet would spend the 0.15 xch coin and create 2 new coins again, this time a 0.1 xch coin sent to the intended recipient, and a 0.05 xch “change” coin sent to their next derived address. More on derivations later.

The use of the Coinset model allows for “smart contracts” to exist on chain in the form of coins programmed with chialisp, as well as provides a level of anonymity to all transactions. Because most transactions generate a “change” coin which is sent to a new address, it becomes more difficult for a third party to track who sent what to who. Unfortunately, this can also make things difficult for the end user to track as well.

Derivations

Currently in the Chia client, there are 3 main ways for the derivation index of a wallet to increase:

  1. Send a normal transaction which generates “change”
  2. Hit the “New Address” button in the client
  3. Accept an offer, or have your offer accepted

Because of methods 1 and 3, any user that has minted NFTs and used offers as a method of distribution or any “trader” using offers consistently will have a very high derivation index in their wallet. Most of these addresses carry no balance, and only a handful will have more than a small “change” coin. This is what makes tracking a balance of an entire wallet difficult without the client, because even if you only use a single receive address for receiving transactions, every transaction you send will split off some of that balance to a higher derivation index as change. To view your derivation index, use chia wallet get_derivation_index.

In Chia client version 1.2.8 (released 30 September, 2021), support for unhardened key derivations was added (see BLS Keys). This unhardened derivation method is what allows the Public Key address derivation on this site. Because of the timing of this, anyone who was farming/using Chia before version 1.2.8 will have some non-observer addresses in use.