Hyperledger fabric 如何为历史状态获取传递给事务的参数

Hyperledger fabric 如何为历史状态获取传递给事务的参数,hyperledger-fabric,hyperledger-chaincode,hyperledger-fabric-sdk-java,Hyperledger Fabric,Hyperledger Chaincode,Hyperledger Fabric Sdk Java,我正试图得到负责新国家的行动。简单地说,我希望将函数名传递给invoke方法。当我查看历史状态时,我能够获取其值、时间戳、事务ID等,但不能获取负责该事务的参数 我知道我们可以从块历史中得到参数,但我需要它来表示状态 有没有办法从链码方面实现这一点?是的,可以从链码创建调用端点并执行以下操作: func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response { function, args := AP

我正试图得到负责新国家的行动。简单地说,我希望将函数名传递给invoke方法。当我查看历史状态时,我能够获取其值、时间戳、事务ID等,但不能获取负责该事务的参数

我知道我们可以从块历史中得到参数,但我需要它来表示状态


有没有办法从链码方面实现这一点?

是的,可以从链码创建调用端点并执行以下操作:

func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
function, args := APIstub.GetFunctionAndParameters()
}
这是你想要的一切。
例如,如果打印函数,您将看到所调用函数的名称。

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

func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {
function, args := APIstub.GetFunctionAndParameters()
}
这是你想要的一切。
例如,如果打印函数,您将看到所调用函数的名称。

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


或者:您只需通过shim.success将getFunctionAndParameters的结果作为响应对象中的键发送回即可。

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


或者:您只需通过shim.success将getFunctionAndParameters的结果作为响应对象中的键发送回即可。

请检查问题,我需要历史状态的函数名请检查问题,我需要历史状态的函数名这是我的方法:1)我们将获取状态更改的事务ID 2)找到带有事务的块3)从块中获取步骤1的参数,如果我没有弄错,您可能已经使用RegisterExevent根据tx_ID为每个事务注册了一个事件?如果是,那么您可以尝试我为chaincode事件建议的方法。不,我从状态本身获取txID。如果我没有错,那么您可能正在使用getHistoryForKey。然后[是迭代器中每个对象的响应原型,因此我认为您无法从该API和IMHO获得它。我认为chaincode事件是您实现这一点的方法。这是我的方法:1)我们将获得状态更改的事务ID 2)找到带有事务的块3)从块获取步骤1的参数,如果我是没有错您可能已经使用RegisterExevent基于tx_id为每个事务注册了一个事件?如果是,那么您可能可以尝试我为链码事件建议的方法否,我是从状态本身获取txID如果我没有错,那么您可能正在使用getHistoryForKey。然后[是迭代器中每个对象的响应原型,因此我认为您无法从该API获得它,我认为链码事件是实现这一点的方法。