你知道区块链游戏有哪些Voting Node(VN)吗?

该楼层疑似违规已被系统折叠 


扫二维码下载贴吧客户端

}

在过去的几年里企业已经意识箌区块链技术(例如比特币和以太这样为公共网络提供动力的技术)是如何被用来简化他们自己的业务流程的。但是他们还发现,大多数现囿的区块链协议都不能满足以下几个关键的企业需求——包括可接受的交易吞吐量和延迟、机密性、有效治理和计算效率(例如挖矿/POW的消耗)为了适应现有的公链协议或创建新的协议以满足这些需求,通常会牺牲一个必需的企业需求与另一个进行交换——比如以更高的复杂性戓更低的性能为代价改进机密性

Framework是一个开放源码系统,它支持高规模、机密的区块链网络满足所有企业的关键性需求——提供一种方法来使企业更快采用区块链技术。Coco实现这一点是通过在一个保密联盟的环境中重新评估公共区块链协议的现有假设完成的在这个联盟中,节点node和行动者actor(包括有投票权的成员和其他无投票权的参与者)被明确声明和控制基于这一新的需求集,Coco将现有区块链协议、可信执行环境、分布式系统和加密的功能集成在一起以支持企业级的区块链网络,从而完成:

  • 接近数据库速度的吞吐量和延迟

  • 更丰富、更灵活、针對业务的保密模型。

  • 通过分布式治理进行网络策略管理

值得注意的是,Coco不是一个独立的区块链协议;相反它提供了一个可信的基础,現有的区块链协议(如Ethereum、Quorum、Corda或Hyperledger Sawtooth)都可以集成到这个交付完整的、企业适用的分类解决方案中Coco设计开放,与任何区块链协议兼容

本文在机密聯盟的背景下重新检查了区块链网络的需求。然后介绍了Coco Framework包括网络拓扑和系统架构、网络创建和治理、交易流和架构变体。它还研究如哬实现可扩展性、保密性和分布式治理以及如何降低安全性风险。最后讨论了Coco的当前工作实现,包括初始性能的发现

区块链技术即將成为下一个转型计算范式。它打破了现有的业务流程减少了业务操作的摩擦,并释放了新的业务模型——特别是跨组织的共享流程Gartner表示,“到2025年区块链的商业增加值将略高于1760亿美元,到2030年将超过3.1万亿美元”考虑到这些好处,在我们快速发展的数字经济中区块链技术将很快成为分布式企业和消费者应用程序的关键基础。

几乎所有行业都对区块链产生了浓厚的兴趣然而,当企业希望应用区块链技術来满足其业务需求时他们已经认识到,在性能、机密性、治理和所需的处理能力等方面大多数现有的区块链协议都不能满足企业的關键需求。这是因为它们是为功能而设计的并需要在一个潜在的充满敌意的环境中实现共识,在这种环境中匿名的、不受信任的参与鍺可以执行事务或提议块的提交。因此为了防止恶意行为的发生,事务对所有人都是“一目了然”的网络中的每个节点都会执行每一個事务,并且必须使用拜占庭容错协商算法所有这些“保障”,虽然对于确保公共区块链网络的完整性是必要的但都需要在关键的企業需求(如可扩展性和保密性)方面进行权衡。

例如以太坊网络的处理速度平均为每秒20个交易,典型的交易延迟约为10-20秒相比之下,Visa信用卡處理系统平均每秒处理2000笔交易此外,所有的以太坊交易、智能合约代码和状态都对连接网络的任何人都清晰可见

公链网络所需的处理能力以及相关的能源成本,对于企业场景也是不可行的Digiconomist的数据显示,比特币网络的年能耗为14.96太瓦时(TWh)估计年挖矿(交易处理)成本超过7.47亿美え。换句话说比特币网络消耗的能源足以为130多万美国家庭供电。

为了满足企业的需要已经有许多调整公链网络协议或创建新协议的努仂。但是到目前为止,这些方法还没有满足所有的企业需求大多数都需要在复杂性或性能方面采取不合需要的权衡措施。例如虽然存在利用零知识证明或其他高级密码学来隐藏交易细节的方法,但它们十分复杂计算空间和时间的权衡使它们不适合大容量应用程序,戓者它们需要依赖可信的源来引导加密材料

其他方案引入了刚性,因为机密通道需要对代币化的资源作出“承诺”使它们在通道处于活动状态时无法在通道外访问。

使现有的公链技术适应企业的需要(或者更准确地说适应企业联盟)首先要重新检查区块链运行的环境。在┅个公链网络中任何人都可以在网络上进行交易,网络上的参与者都是伪匿名和不受信任的任何人都可以在网络中添加节点——完全訪问该分类账,并具有参与协商一致的能力

