区块链的精髓在于其作为能实现高效、有信用、低成本的合作,而非仅仅是表面的去中心化、去中介。
Part 1 分布式记账
原理:
商业活动参与者首先要寻找一个多方均信任的第三方来记账, 确保交易的准确。
可以很容易设计出一个简单粗暴的分布式记账结构,如下图。多方均允许对账本进行任意读写,一旦发生新的交易即追加到账本上。这种情况下,如果参与多方均诚实可靠,则该方案可以正常工作;但是一旦有参与方恶意篡改已发生过的记录,则无法确保账本记录的正确性。
为防止恶意篡改, 可以引入验证机制. 使用数字摘要技术(digital digest). 每当有新交易记录被追加到账本上, 记录前面交易历史的 hash 值, 此后每个时刻, 参与者都可以重新计算 hash, 看是否与记录的 hash 匹配. 不匹配说明修改过, 也可以容易地定位修改的交易记录了不必要每次都计算前面所有历史的 hash, 可以计算 上次的 hash 加上当前交易 的 内容的 hash。
这正是一个区块链结构。
重要性:
分布式记账问题为何重要?可以类比互联网出现后对社会带来的重大影响。
互联网是人类历史上最大的分布式互联系统。作为信息社会的基础设施,它很好地解决了传递信息的问题。然而,由于早期设计上的缺陷,互联网无法确保所传递信息的可靠性,这大大制约了人们利用互联网进行大规模协作的能力。而以区块链为基础的分布式账本科技则可能解决传递可信信息的问题。这意味着基于分布式账本科技的未来商业网络,将成为新一代的文明基础设施——大规模的协作网络。
分布式账本科技的核心价值在于为未来多方协同网络提供可信基础。区块链引发的记账科技的演进,将促使商业协作和组织形态发生变革。
区块链的特点:
-
分布式容错性:分布式网络极其 robust , 能够容忍部分节点的异常状态;
-
不可篡改性:一致提交后的数据会一直存在,不可被销毁或修改;
隐私保护性:密码学保证了数据隐私,即便数据泄露,也无法解析。
可能带来的业务特性:
-
可信任性:区块链技术可以提供天然可信的分布式账本平台,不需要额外第三方中介机构参与;
-
降低成本:跟传统技术相比,区块链技术可能带来更短的时间、更少的人力,降低维护成本;
-
增强安全:区块链技术将有利于安全、可靠的审计管理和账目清算,减少犯罪风险。
Part 2 区块链的定义
狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求。
广义上,区块链还指代基于区块链结构实现的分布式记账技术,还包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
区块链的原理:
-
交易(transaction): 一次对账本的操作,导致账本状态的一次改变。
-
区块(block): 记录一段时间内发生的所有交易和状态结果.,是对当前账本状态的一次共识。
-
链(chain): 由区块按照发生顺序串联而成,是整个邦本状态变化的日志记录。
在实现上, 首先假设存在一个分布式的数据记录账本,只允许添加,不允许删除。
以比特币为例:
首先,比特币客户端发起一项交易,广播到比特币网络中并等待确认。网络中的节点会将一些收到的等待确认的交易记录打包在一起(此外还要包括前一个区块头部的哈希值等信息),组成一个候选区块。然后,试图找到一个 nonce 串(随机串)放到区块里,使得候选区块的哈希结果满足一定条件(比如小于某个值)。这个nonce 串的查找需要一定的时间进行计算尝试。
一旦节点算出来满足条件的 nonce 串,这个区块在格式上就被认为是“合法”了,就可以尝试在网络中将它广播出去。其它节点收到候选区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,并添加到自己维护的区块链上。当大部分节点都将区块添加到自己维护的区块链结构上时,该区块被网络接受,区块中所包括的交易也就得到确认。
这种基于算力寻找 nonce 串的共识机制成为 PoW(Proof of Work). (还有很多其他共识机制 PoX, 如 PoS (stake)...)。
Part 3 区块链的演化
比特币区块链支持简单的脚本计算, 仅限于数字画笔相关的处理. 还可以将区块链上执行的处理过程进一步泛化,即提供 智能合约 Smart Contract. 由此提供除货币交易功能外更灵活的合约共功能,执行更为复杂的操作。
Part 4 关键问题与挑战
抗抵赖与隐私保护
-
怎么防止交易记录被篡改
-
怎么证明交易双方的身份
-
怎么保护交易双方的隐私
分布式共识
指标: 容错的结点比例, 决策收敛速度, 出错后的恢复,动态特性等。
扩展性
不能简单得增加结点来扩展整个系统的处理能力。
对于比特币和以太坊区块链而言,网络中每个参与维护的核心节点都要保持一份完整的存储,并且进行智能合约的处理。此时,整个网络的总存储和计算能力,取决于单个节点的能力。甚至当网络中节点数过多时,可能会因为一致性的达成过程延迟降低整个网络的性能。尤其在公有网络中,由于大量低性能处理节点的存在,问题将更加明显。
要解决这个问题,根本上是放松对每个节点都必须参与完整处理的限制(当然,网络中节点要能合作完成完整的处理),这个思路已经在超级账本