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