课程:《密码与安全新技术专题》
班级: 1892
姓名: 张鸿羽
学号:20189217
上课教师:张健毅
上课日期:2019年4月23日
必修/选修: 选修
一.本次讲座的学习总结
区块链
什么是比特币
比特币(Bitcoin),是一种由开源的P2P软件产生的电子币,数字币,是一种网络虚拟资产。比特币基于一套密码编码、通过复杂算法产生,这一规则不受任何个人或组织干扰,去中心化;任何人都可以下载并运行比特币客户端而参与制造比特币;比特币利用电子签名的方式来实现流通,通过P2P分布式网络来核查重复消费。每一块比特币的产生、消费都会通过P2P分布式网络记录并告知全网,不存在伪造的可能。
比特币的特点
- 数字货币。
- 不依托于任何国家或组织而利用计算机技术独立发行。
- 通过P2P分布式技术实现,无中心点。
- 所有人均可自由的参与。
- 总量有限,不可再生。
- 本身机制开源,可以被山寨。
比特币交易
每一位所有者(A)利用他的私钥对前一次交易T1和下一位所有者(B)的公钥(俗称:地址)签署一个随机散列的数字签名,A将此数据签名制作为交易单T2并将其(交易单T2)广播全网,电子货币就发送给了下一位所有者。
其中:
1.交易发起者的私钥:私钥为个人所知,他人无从知晓。
2.前一次交易:前一次交易数据说明了该次交易的货币的来源(这部分货币是怎么到当前发起人这里来的)。
3.下一位所有者的公钥:即交易接收方的地址,此数据说明了当前交易的目标是谁。
4.数字签名:发起方将前一次交易数据和接收方公钥连接起来并对其求Hash值x,再利用自己的私钥对x加密,便得到了这份数字签名。
Block
- 比特币网络中,数据以文件的形式被永久记录,称之为区块(Block)。
- 记录交易单的数据单元叫做Block,一个Block上会记录很多交易单。
- Block有很多份,每个Block只记录比特币全网10分钟内的交易信息,每约10分钟产生一个新的Block。
- 每个新的Block含有的一定数额的比特币归创建者所有,此规则称为“激励”。
比特币虽然是电子货币,但比特币系统中并没有特定的数据结构用来单纯代表货币。本质上,比特币的存在是通过交易单来提现。通俗的来讲,现实生活中我们有实在的纸张来代表我们的货币(比如面值10块的RMB纸张代表着10块钱RMB),当我们去银行核对财务时银行也提供对账单来表示我们的货币去留。比特币的提现依托于交易单,交易单类似于银行的对账单,其通过记录货币的去留来证明你有多少货币,而不是提供给你具体的货币单元。
挖矿工作
生产Block的过程,被形象的称为“挖矿”,生产工也被称为“矿工”。
挖矿过程实际上就是反复去尝试寻找一个随机数(又称“幸运数”),使得将最后一个Block的hash值、当前世界中尚未被加入到任何Block的交易单、随机数三部分组织起来送入SHA256算法计算出散列值X(256位),如果X满足一定条件(比如前20位均为0),那么该节点初步获得创建Block的权利。
工作量证明难度系数
对于每个Block存在一个难度系数,此系数可以转换为一个256位的整数,挖矿计算出的Hash值X必须小于该整数,此条件作为寻找随机数的附加条件。
当某时刻网络检测到新Block的产生速度不符合约10分钟一个时,将调解该系数(加大或者缩小),从而使下一个Block的产生速度符合预期。
每当节点(矿工)计算出了一个符合条件的随机数时,它仅仅获得了创建临时Block的权利,它立即将相关数据打包好作为一个临时Block并广播全网。
每10分钟内全网不止一个节点能计算出幸运数字,即十分钟内会有多个节点在网络中广播它们各自打包好的临时Block(都是合法的)。通过谁先计算出谁后计算出来决定接受谁的临时Block转正显然很难做到,因为所有节点的时间不可能严格一致(而且可以任意被调节),而且网络传输有快有慢。
Block链分支
某一节点若收到多个针对同一前续Block的后续临时Block,则该节点会在本地Block链上建立分支,多个临时Block对应多个分支。
从block hash算法我们知道,合理的block并不是唯一的,同一高度存在多个block的可能性。那么,当同一个高度出现多个时,主链即出现分叉(Fork)。遇到分叉时,网络会根据下列原则选举出Best Chain:
- 不同高度的分支,总是接受最高(即最长)的那条分支
- 相同高度的,接受难度最大的
- 高度相同且难度一致的,接受时间最早的
- 若所有均相同,则按照从网络接受的顺序
- 等待Block Chain高度增一,则重新选择Best Chain
分支博弈
我们假设所有的节点都是理性的,追求收益最大化;都是不诚实的,且不惜任何手段获取利益;所有节点均独自挖矿不理会其他节点,并将所得收益放入自己口袋,现象就是一个节点挖一个分支。由于机器的配置总是有差别的,那么算力最强的节点挖得的分支必然是最长的,如果一个节点的分支不是最长的,意味其收益存在不被认可的风险(即零收益)。为了降低、逃避此风险,一些节点肯定会联合起来一起挖某个分支,试图成为最长的分支或保持最长分支优势。
一旦出现有少量的节点联合,那么其他节点必然会效仿,否则他们收益为零的风险会更大。于是,分支迅速合并汇集,所有节点都会选择算力更强的分支,只有这样才能保持收益风险最小。最终,只会存在一个这样的分支,就是主干分支(Best/Main Chain)。
对于不诚实节点来说,结局是无奈的:能且只能加入主干挖矿。不加入即意味被抛弃,零收益;加入就是老实干活,按占比分成。
区块链技术
点对点对等网络
- 网格网络
- 权限对等、数据公开
- 数据分布式、高冗余存储
共识机制
- 工作量证明(PoW)
- 权益证明(PoS)
- 基于信任的Quorum
PoS是PoW的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。在一定程度上缩短了共识达成的时间,但还是需要挖矿,本质上没有解决商业应用的痛点。
共识机制防止了“双重支付”
- 信息复制的零边际成本vs价值的唯一不可复制性
- 信息互联网->价值互联网
数据可验证
- PKI公钥体系
- 数字签名提供密码学证据
- 零知识证明
- 数字签名提供密码学证据
- 不可变数据
- 只可添加,不可编辑
- 不可变数据+时间戳,为互联网加上了时间轴
- 只可添加,不可编辑
奖励合作的制度设计
- 非合作博弈--不基于信任,无外部强制力
- 合作是一种演化稳定策略,合作达到纳什均衡
- 51%攻击问题
51%攻击
攻击步骤:
- 将手中的BTC充值各大交易所,然后卖掉,提现;或者也可以直接卖给某人或某一群人;
- 运用手中的算力,从自己对外付款交易之前的区块开始,忽略自己所有对外的付款交易,重新构造后面的区块,利用算力优势与全网赛跑,当最终创建的区块长度超过原主分支区块,成为新的主分支,至此,攻击完成;
攻击结果:
由于撤销了所有对外付款交易,等于收回来所以已卖掉的比特币。
可行性评估:
现在比特币全网算力差不多90T,而且还会快速增长,现在看来只有现在的几大矿池联合,才具有发动51%攻击的实力,普通个人或机构实施此攻击的可能性越来越小。
区块链与未来
区块链技术发展的三个阶段(领域)【货币、合约、治理】交叉重叠。
货币
- 货币的发行机制
- 货币的分配机制
- 货币的币值调节机制
合约
- 股权、债权
- 证券与金融合约
- 互助保险
- 权利的登记、转让
- 博彩
- 防伪
- 物联网
- 智能合约
治理
- 身份认证
- 公证、见证
- 司法仲裁
- 投票
- 健康管理
- 人工智能
- 去中心化自治组织
二.学习中遇到的问题及解决
问题1:
PoW和PoS的各有什么特点和优缺点?
问题1解决方案:
PoW
比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。
PoW的典型代表是比特币。
优点:
- 算法简单,容易实现。
- 节点间无需交换额外的信息即可达成共识。
- 破坏系统需要投入极大的成本。
缺点:
- 浪费能源。
- 区块的确认时间难以缩短。
- 新的区块链必须找到一种不同的散列算法,否则就会面临比特币的算力攻击。
- 容易产生分叉,需要等待多个确认。
- 永远没有最终性,需要检查点机制来弥补最终性。
PoS
POS也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。 它将PoW中的算力改为系统权益,拥有权益越大则成为下一个记账人的概率越大。简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。
PoS的典型代表是以太坊。
优点:
- 不像Pow那么费电。
缺点:
- 没有专业化,拥有权益的参与者未必希望参与记账。
- 容易产生分叉,需要等待多个确认。
- 永远没有最终性,需要检查点机制来弥补最终性。
三.本次讲座的学习感悟和思考
本次讲座之前我对比特币和区块链的了解不深,甚至对这两个概念的认知有重叠,这次讲座让我对比特币、区块链的历史有了系统的了解,对于区块链的技术也有了较为详细的认识,明白了这个机制是怎么正常运作的,也看到了区块链技术在各行各业广泛的应用价值。但区块链这一概念毕竟只存在了十年,目前还并没有大范围地应用于我们的生活中,仍处于探索阶段。另外,区块链的安全性、机制合理性等还需要进一步的检验。
四.最新研究现状
论文1
A Better Method to Analyze Blockchain Consistency
一种更好的区块链一致性分析方法
- 期刊/会议名称: ACM2018
- 作者信息:Lucianna Kiffer, Rajmohan Rajaraman, abhi shelat
研究进展
本文的贡献是开发了一种简单的基于马尔可夫链的方法,用于分析区块链协议的一致性属性。该方法包括陈述强集中界限的正式方式以及具体计算边界的简单方法。本文使用本文的新方法来回答关于区块链一致性的一些基本问题:本文的新分析为Nakamoto协议的一致性提供了更严格的保证,包括无法考虑的参数制度;本文分析参与者在考虑高价值交易“确认”之前应该等待多长时间;本文分析了CliqueChain的一致性,CliqueChain是Chainweb系统的变体;本文提供GHOST的第一次严格的一致性分析,并分析民间传说“平衡”-攻击。在每种情况下,本文使用自己提出的框架来实验分析各种网络延迟参数和对抗计算百分比的共识边界。作者希望本文的技术能够使未来区块链提案的作者能够对其计划进行更严格的分析。
论文2
Bitcoin as a Transaction Ledger: A Composable Treatment
比特币作为交易分类帐:可组合处理
- 期刊/会议名称:CRYPTO 2017
- 作者信息:Christian Badertscher,Ueli MaurerDaniel TschudiVassilis Zikas
研究进展
比特币是现实中广泛使用的分布式加密协议的最突出的例子之一。尽管如此,现有的安全证明是基于属性的,因此它们不支持组合。本文针对此情况提出了比特币协议的普遍可组合处理。本文指定了比特币在Canetti等人的(G)UC模型中作为分类账功能实现的目标。本文的分类账功能弱于Kiayias,Zhou和Zikas最近提出的功能,但不同于后者的建议,根据比特币假设,这可能无法实现,本文证明这里提出的是安全的UC实现通过适当抽象比特币作为UC协议的标准假设。本文进一步展示了如何将已知的基于属性的方法作为本文治疗的特殊实例以及如何在不限制环境或对手的情况下在(G)UC中投入其基本假设。
论文3
Analysis of theBlockchain Protocol in Asynchronous Networks
异步网络中的区块链协议分析
- 期刊/会议名称:EUROCRYPT 2017
- 作者信息:Rafael Pass (Cornell), Lior Seeman (Cornell, Harvard), Abhi Shelat (Northeastern)
研究进展
先前的人们分析区块链共识协议时,不是做简单假设(网络通道完全同步,即消息可以无延时立即传送),就是只考虑具体攻击。而且没有任何人处理玩家加入或退出协议。本论文证明区块链共识机制在一个有对抗延时(是先验边界)的异步网络满足强形式的一致性和活跃性,里面有一个允许自适应腐败和产生新玩家的正式模型,假设计算难题被建模为一个随机预言。(本文通过在完全异步情况下对区块链协议进行简单的攻击,显示这个难题的难度需要适当的依照网络最大延时函数来设置,从而来补足这个结果。)作为一个独立的贡献,本文定义了一个区块链协议的抽象概念,并且确定这些协议的适当安全属性;本文证明中本聪的区块链协议满足它们,且这些属性对于典型应用程序是足够的;本文希望这个抽象可以进一步简化区块链的应用。
论文4
The Bitcoin Backbone Protocol with Chains of Variable Difficulty
具有可变难度链的比特币主干协议
- 期刊/会议名称:CRYPTO 2017
- 作者信息:Juan A. Garay, Aggelos Kiayias, Nikos Leonardos
研究进展
比特币创新且分布式维护的区块链数据结构取决于所谓的“工作证明”的充分难度,矿工必须为了交易而插入。重要的是,这些工作证明必须足够严密,以便矿工有机会在有干扰但具有计算能力的对手面前统一他们的观点,但很容易定期解决并使矿工能够取得进展。因此,随着矿工人口的逐渐增长,这些证明的难度也随之增加。比特币提供了这种调整机制,经验证据表明,这种人口变化的块生成率不变。
论文5
A Software Defined Fog Node Based Distributed Blockchain Cloud Architecture for IoT
基于软件定义的雾域节点的物联网分布式区块链云架构
- 期刊/会议名称:IEEE Access 2018
- 作者信息:Pradip Kumar Sharma, Mu-Yen Chen, Jong Hyuk Park
研究进展
最近物联网(IoT)的扩张以及随之而来的智能设备产生的数据量激增,导致数据外包到指定的数据中心。但是,要管理这些庞大的数据存储,集中数据中心,如云存储无法承受吉祥的方式。由于连接到互联网的设备的多样性和数量的快速增长,传统网络架构必须解决许多挑战,这不是为了提供高可用性,实时数据传输,可扩展性,安全性,弹性,低延迟。为了解决这些问题,本文提出了一种新的基于区块链的分布式云架构,其具有软件定义网络(SDN),使网络边缘的控制器雾节点能够满足所需的设计原则。所提出的模型是基于区块链技术的分布式云架构,其提供对物联网网络中最具竞争力的计算基础架构的低成本,安全和按需访问。通过创建分布式云基础架构,该模型可实现经济高效的高性能计算。此外,为了将计算资源带到物联网网络的边缘并允许以安全的方式对大量数据进行低延迟访问,本文提供了一种使用SDN和区块链技术的安全分布式雾节点架构。雾节点是分布式雾计算实体,其允许雾服务的部署,并且由IoT网络边缘处的多个计算资源形成。本文评估了本文提出的架构的性能,并将其与使用各种性能测量的现有模型进行了比较。本文的评估结果表明,通过减少诱导延迟,缩短响应时间,提高吞吐量以及以低性能开销检测物联网网络中的实时攻击的能力,可以提高性能。
小结
区块链技术作为一个出现仅十年的技术,当前仍存在着共识机制选择问题、交易确认时间、处理交易频率、区块链体积等问题,这些问题也是当前区块链的重点研究方向。区块链技术源于比特币,但并不限于比特币,越来越多的人们开始尝试将区块链技术应用于不同领域。
参考资料
- 区块链中的共识机制都有哪些?