课程:《密码与安全新技术专题》
班级: 1892班
姓名: 李炀
学号:20189215
上课教师:谢四江
上课日期:2019年4月23日
必修/选修: 选修
1.本次讲座的学习总结
讲座主题:区块链技术
区块链
- 比特币:是一种由开源的P2P软件产生的电子币,数字币,是一种网络虚拟资产。比特币基于一套密码编码、通过复杂算法产生,这一规则不受任何个人或组织干扰,去中心化;任何人都可以下载并运行比特币客户端而参与制造比特币;比特币利用电子签名的方式来实现流通,通过P2P分布式网络来核查重复消费。每一块比特币的产生、消费都会通过P2P分布式网络记录并告知全网,不存在伪造的可能。
- 比特币的特点:
- 数字货币
- 不依托于任何国家或组织而利用计算机技术独立发行
- 通过P2P分布式技术实现,不受任何个人或组织干扰,去中心化
- 所有人均可自由地参与(因此比特币是很多黑灰产业的交易工具)
- 总量有限,不可再生(因此比特币极具投机色彩)
- 机制开源,可以被山寨(所以有很多币种)
- 比特币交易
- 交易单:交易单记录一笔交易的具体信息,比如付款人(交易发起方的公钥)、收款人(交易接收方的公钥)、付款金额(上一笔交易信息)、付款人签名(加密后的Hash值)等。
- 如何交易:每一位所有者(A)利用他的私钥对前一次交易T1和下一位所有者(B)的公钥(俗称:地址)签署一个随机散列的数字签名,A将此数据签名制作为交易单T2并将其(交易单T2)广播全网,电子货币就发送给了下一位所有者。
- 交易发起者的私钥:私钥为个人所知,他人无从知晓。
- 前一次交易:前一次交易数据说明了该次交易的货币的来源(这部分货币是怎么到当前发起人这里来的)。
- 下一位所有者的公钥:即交易接收方的地址,此数据说明了当前交易的目标是谁。
- 数字签名:发起方将前一次交易数据和接收方公钥连接起来并对其求Hash值x,再利用自己的私钥对x加密,便得到了这份数字签名
- 验证交易:
- 利用交易T2中交易的发起方A的公钥对签名进行解密,得到整数x。
- 将T1交易数据和B的公钥连接起来,用同样的Hash算法计算Hash值y。
- 若x==y,说明:
- 这笔交易确实是A本人发起的,因为只有A本人的私钥才可以生成此 签名(A同时也无法否认自己曾签署了此份交易)。
- 交易的目的方确实是B。
- 发起方确实是打算把交易T1中A获得的货币发送给B。
- 本质上,比特币的存在是通过交易单来提现。
- 交易单类似于银行的对账单,其通过记录货币的去留来证明你有多少货币,而不是提供给你具体的货币单元。
- 交易单:交易单记录一笔交易的具体信息,比如付款人(交易发起方的公钥)、收款人(交易接收方的公钥)、付款金额(上一笔交易信息)、付款人签名(加密后的Hash值)等。
- Block
- 比特币网络中,数据以文件的形式被永久记录,称之为区块(Block),Block是记录交易单的数据单元,一个Block上会记录很多交易单。
- 区块的“面容”如下图,所有区块以双向链表的方式链接起来,且每个Block都会保存其上一个Block的Hash值,就变成了区块链。
- 第一个Block没有上一节点,称为创世Block。
- Block有很多份,每个Block只记录比特币全网10分钟内的交易信息,每约10分钟产生一个新的Block。
- 挖矿
- 生产Block的过程,被形象的称为“挖矿”,生产工也被称为“矿工”。
- 一个Block被创建后,这个Block里初始就有钱(归创建这个Block者所有,此规则称为“激励”)
- 第0个 – 第21万个Block,每个Block里有50个比特币
- 第21万-第42万个Block,每个Block里有25个比特币(2016年)
- 依次递减,最后比特币全网中只会有2100万个比特币
- 最后比特币的实际可用个数应少于2100W,因为会有部分币随着拥有者的密钥丢失而永远的无法流通(尽管记录这些币的交易单还在,但谁也无法使用它)
- 挖矿过程实际上就是反复去尝试寻找一个随机数(又称“幸运数”),使得将最后一个Block的hash值、当前世界中尚未被加入到任何Block的交易单、随机数三部分组织起来送入SHA256算法计算出散列值X(256位),如果X满足一定条件(比如前20位均为0),那么该节点初步获得创建Block的权利
- 工作量证明难度系数
- 对于每个Block存在一个难度系数,此系数可以转换为一个256位的整数,挖矿计算出的Hash值X必须小于该整数,此条件作为寻找随机数的附加条件。、
- 当某时刻网络检测到新Block的产生速度不符合约10分钟一个时,将调解该系数(加大或者缩小),从而使下一个Block的产生速度符合预期。
- 每当节点(矿工)计算出了一个符合条件的随机数时,它仅仅获得了创建临时Block的权利,它立即将相关数据打包好作为一个临时Block并广播全网。
- Block链分支,某一节点若收到多个针对同一前续Block的后续临时Block,则该节点会在本地Block链上建立分支,多个临时Block对应多个分支。
- 分支选择Best Chain:
- 不同高度的分支,总是接受最高(即最长)的那条分支
- 相同高度的,接受难度最大的
- 高度相同且难度一致的,接受时间最早的
- 若所有均相同,则按照从网络接受的顺序
- 等待Block Chain高度增一,则重新选择Best Chain
区块链技术
- 点对点对等网络
- 网格网络
- 权限对等、数据公开
- 数据分布式、高冗余存储
- 共识问题
- 工作量证明(PoW)
- 权益证明(PoS):Pow的一种升级共识机制;根据每个节点所占代币的比例和时间;等比例的降低挖矿难度,从而加快找随机数的速度。优点是在一定程度上缩短了共识达成的时间,缺点是还是需要挖矿,本质上没有解决商业应用的痛点。
- 基于信任的Quorum:是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法。
- 数据可验证
- PKI公钥体系
- 数字签名提供密码学证据
- 零知识证明
- 不可变数据
- 只可添加,不可编辑
- 不可变数据+时间戳,为互联网加上了时间轴
- PKI公钥体系
- 奖励合作的制度设计
- 非合作博弈--不基于信任,无外部强制力
- 合作是一种演化稳定策略,合作达到纳什均衡
- 51%攻击问题
- 51%攻击问题
- 攻击步骤:
- 将手中的BTC充值各大交易所,然后卖掉,提现;或者也可以直接卖给某人或某一群人;
- 运用手中的算力,从自己对外付款交易之前的区块开始,忽略自己所有对外的付款交易,重新构造后面的区块,利用算力优势与全网赛跑,当最终创建的区块长度超过原主分支区块,成为新的主分支,至此,攻击完成;
- 攻击结果:由于撤销了所有对外付款交易,等于收回来所以已卖掉的比特币。
- 可行性评估:现在比特币全网算力差不多90T,而且还会快速增长,现在看来只有现在的几大矿池联合,才具有发动51%攻击的实力,普通个人或机构实施此攻击的可能性越来越小。
- 攻击步骤:
区块链与未来
- 区块链技术发展的三个阶段交叉重叠:货币、合约、治理。
- 货币Currency
- 货币的发行机制
- 货币的分配机制
- 货币的币值调节机制
- 合约Contract
- 股权、债权
- 博彩
- 证券与金融合约
- 防伪
- 互助保险
- 物联网
- 权利的登记、转让
- 智能合约
- 治理Governance
- 身份认证
- 公证、见证
- 司法仲裁
- 投票
- 健康管理
- 人工智能
- 去中心化自治组织
2.学习中遇到的问题及解决
- 问题1:比特币挖矿的“激励”机制,在后来挖矿的收益变得很小时,如何发挥作用?
- 问题1解决方案:通过搜索和论文阅读,发现比特币为矿工提供了两种激励措施,分别为创建block的激励机制和交易费用的激励机制。在比特币整个系统启动时,挖矿创建block的收益占绝大多数,随着每个block的奖励减少,交易费用的激励机制占据的比例逐渐增加,更多的是奖励矿工交易的手续费。
- 问题2:区块链的共识机制。
- 问题2解决方案:区块链技术的核心是由系统中节点竞争进行记账,这个竞争的评判标准称之为“共识机制”,不同的区块链可能采用不同的共识机制。下面说一下POW(工作量证明)和POS(权益证明机制)
POW(Proof of Work,工作量证明)
比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。
优点是:
1.去中心化,将记账权公平的分派到其他节点。能够获得币的数量,取决于挖矿贡献的有效工作。
2.安全性高,破坏系统需要投入极大的成本,如果想作弊,要有压倒大多数人的算力(51%攻击)。
缺点是:
1.挖矿造成大量的资源浪费,bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全。这让依据算力公平分配奖励的机制,演变为了对矿机算力的大举投入,扭曲了中本聪的设计初衷。
2.网络性能太低,需要等待多个确认,容易产生分叉,区块的确认共识达成的周期较长(10分钟)。
3.PoW共识算法算力集中化,慢慢的偏离了原来的去中心化轨道。POS(Proof of Stake,权益证明机制)
类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。
简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。
优点是在一定程度上缩短了共识达成的时间。
缺点是还是需要挖矿,本质上没有解决商业应用的痛点。
3.本次讲座的学习感悟、思考等
在这次讲座之前,我对于区块链和比特币知识略有耳闻,有一个大概的概念,知道挖矿是计算一个数值,但没有深入、全面地了解这个方面。这次讲座为我们详细地讲解了区块链的产生和发展,由匿名作者中本聪发布的《比特币:一种点对点的电子现金系统》白皮书,演化成为今天这个比特币体系,虽然在我国比特币交易是明令禁止的,但技术是无罪的。讲座让我对区块链的知识有了全面的了解,对系统整体的运行方式和流程有了认识,这一技术还在不断地发展、扩充中,目前来看它的设计是“精妙绝伦的”,但它的机制合理性、系统安全性、系统稳定性等还需要更长时间的验证。
4.最新研究现状
论文1:Bitcoin: A Peer-to-Peer Electronic Cash System点此查看
作者:Satoshi Nakamoto
研究进展:
这篇论文虽然时间比较久远,但它的意义无比巨大,这是匿名作者使用“中本聪”的化名在2008年发表的一篇白皮书,提出了比特币这么一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。
为了解决交易中的双重支付问题,提出了一个新的解决方案,该方案提出一个“时间戳服务器”。时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,显然,该时间戳能够证实特定数据必然于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(reinforcing),这样就形成了一个链条(Chain)。
为了在点对点的基础上构建一组分散化的时间戳服务器,还需要一个类似于Adam Back提出的哈希现金(Hashcash),在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,对结果进行检验则仅需要一次随机散列运算。
这篇白皮书提出了一种不需要信用中介的电子支付系统,虽然这种系统为所有权提供了强有力的控制,但是不足以防止双重支付。为了解决这个问题,提出了一种采用工作量证明机制的点对点网络来记录交易的公开信息,只要诚实的节点能够控制绝大多数的CPU计算能力,就能使得攻击者事实上难以改变交易记录。本框架包含了一个P2P电子货币系统所需要的全部规则和激励措施。
论文2:The unseen economic forces that govern the Bitcoin protocol点此查看
作者:Li Z, Liao Q
会议名称:2018 5th International Conference on Information Science and Control Engineering (ICISCE)
研究进展:
比特币创建了一个支配其内部运行的复杂经济激励机制(incentives)。这些激励机制强烈影响了协议的能力、安全保证,以及未来发展的道路。这篇论文探讨了比特币协议的经济暗流、优势缺陷,以及它们如何反过来影响协议本身。
论文通过比特币经济学方法论、矿池和风险规避、攻击和违反规则的经济学原理等方面进行论述,确定激励机制确实在比特币协议中发挥着重要作用。激励机制对于比特币协议的安全性、及其日常运行的有效性至关重要。
这篇论文指出,矿工为了最大限度地增加收入而费尽心机,并且经常会找到一些创造性的方法,而这些方法与比特币协议并不符合。加密货币的协议应该建立在更加坚实的激励基础之上。还有很多领域需要改进,包括基本的挖矿报酬机制,交互共识机制,矿池的报酬分配机制,以及交易手续费市场本身的方方面面。
论文3:On the Instability of Bitcoin Without the Block Reward点此查看
作者:Carlsten M , Kalodner H , Weinberg S M
会议名称:Acm Sigsac Conference on Computer & Communications Security. ACM, 2016.
研究进展:
比特币为矿工提供了两种激励措施,分别为创建block的激励机制和交易费用的激励机制。在比特币整个系统启动时,挖矿创建block的收益占绝大多数,随着创建block的奖励减少,交易费用的激励机制占据的比例逐渐增加,这隐含了一层意思:即矿工是通过block奖励还是交易费来支付,不会影响区块链的安全性。
这篇论文证明情况并非如此,这篇文章的观点是当奖励只有交易费用,由于指数分布的块到达时间,块奖励的方差非常高,并且分叉“富裕”块以“窃取”其中的奖励变得有吸引力。换言之就是对奖励值比较高的block进行分支更能够获得利益,这会导致比特币安全性和性能的不良特性均衡,甚至在某些情况下也会出现非均衡。
论文通过理论分析,以及一个可能独立获利的比特币采矿模拟器确认。讨论了比特币未来安全性的结果令人不安的影响,并为新加密货币的设计提供了经验。
论文4:Security Enhancement In Bitcoin Protocol点此查看
作者:R. Bala ; R. Manoharan
会议名称:2018 International Conference on Wireless Communications, Signal Processing and Networking (WiSPNET)
研究进展:
比特币保持了用户的匿名性,并在全球范围内实现了点对点即时支付。比特币是一种分散的汇款协议,可以在不暴露用户凭证的情况下进行交易,并在没有任何第三方干预的情况下进行验证。虽然它保持匿名,但“去中心化”的概念引入了漏洞,导致严重的安全问题,如双重支出,阻止预扣和51%的攻击。这些问题需要比特币协议中的安全特定增强。
这篇论文提出了一个有效的预采矿模块,只允许值得信赖的矿工参与采矿过程,以减轻安全攻击,即51%,双重支出,阻止预扣。 这可以通过在挖掘过程中引入标准检查和验证模块来实现,这可以阻止攻击者进入比特币挖掘网络。 此外,提出了一种增强的块创建和验证算法,该算法将比特币协议的事务速率从当前的7-8tps提高到12.749tps。
论文5:Section-Blockchain: A Storage Reduced Blockchain Protocol, the Foundation of an Autotrophic Decentralized Storage Architecture点此查看
作者:Yibin Xu
会议名称:2018 23rd International Conference on Engineering of Complex Computer Systems (ICECCS)
研究进展:
比特币派生出了区块链,存储需求的快速增长阻碍了存储能力不足的设备使用区块链驱动的分布式应用程序,论文提出了Section-Blockchain,旨在解决超大存储问题而不会损害区块链的安全性。Section-Blockchain允许用户存储区块链的一部分,但获得完全的安全性,就像NakamotoBlockchain中的完整节点一样。区块链还为系统提供了丰富的轻量级节点,并允许用户加入系统,不仅可以提供计算能力,还可以协助存储。可以在上面构建分散的自养存储系统。实验证明,Section-Blockchain是有效的,显着减少了存储,并且可以承受大规模的突然节点丢失。
在未来的研究中,如何消除采矿权集中将是进一步保障区块链的关键。此外,存储的底线以及每个块需要选择的保证节点将在系统达到稳定的用户规模后逐个时间地进行计算,这将减少块可以处理的事务数量,因为块将需要包含如此多的PoSenquires和保证交易。未来的研究还可以关注如何减小块大小,例如,使用IBM和Bloom过滤器来创建轻量块等。
论文总结
区块链作为一门比较新的技术,在当前有其发展的必然性和必要性,不过设计上的安全性需要时间来进行验证,目前也有很多研究表明最初的设计不是非常安全的,需要进行改进。但不管怎么说,区块链技术还是未来发展的一个大方向。
参考资料
- PoW和PoS的优缺点
- Bitcoin: A Peer-to-Peer Electronic Cash System
- The unseen economic forces that govern the Bitcoin protocol
- On the Instability of Bitcoin Without the Block Reward
- Security Enhancement In Bitcoin Protocol
- Section-Blockchain: A Storage Reduced Blockchain Protocol, the Foundation of an Autotrophic Decentralized Storage Architecture