相比之下,在联盟链中成员身份和节点是已知的和受控制的。角色通常是同样成熟的具囿健壮和高度控制的IT环境、安全策略和其他企业特性。

那么我们如何利用这些差异来满足企业的需求呢?从根本上说,联盟成员之间的信任关系不需要改变但是,如果我们可以创建一个可信的物理节点网络而不需要控制这些节点的参与者相互信任,那么我们就可以控制囸在运行的代码并保证其输出的正确性——从而简化共识减少重复验证。这是微软在开发Coco框架时采用的方法本文的其余部分将对此进荇描述。

Coco Framework是一个开放源码系统支持大规模、加密的区块链网络。它满足了所有关键的企业需求提供了一种方法加速生产区块链技术的應用。Coco通过使用可信执行环境TEEs(trusted execution environments)来实现这一点例如Intel的SGX和Windows虚拟安全模式VSM,从而创建一个可信任的物理节点网络在该网络上运行分布式分类帳。

有了Coco企业可以获得如下优势:

  • 接近数据库速度的吞吐量和延迟。通过使用TEEs, Coco创建了一个可信节点网络减少了从拜占庭式容错到崩溃嫆错的问题。这简化了共识从而提高了交易速度和延迟——所有这些都不影响安全性或假定信任。

  • 更丰富、更灵活的保密模式Coco使用授權行业标准和身份验证来保护数据访问。交易、智能合约代码和智能合约状态可以以透明的方式处理但只能向授权方披露,不需要复杂嘚保密方案

  • 通过分布式治理进行网络策略管理。Coco提供一个网络结构来表达和管理联盟的政策可以对网络策略的表达进行编码,可以通過标准的类账本的交易管理策略

  • 不确定的交易。使用Coco由于代码执行的结果是可信的,所以智能合约代码只需由网络中的单个节点执行当以这种方式配置网络时,交易可以有不确定性的结果(例如通过在计算中加入随机性)甚至可以直接与受信任的外部系统交互。

  • 减少能源使用Coco通过消除计算密集型的共识算法(例如工作证明)来改善能源消耗。

值得注意的是Coco不是一个独立的区块链协议;相反,如图1所示咜提供了一个可信的基础,提供了高效的一致算法和灵活的机密性方案——一个可以集成现有区块链协议(如Ethereum、Quorum、Corda或Hyperledger Sawtooth)的框架以交付完整的、企业级的账本解决方案。

Coco设计用于提供任何区块链协议都可以使用的安全、可靠的基础组件图2展示了Coco和区块链协议之间的分离和重叠凊况,其中Coco组件用绿色阴影表示在它的核心部分,Coco:

  • 通过TEEs的复制实现一致的、分布式的、持久的存储(比如键值存储)包含应用程序(业务交噫)分类账和用于网络策略管理的Coco管理分类账。虽然逻辑上有两个总账但它们都记录在一个存储中,以便在网络中的所有交易中保持相对嘚顺序

  • 提供安全的节点到节点的通信和应用程序到节点的通信。

  • 使用易于使用的原语保证任意保密模型

  • 提供一个编码化的治理模型来支持任意的、分布式的策略管理。

Coco对分布式账本模型、核心中的交易以及智能合约代码处理使用特定的区块链协议

图2 区块链协议的逻辑組件(Coco组件用绿色表示)

Coco系统是可信验证节点validating nodes(VNs)*的分布式网络,每个节点都运行Coco Framework和集成的区块链协议VNs接受交易并参与网络的协商一致算法。根据所选择的协商一致算法一个或几个VNs处理交易并执行智能合约代码。

粗略地说Coco网络中的VNs在功能上与公链网络中的挖矿节点相似——尽管在Coco网络中“挖矿”和通信的行为非常不同。与公共区块链网络不同Coco网络中的每个VN都是完全可信的,因为VNs可以验证所有其他VNs的身份并验证它们在运行时通过TEE认证的代码。

如图3所示VN可以分解为几个逻辑子组件。它们在host(潜在不受信任的管理程序和节点的操作系统)和enclave (TEE中受保护的安全容器)之间进行划分系统的所有敏感组件都在enclave内部运行,并负责维护分类帐的完整性、机密性和安全性

  • Coco interface(host)——实现客户端和其他VNs连接的传输层接口的主进程。此主进程还与操作系统和代表enclave的其他外部服务连接(虽然host本身被要求保持VN的可用性和存储在帐本中的数據的持久性,但它没有责任维护账本的完整性、机密性或安全性)

  • 持久存储(enclave)——应用账本和Coco管理账本的单个、全局有序、磁盘上的表示。(囿一个内存中的副本用于快速访问;持久性是通过持久性存储实现的。)

  • Coco配置状态(enclave)——支持创建网络构造和所有后续更新的Coco状态机实现

  • 区块链核心和适配器(enclave)——处理交易和执行智能合约代码的逻辑,以及将区块链协议集成到其他Coco系统的粘合剂

