hyperledger fabric2.0关键概念--智能合约--中文介绍

智能合约
在业务可以彼此进行事务处理之前,它们必须定义一组通用的契约,包括通用术语、数据、规则、概念定义和流程。综合起来,这些合同规定了商业模式它控制着交易双方之间的所有互动。
在这里插入图片描述
智能合约在可执行代码中定义不同组织之间的规则。应用程序调用一个art contract来生成记录在分类帐上的事务。

我们可以使用区块链合同将这些程序转化为可执行的网络合同智能合约–开拓各种新的可能性。这是因为智能合约可以为任何业务对象的类型,以便在执行智能合约时自动强制执行它们。例如,智能合约可以确保新车在指定的时间范围内交付,或者根据预先安排的条款发放资金,从而分别改善商品或资本的流动。然而,最重要的是,asmart契约的执行比手动的人工业务流程要高效得多。

在上图,我们可以看到两个组织,ORG1和组织2定义了一个car智能合约查询 ,transfer和更新汽车。来自这些组织的应用程序调用此智能合约来执行业务流程中商定的步骤,例如从ORG1到组织2 .

术语
Hyperledger织物用户经常使用这些术语智能合约和chaincode可互换。一般来说,智能合约定义事务逻辑它控制世界状态中包含的业务对象的生命周期。然后将其打包成区块链,然后将其打包成区块链。可以将智能合约视为管理事务,而链码控制如何打包智能合约以进行部署。
在这里插入图片描述
智能合约在链码中定义。可以在同一个maincode中定义多个智能合约。当一个链码被部署时,它里面的所有智能合约都可以被应用程序使用。

      在图中,我们可以看到vehicle包含三个智能合约的链码:汽车 ,boats和卡车. 我们还可以看到insurance包含四个智能合约的链码:政策 ,liability ,银团和securitization. 在这两种情况下,这些合同涵盖了与车辆和保险相关的业务流程的关键方面。在本主题中,我们将使用汽车以合同为例。我们可以看到,smartcontract是与特定业务流程相关的领域特定程序,而链码是一组相关智能合约的技术容器。

分类帐
在最简单的层面上,区块链不变地记录在账本中更新的交易。智能合约以编程方式访问账本的两个不同部分blockchain,它不可变地记录所有事务的历史记录,并且世界状态它保存了这些状态的当前值的缓存,因为它是通常需要的对象的当前值。

智能合约为主放 ,得到和删除状态在worldstate中,还可以查询不可变的区块链交易记录。

A得到通常表示检索有关业务对象当前状态的信息的查询。
A放通常在账本世界状态下创建新业务对象或修改现有业务对象。
A删除通常表示从分类帐的当前状态中删除业务对象,但不表示其历史记录。
智能合约有很多原料药关键的是,在所有情况下,无论交易在世界状态下创建、读取、更新或删除业务对象,区块链都包含immutablerecord这些变化.

背书
与每个链码关联的是一个适用于其中定义的所有智能合约的认可策略。区块链中的交易必须由一个非常重要的交易指令在一个智能交易链中被宣布;在一个智能合约中,一个非常重要的交易必须通过一个区块链来声明有效的 .
在这里插入图片描述
每个智能合约都有一个与之相关的投资策略。此认可策略确定哪些组织必须批准智能合约生成的交易,然后才能将这些交易标识为有效。

例如,认可政策可能会规定,区块链网络中参与交易的四个组织中有三个必须在交易被考虑之前签署有效的. 所有交易,是否有效的或无效添加到分布式账本,但仅限于有效的事务更新世界状态

如果背书策略指定多个组织必须签署交易,则智能合约必须由足够多的组织执行,才能生成有效的交易。在示例中在上面,智能合约交易transfer一辆车需要双方签字确认组织1和ORG2它是有效的

背书政策使Hyperledger结构与以太坊或比特币等其他区块链不同。在这些系统中,有效的事务可以由网络中的任何节点产生。超级账本结构更真实地模拟了现实世界;交易必须由网络中受信任的组织验证。例如,政府机构必须签署issueIdentity事务,或同时买方和seller一辆车的标志汽车转账交易。认可政策的设计是为了让超人组织更好地模拟这些真实世界的互动。

