A note on the medium:
Opera used to support @media projection
, which was good for making slide shows.
Nobody supports that any more, including Opera, which is lame.
So I hacked together some javascript to simulate slideshow mode.
Controls: previous, next, beginning, end.
Hit n to see the first slide.
Are you tired of sitting? Get up!
Blockchain stuff that's not Bitcoin
Dan Talking About How Great Hashes Are Again
What makes a blockchain a blockchain?
What makes a blockchain a blockchain?
- It's a chain of 'blocks'!
What makes a blockchain a blockchain?
- It's a chain of 'blocks'!
- ...of aggregated transactions.
- Where each block links to the previous one by its hash
- Usually that's true but not really the point
What makes a blockchain useful?
- Single global chain
- Grows over time
- Verifiable by anyone
- No need for a central authority! 👍👍😎👍👍
- Rules for validating transactions
- Rules for determining which head block is the true one
- Usually the longest (most expensive?) valid one
- Potentially appendable by anyone
- But with a way that disincentivizes doing annoying stuff
Currencies are a popular use because
Making $$$ incentivizes doing the work to generate new blocks,
and the work required gives the currency value.
Currencies are a popular use because
"We mine bitcoins because it is hard to mine bitcoins"
i.e. they're basically a huge waste of electricity
so that someone (not you) can get rich.
Some Different Blockchains
- Bitcoin - tracks Bitcoins
- A bajillion altcoins (Litecoin, Dogecoin, etc etc etc)
- Ethereum - tracks Ether, but also lets you do 'smart contracts'
- Filecoin - earn filecoins by storing other people's data
- Blockhain EHR - store everyone's health records (encrypted)
Ethereum
Transactions can create and buy 'gas' to run 'smart contracts'
- A chunk of code+data
- Has methods that can be called by users or other contracts
- Everyone verifying the network has to run every smart contract's code
- Requires 'gas' to run
Ethereum
pragma solidity ^0.4.0;
contract Coin {
// The keyword "public" makes those variables
// readable from outside.
address public minter;
mapping (address => uint) public balances;
// Events allow light clients to react on
// changes efficiently.
event Sent(address from, address to, uint amount);
// This is the constructor whose code is
// run only when the contract is created.
function Coin() {
minter = msg.sender;
}
function mint(address receiver, uint amount) {
if (msg.sender != minter) return;
balances[receiver] += amount;
}
function send(address receiver, uint amount) {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
Sent(msg.sender, receiver, amount);
}
}
[solidity.readthedocs.io]
Filecoin
- Instead of proof-of work, proof-of-storage/proof-of-replication
- Something useful instead of wasting electricity!
- I've heard the founders are being kind of greedy
Blockchain EHR
Problem:
- Your health records are scattered all over and you don't control them.
- No reliable way to keep data in sync if you change providers.
Blockchain EHR
Solution: Link your records (encrypted) in a blockchain!
Experimental implementation: MedRec
- Single place for everybody's records (probably just a hash of the records)
- Always have the most up-to-date data
- Changes would have a definite order and be auditable across organizations
- Your data would be encrypted with a key controlled by you
(or to someone they delegated that responsibility to)
- Probably by individual records being encrypted with their own keys,
which are stored somewhere encrypted with your key, so you can hand those
individual keys out to whomever you like
To Tha Moon!
This approach may be useful for a lot more than just health records!
Watch for a blockchain-based distributed social network.
In Conclusion
- Hashes are rad.
- Blockchains might make them more rad.
- If the workers don't democratically control the means of production, it isn't communism.
- Don't forget to drink water!