许多人对区块链的认识止步比特币一类的虚拟货币,但实际上区块链的使用的场景除此之外还有很多。这篇文章会介绍 基础的区块链原理区块链的特点区块链能解决的问题,以及目前主流应用(包括企业应用)。无需技术背景也可以读懂。

历史

还是得从历史开始说起。很多人以为区块链 (Blockchain) 是由中本聪(Satoshi Nakamoto) 提出的。其实不是。

1982 年,美国的密码学家 David Chaum 就提出了区块链,并推乎了产品 e-cash, 想要在互不信任团体 (Group) 中,建立一套可以使他们相互信任的计算机系统,并于1989年创建了DigiCash公司[1],这套系统被一些小银行用于小额支付系统,但依然需要中心机构的协助,公司于1998年破产[2]

在2008年之前,区块链技术虽然在进步,但都遇见了一些无法解决的难题,直到 2008年,一个署名为中本聪的人(或团体),发了篇论文,发明了比特币(bitcoin)。解决了之前没解决诸多问题。 2009 年第一个比特币公链上线。

超简明区块链原理

过去,交易流水帐(ledger)都存储在机构的中心数据库上的。比如你在银行的交易流水是存在银行数据库上,你在支付宝的交易流水是存在支付宝的中心数据库上。这些数据是中心化的,就是说这个机构,有所有的权限去修改数据库,比如修改某个人的余额,或者冻结某个账户。

中心化数据库是如何记账的

想要搞清楚区块链,一定要先知道中心化的数据库是如何记账的。

举个例子:
假设有一个不诚信的支付平台叫做 EvilPay,他们目前正在使用的是一款中心化的数据库。所有的用户的信息,交易记录,余额都存在他们的数据库里。

假设 Evilpay 里有两个账户和 A,B。在2022年1月1日,他们的余额都是10元。

2022年1月2日,发生了一笔交易,B向A转账10元。

对这个交易 Evilpay 的数据库里是这个样子的:

交易ID时间账户ID交易对象ID交易金额余额备注
12022/04/01BA-55向A转账
22022/04/01AB+515接受B的转账

第一行表示,B向A转账5元,B的余额为5.

第二行表示,A收到了B的转账,A的余额为15.

以上交易流水都存储在 Evilpay 的中心数据库里。即 Evilpay 拥有全部的权限对数据库的权限,也就是说他们可以任意的修改数据库数据。

假设此时又有一个账户C,是Evilpay的秘密账户。Evilpay 想要窃取你的钱,他会怎么做?有两种方法

  1. Evilpay 新建一笔交易把A和B的所有钱都转帐到C上。
  2. Evilpay 直接篡改交易记录,把B本来转给A的钱,转给C。

所以,作为Evilpay 的客户,我们当然不希望平台可以偷走我们的钱,此时我们想要解决的两个问题是:

  1. 不会有任何人能够篡改之前的交易记录。
  2. 在没有我的同意下,没有任何人可以以我的名义,发起任何交易。

比特币可以解决这两个问题。

区块链的数据结构

如下是区块链的数据结构

每一个区块(block)至少存有三个信息,前一个区块的Hash值,本区块的Hash值,以及交易记录。

这里需要一点基础的密码学知识。
Hash 最通俗的解释是一个指纹。世界上没有任何两个人拥有一摸一样的指纹,我们可以说知道了一个人的指纹,就能够知道这个人是谁。所以每个block里存储的信息,可以理解成 [前一个区块的指纹,本区块的指纹,和交易流水]。

假如,黑客想要偷偷篡改区块2上的一个交易,那么区块2的hash就会改变。那么区块3就找不到区块2了,因为区块2的hash已经改变了。所以,黑客破坏一个区块,就等于破坏了那个区块之后的所有区块。

那黑客有可能篡改那个区块后的所有区块,达到自己的目的吗?答案是,有可能。在中心化的数据库中时可能的,但是在去中心化的区块链中:几乎不可能。

区块链如何交易

区块链是分布式的,世界各地有上万个节点,每个节点里运行着完整的区块链数据库,暂时把这些人理解成矿工。

