A blockchain is a tamper-resistant list of records. Used in conjuction with a network of trusted servers, it's a trustworthy, distributed database with no central authority.

Still working on this. The minimal blockdemo is complete, though.

Minimal

This is a demonstration of a minimal blockchain.

For each block, you enter some data. The first block gets a hashstamp based upon its data.

Each subsequent block gets a hashstamp based on its data plus the hashstamp of the preceding block.

If you change any block's data, then it becomes invalid and breaks the chain.

This way, when data is entered and added to the chain, it's easy to tell if anyone changed the data.

Try the demo below to see a minimal blockchain in action.

Bitcoin

A problem with blockchains is that someone could corrupt the entire chain and it would be difficult to ascertain which chain is the valid one.

In 2008, Satoshi Nakamoto published a paper describing a new type of digital currency called bitcoin. All bitcoins and all transactions are stored in a blockchain shared on a peer network in which the nodes cooperate to maintain the integrity of the chain. As Nakamoto wrote, If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains.

Bitcoin's genesis block was created on January 3, 2009 when ??? created (mined) 50 bitcoins (BTC).

GetHash()      = 0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
hashMerkleRoot = 0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
txNew.vin[0].scriptSig     = 486604799 4 0x736B6E616220726F662074756F6C69616220646E6F63657320666F206B6E697262206E6F20726F6C6C65636E61684320393030322F6E614A2F33302073656D695420656854
txNew.vout[0].nValue       = 5000000000
txNew.vout[0].scriptPubKey = 0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704 OP_CHECKSIG
block.nVersion = 1
block.nTime    = 1231006505
block.nBits    = 0x1d00ffff
block.nNonce   = 2083236893
CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
vMerkleTree: 4a5e1e