Essay

Fifty Years of One Ledger

Every time something changes, write down what the whole project looks like right now, stamp it with a fingerprint, and point it at the entry before. This ledger has a name: Git.

People who build software call this ledger “version control.” It has been evolving for more than fifty years, and every step answers the same question: when a group of people change the same thing, how do they keep the changes clear, make them reversible, and say who changed what, when and why?

Over those fifty years, two lines ran side by side. One belonged to programmers: how to manage many versions of the same files. The other belonged to cryptographers: how to prove a record hasn't been tampered with. In 2005, the first line borrowed the second line's fingerprints, and Git was born. Three years later, the second line added the missing piece itself, how everyone agrees, and blockchain was born.

So Git and blockchain look alike, but neither copied the other. They are two descendants of the same ancestors.

This page is only about the record-keeping structure. It does not concern issuing or trading any virtual currency.

1972

Keeping versions

Starting in late 1972, Marc Rochkind at Bell Labs wrote SCCS, the first tool that saved every change to a file, so you could go back to any version you wanted.

In our workflow

Every commit is kept, so if something breaks, you can go back. That's why we ask AI to commit once before it starts work: leave a way back first, then let it make changes.

Compared with blockchain

Every ledger starts the same way. First, you have to write things down.

Source: Rochkind, “The Source Code Control System,” IEEE Transactions on Software Engineering, 1975Subscription

1979

The fingerprint tree

Ralph Merkle proposed a “fingerprint tree”: take a large pile of data, compute fingerprints layer by layer, and combine them into one top fingerprint. If any piece inside is altered, the top fingerprint no longer matches.

In our workflow

Git computes a fingerprint for every folder level of the whole project. After a merge, when we check that the version running live is word for word the version that was reviewed, we are comparing the top fingerprint of this tree.

Compared with blockchain

Common ancestor, part one. Blockchain also combines the transactions in each block into a single fingerprint with this tree.

Source: Merkle, US Patent 4,309,569, “Method of Providing Digital Signatures,” filed 1979, granted 1982Original

1982

The consensus problem

Leslie Lamport and his co-authors posed the “Byzantine Generals Problem”: how can a group of people who don't trust each other, some of whom may be lying, agree on the same thing?

In our workflow

Git never took on this problem. Which version counts isn't computed by Git; it's something we agree on: submit for review, review, automated checks, and a merge by the person who makes the call. In this workflow, agreement is something people keep up every day.

Compared with blockchain

This is exactly the core problem of blockchain. Using “whoever computes the most keeps the ledger,” blockchain answered it for the first time without a center.

Source: Lamport, Shostak & Pease, “The Byzantine Generals Problem,” ACM TOPLAS, 1982Free full text

1991

The timestamp chain

Stuart Haber and W. Scott Stornetta put the fingerprint of the previous document inside each document's fingerprint, linking them one after another into a chain. Anyone who tries to slip a document in later or change a date breaks everything that follows.

In our workflow

Every commit points to the commit before it. No entry can be quietly slipped into history, and none can be quietly taken out.

Compared with blockchain

Common ancestor, part two. The 2008 white paper has eight references in all; three of them are by these two.

Source: Haber & Stornetta, “How to Time-Stamp a Digital Document,” Journal of Cryptology, 1991Subscription

1986
–2000

One center

CVS (1986) and Subversion (started in 2000) let many people work on the same code, by keeping the single official copy on one central server. When the server went down, everyone stopped.

In our workflow

We have a “center” too: by agreement, the main branch on the hosting platform is the official copy, and the production server runs only what's on the main branch. Unlike back then, though, everyone holds a full copy. If the center breaks, the ledger isn't lost.

Compared with blockchain

The single center is exactly what blockchain sets out to remove.

Source: Grune, the original CVS release and its 1986 notesAuthor's page; Version Control with Subversion, “Subversion's History”Free full text

2005

A full copy for everyone

The developers who maintain the Linux kernel lost free use of a commercial tool over a licensing dispute. In about ten days, Linus Torvalds wrote Git, capable of managing the kernel. Everyone holds a complete copy of the history, every commit is chained by fingerprints, and work goes on without a center.