最后,背书政策只是一个例子政策在超级账本上。可以定义其他策略来确定谁可以查询或更新分类帐,或从网络中添加或删除参与者。一般来说,政策应该事先由区块链网络中的组织联盟商定,尽管它们不是一成不变的。实际上,策略本身可以定义规则,通过这些规则可以更改规则。虽然这是一个高级主题,但也可以定义定制背书政策规则高于织物提供的规则。

有效交易
当智能合约执行时,它在区块链网络中组织拥有的对等节点上运行。契约接受一组名为交易建议书并结合程序逻辑来读写账本。对世界状态的更改被捕获为交易建议回复(或者只是交易响应) whichcontains a读写集包含已读取的状态,以及事务有效时要写入的新状态。注意世界状态在执行智能合约时不更新 !
在这里插入图片描述
所有事务都有一个标识符、一个建议和一个由一组组织签名的响应。所有交易记录在区块链上,无论有效还是无效,但只有有效的交易有助于世界状态。

检查car transfer交易。你可以看到一笔交易t3之间的运输ORG1和组织2. 查看事务的输入方式{CAR1, ORG1, ORG2}和输出{CAR1.owner=ORG1,CAR1.owner=ORG2},代表所有者从ORG1到组织2. 请注意输入是如何由应用程序的组织签名的ORG1,输出由签名二者都认可政策确定的组织,ORG1和组织2. 这些签名是使用每个参与者的私钥生成的,这意味着网络中的任何人都可以验证网络中的所有参与者都同意事务细节。

分发到网络中所有对等节点的事务是已验证分两个阶段进行。首先,根据背书政策,检查交易是否有足够的机构签署。其次,检查它以确保world state的当前值与由认可对等节点签名时事务的读取集匹配;没有中间更新。如果一个事务通过了这两个测试,它将被标记为有效的. 所有交易都将添加到区块链历史记录中,无论有效的或无效,但只有有效的事务会导致对世界状态的更新。

在我们的例子中,t3是一个有效的事务,因此汽车1has beenupdated toORG2. 然而,t4(未显示)是一个无效的交易,因此当它记录在分类帐中时,世界状态没有更新,并且CAR2遗骸归组织2 .
渠道
超级账本结构允许组织通过渠道. 通过加入多通道,组织可以参与所谓的网络。频道在维护数据和通信隐私的同时提供了基础设施的有效共享。它们足够独立,有助于组织将其工作流量与不同的交易对手分离,但整合程度足以让它们在必要时协调独立的活动。
在这里插入图片描述
通道在一组组织之间提供了完全独立的通信机制。当一个链码定义被提交给一个通道时,链码中的所有智能合约都将提供给该通道上的应用程序。

当智能合约代码安装在组织对等方上的链码包中时,渠道成员只能在定义了渠道上的链码之后执行智能合约。这个链码定义是一个包含控制链码操作方式的参数的结构。这些参数包括链码名称、版本和认可策略。每个渠道成员通过批准其组织的maincode定义来同意链码的参数。当足够多的组织(默认情况下大多数)已批准同一个chaincodedefinition时,可以将该定义提交给通道。然后,根据链码定义中指定的放弃策略,通道成员可以执行链码内的智能合约。背书政策同样适用于同一链码内定义的所有智能合约。

在示例中在上面,一个car合同定义在车辆频道,还有一个insurance合同定义在保险通道的链码定义car指定同时需要这两个条件的认可策略组织1和ORG2在事务被视为有效之前对其进行签名保险合同规定ORG3需要签署交易组织1参与两个网络VEHICLE频道和保险网络,并能与ORG2和ORG3通过这两个网络

链码定义为通道成员提供了一种在开始使用智能合约在通道上进行交易之前就链码的治理达成一致的方法。以上面的例子为基础ORG1和组织2想要认可调用car合同。因为defaultpolicy要求大多数组织批准链码定义,所以两个组织都需要批准和{ORG1,ORG2}。否则,ORG1和组织2将批准不同的链码定义,因此无法将链码定义提交到通道。此过程保证来自car智能合约需要得到两个组织的批准。

来源:https://hyperledger-fabric.readthedocs.io/en/latest/smartcontract/smartcontract.html
再浏览器中添加翻译插件。我用的是(baidu translation)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值