| ADDRESS | BALANCE |
|---|
A clock that proves the order of events
Silk's Proof of History clock, hashing live since you opened this page.
Silk was the Rust code that became Solana. Its Proof of History is running again here, rebuilt byte-for-byte in your browser.
| ADDRESS | BALANCE |
|---|
Silk's Proof of History clock, hashing live since you opened this page.
| # | num_hashes | id | event |
|---|
Every entry is num_hashes (how many SHA-256 steps since the previous entry), id (the hash reached) and event. A verifier takes the previous id, hashes it that many times, mixes in the transaction signature if there is one, and checks it lands on this id.
Every log line as silk-testnode printed it, taken apart byte by byte.
Silk 0.3.3 never checked for negative amounts. Send -50 from a wallet that holds nothing and it goes through, just like the original.
This really is the private key: 85 bytes of PKCS#8 v2. The chain's seed is SHA-256 of this file.
| ADDRESS | BALANCE |
|---|
Signed transfers, a replay guard and the original bugs, exactly as in 2018.
The whole log re-checked across every core at once. The Silk node itself never did this.
| Silk 0.3.3 | Later Solana |
|---|---|
| silk | solana |
| log / logger | ledger / recorder |
| AccountantSkel / Stub | Tpu / ThinClient |
| Accountant | Bank |
| Historian | RecordStage |
| silk-testnode | solana-fullnode |
| silk-client-demo | solana-bench-tps |
| asset | tokens → lamports |

Rebuilt faithfully: SHA-256 Proof of History at one tick per 1000 ms, Ed25519 keys in 85-byte PKCS#8 v2, the 144 signed bytes, the 220-byte UDP datagram, mint and genesis, the accountant's rules and error names, the JSON log format and parallel verify_slice. Checked against the spec's test vectors, RFC 8032 and an independent Python implementation.
Different on purpose: everything runs in one tab, so the UDP server is in-process. The historian checks for new events every 256 hashes rather than after every hash, so num_hashes lands on multiples of 256.
Not rebuilt yet: time-locked and cancellable transfers, and the 0.1–0.2 hashers, which can't be reproduced reliably.
Twelve releases in three weeks, then the repository was renamed solana on March 27, 2018.