【发布时间】:2019-12-05 11:56:23
【问题描述】:
我正在尝试获取负责新状态的操作。简而言之,我想获取传递给调用方法的函数名。当我查看历史状态时,我能够获取其值、时间戳、事务 ID 等,但不能获取负责该事务的参数。
我知道我们可以从区块历史中获取参数,但我需要它来处理状态。
有没有办法从链码方面实现这一点?
【问题讨论】:
标签: hyperledger-fabric hyperledger-chaincode hyperledger-fabric-sdk-java
我正在尝试获取负责新状态的操作。简而言之,我想获取传递给调用方法的函数名。当我查看历史状态时,我能够获取其值、时间戳、事务 ID 等,但不能获取负责该事务的参数。
我知道我们可以从区块历史中获取参数,但我需要它来处理状态。
有没有办法从链码方面实现这一点?
【问题讨论】:
标签: hyperledger-fabric hyperledger-chaincode hyperledger-fabric-sdk-java
是的,您可以从链码创建一个 Invoke 端点并执行以下操作:
func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
function, args := APIstub.GetFunctionAndParameters()
}
这里有你想要的一切。 例如,如果您打印 function,您将看到您调用的函数的名称。
【讨论】:
我也想了解您的方法。然而,这将是我对此的看法,我们可以在我们的 sdk 中注册一个事件监听器(使用 registerChaincodeEvent 方法)并创建一个事件(使用 setEvent 方法)在我们的链码中,其中我们的有效负载将是 getFunctionAndParameters 方法的结果。您可能可以继续将这些结果存储到数据存储中,以便以后全部获取。
或者:您可以简单地通过 shim.success 将 getFunctionAndParameters 的结果作为响应对象中的键发回。
【讨论】: