区块链与拜占庭将军问题
在很久以前,在现在的土耳其境内存在着一个富饶而强大的帝国——拜占庭帝国。受到财富和利益的诱惑,有一天分布在拜占庭周围的10个小国准备一起攻打这个帝国。但是要取得成功,这10个小国至少6个必须在同一时间采取统一行动,否则将被全部歼灭。
可是问题来了,这其中有人叛变,传递错误信息,那怎么同时进攻来取得胜利呢?在信息不对称、不确定的环境下,如何保证信息传递的真实性和及时性,让10个“各怀鬼胎”的联盟成员建立信任、统一采取行动?这就是著名的拜占庭将军问题,实际上这个问题的本质就是如何让众多完全平等的节点针对某一状态达成共识。其实生活中也会出现类似难题:敌人很强大,几个对手实力均等,只有联合起来可以打败强大的敌人,只要有一个对手退出势必失败。
对于拜占庭将军问题,一位计算机数学家设计了一套方案:共识账本+工作量证明。使用消息加密技术、以及公平的工作量证明机制,创建了一组所有将军都认可的协议(账本),这套协议的出现,拜占庭将军问题也就完美的得到了解决。
区块链1.0 2.0 与3.0
未来已来,只是还未流行。区块链按照与实际结合的程度,其发展主要经历了三个阶段,区块链悄然从1.0版完美转身成3.0版。
2009年,区块链1.0以数字货币为代表,比特币,被人疯狂追逐,也成了很多人的噩梦,具有支付、流通等货币职能。
2014年,区块链 2.0以智能合约为代表,智能合约和数字货币相结合,在金融领域的使用场景上进行应用,“以太坊”提供这样平台让用户搭建应用场景。例如,美国纳斯达克交易所开发区块链转让平台Linq,澳洲交易所用应用区块链簿记技术进行清算结算等。
2018年,区块链 3.0是以区块链为底层技术,在金融行业之外的各行业的应用场景,为各行各业提供解决“安全和信任”问题的智能方案。例如,爱沙尼亚打造的“区块链政府”,蚂蚁金服的“支付宝爱心捐赠平台”等。
区块链在路上
然而,区块链也并不完美。技术角度来看,首先,交易效率低,确认时间长。每秒交易数远远少于支付宝及其他类型支付,另外区块确认及验证时间几分钟到一个小时,相比较支付宝仅仅需要几秒钟。第二,高耗能的题。区块链所达到的去中心化和安全,以能耗成本作为代价,仍然是个“不可能的三角”(去中心化、安全、环保构成一个不可能三角形),譬如比特币挖矿每天消耗的电力资源达到了700万元。第三,区块链容量和带宽问题。因为需要把每一笔交易、每一个参与的节点都下载存储并实时更新、同步用户,可想而知增长速度非常惊人,另外网络带宽问题在大规模数据之下是的抗压性未可知。
除此以外,区块链与传统企业管理和政府监管不协调,例如,区块链的去中心化、去中介化特征和企业精益管理有冲突,区块链的匿名性特征可能被用来从事一些犯罪活动,有悖于政府监管。
什么区块链技术?
从本质上讲,区块链技术,是一种交易记录的存储技术。它对交易记录进行永久性存储,而且存储之后永远无法删除,只能按照次序加入新的交易,由此对所有的交易历史进行永不结束的记载。这个看似简单的功能描述,实则含义深刻。它促使我们,重新思考如何去创建交易、存储数据和交换资产。它是一场巨大变革的起点。
一句话描述区块链技术?
基于密码学安全的分布式账簿网络技术。
区块链技术核心点
-
一个点对点分布式网络(各网络节点同步数据)
-
一份所有交易的账簿数据(区块链)
-
一个去中心化的交易验证(基于密码学交易安全、脚本验证交易实现合约或智能合约)
-
一个去中心化的定量货币发行(分布式挖矿、矿池挖矿协议、工作量证明生成新区块)
一、点对点的P2P网络(Peer to Peer)
1.1 网络工作原理
新的交易向全网进行广播
每一个节点都将收到的交易信息纳入一个区块中
每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明
当一个节点找到了一个工作量证明,它就向全网进行广播
当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同 该区块的有效性
其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造 新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值
1.2 区块链网络组成部分
1.3 区块链网络详细流程图
二、区块链(Block Chain)
2.1 区块链原理及简介
区块链的实现方案首先提出一个“时间戳服务器”。时间戳服务器通过对以区块(block)形式存在 的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样组成一个楼层链条。显然,该时间戳能够证实特定数据必然于某特定时刻是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强, 这样就形成了一个链条。
2.2 区块链的连接
矿工会根据工作量证明每过特定时间挖到新的区块(如比特币:根据难度系数,工作量证明算法全网算力大概10分钟左右才能产生一个新区块;难度系数会根据全网算力的增加而调整,永远保证大概10分钟产生一个新的区块)。节点会在”父区块哈希值“字段找出包含它的父区块的哈希值。这是节点已知的哈希值,也就是如下图中第277314块区块的哈希值。故这个区块是这个链条里的最后一个区块的子区块,因此现有的区块链得以扩展。节点将新的区块添加到链条的尾端,使区块链变长到一个新的高度277315。
2.3 区块链 - 比特币创世区块信息
三、交易(Transactions)
我们定义,一枚电子货币(an electronic coin)是这样的一串数字签名:每一位所有者通过对前一次交易和下一位拥有者的公钥(Public key) 签署一个随机散列的数字签名,并将这个签名附加在这枚电子货币的末尾,电子货币就发送给了下一位所有者。而收款人通过对签名进行检验,就能够验证该链条的所有者。
3.1 复式记账薄式交易
3.2 交易中的输入与输出
一笔数字货币的交易是一个含有输入值和输出值的数据结构。该数据结构植入了将一笔资金从初始点(输入值)转移至目标地址(输出值)的代码信息。数字货币交易的输入值和输出值与账号或才身份信息无关。你应该将它们理解成一种被特定密钥信息锁定的一定数量的数字货币。只有拥有者这个密钥信息的人可以解锁。
一般交易,最常见的交易形式是从一个地址到另一个地址的简单支持。这种交易也常常包含给支付者”找零“。
集合型交易,是集合多个输入到一个输出的模式,相当于现实生活中将很多硬币和纸币兑换为一个 大额面钞。
分散型交易,是将一个输入分配给多个输出,这类交易类似于老板给员工发工资的情形,从一个账号转账给多个账号。
3.3 交易数据(Transactions Data)
比特币的交易数据结构
四、工作量证明(Proof-of-Work)
4.1 工作量简介
为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组 一样工作是不够的,我们还需要一个类似于亚当·柏克(Adam Back)提出的哈希现金(Hashcash) 。在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说 SHA-256 下,随机散列值以一个或多个0 开始。那么随着 0 的数目的上升, 找到这个解所需要的工作量 将呈指数增长,但是检验结果仅需要一次随机散列运算。
我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现 了所需的那么多个0。我们通过反复尝试来找到这个随机数,找到为止。这样我们就构建了一 个工作量证明机制。只要该 CPU 耗费的工作量能够满足该工作量证明机制,那么除非重新完 成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想 要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
4.2 挖矿
1) 挖矿是增加数字货币供应的一个过程,挖矿同时还保护着数字货币系统的安全。
2) 矿工们在挖矿过程会得到两种类型的奖励:创建新区块的新币奖励,以及区块中所含的交易费。
4.3 矿池挖矿
在激烈的算法竞争的环境中,个体矿工独立工作(solo挖矿)是没有一点机会。他们可以通过矿池协议合作组成矿池,共同协作挖矿分享奖励。
本文来源:
-
作者:潘静波:课题编号19ZC22;课题名称:链动浙江,互联未来——漫画区块链金融
-
作者:陶海军;腾讯通讯充值与彩票业务部 高级工程师
本文来自,仅作分享,存在异议请联系平台删除。本文观点不代表刺猬财经 - 刺猬区块链资讯站立场。