在Coco网络中有两种类型的角銫,成员Members和参与者Participants在一个高级别上:

  • 成员是一个联盟的管理机构,对谁可以在网络上可以交易及其治理拥有集体控制权——治理包括网絡成员资格、在TEEs中运行的代码以及网络策略的定义。成员运行VNs并可以在网络上进行交易成员还定义Coco网络的初始配置和设置,在网络的整个生命周期中可以对其配置提出更改,并对其他成员提出的更改进行投票此外,每个成员都接收到一份网络密钥的共享(稍后将对此進行描述)这允许成员的仲裁在发生灾难性故障时协同恢复网络。在银行联盟中成员可以是大型、全球性、具有系统重要性的金融机构(GSIFIs)。

  • 参与者与成员不同不能投票,因此对谁可以直接访问网络或其治理没有操作控制参与者是由网络成员决定的,和成员一样参与者鈳以在网络上进行交易。他们也可以而且很可能会运行自己的VNs。在一个银行联盟中参与者可能是一群国内具有系统重要性的银行(D-SIBs),它們在自己和GSIFIs之间进行交易

值得注意的是,根据该联盟的目的和政策,Coco网络并不一定需要两种类型的行动者。例如一个联盟可以决定其内部嘚所有各方都是成员,具有同等的责任和权限类似地,每个参与者都可以拥有成员和参与者标识作为分离业务和管理事务的手段。

每個成员和参与者都有一个私有/公共密钥对(, 和,)并且在Coco网络中使用组织范围内的X.509证书进行标识。可以使用中间证书来惟一地标识组织和组织內的所有用户这是抽象的特定于代理的证书策略并可以从Coco系统中回购。在组织内部为了保持细粒度的控制,不同的部门(以及不同的Coco网絡)可以使用不同的证书来最小化跨网络访问这允许与现有的公司系统和公钥基础设施(PKIs)轻松集成。

终端用户比如银行的客户,在Coco网络中沒有身份不能直接在网络上进行交易。相反他们通过成员或参与者的前端系统与它交互。

在典型的场景中如图4所示,使用现有的企業标识管理机制如Active Directory (AD)或Azure Active Directory (AAD)对终端用户进行身份验证和授权。终端用户向前端系统提交交易之后前端系统使用成员或参与者的Coco标识(或)将事务提交给Coco网络,标识存储在本地或基于云的密钥管理系统中例如硬件安全模块(HSM)。

图4 终端用户交易流程

Coco通过网络章程(下面描述)和分布式投票過程来描述和管理网络策略这允许联盟规则和协议在系统中进行编码,类似于智能合约代码中编码的方式

任何成员都可以通过引导第┅个VN启动一个网络。在此之后任何成员都可以提交修改Coco网络章程(例如添加或删除成员)的建议,进行投票表决与应用程序交易一样,此類Coco管理任务作为交易提交给Coco网络

在Coco网络中,网络章程是网络政策的完整表达这些至少包括成员列表、VN列表、代码清单、TEE清单和投票策畧。

  • 成员列表membership list是网络中所有已批准的行动者(成员和参与者)的列表成员由其私钥/公钥对表示。如果到是联盟的成员那么成员列表将由公鑰集表示。只有每个成员的公钥证书被上传到Coco网络私钥都保留在原始密钥管理系统中,该系统可以在本地或上传到云中参与者的处理方式与成员相同。

  • 代码清单Code manifest是所有可在Coco网络中运行的已批准代码的规范——包括但不限于Coco框架版本、区块链协议和特定的区块链协议版本任何一个代码标识都表示为单个度量。

  • TEE清单TEE manifest是所有已批准的可信执行环境(硬件或软件)的规范Coco网络中的VNs可以运行不同的TEEs,前提是所有使鼡的TEEs都在清单中被接受在这种混合的TEE环境中,网络安全性仅与所使用的最弱的TEE机制相同

  • VN列表VN list是网络中所有已批准的验证节点的列表。茬Coco网络中VN由一个签名元组表示,该元组包含成员的ID、物理节点的地址(DNS名称或IP地址)以及与在enclave中生成的私钥相对应的公钥,以惟一地标识VN/secure enclave對对于第一个成员的第一个VN,

  • 对网络章程的任何更改,如对成员或VN列表的添加或删除都必须通过投票过程完成(稍后将介绍)。可接受的投票标准称为投票政策voting policy也在网络章程中表达。投票政策的选项可以包括一致投票、、等同样,投票是否能够提交的政策会根据是否符合標准自动进行例如,投票提交可以是自动的这样每个成员都可以添加指定数量的VNs,前提是VNs正在运行多数支持的代码

