检索超级账本完整的世界状态

Foo*_*o L 5 blockchain hyperledger hyperledger-fabric

是否有一个链码填充函数,我可以用它来检索 Hyperledger Fabric 链码中世界状态的所有键(可能包括值)?

Dav*_*art 5

在链码 API GetStateByRange(startKey, endKey string) 中,startKey 和 endKey 可以为空字符串,这意味着在开始或结束时进行无界范围查询。将它们都保留为空字符串以获取返回的完整键/值集。


Cly*_*ruz 2

可以使用该stub.GetStateByRange()函数迭代特定链码的链码状态中的所有键。

例如:

    keysIter, err := stub.GetStateByRange(startKey, endKey)
    if err != nil {
        return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err))
    }
    defer keysIter.Close()

    var keys []string
    for keysIter.HasNext() {
        key, _, iterErr := keysIter.Next()
        if iterErr != nil {
            return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err))
        }
        keys = append(keys, key)
    }
Run Code Online (Sandbox Code Playgroud)

请参阅Hyperledger Fabric 存储库中的完整链代码

  • 我正在这里查看文档:https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#ChaincodeStub.GetStateByRange。词法顺序意味着我应该去获取从“a”到“ZZZZZZZZZZZZZZZZZ”的所有键(取决于键的最大长度)? (2认同)