solomon
solomon, specimen 001

noise

where a bit comes from

The bit position comes from a hash. The draw is reduced modulo 2,040, the number of bits in the codeword. Its quotient identifies a symbol and its remainder identifies a bit within that symbol.

The signature identifies one transaction after it is included. The instruction position identifies one event inside that transaction. Their joined hash fixes the bit position.

Nobody supplies the selected bit to the replay. The reader computes it from the signature and instruction position. The bit is unpredictable before the slot and reproducible afterward.

noise reading: —

how damage grows

Two flips can land in one symbol. They can also select the same bit and undo each other. The flip counter still records both events.

After f independent symbol draws, the expected number of distinct hit symbols is 255(1 − (254/255)^f). At 10 transfers the value is about 9.8, at 100 it is about 82.9, and at 1,000 it is about 250.0. These are expectations across repeated sequences rather than a statement about the current replay.

The expected count grows almost one-for-one at first. Repeated symbol positions become more common as the number of transfers rises. Growth slows as fewer untouched symbols remain.

noise reading: —

who causes it

Noise counts transfers rather than transferred value. A small transfer and a large transfer each produce one draw. Their effect on the codeword is equal because each invokes one bit flip.

The ring records the last 64 bit positions in replay order. New positions displace the oldest when it is full. It is a short record rather than a complete transfer history.

The scatter figure places each recorded bit position against its ring order. The hit histogram accumulates symbol counts over the stored lifetime. Together they show recent locations and long-run concentration without inventing missing observations.

noise reading: —

what is fair

A bit is unpredictable before its transfer enters a slot. The signature and instruction position fix it afterward. Replaying those values reproduces the selection.

Busy sending wallets cause more flips because each ordinary outgoing transfer contributes one. Transfer size has no place in the bit formula. The top-sender figure counts events rather than value.

Modulo reduction gives 2,040 possible bit positions. A small bias exists because the hash range does not divide evenly. It does not let a sender directly name a bit.

noise reading: —

recent bit positions0123401234fills from the token log once the address is set
fig. 8 The latest 64 bit positions appear in replay order.
hit distribution0123401234fills from the token log once the address is set
fig. 9 Observed hit counts are compared with a Poisson curve.
addresses by flips caused0123401234fills from the token log once the address is set
fig. 10 The top fifteen sending addresses are ranked by ordinary transfers.
chance of a repeated symbol00.250.50.7510125250375500flipsprobability
fig. 11 The curve gives the chance that at least one later draw repeats a first symbol.
1export async function bitFor(signature: string): Promise<number> {
2 const sig = base58Decode(signature); // 64 bytes
3 const input = new Uint8Array(sig.length + 4); // ++ u32le(0)
4 input.set(sig);
5 const h = new Uint8Array(await crypto.subtle.digest("SHA-256", input));
6 let n = 0n; for (const b of h) n = (n << 8n) | BigInt(b);
7 return Number(n % 2040n); // 255 symbols * 8 bits
8}
from the site source
terms
hasha fixed transaction digest
indexthe log position in a transaction
flipone changed bit
collisiontwo draws sharing a position
ringthe latest 64 bit positions
senderan address causing a flip