如何获取传递给交易的历史状态参数

时间:2019-12-05 11:56:23

标签: hyperledger-fabric hyperledger-chaincode hyperledger-fabric-sdk-java

我正在尝试获取负责新状态的操作。简而言之,我想获得传递给invoke方法的函数名。当我查看历史状态时,我可以获取其值,时间戳,交易ID等,但不能获取负责该交易的参数。

我知道我们可以从块历史中获取参数,但是对于状态,我需要它。

从链码方面有什么方法可以实现?

2 个答案:

答案 0 :(得分:0)

是的,您可以从链码中创建一个Invoke端点并执行以下操作:

func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
function, args := APIstub.GetFunctionAndParameters()
}

您在这里拥有了想要的一切。 例如,如果您打印 function ,您将看到您调用的函数的名称。

答案 1 :(得分:0)

我也想知道您的方法。但这是我的看法,我们可以在sdk中注册一个事件监听器(使用 registerChaincodeEvent 方法)并创建一个事件(使用 setEvent 方法),其中有效负载将是 getFunctionAndParameters 方法的结果。而且,您可能可以继续将这些结果存储到数据存储中,以便以后将其全部获取。

或者:您可以简单地通过shim.success将 getFunctionAndParameters 的结果作为键发送回响应对象。