You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/posts/information_chaining_part_1.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,7 +76,7 @@ We know that we can insert elements into a Bloom filter and then check, in a spa
76
76
77
77
## Encoding data into a Bloom filter
78
78
79
-
How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to *insert each symbol* of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol *together with its index position*. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.
79
+
How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to insert each symbol of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol together with its index position. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.
80
80
81
81
To keep things simple, let’s treat each bit of the original message as a separate symbol (We’ll deal with multi-bit symbols later). Now, in all Bloom filter variants, one thing is constant: each lookup is independent. If we inserted symbols along with their index positions, checking whether the bit at position $N$ is present would tell us nothing about the bit at position $N + 1$. But what if we could turn those independent probabilities into conditional probabilities? *What if we "chain" the insertions*? This simple realization is the seed for Information Chaining.
82
82
@@ -255,7 +255,7 @@ If you enjoyed this post, consider sharing it with others who might find it valu
255
255
If you’d like to reference this article in your own research or writing, please cite it as follows:
256
256
257
257
> **Lum Ramabaja (2026).***Let It Bloom: The Seeds of Information Chaining (Part 1).*
258
-
> Open Cybernetics Blog. [https://lumramabaja.com/post/information_chaining_part_1/](https://lumramabaja.com/post/information_chaining_part_1/)
258
+
> Open Cybernetics Blog. [https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/](https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/)
259
259
260
260
You can also cite it in **BibTeX** format:
261
261
@@ -265,7 +265,7 @@ You can also cite it in **BibTeX** format:
<h1id="the-seeds-of-information-chaining">The Seeds of Information Chaining <ahref="#the-seeds-of-information-chaining" class="anchor">🔗</a></h1><p>Let us now tinker.</p>
227
227
<p>We know that we can insert elements into a Bloom filter and then check, in a space-efficient way, whether an element <em>might</em> be in it. These cheap lookups are used everywhere, in databases (LSM trees), in set reconciliation, in the Bitcoin protocol, in genomics (k-mer lookups), and more. But what if we go beyond space-efficient <em>lookups</em>? What if we could not only verify the absence of elements via Bloom filters, but also store data within them, effectively encoding information into a Bloom filter, and later decoding it back to its original form? Why would we even want to do that? For now, let’s not worry about the <em>why</em>. We’re just tinkering. The <em>why</em> will reveal itself soon.</p>
228
-
<h2id="encoding-data-into-a-bloom-filter">Encoding data into a Bloom filter <ahref="#encoding-data-into-a-bloom-filter" class="anchor">🔗</a></h2><p>How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to <em>insert each symbol</em> of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol <em>together with its index position</em>. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.</p>
228
+
<h2id="encoding-data-into-a-bloom-filter">Encoding data into a Bloom filter <ahref="#encoding-data-into-a-bloom-filter" class="anchor">🔗</a></h2><p>How might we encode an entire sequence of symbols into a Bloom filter? A natural first attempt might be to insert each symbol of the sequence into the Bloom filter. But that alone doesn’t capture order or repetition. A second idea could be to insert each symbol together with its index position. That’s better, but not enough. Because Bloom filters are probabilistic, collisions will occur: depending on the false positive rate and bit size, several symbols might appear to belong to the same position. Without prior knowledge of the input distribution, we couldn’t reliably recover the original message. No, we need something different. Something cleaner.</p>
229
229
<p>To keep things simple, let’s treat each bit of the original message as a separate symbol (We’ll deal with multi-bit symbols later). Now, in all Bloom filter variants, one thing is constant: each lookup is independent. If we inserted symbols along with their index positions, checking whether the bit at position $N$ is present would tell us nothing about the bit at position $N + 1$. But what if we could turn those independent probabilities into conditional probabilities? <em>What if we “chain” the insertions</em>? This simple realization is the seed for Information Chaining.</p>
230
230
<p>Let’s walk through <em>Code Example 2</em> to understand how encoding works in a Bloom filter–based Information Chaining implementation. Imagine a state machine with an initial state, a <em>nonce</em>, which could be a random value, a counter, an empty state, or something derived from a public key. We’ll refer to the current state of this machine as the chain header. For simplicity, we’ll treat it as a <code>usize</code> for now; later, we’ll explore how its type influences performance and behavior. We then iterate over the message and perform the following steps:</p>
231
231
<ol>
@@ -1012,15 +1012,15 @@ <h1 id="how-to-cite-this-work">How to Cite This Work <a href="#how-to-cite-this-
1012
1012
<p>If you’d like to reference this article in your own research or writing, please cite it as follows:</p>
1013
1013
<blockquote>
1014
1014
<p><strong>Lum Ramabaja (2026).</strong><em>Let It Bloom: The Seeds of Information Chaining (Part 1).</em><br>
1015
-
Open Cybernetics Blog. <ahref="https://lumramabaja.com/post/information_chaining_part_1/" target="_blank" rel="noopener">https://lumramabaja.com/post/information_chaining_part_1/</a></p>
1015
+
Open Cybernetics Blog. <ahref="https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/" target="_blank" rel="noopener">https://lumramabaja.com/posts/let-it-bloom-the-seeds-of-information-chaining-part-1/</a></p>
1016
1016
</blockquote>
1017
1017
<p>You can also cite it in <strong>BibTeX</strong> format:</p>
</span></span><spanstyle="display:flex;"><span><spanstyle="color:#50fa7b">title</span> = <spanstyle="color:#f1fa8c">{Let It Bloom: The Seeds of Information Chaining (Part 1)}</span>,
0 commit comments