区块链技术简介
写在前面
前几天被喊去参加了学院的学术沙龙,主题是关于区块链的,正好对区块链有点兴趣,说不定以后要尝试学习区块链安全的话也能有一点基础,这里正好记录一下会上对于区块链的简介(其实更多的是搬一下ppt的内容啦),总不能白开了2小时的会,然后啥也没学到吧哈哈哈哈
该内容并非完全由本人原创,故仅作学习参考
数字货币&区块链
以下是一些有关数字货币的历资料,简单了解一下就行了:
•1983年,著名密码学家David Chaum首次提出了”不可追踪支付”密码货币的概念,并随后推出了第一款数字货币eCash(盲签)
•1996年,Douglas Jackson发起创立数宇货币Egold,以真正的黄金作为价值支撑,(金本位)
•1998年, Wei Dai 提出了去中心化的数字货币–Bmoney,明确了分布式账本的概念
•2005年,Nick Szabo提出了一种激励困难问题解决的数字货币-Bitgold,用户通过解决数学难题获得货币
•2008年,署名为Satoshi Nakamoto的作者发表了为《比特币:一种点对点电子现金系统》的论文,首次提出区块链(Blockchain)的概念,并构造了一种完全去中心化的数字货币系统
比特币(Bitcoin)
•2009年1月4日,中本聪创建了比特币网络的第一个区块——创世区块,获得首矿的50比特币奖励
•2009年1月12日,中本聪通过钱包发送10个比特币给Hal Finney,这是比特币系统上线后的****第一笔交易
•2010年5月22日,“比特币比萨日”: Laszlo Hanyecz用一万个比特币买了两个比萨,这是比特币作为数字货币流通的第一笔交易
•2011年6月14日,维基解密创始人阿桑奇接受比特币的匿名捐赠,从此比特币被越来越多的人知晓,而区块链作为比特币的核心底层技术,其真正价值被挖掘出来并被广泛使用
比特币的完全去中心化
传统的金融体系中,需要一个类似银行的可信中心机构进行集中化的交易确认和验证,来保障交易过程的安全性,从而构建来自多个不信任用户之间的信任
在现实生活中,中心化机构会受到来自内部潜在安全威胁或外部恶意攻击,因此构建完全可信任的中心化机构相对困难
比特币作为一种点对点分布式的电子现金系统,能够支持用户在线支付,直接由发起方支付给接收者,中间无需通过任何中心机构
所以可以说区块链——解决信任问题
区块链定义及发展
区块链定义
狭义角度:
区块链技术是一种基于时间顺序的分布式账本,它将数据区块通过首尾相连的方式组合而成一种链式数据结构,以密码学为基础来保障数据的不可篡改、不可伪造等特性
广义角度:
区块链技术是基于密码学、时间戳等技术来传输和验证数据,通过链式数据结构来存储数据,利用共识机制来生成和更新数据,并通过设计可编程智能合约来实现的一种全新去中心基础架构与分布式计算范式。
区块链结构
区块链每个区块中包含了相同的数据结构,主要为区块头(Block Header)和交易详细信息(Transactions)两部分
如图:
区块链能做什么?
区块链本质上作为一种分布式的分布式记账本(Distributed Ledger),由于密码学、点对点等技术的引入,相比传统的数据库在数据验证和数据存储方面有着不同的机制
数据验证
区块链中的每个区块都包含了生成时所带的时间戳,系统中的很多节点会对该时间戳以及记录的时间进行验证和记录
在得到大多数节点承认的前提下,其上的数据记录是不可以被更改的,因此可以用于金融生态体系、数字资产版权登记等领域
数据存储
区块链是一种多备份、高冗余的数据存储机制,网络中的每个节点都存储了完整的数据记录,每个节点都可以作为服务端对客户端提供区块链交易服务
完全去中心化的安全特性, 避免了由于单点故障或操作员权限使用不当而导致的数据丢失或泄露问题,可用于医疗数据共享等领域
区块链发展
区块链技术的发展大致可分为 4 个阶段:区块链 1.0 、区块链 2.0 、区块链 3.0 和区块链 4.0
区块链1.0
区块链1.0:数字货币的启蒙时代
区块链 1.0 主要指包括比特币、莱特币等在内的数字加密货币项目,其可编程的数字货币应用涵盖了支付、流通等货币职能。区块链 1.0 中的数字加密货币仅能够支持非图灵完备的脚本语言,这也是其应用受限的最主要原因之一
图灵完备:可智能执行类似for循环的语句,区块链1.0不支持for循环可能一直循环不停止消耗完资源),另一种简单理解:自动售货机
区块链2.0
就是区块链2.0:智能合约等
区块链 2.0 在数字加密货币基础之上引入智能合约,其典型代表为以太坊 (Ethereum),支持用户在分布式平台上搭建去中心化应用(Decentralized Application , DApp)
在区块链 2.0 时代,区块链技术的应用不再单纯地指数字货币,而是扩展到去中心化、满足复杂应用场景的区块链平台。然而,区块链 2.0 支持的公有区块链虽然相比区块链 1.0 时代有所改进,但是在交易过程中吞吐量仍然比较低,只能达到每秒千次量级,而且交易确认的延时非常高,无法支持更大规模的实时交易场景
区块链3.0
区块链3.0:演升应用平台
区块链 3.0 是指除数字加密货币、金融证券之外的其他领域应用,包括政务、智慧医疗、数字知识产权等
一方面,区块链 3.0 是针对数字资产保护技术的集合,它的目标是实现各种数字资产权益在“真实世界”与“数字世界”两个平行时空之间映射和转移,从而推动全球数字经济的进一步发展。
另一方面,从性能上来看,区块链 3.0 技术的目标是实现高并发、低能耗的并行分布式数据账本,使交易确认效率大幅度提升且无需挖矿操作,从而减少能源浪费
区块链4.0
区块链 4.0 是以提供全球价值互联网信息基础设施为目标,形成基于区块链技术的可信任生态体系,把区块链应用到各个行业以及人们日常生活的基础设施之中,如物联网、社会管理、通信设施、文化娱乐等多个方面,广泛地变革人们的生活方式
一方面,区块链 4.0主要聚焦在区块链基础设施和平台层核心技术的完善,包括支持新型抗量子计算攻击的密码学算法
另一方面,随着越来越多的区块链诞生,区块链之间的互联互通成为必然的发展趋势。区块链 4.0 在功能扩展上还致力于打破链与链之间的信息孤岛,实现跨链通信和多链融合
区块链基础特性
去中心化性
去中心化性是区块链最基本的特征
区块链不依赖于中心化节点的管理,实现了数据的分布式记录和存储
在区块链系统中,只要大多数节点能正常运行,少数节点被攻击或者失效都不会影响整个系统的运作
每个节点之间的角色都是平等的,不存在特殊的中心节点,全网节点都具有均等的权利和义务
公开透明性
区块链系统是开放式的
其上的数据对任何人都是公开透明的,任何用户都可以通过公开接口查看链上的数据信息
数据的更新操作对全网用户也是透明的,用户可以自行地验证数据的真实性
集体维护性
区块链系统中参与共识并存储所有最长链数据的节点称为全节点
区块链数据的安全性实际上是由这些全节点来维护的
其他具备计算和存储资源的节点也都可以参与进来,这样通过全网节点来共同维护区块链账本的可靠性
一致性
区块链中的新产生的区块会被节点广播到网络中,实现全网数据同步
在等待一定周期之后,所有全节点都会存储包含该区块在内的最长链信息
全网诚实节点具有关于记录数据的一致性视图
不可篡改性
区块链中的每个区块交易记录按照时间顺序逐步地写入账本中,保证了数据写入的有序性
已产生区块不进行更新、删除操作,只能创建新的交易并将其加入新的区块
区块链系统中的全节点都保存了一份区块链的完整账本,在大部分节点保持诚实可信的前提下,整个系统以数量最多的账本作为最终的账本
匿名性
区块链系统中用户使用的是与真实身份信息无关的一串数字作为转账地址
很难追溯到该地址所对应的实际操作人,这也就保证了区块链的匿名性
区块链基于一套共识协议和签名、哈希算法实现了节点间的互信问题。这使得区块链节点间无须公开身份,利用一个与身份无关的交易地址在保证一定匿名情况下完成数据交换或交易操作
区块链主要分类
区块链在根据差异化的现实场景和用户需求,设置不同的节点准入机制,提供多类选择
主要有三种分类:公有区块链、私有区块链、联盟区块链
公有区块链
公有区块链简称公有链,在这种区块链架构下,用户或节点可以自由加入和退出,具备着最高的去中心化程度
私有区块链
私有区块链简称私有链,强调的是数据私密性,即仅限在某些特定的个体、组织以及机构内的用户访问和交易
私有区块链可以称之为一个完全封闭的局域网
与公有链相比,私有链参与节点及其行为权限受到严格限制,各节点达成共识的时间更短,从而交易形成速度更快
私有链和传统数据库的主要区别体现在信任建立方式上
联盟区块链
联盟区块链简称联盟链,是介于公有链以及私有链之间的一种区块链模式,其去中心化程度不及公有链,但效果又比私有链更加的分散,可实现部分去中心化
联盟链为参与成员提供了管理、认证、授权、监控、审计等安全管理功能,参与成员共同维护着联盟链的运作
联盟链同样相比于公有链有着更低的实施成本,更高的处理效率
联盟链与私有链有着相似的理念和特征,但是私有化程度有差异,以适应不同的场景需求
特性对比
共识机制
共识协议概述
区块链共识协议使区块链的所有诚实节点对区块链数据达成一致的视图。
PoW (Proof of Work)
比特币共识协议:PoW (Proof of Work)
比特币采用基于工作量证明的共识算法,即为大家熟知的“挖矿”类算法。
核心思想是所有节点竞争记账权,对于每一批次的记账都赋予一个难题,只有能解出难题(挖到矿)的节点挖出的区块才是有效的。
同时,所有节点都不断试图解决难题来产生自己的区块并将自己的区块追加在现有的区块链之后,但全网络中只有最长的链才被认为是合法且正确的。
Po*(proof of *)共识机制
为什么被提出?
PoW机制存在明显弊端:算力集中的结点更容易挖到矿,而且算力资源浪费了,没有实际或科学价值。
鉴于此,人们引入“凭证”的概念,提出Po类共识算法,其中表示算法使用凭证的类比,例如基于权益证明(Proof of Stake, PoS)就是其中的一种方法。
PoS机制的思想与特点
PoS中,用户证明拥有一定数量的stake,拥有越多stake的用户越可能产生新的区块(类似于挖到矿)。
PoS机制缺点:提高了算法的中心化程度,违背了区块链去中心化的思想。
共识算法基本要求
区块链共识协议需满足激励兼容、最终共识、活跃性和正确性四个特性,以保证区块链的安全。
激励兼容性(Incentive compatible)
区块链共识协议需要确保每位参与者能够基于他在区块链的实际贡献获得最高的收益。
在激励兼容的环境下,任何一个参与者不可以采取自私策略谋取更高的收益。否则,整个区块链的安全性不能得到保证。
1.比特币激励兼容性的体现:
“矿工”可以获得的收益与其在区块链上贡献的算力成正比。这也被称为“一个 CPU一个投票权”
2.破坏激励兼容性的行为:
自私挖矿、女巫攻击破坏了类似于比特币区块链的激励兼容性。
有些区块链协议增加区块的大小和区块的生成速率,但这种措施也破坏了激励兼容性。
例:网络中的参与节点可能还没收到之前的区块,新的区块就已经产生了,从而加重了区块链的分叉现象,破坏了激励兼容性。
由此也存在了一些挑战,比如:如何设计支持高吞吐量且满足激励兼容性的区块链?
最终共识(Final consensus)
最终共识(Final consensus)是指所有诚实的参与者最终会对区块链的交易数据拥有一致性视图。
在比特币中,在大部分的参与者都是诚实的情况下,提交到块的交易数据被全网最终确认至少需要6个区块的确认时间,这就是最终共识的由来。
其他区块链容许达成即时共识
即时共识指一旦某个区块被添加到区块链上,这个区块就再也不会被区块链抛弃。
活跃性(Liveness)
活跃性(Liveness)是指区块链的参与者愿意持续地创建交易、处理交易和维护区块链的交易历史。
影响区块链活跃性的两个因素:
1.参与者的收益贡献比
2.区块的生成时间与传播时间
正确性(Correctness)
正确性(Correctness)指区块链交易和区块数据的正确性。对于一般的数字加密货币系统来说,正确性最基本的要求是能够抵抗双花攻击。
双花攻击:一个币同时给A和B转了,相当于一个币花了两次
比特币中确保交易和区块正确性的设计:
1.签名算法保证了交易不能被伪造。
2.有效的交易被添加到区块链后至少经过6个块的确认时间最终成为被全网节点承认的正确交易。
3.矿工通过竞争解答一个密码学困难(求解hash)问题题,并生成一个正确区块,产生的区块的正确性被其他参与节点共同验证。
拜占庭容错协议类共识协议
,PoW与PoS共识机制中的节点投票权需满足某种条件,比如算力、权益等作为算法凭证。不同于上面的两者共识协议,BFT(Byzantine Fault Tolerance)拜占庭容错协议类共识协议不要求节点具备算法凭证。
它是:
直接投票表决,相同意见的票数超过一定比例则作为决策共识
pBFT是实用的拜占庭容错协议,为超级账本Hyperledger所采用
当然,结合多种共识协议优势,部分区块链也采用了混合Po*与BFT的混合共识协议,如恒星共识协议。
共识协议对比与比较
看一下《区块链安全白皮书(1.0版)》的分析
智能合约
随着区块链的发展和应用面扩大,区块链安全也逐渐引起重视,一些CTF比赛中也开设了区块链安全这个方式,而其中的题目多涉及智能合约,以及需要参赛者根据代码和合约编写攻击合约来获取flag
智能合约是一种运行在可信环境的计算机程序,可以对数字资产进行直接控制
具体可以看一下ppt的内容:
智能合约主要特性
计算机程序(Computer protocol):智能合约是计算机程序代码
自行验证(Self-verification):智能合约通过对输入数据进行解析,来自行验证数据是否满足此前所预置的响应条件
自动化执行(Self-execution):支持在可信环境中依据响应规则,自动化执行某些代码和协议,其它参与方无法干预执行的过程和条件
防篡改(Tamper-resistance):已经部署后的智能合约代码和状态数据是无法被篡改的
以太坊
以太坊(Ethereum)是由Vitalik Buterin在2014年提出。它是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。以太坊可以用来编程,分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理,合同和大部分的协议、知识产权,还有得益于硬件集成的智能资产
以太坊旨在构建下一代加密货币与去中心化应用平台。除了支持简单的数字类的交换之外,更重要地在于它可以被应用到其他更广泛的领域,诸如数字医疗、金融证券等领域
以太坊是区块链演进的典型代表,它实现了数字货币+”智能合约”(非图灵完备)到数字货币+智能合约(图灵完备)的转变
以太坊智能合约模型
智能合约模型包括一段运行在区块链上的代码,该代码可以维护自身的状态,控制其上所具备的数字资产,同时与外界的输入请求进行交互,执行相应的指令动作