4
From my understanding Golomb coded sets are a probabilistic data structure that encodes the deltas of an order set of elements.
With things like txids, which are evenly distributed, Golomb coded sets are an efficient way to encode things inside of a block.
What is the ordering used to determine how txids are encoded in the set? It seems we need a base txid, and then compute deltas from that original txid? Is it just as simple as the lowest big endian numeric interpretation of a txid in a block?
Can you elaborate on short hashes for "relevant" outputs? This maybe warrant a separate question -- more related to BIP158 -- but what are "short hashes of relevant outputs"? Isn't the entire block encoded into a golomb coded set -- and then relayed to your client peer? How does the server compute "relevant outputs" when it doesn't understand what that is? – Chris Stewart – 2018-10-28T20:38:31.877
2The GCS's in BIP158 encode for each block which scripts are used in it (whether the block contains at least one output a given script, or whether it spends at least one output assigned to that script). It does that by encoding short hashes of those scripts. A client will download the whole filter for the block, and try to match it against the short hashes of all scripts it is interested in. If it finds a match, it downloads the full block, otherwise it can skip the block and continue with the next one. The filters are generally only a few kilobytes in size. – Pieter Wuille – 2018-10-28T21:28:58.027
1Pieter's answer covers it, by saying relevant I was thinking about empty/op_return not being included. – G. Maxwell – 2018-10-29T08:37:56.747