Harbourgate, and what its register has to survive
A custody register records who held what, and when. Its value is entirely in whether anyone can trust the old lines, because the old lines are what a dispute is argued over. Harbourgate's register holds six entries: the register opening, two consignments signed over to named buyers, two inspections, and one release. Nothing in it is money. It is provenance, which is the plainest thing a chain is good for and the easiest place to see the mechanism working.
★ What you walk out with tonight. A one sentence account of the mechanism that you can say out loud without hedging: each block contains the previous block's hash. The Harbourgate register with its six real hashes, so the structure is a thing you have seen rather than a thing described to you. And the reason the fingerprint has to change completely rather than a little, which is the part that does the actual work.
LiveWithout the hype4 min▶
A chain is a data structure. It is a list, with one unusual rule about what each element has to contain, and the rule is enforced by arithmetic rather than by permissions. That is genuinely clever, and it is also completely mundane once seen, in the way that double entry bookkeeping is clever and mundane. Nothing in it is magic, nothing in it is new mathematics, and nothing in it knows whether the entry it is protecting is true.
The claim worth making about it is narrow and strong: you can hand the whole register to someone who does not trust you, and they can check for themselves that it has not been altered since it was written. The claims worth refusing are the wide ones, and refusing them is easier once the structure fits in one diagram.
Harbourgate's register runs at difficulty 0, which means no work was done to produce any of the six hashes beyond computing them. It is still fully tamper evident. Every property in tonight's session holds with no mining at all, which is worth knowing before mining is introduced, because mining is often described as the thing that makes a chain trustworthy and it is not.
Self-studyThe words that will keep coming back4 min▶
- Hash. A function taking any input and returning a fixed length output. Also called a digest or a fingerprint. Part 1 tonight, and practitioner session 1.
- SHA-256. One particular hash function, the one Harbourgate uses. It returns 64 hexadecimal characters no matter what goes in.
- Block. One entry in the register, packaged with its position, its timestamp, the previous block's hash, and a number called a nonce.
- Genesis block. The first block, which has no predecessor to point at. Part 2 tonight.
- Avalanche. The property that a tiny change to the input produces an unrecognisably different digest. Without it the rest does not work.
- Nonce. A number a block carries that can be varied freely without changing what the block says. Idle at difficulty 0, and the whole subject of session 3.
- Merkle root. One hash standing for a whole set of records. Practitioner session 6.
- Key management. Who holds which secret, and how it is rotated and revoked. A discipline of its own, covered in the security courses rather than here.
A fingerprint, and why it has to change completely
14 min liveA hash takes an input of any size and returns an output of one fixed size. Three characters in, 64 hexadecimal characters out. Three million characters in, 64 hexadecimal characters out. The three inputs below are the published test vectors, and Harbourgate's own implementation is checked against them before any register hash is believed.
...
...
...
LiveWhy a small change cannot make a small difference4 min▶
Imagine a fingerprint that behaved sensibly: similar inputs, similar outputs. Anyone wanting to alter an entry would simply nudge it until the digest landed back where it started, in the way you close in on a target by getting warmer. The whole structure would be worthless, because the attacker would have a gradient to climb.
The avalanche property removes the gradient. Every attempt is a fresh draw with no information carried over from the last one, so there is no warmer and no colder, only right or wrong. That is why a hash function is described as one way. Running it forwards is instant. Running it backwards has no method better than trying inputs.
LiveWhat the hash covers3 min▶
A block is hashed as a whole, not as a line of text. Its position in the register, its timestamp, its entry, the previous block's hash and its nonce all go in together. Change any one of those five and the digest changes, which means the digest is a statement about all of them at once.
This matters for what you are allowed to claim. A matching hash says the block is byte for byte what it was when the hash was taken. It says nothing about whether the inspector actually looked at the seal.
Self-studyWhere the disagreement really is4 min▶
There is a long running argument about whether a chain is a new idea at all. One side points out that hash linked records were published in the late 1970s and used in practice through the 1990s, that a list in which each element carries its predecessor's digest is a textbook structure, and that calling it a breakthrough is a sales pitch attached to a linked list.
The other side says the structure was never the contribution. The contribution was the packaging: a way for parties who do not trust each other to hold copies of the same register and agree on which one is current, with no administrator in the middle. On that view the data structure is old and the system around it is not.
Both readings are held by serious people and they lead to different purchasing decisions, so it is worth knowing which one the person opposite you holds. This session is deliberately about the part nobody disputes.
Six entries, and the link that runs through them
8 min liveHere is the register in full. The column on the right is the only structural idea in it: each block records the hash of the block before it, so the same sixteen characters appear twice, once as a block's own fingerprint and once as the next block's record of what it was built on.
LiveThe genesis block has nothing to point at3 min▶
Block 0 is the exception that shows what the rule is for. Every other block inherits its credibility from the one before it, and block 0 has no predecessor, so its previous hash field is filled with a row of zeros standing in for a block that does not exist.
The consequence is worth saying plainly. The structure carries confidence forward from the start of the register, and it cannot manufacture any at the start. Whoever wrote block 0 and whoever was watching are the foundation, and no amount of hashing afterwards improves that.
LiveWhat the chain actually promises3 min▶
Hand a copy of the Harbourgate register to a buyer who thinks the port authority is covering something up. They recompute all six hashes themselves and compare each block's previous hash field with the hash of the block above it. If everything matches, they know the six entries are exactly the six entries that were written, in that order.
That is a real promise and it is narrower than it sounds. It covers the entries as written, not the events they describe, and it says nothing about entries that were never written down at all.
Self-studyTimestamps, nonces and the rest of the block4 min▶
Harbourgate's blocks carry fixed timestamps starting at 1758000000 and advancing 600 seconds per block, which makes the register reproducible: anyone rebuilding it from the six entries gets the same six hashes rather than six new ones. A real register takes its timestamps from a clock, and whose clock that is turns out to be a harder question than it looks.
The nonce field sits in every block doing nothing at difficulty 0. It exists so that a block's hash can be changed without changing what the block says, which sounds like a flaw and is the foundation of session 3.
Read the register the way a sceptic would
20 min hands onNo code. Six steps on the six entries above, done out loud. The aim is to be able to say what a matching hash proves and what it does not, without reaching for a metaphor.
Say the sentence
Out loud, without notes: each block contains the previous block's hash. Then say what that buys, in your own words, in one more sentence. If the second sentence needs the word "secure", replace it with something you could defend.
Find the same hash twice
Locate f325e5d96bee6a1d in two places in the register and say what each occurrence means. One of them is a fingerprint of a block. The other is a claim made by a different block about what it was built on.
Count what a digest depends on
Name the five things that go into a block's hash. Then say which of them an inspector in a cold store has any control over, and which of them are set by the register itself.
Try the two lines in the live box
Change a single character in either entry above and watch how many of the 64 output characters move. Then predict, before you press anything, whether changing a different character changes a different number of them.
Ask what block 0 rests on
Block 0 has no predecessor. Say who or what has to be trusted for the register to mean anything, and where that trust comes from, given that the structure cannot supply it.
Write the honest claim
In one sentence, write what you could tell a buyer about the Harbourgate register without overstating it. Keep the sentence. Session 2 tests whether it survives an attacker who is willing to do arithmetic.
The habit to keep. When somebody says a record is on a chain, the useful follow up is what the hash covers. It covers the bytes of the entry from the moment they were hashed. It does not cover whether the entry was accurate, whether anything was left out, or who was allowed to write it.
Three questions
Why does a hash function have to produce a completely different digest for a nearly identical input?
A gradient is a ladder. If getting closer to the original input produced a digest closer to the original digest, forging an entry would be a search with feedback rather than a blind one. The avalanche property removes the feedback, which is why every attempt is independent of the last.
Harbourgate's register runs at difficulty 0, so no mining was done. What does that mean for tamper evidence?
Detection and cost are separate. The six hashes in the register were computed with no mining and they check out exactly as they would at any difficulty. Mining changes what a rewrite costs, which is session 3, not whether a rewrite is visible.
A buyer recomputes every hash in the register and every link matches. What have they established?
The hash covers the bytes it was taken over. It has no access to the cold store, the inspector or the entries nobody wrote. An accurate chain of inaccurate entries verifies perfectly, which is the failure mode session 5 is built around.
Homework
Twenty minutes, on a record your own organisation keeps and would be embarrassed to have altered.
Find your block 0
Pick one register, log or audit trail you rely on. Write down who could change an old row in it today, and how anybody downstream would find out. If the answer is that nobody would, write that down too, because that is the finding.
Write the claim you would want to make
One sentence about that record, of the form you would be willing to put in front of a regulator or a customer. Bring it to session 2, which puts an attacker against it.