去中心化的好处:
它是由数据块和“链”组成的,数据上传所形成的数据块,会按时间顺序链接在一起,形成链式的结构。
数据块包括区块头+交易+区块尾
区块头包括:生成时间、实际数据(即区块体)的哈希、上一个区块的哈希
分布式存储,一种将数据分散存储到多个地方的数据储存技术,而且存储的数据可在多个参与者之间共享,人人可以参与,并具有相同的权力,一起记录数据,主要起到了数据储存的功能
共识机制,一种协调大家处理数据的机制(即挖矿原理),主要起到了数据维护的作用
智能合约,一种旨在以信息化方式传播、验证或执行合同的计算机协议,主要起到了数据执行的作用
密码学,一种特殊的加密和解密技术,包括哈希算法、公钥私钥、数字签名等等,以此来保证整个系统的数据安全,并且证明了数据的归属
当一笔数据产生后,会由共识机制进行数据维护,通过分布式储存记录在链上,然后交由智能合约去执行,最后由密码学保障整个体系的安全
分布式存储就是把数据分散到多个数据库中,共同储存数据,哪怕其中的一个出现问题,其他的数据库也能够顶替它继续运行,保证整个公司产品的正常工作。
区块链使用的去中心化数据库,它是由一个个数据库连接起来,形成一个大的分布式数据库,每个数据库权限相同,都可以查看、储存所有的数据。
好处:
共识机制就是一种每个节点都必须遵守的规则。这个规则内容要包含两点,第一是解决分布式存储中,每个节点怎么记账的问题;第二是解决不同节点间,如何交换信息、达成共识的问题。
工作量证明机制,当一笔交易产生后,每一个想要记账的节点,都需要依靠自己的计算能力与他人竞争、争夺记账的权力。每过大约10分钟的时间,就会进行一轮算力竞赛,参与的节点通过算力不断寻找一个随机数Nonce。谁先找到满足一定条件的Nonce值,且通知全网、获得认可,谁就能获得记账的权力。最终,获得记账权的人,他所打包的区块会连接到区块链的链上,同时他处理的数据,也会被全网的其他节点记入各自的小账本中。
PoW机制在比特币网络中,就是比特币的挖矿原理,它会给获得记账权的节点一定的比特币作为奖励,从而激励更多的人加入进来。
缺点
权益证明机制。PoS提高了节点处理数据的门槛,它规定:虽然每个人都可以自由地加入进来成为节点,但只有满足一定条件的节点,比如抵押一定数量的代币,才有资格成为验证节点,也就是候选人。成为候选人后,系统会通过算法,选择一部分人作为出块节点,每隔一段时间,会重新选择,选取过程中,算法会保证选取的结果不能被操纵,也不能被预测,从而避免网络被某一节点所控制。
缺点
智能合约就是一种把我们生活中的合约数字化,当满足一定条件后,可以由程序自动执行的技术。可以减少对信任中间人的需求,降低仲裁和执行成本。
优势
区块链中的密码学主要分成两个部分,一个是哈希算法,一个是非对称加密。
哈希算法就是一种特殊的函数,通过压缩映射,可以把任意长度的输入变换成固定长度的输出(256比特)。
哈希算法有三个特点:
加密与解密过程用的不是同一个秘钥,私钥加密的内容,通过公钥可以解密读取出来,反之通过公钥加密的内容,也可以由私钥解密读取出来。
主要用于数字签名,防止身份被冒充。
就是一笔钱被重复花了两次。
由于处理方在记账时因为同步存在延迟的问题,导致同一笔钱,被反复花了两次。
防范方式:
不以付款者的交易记录为依据,只有确认自己账户上钱到账才交付商品,即等记账后,再完成交易。或者借助UTXO的账户机制。
UTXO的账户机制:
只记录交易本身,而不记录交易的结果。整个过程中,它会把牵扯到的账户资金、交易地址,转账资金、资金来源等信息全部记下。以此就能够追踪到每一笔交易的最初来源。
当节点在处理一笔交易的时候,会先通过UTXO模型检验交易资金存不存在,然后追溯这笔交易的源头,确定没问题后,就会通过共识机制进行全网广播,记录到链上。
如果有人想要用同一笔钱支付两次,区块链网络只会确认先接受到的那一笔,之后那笔交易,节点会在查询UTXO时发现,这笔资金已经被支付出去,并不存在于你的账户中,从而拒绝交易。
当有人掌握了全网51%以上的算力时,就能够将刚刚记过的账页作废,把里面的一笔花费恢复成没被花掉的状态。
防范方式:
等待更多确认以及时间戳防伪。51%的算力要作废最新账页,其成功概率是51%,但作废连续两个新账页的概率就是51%*51%=26%,作废3个的概率是13.3%,作废6个的概率只有0.46%了。如果攻击者没有掌握51%的算力,只掌握20%的算力,那么攻击成功的概率就只有0.0064%了。
时间戳:
就是能表示其他的数据在某个特定时间之前已经完整存在、 并且可以验证的一种数据,一般是一个字符序列,能唯一地标识某一刻的时间,提高了区块链的不可篡改性,起到数据验证的作用。
工作原理:
节点会先对区块中的信息进行哈希加密,生成一个信息摘要,也就是哈希值。
生成好之后,节点会发送一个时间戳的请求,给相关的时间戳服务器,然后时间戳服务器会从中提取该哈希值以及数据的时间信息。
时间戳服务器会对这些提取到的哈希值以及时间信息进行签名,也就是再次加密,打上时间烙印,生成时间戳。
生成的时间戳数据和交易信息绑定之后,再返回系统。
侧链就是建立一条新的区块链,能够一对一的和原有的一条链产生联系,资产可以在两条链之间进行转移,进而弥补原来那条链中的某些不足,原有那条独立的区块链就叫做主链,而新产生以主链作为依靠的链,就叫做侧链。
一般来说,一条链上的资产,只能在这条链当中进行流通,侧链之所以能让链与链之间实现资产的转移,是通过了双向锚定的方式才得以实现,就是一方要以另一方的行动为标准。
以比特币为例,当比特币想要转移到它的侧链上时,就会在比特币的主链上将相应数量的比特币进行锁定,然后再将等量价值的侧链代币进行释放。
资产的锁定与释放的方式:
跨链是侧链的升级版,跨链除了能解决效率、扩展性问题以外,更主要的是,它可以解决互操作性问题。
跨链的方式:
相当于搭建了个侧链,主链就只用记录分配的最终结果,至于中间的交易,则通过闪电网络的方式处理,以此分担了主链交易的压力。因为所有在通道内的交易都是链下的,只需智能合约来执行,不用要通过全网确认,所以能大大提升用户之间交易的处理效率
侧链起到一个资产记录副本的作用,每笔交易,都会通过类似智能合约的功能,记录在这个副本里,就相当于是这个共享钱包中所存资金的重新分配,直到交易结束,就可以关闭这个支付通道,把这一系列交易所导致资金分配的最终结果,反馈到主链上,经过全网广播,记录到链上。
隔离见证的工作原理,就是把关于交易信息的数据留下,然后把非交易信息的数据从基本结构剥离出来,转移到新的数据结构中。
通过链上隔离见证与链下闪电网路结合的方式,能更全面地解决效率和可扩展性问题。
将一条链划成一个个的区域,一个区域就叫做一个分片,每个分片承担专职的功能,而节点也会分散到各个分片上,处理相应的工作。
交易会划分到各个分片上同时进行处理,每个节点处理的只是网络中的一小部分交易,从而提升这条链的处理效率。
不要浪费时间去为异步通信的分布式系统设计在任意场景下都能实现共识的算法,这样的算法不存在。
因为在实际异步通信的分布式系统环境下,可能存在通信故障、延迟或者节点本身出现失效的情况,异步系统无法保证在有限的时间内完成一致性。
CAP原理定义了分布式计算系统的三大特性:
三大特性无法同时实现,设计中需要弱化其中某个特性,从而保证另外两个特性。
对系统内的所有计算节点给定一组操作,按照约定的规则协议,节点之间对于操作后的最终处理结果达成某种共同认可的状态
在实际工程中,一版采用弱一致性,即在未来某个时刻达到一致性状态
数据层
网络层
共识层
合约层
应用层
区块及链,区块包括区块头和交易
在构造Merkle树时,首先要对数据块计算哈希值,然后将数据块计算的哈希值两两配对(如果是奇数个数,最后一个自己与自己配对),计算上一层哈希,再重复这个步骤,一直到计算出根哈希值。
因此Merkle树大多用来进行完整性验证,比如分布式环境下,从多台主机获取数据,只要验证Merkle树根哈希一致即可。树中任一节点的变化都会导致两两配对后的根哈希值变化。
分布式存储
区块链数据通过网络层进行校验、存储等。
每个节点都可以充当服务提供方和服务获取方,少量节点的故障不会影响整个网络的服务提供。节点越多服务质量越高,但数据一致性越难以保障。
分布式哈希表
用于维护网络中的节点清单和节点能够提供的服务清单,是P2P网络的核心技术。
以Kademlia协议实现,每个节点维护一张哈希表,表中将网络的节点按照距离进行分组,每个分组下会有若干节点,因此每个节点只保存一部分资源的索引信息,当网络中的资源有变更时,不需要全网广播,只需要更新相关节点。
每个节点都向其直连的节点发送区块数据,直到触达全网节点。
比特币的数据校验内容:
保证所有节点中的数据完全相同,并且能够对某个提案达成一致
主流的共识机制:
BFT(拜占庭容错)
节点总量n >= 3*异常节点数+1
PoW(工作量证明)
寻找一个随机数,使得该随机数和特定数字的哈希满足一定条件
PoS(权益证明)
根据用户持有货币的币龄的高低来分配记账权,效率更高但容易产生马太效应
DPoS(委托权益证明)
限制参与共识的节点数量,降低消耗和成本
一种以数字化手段传播,验证或执行合同的计算机协议。
智能合约一旦部署无法撤回,所以智能合约必须是可终止的。
区块链系统的应用层封装了各种应用场景和案例,类似于PC端的应用程序
区块链的四类应用:
分布式账本、价值传输网络、通证激励体系、资产数字化
比特币是区块链的首个应用。
所有比特币都是通过新区块的挖矿奖励形式发行,共2100万枚
所有比特币被挖出后,记账奖励只有挖出的区块中包含的交易付给记账节点的交易费
为了保持每10分钟一个的出块速度,比特币网络在每挖出2016个区块后进行一次挖矿难度调整。
采用椭圆曲线乘法,可以从私钥计算出公钥。
采用特定的哈希算法,可以从公钥计算出比特币地址。
意外分叉
由于意外从某一区块开始向下形成多个分支,但之后又会按照协议收敛,最终只留下最长的主链
软分叉
向前兼容的区块链协议升级,新协议不违背旧协议的所有相关规定。没有分成两条链的风险
硬分叉
不具备向前兼容性的区块链协议的升级,旧节点无法验证新产生的区块,原本的一条链会被永久的分成两条链
如有不对,烦请指出,感谢~