说区块链-学习笔记
想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!
1:什么是区块链?
区块链是比特币的底层技术,比特币是区块链的应用之一。区块链的本质是去中心化的分布式数据库,它是通过密码学方式有序链接的区块链条。每个区块中包含了区块头(前一个区块的根Hash(身份证号),当前区块的根Hash(身份证号),时间戳(当前区块发生的时间标记),其他信息)和数据记录信息。
特点:
(a)去中心化:所有的节点权利义务相等,任意节点的出错或停止工作都不会影响系统的整体工作
(b)去信任:因为整个系统和数据库是公开透明的,节点之间无需知道对方是谁,也无需彼此互信
(c)分布式账本:所有节点共同维护系统账本。系统中每个节点都含有整个完整数据库拷贝。
(d)透明性:账本向区块链中的相关方公开
2:为什么需要区块链?
区块链解决的是信任问题。互相信任的熟人社会最多只能维系在150人以内(邓巴数),超出这个人数范围,信任就需要中心化的第三方进行背书。一旦中心化的节点出现问题,例如对数据进行修改、瘫痪等,整个网络都会受到影响。而区块链是点对点传播的,不依靠任何单一节点,任意单一节点对信息进行修改都会被其他节点发现并不予承认。所以区块链是一个公证人,一旦信息被创建,几乎不可更改。
3:区块链技术有什么用?
区块链的分布式账本,全节点共同维护等特点可以与众多领域进行合作。
4:区块链是如何被实现的?
A和B发生了一笔交易,会被广播到全网络中所有的节点。这时网络中其他节点经过记账验证后就会将这笔交易添加到主链上。从此这笔交易就记录到了区块链上。区块链的基础架构至下而上共分为6层:数据层,网络层,共识层,激励层,合约层,应用层。各层之间相互配合实现去中心化的机制。
5:实现区块链需要解决哪些问题
(1)如何鼓励网络节点参与验证记账?
为了鼓励网络节点参与验证记账,会对第一个满足一定条件的节点进行奖励。例如比特币区块链中,各个节点需要不断解决一个数学难题(SHA-256哈希值对应的数值解),任意一个节点优先解出这个数值的就会在全网进行广播。其他节点经过验证属实后就会放弃该区块的计算,将该区块信息记录进自己的账簿后进入下一个区块的数值计算中去。而第一个解出这个数值的人就会获得一定比特币金额的奖励。因为这一过程与挖矿产生金币类似,所以通常也将这一过程称为挖矿。
(2)链分叉听谁的?
谁长听谁的。若两个节点A,B在对222区块进行记录时同时解出了SHA-256哈希值并对外进行了广播,这时因为网络中其他节点与这两个节点距离有远近,部分节点会记录A完成了这件个区块的记录,而其他部分节点会记录B完成了区块的记录。这时原本完整的链就会在222区块分叉成两列。若验证了后续223块区块SHA-256哈希值的节点认可A解出了222块区块这一事实,则222B这个区块会被作为侧链被废弃。原来认可B解出了222块区块的节点就会转到222A,223D 这条链上去,参与下一个区块224的解(223已经被D节点验证了)。222A这个区块后续加上5个区块后,222A这笔记录就会被确认,几乎不可更改。实际上SHA-256哈希值的计算就需要耗费一定的算力及时间,这在很大程度上也避免了两个节点同时解出SHA-256哈希值情况的发生。
(3)如何避免一笔钱被重复使用(双花问题)?
一方面,每一笔付款被广播给系统其他节点时,其他节点就会对该笔支付进行验证,看这个交易的合法性。另一方面,在比特币中,一个交易能不算作确认直到至少有5个验证过的block在其后面得到验证。如果一个人向一部分挖矿者公布一个交易,给另一部分挖矿者公布另一个交易,在这种情况下,只会有一笔得到进入主链并得到最后的确认。当一笔支付得到确认后,因为大多数矿工想在主链上继续工作以获得奖励,再想让另一条侧链追上主链几乎是不可能的。
(4)节点中有恶意节点怎么办(拜占庭将军问题)?
拜占庭帝国拥有巨额的财富。围绕在其周围有10个敌国对其财富垂涎已久。但因为拜占庭帝国的防御措施良好,只有在超过6个敌国同时进攻 的前提下才能攻破拜占庭帝国。此外,这些敌国互相之间还存在一个两难问题:如果自己进攻了但其他国家未进攻,很有可能自身军事力量在与拜占庭帝国战斗中损失巨大。若其他敌国乘机对自己国家发起进攻则自己国家很有可能被灭国。拜占庭将军问题有解的前提是叛徒少于1/3.在这个前提下可以由一个将军书面询问其他将军进攻时间并要求各个将军附上自己独一无二的印章。最后再将集齐了所有将军的信件分发给各个将军。若超过一个将军对其他人也发出了询问,部分将军可能会答应超过多个攻击时间,或者广播出与第一个将军发起人不一样的信息导致系统混乱。