从技术角度看,区块链是一种利用去中心化和去信任的方式集体维护一本数据簿的可靠性的技术方案。该方案要让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块(block)的每个数据中都包含了一定时间内的系统全部信息交流的数据,并生成数据指纹用于验证其信息的有效性和链接下一个数据库块。
如果我们要去中心化,那么我们应该如何做?
第一是去掉维护者这个身份,如何去掉它又能保证交易正常完成且真实可靠呢?首先,在区块链上我们只记录交易本身,而不是记录每个人的账户余额。然后,大家一起记账,都写到一个账本(区块链)上,并且每个人都保留一份总账副本。
这个问题其实分两层,第一层是一个技术问题,并且已经有成熟的解决方案了,就是使用P2P技术(BT技术),大家都来同步分布式总账本,大家发送交易直接到节点,并且通过公私钥技术来验证节点;第二层是一个确认真实交易的问题,我们通过共识过程(consensus progress)来确认交易的有效性。目前有四种共识过程可以选择:工作量证明(POW)、权益证明(POS)、股份授权证明机制(DPOS)、验证池(POOL)。
第二是去掉特权参与者这个身份,如何去掉它又能保证资产的流通呢?这个问题也是一个核心问题。在公有链上,可以发行自己的虚拟货币,如bitcoin和litecoin。而在私有链的实现方式里,是将资产直接数字化,可以将对应的物理实体细分所有权发行。
1. 区块
Header:链接到前面的块并且为区块链提供完整性
Body:包含验证了块创建过程中的比特币交易的记录
2. 链
链目前分为三类:
公有区块链(public BlockChains)
公有区块链是指世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是(目前)应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链。
联合(行业)区块链(consortium BlockChains)
联合(行业)区块链是指由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账。预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。
私有区块链(private BlockChains)
私有区块链是指仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。截至2015年底,保守的巨头(传统金融)都是想实验尝试私有区块链,而公链的应用例如比特币已经工业化,私链的应用产品还在摸索当中。
如何建立一个严谨数据库呢?
区块链的办法是将数据库的结构进行创新。顾名思义,区块链就是区块加链的方式组合在一起,以这种方式形成的数据库就是我们所谓的区块数据库。区块链是系统内所有节点共享的交易数据库,这些节点基于价值交换协议参与到区块链的网络中来。
区块链是如何做到的呢?
由于每一个区块的块头都包含了前一个区块的交易信息哈希值,这就使得从创始块(第一个区块)到当前区块连接在一起形成了一条长链。由于如果不知道前一区块的“交易缩影”值,就没办法生成当前区块,因此每个区块必定按时间顺序跟随在前一个区块之后。这种所有区块包含前一个区块引用的结构让现存的区块集合形成了一条数据长链。
“区块+链”的结构为我们提供了一个数据库的完整历史,从第一个区块开始,到最新产生的区块为止,区块链上存储了系统全部的历史数据;区块链为我们提供了数据库内每一笔数据的查找功能;区块链上的每一条交易数据,都可以通过区块链的结构追本溯源,一笔一笔进行验证;“区块+链+时间戳”是区块数据库的最大创新点,区块链数据库让全网的记录者在每一个区块中都盖上一个时间戳来记账,表示这个信息是这个时间写入的,形成了一个不可篡改、不可伪造的数据库。
领取专属 10元无门槛券
私享最新 技术干货