diff --git a/README.md b/README.md
index 083b031c..ec6db985 100644
--- a/README.md
+++ b/README.md
@@ -85,27 +85,20 @@ ABCI requests/responses are simple Protobuf messages. Check out the [schema fil
#### Query
* __Arguments__:
- * `Query ([]byte)`: The query request bytes
- * `Path (string)`: Path of request
+ * `Data ([]byte)`: Raw query bytes. Can be used with or in lieu of Path.
+ * `Path (string)`: Path of request, like an HTTP GET path. Can be used with or in liue of Data.
+ * Apps MUST interpret '/store' as a query by key on the underlying store. The key SHOULD be specified in the Data field.
+ * Apps SHOULD allow queries over specific types like '/accounts/...' or '/votes/...'
* `Height (uint64)`: The block height for which you want the query (default=0 returns data for the latest committed block)
- * `Prove (bool)`: Return Merkle proof with response
- * __Returns__:
- * `Data ([]byte)`: The query response bytes
- * `Log (string)`: Debug or error message
- * `Height (uint64)`: The block height from which data was derived
- * `Proof ([]byte)`: Proof for the data, if requested
-
-#### Proof
- * __Arguments__:
- * `Key ([]byte)`: The key whose data you want to verifiably query
- * `Height (uint64)`: The block height for which you want the proof (default=0 returns the proof for last committed block)
+ * `Prove (bool)`: Return Merkle proof with response if possible
* __Returns__:
* `Code (uint32)`: Response code
- * `Data ([]byte)`: The query response bytes
+ * `Key ([]byte)`: The key of the matching data
+ * `Value ([]byte)`: The value of the matching data
+ * `Proof ([]byte)`: Proof for the data, if requested
+ * `Height (uint64)`: The block height from which data was derived
* `Log (string)`: Debug or error message
- * __Usage__:
- Return a Merkle proof from the key/value pair back to the application hash.
- *Please note* The current implementation of go-merkle doesn't support querying proofs from past blocks, so for the present moment, any height other than 0 will return an error. Hopefully this will be improved soon(ish)
+ *Please note* The current implementation of go-merkle doesn't support querying proofs from past blocks, so for the present moment, any height other than 0 will return an error. Hopefully this will be improved soon(ish)
#### Flush
* __Usage__:
diff --git a/client/client.go b/client/client.go
index bbd41398..25bb23ec 100644
--- a/client/client.go
+++ b/client/client.go
@@ -20,8 +20,7 @@ type Client interface {
SetOptionAsync(key string, value string) *ReqRes
DeliverTxAsync(tx []byte) *ReqRes
CheckTxAsync(tx []byte) *ReqRes
- QueryAsync(tx []byte) *ReqRes
- ProofAsync(key []byte, blockHeight uint64) *ReqRes
+ QueryAsync(reqQuery types.RequestQuery) *ReqRes
CommitAsync() *ReqRes
FlushSync() error
@@ -30,8 +29,7 @@ type Client interface {
SetOptionSync(key string, value string) (res types.Result)
DeliverTxSync(tx []byte) (res types.Result)
CheckTxSync(tx []byte) (res types.Result)
- QuerySync(tx []byte) (res types.Result)
- ProofSync(key []byte, blockHeight uint64) (res types.Result)
+ QuerySync(reqQuery types.RequestQuery) (resQuery types.ResponseQuery, err error)
CommitSync() (res types.Result)
InitChainAsync(validators []*types.Validator) *ReqRes
diff --git a/client/grpc_client.go b/client/grpc_client.go
index 63fb16a4..1a48fed1 100644
--- a/client/grpc_client.go
+++ b/client/grpc_client.go
@@ -173,8 +173,8 @@ func (cli *grpcClient) CheckTxAsync(tx []byte) *ReqRes {
return cli.finishAsyncCall(req, &types.Response{&types.Response_CheckTx{res}})
}
-func (cli *grpcClient) QueryAsync(query []byte) *ReqRes {
- req := types.ToRequestQuery(query)
+func (cli *grpcClient) QueryAsync(reqQuery types.RequestQuery) *ReqRes {
+ req := types.ToRequestQuery(reqQuery)
res, err := cli.client.Query(context.Background(), req.GetQuery(), grpc.FailFast(true))
if err != nil {
cli.StopForError(err)
@@ -182,15 +182,6 @@ func (cli *grpcClient) QueryAsync(query []byte) *ReqRes {
return cli.finishAsyncCall(req, &types.Response{&types.Response_Query{res}})
}
-func (cli *grpcClient) ProofAsync(key []byte, blockHeight uint64) *ReqRes {
- req := types.ToRequestProof(key, blockHeight)
- res, err := cli.client.Proof(context.Background(), req.GetProof(), grpc.FailFast(true))
- if err != nil {
- cli.StopForError(err)
- }
- return cli.finishAsyncCall(req, &types.Response{&types.Response_Proof{res}})
-}
-
func (cli *grpcClient) CommitAsync() *ReqRes {
req := types.ToRequestCommit()
res, err := cli.client.Commit(context.Background(), req.GetCommit(), grpc.FailFast(true))
@@ -264,7 +255,7 @@ func (cli *grpcClient) EchoSync(msg string) (res types.Result) {
return res
}
resp := reqres.Response.GetEcho()
- return types.NewResultOK([]byte(resp.Message), LOG)
+ return types.NewResultOK([]byte(resp.Message), "")
}
func (cli *grpcClient) FlushSync() error {
@@ -310,22 +301,15 @@ func (cli *grpcClient) CheckTxSync(tx []byte) (res types.Result) {
return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
}
-func (cli *grpcClient) ProofSync(key []byte, blockHeight uint64) (res types.Result) {
- reqres := cli.ProofAsync(key, blockHeight)
- if res := cli.checkErrGetResult(); res.IsErr() {
- return res
+func (cli *grpcClient) QuerySync(reqQuery types.RequestQuery) (resQuery types.ResponseQuery, err error) {
+ reqres := cli.QueryAsync(reqQuery)
+ if err = cli.Error(); err != nil {
+ return resQuery, err
}
- resp := reqres.Response.GetProof()
- return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
-}
-
-func (cli *grpcClient) QuerySync(query []byte) (res types.Result) {
- reqres := cli.QueryAsync(query)
- if res := cli.checkErrGetResult(); res.IsErr() {
- return res
+ if resQuery_ := reqres.Response.GetQuery(); resQuery_ != nil {
+ return *resQuery_, nil
}
- resp := reqres.Response.GetQuery()
- return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
+ return resQuery, nil
}
func (cli *grpcClient) CommitSync() (res types.Result) {
diff --git a/client/local_client.go b/client/local_client.go
index 7450573e..f056289c 100644
--- a/client/local_client.go
+++ b/client/local_client.go
@@ -89,23 +89,13 @@ func (app *localClient) CheckTxAsync(tx []byte) *ReqRes {
)
}
-func (app *localClient) QueryAsync(tx []byte) *ReqRes {
+func (app *localClient) QueryAsync(reqQuery types.RequestQuery) *ReqRes {
app.mtx.Lock()
- res := app.Application.Query(tx)
+ resQuery := app.Application.Query(reqQuery)
app.mtx.Unlock()
return app.callback(
- types.ToRequestQuery(tx),
- types.ToResponseQuery(res.Code, res.Data, res.Log),
- )
-}
-
-func (app *localClient) ProofAsync(key []byte, blockHeight uint64) *ReqRes {
- app.mtx.Lock()
- res := app.Application.Proof(key, blockHeight)
- app.mtx.Unlock()
- return app.callback(
- types.ToRequestProof(key, blockHeight),
- types.ToResponseQuery(res.Code, res.Data, res.Log),
+ types.ToRequestQuery(reqQuery),
+ types.ToResponseQuery(resQuery),
)
}
@@ -195,18 +185,11 @@ func (app *localClient) CheckTxSync(tx []byte) (res types.Result) {
return res
}
-func (app *localClient) QuerySync(query []byte) (res types.Result) {
+func (app *localClient) QuerySync(reqQuery types.RequestQuery) (resQuery types.ResponseQuery, err error) {
app.mtx.Lock()
- res = app.Application.Query(query)
+ resQuery = app.Application.Query(reqQuery)
app.mtx.Unlock()
- return res
-}
-
-func (app *localClient) ProofSync(key []byte, blockHeight uint64) (res types.Result) {
- app.mtx.Lock()
- res = app.Application.Proof(key, blockHeight)
- app.mtx.Unlock()
- return res
+ return resQuery, nil
}
func (app *localClient) CommitSync() (res types.Result) {
diff --git a/client/socket_client.go b/client/socket_client.go
index 04d07a55..733aff4a 100644
--- a/client/socket_client.go
+++ b/client/socket_client.go
@@ -251,12 +251,8 @@ func (cli *socketClient) CheckTxAsync(tx []byte) *ReqRes {
return cli.queueRequest(types.ToRequestCheckTx(tx))
}
-func (cli *socketClient) QueryAsync(query []byte) *ReqRes {
- return cli.queueRequest(types.ToRequestQuery(query))
-}
-
-func (cli *socketClient) ProofAsync(key []byte, blockHeight uint64) *ReqRes {
- return cli.queueRequest(types.ToRequestProof(key, blockHeight))
+func (cli *socketClient) QueryAsync(reqQuery types.RequestQuery) *ReqRes {
+ return cli.queueRequest(types.ToRequestQuery(reqQuery))
}
func (cli *socketClient) CommitAsync() *ReqRes {
@@ -284,7 +280,7 @@ func (cli *socketClient) EchoSync(msg string) (res types.Result) {
return types.ErrInternalError.SetLog(err.Error())
}
resp := reqres.Response.GetEcho()
- return types.Result{Code: OK, Data: []byte(resp.Message), Log: LOG}
+ return types.Result{Code: OK, Data: []byte(resp.Message)}
}
func (cli *socketClient) FlushSync() error {
@@ -304,9 +300,8 @@ func (cli *socketClient) InfoSync() (resInfo types.ResponseInfo, err error) {
}
if resInfo_ := reqres.Response.GetInfo(); resInfo_ != nil {
return *resInfo_, nil
- } else {
- return resInfo, nil
}
+ return resInfo, nil
}
func (cli *socketClient) SetOptionSync(key string, value string) (res types.Result) {
@@ -339,25 +334,18 @@ func (cli *socketClient) CheckTxSync(tx []byte) (res types.Result) {
return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
}
-func (cli *socketClient) QuerySync(query []byte) (res types.Result) {
- reqres := cli.queueRequest(types.ToRequestQuery(query))
+func (cli *socketClient) QuerySync(reqQuery types.RequestQuery) (resQuery types.ResponseQuery, err error) {
+ reqres := cli.queueRequest(types.ToRequestQuery(reqQuery))
cli.FlushSync()
if err := cli.Error(); err != nil {
- return types.ErrInternalError.SetLog(err.Error())
+ return resQuery, err
}
- resp := reqres.Response.GetQuery()
- return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
+ if resQuery_ := reqres.Response.GetQuery(); resQuery_ != nil {
+ return *resQuery_, nil
+ }
+ return resQuery, nil
}
-func (cli *socketClient) ProofSync(key []byte, blockHeight uint64) (res types.Result) {
- reqres := cli.queueRequest(types.ToRequestProof(key, blockHeight))
- cli.FlushSync()
- if err := cli.Error(); err != nil {
- return types.ErrInternalError.SetLog(err.Error())
- }
- resp := reqres.Response.GetProof()
- return types.Result{Code: resp.Code, Data: resp.Data, Log: resp.Log}
-}
func (cli *socketClient) CommitSync() (res types.Result) {
reqres := cli.queueRequest(types.ToRequestCommit())
cli.FlushSync()
@@ -450,8 +438,6 @@ func resMatchesReq(req *types.Request, res *types.Response) (ok bool) {
_, ok = res.Value.(*types.Response_Commit)
case *types.Request_Query:
_, ok = res.Value.(*types.Response_Query)
- case *types.Request_Proof:
- _, ok = res.Value.(*types.Response_Proof)
case *types.Request_InitChain:
_, ok = res.Value.(*types.Response_InitChain)
case *types.Request_BeginBlock:
diff --git a/cmd/abci-cli/tmsp-cli.go b/cmd/abci-cli/abci-cli.go
similarity index 78%
rename from cmd/abci-cli/tmsp-cli.go
rename to cmd/abci-cli/abci-cli.go
index ccdd41d4..5c2b0051 100644
--- a/cmd/abci-cli/tmsp-cli.go
+++ b/cmd/abci-cli/abci-cli.go
@@ -7,7 +7,6 @@ import (
"fmt"
"io"
"os"
- "strconv"
"strings"
"github.com/tendermint/abci/client"
@@ -16,28 +15,15 @@ import (
"github.com/urfave/cli"
)
-//structure for data passed to print response
-// variables must be exposed for JSON to read
+// Structure for data passed to print response.
type response struct {
- Res types.Result
- Data string
- PrintCode bool
- Code string
-}
-
-func newResponse(res types.Result, data string, printCode bool) *response {
- rsp := &response{
- Res: res,
- Data: data,
- PrintCode: printCode,
- Code: "",
- }
-
- if printCode {
- rsp.Code = res.Code.String()
- }
-
- return rsp
+ Data []byte
+ Code types.CodeType
+ Key []byte
+ Value []byte
+ Log string
+ Height string
+ Proof []byte
}
// client is a global variable so it can be reused by the console
@@ -132,13 +118,6 @@ func main() {
return cmdQuery(c)
},
},
- {
- Name: "proof",
- Usage: "Get proof for a key",
- Action: func(c *cli.Context) error {
- return cmdProof(c)
- },
- },
}
app.Before = before
err := app.Run(os.Args)
@@ -228,9 +207,10 @@ func cmdEcho(c *cli.Context) error {
if len(args) != 1 {
return errors.New("Command echo takes 1 argument")
}
- res := client.EchoSync(args[0])
- rsp := newResponse(res, string(res.Data), false)
- printResponse(c, rsp)
+ resEcho := client.EchoSync(args[0])
+ printResponse(c, response{
+ Data: resEcho.Data,
+ })
return nil
}
@@ -240,8 +220,9 @@ func cmdInfo(c *cli.Context) error {
if err != nil {
return err
}
- rsp := newResponse(types.Result{}, string(resInfo.Data), false)
- printResponse(c, rsp)
+ printResponse(c, response{
+ Data: []byte(resInfo.Data),
+ })
return nil
}
@@ -251,9 +232,10 @@ func cmdSetOption(c *cli.Context) error {
if len(args) != 2 {
return errors.New("Command set_option takes 2 arguments (key, value)")
}
- res := client.SetOptionSync(args[0], args[1])
- rsp := newResponse(res, Fmt("%s=%s", args[0], args[1]), false)
- printResponse(c, rsp)
+ resSetOption := client.SetOptionSync(args[0], args[1])
+ printResponse(c, response{
+ Log: resSetOption.Log,
+ })
return nil
}
@@ -268,8 +250,11 @@ func cmdDeliverTx(c *cli.Context) error {
return err
}
res := client.DeliverTxSync(txBytes)
- rsp := newResponse(res, string(res.Data), true)
- printResponse(c, rsp)
+ printResponse(c, response{
+ Code: res.Code,
+ Data: res.Data,
+ Log: res.Log,
+ })
return nil
}
@@ -284,20 +269,26 @@ func cmdCheckTx(c *cli.Context) error {
return err
}
res := client.CheckTxSync(txBytes)
- rsp := newResponse(res, string(res.Data), true)
- printResponse(c, rsp)
+ printResponse(c, response{
+ Code: res.Code,
+ Data: res.Data,
+ Log: res.Log,
+ })
return nil
}
// Get application Merkle root hash
func cmdCommit(c *cli.Context) error {
res := client.CommitSync()
- rsp := newResponse(res, Fmt("0x%X", res.Data), false)
- printResponse(c, rsp)
+ printResponse(c, response{
+ Data: res.Data,
+ Log: res.Log,
+ })
return nil
}
// Query application state
+// TODO: Make request and response support all fields.
func cmdQuery(c *cli.Context) error {
args := c.Args()
if len(args) != 1 {
@@ -307,36 +298,29 @@ func cmdQuery(c *cli.Context) error {
if err != nil {
return err
}
- res := client.QuerySync(queryBytes)
- rsp := newResponse(res, string(res.Data), true)
- printResponse(c, rsp)
- return nil
-}
-
-// Prove application state
-func cmdProof(c *cli.Context) error {
- args := c.Args()
- if len(args) < 1 {
- return errors.New("Command proof takes 1 or 2 arguments")
- }
- keyBytes, err := stringOrHexToBytes(c.Args()[0])
+ resQuery, err := client.QuerySync(types.RequestQuery{
+ Data: queryBytes,
+ Path: "/store", // TOOD expose
+ Height: 0, // TODO expose
+ Prove: true, // TODO expose
+ })
if err != nil {
return err
}
-
- var height uint64
- if len(args) == 2 {
- height, _ = strconv.ParseUint(args[1], 10, 0)
- }
- res := client.ProofSync(keyBytes, height)
- rsp := newResponse(res, string(res.Data), true)
- printResponse(c, rsp)
+ printResponse(c, response{
+ Code: resQuery.Code,
+ Key: resQuery.Key,
+ Value: resQuery.Value,
+ Log: resQuery.Log,
+ Height: fmt.Sprintf("%v", resQuery.Height),
+ Proof: resQuery.Proof,
+ })
return nil
}
//--------------------------------------------------------------------------------
-func printResponse(c *cli.Context, rsp *response) {
+func printResponse(c *cli.Context, rsp response) {
verbose := c.GlobalBool("verbose")
@@ -344,19 +328,29 @@ func printResponse(c *cli.Context, rsp *response) {
fmt.Println(">", c.Command.Name, strings.Join(c.Args(), " "))
}
- if rsp.PrintCode {
- fmt.Printf("-> code: %s\n", rsp.Code)
+ if rsp.Code != types.CodeType_OK {
+ fmt.Printf("-> code: %s\n", rsp.Code.String())
}
-
- //if pr.res.Error != "" {
- // fmt.Printf("-> error: %s\n", pr.res.Error)
- //}
-
- if rsp.Data != "" {
+ if len(rsp.Data) != 0 {
fmt.Printf("-> data: %s\n", rsp.Data)
+ fmt.Printf("-> data.hex: %X\n", rsp.Data)
}
- if rsp.Res.Log != "" {
- fmt.Printf("-> log: %s\n", rsp.Res.Log)
+ if len(rsp.Key) != 0 {
+ fmt.Printf("-> key: %s\n", rsp.Key)
+ fmt.Printf("-> key.hex: %X\n", rsp.Key)
+ }
+ if len(rsp.Value) != 0 {
+ fmt.Printf("-> value: %s\n", rsp.Value)
+ fmt.Printf("-> value.hex: %X\n", rsp.Value)
+ }
+ if rsp.Log != "" {
+ fmt.Printf("-> log: %s\n", rsp.Log)
+ }
+ if rsp.Height != "" {
+ fmt.Printf("-> height: %s\n", rsp.Height)
+ }
+ if rsp.Proof != nil {
+ fmt.Printf("-> proof: %X\n", rsp.Proof)
}
if verbose {
diff --git a/cmd/counter/main.go b/cmd/counter/main.go
index 218224a0..0714380b 100644
--- a/cmd/counter/main.go
+++ b/cmd/counter/main.go
@@ -3,9 +3,9 @@ package main
import (
"flag"
- . "github.com/tendermint/go-common"
"github.com/tendermint/abci/example/counter"
"github.com/tendermint/abci/server"
+ . "github.com/tendermint/go-common"
)
func main() {
diff --git a/example/chain_aware/chain_aware_app.go b/example/chain_aware/chain_aware_app.go
index 361f2a07..8bedfc61 100644
--- a/example/chain_aware/chain_aware_app.go
+++ b/example/chain_aware/chain_aware_app.go
@@ -57,12 +57,10 @@ func (app *ChainAwareApplication) Commit() types.Result {
return types.NewResultOK([]byte("nil"), "")
}
-func (app *ChainAwareApplication) Query(query []byte) types.Result {
- return types.NewResultOK([]byte(Fmt("%d,%d", app.beginCount, app.endCount)), "")
-}
-
-func (app *ChainAwareApplication) Proof(key []byte, blockHeight uint64) types.Result {
- return types.NewResultOK(nil, Fmt("Proof is not supported"))
+func (app *ChainAwareApplication) Query(reqQuery types.RequestQuery) (resQuery types.ResponseQuery) {
+ return types.ResponseQuery{
+ Value: []byte(Fmt("%d,%d", app.beginCount, app.endCount)),
+ }
}
func (app *ChainAwareApplication) BeginBlock(hash []byte, header *types.Header) {
diff --git a/example/chain_aware/chain_aware_test.go b/example/chain_aware/chain_aware_test.go
index f5283a38..18fa8ea9 100644
--- a/example/chain_aware/chain_aware_test.go
+++ b/example/chain_aware/chain_aware_test.go
@@ -5,10 +5,10 @@ import (
"strings"
"testing"
- . "github.com/tendermint/go-common"
"github.com/tendermint/abci/client"
"github.com/tendermint/abci/server"
"github.com/tendermint/abci/types"
+ . "github.com/tendermint/go-common"
)
func TestChainAware(t *testing.T) {
@@ -39,10 +39,10 @@ func TestChainAware(t *testing.T) {
client.CommitSync()
}
- r := app.Query(nil)
- spl := strings.Split(string(r.Data), ",")
+ r := app.Query(types.RequestQuery{})
+ spl := strings.Split(string(r.Value), ",")
if len(spl) != 2 {
- t.Fatal("expected %d,%d ; got %s", n, n, string(r.Data))
+ t.Fatal("expected %d,%d ; got %s", n, n, string(r.Value))
}
beginCount, _ := strconv.Atoi(spl[0])
endCount, _ := strconv.Atoi(spl[1])
diff --git a/example/counter/counter.go b/example/counter/counter.go
index 62c10826..2f929c3e 100644
--- a/example/counter/counter.go
+++ b/example/counter/counter.go
@@ -71,19 +71,14 @@ func (app *CounterApplication) Commit() types.Result {
}
}
-func (app *CounterApplication) Query(query []byte) types.Result {
- queryStr := string(query)
+func (app *CounterApplication) Query(reqQuery types.RequestQuery) types.ResponseQuery {
- switch queryStr {
+ switch reqQuery.Path {
case "hash":
- return types.NewResultOK(nil, Fmt("%v", app.hashCount))
+ return types.ResponseQuery{Value: []byte(Fmt("%v", app.hashCount))}
case "tx":
- return types.NewResultOK(nil, Fmt("%v", app.txCount))
+ return types.ResponseQuery{Value: []byte(Fmt("%v", app.txCount))}
}
- return types.ErrUnknownRequest.SetLog(Fmt("Invalid nonce. Expected hash or tx, got %v", queryStr))
-}
-
-func (app *CounterApplication) Proof(key []byte, blockHeight uint64) types.Result {
- return types.NewResultOK(nil, Fmt("Proof is not supported"))
+ return types.ResponseQuery{Log: Fmt("Invalid query path. Expected hash or tx, got %v", reqQuery.Path)}
}
diff --git a/example/dummy/dummy.go b/example/dummy/dummy.go
index 8f606f98..d37a1f76 100644
--- a/example/dummy/dummy.go
+++ b/example/dummy/dummy.go
@@ -1,13 +1,11 @@
package dummy
import (
- "encoding/hex"
"strings"
"github.com/tendermint/abci/types"
. "github.com/tendermint/go-common"
"github.com/tendermint/go-merkle"
- "github.com/tendermint/go-wire"
)
type DummyApplication struct {
@@ -47,30 +45,28 @@ func (app *DummyApplication) Commit() types.Result {
return types.NewResultOK(hash, "")
}
-func (app *DummyApplication) Query(query []byte) types.Result {
- index, value, exists := app.state.Get(query)
-
- queryResult := QueryResult{index, string(value), hex.EncodeToString(value), exists}
- return types.NewResultOK(wire.JSONBytes(queryResult), "")
-}
-
-func (app *DummyApplication) Proof(key []byte, blockHeight uint64) types.Result {
- // TODO: when go-merkle supports querying older blocks without possible panics,
- // we should store a cache and allow a query. But for now it is impossible.
- // And this is just a Dummy application anyway, what do you expect? ;)
- if blockHeight != 0 {
- return types.ErrUnknownRequest
+func (app *DummyApplication) Query(reqQuery types.RequestQuery) (resQuery types.ResponseQuery) {
+ if reqQuery.Prove {
+ value, proof, exists := app.state.Proof(reqQuery.Data)
+ resQuery.Index = -1 // TODO make Proof return index
+ resQuery.Key = reqQuery.Data
+ resQuery.Value = value
+ resQuery.Proof = proof
+ if exists {
+ resQuery.Log = "exists"
+ } else {
+ resQuery.Log = "does not exist"
+ }
+ return
+ } else {
+ index, value, exists := app.state.Get(reqQuery.Data)
+ resQuery.Index = int64(index)
+ resQuery.Value = value
+ if exists {
+ resQuery.Log = "exists"
+ } else {
+ resQuery.Log = "does not exist"
+ }
+ return
}
- proof, exists := app.state.Proof(key)
- if !exists {
- return types.NewResultOK(nil, Fmt("Cannot find key = %v", key))
- }
- return types.NewResultOK(proof, "Found the key")
-}
-
-type QueryResult struct {
- Index int `json:"index"`
- Value string `json:"value"`
- ValueHex string `json:"valueHex"`
- Exists bool `json:"exists"`
}
diff --git a/example/dummy/dummy_test.go b/example/dummy/dummy_test.go
index aa6c837d..b17192b4 100644
--- a/example/dummy/dummy_test.go
+++ b/example/dummy/dummy_test.go
@@ -6,7 +6,6 @@ import (
"sort"
"testing"
- "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
abcicli "github.com/tendermint/abci/client"
"github.com/tendermint/abci/server"
@@ -14,7 +13,6 @@ import (
. "github.com/tendermint/go-common"
"github.com/tendermint/go-crypto"
merkle "github.com/tendermint/go-merkle"
- "github.com/tendermint/go-wire"
)
func testDummy(t *testing.T, app types.Application, tx []byte, key, value string) {
@@ -25,21 +23,24 @@ func testDummy(t *testing.T, app types.Application, tx []byte, key, value string
require.False(t, ar.IsErr(), ar)
// make sure query is fine
- r := app.Query([]byte(key))
- require.False(t, r.IsErr(), r)
- q := new(QueryResult)
- err := wire.ReadJSONBytes(r.Data, q)
- require.Nil(t, err)
- require.Equal(t, value, q.Value)
+ resQuery := app.Query(types.RequestQuery{
+ Path: "/store",
+ Data: []byte(key),
+ })
+ require.Equal(t, types.CodeType_OK, resQuery.Code)
+ require.Equal(t, value, string(resQuery.Value))
// make sure proof is fine
- rp := app.Proof([]byte(key), 0)
- require.False(t, rp.IsErr(), rp)
- p, err := merkle.LoadProof(rp.Data)
+ resQuery = app.Query(types.RequestQuery{
+ Path: "/store",
+ Data: []byte(key),
+ Prove: true,
+ })
+ require.Equal(t, types.CodeType_OK, resQuery.Code)
+ require.Equal(t, value, string(resQuery.Value))
+ proof, err := merkle.ReadProof(resQuery.Proof)
require.Nil(t, err)
- require.True(t, p.Valid())
- assert.Equal(t, []byte(key), p.Key())
- assert.Equal(t, []byte(value), p.Value())
+ require.True(t, proof.Verify([]byte(key), resQuery.Value, proof.RootHash)) // NOTE: we have no way to verify the RootHash
}
func TestDummyKV(t *testing.T) {
@@ -285,19 +286,24 @@ func testClient(t *testing.T, app abcicli.Client, tx []byte, key, value string)
require.False(t, ar.IsErr(), ar)
// make sure query is fine
- r := app.QuerySync([]byte(key))
- require.False(t, r.IsErr(), r)
- q := new(QueryResult)
- err := wire.ReadJSONBytes(r.Data, q)
+ resQuery, err := app.QuerySync(types.RequestQuery{
+ Path: "/store",
+ Data: []byte(key),
+ })
require.Nil(t, err)
- require.Equal(t, value, q.Value)
+ require.Equal(t, types.CodeType_OK, resQuery.Code)
+ require.Equal(t, value, string(resQuery.Value))
// make sure proof is fine
- rp := app.ProofSync([]byte(key), 0)
- require.False(t, rp.IsErr(), rp)
- p, err := merkle.LoadProof(rp.Data)
+ resQuery, err = app.QuerySync(types.RequestQuery{
+ Path: "/store",
+ Data: []byte(key),
+ Prove: true,
+ })
require.Nil(t, err)
- require.True(t, p.Valid())
- assert.Equal(t, []byte(key), p.Key())
- assert.Equal(t, []byte(value), p.Value())
+ require.Equal(t, types.CodeType_OK, resQuery.Code)
+ require.Equal(t, value, string(resQuery.Value))
+ proof, err := merkle.ReadProof(resQuery.Proof)
+ require.Nil(t, err)
+ require.True(t, proof.Verify([]byte(key), resQuery.Value, proof.RootHash)) // NOTE: we have no way to verify the RootHash
}
diff --git a/example/dummy/persistent_dummy.go b/example/dummy/persistent_dummy.go
index 781e1aae..2afb6c12 100644
--- a/example/dummy/persistent_dummy.go
+++ b/example/dummy/persistent_dummy.go
@@ -89,12 +89,8 @@ func (app *PersistentDummyApplication) Commit() types.Result {
return types.NewResultOK(appHash, "")
}
-func (app *PersistentDummyApplication) Query(query []byte) types.Result {
- return app.app.Query(query)
-}
-
-func (app *PersistentDummyApplication) Proof(key []byte, blockHeight uint64) types.Result {
- return app.app.Proof(key, blockHeight)
+func (app *PersistentDummyApplication) Query(reqQuery types.RequestQuery) types.ResponseQuery {
+ return app.app.Query(reqQuery)
}
// Save the validators in the merkle tree
diff --git a/example/nil/nil_app.go b/example/nil/nil_app.go
index 694184a2..95ac8d59 100644
--- a/example/nil/nil_app.go
+++ b/example/nil/nil_app.go
@@ -31,10 +31,6 @@ func (app *NilApplication) Commit() types.Result {
return types.NewResultOK([]byte("nil"), "")
}
-func (app *NilApplication) Query(query []byte) types.Result {
- return types.NewResultOK(nil, "")
-}
-
-func (app *NilApplication) Proof(key []byte, blockHeight uint64) types.Result {
- return types.NewResultOK(nil, "")
+func (app *NilApplication) Query(reqQuery types.RequestQuery) (resQuery types.ResponseQuery) {
+ return resQuery
}
diff --git a/glide.lock b/glide.lock
index 4829e672..c67e08b3 100644
--- a/glide.lock
+++ b/glide.lock
@@ -53,7 +53,7 @@ imports:
- name: github.com/tendermint/go-logger
version: cefb3a45c0bf3c493a04e9bcd9b1540528be59f2
- name: github.com/tendermint/go-merkle
- version: 7a86b4486f2cd84ac885c5bbc609fdee2905f5d1
+ version: 653cb1f631528351ddbc359b994eb0c96f0341cd
- name: github.com/tendermint/go-process
version: b27edfd189b1a01a0b099f7e9f8263589cf04909
- name: github.com/tendermint/go-wire
diff --git a/server/socket_server.go b/server/socket_server.go
index 046b55ed..7832a900 100644
--- a/server/socket_server.go
+++ b/server/socket_server.go
@@ -8,8 +8,8 @@ import (
"strings"
"sync"
- . "github.com/tendermint/go-common"
"github.com/tendermint/abci/types"
+ . "github.com/tendermint/go-common"
)
// var maxNumberConnections = 2
@@ -184,11 +184,8 @@ func (s *SocketServer) handleRequest(req *types.Request, responses chan<- *types
res := s.app.Commit()
responses <- types.ToResponseCommit(res.Code, res.Data, res.Log)
case *types.Request_Query:
- res := s.app.Query(r.Query.Query)
- responses <- types.ToResponseQuery(res.Code, res.Data, res.Log)
- case *types.Request_Proof:
- res := s.app.Proof(r.Proof.Key, r.Proof.Height)
- responses <- types.ToResponseProof(res.Code, res.Data, res.Log)
+ resQuery := s.app.Query(*r.Query)
+ responses <- types.ToResponseQuery(resQuery)
case *types.Request_InitChain:
if app, ok := s.app.(types.BlockchainAware); ok {
app.InitChain(r.InitChain.Validators)
diff --git a/tests/test_cli/ex1.abci.out.new b/tests/test_cli/ex1.abci.out.new
new file mode 100644
index 00000000..aa8c5ae0
--- /dev/null
+++ b/tests/test_cli/ex1.abci.out.new
@@ -0,0 +1,44 @@
+> echo hello
+-> data: hello
+-> data.hex: 68656C6C6F
+
+> info
+-> data: {"size":0}
+-> data.hex: 7B2273697A65223A307D
+
+> commit
+
+> deliver_tx "abc"
+
+> info
+-> data: {"size":1}
+-> data.hex: 7B2273697A65223A317D
+
+> commit
+-> data: uü~„»×ˆíX–$ðlú‡EÑ
+-> data.hex: 750502FC7E84BBD788ED589624F06CFA871845D1
+
+> query "abc"
+-> key: abc
+-> key.hex: 616263
+-> value: abc
+-> value.hex: 616263
+-> log: exists
+-> height: 0
+-> proof: 010114750502FC7E84BBD788ED589624F06CFA871845D1000114750502FC7E84BBD788ED589624F06CFA871845D1
+
+> deliver_tx "def=xyz"
+
+> commit
+-> data: v9;Š.E†°iLbžËQ²†ïÕ
+-> data.hex: 76393B8A182E450286B0694C629ECB51B286EFD5
+
+> query "def"
+-> key: def
+-> key.hex: 646566
+-> value: xyz
+-> value.hex: 78797A
+-> log: exists
+-> height: 0
+-> proof: 010114C08027141879A7B95E1339565CE60D7DB7A115EB01010101020114750502FC7E84BBD788ED589624F06CFA871845D100011476393B8A182E450286B0694C629ECB51B286EFD5
+
diff --git a/types/application.go b/types/application.go
index 4cea52ff..404437fe 100644
--- a/types/application.go
+++ b/types/application.go
@@ -20,10 +20,7 @@ type Application interface {
CheckTx(tx []byte) Result
// Query for state
- Query(query []byte) Result
-
- // Get proof for state
- Proof(key []byte, blockHeight uint64) Result
+ Query(reqQuery RequestQuery) ResponseQuery
// Return the application Merkle root hash
Commit() Result
@@ -81,13 +78,8 @@ func (app *GRPCApplication) CheckTx(ctx context.Context, req *RequestCheckTx) (*
}
func (app *GRPCApplication) Query(ctx context.Context, req *RequestQuery) (*ResponseQuery, error) {
- r := app.app.Query(req.Query)
- return &ResponseQuery{r.Code, r.Data, r.Log}, nil
-}
-
-func (app *GRPCApplication) Proof(ctx context.Context, req *RequestProof) (*ResponseProof, error) {
- r := app.app.Proof(req.Key, req.Height)
- return &ResponseProof{r.Code, r.Data, r.Log}, nil
+ resQuery := app.app.Query(*req)
+ return &resQuery, nil
}
func (app *GRPCApplication) Commit(ctx context.Context, req *RequestCommit) (*ResponseCommit, error) {
diff --git a/types/code.go b/types/code.go
new file mode 100644
index 00000000..c99a0bbe
--- /dev/null
+++ b/types/code.go
@@ -0,0 +1,3 @@
+package types
+
+func (c CodeType) IsOK() bool { return c == CodeType_OK }
diff --git a/types/messages.go b/types/messages.go
index af79f7eb..fe2d310a 100644
--- a/types/messages.go
+++ b/types/messages.go
@@ -49,15 +49,9 @@ func ToRequestCommit() *Request {
}
}
-func ToRequestQuery(queryBytes []byte) *Request {
+func ToRequestQuery(reqQuery RequestQuery) *Request {
return &Request{
- Value: &Request_Query{&RequestQuery{queryBytes}},
- }
-}
-
-func ToRequestProof(key []byte, blockHeight uint64) *Request {
- return &Request{
- Value: &Request_Proof{&RequestProof{key, blockHeight}},
+ Value: &Request_Query{&reqQuery},
}
}
@@ -129,15 +123,9 @@ func ToResponseCommit(code CodeType, data []byte, log string) *Response {
}
}
-func ToResponseQuery(code CodeType, data []byte, log string) *Response {
+func ToResponseQuery(resQuery ResponseQuery) *Response {
return &Response{
- Value: &Response_Query{&ResponseQuery{code, data, log}},
- }
-}
-
-func ToResponseProof(code CodeType, data []byte, log string) *Response {
- return &Response{
- Value: &Response_Proof{&ResponseProof{code, data, log}},
+ Value: &Response_Query{&resQuery},
}
}
diff --git a/types/types.pb.go b/types/types.pb.go
index e53f877e..e0ae1076 100644
--- a/types/types.pb.go
+++ b/types/types.pb.go
@@ -17,7 +17,6 @@ It has these top-level messages:
RequestDeliverTx
RequestCheckTx
RequestQuery
- RequestProof
RequestCommit
RequestInitChain
RequestBeginBlock
@@ -31,7 +30,6 @@ It has these top-level messages:
ResponseDeliverTx
ResponseCheckTx
ResponseQuery
- ResponseProof
ResponseCommit
ResponseInitChain
ResponseBeginBlock
@@ -83,7 +81,6 @@ const (
MessageType_InitChain MessageType = 21
MessageType_BeginBlock MessageType = 22
MessageType_EndBlock MessageType = 23
- MessageType_Proof MessageType = 24
)
var MessageType_name = map[int32]string{
@@ -100,7 +97,6 @@ var MessageType_name = map[int32]string{
21: "InitChain",
22: "BeginBlock",
23: "EndBlock",
- 24: "Proof",
}
var MessageType_value = map[string]int32{
"NullMessage": 0,
@@ -116,7 +112,6 @@ var MessageType_value = map[string]int32{
"InitChain": 21,
"BeginBlock": 22,
"EndBlock": 23,
- "Proof": 24,
}
func (x MessageType) String() string {
@@ -245,7 +240,6 @@ type Request struct {
// *Request_InitChain
// *Request_BeginBlock
// *Request_EndBlock
- // *Request_Proof
Value isRequest_Value `protobuf_oneof:"value"`
}
@@ -291,9 +285,6 @@ type Request_BeginBlock struct {
type Request_EndBlock struct {
EndBlock *RequestEndBlock `protobuf:"bytes,11,opt,name=end_block,json=endBlock,oneof"`
}
-type Request_Proof struct {
- Proof *RequestProof `protobuf:"bytes,12,opt,name=proof,oneof"`
-}
func (*Request_Echo) isRequest_Value() {}
func (*Request_Flush) isRequest_Value() {}
@@ -306,7 +297,6 @@ func (*Request_Query) isRequest_Value() {}
func (*Request_InitChain) isRequest_Value() {}
func (*Request_BeginBlock) isRequest_Value() {}
func (*Request_EndBlock) isRequest_Value() {}
-func (*Request_Proof) isRequest_Value() {}
func (m *Request) GetValue() isRequest_Value {
if m != nil {
@@ -392,13 +382,6 @@ func (m *Request) GetEndBlock() *RequestEndBlock {
return nil
}
-func (m *Request) GetProof() *RequestProof {
- if x, ok := m.GetValue().(*Request_Proof); ok {
- return x.Proof
- }
- return nil
-}
-
// XXX_OneofFuncs is for the internal use of the proto package.
func (*Request) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _Request_OneofMarshaler, _Request_OneofUnmarshaler, _Request_OneofSizer, []interface{}{
@@ -413,7 +396,6 @@ func (*Request) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error
(*Request_InitChain)(nil),
(*Request_BeginBlock)(nil),
(*Request_EndBlock)(nil),
- (*Request_Proof)(nil),
}
}
@@ -476,11 +458,6 @@ func _Request_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
if err := b.EncodeMessage(x.EndBlock); err != nil {
return err
}
- case *Request_Proof:
- b.EncodeVarint(12<<3 | proto.WireBytes)
- if err := b.EncodeMessage(x.Proof); err != nil {
- return err
- }
case nil:
default:
return fmt.Errorf("Request.Value has unexpected type %T", x)
@@ -579,14 +556,6 @@ func _Request_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer
err := b.DecodeMessage(msg)
m.Value = &Request_EndBlock{msg}
return true, err
- case 12: // value.proof
- if wire != proto.WireBytes {
- return true, proto.ErrInternalBadWireType
- }
- msg := new(RequestProof)
- err := b.DecodeMessage(msg)
- m.Value = &Request_Proof{msg}
- return true, err
default:
return false, nil
}
@@ -651,11 +620,6 @@ func _Request_OneofSizer(msg proto.Message) (n int) {
n += proto.SizeVarint(11<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
- case *Request_Proof:
- s := proto.Size(x.Proof)
- n += proto.SizeVarint(12<<3 | proto.WireBytes)
- n += proto.SizeVarint(uint64(s))
- n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
@@ -752,7 +716,10 @@ func (m *RequestCheckTx) GetTx() []byte {
}
type RequestQuery struct {
- Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
+ Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
+ Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"`
+ Height uint64 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"`
+ Prove bool `protobuf:"varint,4,opt,name=prove" json:"prove,omitempty"`
}
func (m *RequestQuery) Reset() { *m = RequestQuery{} }
@@ -760,44 +727,41 @@ func (m *RequestQuery) String() string { return proto.CompactTextStri
func (*RequestQuery) ProtoMessage() {}
func (*RequestQuery) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
-func (m *RequestQuery) GetQuery() []byte {
+func (m *RequestQuery) GetData() []byte {
if m != nil {
- return m.Query
+ return m.Data
}
return nil
}
-type RequestProof struct {
- Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
- Height uint64 `protobuf:"varint,2,opt,name=height" json:"height,omitempty"`
-}
-
-func (m *RequestProof) Reset() { *m = RequestProof{} }
-func (m *RequestProof) String() string { return proto.CompactTextString(m) }
-func (*RequestProof) ProtoMessage() {}
-func (*RequestProof) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
-
-func (m *RequestProof) GetKey() []byte {
+func (m *RequestQuery) GetPath() string {
if m != nil {
- return m.Key
+ return m.Path
}
- return nil
+ return ""
}
-func (m *RequestProof) GetHeight() uint64 {
+func (m *RequestQuery) GetHeight() uint64 {
if m != nil {
return m.Height
}
return 0
}
+func (m *RequestQuery) GetProve() bool {
+ if m != nil {
+ return m.Prove
+ }
+ return false
+}
+
type RequestCommit struct {
}
func (m *RequestCommit) Reset() { *m = RequestCommit{} }
func (m *RequestCommit) String() string { return proto.CompactTextString(m) }
func (*RequestCommit) ProtoMessage() {}
-func (*RequestCommit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (*RequestCommit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
type RequestInitChain struct {
Validators []*Validator `protobuf:"bytes,1,rep,name=validators" json:"validators,omitempty"`
@@ -806,7 +770,7 @@ type RequestInitChain struct {
func (m *RequestInitChain) Reset() { *m = RequestInitChain{} }
func (m *RequestInitChain) String() string { return proto.CompactTextString(m) }
func (*RequestInitChain) ProtoMessage() {}
-func (*RequestInitChain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+func (*RequestInitChain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
func (m *RequestInitChain) GetValidators() []*Validator {
if m != nil {
@@ -823,7 +787,7 @@ type RequestBeginBlock struct {
func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} }
func (m *RequestBeginBlock) String() string { return proto.CompactTextString(m) }
func (*RequestBeginBlock) ProtoMessage() {}
-func (*RequestBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (*RequestBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *RequestBeginBlock) GetHash() []byte {
if m != nil {
@@ -846,7 +810,7 @@ type RequestEndBlock struct {
func (m *RequestEndBlock) Reset() { *m = RequestEndBlock{} }
func (m *RequestEndBlock) String() string { return proto.CompactTextString(m) }
func (*RequestEndBlock) ProtoMessage() {}
-func (*RequestEndBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (*RequestEndBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *RequestEndBlock) GetHeight() uint64 {
if m != nil {
@@ -869,14 +833,13 @@ type Response struct {
// *Response_InitChain
// *Response_BeginBlock
// *Response_EndBlock
- // *Response_Proof
Value isResponse_Value `protobuf_oneof:"value"`
}
func (m *Response) Reset() { *m = Response{} }
func (m *Response) String() string { return proto.CompactTextString(m) }
func (*Response) ProtoMessage() {}
-func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
type isResponse_Value interface {
isResponse_Value()
@@ -918,9 +881,6 @@ type Response_BeginBlock struct {
type Response_EndBlock struct {
EndBlock *ResponseEndBlock `protobuf:"bytes,12,opt,name=end_block,json=endBlock,oneof"`
}
-type Response_Proof struct {
- Proof *ResponseProof `protobuf:"bytes,13,opt,name=proof,oneof"`
-}
func (*Response_Exception) isResponse_Value() {}
func (*Response_Echo) isResponse_Value() {}
@@ -934,7 +894,6 @@ func (*Response_Query) isResponse_Value() {}
func (*Response_InitChain) isResponse_Value() {}
func (*Response_BeginBlock) isResponse_Value() {}
func (*Response_EndBlock) isResponse_Value() {}
-func (*Response_Proof) isResponse_Value() {}
func (m *Response) GetValue() isResponse_Value {
if m != nil {
@@ -1027,13 +986,6 @@ func (m *Response) GetEndBlock() *ResponseEndBlock {
return nil
}
-func (m *Response) GetProof() *ResponseProof {
- if x, ok := m.GetValue().(*Response_Proof); ok {
- return x.Proof
- }
- return nil
-}
-
// XXX_OneofFuncs is for the internal use of the proto package.
func (*Response) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _Response_OneofMarshaler, _Response_OneofUnmarshaler, _Response_OneofSizer, []interface{}{
@@ -1049,7 +1001,6 @@ func (*Response) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) erro
(*Response_InitChain)(nil),
(*Response_BeginBlock)(nil),
(*Response_EndBlock)(nil),
- (*Response_Proof)(nil),
}
}
@@ -1117,11 +1068,6 @@ func _Response_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
if err := b.EncodeMessage(x.EndBlock); err != nil {
return err
}
- case *Response_Proof:
- b.EncodeVarint(13<<3 | proto.WireBytes)
- if err := b.EncodeMessage(x.Proof); err != nil {
- return err
- }
case nil:
default:
return fmt.Errorf("Response.Value has unexpected type %T", x)
@@ -1228,14 +1174,6 @@ func _Response_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffe
err := b.DecodeMessage(msg)
m.Value = &Response_EndBlock{msg}
return true, err
- case 13: // value.proof
- if wire != proto.WireBytes {
- return true, proto.ErrInternalBadWireType
- }
- msg := new(ResponseProof)
- err := b.DecodeMessage(msg)
- m.Value = &Response_Proof{msg}
- return true, err
default:
return false, nil
}
@@ -1305,11 +1243,6 @@ func _Response_OneofSizer(msg proto.Message) (n int) {
n += proto.SizeVarint(12<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
- case *Response_Proof:
- s := proto.Size(x.Proof)
- n += proto.SizeVarint(13<<3 | proto.WireBytes)
- n += proto.SizeVarint(uint64(s))
- n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
@@ -1324,7 +1257,7 @@ type ResponseException struct {
func (m *ResponseException) Reset() { *m = ResponseException{} }
func (m *ResponseException) String() string { return proto.CompactTextString(m) }
func (*ResponseException) ProtoMessage() {}
-func (*ResponseException) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (*ResponseException) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *ResponseException) GetError() string {
if m != nil {
@@ -1340,7 +1273,7 @@ type ResponseEcho struct {
func (m *ResponseEcho) Reset() { *m = ResponseEcho{} }
func (m *ResponseEcho) String() string { return proto.CompactTextString(m) }
func (*ResponseEcho) ProtoMessage() {}
-func (*ResponseEcho) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (*ResponseEcho) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *ResponseEcho) GetMessage() string {
if m != nil {
@@ -1355,7 +1288,7 @@ type ResponseFlush struct {
func (m *ResponseFlush) Reset() { *m = ResponseFlush{} }
func (m *ResponseFlush) String() string { return proto.CompactTextString(m) }
func (*ResponseFlush) ProtoMessage() {}
-func (*ResponseFlush) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (*ResponseFlush) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
type ResponseInfo struct {
Data string `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
@@ -1367,7 +1300,7 @@ type ResponseInfo struct {
func (m *ResponseInfo) Reset() { *m = ResponseInfo{} }
func (m *ResponseInfo) String() string { return proto.CompactTextString(m) }
func (*ResponseInfo) ProtoMessage() {}
-func (*ResponseInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (*ResponseInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (m *ResponseInfo) GetData() string {
if m != nil {
@@ -1404,7 +1337,7 @@ type ResponseSetOption struct {
func (m *ResponseSetOption) Reset() { *m = ResponseSetOption{} }
func (m *ResponseSetOption) String() string { return proto.CompactTextString(m) }
func (*ResponseSetOption) ProtoMessage() {}
-func (*ResponseSetOption) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*ResponseSetOption) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *ResponseSetOption) GetLog() string {
if m != nil {
@@ -1422,7 +1355,7 @@ type ResponseDeliverTx struct {
func (m *ResponseDeliverTx) Reset() { *m = ResponseDeliverTx{} }
func (m *ResponseDeliverTx) String() string { return proto.CompactTextString(m) }
func (*ResponseDeliverTx) ProtoMessage() {}
-func (*ResponseDeliverTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (*ResponseDeliverTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (m *ResponseDeliverTx) GetCode() CodeType {
if m != nil {
@@ -1454,7 +1387,7 @@ type ResponseCheckTx struct {
func (m *ResponseCheckTx) Reset() { *m = ResponseCheckTx{} }
func (m *ResponseCheckTx) String() string { return proto.CompactTextString(m) }
func (*ResponseCheckTx) ProtoMessage() {}
-func (*ResponseCheckTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+func (*ResponseCheckTx) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *ResponseCheckTx) GetCode() CodeType {
if m != nil {
@@ -1478,15 +1411,19 @@ func (m *ResponseCheckTx) GetLog() string {
}
type ResponseQuery struct {
- Code CodeType `protobuf:"varint,1,opt,name=code,enum=types.CodeType" json:"code,omitempty"`
- Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
- Log string `protobuf:"bytes,3,opt,name=log" json:"log,omitempty"`
+ Code CodeType `protobuf:"varint,1,opt,name=code,enum=types.CodeType" json:"code,omitempty"`
+ Index int64 `protobuf:"varint,2,opt,name=index" json:"index,omitempty"`
+ Key []byte `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
+ Value []byte `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"`
+ Proof []byte `protobuf:"bytes,5,opt,name=proof,proto3" json:"proof,omitempty"`
+ Height uint64 `protobuf:"varint,6,opt,name=height" json:"height,omitempty"`
+ Log string `protobuf:"bytes,7,opt,name=log" json:"log,omitempty"`
}
func (m *ResponseQuery) Reset() { *m = ResponseQuery{} }
func (m *ResponseQuery) String() string { return proto.CompactTextString(m) }
func (*ResponseQuery) ProtoMessage() {}
-func (*ResponseQuery) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+func (*ResponseQuery) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *ResponseQuery) GetCode() CodeType {
if m != nil {
@@ -1495,13 +1432,41 @@ func (m *ResponseQuery) GetCode() CodeType {
return CodeType_OK
}
-func (m *ResponseQuery) GetData() []byte {
+func (m *ResponseQuery) GetIndex() int64 {
if m != nil {
- return m.Data
+ return m.Index
+ }
+ return 0
+}
+
+func (m *ResponseQuery) GetKey() []byte {
+ if m != nil {
+ return m.Key
}
return nil
}
+func (m *ResponseQuery) GetValue() []byte {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func (m *ResponseQuery) GetProof() []byte {
+ if m != nil {
+ return m.Proof
+ }
+ return nil
+}
+
+func (m *ResponseQuery) GetHeight() uint64 {
+ if m != nil {
+ return m.Height
+ }
+ return 0
+}
+
func (m *ResponseQuery) GetLog() string {
if m != nil {
return m.Log
@@ -1509,38 +1474,6 @@ func (m *ResponseQuery) GetLog() string {
return ""
}
-type ResponseProof struct {
- Code CodeType `protobuf:"varint,1,opt,name=code,enum=types.CodeType" json:"code,omitempty"`
- Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
- Log string `protobuf:"bytes,3,opt,name=log" json:"log,omitempty"`
-}
-
-func (m *ResponseProof) Reset() { *m = ResponseProof{} }
-func (m *ResponseProof) String() string { return proto.CompactTextString(m) }
-func (*ResponseProof) ProtoMessage() {}
-func (*ResponseProof) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
-
-func (m *ResponseProof) GetCode() CodeType {
- if m != nil {
- return m.Code
- }
- return CodeType_OK
-}
-
-func (m *ResponseProof) GetData() []byte {
- if m != nil {
- return m.Data
- }
- return nil
-}
-
-func (m *ResponseProof) GetLog() string {
- if m != nil {
- return m.Log
- }
- return ""
-}
-
type ResponseCommit struct {
Code CodeType `protobuf:"varint,1,opt,name=code,enum=types.CodeType" json:"code,omitempty"`
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
@@ -1550,7 +1483,7 @@ type ResponseCommit struct {
func (m *ResponseCommit) Reset() { *m = ResponseCommit{} }
func (m *ResponseCommit) String() string { return proto.CompactTextString(m) }
func (*ResponseCommit) ProtoMessage() {}
-func (*ResponseCommit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
+func (*ResponseCommit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (m *ResponseCommit) GetCode() CodeType {
if m != nil {
@@ -1579,7 +1512,7 @@ type ResponseInitChain struct {
func (m *ResponseInitChain) Reset() { *m = ResponseInitChain{} }
func (m *ResponseInitChain) String() string { return proto.CompactTextString(m) }
func (*ResponseInitChain) ProtoMessage() {}
-func (*ResponseInitChain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
+func (*ResponseInitChain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
type ResponseBeginBlock struct {
}
@@ -1587,7 +1520,7 @@ type ResponseBeginBlock struct {
func (m *ResponseBeginBlock) Reset() { *m = ResponseBeginBlock{} }
func (m *ResponseBeginBlock) String() string { return proto.CompactTextString(m) }
func (*ResponseBeginBlock) ProtoMessage() {}
-func (*ResponseBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
+func (*ResponseBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
type ResponseEndBlock struct {
Diffs []*Validator `protobuf:"bytes,4,rep,name=diffs" json:"diffs,omitempty"`
@@ -1596,7 +1529,7 @@ type ResponseEndBlock struct {
func (m *ResponseEndBlock) Reset() { *m = ResponseEndBlock{} }
func (m *ResponseEndBlock) String() string { return proto.CompactTextString(m) }
func (*ResponseEndBlock) ProtoMessage() {}
-func (*ResponseEndBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
+func (*ResponseEndBlock) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
func (m *ResponseEndBlock) GetDiffs() []*Validator {
if m != nil {
@@ -1620,7 +1553,7 @@ type Header struct {
func (m *Header) Reset() { *m = Header{} }
func (m *Header) String() string { return proto.CompactTextString(m) }
func (*Header) ProtoMessage() {}
-func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+func (*Header) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }
func (m *Header) GetChainId() string {
if m != nil {
@@ -1693,7 +1626,7 @@ type BlockID struct {
func (m *BlockID) Reset() { *m = BlockID{} }
func (m *BlockID) String() string { return proto.CompactTextString(m) }
func (*BlockID) ProtoMessage() {}
-func (*BlockID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+func (*BlockID) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }
func (m *BlockID) GetHash() []byte {
if m != nil {
@@ -1717,7 +1650,7 @@ type PartSetHeader struct {
func (m *PartSetHeader) Reset() { *m = PartSetHeader{} }
func (m *PartSetHeader) String() string { return proto.CompactTextString(m) }
func (*PartSetHeader) ProtoMessage() {}
-func (*PartSetHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+func (*PartSetHeader) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
func (m *PartSetHeader) GetTotal() uint64 {
if m != nil {
@@ -1741,7 +1674,7 @@ type Validator struct {
func (m *Validator) Reset() { *m = Validator{} }
func (m *Validator) String() string { return proto.CompactTextString(m) }
func (*Validator) ProtoMessage() {}
-func (*Validator) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+func (*Validator) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
func (m *Validator) GetPubKey() []byte {
if m != nil {
@@ -1766,7 +1699,6 @@ func init() {
proto.RegisterType((*RequestDeliverTx)(nil), "types.RequestDeliverTx")
proto.RegisterType((*RequestCheckTx)(nil), "types.RequestCheckTx")
proto.RegisterType((*RequestQuery)(nil), "types.RequestQuery")
- proto.RegisterType((*RequestProof)(nil), "types.RequestProof")
proto.RegisterType((*RequestCommit)(nil), "types.RequestCommit")
proto.RegisterType((*RequestInitChain)(nil), "types.RequestInitChain")
proto.RegisterType((*RequestBeginBlock)(nil), "types.RequestBeginBlock")
@@ -1780,7 +1712,6 @@ func init() {
proto.RegisterType((*ResponseDeliverTx)(nil), "types.ResponseDeliverTx")
proto.RegisterType((*ResponseCheckTx)(nil), "types.ResponseCheckTx")
proto.RegisterType((*ResponseQuery)(nil), "types.ResponseQuery")
- proto.RegisterType((*ResponseProof)(nil), "types.ResponseProof")
proto.RegisterType((*ResponseCommit)(nil), "types.ResponseCommit")
proto.RegisterType((*ResponseInitChain)(nil), "types.ResponseInitChain")
proto.RegisterType((*ResponseBeginBlock)(nil), "types.ResponseBeginBlock")
@@ -1811,7 +1742,6 @@ type ABCIApplicationClient interface {
DeliverTx(ctx context.Context, in *RequestDeliverTx, opts ...grpc.CallOption) (*ResponseDeliverTx, error)
CheckTx(ctx context.Context, in *RequestCheckTx, opts ...grpc.CallOption) (*ResponseCheckTx, error)
Query(ctx context.Context, in *RequestQuery, opts ...grpc.CallOption) (*ResponseQuery, error)
- Proof(ctx context.Context, in *RequestProof, opts ...grpc.CallOption) (*ResponseProof, error)
Commit(ctx context.Context, in *RequestCommit, opts ...grpc.CallOption) (*ResponseCommit, error)
InitChain(ctx context.Context, in *RequestInitChain, opts ...grpc.CallOption) (*ResponseInitChain, error)
BeginBlock(ctx context.Context, in *RequestBeginBlock, opts ...grpc.CallOption) (*ResponseBeginBlock, error)
@@ -1889,15 +1819,6 @@ func (c *aBCIApplicationClient) Query(ctx context.Context, in *RequestQuery, opt
return out, nil
}
-func (c *aBCIApplicationClient) Proof(ctx context.Context, in *RequestProof, opts ...grpc.CallOption) (*ResponseProof, error) {
- out := new(ResponseProof)
- err := grpc.Invoke(ctx, "/types.ABCIApplication/Proof", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
func (c *aBCIApplicationClient) Commit(ctx context.Context, in *RequestCommit, opts ...grpc.CallOption) (*ResponseCommit, error) {
out := new(ResponseCommit)
err := grpc.Invoke(ctx, "/types.ABCIApplication/Commit", in, out, c.cc, opts...)
@@ -1944,7 +1865,6 @@ type ABCIApplicationServer interface {
DeliverTx(context.Context, *RequestDeliverTx) (*ResponseDeliverTx, error)
CheckTx(context.Context, *RequestCheckTx) (*ResponseCheckTx, error)
Query(context.Context, *RequestQuery) (*ResponseQuery, error)
- Proof(context.Context, *RequestProof) (*ResponseProof, error)
Commit(context.Context, *RequestCommit) (*ResponseCommit, error)
InitChain(context.Context, *RequestInitChain) (*ResponseInitChain, error)
BeginBlock(context.Context, *RequestBeginBlock) (*ResponseBeginBlock, error)
@@ -2081,24 +2001,6 @@ func _ABCIApplication_Query_Handler(srv interface{}, ctx context.Context, dec fu
return interceptor(ctx, in, info, handler)
}
-func _ABCIApplication_Proof_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(RequestProof)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ABCIApplicationServer).Proof(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/types.ABCIApplication/Proof",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ABCIApplicationServer).Proof(ctx, req.(*RequestProof))
- }
- return interceptor(ctx, in, info, handler)
-}
-
func _ABCIApplication_Commit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(RequestCommit)
if err := dec(in); err != nil {
@@ -2203,10 +2105,6 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{
MethodName: "Query",
Handler: _ABCIApplication_Query_Handler,
},
- {
- MethodName: "Proof",
- Handler: _ABCIApplication_Proof_Handler,
- },
{
MethodName: "Commit",
Handler: _ABCIApplication_Commit_Handler,
@@ -2231,112 +2129,112 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("types/types.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
- // 1710 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x58, 0x5b, 0x6f, 0xe4, 0x48,
- 0x15, 0x8e, 0x3b, 0x7d, 0x3d, 0x9d, 0x74, 0x2a, 0x27, 0x37, 0xa7, 0xe1, 0x61, 0x64, 0x58, 0x36,
- 0x33, 0x0c, 0x33, 0x28, 0xab, 0x45, 0x13, 0x16, 0x21, 0x25, 0x33, 0xd9, 0xa4, 0xb5, 0xda, 0x99,
- 0xe0, 0x9d, 0xdd, 0x07, 0x40, 0xb4, 0x9c, 0x76, 0x75, 0xb7, 0x89, 0xdb, 0xf6, 0xf8, 0x92, 0x4d,
- 0xf8, 0x23, 0xfc, 0x04, 0x7e, 0x01, 0x2f, 0x3c, 0xf1, 0x84, 0xc4, 0xfd, 0xf2, 0x57, 0xf8, 0x03,
- 0xe8, 0x54, 0x95, 0xaf, 0xb1, 0x79, 0x9a, 0x7d, 0x69, 0xb9, 0xce, 0xad, 0xea, 0x54, 0x7d, 0xe7,
- 0xab, 0xd3, 0x05, 0xdb, 0xf1, 0x7d, 0xc0, 0xa3, 0xe7, 0xe2, 0xf7, 0x59, 0x10, 0xfa, 0xb1, 0x8f,
- 0x1d, 0x31, 0x30, 0xfe, 0xdb, 0x86, 0x9e, 0xc9, 0xdf, 0x25, 0x3c, 0x8a, 0xf1, 0x08, 0xda, 0x7c,
- 0xb6, 0xf4, 0x75, 0xed, 0x91, 0x76, 0x34, 0x3c, 0xc6, 0x67, 0xd2, 0x5c, 0x69, 0xcf, 0x67, 0x4b,
- 0xff, 0x72, 0xcd, 0x14, 0x16, 0xf8, 0x7d, 0xe8, 0xcc, 0xdd, 0x24, 0x5a, 0xea, 0x2d, 0x61, 0xba,
- 0x53, 0x36, 0xfd, 0x94, 0x54, 0x97, 0x6b, 0xa6, 0xb4, 0xa1, 0xb0, 0x8e, 0x37, 0xf7, 0xf5, 0xf5,
- 0xba, 0xb0, 0x13, 0x6f, 0x2e, 0xc2, 0x92, 0x05, 0xbe, 0x00, 0x88, 0x78, 0x3c, 0xf5, 0x83, 0xd8,
- 0xf1, 0x3d, 0xbd, 0x2d, 0xec, 0x0f, 0xca, 0xf6, 0x5f, 0xf0, 0xf8, 0x8d, 0x50, 0x5f, 0xae, 0x99,
- 0x83, 0x28, 0x1d, 0x90, 0xa7, 0xcd, 0x5d, 0xe7, 0x96, 0x87, 0xd3, 0xf8, 0x4e, 0xef, 0xd4, 0x79,
- 0xbe, 0x92, 0xfa, 0xb7, 0x77, 0xe4, 0x69, 0xa7, 0x03, 0x3c, 0x86, 0xfe, 0x6c, 0xc9, 0x67, 0x37,
- 0xe4, 0xd7, 0x15, 0x7e, 0x7b, 0x65, 0xbf, 0x97, 0xa4, 0x15, 0x5e, 0xbd, 0x99, 0xfc, 0xc4, 0x67,
- 0xd0, 0x9d, 0xf9, 0xab, 0x95, 0x13, 0xeb, 0x3d, 0xe1, 0xb1, 0x5b, 0xf1, 0x10, 0xba, 0xcb, 0x35,
- 0x53, 0x59, 0xd1, 0x76, 0xbd, 0x4b, 0x78, 0x78, 0xaf, 0xf7, 0xeb, 0xb6, 0xeb, 0x67, 0xa4, 0xa2,
- 0xed, 0x12, 0x36, 0x94, 0x8a, 0xe3, 0x39, 0xf1, 0x74, 0xb6, 0xb4, 0x1c, 0x4f, 0x1f, 0xd4, 0xa5,
- 0x32, 0xf1, 0x9c, 0xf8, 0x25, 0xa9, 0x29, 0x15, 0x27, 0x1d, 0xe0, 0x27, 0x30, 0xbc, 0xe6, 0x0b,
- 0xc7, 0x9b, 0x5e, 0xbb, 0xfe, 0xec, 0x46, 0x07, 0xe1, 0xaa, 0x97, 0x5d, 0xcf, 0xc8, 0xe0, 0x8c,
- 0xf4, 0x97, 0x6b, 0x26, 0x5c, 0x67, 0x23, 0xfc, 0x18, 0x06, 0xdc, 0xb3, 0x95, 0xeb, 0x50, 0xb8,
- 0xee, 0x57, 0x10, 0xe0, 0xd9, 0xa9, 0x63, 0x9f, 0xab, 0x6f, 0x4a, 0x2d, 0x08, 0x7d, 0x7f, 0xae,
- 0x6f, 0xd4, 0xa5, 0x76, 0x45, 0x2a, 0x4a, 0x4d, 0xd8, 0x9c, 0xf5, 0xa0, 0x73, 0x6b, 0xb9, 0x09,
- 0x37, 0x3e, 0x84, 0x61, 0x01, 0x56, 0xa8, 0x43, 0x6f, 0xc5, 0xa3, 0xc8, 0x5a, 0x70, 0x81, 0xbd,
- 0x81, 0x99, 0x0e, 0x8d, 0x11, 0x6c, 0x14, 0x41, 0x65, 0x6c, 0x66, 0x8e, 0x04, 0x1c, 0xe3, 0xc7,
- 0xc0, 0xaa, 0xb8, 0x40, 0x06, 0xeb, 0x37, 0xfc, 0x5e, 0x05, 0xa2, 0x4f, 0xdc, 0x55, 0xd3, 0x0a,
- 0xb4, 0x0e, 0x4c, 0xb5, 0x06, 0x23, 0xf3, 0xcd, 0x90, 0x81, 0x23, 0x68, 0xc5, 0x77, 0xc2, 0x75,
- 0xc3, 0x6c, 0xc5, 0x77, 0xc6, 0x23, 0x18, 0x95, 0x51, 0xf0, 0xc0, 0xe2, 0xbb, 0xd9, 0x02, 0xc5,
- 0x31, 0xd2, 0x5c, 0xf2, 0xa8, 0xa5, 0x89, 0x1c, 0x18, 0x2f, 0x32, 0x2b, 0xb1, 0x23, 0xc5, 0x35,
- 0x6e, 0xc8, 0x35, 0xee, 0x43, 0x77, 0xc9, 0x9d, 0xc5, 0x32, 0x16, 0x8b, 0x6c, 0x9b, 0x6a, 0x64,
- 0x6c, 0xc1, 0x66, 0x09, 0x55, 0xc6, 0xab, 0x6c, 0xd9, 0x19, 0x0a, 0xf0, 0x87, 0x00, 0xb7, 0x96,
- 0xeb, 0xd8, 0x56, 0xec, 0x87, 0x91, 0xae, 0x3d, 0x5a, 0x3f, 0x1a, 0x1e, 0x33, 0x75, 0x12, 0x5f,
- 0xa5, 0x0a, 0xb3, 0x60, 0x63, 0xbc, 0x86, 0xed, 0x07, 0x80, 0x40, 0x84, 0xf6, 0xd2, 0x8a, 0x96,
- 0x6a, 0x59, 0xe2, 0x1b, 0x3f, 0xa0, 0x75, 0x59, 0x36, 0x0f, 0x55, 0xa9, 0x6f, 0xaa, 0xb0, 0x97,
- 0x42, 0x68, 0x2a, 0xa5, 0xf1, 0x18, 0xb6, 0x2a, 0x28, 0x29, 0x64, 0xa4, 0x95, 0x32, 0xfa, 0x43,
- 0x07, 0xfa, 0x26, 0x8f, 0x02, 0xdf, 0x8b, 0x38, 0xbe, 0x80, 0x01, 0xbf, 0x9b, 0x71, 0x59, 0xf0,
- 0x5a, 0x05, 0xb0, 0xd2, 0xe6, 0x3c, 0xd5, 0x13, 0xd8, 0x33, 0x63, 0x7c, 0xac, 0xc8, 0xaa, 0xca,
- 0x40, 0xca, 0xa9, 0xc8, 0x56, 0x4f, 0x53, 0xb6, 0x5a, 0xaf, 0x54, 0xab, 0xb4, 0xad, 0xd0, 0xd5,
- 0x63, 0x45, 0x57, 0xed, 0xda, 0xc0, 0x25, 0xbe, 0x3a, 0x29, 0xf1, 0x55, 0xa7, 0x76, 0xf9, 0x0d,
- 0x84, 0x75, 0x52, 0x22, 0xac, 0x6e, 0xad, 0x6b, 0x03, 0x63, 0x7d, 0x54, 0x60, 0xac, 0x5e, 0xa5,
- 0x50, 0xa5, 0x63, 0x0d, 0x65, 0x3d, 0xcf, 0x28, 0xab, 0x5f, 0x21, 0x39, 0xe5, 0x52, 0xe5, 0xac,
- 0xa7, 0x29, 0x90, 0x07, 0xb5, 0x9b, 0x56, 0x21, 0xad, 0x93, 0x12, 0x69, 0x41, 0x6d, 0x3a, 0x0d,
- 0xac, 0xf5, 0x93, 0x32, 0x6b, 0x49, 0xea, 0x39, 0xac, 0xf8, 0x36, 0xd2, 0xd6, 0x8f, 0x8a, 0xb4,
- 0xb5, 0x51, 0x21, 0x4b, 0x85, 0x85, 0x3a, 0xde, 0x7a, 0x9a, 0xf2, 0xd6, 0x66, 0x6d, 0x7a, 0x4d,
- 0xc4, 0xf5, 0x98, 0xea, 0xa6, 0x82, 0x4b, 0xaa, 0x79, 0x1e, 0x86, 0x7e, 0xa8, 0x38, 0x47, 0x0e,
- 0x8c, 0x23, 0xaa, 0xf9, 0x1c, 0x8d, 0xff, 0x87, 0xe4, 0x44, 0x8d, 0x17, 0xb0, 0x68, 0xfc, 0x56,
- 0xcb, 0x7d, 0x09, 0x70, 0x54, 0x99, 0xb6, 0x15, 0x5b, 0xca, 0x51, 0x7c, 0x53, 0xbc, 0x5b, 0x1e,
- 0x46, 0x84, 0x3c, 0xc9, 0x6b, 0xe9, 0x10, 0x9f, 0xc0, 0xb6, 0x6b, 0x45, 0xb1, 0xdc, 0x94, 0xa9,
- 0x2a, 0xc2, 0x75, 0x51, 0x84, 0x5b, 0xa4, 0x90, 0xbb, 0x21, 0xc4, 0xf8, 0x03, 0xd8, 0x29, 0xd8,
- 0x5a, 0x41, 0x30, 0x15, 0x14, 0xd0, 0x16, 0x14, 0xc0, 0x32, 0xeb, 0xd3, 0x20, 0xb8, 0xb4, 0xa2,
- 0xa5, 0xf1, 0x41, 0x9e, 0x7f, 0x89, 0x71, 0x5d, 0x7f, 0x91, 0x32, 0xae, 0xeb, 0x2f, 0x8c, 0x5f,
- 0xe5, 0x66, 0x39, 0xb9, 0x7e, 0x07, 0xda, 0x33, 0xdf, 0x96, 0xd9, 0x8f, 0x8e, 0xb7, 0xd4, 0x8e,
- 0xbf, 0xf4, 0x6d, 0xfe, 0xf6, 0x3e, 0xe0, 0xa6, 0x50, 0x66, 0x99, 0xb6, 0x24, 0x07, 0x89, 0x4c,
- 0x55, 0xfc, 0xf5, 0x3c, 0xfe, 0x2f, 0x89, 0x6e, 0x4a, 0x58, 0x7f, 0x9f, 0xd1, 0x7f, 0x9e, 0x9f,
- 0x87, 0x24, 0xf5, 0x6f, 0x26, 0xb6, 0xbc, 0x0a, 0xde, 0x63, 0xec, 0x5f, 0xd0, 0x6d, 0x55, 0x2c,
- 0xe7, 0xf7, 0x19, 0x7c, 0x27, 0x3f, 0xd2, 0xac, 0x90, 0x8d, 0x5d, 0xc0, 0x87, 0x15, 0x2a, 0x6f,
- 0xe5, 0x72, 0xed, 0xe1, 0xf7, 0xa0, 0x63, 0x3b, 0xf3, 0x79, 0xa4, 0xb7, 0x1b, 0x6e, 0x27, 0xa9,
- 0x36, 0x7e, 0xd7, 0x82, 0xae, 0xbc, 0x5b, 0xf0, 0x90, 0x78, 0xce, 0x72, 0xbc, 0xa9, 0x63, 0xa7,
- 0x15, 0x23, 0xc6, 0x13, 0xbb, 0xe9, 0xb6, 0xa4, 0x54, 0x62, 0x67, 0xc5, 0x15, 0xd8, 0xc5, 0x37,
- 0x1e, 0x40, 0xcf, 0x4b, 0x56, 0xd3, 0xf8, 0x2e, 0x12, 0xa8, 0x6e, 0x9b, 0x5d, 0x2f, 0x59, 0xbd,
- 0xbd, 0x8b, 0xf0, 0x18, 0x36, 0x0b, 0xd0, 0x77, 0x6c, 0x45, 0xe0, 0x23, 0xb5, 0x34, 0xb1, 0xee,
- 0xc9, 0x2b, 0x73, 0x98, 0x15, 0xc1, 0xc4, 0xc6, 0x23, 0x10, 0x35, 0x31, 0x95, 0x24, 0x29, 0x6b,
- 0xa5, 0x2b, 0xf6, 0x6d, 0x44, 0x72, 0xc5, 0xa2, 0x74, 0x71, 0x7e, 0x0b, 0x06, 0xb4, 0x93, 0xd2,
- 0xa4, 0x27, 0x4c, 0xfa, 0x24, 0x10, 0xca, 0x0f, 0x61, 0x2b, 0xbf, 0x8c, 0xa5, 0x49, 0x5f, 0x46,
- 0xc9, 0xc5, 0xc2, 0xf0, 0x10, 0xfa, 0x59, 0x4d, 0x0e, 0x84, 0x45, 0xcf, 0x52, 0xa5, 0x38, 0x81,
- 0x9e, 0x5a, 0x62, 0xed, 0xc5, 0xfd, 0x04, 0x3a, 0x81, 0x15, 0xc6, 0x91, 0xba, 0x20, 0x53, 0x82,
- 0xbb, 0xb2, 0x42, 0xea, 0x95, 0xd4, 0xf5, 0x2d, 0x4d, 0x8c, 0x13, 0xd8, 0x2c, 0xc9, 0x89, 0xd1,
- 0x62, 0x3f, 0xb6, 0x5c, 0x75, 0x75, 0xcb, 0x41, 0x36, 0x4d, 0x2b, 0x9f, 0xc6, 0x38, 0x81, 0x41,
- 0x76, 0x86, 0x74, 0x2c, 0x41, 0x72, 0xfd, 0x59, 0xd6, 0xd9, 0xa8, 0x11, 0x85, 0x0b, 0xfc, 0xaf,
- 0x55, 0x0f, 0xd1, 0x36, 0xe5, 0xe0, 0xc9, 0x9f, 0x34, 0x18, 0x7e, 0x2e, 0x29, 0x90, 0xd0, 0x88,
- 0x5b, 0x30, 0x7c, 0x9d, 0xb8, 0xae, 0x12, 0xb1, 0x35, 0xec, 0x43, 0x9b, 0x98, 0x93, 0x69, 0x38,
- 0x80, 0x8e, 0x60, 0x46, 0xd6, 0x22, 0x21, 0x51, 0x22, 0x5b, 0xc7, 0x4d, 0x18, 0x64, 0x1c, 0xc4,
- 0xda, 0x34, 0xcc, 0x28, 0x99, 0x75, 0x68, 0x98, 0x51, 0x0f, 0xdb, 0xc6, 0x21, 0xf4, 0x14, 0x53,
- 0x30, 0x44, 0x80, 0xae, 0x3c, 0x29, 0xb6, 0x43, 0xa1, 0x45, 0x91, 0xb3, 0x5d, 0x72, 0xc9, 0xa0,
- 0xcd, 0xf6, 0x70, 0x04, 0x90, 0x83, 0x9a, 0xed, 0xe3, 0x06, 0xf4, 0x53, 0x38, 0xb3, 0x03, 0xf2,
- 0x13, 0x05, 0xcc, 0xf4, 0x27, 0xbf, 0xef, 0x40, 0x3f, 0xad, 0x29, 0xec, 0x42, 0xeb, 0xcd, 0x67,
- 0x6c, 0x0d, 0xb7, 0x61, 0x73, 0xe2, 0xc5, 0x3c, 0xf4, 0x2c, 0xf7, 0x9c, 0xee, 0x03, 0xa6, 0x91,
- 0xe8, 0xdc, 0x9b, 0xf9, 0xb6, 0xe3, 0x2d, 0xa4, 0xa8, 0x45, 0x31, 0xcf, 0x2c, 0xfb, 0xb5, 0xef,
- 0xcd, 0x38, 0x5b, 0x47, 0x06, 0x1b, 0x5f, 0x7a, 0x56, 0x12, 0x2f, 0xfd, 0xd0, 0xf9, 0x0d, 0xb7,
- 0x59, 0x1b, 0xf7, 0x60, 0x7b, 0xe2, 0x45, 0xc9, 0x7c, 0xee, 0xcc, 0x1c, 0xee, 0xc5, 0x9f, 0x26,
- 0x9e, 0x1d, 0xb1, 0x0e, 0x22, 0x8c, 0xbe, 0xf4, 0x6e, 0x3c, 0xff, 0x6b, 0x4f, 0x75, 0x5d, 0xac,
- 0x8b, 0x3a, 0xec, 0x9e, 0x59, 0x11, 0x7f, 0x95, 0x04, 0xae, 0x33, 0xb3, 0x62, 0x7e, 0x6a, 0xdb,
- 0x21, 0x8f, 0x22, 0xc6, 0x29, 0x08, 0x69, 0xca, 0x73, 0xcf, 0x53, 0x87, 0x52, 0x7c, 0xce, 0x23,
- 0xb6, 0xc0, 0x43, 0xd8, 0x7b, 0xa0, 0x11, 0x33, 0x2f, 0xf1, 0xdb, 0xa0, 0x57, 0x55, 0x17, 0x56,
- 0x74, 0x15, 0x3a, 0x33, 0xce, 0x1c, 0xdc, 0x05, 0x26, 0xb5, 0x02, 0xc6, 0x13, 0x2f, 0x48, 0x62,
- 0xf6, 0xeb, 0x74, 0x7e, 0x25, 0x7d, 0x93, 0xc4, 0x24, 0xbe, 0xa9, 0x88, 0xaf, 0x04, 0x54, 0x98,
- 0x8b, 0x07, 0xb0, 0x53, 0x10, 0x7f, 0x41, 0xf9, 0xd1, 0xee, 0xac, 0xf2, 0xf5, 0x4a, 0x85, 0xb3,
- 0xf0, 0xac, 0x38, 0x09, 0x39, 0xf3, 0x70, 0x1f, 0x90, 0x34, 0x6a, 0x4b, 0xd2, 0xc4, 0xfd, 0x74,
- 0x06, 0x25, 0x57, 0x33, 0x04, 0x55, 0xb1, 0x9b, 0x2c, 0x1c, 0x8f, 0xbd, 0xc3, 0x3d, 0x60, 0x17,
- 0xfe, 0xad, 0x92, 0x9e, 0x7b, 0xb1, 0x13, 0xdf, 0xb3, 0x3f, 0x6b, 0xb8, 0x0b, 0x5b, 0xb9, 0xf8,
- 0x22, 0xf4, 0x93, 0x80, 0xfd, 0x45, 0xc3, 0x03, 0xc0, 0x5c, 0x7a, 0x15, 0xfa, 0x81, 0x1f, 0x59,
- 0x2e, 0xfb, 0xab, 0x86, 0xfb, 0xb0, 0x7d, 0xe1, 0xdf, 0x66, 0xa7, 0x20, 0x1d, 0xfe, 0x96, 0x3a,
- 0x64, 0xf2, 0xcf, 0xf9, 0xea, 0x9a, 0x87, 0xec, 0xef, 0x1a, 0x1e, 0xc2, 0x6e, 0x51, 0x91, 0xc5,
- 0xfa, 0x87, 0xa6, 0x56, 0x94, 0xa9, 0xbe, 0xf2, 0x63, 0xce, 0xfe, 0x99, 0x8a, 0xd5, 0x3e, 0xa8,
- 0x40, 0xff, 0xd2, 0x70, 0x07, 0x46, 0xb9, 0x58, 0xd8, 0xfe, 0x5b, 0xc3, 0x31, 0xec, 0x95, 0x84,
- 0x8e, 0xb7, 0xb8, 0xa2, 0xea, 0x63, 0xff, 0xd1, 0x8e, 0xff, 0xd8, 0x81, 0xad, 0xd3, 0xb3, 0x97,
- 0x93, 0xd3, 0x40, 0x4e, 0x40, 0x77, 0xf9, 0x73, 0x59, 0x73, 0x58, 0xf3, 0xef, 0x7f, 0x5c, 0xd7,
- 0x64, 0xe3, 0xb1, 0x2a, 0x4d, 0xac, 0x7b, 0x04, 0x18, 0xd7, 0xf6, 0xda, 0x34, 0x89, 0x6c, 0x6b,
- 0x1e, 0xbe, 0x05, 0x8c, 0xeb, 0x1a, 0x6e, 0xfc, 0x69, 0xa1, 0xd4, 0xb1, 0xe9, 0x45, 0x60, 0xdc,
- 0xd8, 0x7a, 0x93, 0x7f, 0xde, 0x87, 0x34, 0xbd, 0x0b, 0x8c, 0x1b, 0xfb, 0x6f, 0x7c, 0x91, 0xb1,
- 0x07, 0xd6, 0xbf, 0x0e, 0x8c, 0x1b, 0x5a, 0x70, 0xda, 0x1e, 0xd9, 0x43, 0xd4, 0xfd, 0xe9, 0x1f,
- 0xd7, 0x76, 0xd5, 0xe4, 0x23, 0x7b, 0x83, 0xba, 0x7f, 0xd3, 0xe3, 0xda, 0x56, 0x15, 0x3f, 0x4e,
- 0x29, 0x0d, 0x6b, 0x1f, 0x23, 0xc6, 0xf5, 0xfd, 0x3e, 0x6d, 0x4c, 0xfe, 0x37, 0xb2, 0xe9, 0x95,
- 0x61, 0xdc, 0xd8, 0xc9, 0xe3, 0x69, 0x91, 0x23, 0xb1, 0xf1, 0xad, 0x61, 0xdc, 0xdc, 0xcf, 0xe3,
- 0x27, 0x39, 0xad, 0x62, 0xc3, 0x8b, 0xc3, 0xb8, 0xa9, 0xa5, 0xbf, 0xee, 0x8a, 0xc7, 0xac, 0x8f,
- 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x2e, 0xe2, 0x17, 0xe1, 0x12, 0x00, 0x00,
+ // 1711 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0x4b, 0x6f, 0xe4, 0xc6,
+ 0x11, 0x16, 0xe7, 0x3d, 0x35, 0xd2, 0xa8, 0x55, 0x1a, 0x49, 0xd4, 0x24, 0x87, 0x05, 0x03, 0xc7,
+ 0xda, 0x8d, 0xb3, 0x1b, 0xc8, 0x70, 0xb0, 0x8a, 0x83, 0x00, 0xd2, 0xae, 0xbc, 0x1a, 0x18, 0xde,
+ 0x55, 0xe8, 0xb5, 0x2f, 0x09, 0x32, 0xa0, 0x86, 0x3d, 0x33, 0x8c, 0xa8, 0x26, 0x97, 0x6c, 0xca,
+ 0x52, 0x7e, 0x83, 0xef, 0xf9, 0x09, 0xb9, 0x07, 0xc8, 0x29, 0xf7, 0x00, 0x79, 0x3f, 0x7e, 0x51,
+ 0xd0, 0x0f, 0x3e, 0x45, 0x1a, 0x3e, 0xf8, 0x32, 0x60, 0x3d, 0xbb, 0xab, 0xba, 0xea, 0xeb, 0xea,
+ 0x81, 0x1d, 0x7e, 0x1f, 0xd2, 0xf8, 0x99, 0xfc, 0x7d, 0x1a, 0x46, 0x01, 0x0f, 0xb0, 0x2b, 0x09,
+ 0xeb, 0x2f, 0x1d, 0xe8, 0xdb, 0xf4, 0x5d, 0x42, 0x63, 0x8e, 0x47, 0xd0, 0xa1, 0x8b, 0x75, 0x60,
+ 0x1a, 0x8f, 0x8c, 0xa3, 0xd1, 0x31, 0x3e, 0x55, 0xea, 0x5a, 0x7a, 0xbe, 0x58, 0x07, 0x17, 0x1b,
+ 0xb6, 0xd4, 0xc0, 0x1f, 0x41, 0x77, 0xe9, 0x27, 0xf1, 0xda, 0x6c, 0x49, 0xd5, 0xdd, 0xb2, 0xea,
+ 0x27, 0x42, 0x74, 0xb1, 0x61, 0x2b, 0x1d, 0xe1, 0xd6, 0x63, 0xcb, 0xc0, 0x6c, 0xd7, 0xb9, 0x9d,
+ 0xb1, 0xa5, 0x74, 0x2b, 0x34, 0xf0, 0x39, 0x40, 0x4c, 0xf9, 0x3c, 0x08, 0xb9, 0x17, 0x30, 0xb3,
+ 0x23, 0xf5, 0x0f, 0xca, 0xfa, 0x9f, 0x53, 0xfe, 0x46, 0x8a, 0x2f, 0x36, 0xec, 0x61, 0x9c, 0x12,
+ 0xc2, 0xd2, 0xa5, 0xbe, 0x77, 0x4b, 0xa3, 0x39, 0xbf, 0x33, 0xbb, 0x75, 0x96, 0x2f, 0x95, 0xfc,
+ 0xed, 0x9d, 0xb0, 0x74, 0x53, 0x02, 0x8f, 0x61, 0xb0, 0x58, 0xd3, 0xc5, 0xb5, 0xb0, 0xeb, 0x49,
+ 0xbb, 0xbd, 0xb2, 0xdd, 0x0b, 0x21, 0x95, 0x56, 0xfd, 0x85, 0xfa, 0xc4, 0xa7, 0xd0, 0x5b, 0x04,
+ 0x37, 0x37, 0x1e, 0x37, 0xfb, 0xd2, 0x62, 0x52, 0xb1, 0x90, 0xb2, 0x8b, 0x0d, 0x5b, 0x6b, 0x89,
+ 0x74, 0xbd, 0x4b, 0x68, 0x74, 0x6f, 0x0e, 0xea, 0xd2, 0xf5, 0x4b, 0x21, 0x12, 0xe9, 0x92, 0x3a,
+ 0x22, 0x14, 0x8f, 0x79, 0x7c, 0xbe, 0x58, 0x3b, 0x1e, 0x33, 0x87, 0x75, 0xa1, 0xcc, 0x98, 0xc7,
+ 0x5f, 0x08, 0xb1, 0x08, 0xc5, 0x4b, 0x09, 0xfc, 0x18, 0x46, 0x57, 0x74, 0xe5, 0xb1, 0xf9, 0x95,
+ 0x1f, 0x2c, 0xae, 0x4d, 0x90, 0xa6, 0x66, 0xd9, 0xf4, 0x4c, 0x28, 0x9c, 0x09, 0xf9, 0xc5, 0x86,
+ 0x0d, 0x57, 0x19, 0x85, 0x1f, 0xc1, 0x90, 0x32, 0x57, 0x9b, 0x8e, 0xa4, 0xe9, 0x7e, 0xa5, 0x02,
+ 0x98, 0x9b, 0x1a, 0x0e, 0xa8, 0xfe, 0x3e, 0xeb, 0x43, 0xf7, 0xd6, 0xf1, 0x13, 0x6a, 0xbd, 0x0f,
+ 0xa3, 0x42, 0xa5, 0xa0, 0x09, 0xfd, 0x1b, 0x1a, 0xc7, 0xce, 0x8a, 0xca, 0x72, 0x1a, 0xda, 0x29,
+ 0x69, 0x8d, 0x61, 0xb3, 0x58, 0x27, 0xd6, 0x56, 0x66, 0x28, 0x6a, 0xc1, 0xfa, 0x19, 0x90, 0xea,
+ 0x51, 0x23, 0x81, 0xf6, 0x35, 0xbd, 0xd7, 0x8e, 0xc4, 0x27, 0x4e, 0xf4, 0xb2, 0xb2, 0x00, 0x87,
+ 0xb6, 0xde, 0x83, 0x95, 0xd9, 0x66, 0x87, 0x8d, 0x63, 0x68, 0xf1, 0x3b, 0x69, 0xba, 0x69, 0xb7,
+ 0xf8, 0x9d, 0xf5, 0x08, 0xc6, 0xe5, 0x83, 0x7d, 0xa0, 0xe1, 0x66, 0x1b, 0x94, 0x27, 0x83, 0x08,
+ 0x1d, 0xd7, 0xe1, 0x8e, 0xd6, 0x90, 0xdf, 0x82, 0x17, 0x3a, 0x7c, 0xad, 0x97, 0x97, 0xdf, 0xb8,
+ 0x0f, 0xbd, 0x35, 0xf5, 0x56, 0x6b, 0x2e, 0x2b, 0xbd, 0x63, 0x6b, 0x4a, 0xec, 0x35, 0x8c, 0x82,
+ 0x5b, 0x2a, 0x0b, 0x7a, 0x60, 0x2b, 0xc2, 0xda, 0x86, 0xad, 0x52, 0xb9, 0x58, 0x2f, 0xb3, 0xcd,
+ 0x67, 0xc7, 0x8b, 0x3f, 0x01, 0xb8, 0x75, 0x7c, 0xcf, 0x75, 0x78, 0x10, 0xc5, 0xa6, 0xf1, 0xa8,
+ 0x7d, 0x34, 0x3a, 0x26, 0xfa, 0x54, 0xbe, 0x4c, 0x05, 0x76, 0x41, 0xc7, 0x7a, 0x0d, 0x3b, 0x0f,
+ 0x4e, 0x5a, 0xec, 0x76, 0xed, 0xc4, 0xeb, 0x34, 0x02, 0xf1, 0x8d, 0xef, 0x89, 0xdd, 0x3a, 0x2e,
+ 0x8d, 0x74, 0x0f, 0x6f, 0x69, 0xb7, 0x17, 0x92, 0x69, 0x6b, 0xa1, 0xf5, 0x18, 0xb6, 0x2b, 0xc7,
+ 0x5f, 0x88, 0xd3, 0x28, 0xc6, 0x69, 0x7d, 0xdd, 0x85, 0x81, 0x4d, 0xe3, 0x30, 0x60, 0x31, 0xc5,
+ 0xe7, 0x30, 0xa4, 0x77, 0x0b, 0xaa, 0x3a, 0xd9, 0xa8, 0x54, 0xa2, 0xd2, 0x39, 0x4f, 0xe5, 0xa2,
+ 0x8a, 0x33, 0x65, 0x7c, 0xac, 0x51, 0xa8, 0x0a, 0x2d, 0xda, 0xa8, 0x08, 0x43, 0x1f, 0xa4, 0x30,
+ 0xd4, 0xae, 0xb4, 0xa1, 0xd2, 0xad, 0xe0, 0xd0, 0x63, 0x8d, 0x43, 0x9d, 0x5a, 0xc7, 0x25, 0x20,
+ 0x3a, 0x29, 0x01, 0x51, 0xb7, 0x76, 0xfb, 0x0d, 0x48, 0x74, 0x52, 0x42, 0xa2, 0x5e, 0xad, 0x69,
+ 0x03, 0x14, 0x7d, 0x58, 0x80, 0xa2, 0x7e, 0xa5, 0x03, 0x95, 0x61, 0x0d, 0x16, 0x3d, 0xcb, 0xb0,
+ 0x68, 0x50, 0x41, 0x2f, 0x6d, 0x52, 0x05, 0xa3, 0x0f, 0x52, 0x30, 0x1a, 0xd6, 0x26, 0xad, 0x82,
+ 0x46, 0x27, 0x25, 0x34, 0x82, 0xda, 0x70, 0x1a, 0xe0, 0xe8, 0xe7, 0x65, 0x38, 0x52, 0x98, 0x72,
+ 0x58, 0xb1, 0x6d, 0xc4, 0xa3, 0x9f, 0x16, 0xf1, 0x68, 0xb3, 0x82, 0x82, 0xba, 0x16, 0xbe, 0x11,
+ 0x90, 0x1e, 0x8b, 0x4e, 0xa8, 0x54, 0x9a, 0xe8, 0x45, 0x1a, 0x45, 0x41, 0xa4, 0xb1, 0x44, 0x11,
+ 0xd6, 0x91, 0xe8, 0xf8, 0xbc, 0xbe, 0xbe, 0x01, 0xbc, 0x64, 0xd7, 0x16, 0xaa, 0xcb, 0xfa, 0xbd,
+ 0x91, 0xdb, 0x8a, 0x12, 0x2a, 0xa1, 0xc5, 0x50, 0xa3, 0x85, 0x09, 0xfd, 0x5b, 0x1a, 0xc5, 0xa2,
+ 0x96, 0x14, 0x60, 0xa4, 0x24, 0x3e, 0x81, 0x1d, 0xdf, 0x89, 0xb9, 0x0a, 0x73, 0x5e, 0x82, 0x8f,
+ 0x6d, 0x21, 0x50, 0xf1, 0x29, 0x1c, 0xf9, 0x31, 0xec, 0x16, 0x74, 0x9d, 0x30, 0x9c, 0xcb, 0xa6,
+ 0xee, 0xc8, 0xa6, 0x26, 0x99, 0xf6, 0x69, 0x18, 0x5e, 0x38, 0xf1, 0xda, 0x7a, 0x2f, 0x8f, 0xbf,
+ 0x84, 0xa4, 0x7e, 0xb0, 0x4a, 0x91, 0xd4, 0x0f, 0x56, 0xd6, 0x6f, 0x72, 0xb5, 0x1c, 0x34, 0x7f,
+ 0x00, 0x9d, 0x45, 0xe0, 0xaa, 0xe8, 0xc7, 0xc7, 0xdb, 0x3a, 0xef, 0x2f, 0x02, 0x97, 0xbe, 0xbd,
+ 0x0f, 0xa9, 0x2d, 0x85, 0x59, 0xa4, 0xad, 0x02, 0x2e, 0x6a, 0xff, 0xed, 0xdc, 0xff, 0xaf, 0x05,
+ 0x80, 0x94, 0xaa, 0xf7, 0xbb, 0xf4, 0xfe, 0x47, 0x23, 0x3f, 0x10, 0x85, 0xd6, 0xdf, 0xca, 0xf9,
+ 0x04, 0xba, 0x1e, 0x73, 0xe9, 0x9d, 0xf4, 0xde, 0xb6, 0x15, 0x91, 0x5e, 0x33, 0x6d, 0xb9, 0x62,
+ 0xf9, 0x9a, 0x51, 0x49, 0x56, 0x84, 0x06, 0xf4, 0x60, 0x29, 0x81, 0x61, 0xd3, 0x56, 0x44, 0x01,
+ 0x16, 0x7b, 0x25, 0xf8, 0xd7, 0x9b, 0xee, 0xe7, 0x9b, 0xfe, 0x95, 0xb8, 0x82, 0x8a, 0xdd, 0xf9,
+ 0x5d, 0x66, 0x64, 0x37, 0x3f, 0xcf, 0xac, 0x2f, 0xad, 0x09, 0xe0, 0xc3, 0x86, 0x53, 0x57, 0x6d,
+ 0xb9, 0x95, 0xf0, 0x87, 0xd0, 0x75, 0xbd, 0xe5, 0x32, 0x36, 0x3b, 0x0d, 0x97, 0x8d, 0x12, 0x5b,
+ 0x7f, 0x68, 0x41, 0x4f, 0x5d, 0x15, 0x78, 0x28, 0x60, 0xcb, 0xf1, 0xd8, 0xdc, 0x73, 0xd3, 0x76,
+ 0x91, 0xf4, 0xcc, 0x2d, 0xe4, 0xa4, 0x55, 0xca, 0x09, 0x42, 0x87, 0x7b, 0x37, 0x54, 0x57, 0xba,
+ 0xfc, 0xc6, 0x03, 0xe8, 0xb3, 0xe4, 0x66, 0xce, 0xef, 0x62, 0x99, 0xed, 0x8e, 0xdd, 0x63, 0xc9,
+ 0xcd, 0xdb, 0xbb, 0x18, 0x8f, 0x61, 0xab, 0x50, 0xf7, 0x9e, 0xab, 0xf1, 0x78, 0xac, 0xb7, 0x26,
+ 0xf7, 0x3d, 0x7b, 0x69, 0x8f, 0xb2, 0x0e, 0x98, 0xb9, 0x78, 0x04, 0xb2, 0x21, 0xe6, 0x0a, 0xf3,
+ 0x54, 0xa3, 0xf4, 0x64, 0xde, 0xc6, 0x82, 0xaf, 0x41, 0x51, 0xdc, 0x83, 0xdf, 0x83, 0xa1, 0xc8,
+ 0xa4, 0x52, 0xe9, 0x4b, 0x95, 0x81, 0x60, 0x48, 0xe1, 0xfb, 0xb0, 0x9d, 0xdf, 0xad, 0x4a, 0x65,
+ 0xa0, 0xbc, 0xe4, 0x6c, 0xa9, 0x78, 0x08, 0x83, 0xac, 0x21, 0x87, 0x52, 0xa3, 0xef, 0xe8, 0x3e,
+ 0x9c, 0x41, 0x5f, 0x6f, 0xb1, 0xf6, 0x1e, 0x7e, 0x02, 0xdd, 0xd0, 0x89, 0x78, 0xac, 0xef, 0xbb,
+ 0x14, 0x8e, 0x2f, 0x9d, 0x48, 0x0c, 0x40, 0xfa, 0x36, 0x56, 0x2a, 0xd6, 0x09, 0x6c, 0x95, 0xf8,
+ 0xa2, 0x12, 0x79, 0xc0, 0x1d, 0x5f, 0xdf, 0xc4, 0x8a, 0xc8, 0x96, 0x69, 0xe5, 0xcb, 0x58, 0x27,
+ 0x30, 0xcc, 0xce, 0x50, 0x1c, 0x4b, 0x98, 0x5c, 0x7d, 0xaa, 0x47, 0xaa, 0x4d, 0x5b, 0x53, 0xb2,
+ 0xb0, 0x83, 0xaf, 0xf4, 0x48, 0xd0, 0xb1, 0x15, 0xf1, 0xe4, 0xcf, 0x06, 0x8c, 0x3e, 0x53, 0xf8,
+ 0x27, 0xaa, 0x11, 0xb7, 0x61, 0xf4, 0x3a, 0xf1, 0x7d, 0xcd, 0x22, 0x1b, 0x38, 0x80, 0x8e, 0x80,
+ 0x4d, 0x62, 0xe0, 0x10, 0xba, 0x12, 0x16, 0x49, 0x4b, 0x30, 0x05, 0x1e, 0x92, 0x36, 0x6e, 0xc1,
+ 0x30, 0x03, 0x20, 0xd2, 0x11, 0x64, 0x86, 0xc7, 0xa4, 0x2b, 0xc8, 0x0c, 0x77, 0xc8, 0x0e, 0x8e,
+ 0xa0, 0xaf, 0x61, 0x82, 0x20, 0x02, 0xf4, 0xd4, 0x49, 0x91, 0x5d, 0xe1, 0x5a, 0x36, 0x38, 0x99,
+ 0x08, 0x93, 0xac, 0xb4, 0xc9, 0x1e, 0x8e, 0x01, 0xf2, 0xa2, 0x26, 0xfb, 0xb8, 0x09, 0x83, 0xb4,
+ 0x9c, 0xc9, 0xc1, 0x93, 0x3f, 0x75, 0x61, 0x90, 0x36, 0x12, 0xf6, 0xa0, 0xf5, 0xe6, 0x53, 0xb2,
+ 0x81, 0x3b, 0xb0, 0x35, 0x63, 0x9c, 0x46, 0xcc, 0xf1, 0xcf, 0xc5, 0x0d, 0x40, 0x0c, 0xc1, 0x3a,
+ 0x67, 0x8b, 0xc0, 0xf5, 0xd8, 0x4a, 0xb1, 0x5a, 0xc2, 0xd1, 0x99, 0xe3, 0xbe, 0x0e, 0xd8, 0x82,
+ 0x92, 0x36, 0x12, 0xd8, 0xfc, 0x82, 0x39, 0x09, 0x5f, 0x07, 0x91, 0xf7, 0x3b, 0xea, 0x92, 0x0e,
+ 0xee, 0xc1, 0xce, 0x8c, 0xc5, 0xc9, 0x72, 0xe9, 0x2d, 0x3c, 0xca, 0xf8, 0x27, 0x09, 0x73, 0x63,
+ 0xd2, 0x45, 0x84, 0xf1, 0x17, 0xec, 0x9a, 0x05, 0x5f, 0x31, 0x3d, 0x39, 0x91, 0x1e, 0x9a, 0x30,
+ 0x39, 0x73, 0x62, 0xfa, 0x32, 0x09, 0x7d, 0x6f, 0xe1, 0x70, 0x7a, 0xea, 0xba, 0x11, 0x8d, 0x63,
+ 0x42, 0x85, 0x13, 0x21, 0x29, 0xaf, 0xbd, 0x4c, 0x0d, 0x4a, 0xfe, 0x29, 0x8d, 0xc9, 0x0a, 0x0f,
+ 0x61, 0xef, 0x81, 0x44, 0xae, 0xbc, 0xc6, 0xef, 0x83, 0x59, 0x15, 0xbd, 0x72, 0xe2, 0xcb, 0xc8,
+ 0x5b, 0x50, 0xe2, 0xe1, 0x04, 0x88, 0x92, 0xca, 0xda, 0x9d, 0xb1, 0x30, 0xe1, 0xe4, 0xb7, 0xe9,
+ 0xfa, 0x9a, 0xfb, 0x26, 0xe1, 0x82, 0x7d, 0x5d, 0x61, 0x5f, 0xca, 0xfa, 0x20, 0x3e, 0x1e, 0xc0,
+ 0x6e, 0x81, 0xfd, 0xb9, 0x88, 0x4f, 0x64, 0xe7, 0x26, 0xdf, 0xaf, 0x12, 0x78, 0x2b, 0xe6, 0xf0,
+ 0x24, 0xa2, 0x84, 0xe1, 0x3e, 0xa0, 0x90, 0xe8, 0x94, 0xa4, 0x81, 0x07, 0xe9, 0x0a, 0x9a, 0xaf,
+ 0x57, 0x08, 0xab, 0x6c, 0x3f, 0x59, 0x79, 0x8c, 0xbc, 0xc3, 0x3d, 0x20, 0xaf, 0x82, 0x5b, 0xcd,
+ 0x3d, 0x67, 0xdc, 0xe3, 0xf7, 0xe4, 0xaf, 0x06, 0x4e, 0x60, 0x3b, 0x67, 0xbf, 0x8a, 0x82, 0x24,
+ 0x24, 0x7f, 0x33, 0xf0, 0x00, 0x30, 0xe7, 0x5e, 0x46, 0x41, 0x18, 0xc4, 0x8e, 0x4f, 0xfe, 0x6e,
+ 0xe0, 0x3e, 0xec, 0xbc, 0x0a, 0x6e, 0xb3, 0x53, 0x50, 0x06, 0xff, 0x48, 0x0d, 0x32, 0xfe, 0x67,
+ 0xf4, 0xe6, 0x8a, 0x46, 0xe4, 0x9f, 0x06, 0x1e, 0xc2, 0xa4, 0x28, 0xc8, 0x7c, 0xfd, 0xcb, 0xd0,
+ 0x3b, 0xca, 0x44, 0x5f, 0x06, 0x9c, 0x92, 0x7f, 0xa7, 0x6c, 0x9d, 0x07, 0xed, 0xe8, 0x3f, 0x06,
+ 0xee, 0xc2, 0x38, 0x67, 0x4b, 0xdd, 0xff, 0x1a, 0x38, 0x85, 0xbd, 0x12, 0xd3, 0x63, 0xab, 0x4b,
+ 0xd1, 0x72, 0xe4, 0x7f, 0xc6, 0xf1, 0xd7, 0x5d, 0xd8, 0x3e, 0x3d, 0x7b, 0x31, 0x3b, 0x0d, 0xd5,
+ 0x02, 0xe2, 0xf6, 0x7e, 0xa6, 0x1a, 0x0d, 0x6b, 0x9e, 0xe6, 0xd3, 0xba, 0x41, 0x19, 0x8f, 0x75,
+ 0x3f, 0x62, 0xdd, 0x0b, 0x7d, 0x5a, 0x3b, 0x2f, 0x8b, 0x45, 0xd4, 0x20, 0xf3, 0xf0, 0xa1, 0x3e,
+ 0xad, 0x1b, 0x9a, 0xf1, 0x17, 0x85, 0xfe, 0xc6, 0xa6, 0xe7, 0xfa, 0xb4, 0x71, 0x7c, 0x16, 0xf6,
+ 0xf9, 0xe4, 0xd1, 0xf4, 0x68, 0x9f, 0x36, 0xce, 0xd0, 0xf8, 0x3c, 0x83, 0x0c, 0xac, 0x7f, 0xba,
+ 0x4f, 0x1b, 0xc6, 0x68, 0x91, 0x1e, 0x35, 0x34, 0xd4, 0xbd, 0xc8, 0xa7, 0xb5, 0x93, 0x31, 0x7e,
+ 0x94, 0x62, 0x12, 0xd6, 0xbe, 0xfa, 0xa7, 0xf5, 0xf3, 0xb7, 0x08, 0x32, 0x7f, 0xd6, 0x35, 0x3d,
+ 0xe7, 0xa7, 0x8d, 0x93, 0x35, 0x9e, 0x16, 0x41, 0x0e, 0x1b, 0x1f, 0xf5, 0xd3, 0xe6, 0xf9, 0x1a,
+ 0x3f, 0xce, 0x71, 0x11, 0x1b, 0x9e, 0xf6, 0xd3, 0xa6, 0x11, 0xfb, 0xaa, 0x27, 0xff, 0x35, 0xfa,
+ 0xf0, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x34, 0x90, 0x2d, 0x4a, 0x12, 0x00, 0x00,
}
diff --git a/types/types.proto b/types/types.proto
index 14093476..3eea82ea 100644
--- a/types/types.proto
+++ b/types/types.proto
@@ -113,7 +113,7 @@ message RequestCheckTx{
}
message RequestQuery{
- bytes query = 1;
+ bytes data = 1;
string path = 2;
uint64 height = 3;
bool prove = 4;
@@ -191,10 +191,13 @@ message ResponseCheckTx{
}
message ResponseQuery{
- bytes data = 2;
- string log = 3;
- uint64 height = 4;
+ CodeType code = 1;
+ int64 index = 2;
+ bytes key = 3;
+ bytes value = 4;
bytes proof = 5;
+ uint64 height = 6;
+ string log = 7;
}
message ResponseCommit{