Chia Network recently released their light wallet software, an installable application that allows a user to create or import a Chia wallet in minutes instead of the days spent syncing the full node wallet application everyone has been using to farm Chia until now. This is a game changer, and is a requirement for the new Chia Asset Token ecosystem springing up. The point of this article is to discuss how it does that and what that could mean for farming.
Light client verification
Light client support is another benefit of proof of space when compared with proof of stake, since all proofs can be objectively verified cryptographically, and require controlling an actual resource at a certain point in time. For light clients who want to sync up quickly to the chain (for example mobile wallets), a full node can reate a small sized proof that can convince the light client that the weight of a chain is close to some value. This is called a proof of weight. Naively, the light client can download every single block and all the required proofs and verify them, but with such a large number of blocks, this would require a lot of bandwidth and CPU.
A more efficient method relies on a protocol similar to Flyclient. The node (prover) sends all the sub epoch summaries from the fork point, which include difficulty resets, to the light client. There is only one every 384 blocks, so this can only reach a few MB of data. The node also deterministically samples several sub-epochs based on the challenge of the last block. Sub-epochs have a chance to be chosen proportional to the difficulty during that sub-epoch. For the chosen sub-epoch, the light client downloads one of the challenge chain blocks (which are approximately 1/32 of all blocks), and computes the average infusion iterations of all challenge blocks in that sub-epoch. Based on this time, the light client can extrapolate how many blocks the reward chain contains. For example, if the challenge blocks all occur with very small iterations (close to the beginning of the slot), there are likely many blocks in that slot. Conversely, if the iterations are close to the middle of the slot, there is likely only one block per slot. This allows the light client to only download 1/32 of the blocks in each slot, but still get a good estimate of the total weight.
Furthermore, the last few sub-epochs should be downloaded in full for the light client. This adds a small amount of data, but prevents attackers from creating small forks at the end of the chain. The main difference between this protocol and flyclient is that blocks are not committed to using a merkle mountain range, but instead the light client downloads the entire list of sub-epoch hashes from genesis, guaranteeing that the queried sub-epochs are included in the chain. Another difference is that entire sections are downloaded, as opposed to individual blocks.Chia Network new consensus document
Thank you to Grizzo for once again finding great information hiding in plain sight about what is going on with Chia. Basically it is doing verification against a small wedge of the blockchain instead of needing the entire thing, but it is absolutely verifying recent blocks independently to ensure the entire chain is kept secure.
The reason this is so interesting to me is that I think it should be possible to modify this protocol slightly in order to get current signage points and farm against this slimmed down blockchain section. It probably does not contain every bit that is needed for farming, which is why I suggest it would probably need to be a little bit thicker of a node, but it probably doesn’t need much more. I’m not an expert, and I welcome an expert to weigh on this but it should be a matter of downloading more foliage or the complete sub epoch or something.
Now, this does not seem like something that Chia Network would want to encourage, as it violates the principles they have set forth for decentralization and they are actively using their full node count in marketing. But there is a very real issue with farming on lower end hardware or creating a cloud node of any sort, and that is that the blockchain will continue to grow – forever. It only gets bigger. But if there is a way to farm against a static amount of data that is just cycled through? That would be a lifesaver for Raspberry Pi farmers.