从抽象到具体,从为什么创立区块链,到技术层面。一个掺杂我个人思考的记录。

为什么创立区块链?

自由世界人民对自由更进一步的追求,用技术天然的可靠性替代对大机构的信任。

一开始,区块链第一个实现形式是比特币,创始人希望它成为一种货币,交易货币产生的账单,在区块链中存储,谁能获得记账权,谁能获得比特币奖励。区块链的数据存在于每个节点的电脑中(节点可以是你我他这样的普通人)。挖矿就是对记账权的争夺,谁算力强解出难题,谁能获得奖励。整个世界历史上产生的所有数据都存在一台普通的家用电脑也许不可思议,但是区块链只存储数据的摘要,比特币区块链至今总大小只有几百 G。另外,对于个人用户来说,如果不从事挖矿,也不需要下载全部数据。个人用户可以进行加密货币交易,或者使用智能合约,而挖矿的任务交给算力强的节点。而个人只需要付给矿工少量加密货币即可。这并不违背去中心化,因为每个人参与区块链建设的机会是均等的,数据也是透明可查的。

区块链各节点之间每隔一小段时间会进行相互通信,看看是否有人篡改数据,并对异常节点做出惩罚,所以,想篡改区块链中的数据是不可能的。所以,区块链不会跑路,不会毁约。

比特币是区块链在货币上的伟大实践,后来人们发现,不只是货币,其他类型数据也可以上链。互联网经过多年发展,也变得和现实一样,形成了寡头统治的局面。国内的比如美团,滴滴等,收取高额提成。于是,以太坊出现了。以太坊相当于把世界上加入区块链的电脑组合成一台超级计算机,而以太坊就是操作系统。以太坊上可以部署智能合约,取代现在的合同(租房,打车,外卖等线上线下的合约)。以太坊的资金一直在快速增长,它是未来。

技术细节

hash 算法在区块链中的体现形式

(算法是演示网站上的,和实际的以太坊算法不一样,但总体原理类似)

现有一种哈希算法,表示为 hashvalue = f(block, nonce, data).其中 hashvalue 是哈希值,block 指区块,nonce 是随机数,data 是要存储的数据。mine这个动作就是要求解出一个随机数,使生成的哈希值开头四位数为 0.

分布式区块链

区块链是一种类似链表的数据结构。相比于区块,区块链中的区块增加了 prev 数据段,记录了上一个区块的 hashvalue,(第一个区块的 prev 为 000…000).每修改其中一个区块的数据,那么在链上的后续区块都要重新求解,这保证了数据篡改成本极高。同时,分布式使每个用户都保存了区块,使得数据修改成为不可能。

数字签名技术

有算法负责根据私钥(密码)生成公钥。然后,私钥可以对数据进行签名,生成的签名发布到公共空间,别人可以用公钥(公开)来判断数据是否来自于你。