package core import ( "fmt" abci "github.com/tendermint/tendermint/abci/types" cmn "github.com/tendermint/tendermint/libs/common" ctypes "github.com/tendermint/tendermint/rpc/core/types" "github.com/tendermint/tendermint/version" ) // Query the application for some information. // // ```shell // curl 'localhost:26657/abci_query?path=""&data="abcd"&trusted=false' // ``` // // ```go // client := client.NewHTTP("tcp://0.0.0.0:26657", "/websocket") // result, err := client.ABCIQuery("", "abcd", true) // ``` // // > The above command returns JSON structured like this: // // ```json // { // "error": "", // "result": { // "response": { // "log": "exists", // "height": 0, // "proof": "010114FED0DAD959F36091AD761C922ABA3CBF1D8349990101020103011406AA2262E2F448242DF2C2607C3CDC705313EE3B0001149D16177BC71E445476174622EA559715C293740C", // "value": "61626364", // "key": "61626364", // "index": -1, // "code": 0 // } // }, // "id": "", // "jsonrpc": "2.0" // } // ``` // // ### Query Parameters // // | Parameter | Type | Default | Required | Description | // |-----------+--------+---------+----------+------------------------------------------------| // | path | string | false | false | Path to the data ("/a/b/c") | // | data | []byte | false | true | Data | // | height | int64 | 0 | false | Height (0 means latest) | // | trusted | bool | false | false | Does not include a proof of the data inclusion | func ABCIQuery(path string, data cmn.HexBytes, height int64, trusted bool) (*ctypes.ResultABCIQuery, error) { if height < 0 { return nil, fmt.Errorf("height must be non-negative") } resQuery, err := proxyAppQuery.QuerySync(abci.RequestQuery{ Path: path, Data: data, Height: height, Prove: !trusted, }) if err != nil { return nil, err } logger.Info("ABCIQuery", "path", path, "data", data, "result", resQuery) return &ctypes.ResultABCIQuery{*resQuery}, nil } // Get some info about the application. // // ```shell // curl 'localhost:26657/abci_info' // ``` // // ```go // client := client.NewHTTP("tcp://0.0.0.0:26657", "/websocket") // info, err := client.ABCIInfo() // ``` // // > The above command returns JSON structured like this: // // ```json // { // "error": "", // "result": { // "response": { // "data": "{\"size\":3}" // } // }, // "id": "", // "jsonrpc": "2.0" // } // ``` func ABCIInfo() (*ctypes.ResultABCIInfo, error) { resInfo, err := proxyAppQuery.InfoSync(abci.RequestInfo{version.Version}) if err != nil { return nil, err } return &ctypes.ResultABCIInfo{*resInfo}, nil }