目录
1.def
2.smart contract
3.Consensus mechanism
4.blockchain fork
比特币诞生的几年后,人们开始意识到区块链技术本身的潜力,慢慢走出了自己的发展路线。 通常区块链被定义为一种去中心化的分布式账本技术,最初用来记录信息,使记录具备不可篡改性,随着以太坊的出现,还可以以去中心化的方式运行程序(智能合约),确保程序的运行不被干预、篡改,使区块链成为一个公共的计算平台。
1.def
区块链是一种区块通过 Hash 方式形成的链式结构,因为链的环环相扣,任何一个区块上的修改,都会破坏链结构
区块:区块链中的数据存储单元,由参与网络的节点独立生成,每一个区块中存储了一组交易信息,这些交易信息的哈希数据为作为默克尔树节点存储,每个区块同时存储前一个区块的哈希信息,因此区块就通过哈希信息链接起来,形成区块链
2.smart contract
以太坊中创新的引入smart contract,它是区块链可执行的代码,用户可以根据自己的业务需要上传自己的代码到以太坊上,由以太坊的节点来进行执行
在以太坊提出之前,比特币这样的加密货币的交易脚本可实现的功能非常有限,以太坊对此进行了改进,它让交易发生的同时可以执行一段代码。让交易本身具备了逻辑执行能力(并且是图灵完备的),让我们可以在链上完成任意复杂的运算。如有的交易要分期付款,或者多方参与的借贷。像保险合同的执行也是有事前约定的条件,这些合约条件的执行使用智能合约可以轻松实现。
“samrt”强调不受干预的可自动执行;
“contract”取材自现实中的合约,是想强调链上的程序可以按协议规则执行,就像法律条款一样
3.Consensus mechanism
区块链是一个分布式网络,网络中的节点都是独立运行,因此需要有一个公共规则来知道节点的运行,即共识机制。常见的共识机制有:工作量证明(POW)、权益证明(POS)、权威证明(POA)
1)Proof-of-Work POW
POW 要求节点进行大量的计算(查找最优解)来证明其贡献,首先解决计算问题的节点获得报酬,这个过程也称为“挖矿”。
advantage:the most security;reliable
disadvantage:消耗大量计算能力和电能,从而带来了较高的物理成本
算力攻击:当一个节点的算力占全网算力的51%以上时,将获得记账权的绝对优势,可以更快地生成区块,某种程度上拥有了修改区块链数据的权利,从而对链发起攻击,最典型是双花攻击
攻击者在实施攻击前,会进行隐身挖矿(如下图橙色链),出块不进行广播, 攻击者矿工在橙色链上修改他自己的交易,当橙色链比主链更长了,攻击者矿工便会立即向全网广播这条橙色链,而其他的矿工发现了这条橙色链后,按照协议,他们必须丢掉原本的主链,替换成这条橙色链,就完成了一次双花攻击。随着比特币网络算力越来越大,这种攻击可能性也就越来越小。
2)Proof of Stake POS
节点(验证者)此时争夺记账权依靠的不是算力而是权益(占比),权益通常通过质押数字货币计算而来。
PoS同样需要计算哈希值,当拥有的权益越多,满足Hash目标的机会越大,获得记账权的机会越大。同时质押的货币也作为抵押品防止作恶,如果节点有恶意行为,其抵押品可以被罚没(Slashing)。
目前,各个不同的区块链有自己不同的实现方式,如引入持币时间来计算权益、引入委托质押(DPOS )用更少的共识成本换取更大的吞吐量 (TPS)、或使用投票方式,如BTF 类算法多区块投票
advantage:不需要消耗大量能量,POS 出块时间稳定,有根号的“快速最终性”, 通常吞吐量(TPS每秒链上交易 ) 表现都更加优异。
disadvantage:不够成熟;质押货币需要当前的验证者确认,这相当于需要获得网络认可,当网络被恶意大的验证者控制时(其拥有超51% 的权益), 它可以对某些交易进行审查,阻碍新参与者进入,从而对网络产生永久性的损害。
3)Proof-of-authority POA
基于声誉(reputation)的共识算法,选出中央权威来统一状态。 所有的交易,节点间不用相互同步,而是统一发送到权威节点(可能多个),由它来验证交易。在验证并签署交易之后,普通节点都从权威节点同步数据,主要用于联盟内共识。
ad&disad: 性能非常好,但过于中心化,对权威节点的攻击,将造成网络瘫痪
【注】:区块链不能三角化,即去中心化(Decentralization)、可扩展性(Scalability)、安全性(Security),三者不可兼得,三者只能得其二。
4.blockchain fork
当区块链需要升级加入新功能,或是升级解决出现的漏洞,通常会表现为链的分叉。
1)硬分叉
区块链是分布式系统,每次升级,需要所有的节点客户端软件共同升级,有时一些节点因为利益或理念的不一致,拒绝升级到新的客户端,此时网络中将出现两个版本的客户端,运行新软件的节点就会用新的协议去构建新的区块,原有的客户端节点会继续用旧的协议来继续构建区块,各节点不认可对方的区块,此时就是会分叉出两条完全不同的链,这种情况是硬分叉。
2)软分叉
软分叉向后兼容,没有更新的节点仍然会认可新版本生成的区块,当升级后的区块链将无法识别尚未更新的节点的区块。
文章内容参考:Decert.me