Published on: 2014-06-05T19:34:15+00:00
In an email exchange, Richard Moore suggests using the name "getcheckpoints()" as a function in Bitcoin, but finds it too long. He proposes using "getheaders()" instead to quickly grab headers before downloading full blocks. However, Pieter Wuille argues against the use of "getgist()", stating that the reference client's design focuses on validating received data as soon as possible. Pieter explains that "getheaders()" allows for immediate validation of headers and the building of a tree structure locally. This enables requesting blocks along the good branches of the tree in parallel from multiple peers. Pieter adds that there can be two independent synchronization mechanisms: downloading headers and validating them, and downloading blocks corresponding to validated headers.Richard Moore, the founder of Genetic Mistakes Software Inc., has been using "getheaders()" in their thick client to quickly grab all the headers before downloading full blocks. They believe there is a case for a "getgist()" call, where a gist of segment count 50 could be used to request 50 "getblocks()" each with a block_locator of one hash from the gist, providing 25,000 block hashes. The writer was considering using names like "getcheckpoints()" but found them too long.Richard Moore reaches out to the Bitcoin development team with an idea for implementing a "getgist()" command that would be fully backward compatible. The inputs to "getgist()" would be similar to "getheaders()" with an additional field, segment_count. The response would be a spaced out headers message, with block hashes aligned to every 2000th block from the first block hash. This proposed method could significantly increase the speed of syncing block headers.The discussion revolves around optimizing "getheaders()", a function used by Simplified Payment Verification (SPV) clients in Bitcoin. The function allows SPV clients to download blocks without downloading the entire blockchain. A Bitcoin developer proposes a new command, "getgist()", which could speed up the process of syncing block headers. The developer is currently testing the command to determine its potential speed gains.
Updated on: 2023-08-01T09:27:18.018059+00:00