In our workflow

Each line of work opens its own branch and gets on with it, without stepping on anyone else. Before starting, each one first lines up its own copy with the main branch, and stops if the two don't match. These are all abilities this step gave us.

Compared with blockchain

This is the step most like blockchain: everyone holds a full ledger. But Git has no consensus. When two copies disagree, people still decide which one counts.

Source: Git's first commit, April 7, 2005Original; GitHub Blog, “Git turns 20: A Q&A with Linus Torvalds,” 2025Free full text

2008

The split

In the same year, the two descendants went opposite ways. In February, while GitHub was still in beta, it launched “pull requests”: a change laid out as a web page where people can comment and review before deciding whether to merge it. GitHub officially launched in April. On October 31, Satoshi Nakamoto posted “Bitcoin: A Peer-to-Peer Electronic Cash System” to a cryptography mailing list.

In our workflow

Pull request pages, review comments, check results and who clicked merge are all recorded on the hosting platform, not in Git. Git records what changed; the platform records who agreed. Only together do they make up our record.

Compared with blockchain

Blockchain wrote agreement into a protocol, enforced by computation. GitHub turned agreement into a web page for people to read, enforced by people.

Source: GitHub Blog, “Oh yeah, there's pull requests now,” February 23, 2008Free full text; GitHub Blog, “We Launched,” April 10, 2008Free full text; Nakamoto, “Bitcoin P2P e-cash paper,” Cryptography Mailing List, October 31, 2008Original

2017

Fingerprints age

Google and CWI Amsterdam produced, for the first time, two files with different contents but the same fingerprint, breaking the very fingerprint algorithm Git used at the time. Git then added detection and began preparing to move to a stronger algorithm.

In our workflow

“Changes can't be hidden” has a precondition too: the fingerprint algorithm has to be strong enough. Our repository still uses the old algorithm, with detection in place against the known attack.

Compared with blockchain

Blockchain is staked on fingerprint algorithms too. As the algorithm ages, so does the ledger's credibility.

Source: shattered.io, February 23, 2017Free full text; GitHub Blog, “Highlights from Git 2.29,” October 19, 2020Free full text

Three ledgers side by side

We keep three ledgers ourselves: blockchain (the one everyone has heard of), our partners' finance ledger (entry after entry with fingerprints, signed every day by two people separately), and Git. Side by side, what they share and where they differ are both clear.

BlockchainOur finance ledgerGit
Every entry fingerprinted, pointing to the one beforeYesYesYes
Change one entry and nothing after it matchesYesYes, checkable in one clickYes
Everyone holds a full copyYesNo, it lives in one databaseYes
How corrections are madeOnly by adding later entriesReversing entry: record an opposite oneRevert: record a commit that undoes it
Who decidesThe protocol, by computationTwo people sign separatelyConvention, by human review
Can history be rewrittenAlmost neverNoYes, but not secretly

In one line: blockchain replaced trusting people with computation. Git didn't. It leaves a fingerprint on every step of who was trusted and who said yes.

The hardest part of this step isn't technical

Git gave us fingerprints, not consensus. Consensus is something people have to keep up every day.

We've learned this the hard way. Once, a change was reported as “merged,” and when we checked, it never had been. Another time, a few commits that had been tried but never merged were left with nothing but their commit IDs to find them by after a branch was reset. The tools remember everything clearly, provided people remember to look.

Git makes every step traceable. Whether you can rely on it depends on whether people actually trace every step.

What we do is the next step for this ledger

Today, AI does the work on a branch, people make the judgment on the pull request page, merging into the main branch means going live, and the record of the process is kept in the repository. The more AI can do, the more important it is to be able to look up who agreed. We help companies set up this workflow in their own environment, and work with their teams until checking every step becomes a habit.

What

Every change, with who, when and why

Who decides

Submit, review, merge by the person who makes the call. No step skipped

How

AI works on a branch; people judge before the merge