created and stored in a virtual format ★ Not backed by Government (Ponzi scheme?) • No centralised authoritative ledger — Distributed Ledger/Blockchain ★ Everyone collaborates to everyone’s benefit
created and stored in a virtual format ★ Not backed by Government (Ponzi scheme?) • No centralised authoritative ledger — Distributed Ledger/Blockchain ★ Everyone collaborates to everyone’s benefit • Very nice properties ★ Transparency: all transactions are public ★ Anonymity: owners of accounts remain anonymous ★ Integrity: No one can tamper with the ledger without leaving evidence
Defeats decentrality ★ Malicious? • Make all the nodes “agree” on the authoritative fork ★ Proof-of-work vs proof-of-stake to minimise forks ★ Longest fork is the authoritative one
that combines 40 years of academic research! ★ Distributed consensus protocols ★ Cryptographic hashing ★ Peer-to-peer anonymous digital signatures • But we can recombine these concepts in many other interesting ways with different constraints
way to store and share files ★ decentralized www • Catalan Referendum ★ Declared as illegal by Spanish Govt ✦ All websites carrying info blocked. ISPs raided. ★ Where to vote? ★ Information hosted on IPFS!
Mercurial, Darcs ★ Contents of blocks is files, directory structure, etc. ★ Concurrent modifications without synchronisation! ★ Tamper evident file system ★ Provenance Merge
is Friday This Seminar is held in 1 Newnham Terrace Today is Thursday Alice This Seminar is held in Richard King room Today is Friday Bob This Seminar is held in Richard King room Today is Thursday Merge Bob
replicated data types • How do you know that the merge function is correct? ★ Intent preservation, convergence ★ Program verification for correctness by construction
replicated data types • How do you know that the merge function is correct? ★ Intent preservation, convergence ★ Program verification for correctness by construction • What about scalability and applicability? ★ Irmin (http://irmin.io) — a blockchain based distributed database ★ Pure OCaml => Can compile to Desktops, Cloud, Raspberry Pi, JavaScript