区块链其实是一个处理及储存数据到电脑系统的方法。电脑科学中,这称之为数据结构。

数据结构种类繁多,经过小心选择,这些结构可以用来解决不同的数据问题。

这样讲可能比较抽象,我们可以以bitcoin作为例子,看看区块这个数据构造的细节。

一个区块储存多笔交易数据

上图是三个简化了的bitcoin「区块」(block),每个block 分为两部分,头(header)和交易(transactions),merkle root 的部份我们留待下一篇再解说。

你可以将每个block 想像成货船,header 是船的船名注册国家,注册号码之类的数据,而船上面装的货柜就是transactions。

每一艘船通过记录上一艘船的header hash,就好像用链(chain)连结起来成为一个连环船阵型。

每一艘船只会链结前后各一艘船,先后次序分明。这就是区块链这个词语的由来。

链(透过hash)将多个区块串起来

Hash 中文译作哈希,多用在数据摘要及认证核实之用,它的功能是为长短不一的输入数据压缩成一个指定长度的数值,这个数值就像指模一样,如果两个hash 一样,就可以确定两个hash 的原始数据是一样的。

哪怕只是稍为更改一下输入数据,hash 的数值都会大相径庭。

区块链的block 都用hash 来连结,如果有人想改动transactions 的数据,就需要重新计算那个block 及之后所有block 的hash,形成另一条chain,让新的block 继续加入。

以bitcoin 为例,现在成功计算一个block 的hash 平均需时9 分钟,即每9 分钟bitcoin 系统才可以加入一个新的block。

成功计算到一个hash可以获得12.5BTC,价值约90万港元,要更改几个block之前的数据代表你将要耗费大量的时间、运算资源和金钱成本才可以做到,因此窜改数据的难度极大。

区块链生态

有了区块链这个数据架构,就能形成一个生态系统,生态系统上有人提交交易记录和手续费,然后有人提供网络,核实数据,提供储存空间,写入数据,并将账本数据同步到网络上每一个节点。

区块链由于没有中央伺服器这个概念,提供服务的就是参加这个网络的所有节点。每一个节点其实就是一部电脑,上面安装了协助运行区块链系统的客户端软件(client)。

用户透过电子钱包(wallet)向区块链发出交易指示,节点收到指示后会收集足够数量的交易,计算hash,生成一个block,再将交易记录写到帐簿上,其他节点会帮忙核实。这样就算走完一个区块链的循环。