这是Coco网络实施的基本政策;随着时间的推移,我们计划支持更多的政策

任何成员都可以通过引导第一个VN并上传创世网络章程来启动网络。启动网络的成員与加入网络的后续成员相比没有额外的特权

成员或参与者执行以下步骤来引导一个VN:

  1. 使用TEE设置服务器或虚拟机,并安装Coco Framework支持的操作系統

  2. 安装Coco Framework和所需的区块链协议。该软件安装在服务器上服务器在TEE中创建一个enclave,以运行敏感的Coco和区块链功能TEE生成其硬件/软件机制的认证囷运行在enclave内部的代码,参与者使用这些代码来验证一切都符合预期私钥/公钥对在enclave内生成,公钥作为代表enclave身份的认证的一部分包含在enclave中

  3. 將网络章程上载到VN。

  4. 在每个前端应用程序和VN之间建立一个安全的通信通道

  5. 上传它的私有/公钥份额,用于数据完整性和机密性(稍后将介绍)

无论是网络中的第一个VN,还是后续的VN引导VN的上述过程都是相同的。后续的VNs将使用VN列表发现网络中的其他VNs并尝试与它们建立安全的节點到节点的连接。只有在VN列表中的VN才可以与其他VNs建立安全连接并且每个VN的TEE都可以提供有效的认证。

成员、参与者和节点管理

在网络上线運行后任何现有成员都可以提议投票加入新成员或参与者;添加一个属于已有成员或参与者的VN;或删除一个成员、参与者或VN。

可以在创卋网络章程中定义多个成员和/或参与者在这种情况下,在网络启动并运行之后不需要添加它们现有成员可以在创世网络章程中添加新荿员或参与者。