假设有一笔交易,B向A转账了5元。他需要向全世界所有的节点广播,告诉大家我像A转账了5元。如果有一个幸运的矿工接收到这个信息,并且把这笔交易打包在到当前的区块中。然后这个区块之后,又长出了几个区块(通常认为是5个),我们就可以认为这币交易被确认了。(为什么要长出来几个区块才能确认,这里涉及到更进阶的知识,以后有机会再讲)

区块链如何保证数据不被篡改?

首先,区块链是少数服从多数的。如果黑客只是篡改了自己节点的数据库,别的节点发现黑客的节点跟自己和大多数的节点的都不一样,就会判定这个节点是不诚实的,这个节点也就被踢出了游戏。

所以,黑客想要篡改一条记录,必须攻击超过50%以上的节点。但,这几乎是不可能的。

区块链只能用来做虚拟货币吗?

区块链的应用只是虚拟货币吗?还有没有别的应用呢?有的,比如现在很火热的数字藏品(NFT),De-fi(去中心化金融)和 DAO(去中心化自治组织),除此之外还可以应用在如供应链,食品追溯,慈善等等。这些应用都是在智能合约的基础上实现的。

智能合约

智能合约简单的讲就是写在每一笔交易上的一段代码,这段代码是用来描述这笔交易是做什么的。比如说A向B转账,在智能合约里就得写上A transfer 1.0 to B。 只有这样,每个节点才能理解这笔交易。

比特币时代,智能合约是很简陋的,仅支持简单的的操作,比如转帐。直到2013年,年仅20岁,出生在俄罗斯的 Nick Szabo发明了以太坊。以太坊支持图灵完备的编程语言,给区块链提供了更多的玩法。

举个例子:
买卖双方,是存在不信任的。尤其是线上购物。比如,在某宝买东西付款之后,支付宝会临时为我们托管资金,等买家收到货确认无误,资金才会转入卖家账户。这里例子里,信用良好的支付宝充当了一个信任中介。买卖双方不需要相信对方,只要相信支付宝,就可以完成这笔交易。

智能合约就可以充当这个中介。只用把上述的逻辑规则改成代码写进智能合约,区块链按照代码严格的运行。可以过去你相信支付宝,现在你可以相信代码。

区块链的企业应用

2015年年末, Linux Foundation 开启了 Hyperledger 项目,想让区块链满足现代企业运营需求。 先去区分几个的概念

区块链的有两个特点是不可篡改和公开透明。那么他可以解决不同团体之间的信任问题,和数据孤岛的问题。以下是几个案例

  • 供应链
    过去上下游企业中都使用不同的信息系统,并且只和与自己对接的上一家企业或下一企业交换有限的信息。这样货物的追溯和追踪就变的十分困难,这就是数据孤岛,及每个公司的信息不互相通。 如果产品最终出了问题,那么涉事企业就可以篡改数据来逃避责任。(毕竟数据是存在自己的数据库里)。如果使用上了区块链,涉事企业想要篡改数据就非常难了。
  • 医疗系统
    过去每家医院都有自己独立的信息系统。每家医院的信息系统都是独立的,有些甚至是纸质的。如果将医疗数据上链,可以一定程度上解决医院之间信息沟通的问题。 [3]

什么场景下使用区块链链?

不是所有的场景,都适合使用区块链解决。需要考虑一下几点:

  • 是否存储静态的数据
    区块链的数据一旦写入是不可以修改的。只有静态数据适合区块链。
  • 是否有多个团体(groups) 使用这条区块链
    如果只有一个团体,就不需要区块链了。
  • 是否会有不诚实的团体使用区块链
    区块链只能保证已写入的数据不被篡改,但不能保证写入的数据是否是真实的。
  • 是否需要公众监督
    区块链上的数据不可篡改,公开透明。比如在慈善场景中,可以一定程度消除捐款者和慈善基金间的不信任。

Hey,我是 Alex Teng。欢迎关注我的公众号「亚历山大疼」。


 

[1]wikipedia: https://en.wikipedia.org/wiki/David_Chaum

[2]Guide to Blockchain: https://yeasy.gitbook.io/blockchain_guide/01_history/bitcoin

[3]What is blockchain?: https://www.oracle.com/blockchain/what-is-blockchain/