- 区块链的概念:
首先区块链并没有明确统一的定义,综合看来,区块链是使用区块链技术形成的公共数据库。
而区块链技术就包括 现代密码学,分布式一致协议,点对点通信技术,和智能编程语言等形成的数据交换,存储,处理的技术组合。
区块链本身也在不断的发展和变化中。
- 区块链的分类:
从参与方式上区分,可以分为联盟连,公开链,私有链。
从链关系上区分,是主链和侧链,以及互联链。
1. 公有链(Public Blockchain)
公有链是真正意义上的去中心化的区块链,用户不需要注册就可以匿名访问链上内容,甚至可以参与链上的交易。公有链,通过密码学保证交易不被篡改,验证经济上产生的用户激励,保证在陌生环境中建立共识,从而形成了去中心化的信用机制。
在公有链中的共识机制,一般采用工作证明(PoW)和权益证明(PoS),用户在区块链中的影响力取决于拥有的资源占比。
公有链也称作非许可链(Permissionless Blockchain)。
2. 联盟链(Consortium Blockchain)
仅限于联盟成员参与,用户在链上的读写,参与记账的权限,都要按照联盟的规则来进行。是一种需要注册许可的区块链,因此也称作许可链(Permissioned Blockchain)。
联盟链的共识过程,由预先选好的节点开始,适用于B2B场景。当全网有超过2/3的节点确认了一个区块,那么该区块的将得到全网的确认。由于联盟链中参与节点较少,因此一般不采用工作量作为挖矿机制,而采用权益证明,PBFT,RAFT??
3.私有链
仅组织内部成员使用,用户在链上的读写操作,参与记账权限,都要按照组织内部规则进行。一般用于企业,政府内部场景使用。
私有链具有安全,可追溯,不可篡改,自动执行的运算平台,同时可以防范来自内部和外部的数据安全攻击,这是传统系统中无法做到的。私有链也是一种许可链。
4.侧链
侧链就是和比特币挂钩,可以和比特币区块链交易的链。具有以下属性:
- 用户的资产从一个区块链上转移到另一个区块链上之后,还应该可以再转移回原来区块链的同一账户中去
- 不诚实的用户无法阻碍资产在链上的转移
- 资产的转移,必须是原子操作,也就是,必须全部转移或者全部不转移
- 侧链应该具有防火墙,即一条链上的软件错误,不应该影响另一条链上的资产
- 在资产转移的过程中,即使出现了区块链的重组,也不应该出现错误
- 用户不需要追踪不常使用的其他侧链
比特币区块链每10分钟产生一个区块,每个区块大约1M,每秒只能完成7笔交易。
5. 互联链
由全球各种特定业务的垂直区块链互联互通而形成了互联区块链。
- 区块链的价值
总的来说,去中心化信用机制是区块链的核心价值之一,而区块链技术本身,实际又是各种不同技术的组合,因此在实际应用中,都可以根据实际的场景来进行技术的组合。具体看来,区块链的颠覆性价值主要体现在以下五个方面。
1. 简化流程,提高效率
因为区块链本身,就是参与方多方沟通,通过共识达成的公共账本,数据本身天然就是官方认可,可信,可追溯,唯一,不可更改的,因此省去了传统网络下需要验证的诸多操作和流程,从而效率更高。
2. 降低交易方的信用风险
区块链中可以使用智能合约机智,也就是在交易时,交易多方需要自觉履行合约,保证自动完成相应义务,降低了多方的交易风险。
3,减少了结算清算时间
由于区块链的去中心化信任机制,在交易发生时,就进行了交易的清算和结算,因此降低了结算成本与时间,提高了效率。
4. 增加资产的流动性,提高资产的利用率
由于区块链清算快,因此资产被锁定的时间短,从而加速了资产的流动
5. 提升了透明度,以及监管力度,避免欺诈
由于区块链可以将所有的交易和智能合约进行实时监控,并且讲交易都都不可纂改,不可撤销,不可抵赖的保留下来。方便监管机构监控,取证。从而避免了欺诈行为。
- 区块链的应用场景
- 金融领域的结算,清算
- 数字货币
- 跨境支付
- 财产保险
Q&A
Q: 权益证明PoS是什么?
A:与工作量证明不同,权益证明并不是矿工挖取区块,而是验证者创造新的区块。这里的验证者,并不是随机选择的。要想成为验证者,必须要在网络中存入一定数量的资产作为权益(可以理解为保证金),存入的资产越多,成为验证者的可能性就越大。成为验证者之后就可以创建区块,区块创建完成后,需要验证其中的所有交易是否无误,验证完成后,区块才可以被加入到链中。作为奖励,该节点可以获取当中的交易费。
如果说,验证者在过程中,存在欺诈行为,那么他将损失一部分权益,只要保证作为权益的资产大于作为奖励的交易费,那么我们就可以信任他。
优点:相比工作量证明,权益证明消耗资源更加少,更加的去中心化。
缺点,51%欺诈,当用户存入的权益足够多时,就可以控制交易,从而产生交易欺诈。
可参考 https://www.sohu.com/a/228471358_178408
https://baike.baidu.com/item/%E6%9D%83%E7%9B%8A%E8%AF%81%E6%98%8E/22447953?fr=aladdin
Q: PBFT,RAFT都是啥?
参照原文:https://blog.csdn.net/jerry81333/article/details/74303194
A:
- PBFT 拜占庭容错,可以容纳约1/3的容错,如下实例
其中C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如下:
1. Request:请求端C发送请求到任意一节点,这里是0
2. Pre-Prepare:服务端0收到C的请求后进行广播,扩散至123
3. Prepare:123,收到后记录并再次广播,1->023,2->013,3因为宕机无法广播
4. Commit:0123节点在Prepare阶段,若收到超过一定数量的相同请求,则进入Commit阶段,广播Commit请求
5.Reply:0123节点在Commit阶段,若收到超过一定数量的相同请求,则对C进行反馈
根据上述流程,在 N ≥ 3F + 1 的情況下一致性是可能解決,N为总计算机数,F为有问题的计算机总数
N=4 F=0 时:
得到数据 最终数据
A 1 1 1 1 1
B 1 1 1 1 1
C 1 1 1 1 1
D 1 1 1 1 1
N=4 F=1 时:
得到数据 最终数据
A 1 1 1 0 1
B 1 1 0 1 1
C 1 0 1 1 1
D 0 1 1 1 1
N=4 F=2 时:
得到数据 最终数据
A 1 1 0 0 NA
B 1 0 0 1 NA
C 0 0 1 1 NA
D 0 1 1 0 NA
由此可以看出,拜占庭容错能够容纳将近1/3的错误节点误差
- RAFT
参照原文:https://www.jianshu.com/p/8e4bbe7e276c
每个分布式节点,都存在三种状态:Leader,Follower,Candidate,这三种状态是可以相互转换的
每个节点上都有一个倒计时器 (Election Timeout),时间随机在 150ms 到 300ms 之间,在这个倒计时结束之后,Follower状态变为Candidate,并可以向其他节点发送选举请求,等待下面三种情形发生;
1. 获得超过半数服务器的投票,赢得选举,成为Leader
2. 另一台服务器赢得选举,并接收到对应的心跳,成为Follower
3. 选举超时,没有任何一台服务器赢得选举,自增当前任期,重新发起选举。
产生Leader之后,由Leader产生LOG,用户操作,数据记录,用于后续复制以保证数据统一
复制LOG过程:
1)当Follower 1需要操作数据时,首先将操作数据发送到Leader,此时数据处于uncommited状态
2)Leader将数据操作,广播给其他Follwer
3) 其他Follower收到数据后写入到本地,并回复OK,此时所有状态都是uncommited,
4)当Leader收到超过半数的OK之后,再广播给所有Follower,此时所有的状态都变为了commited.
这样就完成了一次LOG复制的过程,保证了所有节点的数据统一。实现 Raft 算法两个最重要的事是:选主和复制日志