在Hyperledger Fabric中,一项资产具有多个事务。这些交易会更新资产状态并保持跟踪。
当前,如果我要为一种资产设置不同的交易类型,那么我在链码中编写了与交易类型相对应的不同功能。
例如:如果我的资产是汽车,那么每个资产都可以具有销售,购买,服务,维修等类型的交易。对于这些购买,维修,服务等中的每一个,我都在中编写了一个函数根据作为输入发送的事务类型来调用chaincode(事务类型作为对等chaincode invoke命令中的参数发送)。
您认为这是一个好方法吗?你会怎么做?为实现不同的交易类型,建议采取什么措施? 另外,如何针对不同的交易类型实施不同的背书政策?
注意:我知道可以用链码编写的基于资产(或基于密钥)的背书策略(Fabric v1.4)。但这不允许我根据交易类型配置认可策略。
答案 0 :(得分:3)
您使用的模式是相当典型的...链码毕竟实际上只是一个状态机。使用不同的链码表示不同类型的资产或资产类别是很常见的。通常,您将具有多个功能来管理资产的生命周期(看起来确实如此)。典型的模式是,调用chaincode时的第一个参数表示您希望调用的函数,但是如果要修改该模式,则取决于您自己。
就针对同一状态采取的不同操作具有不同的认可策略而言,不支持此功能,因为通常不需要这样做。您需要注意不要将背书策略(关于调用输出的协议)与协议协议(例如,我同意向您出售我的汽车)相混淆。这种类型的逻辑通常在链码函数中处理(例如,您将检查调用的创建者实际上是汽车的所有者)。
希望这会有所帮助。
P.S。如果您确实希望针对不同的交易类型使用不同的背书策略,则可以使用基于状态的背书...无论如何,这些策略都是通过链码设置的...因此您可以尝试根据交易类型。