打字猴:1.703879662e+09
1703879662 1)速度。他们需要区块链网络能接近实时确认交易。目前,以太坊区块链网络区块时间为12s,在确认交易之前客户端通常需要等待几分钟。
1703879663
1703879664 2)许可权限(permissioned)。他们希望区块链是有许可权限的。许可本身有多种含义。例如允许加入到网络中的许可、创建区块的许可、发送特定交易的许可等。
1703879665
1703879666 3)安全。PoW对于私有网络还不够安全,因为只有一定数量的参与者,所以没有产生足够的算力保障其安全,所以需要一种能够使区块链安全、不可改变的共识协议。
1703879667
1703879668 4)隐私。尽管网络是私有的,在网络自身中还需要隐私。共有以下两种隐私。
1703879669
1703879670 ①身份隐私。身份隐私使身份不可追踪。此前我们看到的获取身份隐私的方法是使用多个以太坊账户地址。但是如果使用多个以太坊账户,则智能合约不能通过所有验证,因为无法知道所有这些账户是否真的属于同一个用户。
1703879671
1703879672 ②数据隐私。有时候,我们希望数据只对特定节点可见,而不是对网络中的所有节点可见。
1703879673
1703879674 总之,在本章中,我们将学习如何在以太坊中解决这些问题。
1703879675
1703879676
1703879677
1703879678
1703879679 区块链项目开发指南 [:1703875407]
1703879680 区块链项目开发指南 9.2 什么是权威证明共识
1703879681
1703879682 权威证明共识是一种区块链共识机制,达成共识的方式是引用一个验证器(validator,用于物理实体时被称为权威机构)列表。验证器是一群被允许加入共识的账户/节点,用于验证交易和区块。
1703879683
1703879684 与PoW或者PoS不同,这里不涉及挖矿机制。PoA协议有多种类型,并且它们的工作原理各不相同。Hyperledger和Ripple均基于PoA。其中,Hyperledger使用PBFT,而Ripple使用一个迭代过程。
1703879685
1703879686
1703879687
1703879688
1703879689 区块链项目开发指南 [:1703875408]
1703879690 区块链项目开发指南 9.3 parity概述
1703879691
1703879692 parity是一个彻头彻尾的以太坊节点,其特点包括正确性/可验证性、模块化、低内存占用和高性能。它是用Rust编程语言编写的,Rust是一种混合式的、面向对象的函数式语言的语言,注重效率,由Parity Technologies公司开发。在写本书时,parity的最新版本是1.7.0,我们将使用这个版本学习创建联盟区块链需要的内容。如要深入学习parity,请参考官方文档。
1703879693
1703879694 parity的功能比go-ethereum多,例如有web3 DApp浏览器和更先进的账户管理功能等。不过parity的特别之处在于它既支持PoA,也支持PoW。parity目前支持Aura和Tendermint PoA协议,未来还可能支持更多的PoA协议。目前,parity推荐使用Aura,而不推荐Tendermint,因为Tendermint仍处于开发阶段。
1703879695
1703879696 对于获得许可权限的区块链来说,Aura是一个比PoW好得多的选择,因为它的区块时间更好,且在私有网络中提供了更好的安全性。
1703879697
1703879698
1703879699
1703879700
1703879701 区块链项目开发指南 [:1703875409]
1703879702 区块链项目开发指南 9.3.1 Aura的工作原理
1703879703
1703879704 让我们从一定高度看看Aura是如何工作的。Aura要求每个节点中都指明同样的验证器列表,这是参与共识的账户地址的列表。一个节点可能是验证节点,也可能不是验证节点,即使是验证节点,也需要有这个列表,这样它自己才能达成共识。
1703879705
1703879706 这个列表可以在创世文件中作为静态列表提供(如果验证器的列表永远保持不变),或者在智能合约中提供(这样它可以被动态更新且让每一个节点都知道它)。在智能合约中,对于谁可以添加新的验证器,可以设置不同的策略。
1703879707
1703879708 区块时间可以在创世文件中配置。用户可以自己决定区块时间。在私有网络中,低至3s的区块时间运行良好。在Aura中,每过3s就选择验证器中的一个,该验证器负责创建、验证、签署和广播区块。用户不需要深入理解实际的选择算法,因为这不会影响DApp开发。这是计算下一个验证器的公式:(UNIX_TIMESTAMP/BLOCK_TIME%NUMBER_OF_TOTAL_VALIDATORS)。选择算法很智能,它给所有人同等的机会。当其他节点接收一个区块时,它们要检查区块是否来自下一个合法的验证器;如果不是,就拒绝它。与PoW不同,验证器创建区块的时候,不能得到以太币回报。在Aura中,由用户决定在没有交易时是否生成空区块。
1703879709
1703879710 如果由于一些原因,下一个验证器节点创建和广播下一个区块失败了,情况会如何?让我们看一个例子:假设A是下一个区块(即第5个区块)的验证器,B是第6个区块的验证器。假设区块时间是5s。如果A广播区块失败,则5s之后轮到B广播区块。所以事实上不会发生什么要紧事,区块时间戳将揭示这些细节。
1703879711
[ 上一页 ]  [ :1.703879662e+09 ]  [ 下一页 ]