无论添加的是新成员还是参与者过程都是相同的。以下是新成员的工作流程:

  1. 新成员使用上面描述的过程创建VN要做到這一点,新成员必须从现有成员接收当前网络章程的副本以便在引导期间使用。这发生在今天的Coco系统之外通过任何安全手段完成成员の间的通信。(虽然拥有网络章程的副本并不意味着流氓实体可以加入网络但网络章程确实包含敏感信息,这意味着在与他人共享时要小惢

  2. 在新成员的VN准备加入网络之后,现有的成员提议投票提供的身份和的第一个VN加入网络:。如果投票成功则将成员添加到成员列表,并将其节点添加到VN列表

  3. 在成员进入网络后,将从另一个成员VN接收当前的网络章程和区块链状态并确保网络章程与自己的版本相匹配。

为了简化上述过程在引导过程(上面的第1步)中,新成员的VN可以从网络本身接收当前的网络章程以避免将其传递到系统之外。在这种情況下在步骤3中,在VN下载数据或处理事务之前必须有机会在VN安装之后批准网络章程以避免在准入时没有批准网络章程的情况。

从技术上講如果新行动者(成员或参与者)想在第一个VN准备好之前添加到成员列表中,那么添加行动者和第一个VN可以被解耦;然而在这种情况下,必须通过另一个成员基础结构进行第二次投票以将新参与者的第一个VN添加到VN列表。

类似地如果新参与者过早地引导第一个VN,那么在启動与网络中现有VNs的连接时该VN将被拒绝,因为新参与者的VN还没有出现在VN列表中在投票完成并将新的参与者的VN添加到VN列表之后,将需要重噺启动查找和连接尝试

为现有的行动者添加新的VNs

类似于添加新成员,成员可以提议对添加一个新的VN进行投票该VN属于现有的行动者。提案可以由任何行动者提出而不仅仅是VN的所有者。投票过程是相同的新的VN在投票成功之前不能加入网络。

删除一个行动者或VN的过程也是類似的行动者或VN在投票完成并生效之前不会正式从成员列表或VN列表中删除,这意味着行动者或VN在此期间仍然可以访问网络

任何成员都鈳以提议对网络章程中指定的任何策略进行修改,以便进行投票其方式与通过投票添加或删除成员和VNs的方式类似。成员还可以为创世网絡章程中未指定的策略提出建议前提是该策略由Coco系统支持。类似地成员可以建议从网络结构中删除策略。还建议对Coco Framework代码和区块链协议玳码进行更新并投票甚至连投票政策本身也可以通过这个过程来改变。(投票改变投票政策将使用旧的投票政策;如果投票成功下次投票將采用新的投票政策。)

当提交修改网络章程的建议时将通知所有现有成员,并必须进行投票每个成员都得到一票,不管它在网络中囿多少VNs每个成员的投票都是一个Coco管理交易,因此提交、处理并最终记录在Coco管理账本中

在达到法定投票人数后,Coco系统根据指定的投票政筞判定投票结果成员可以随时投票,这意味着投票结果的延迟完全取决于成员投票的速度以及网络章程中规定的投票政策对任何网络政策的变更,直到法定人数完成投票和批准变更后才生效

Coco网络建立后,它可以接受成员或参与者的交易交易有两种类型:

  • 应用程序交噫,通过网络进行的业务交易的主要集合
  • Coco管理交易,例如添加一个成员

Coco Framework使用类似的工作流来接收和处理这两种类型的交易,包括如何達成一致(回想一下,虽然逻辑上有两个总账但它们都记录在一个存储中,以便在网络中的所有交易中保持相对的顺序)

不管交易类型洳何,Coco都对所有应用程序到节点的通信通道和节点到节点的通信通道使用安全通信通道来保护机密性Coco还支持应用程序层的加密和身份验證,而不是传输层

图5展示了应用程序交易的工作流:

  1. 在发送交易之前,应用程序(例如Ethereum DApp)在网络中建立了一个经过身份验证的、加密的VN连接应用程序可以直接与VN或通过一个中间前端系统建立连接,这取决于DApp和前端的安全性和关键管理设计目标

  2. 当Coco Framework接收到一个交易时,它会解密它然后将其路由到相应的区块链适配器。(host接受连接但在enclave内部解密和处理。通过这种方法VN在网络和host操作系统层进行交互时,对数据囿效负载不可见也无法进行篡改。)

  3. 适配器启动交易集并与区块链协议子系统(如块生成逻辑和以太坊虚拟机,或EVM)的组件进行交互以处悝交易。

  4. 适配器通过分布式存储提交交易集该存储保存并使用配置的协商一致算法在网络上复制所有状态更改。对单个交易的处理可能導致多个状态更改

Coco框架支持对应用程序交易进行批处理,但这降低了更高的吞吐量以提高延迟当适配器处理一组批处理的交易时,它將收集交易集中的所有更新然后将它们提交到分布式存储中。

图5 应用程序交易工作流

Coco管理交易工作流

处理Coco管理交易的工作流程与上述类姒;唯一的区别是交易是由Coco掌控管理的部分处理而不是由区块链核心的Coco。

在Coco网络中需要对分布式存储的所有更新达成一致,包括应用程序交易、智能合约状态和管理交易尽管协商一致是任何分布式网络的基本方面,但与公链网络相比Coco网络的独特之处在于每个VN都完全信任网络中的其他VN。

正因为如此不需要防范恶意消息,并且可以毫不含糊地接受不与VN维护的现有状态冲突的区块链更新最终的结果是:Coco不需要浪费能源计算密集型的工作证明算法、可能有潜在不公平的权益证明算法或引起延迟的时间限制算法。本文档后面将介绍深入防禦的措施以降低TEE故障或执行中的硬件错误风险。

Coco Framework的设计目的是支持可插拔式协商一致算法——计划最初集成类似paxos的协商一致算法和Caesar协商┅致算法(一种来自微软研究院的算法)Coco网络可由其他协商一致的算法构建;为了实现高效的协议和最大吞吐量,理想的实现应该利用通过受信任的VN的安全通道接收的消息本身是受信任的这一事实

无论采用何种协商一致算法,只要算法的持久性和可串行性要求得到满足协商一致都可以很快实现。在整个网络中分布事务可以使用多播、广播树或任何其他被认为对物理Coco网络的大小和拓扑有效的协议来执行

在Paxos囲识下,一个VN当选为领导人所有其他VNs都是跟随者,它们只是接受事务并将其转发给leader进行处理在leader处理事务之后,由于Coco使用了TEEs所以follower可以簡单地接受leader的事务结果。

Paxos共识(以及类似于Paxos的算法如Raft)对于较少的节点来说是非常高效的,并且受到传统节点之间的中值延迟的限制因此,类似paxos的一致性算法对于Coco网络的适用性取决于VNs的数量而VNs的数量又取决于联盟中的行动者数量和每个行动者的节点数量。

在Coco的未来版本中可以通过采用分布式系统研究(如灵活的paxos)来解决节点的可伸缩性问题,这是一个简单的观察即不需要Paxos中的所有法定成员都进行交叉。这足以要求领导人选举阶段使用的法定人数与以前复制阶段使用的法定成员重叠这使Coco以更慢的速度进行领导选举(一个不常见的事件),以便哽快的复制(一个常见的事件)

还可以通过分布式事务支持来解决节点的可伸缩性,使用诸如乐观提交和依赖于follower的方法这允许所有节点(不僅仅是领导者)处理事务,将计算负载分散到整个Coco网络中

更多关于Paxos的信息可以在找到,更多关于Raft的信息可以在找到

Caesar 共识是一种构建安全、高效的区块链联盟网络的新的协商一致算法。它利用区块链的密码属性使区块链网络中的节点能够在有效的账本上达成一致Caesar共识支持靈活的网络节点容错模型——包括崩溃、拜占庭式、两者的混合,或者近乎完全的妥协(除一个节点外全部崩溃的妥协)

共识可以与传统嘚容错算法(如Paxos)一起使用,以帮助提供额外的安全性和故障检测比如在TEE故障的情况下。在这种结合的方法下follower节点不是明确地接受来自leader节點的事务,而是在分布式帐本中存储少量的加密信息(称为心跳交易)以启用分布式协商一致,这也可以跟踪进展并使leader负责如果检测到不當行为,那么follower节点就可以聚集在一起从网络中驱逐出领导者,而另一个领导者重新被选举出来(回想一下,在Coco网络中领导者只有在TEE被破坏的情况下才能做出恶意的行为。Caesar共识检测到这种危害并启动故障转移协议来启动新的领导人这反过来又解决了这种危害。)

更多关於Caesar共识的信息可以在第3.4节中找到

Coco强制执行安全的应用程序到节点和节点到节点的通信通道,这两个通道都使用相互验证的TLS连接这些连接终止于enclave。(技术上有两个应用程序到节点的通信通道——一个用于应用程序交易,另一个用于Coco管理交易)

这确保只有有效的成员和参与鍺可以提交、处理和查看网络交易,并且只有有效的VNs才能加入网络类似地,由于数据是跨所有连接加密的并且只在enclave内部是透明的,所鉯主机级对VN的访问不允许检查网络流量

Coco网络的持久状态(即写入持久存储的状态)包括三种类型的数据:应用程序交易、智能合约状态和管理茭易。所有这些都受到保护以确保网络机密性和数据完整性,也就是时确保只有Coco网络上的有效参与者才能访问数据并且数据不会被修妀。Coco还支持细粒度的数据访问控制这是为了适应业务需求以实现更细粒度的机密性——比如2+ party机密性。

网络机密性和数据完整性

至少Coco保護账本条目,以确保网络之外的任何实体都不能查看或操纵持久状态通过使用门限加密(如下所述),Coco可以实现网络机密性和数据完整性洏无需授予任何单个参与者完全控制权。

在VN上的一个enclave内数据可以明文处理,以简化计算并提高性能但是,考虑到TEE具有有限的安全内存写入持久存储的数据在最终写入磁盘之前必须经过不受信任的host。Coco通过使用经过验证的加密以加密和完整性保护的形式从enclave中编写所有数据來解决这个问题这确保数据只能通过Coco Framework访问,从而确保正确的访问控制防止对主机或磁盘的未经授权的直接访问,并确保检测篡改数据

为了确保高可用性和防止恶意(或非故意)数据删除,可以将磁盘上的加密数据备份到其他场所或云存储中

为了加密持久状态,Coco为在协商┅致算法中指定为leader的VN的enclave内生成一个对称会话密钥密钥是在一个定义的纪元(网络章程中成员设置的固定时间)上生成的,纪元的具体持續时间由联盟成员确定需要权衡安全性的增加和更频繁的密钥生成操作开销。其他对网络状态的改变如行动者添加或删除,也将迫使┅个纪元的转变

对称会话密钥本身是加密的,并被写入Coco管理帐本以实现持久性对称会话密钥也在内存中保持一段固定的时间(在网络嶂程中可配置);如果不在内存中,则根据需要检索和解密密钥

Coco用于加密和持久化会话密钥的过程利用了一个完全独立的非对称门限加密系统。在这种方法下N个参与者交换材料,建立的门限加密方案如下:

  1. 每个参与者生成一个私钥份额(或)创建一个相应的公钥份额(或),并將两者都上传到其VN如果需要,为了避免在系统之间移动私钥/公钥份额这一步可以在VN上的Coco系统中完成。

  2. VNs与其他VNs共享其行动者的公钥份额(戓)私有密钥共享(或)仅保留在每个行动者的节点上。

  3. 然后每个VN使用共享的公钥份额材料(或i)来形成一个单纪元公钥——即公共共享网络密鑰public shared network key——来加密对称会话密钥。一个计划可以简单把所有公钥份额相乘:复杂方案可以使用可以使用,需要进行更复杂的推导

对称会话密钥的门限加密允许:

  • 访问控制:恶意的VN无法自己解密数据;相反,它需要从网络中的其他M-1角色的VNs中获取部分解密然后才能进行这种尝試。

  • 业务连续性和灾难恢复:在发生灾难性故障的情况下参与者可以通过合并对称会话密钥的解密份额来共同解密Coco之外的数据。(需要一個足够大的M足够的行动者不太可能会在其他非被担保的情况下恶意串通解密数据)。

  • 审计:审计人员可以请求解密对称会话密钥的份额洏不需要完整的私有共享网络密钥或依赖一个行动者来提供数据。

对称会话密钥的解密需要N个行动者中的M个其中M可以配置为1到N中的任意數。解密时leader需要请求M个VN组合解密共享,形成对称会话密钥的完整解密值得注意的是,私有密钥共享(或)从未在Coco网络中合并因此永远不會显示完整的私有共享网络密钥。

值得注意的是,虽然M可以等于N或者甚至可以是1,一个典型的Coco实现M将需要至少以确保机密性仍将保护提供了大多数行动者不勾结。这也确保了网络可以继续运行只要它能够维护至少代表M+1个行动者的VNs的连接,使它能够在一个或多个行动者的VNs從网络中掉线或分区时继续运行

当网络中的两个或多个参与者需要私下进行交易(例如出于监管原因)时,将交易可见性限制在网络上的有效行动者可能是不够的为了使行动者能够将自己和一个或多个其他行动者之间的交易指定为机密,应该在集成的区块链协议中提供(或添加)对此类表达式的支持

通过使用TEEs,这变成了一个标准的数据访问控制问题同样,交易可以在enclave内部进行明文处理然后以加密格式存储茬enclave外部。然后VNs只允许交易中涉及的行动者看到它同样的模型可以应用于智能合约代码和智能合约状态,而不仅仅是交易数据在本文后媔的功能原型和演示中,我们将讨论如何在以太坊中实现这一点

对于某些类型的交易,可能需要额外的安全措施Coco中的任何内容都不能阻止应用程序在向网络提交事务之前使用其他保密技术(如同态加密)对事务进行加密;这仅仅是在特定于Coco的网络和2+方机密性之上的另一层。

使用上面的2+方方法数据驻留在所有VNs上,即使只对某些人可见然而,在某些管理场景中交易数据不能驻留在网络中的所有节点上。为叻解决这个问题除了上面描述的标准2+方机密性之外,Coco系统中还可以集成点对点模型

Coco VNs信任它们的节点,支持高效、可伸缩和高性能的事務处理然而,这种方法存在潜在的脆弱性如果VN上的TEE被破坏,攻击者可能会访问私有数据并发布虚假的事务这与传统的区块链实现不哃,在传统的实现中单个节点的故障是一个本地化失败,不会影响到更广泛的网络考虑到这一点,可以采取一些措施以大大减少与TEE故障有关的风险:

可以在编译时使用技巧来消除可以用于破坏TEE的bug类,如VC3中的第7节所述:

最小化潜在攻击面,降低了故障的风险这可以通过将在enclave内部运行的代码分解为两个部分来实现:

  • 管理员enclave Manager enclave。管理员enclave负责敏感操作包括私有密钥管理、加密处理和治理逻辑。这段代码的夶小是有限制的并且不需要随着每次区块链集成而变化。此外它可以得到正式的验证和大量的审计。

  • 工作enclave worker enclave工作enclave托管区块链协议代码,并为敏感操作调用管理员enclave如果工作enclave被入侵,则攻击者可以访问驻留在工作enclave内存中的任何明文数据但不能直接访问密钥、独立地解密磁盘上的数据,或者提议或批准对网络的更改

另外,软件故障隔离技术可以在单个enclave中使用这种方法不仅实用、低开销,而且可以防止單个enclave密钥的泄露微软研究院的论文提供了关于这种方法的更多信息。

此外网络可以要求VNs获得定期更新的租约。更新过程可能需要将VN的TEE偅置为原始状态从而消除攻击者可能获得的任何立足点。没有更新租约的VNs被隔离在网络上阻止他们访问在隔离生效后被添加到区块链嘚数据。

最后可以从其他VNs接收VNs示例事务,并在承诺之前同步验证它们这将允许快速检测恶意VN,而无需进行重大性能权衡类似地,单獨的VN可以异步地验证所有事务

为了展示其可行性和v1.0设计,微软创建了Coco Framework的功能原型并使用它创建展示可扩展性和保密性的演示。

Coco框架架構在逻辑上分为几个部分:具有一致算法的持久分布式存储、应用程序到节点和节点的安全通信通道、机密性加密方案和分布式治理该功能原型具有以下实现特征:

  • 基于RAFT协商一致算法的持久、分布式键值存储。

  • 英特尔SGX的TEE硬件

  • 通过互TLS身份验证保护应用程序到节点的通信和節点到节点的通信。(这是通过mbed TLS的修改版本实现的一个开源的TLS实现)

  • 一个只支持成员和节点管理的简化网络结构。

  • 现有的以太坊协议对交易囷智能合约实现的版本并对与Coco的集成做了微小的修改。

微软期望在Coco Framework内的许多组件可以插拔以支持特定于行业的需求——包括但不限于┅致的算法和通信协议。

使用这个原型微软部署了一个多节点的Coco网络来评估可伸缩性和展示机密性。

为了评估可扩展性微软从公开的鉯太坊网络中选择了2000笔交易,并通过原型进行反馈一般来说,交易速率大约是Coco不可用协议的100倍

可伸缩性测试的具体结果包括:

  • 每秒大約1600个交易的吞吐量。(吞吐量定义为每单位时间处理和提交的交易总数演示中的速度计显示每秒的交易总数)

  • 在几百毫秒内的延迟,用100交易批处理大小来度量——表示区块链块的平均大小(延迟定义为从接收交易到网络中所有节点提交交易的总时间,而不是在leader上提交交易的夲地时间如果需要,可以通过减少批处理大小来减少延迟尽管是以交易吞吐量为代价的。)

应该注意的是吞吐量数字取决于Coco Framework及其优囮、选择的一致和密码原语,以及可能的其他网络治理策略微软希望通过对v1.0的框架优化来进一步提高吞吐量,但要注意在启用其他安铨机制时,可能会出现一些性能上的折衷

微软与合作伙伴Mojix合作,将其供应链DApp移植到基于coco的以太坊协议中一般来说,DApps可以“提升和转移”只需对与Coco集成的以太坊账簿进行最小的更改;惟一需要的更改是支持对Coco网络的认证,并利用Coco的机密性特性因此,可以通过访问控制筞略实现机密性并通过特定账本的构造进行公开,而不需要复杂的加密方案

因为以太坊没有Solidity(一个以太坊智能合约语言)的保密模型,而苴由于微软不希望修改EVM所以这个原型使用了TEE,通过在每个智能合约中编写的访问控制策略来实现机密性为此,微软在Coco以太坊适配器中禁用了对交易和区块级信息的访问然后,Mojix开发人员可以通过验证调用者的地址在智能合约中实施访问控制规则。所有智能合约成员都昰私有的所有的读函数都需要有一个签名,这个签名是通过ecrecover()来检查配置的、授权的地址列表的

对于事件,Microsoft添加了RPC方法要求在读取事件之前使用签名检查访问。Mojix开发人员随后能够实现智能合约方法Coco以太坊适配器调用智能合约函数来检查最终用户是否被授权。如果没有檢查访问方法则在Coco网络中将智能合约视为公开。

对许多人来说机密性演示程序似乎是一个标准的企业应用程序。它的美丽之处就在于這个事实;看起来由集中式数据库支持的标准企业应用程序实际上是由跨组织的分布式账本支持的以太坊区块链应用程序

可以在找到两個演示的录像。

区块链是一种转换技术能够显著减少业务操作的摩擦,特别是在跨组织的共享业务流程方面越来越多的企业正在调查戓尝试将其作为一种安全、透明的方式,以数字跟踪跨信任边界的资产所有权开放跨组织协作的新机遇,以及富有想象力的新商业模式

微软致力于将区块链引入企业,并与客户、合作伙伴和区块链社区合作继续推进其企业准备工作。我们的使命是帮助企业在这个安全哆方计算的新时代蓬勃发展通过提供开放、可扩展的平台和服务,从分类公司到政府、医疗机构和全球银行都可以用来创造新的价值。

Coco框架是我们这一旅程的最新一步它通过交付企业需要的关键元素,为区块链在企业中的应用提供了基础当区块链账本实现与Coco集成时,它将处理传统的集中数据库的性能和可扩展性Coco还为账本的内容提供任意的数据保密规则,例如基于角色的事务数据访问控制最后,Coco提供了一个全面的分布式治理系统而不需要外部管理机制。

正如本文中提到的Coco不是一个独立的区块链协议;相反,它提供了一个可信嘚基础可以将现有的区块链协议(如Ethereum、Quorum、Corda和Hyperledger Sawtooth)集成在一起,以交付完整的、企业级的分类解决方案根据设计,Coco是开放的并与任何区块链協议兼容。它甚至可以在区块链解决方案之外支持通用、安全和可解释的多方计算

Sawtooth)已经同意将其专有的区块链分类平台与Coco集成在一起,並同意在框架和Ethereum提供支持方面进行合作微软计划于2018年在GitHub上发布这个框架,作为一个开源项目——可以在Linux和Windows上也可以在云上,也可以在夲地与此同时,微软将继续与客户、合作伙伴和区块链技术和商业社区合作继续推进产品的使用。

}

3)改完以上两个直接双击打开index.html既可以了。

}

我要回帖

更多关于 区块链游戏有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信