commit
8831249e95
|
@ -12,12 +12,15 @@ BREAKING CHANGES:
|
|||
- [types] switched to using `gogo/protobuf` for code generation
|
||||
- [types] use `customtype` feature of `gogo/protobuf` to replace `[]byte` with `data.Bytes` in all generated types :)
|
||||
- this eliminates the need for additional types like ResultQuery
|
||||
- [types] `pubKey` -> `pub_key`
|
||||
- [types] `uint64` -> `int64`
|
||||
- [abci-cli] codes are printed as their number instead of a message, except for `code == 0`, which is still printed as `OK`
|
||||
|
||||
FEATURES:
|
||||
- [types] added Tags field to ResponseDeliverTx
|
||||
- [types] added Gas and Fee fields to ResponseCheckTx
|
||||
- [dummy] DeliverTx returns tags
|
||||
- [types] ResponseDeliverTx: added `tags` field
|
||||
- [types] ResponseCheckTx: added `gas` and `fee` fields
|
||||
- [types] RequestBeginBlock: added `absent_validators` and `byzantine_validators` fields
|
||||
- [dummy] DeliverTx returns an owner tag and a key tag
|
||||
- [abci-cli] added `log_level` flag to control the logger
|
||||
|
||||
## 0.7.1 (November 14, 2017)
|
||||
|
|
12
Makefile
12
Makefile
|
@ -6,6 +6,8 @@ GOTOOLS = \
|
|||
github.com/gogo/protobuf/protoc-gen-gogo \
|
||||
github.com/gogo/protobuf/gogoproto
|
||||
|
||||
INCLUDE = -I=. -I=${GOPATH}/src -I=${GOPATH}/src/github.com/gogo/protobuf/protobuf
|
||||
|
||||
all: install test
|
||||
|
||||
PACKAGES=$(shell go list ./... | grep -v '/vendor/')
|
||||
|
@ -24,7 +26,7 @@ protoc:
|
|||
## On "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory"
|
||||
## ldconfig (may require sudo)
|
||||
## https://stackoverflow.com/a/25518702
|
||||
protoc -I=. -I=${GOPATH}/src -I=${GOPATH}/src/github.com/gogo/protobuf/protobuf --gogo_out=plugins=grpc:. types/*.proto
|
||||
protoc $(INCLUDE) --gogo_out=plugins=grpc:. --lint_out=. types/*.proto
|
||||
|
||||
install:
|
||||
@ go install ./cmd/...
|
||||
|
@ -36,14 +38,14 @@ dist:
|
|||
@ bash scripts/dist.sh
|
||||
@ bash scripts/publish.sh
|
||||
|
||||
test:
|
||||
test:
|
||||
@ find . -path ./vendor -prune -o -name "*.sock" -exec rm {} \;
|
||||
@ echo "==> Running linter"
|
||||
@ make metalinter_test
|
||||
@ echo "==> Running go test"
|
||||
@ go test $(PACKAGES)
|
||||
|
||||
test_race:
|
||||
test_race:
|
||||
@ find . -path ./vendor -prune -o -name "*.sock" -exec rm {} \;
|
||||
@ echo "==> Running go test --race"
|
||||
@go test -v -race $(PACKAGES)
|
||||
|
@ -67,11 +69,11 @@ get_vendor_deps: ensure_tools
|
|||
@ glide install
|
||||
|
||||
metalinter:
|
||||
protoc --lint_out=. types/*.proto
|
||||
protoc $(INCLUDE) --lint_out=. types/*.proto
|
||||
gometalinter --vendor --deadline=600s --enable-all --disable=lll ./...
|
||||
|
||||
metalinter_test:
|
||||
# protoc --lint_out=. types/*.proto
|
||||
protoc $(INCLUDE) --lint_out=. types/*.proto
|
||||
gometalinter --vendor --deadline=600s --disable-all \
|
||||
--enable=maligned \
|
||||
--enable=deadcode \
|
||||
|
|
16
README.md
16
README.md
|
@ -102,8 +102,8 @@ Here, we describe the requests and responses as function arguments and return va
|
|||
* `Code (uint32)`: Response code
|
||||
* `Data ([]byte)`: Result bytes, if any
|
||||
* `Log (string)`: Debug or error message
|
||||
* `Gas (uint64)`: Amount of gas consumed by transaction
|
||||
* `Fee (uint64)`: Fee paid by transaction
|
||||
* `Gas (int64)`: Amount of gas consumed by transaction
|
||||
* `Fee (int64)`: Fee paid by transaction
|
||||
* __Usage__:<br/>
|
||||
Validate a mempool transaction, prior to broadcasting or proposing. This message should not mutate the main state, but application
|
||||
developers may want to keep a separate CheckTx state that gets reset upon Commit.
|
||||
|
@ -127,14 +127,14 @@ Here, we describe the requests and responses as function arguments and return va
|
|||
* `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). Note that this is the height of the block containing the application's Merkle root hash, which represents the state as it was after committing the block at Height-1
|
||||
* `Height (int64)`: The block height for which you want the query (default=0 returns data for the latest committed block). Note that this is the height of the block containing the application's Merkle root hash, which represents the state as it was after committing the block at Height-1
|
||||
* `Prove (bool)`: Return Merkle proof with response if possible
|
||||
* __Returns__:
|
||||
* `Code (uint32)`: Response code
|
||||
* `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. Note that this is the height of the block containing the application's Merkle root hash, which represents the state as it was after committing the block at Height-1
|
||||
* `Height (int64)`: The block height from which data was derived. Note that this is the height of the block containing the application's Merkle root hash, which represents the state as it was after committing the block at Height-1
|
||||
* `Log (string)`: Debug or error message
|
||||
*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 (recall height=0 defaults to latest block). Hopefully this will be improved soon(ish)
|
||||
|
||||
|
@ -142,7 +142,7 @@ Here, we describe the requests and responses as function arguments and return va
|
|||
* __Returns__:
|
||||
* `Data (string)`: Some arbitrary information
|
||||
* `Version (Version)`: Version information
|
||||
* `LastBlockHeight (uint64)`: Latest block for which the app has called Commit
|
||||
* `LastBlockHeight (int64)`: Latest block for which the app has called Commit
|
||||
* `LastBlockAppHash ([]byte)`: Latest result of Commit
|
||||
|
||||
* __Usage__:<br/>
|
||||
|
@ -168,12 +168,14 @@ Here, we describe the requests and responses as function arguments and return va
|
|||
* __Arguments__:
|
||||
* `Hash ([]byte)`: The block's hash. This can be derived from the block header.
|
||||
* `Header (struct{})`: The block header
|
||||
* `AbsentValidators ([]int32)`: List of indices of validators not included in the LastCommit
|
||||
* `ByzantineValidators ([]Evidence)`: List of evidence of validators that acted maliciously
|
||||
* __Usage__:<br/>
|
||||
Signals the beginning of a new block. Called prior to any DeliverTxs. The header is expected to at least contain the Height.
|
||||
Signals the beginning of a new block. Called prior to any DeliverTxs. The header is expected to at least contain the Height. The `AbsentValidators` and `ByzantineValidators` can be used to determine rewards and punishments for the validators.
|
||||
|
||||
#### EndBlock
|
||||
* __Arguments__:
|
||||
* `Height (uint64)`: The block height that ended
|
||||
* `Height (int64)`: The block height that ended
|
||||
* __Returns__:
|
||||
* `Diffs ([]Validator)`: Changed validators with new voting powers (0 to remove)
|
||||
* __Usage__:<br/>
|
||||
|
|
|
@ -16,7 +16,7 @@ checkout:
|
|||
|
||||
test:
|
||||
override:
|
||||
- cd $REPO && make get_vendor_deps && make metalinter_test && make test_integrations
|
||||
- cd $REPO && make get_vendor_deps && make test_integrations
|
||||
post:
|
||||
- cd "$REPO" && bash <(curl -s https://codecov.io/bash) -f coverage.txt
|
||||
- cd "$REPO" && mv coverage.txt "${CIRCLE_ARTIFACTS}"
|
||||
|
|
|
@ -32,23 +32,23 @@ var (
|
|||
// flags
|
||||
var (
|
||||
// global
|
||||
address string
|
||||
abci string
|
||||
verbose bool // for the println output
|
||||
logLevel string // for the logger
|
||||
flagAddress string
|
||||
flagAbci string
|
||||
flagVerbose bool // for the println output
|
||||
flagLogLevel string // for the logger
|
||||
|
||||
// query
|
||||
path string
|
||||
height int
|
||||
prove bool
|
||||
flagPath string
|
||||
flagHeight int
|
||||
flagProve bool
|
||||
|
||||
// counter
|
||||
addrC string
|
||||
serial bool
|
||||
flagAddrC string
|
||||
flagSerial bool
|
||||
|
||||
// dummy
|
||||
addrD string
|
||||
persist string
|
||||
flagAddrD string
|
||||
flagPersist string
|
||||
)
|
||||
|
||||
var RootCmd = &cobra.Command{
|
||||
|
@ -65,7 +65,7 @@ var RootCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
if logger == nil {
|
||||
allowLevel, err := log.AllowLevel(logLevel)
|
||||
allowLevel, err := log.AllowLevel(flagLogLevel)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ var RootCmd = &cobra.Command{
|
|||
}
|
||||
if client == nil {
|
||||
var err error
|
||||
client, err = abcicli.NewClient(address, abci, false)
|
||||
client, err = abcicli.NewClient(flagAddress, flagAbci, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ type response struct {
|
|||
type queryResponse struct {
|
||||
Key []byte
|
||||
Value []byte
|
||||
Height uint64
|
||||
Height int64
|
||||
Proof []byte
|
||||
}
|
||||
|
||||
|
@ -110,26 +110,26 @@ func Execute() error {
|
|||
}
|
||||
|
||||
func addGlobalFlags() {
|
||||
RootCmd.PersistentFlags().StringVarP(&address, "address", "", "tcp://0.0.0.0:46658", "Address of application socket")
|
||||
RootCmd.PersistentFlags().StringVarP(&abci, "abci", "", "socket", "Either socket or grpc")
|
||||
RootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Print the command and results as if it were a console session")
|
||||
RootCmd.PersistentFlags().StringVarP(&logLevel, "log_level", "", "debug", "Set the logger level")
|
||||
RootCmd.PersistentFlags().StringVarP(&flagAddress, "address", "", "tcp://0.0.0.0:46658", "Address of application socket")
|
||||
RootCmd.PersistentFlags().StringVarP(&flagAbci, "abci", "", "socket", "Either socket or grpc")
|
||||
RootCmd.PersistentFlags().BoolVarP(&flagVerbose, "verbose", "v", false, "Print the command and results as if it were a console session")
|
||||
RootCmd.PersistentFlags().StringVarP(&flagLogLevel, "log_level", "", "debug", "Set the logger level")
|
||||
}
|
||||
|
||||
func addQueryFlags() {
|
||||
queryCmd.PersistentFlags().StringVarP(&path, "path", "", "/store", "Path to prefix query with")
|
||||
queryCmd.PersistentFlags().IntVarP(&height, "height", "", 0, "Height to query the blockchain at")
|
||||
queryCmd.PersistentFlags().BoolVarP(&prove, "prove", "", false, "Whether or not to return a merkle proof of the query result")
|
||||
queryCmd.PersistentFlags().StringVarP(&flagPath, "path", "", "/store", "Path to prefix query with")
|
||||
queryCmd.PersistentFlags().IntVarP(&flagHeight, "height", "", 0, "Height to query the blockchain at")
|
||||
queryCmd.PersistentFlags().BoolVarP(&flagProve, "prove", "", false, "Whether or not to return a merkle proof of the query result")
|
||||
}
|
||||
|
||||
func addCounterFlags() {
|
||||
counterCmd.PersistentFlags().StringVarP(&addrC, "addr", "", "tcp://0.0.0.0:46658", "Listen address")
|
||||
counterCmd.PersistentFlags().BoolVarP(&serial, "serial", "", false, "Enforce incrementing (serial) transactions")
|
||||
counterCmd.PersistentFlags().StringVarP(&flagAddrC, "addr", "", "tcp://0.0.0.0:46658", "Listen address")
|
||||
counterCmd.PersistentFlags().BoolVarP(&flagSerial, "serial", "", false, "Enforce incrementing (serial) transactions")
|
||||
}
|
||||
|
||||
func addDummyFlags() {
|
||||
dummyCmd.PersistentFlags().StringVarP(&addrD, "addr", "", "tcp://0.0.0.0:46658", "Listen address")
|
||||
dummyCmd.PersistentFlags().StringVarP(&persist, "persist", "", "", "Directory to use for a database")
|
||||
dummyCmd.PersistentFlags().StringVarP(&flagAddrD, "addr", "", "tcp://0.0.0.0:46658", "Listen address")
|
||||
dummyCmd.PersistentFlags().StringVarP(&flagPersist, "persist", "", "", "Directory to use for a database")
|
||||
}
|
||||
func addCommands() {
|
||||
RootCmd.AddCommand(batchCmd)
|
||||
|
@ -433,9 +433,9 @@ func cmdQuery(cmd *cobra.Command, args []string) error {
|
|||
|
||||
resQuery, err := client.QuerySync(types.RequestQuery{
|
||||
Data: queryBytes,
|
||||
Path: path,
|
||||
Height: uint64(height),
|
||||
Prove: prove,
|
||||
Path: flagPath,
|
||||
Height: int64(flagHeight),
|
||||
Prove: flagProve,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -455,12 +455,12 @@ func cmdQuery(cmd *cobra.Command, args []string) error {
|
|||
|
||||
func cmdCounter(cmd *cobra.Command, args []string) error {
|
||||
|
||||
app := counter.NewCounterApplication(serial)
|
||||
app := counter.NewCounterApplication(flagSerial)
|
||||
|
||||
logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout))
|
||||
|
||||
// Start the listener
|
||||
srv, err := server.NewServer(addrC, abci, app)
|
||||
srv, err := server.NewServer(flagAddrC, flagAbci, app)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -482,15 +482,15 @@ func cmdDummy(cmd *cobra.Command, args []string) error {
|
|||
|
||||
// Create the application - in memory or persisted to disk
|
||||
var app types.Application
|
||||
if persist == "" {
|
||||
if flagPersist == "" {
|
||||
app = dummy.NewDummyApplication()
|
||||
} else {
|
||||
app = dummy.NewPersistentDummyApplication(persist)
|
||||
app = dummy.NewPersistentDummyApplication(flagPersist)
|
||||
app.(*dummy.PersistentDummyApplication).SetLogger(logger.With("module", "dummy"))
|
||||
}
|
||||
|
||||
// Start the listener
|
||||
srv, err := server.NewServer(addrD, abci, app)
|
||||
srv, err := server.NewServer(flagAddrD, flagAbci, app)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -511,7 +511,7 @@ func cmdDummy(cmd *cobra.Command, args []string) error {
|
|||
|
||||
func printResponse(cmd *cobra.Command, args []string, rsp response) {
|
||||
|
||||
if verbose {
|
||||
if flagVerbose {
|
||||
fmt.Println(">", cmd.Use, strings.Join(args, " "))
|
||||
}
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ func TestPersistentDummyInfo(t *testing.T) {
|
|||
}
|
||||
dummy := NewPersistentDummyApplication(dir)
|
||||
InitDummy(dummy)
|
||||
height := uint64(0)
|
||||
height := int64(0)
|
||||
|
||||
resInfo := dummy.Info(types.RequestInfo{})
|
||||
if resInfo.LastBlockHeight != height {
|
||||
|
@ -90,12 +90,12 @@ func TestPersistentDummyInfo(t *testing.T) {
|
|||
}
|
||||
|
||||
// make and apply block
|
||||
height = uint64(1)
|
||||
height = int64(1)
|
||||
hash := []byte("foo")
|
||||
header := &types.Header{
|
||||
Height: uint64(height),
|
||||
Height: int64(height),
|
||||
}
|
||||
dummy.BeginBlock(types.RequestBeginBlock{hash, header})
|
||||
dummy.BeginBlock(types.RequestBeginBlock{hash, header, nil, nil})
|
||||
dummy.EndBlock(types.RequestEndBlock{header.Height})
|
||||
dummy.Commit()
|
||||
|
||||
|
@ -173,13 +173,13 @@ func TestValSetChanges(t *testing.T) {
|
|||
|
||||
func makeApplyBlock(t *testing.T, dummy types.Application, heightInt int, diff []*types.Validator, txs ...[]byte) {
|
||||
// make and apply block
|
||||
height := uint64(heightInt)
|
||||
height := int64(heightInt)
|
||||
hash := []byte("foo")
|
||||
header := &types.Header{
|
||||
Height: height,
|
||||
}
|
||||
|
||||
dummy.BeginBlock(types.RequestBeginBlock{hash, header})
|
||||
dummy.BeginBlock(types.RequestBeginBlock{hash, header, nil, nil})
|
||||
for _, tx := range txs {
|
||||
if r := dummy.DeliverTx(tx); r.IsErr() {
|
||||
t.Fatal(r)
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
func RandVal(i int) *types.Validator {
|
||||
pubkey := crypto.GenPrivKeyEd25519FromSecret([]byte(cmn.Fmt("test%d", i))).PubKey().Bytes()
|
||||
power := cmn.RandUint16() + 1
|
||||
return &types.Validator{pubkey, uint64(power)}
|
||||
return &types.Validator{pubkey, int64(power)}
|
||||
}
|
||||
|
||||
// RandVals returns a list of cnt validators for initializing
|
||||
|
|
|
@ -55,7 +55,8 @@ func (app *PersistentDummyApplication) SetLogger(l log.Logger) {
|
|||
|
||||
func (app *PersistentDummyApplication) Info(req types.RequestInfo) types.ResponseInfo {
|
||||
res := app.app.Info(req)
|
||||
res.LastBlockHeight = app.app.state.LatestVersion()
|
||||
var latestVersion uint64 = app.app.state.LatestVersion() // TODO: change to int64
|
||||
res.LastBlockHeight = int64(latestVersion)
|
||||
res.LastBlockAppHash = app.app.state.Hash()
|
||||
return res
|
||||
}
|
||||
|
@ -145,7 +146,7 @@ func (app *PersistentDummyApplication) Validators() (validators []*types.Validat
|
|||
return
|
||||
}
|
||||
|
||||
func MakeValSetChangeTx(pubkey []byte, power uint64) []byte {
|
||||
func MakeValSetChangeTx(pubkey []byte, power int64) []byte {
|
||||
return []byte(cmn.Fmt("val:%X/%d", pubkey, power))
|
||||
}
|
||||
|
||||
|
@ -181,7 +182,7 @@ func (app *PersistentDummyApplication) execValidatorTx(tx []byte) types.Response
|
|||
}
|
||||
|
||||
// decode the power
|
||||
power, err := strconv.Atoi(powerS)
|
||||
power, err := strconv.ParseInt(powerS, 10, 64)
|
||||
if err != nil {
|
||||
return types.ResponseDeliverTx{
|
||||
Code: code.CodeTypeEncodingError,
|
||||
|
@ -189,7 +190,7 @@ func (app *PersistentDummyApplication) execValidatorTx(tx []byte) types.Response
|
|||
}
|
||||
|
||||
// update
|
||||
return app.updateValidator(&types.Validator{pubkey, uint64(power)})
|
||||
return app.updateValidator(&types.Validator{pubkey, power})
|
||||
}
|
||||
|
||||
// add, update, or remove a validator
|
||||
|
|
|
@ -25,7 +25,55 @@ type Application interface {
|
|||
Commit() ResponseCommit // Commit the state and return the application Merkle root hash
|
||||
}
|
||||
|
||||
//------------------------------------
|
||||
//-------------------------------------------------------
|
||||
// BaseApplication is a base form of Application
|
||||
|
||||
var _ Application = (*BaseApplication)(nil)
|
||||
|
||||
type BaseApplication struct {
|
||||
}
|
||||
|
||||
func NewBaseApplication() *BaseApplication {
|
||||
return &BaseApplication{}
|
||||
}
|
||||
|
||||
func (BaseApplication) Info(req RequestInfo) ResponseInfo {
|
||||
return ResponseInfo{}
|
||||
}
|
||||
|
||||
func (BaseApplication) SetOption(req RequestSetOption) ResponseSetOption {
|
||||
return ResponseSetOption{}
|
||||
}
|
||||
|
||||
func (BaseApplication) DeliverTx(tx []byte) ResponseDeliverTx {
|
||||
return ResponseDeliverTx{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) CheckTx(tx []byte) ResponseCheckTx {
|
||||
return ResponseCheckTx{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) Commit() ResponseCommit {
|
||||
return ResponseCommit{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) Query(req RequestQuery) ResponseQuery {
|
||||
return ResponseQuery{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) InitChain(req RequestInitChain) ResponseInitChain {
|
||||
return ResponseInitChain{}
|
||||
}
|
||||
|
||||
func (BaseApplication) BeginBlock(req RequestBeginBlock) ResponseBeginBlock {
|
||||
return ResponseBeginBlock{}
|
||||
}
|
||||
|
||||
func (BaseApplication) EndBlock(req RequestEndBlock) ResponseEndBlock {
|
||||
return ResponseEndBlock{}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------
|
||||
|
||||
// GRPCApplication is a GRPC wrapper for Application
|
||||
type GRPCApplication struct {
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
package types
|
||||
|
||||
type BaseApplication struct {
|
||||
}
|
||||
|
||||
func NewBaseApplication() *BaseApplication {
|
||||
return &BaseApplication{}
|
||||
}
|
||||
|
||||
func (BaseApplication) Info(req RequestInfo) ResponseInfo {
|
||||
return ResponseInfo{}
|
||||
}
|
||||
|
||||
func (BaseApplication) SetOption(req RequestSetOption) ResponseSetOption {
|
||||
return ResponseSetOption{}
|
||||
}
|
||||
|
||||
func (BaseApplication) DeliverTx(tx []byte) ResponseDeliverTx {
|
||||
return ResponseDeliverTx{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) CheckTx(tx []byte) ResponseCheckTx {
|
||||
return ResponseCheckTx{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) Commit() ResponseCommit {
|
||||
return ResponseCommit{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) Query(req RequestQuery) ResponseQuery {
|
||||
return ResponseQuery{Code: CodeTypeOK}
|
||||
}
|
||||
|
||||
func (BaseApplication) InitChain(req RequestInitChain) ResponseInitChain {
|
||||
return ResponseInitChain{}
|
||||
}
|
||||
|
||||
func (BaseApplication) BeginBlock(req RequestBeginBlock) ResponseBeginBlock {
|
||||
return ResponseBeginBlock{}
|
||||
}
|
||||
|
||||
func (BaseApplication) EndBlock(req RequestEndBlock) ResponseEndBlock {
|
||||
return ResponseEndBlock{}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package types
|
||||
|
||||
// KVPairInt is a helper method to build KV pair with an integer value.
|
||||
func KVPairInt(key string, val int64) *KVPair {
|
||||
return &KVPair{
|
||||
Key: key,
|
||||
ValueInt: val,
|
||||
ValueType: KVPair_INT,
|
||||
}
|
||||
}
|
||||
|
||||
// KVPairString is a helper method to build KV pair with a string value.
|
||||
func KVPairString(key, val string) *KVPair {
|
||||
return &KVPair{
|
||||
Key: key,
|
||||
ValueString: val,
|
||||
ValueType: KVPair_STRING,
|
||||
}
|
||||
}
|
|
@ -7,6 +7,31 @@ import (
|
|||
wire "github.com/tendermint/go-wire"
|
||||
)
|
||||
|
||||
// WriteMessage writes a length-delimited protobuf message.
|
||||
func WriteMessage(msg proto.Message, w io.Writer) error {
|
||||
bz, err := proto.Marshal(msg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var n int
|
||||
wire.WriteByteSlice(bz, w, &n, &err)
|
||||
return err
|
||||
}
|
||||
|
||||
// ReadMessage reads a length delimited protobuf message.
|
||||
func ReadMessage(r io.Reader, msg proto.Message) error {
|
||||
var n int
|
||||
var err error
|
||||
bz := wire.ReadByteSlice(r, 0, &n, &err) //XXX: no max
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = proto.Unmarshal(bz, msg)
|
||||
return err
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
||||
func ToRequestEcho(message string) *Request {
|
||||
return &Request{
|
||||
Value: &Request_Echo{&RequestEcho{message}},
|
||||
|
@ -146,28 +171,3 @@ func ToResponseEndBlock(res ResponseEndBlock) *Response {
|
|||
Value: &Response_EndBlock{&res},
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
||||
// Write proto message, length delimited
|
||||
func WriteMessage(msg proto.Message, w io.Writer) error {
|
||||
bz, err := proto.Marshal(msg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var n int
|
||||
wire.WriteByteSlice(bz, w, &n, &err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Read proto message, length delimited
|
||||
func ReadMessage(r io.Reader, msg proto.Message) error {
|
||||
var n int
|
||||
var err error
|
||||
bz := wire.ReadByteSlice(r, 0, &n, &err)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = proto.Unmarshal(bz, msg)
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
package types
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestWriteReadMessage(t *testing.T) {
|
||||
cases := []proto.Message{
|
||||
&RequestEcho{"hello"},
|
||||
// TODO: add the rest
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
buf := new(bytes.Buffer)
|
||||
err := WriteMessage(c, buf)
|
||||
assert.Nil(t, err)
|
||||
|
||||
msg := new(RequestEcho)
|
||||
err = ReadMessage(buf, msg)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Equal(t, c, msg)
|
||||
}
|
||||
}
|
|
@ -37,6 +37,7 @@ It has these top-level messages:
|
|||
BlockID
|
||||
PartSetHeader
|
||||
Validator
|
||||
Evidence
|
||||
KVPair
|
||||
*/
|
||||
package types
|
||||
|
@ -81,7 +82,7 @@ var KVPair_Type_value = map[string]int32{
|
|||
func (x KVPair_Type) String() string {
|
||||
return proto.EnumName(KVPair_Type_name, int32(x))
|
||||
}
|
||||
func (KVPair_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29, 0} }
|
||||
func (KVPair_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptorTypes, []int{30, 0} }
|
||||
|
||||
type Request struct {
|
||||
// Types that are valid to be assigned to Value:
|
||||
|
@ -582,7 +583,7 @@ func (m *RequestCheckTx) GetTx() []byte {
|
|||
type RequestQuery struct {
|
||||
Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
|
||||
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
|
||||
Height uint64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Prove bool `protobuf:"varint,4,opt,name=prove,proto3" json:"prove,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -605,7 +606,7 @@ func (m *RequestQuery) GetPath() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (m *RequestQuery) GetHeight() uint64 {
|
||||
func (m *RequestQuery) GetHeight() int64 {
|
||||
if m != nil {
|
||||
return m.Height
|
||||
}
|
||||
|
@ -644,8 +645,10 @@ func (m *RequestInitChain) GetValidators() []*Validator {
|
|||
}
|
||||
|
||||
type RequestBeginBlock struct {
|
||||
Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
|
||||
Header *Header `protobuf:"bytes,2,opt,name=header" json:"header,omitempty"`
|
||||
Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
|
||||
Header *Header `protobuf:"bytes,2,opt,name=header" json:"header,omitempty"`
|
||||
AbsentValidators []int32 `protobuf:"varint,3,rep,packed,name=absent_validators,json=absentValidators" json:"absent_validators,omitempty"`
|
||||
ByzantineValidators []*Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators" json:"byzantine_validators,omitempty"`
|
||||
}
|
||||
|
||||
func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} }
|
||||
|
@ -667,8 +670,22 @@ func (m *RequestBeginBlock) GetHeader() *Header {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *RequestBeginBlock) GetAbsentValidators() []int32 {
|
||||
if m != nil {
|
||||
return m.AbsentValidators
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *RequestBeginBlock) GetByzantineValidators() []*Evidence {
|
||||
if m != nil {
|
||||
return m.ByzantineValidators
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type RequestEndBlock struct {
|
||||
Height uint64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
|
||||
}
|
||||
|
||||
func (m *RequestEndBlock) Reset() { *m = RequestEndBlock{} }
|
||||
|
@ -676,7 +693,7 @@ func (m *RequestEndBlock) String() string { return proto.CompactTextS
|
|||
func (*RequestEndBlock) ProtoMessage() {}
|
||||
func (*RequestEndBlock) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{11} }
|
||||
|
||||
func (m *RequestEndBlock) GetHeight() uint64 {
|
||||
func (m *RequestEndBlock) GetHeight() int64 {
|
||||
if m != nil {
|
||||
return m.Height
|
||||
}
|
||||
|
@ -1157,7 +1174,7 @@ func (*ResponseFlush) Descriptor() ([]byte, []int) { return fileDescriptorTypes,
|
|||
type ResponseInfo struct {
|
||||
Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
|
||||
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
|
||||
LastBlockHeight uint64 `protobuf:"varint,3,opt,name=last_block_height,json=lastBlockHeight,proto3" json:"last_block_height,omitempty"`
|
||||
LastBlockHeight int64 `protobuf:"varint,3,opt,name=last_block_height,json=lastBlockHeight,proto3" json:"last_block_height,omitempty"`
|
||||
LastBlockAppHash []byte `protobuf:"bytes,4,opt,name=last_block_app_hash,json=lastBlockAppHash,proto3" json:"last_block_app_hash,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -1180,7 +1197,7 @@ func (m *ResponseInfo) GetVersion() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (m *ResponseInfo) GetLastBlockHeight() uint64 {
|
||||
func (m *ResponseInfo) GetLastBlockHeight() int64 {
|
||||
if m != nil {
|
||||
return m.LastBlockHeight
|
||||
}
|
||||
|
@ -1247,8 +1264,8 @@ type ResponseCheckTx struct {
|
|||
Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
|
||||
Data github_com_tendermint_go_wire_data.Bytes `protobuf:"bytes,2,opt,name=data,proto3,customtype=github.com/tendermint/go-wire/data.Bytes" json:"data"`
|
||||
Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"`
|
||||
Gas uint64 `protobuf:"varint,4,opt,name=gas,proto3" json:"gas,omitempty"`
|
||||
Fee uint64 `protobuf:"varint,5,opt,name=fee,proto3" json:"fee,omitempty"`
|
||||
Gas int64 `protobuf:"varint,4,opt,name=gas,proto3" json:"gas,omitempty"`
|
||||
Fee int64 `protobuf:"varint,5,opt,name=fee,proto3" json:"fee,omitempty"`
|
||||
}
|
||||
|
||||
func (m *ResponseCheckTx) Reset() { *m = ResponseCheckTx{} }
|
||||
|
@ -1270,14 +1287,14 @@ func (m *ResponseCheckTx) GetLog() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (m *ResponseCheckTx) GetGas() uint64 {
|
||||
func (m *ResponseCheckTx) GetGas() int64 {
|
||||
if m != nil {
|
||||
return m.Gas
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *ResponseCheckTx) GetFee() uint64 {
|
||||
func (m *ResponseCheckTx) GetFee() int64 {
|
||||
if m != nil {
|
||||
return m.Fee
|
||||
}
|
||||
|
@ -1290,7 +1307,7 @@ type ResponseQuery struct {
|
|||
Key github_com_tendermint_go_wire_data.Bytes `protobuf:"bytes,3,opt,name=key,proto3,customtype=github.com/tendermint/go-wire/data.Bytes" json:"key"`
|
||||
Value github_com_tendermint_go_wire_data.Bytes `protobuf:"bytes,4,opt,name=value,proto3,customtype=github.com/tendermint/go-wire/data.Bytes" json:"value"`
|
||||
Proof github_com_tendermint_go_wire_data.Bytes `protobuf:"bytes,5,opt,name=proof,proto3,customtype=github.com/tendermint/go-wire/data.Bytes" json:"proof"`
|
||||
Height uint64 `protobuf:"varint,6,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Height int64 `protobuf:"varint,6,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Log string `protobuf:"bytes,7,opt,name=log,proto3" json:"log,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -1313,7 +1330,7 @@ func (m *ResponseQuery) GetIndex() int64 {
|
|||
return 0
|
||||
}
|
||||
|
||||
func (m *ResponseQuery) GetHeight() uint64 {
|
||||
func (m *ResponseQuery) GetHeight() int64 {
|
||||
if m != nil {
|
||||
return m.Height
|
||||
}
|
||||
|
@ -1386,9 +1403,9 @@ func (m *ResponseEndBlock) GetDiffs() []*Validator {
|
|||
|
||||
type Header struct {
|
||||
ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"`
|
||||
Height uint64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Time uint64 `protobuf:"varint,3,opt,name=time,proto3" json:"time,omitempty"`
|
||||
NumTxs uint64 `protobuf:"varint,4,opt,name=num_txs,json=numTxs,proto3" json:"num_txs,omitempty"`
|
||||
Height int64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
|
||||
Time int64 `protobuf:"varint,3,opt,name=time,proto3" json:"time,omitempty"`
|
||||
NumTxs int64 `protobuf:"varint,4,opt,name=num_txs,json=numTxs,proto3" json:"num_txs,omitempty"`
|
||||
LastBlockId *BlockID `protobuf:"bytes,5,opt,name=last_block_id,json=lastBlockId" json:"last_block_id,omitempty"`
|
||||
LastCommitHash []byte `protobuf:"bytes,6,opt,name=last_commit_hash,json=lastCommitHash,proto3" json:"last_commit_hash,omitempty"`
|
||||
DataHash []byte `protobuf:"bytes,7,opt,name=data_hash,json=dataHash,proto3" json:"data_hash,omitempty"`
|
||||
|
@ -1408,21 +1425,21 @@ func (m *Header) GetChainId() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (m *Header) GetHeight() uint64 {
|
||||
func (m *Header) GetHeight() int64 {
|
||||
if m != nil {
|
||||
return m.Height
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *Header) GetTime() uint64 {
|
||||
func (m *Header) GetTime() int64 {
|
||||
if m != nil {
|
||||
return m.Time
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (m *Header) GetNumTxs() uint64 {
|
||||
func (m *Header) GetNumTxs() int64 {
|
||||
if m != nil {
|
||||
return m.NumTxs
|
||||
}
|
||||
|
@ -1489,7 +1506,7 @@ func (m *BlockID) GetParts() *PartSetHeader {
|
|||
}
|
||||
|
||||
type PartSetHeader struct {
|
||||
Total uint64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
|
||||
Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
|
||||
Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -1498,7 +1515,7 @@ func (m *PartSetHeader) String() string { return proto.CompactTextStr
|
|||
func (*PartSetHeader) ProtoMessage() {}
|
||||
func (*PartSetHeader) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{27} }
|
||||
|
||||
func (m *PartSetHeader) GetTotal() uint64 {
|
||||
func (m *PartSetHeader) GetTotal() int64 {
|
||||
if m != nil {
|
||||
return m.Total
|
||||
}
|
||||
|
@ -1513,8 +1530,8 @@ func (m *PartSetHeader) GetHash() []byte {
|
|||
}
|
||||
|
||||
type Validator struct {
|
||||
PubKey []byte `protobuf:"bytes,1,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
|
||||
Power uint64 `protobuf:"varint,2,opt,name=power,proto3" json:"power,omitempty"`
|
||||
PubKey []byte `protobuf:"bytes,1,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
|
||||
Power int64 `protobuf:"varint,2,opt,name=power,proto3" json:"power,omitempty"`
|
||||
}
|
||||
|
||||
func (m *Validator) Reset() { *m = Validator{} }
|
||||
|
@ -1529,13 +1546,37 @@ func (m *Validator) GetPubKey() []byte {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (m *Validator) GetPower() uint64 {
|
||||
func (m *Validator) GetPower() int64 {
|
||||
if m != nil {
|
||||
return m.Power
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type Evidence struct {
|
||||
PubKey []byte `protobuf:"bytes,1,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
|
||||
Height int64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
|
||||
}
|
||||
|
||||
func (m *Evidence) Reset() { *m = Evidence{} }
|
||||
func (m *Evidence) String() string { return proto.CompactTextString(m) }
|
||||
func (*Evidence) ProtoMessage() {}
|
||||
func (*Evidence) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29} }
|
||||
|
||||
func (m *Evidence) GetPubKey() []byte {
|
||||
if m != nil {
|
||||
return m.PubKey
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Evidence) GetHeight() int64 {
|
||||
if m != nil {
|
||||
return m.Height
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type KVPair struct {
|
||||
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
|
||||
ValueType KVPair_Type `protobuf:"varint,2,opt,name=value_type,json=valueType,proto3,enum=types.KVPair_Type" json:"value_type,omitempty"`
|
||||
|
@ -1546,7 +1587,7 @@ type KVPair struct {
|
|||
func (m *KVPair) Reset() { *m = KVPair{} }
|
||||
func (m *KVPair) String() string { return proto.CompactTextString(m) }
|
||||
func (*KVPair) ProtoMessage() {}
|
||||
func (*KVPair) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29} }
|
||||
func (*KVPair) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{30} }
|
||||
|
||||
func (m *KVPair) GetKey() string {
|
||||
if m != nil {
|
||||
|
@ -1606,6 +1647,7 @@ func init() {
|
|||
proto.RegisterType((*BlockID)(nil), "types.BlockID")
|
||||
proto.RegisterType((*PartSetHeader)(nil), "types.PartSetHeader")
|
||||
proto.RegisterType((*Validator)(nil), "types.Validator")
|
||||
proto.RegisterType((*Evidence)(nil), "types.Evidence")
|
||||
proto.RegisterType((*KVPair)(nil), "types.KVPair")
|
||||
proto.RegisterEnum("types.KVPair_Type", KVPair_Type_name, KVPair_Type_value)
|
||||
}
|
||||
|
@ -2015,98 +2057,102 @@ var _ABCIApplication_serviceDesc = grpc.ServiceDesc{
|
|||
func init() { proto.RegisterFile("types/types.proto", fileDescriptorTypes) }
|
||||
|
||||
var fileDescriptorTypes = []byte{
|
||||
// 1485 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x8e, 0x13, 0x47,
|
||||
0x10, 0x5e, 0xdb, 0xe3, 0xbf, 0xf2, 0xfe, 0x98, 0x66, 0x03, 0xc6, 0x1c, 0x80, 0x91, 0x08, 0xbb,
|
||||
0x04, 0xd6, 0x64, 0x11, 0x11, 0x1b, 0xa2, 0x48, 0x6b, 0x16, 0x62, 0x0b, 0x89, 0x90, 0x61, 0xc5,
|
||||
0xd5, 0x1a, 0x7b, 0xda, 0xf6, 0x08, 0x7b, 0x66, 0x98, 0x69, 0x2f, 0x5e, 0x29, 0x8f, 0xc0, 0x3d,
|
||||
0xe7, 0xe4, 0x12, 0x29, 0x2f, 0x90, 0x37, 0x88, 0xf2, 0x0c, 0x39, 0xf0, 0x2c, 0x51, 0x55, 0xf7,
|
||||
0xfc, 0xee, 0x0c, 0x07, 0x0e, 0x5c, 0x56, 0x5d, 0x5d, 0xf5, 0xb5, 0xab, 0x7a, 0xaa, 0xbf, 0xaa,
|
||||
0x5a, 0xb8, 0x24, 0xce, 0x3d, 0x1e, 0xf4, 0xe8, 0xef, 0x81, 0xe7, 0xbb, 0xc2, 0x65, 0x55, 0x12,
|
||||
0xba, 0xf7, 0x67, 0xb6, 0x98, 0xaf, 0xc6, 0x07, 0x13, 0x77, 0xd9, 0x9b, 0xb9, 0x33, 0xb7, 0x47,
|
||||
0xda, 0xf1, 0x6a, 0x4a, 0x12, 0x09, 0xb4, 0x92, 0x28, 0xfd, 0x1f, 0x0d, 0xea, 0x06, 0x7f, 0xb7,
|
||||
0xe2, 0x81, 0x60, 0x7b, 0xa0, 0xf1, 0xc9, 0xdc, 0xed, 0x94, 0x6e, 0x96, 0xf6, 0x5a, 0x87, 0xec,
|
||||
0x40, 0x9e, 0xae, 0xb4, 0xcf, 0x26, 0x73, 0x77, 0xb0, 0x61, 0x90, 0x05, 0xfb, 0x06, 0xaa, 0xd3,
|
||||
0xc5, 0x2a, 0x98, 0x77, 0xca, 0x64, 0x7a, 0x39, 0x6d, 0xfa, 0x1c, 0x55, 0x83, 0x0d, 0x43, 0xda,
|
||||
0xe0, 0xb1, 0xb6, 0x33, 0x75, 0x3b, 0x95, 0xbc, 0x63, 0x87, 0xce, 0x94, 0x8e, 0x45, 0x0b, 0xf6,
|
||||
0x18, 0x20, 0xe0, 0x62, 0xe4, 0x7a, 0xc2, 0x76, 0x9d, 0x8e, 0x46, 0xf6, 0x57, 0xd3, 0xf6, 0xaf,
|
||||
0xb9, 0xf8, 0x99, 0xd4, 0x83, 0x0d, 0xa3, 0x19, 0x84, 0x02, 0x22, 0x2d, 0xbe, 0xb0, 0xcf, 0xb8,
|
||||
0x3f, 0x12, 0xeb, 0x4e, 0x35, 0x0f, 0x79, 0x22, 0xf5, 0xa7, 0x6b, 0x44, 0x5a, 0xa1, 0xc0, 0x0e,
|
||||
0xa1, 0x31, 0x99, 0xf3, 0xc9, 0x5b, 0xc4, 0xd5, 0x08, 0xf7, 0x55, 0x1a, 0xf7, 0x14, 0xb5, 0x84,
|
||||
0xaa, 0x4f, 0xe4, 0x92, 0x1d, 0x40, 0x6d, 0xe2, 0x2e, 0x97, 0xb6, 0xe8, 0xd4, 0x09, 0xb1, 0x9b,
|
||||
0x41, 0x90, 0x6e, 0xb0, 0x61, 0x28, 0x2b, 0xbc, 0xae, 0x77, 0x2b, 0xee, 0x9f, 0x77, 0x1a, 0x79,
|
||||
0xd7, 0xf5, 0x0b, 0xaa, 0xf0, 0xba, 0xc8, 0x06, 0x43, 0xb1, 0x1d, 0x5b, 0x8c, 0x26, 0x73, 0xd3,
|
||||
0x76, 0x3a, 0xcd, 0xbc, 0x50, 0x86, 0x8e, 0x2d, 0x9e, 0xa2, 0x1a, 0x43, 0xb1, 0x43, 0x81, 0x3d,
|
||||
0x81, 0xd6, 0x98, 0xcf, 0x6c, 0x67, 0x34, 0x5e, 0xb8, 0x93, 0xb7, 0x1d, 0x20, 0x68, 0x27, 0x0d,
|
||||
0xed, 0xa3, 0x41, 0x1f, 0xf5, 0x83, 0x0d, 0x03, 0xc6, 0x91, 0xc4, 0x1e, 0x41, 0x93, 0x3b, 0x96,
|
||||
0x82, 0xb6, 0x08, 0x7a, 0x25, 0x93, 0x01, 0x8e, 0x15, 0x02, 0x1b, 0x5c, 0xad, 0xfb, 0x75, 0xa8,
|
||||
0x9e, 0x99, 0x8b, 0x15, 0xd7, 0xef, 0x40, 0x2b, 0x91, 0x29, 0xac, 0x03, 0xf5, 0x25, 0x0f, 0x02,
|
||||
0x73, 0xc6, 0x29, 0x9d, 0x9a, 0x46, 0x28, 0xea, 0xdb, 0xb0, 0x99, 0xcc, 0x93, 0x04, 0x10, 0x73,
|
||||
0x01, 0x81, 0x67, 0xdc, 0x0f, 0x30, 0x01, 0x14, 0x50, 0x89, 0xfa, 0xf7, 0xd0, 0xce, 0x26, 0x01,
|
||||
0x6b, 0x43, 0xe5, 0x2d, 0x3f, 0x57, 0x96, 0xb8, 0x64, 0xbb, 0xca, 0x21, 0x4a, 0xcd, 0xa6, 0xa1,
|
||||
0xbc, 0xd3, 0x23, 0x6c, 0x94, 0x06, 0x6c, 0x1b, 0xca, 0x62, 0x4d, 0xd0, 0x4d, 0xa3, 0x2c, 0xd6,
|
||||
0xfa, 0x4d, 0xd8, 0x4e, 0x7f, 0xf2, 0x0b, 0x16, 0x56, 0xe4, 0x3a, 0x7d, 0x33, 0xc6, 0x40, 0xb3,
|
||||
0x4c, 0x61, 0x2a, 0x0b, 0x5a, 0xe3, 0x9e, 0x67, 0x8a, 0xb9, 0xfa, 0x79, 0x5a, 0xb3, 0x2b, 0x50,
|
||||
0x9b, 0x73, 0x7b, 0x36, 0x17, 0xf4, 0x06, 0x34, 0x43, 0x49, 0xe8, 0xab, 0xe7, 0xbb, 0x67, 0x9c,
|
||||
0x52, 0xbd, 0x61, 0x48, 0x41, 0xdf, 0x81, 0xad, 0x54, 0x22, 0xe9, 0x27, 0x91, 0xf3, 0xd1, 0x87,
|
||||
0x67, 0x0f, 0x00, 0xce, 0xcc, 0x85, 0x6d, 0x99, 0xc2, 0xf5, 0x83, 0x4e, 0xe9, 0x66, 0x65, 0xaf,
|
||||
0x75, 0xd8, 0x56, 0xdf, 0xeb, 0x4d, 0xa8, 0x30, 0x12, 0x36, 0xfa, 0x4b, 0xb8, 0x74, 0x21, 0x07,
|
||||
0xd0, 0xdb, 0xb9, 0x19, 0xcc, 0xc3, 0x08, 0x70, 0xcd, 0x6e, 0xa3, 0xb7, 0xa6, 0xc5, 0x7d, 0xf5,
|
||||
0xba, 0xb7, 0xd4, 0xb1, 0x03, 0xda, 0x34, 0x94, 0x52, 0xdf, 0x87, 0x9d, 0x4c, 0x62, 0x24, 0xe2,
|
||||
0x2c, 0x25, 0xe3, 0xd4, 0x3f, 0x54, 0xa1, 0x61, 0xf0, 0xc0, 0x73, 0x9d, 0x80, 0xb3, 0xc7, 0xd0,
|
||||
0xe4, 0xeb, 0x09, 0x97, 0x6f, 0xbc, 0x94, 0xc9, 0x51, 0x69, 0xf3, 0x2c, 0xd4, 0x63, 0x7e, 0x47,
|
||||
0xc6, 0x6c, 0x5f, 0xf1, 0x53, 0x96, 0x74, 0x14, 0x28, 0x49, 0x50, 0xf7, 0x42, 0x82, 0xaa, 0x64,
|
||||
0x1e, 0xa8, 0xb4, 0xcd, 0x30, 0xd4, 0xbe, 0x62, 0x28, 0x2d, 0xf7, 0xe0, 0x14, 0x45, 0x1d, 0xa5,
|
||||
0x28, 0xaa, 0x9a, 0xeb, 0x7e, 0x01, 0x47, 0x1d, 0xa5, 0x38, 0xaa, 0x96, 0x0b, 0x2d, 0x20, 0xa9,
|
||||
0x87, 0x09, 0x92, 0xaa, 0x67, 0xde, 0xa6, 0x04, 0xe6, 0xb0, 0x54, 0x2f, 0x62, 0xa9, 0x46, 0x86,
|
||||
0xd7, 0x14, 0x24, 0x4b, 0x53, 0xf7, 0x42, 0x9a, 0x6a, 0xe6, 0x5e, 0x5a, 0x86, 0xa7, 0x8e, 0x52,
|
||||
0x3c, 0x05, 0xb9, 0xe1, 0x14, 0x10, 0xd5, 0x0f, 0x69, 0xa2, 0x92, 0x6c, 0x73, 0x2d, 0x83, 0x2d,
|
||||
0x64, 0xaa, 0xef, 0x92, 0x4c, 0xb5, 0x99, 0xe1, 0x47, 0x95, 0x0b, 0x9f, 0xa4, 0xaa, 0x7d, 0x7c,
|
||||
0x09, 0x99, 0x4c, 0xc3, 0xb7, 0xc8, 0x7d, 0xdf, 0xf5, 0x15, 0x97, 0x48, 0x41, 0xdf, 0xc3, 0x17,
|
||||
0x1f, 0xe7, 0xd7, 0x27, 0x68, 0x8d, 0x5e, 0x6d, 0x22, 0xbb, 0xf4, 0xdf, 0x4a, 0x31, 0x96, 0x98,
|
||||
0x2d, 0xc9, 0x16, 0x4d, 0xc5, 0x16, 0x09, 0xb6, 0x2b, 0xa7, 0xd8, 0x8e, 0xdd, 0x85, 0x4b, 0x0b,
|
||||
0x33, 0x10, 0x32, 0xcc, 0x51, 0x8a, 0x3e, 0x76, 0x50, 0x21, 0xe3, 0x93, 0x3c, 0x72, 0x1f, 0x2e,
|
||||
0x27, 0x6c, 0x4d, 0xcf, 0x1b, 0xd1, 0xa3, 0xd6, 0xe8, 0x51, 0xb7, 0x23, 0xeb, 0x63, 0xcf, 0x1b,
|
||||
0x98, 0xc1, 0x5c, 0xbf, 0x1d, 0xc7, 0x9f, 0x62, 0xd2, 0x85, 0x3b, 0x0b, 0x99, 0x74, 0xe1, 0xce,
|
||||
0xf4, 0x3f, 0x4a, 0xb1, 0x5d, 0xcc, 0x9a, 0x0c, 0xb4, 0x89, 0x6b, 0xc9, 0xf0, 0xb7, 0x0c, 0x5a,
|
||||
0xb3, 0x13, 0x15, 0x19, 0x86, 0xb0, 0xd9, 0x7f, 0xf0, 0xef, 0xc7, 0x1b, 0x1b, 0xff, 0x7d, 0xbc,
|
||||
0xb1, 0x97, 0xe8, 0x44, 0x04, 0x77, 0x2c, 0xee, 0x2f, 0x6d, 0x47, 0xf4, 0x66, 0xee, 0xfd, 0xf7,
|
||||
0xb6, 0xcf, 0x7b, 0x88, 0x38, 0xe8, 0x9f, 0x0b, 0x1e, 0xa8, 0xbb, 0x50, 0x1e, 0x54, 0x22, 0x0f,
|
||||
0xd8, 0x2d, 0xd0, 0x84, 0x39, 0x0b, 0x3a, 0x1a, 0xd1, 0x5b, 0xc8, 0x43, 0x2f, 0xde, 0xbc, 0x32,
|
||||
0x6d, 0xdf, 0x20, 0x95, 0xfe, 0x7b, 0x09, 0x69, 0x28, 0xf5, 0x06, 0xbe, 0xa8, 0x8b, 0x6d, 0xa8,
|
||||
0xcc, 0xcc, 0x80, 0xae, 0x5a, 0x33, 0x70, 0x89, 0x3b, 0x53, 0xce, 0x89, 0x1a, 0x34, 0x03, 0x97,
|
||||
0xfa, 0xdf, 0xe5, 0x38, 0x37, 0xa2, 0xc2, 0x71, 0xc1, 0xc3, 0x5d, 0xa8, 0xda, 0x8e, 0xc5, 0xd7,
|
||||
0xe4, 0x62, 0xc5, 0x90, 0x02, 0xeb, 0xcb, 0x02, 0x57, 0xf9, 0x4c, 0xb7, 0xa9, 0x24, 0x3e, 0x0f,
|
||||
0x4b, 0xa2, 0xf6, 0x99, 0xa7, 0x48, 0x38, 0x9e, 0xe3, 0xf9, 0xae, 0x3b, 0xa5, 0xd8, 0x3e, 0xeb,
|
||||
0x1c, 0x82, 0x27, 0xca, 0x44, 0x2d, 0x55, 0x0e, 0xd5, 0xed, 0xd6, 0xe3, 0x14, 0xfc, 0x15, 0x4b,
|
||||
0x72, 0x92, 0xad, 0xbe, 0xe4, 0xb7, 0xd5, 0x2f, 0xc7, 0xf9, 0x1f, 0x11, 0x99, 0xbe, 0x0b, 0xec,
|
||||
0x22, 0x43, 0xc9, 0xde, 0x24, 0xcd, 0x3d, 0xec, 0x6b, 0xa8, 0x5a, 0xf6, 0x74, 0x5a, 0x5c, 0x9d,
|
||||
0xa5, 0x5a, 0xff, 0xb3, 0x0c, 0x35, 0x59, 0x5b, 0xd9, 0x35, 0xe4, 0x79, 0xd3, 0x76, 0x46, 0xb6,
|
||||
0x15, 0xf2, 0x0b, 0xc9, 0x43, 0x2b, 0x71, 0x69, 0xe5, 0xd4, 0xa5, 0x31, 0xd0, 0x84, 0xbd, 0xe4,
|
||||
0x8a, 0x1a, 0x68, 0xcd, 0xae, 0x42, 0xdd, 0x59, 0x2d, 0x47, 0x62, 0x1d, 0x26, 0x66, 0xcd, 0x59,
|
||||
0x2d, 0x4f, 0xd7, 0x01, 0x3b, 0x84, 0xad, 0x04, 0x51, 0xd8, 0x96, 0x2a, 0x60, 0xdb, 0xca, 0x35,
|
||||
0xf2, 0x7b, 0x78, 0x62, 0xb4, 0x22, 0xca, 0x18, 0x5a, 0x6c, 0x0f, 0x88, 0x41, 0x46, 0xb2, 0x48,
|
||||
0x48, 0x66, 0xa9, 0x11, 0xb3, 0x6c, 0xe3, 0xbe, 0xaa, 0x22, 0xd8, 0x38, 0x5c, 0x87, 0x26, 0xde,
|
||||
0xa4, 0x34, 0xa9, 0x93, 0x49, 0x03, 0x37, 0x48, 0x79, 0x07, 0x76, 0xe2, 0x66, 0x44, 0x9a, 0x34,
|
||||
0xe4, 0x29, 0xf1, 0x36, 0x19, 0x5e, 0x83, 0x46, 0xc4, 0x60, 0x4d, 0xb2, 0xa8, 0x9b, 0x8a, 0xb8,
|
||||
0x86, 0x50, 0x57, 0x2e, 0xe6, 0x36, 0x2e, 0x77, 0xa1, 0xea, 0x99, 0xbe, 0x08, 0x54, 0x83, 0x10,
|
||||
0xd6, 0xaf, 0x57, 0xa6, 0x8f, 0x1d, 0xa3, 0x6a, 0x5f, 0xa4, 0x89, 0x7e, 0x04, 0x5b, 0xa9, 0x7d,
|
||||
0x7c, 0x7e, 0xc2, 0x15, 0xe6, 0x42, 0xb5, 0x2e, 0x52, 0x88, 0x7e, 0xa6, 0x1c, 0xff, 0x8c, 0x7e,
|
||||
0x04, 0xcd, 0xe8, 0x1b, 0xe2, 0x67, 0xf1, 0x56, 0xe3, 0x17, 0xaa, 0x07, 0xdd, 0x34, 0x94, 0x44,
|
||||
0xad, 0x9d, 0xfb, 0x5e, 0xf5, 0x50, 0x9a, 0x21, 0x05, 0xfd, 0xaf, 0x12, 0xd4, 0x24, 0x7d, 0xe5,
|
||||
0x74, 0xae, 0xdf, 0x52, 0x4b, 0xb7, 0xe2, 0x23, 0x74, 0x9b, 0x70, 0xdb, 0xd1, 0xb4, 0x24, 0x41,
|
||||
0x07, 0xa7, 0xe7, 0x1e, 0x37, 0x9a, 0x64, 0x85, 0x4b, 0x76, 0x0b, 0x36, 0x25, 0x24, 0x10, 0xbe,
|
||||
0xed, 0x84, 0xc9, 0xdb, 0xa2, 0xbd, 0xd7, 0xb4, 0x85, 0x1f, 0x45, 0x9a, 0xd8, 0x8e, 0xa0, 0x6c,
|
||||
0xa8, 0x18, 0x0d, 0xda, 0x18, 0x3a, 0x42, 0xbf, 0x0e, 0x1a, 0x9d, 0x03, 0x50, 0x7b, 0x7d, 0x6a,
|
||||
0x0c, 0x5f, 0xfe, 0xd4, 0xde, 0x60, 0x75, 0xa8, 0x0c, 0x5f, 0x9e, 0xb6, 0x4b, 0x87, 0x1f, 0xaa,
|
||||
0xb0, 0x73, 0xdc, 0x7f, 0x3a, 0x3c, 0xf6, 0xbc, 0x85, 0x3d, 0x31, 0xa9, 0x4a, 0xf4, 0x40, 0xa3,
|
||||
0x3a, 0x98, 0x33, 0x1c, 0x76, 0xf3, 0x1a, 0x32, 0x76, 0x08, 0x55, 0x2a, 0x87, 0x2c, 0x6f, 0x46,
|
||||
0xec, 0xe6, 0xf6, 0x65, 0xf8, 0x23, 0xb2, 0x60, 0x5e, 0x1c, 0x15, 0xbb, 0x79, 0xcd, 0x19, 0xfb,
|
||||
0x11, 0x9a, 0x71, 0x21, 0x2b, 0x1a, 0x18, 0xbb, 0x85, 0x6d, 0x1a, 0xe2, 0xe3, 0x02, 0x57, 0x34,
|
||||
0x36, 0x76, 0x0b, 0x7b, 0x35, 0xf6, 0x18, 0xea, 0x61, 0xed, 0xc9, 0x1f, 0x1e, 0xbb, 0x05, 0xed,
|
||||
0x1a, 0x5e, 0x8f, 0xac, 0x08, 0x79, 0x33, 0x61, 0x37, 0xb7, 0x03, 0x63, 0x8f, 0xa0, 0xa6, 0xc8,
|
||||
0x30, 0x77, 0xee, 0xec, 0xe6, 0xf7, 0x79, 0x18, 0x64, 0x3c, 0x3e, 0x14, 0x0d, 0x94, 0xdd, 0xc2,
|
||||
0x0e, 0x8e, 0x1d, 0x03, 0x24, 0x06, 0x87, 0xc2, 0xb1, 0xb2, 0x5b, 0xdc, 0xc7, 0xb1, 0x27, 0xd0,
|
||||
0x88, 0x67, 0x85, 0xfc, 0xe1, 0xb2, 0x5b, 0xd4, 0xca, 0x8d, 0x6b, 0xf4, 0x0f, 0x8b, 0x87, 0xff,
|
||||
0x07, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xbb, 0x93, 0x98, 0xfb, 0x10, 0x00, 0x00,
|
||||
// 1551 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x98, 0xcb, 0x8e, 0x13, 0x47,
|
||||
0x17, 0xc7, 0x6d, 0xb7, 0xaf, 0xc7, 0x73, 0xf1, 0xd4, 0xcc, 0x07, 0xc6, 0x2c, 0x18, 0x5a, 0xe2,
|
||||
0xc3, 0xc3, 0x65, 0xcc, 0x37, 0x88, 0x4f, 0x0c, 0x44, 0x91, 0xc6, 0x0c, 0xc4, 0x16, 0x12, 0x21,
|
||||
0xcd, 0x88, 0xad, 0xd5, 0x76, 0x97, 0xed, 0x12, 0x76, 0x77, 0xd3, 0x5d, 0x1e, 0x3c, 0x51, 0x1e,
|
||||
0x81, 0x7d, 0xd6, 0xc9, 0x26, 0x52, 0x5e, 0x20, 0xcb, 0xec, 0xa2, 0x3c, 0x43, 0x16, 0x3c, 0x4b,
|
||||
0x54, 0xa7, 0xaa, 0xaf, 0xd3, 0xcd, 0x82, 0x05, 0x9b, 0x51, 0x5d, 0xce, 0xbf, 0x7c, 0xaa, 0xfa,
|
||||
0xd4, 0xef, 0x9c, 0x1a, 0xd8, 0xe1, 0x17, 0x2e, 0xf5, 0x7b, 0xf8, 0xf7, 0xd0, 0xf5, 0x1c, 0xee,
|
||||
0x90, 0x0a, 0x76, 0x3a, 0xf7, 0x67, 0x8c, 0xcf, 0x57, 0xe3, 0xc3, 0x89, 0xb3, 0xec, 0xcd, 0x9c,
|
||||
0x99, 0xd3, 0xc3, 0xd9, 0xf1, 0x6a, 0x8a, 0x3d, 0xec, 0x60, 0x4b, 0xaa, 0xf4, 0xbf, 0xca, 0x50,
|
||||
0x33, 0xe8, 0xfb, 0x15, 0xf5, 0x39, 0xe9, 0x42, 0x99, 0x4e, 0xe6, 0x4e, 0xbb, 0xb8, 0x5f, 0xec,
|
||||
0x36, 0x8f, 0xc8, 0xa1, 0x5c, 0x5d, 0xcd, 0x3e, 0x9f, 0xcc, 0x9d, 0x41, 0xc1, 0x40, 0x0b, 0x72,
|
||||
0x17, 0x2a, 0xd3, 0xc5, 0xca, 0x9f, 0xb7, 0x4b, 0x68, 0xba, 0x9b, 0x34, 0x7d, 0x21, 0xa6, 0x06,
|
||||
0x05, 0x43, 0xda, 0x88, 0x65, 0x99, 0x3d, 0x75, 0xda, 0x5a, 0xd6, 0xb2, 0x43, 0x7b, 0x8a, 0xcb,
|
||||
0x0a, 0x0b, 0xf2, 0x18, 0xc0, 0xa7, 0x7c, 0xe4, 0xb8, 0x9c, 0x39, 0x76, 0xbb, 0x8c, 0xf6, 0x57,
|
||||
0x93, 0xf6, 0x6f, 0x28, 0xff, 0x1e, 0xa7, 0x07, 0x05, 0xa3, 0xe1, 0x07, 0x1d, 0xa1, 0xb4, 0xe8,
|
||||
0x82, 0x9d, 0x53, 0x6f, 0xc4, 0xd7, 0xed, 0x4a, 0x96, 0xf2, 0x54, 0xce, 0x9f, 0xad, 0x85, 0xd2,
|
||||
0x0a, 0x3a, 0xe4, 0x08, 0xea, 0x93, 0x39, 0x9d, 0xbc, 0x13, 0xba, 0x2a, 0xea, 0xfe, 0x93, 0xd4,
|
||||
0x3d, 0x13, 0xb3, 0xa8, 0xaa, 0x4d, 0x64, 0x93, 0x1c, 0x42, 0x75, 0xe2, 0x2c, 0x97, 0x8c, 0xb7,
|
||||
0x6b, 0xa8, 0xd8, 0x4b, 0x29, 0x70, 0x6e, 0x50, 0x30, 0x94, 0x95, 0x38, 0xae, 0xf7, 0x2b, 0xea,
|
||||
0x5d, 0xb4, 0xeb, 0x59, 0xc7, 0xf5, 0x83, 0x98, 0x12, 0xc7, 0x85, 0x36, 0x62, 0x2b, 0xcc, 0x66,
|
||||
0x7c, 0x34, 0x99, 0x9b, 0xcc, 0x6e, 0x37, 0xb2, 0xb6, 0x32, 0xb4, 0x19, 0x7f, 0x26, 0xa6, 0xc5,
|
||||
0x56, 0x58, 0xd0, 0x21, 0x4f, 0xa1, 0x39, 0xa6, 0x33, 0x66, 0x8f, 0xc6, 0x0b, 0x67, 0xf2, 0xae,
|
||||
0x0d, 0x28, 0x6d, 0x27, 0xa5, 0x7d, 0x61, 0xd0, 0x17, 0xf3, 0x83, 0x82, 0x01, 0xe3, 0xb0, 0x47,
|
||||
0x1e, 0x41, 0x83, 0xda, 0x96, 0x92, 0x36, 0x51, 0x7a, 0x25, 0x15, 0x01, 0xb6, 0x15, 0x08, 0xeb,
|
||||
0x54, 0xb5, 0xfb, 0x35, 0xa8, 0x9c, 0x9b, 0x8b, 0x15, 0xd5, 0x6f, 0x43, 0x33, 0x16, 0x29, 0xa4,
|
||||
0x0d, 0xb5, 0x25, 0xf5, 0x7d, 0x73, 0x46, 0x31, 0x9c, 0x1a, 0x46, 0xd0, 0xd5, 0xb7, 0x60, 0x23,
|
||||
0x1e, 0x27, 0x31, 0xa1, 0x88, 0x05, 0x21, 0x3c, 0xa7, 0x9e, 0x2f, 0x02, 0x40, 0x09, 0x55, 0x57,
|
||||
0x7f, 0x02, 0xad, 0x74, 0x10, 0x90, 0x16, 0x68, 0xef, 0xe8, 0x85, 0xb2, 0x14, 0x4d, 0xb2, 0xa7,
|
||||
0x1c, 0xc2, 0xd0, 0x6c, 0x18, 0xca, 0x3b, 0x3d, 0xd4, 0x86, 0x61, 0x40, 0xb6, 0xa0, 0xc4, 0xd7,
|
||||
0x28, 0xdd, 0x30, 0x4a, 0x7c, 0xad, 0xef, 0xc3, 0x56, 0xf2, 0x93, 0x5f, 0xb2, 0xb0, 0x42, 0xd7,
|
||||
0xf1, 0x9b, 0x11, 0x02, 0x65, 0xcb, 0xe4, 0xa6, 0xb2, 0xc0, 0xb6, 0x18, 0x73, 0x4d, 0x3e, 0x57,
|
||||
0x3f, 0x8f, 0x6d, 0x72, 0x05, 0xaa, 0x73, 0xca, 0x66, 0x73, 0x8e, 0x77, 0x40, 0x33, 0x54, 0x4f,
|
||||
0xf8, 0xea, 0x7a, 0xce, 0x39, 0xc5, 0x50, 0xaf, 0x1b, 0xb2, 0xa3, 0x6f, 0xc3, 0x66, 0x22, 0x90,
|
||||
0xf4, 0xd3, 0xd0, 0xf9, 0xf0, 0xc3, 0x93, 0x07, 0x00, 0xe7, 0xe6, 0x82, 0x59, 0x26, 0x77, 0x3c,
|
||||
0xbf, 0x5d, 0xdc, 0xd7, 0xba, 0xcd, 0xa3, 0x96, 0xfa, 0x5e, 0x6f, 0x83, 0x09, 0x23, 0x66, 0xa3,
|
||||
0xff, 0x59, 0x84, 0x9d, 0x4b, 0x41, 0x20, 0xdc, 0x9d, 0x9b, 0xfe, 0x3c, 0xd8, 0x82, 0x68, 0x93,
|
||||
0x5b, 0xc2, 0x5d, 0xd3, 0xa2, 0x9e, 0xba, 0xde, 0x9b, 0x6a, 0xdd, 0x01, 0x0e, 0x1a, 0x6a, 0x92,
|
||||
0xdc, 0x85, 0x1d, 0x73, 0xec, 0x53, 0x9b, 0x8f, 0x62, 0x9e, 0x68, 0xfb, 0x5a, 0xb7, 0x62, 0xb4,
|
||||
0xe4, 0x44, 0xe8, 0x88, 0x4f, 0xfa, 0xb0, 0x37, 0xbe, 0xf8, 0xd1, 0xb4, 0x39, 0xb3, 0x69, 0xdc,
|
||||
0xbe, 0x8c, 0x9e, 0x6f, 0xab, 0x5f, 0x78, 0x7e, 0xce, 0x2c, 0x6a, 0x4f, 0xa8, 0xb1, 0x1b, 0x1a,
|
||||
0x47, 0x6b, 0xe8, 0x07, 0xb0, 0x9d, 0x0a, 0xc5, 0xd8, 0xc9, 0x16, 0xe3, 0x27, 0xab, 0x7f, 0xac,
|
||||
0x40, 0xdd, 0xa0, 0xbe, 0xeb, 0xd8, 0x3e, 0x25, 0x8f, 0xa1, 0x41, 0xd7, 0x13, 0x2a, 0xa9, 0x52,
|
||||
0x4c, 0xdd, 0x0a, 0x69, 0xf3, 0x3c, 0x98, 0x17, 0x37, 0x2a, 0x34, 0x26, 0x07, 0x8a, 0x88, 0x69,
|
||||
0xcc, 0x29, 0x51, 0x1c, 0x89, 0xf7, 0x02, 0x24, 0x6a, 0x29, 0x24, 0x48, 0xdb, 0x14, 0x13, 0x0f,
|
||||
0x14, 0x13, 0xcb, 0x99, 0x0b, 0x27, 0xa0, 0x78, 0x9c, 0x80, 0x62, 0x25, 0xd3, 0xfd, 0x1c, 0x2a,
|
||||
0x1e, 0x27, 0xa8, 0x58, 0xcd, 0x94, 0xe6, 0x60, 0xf1, 0x61, 0x0c, 0x8b, 0xb5, 0x14, 0x0d, 0xa4,
|
||||
0x30, 0x83, 0x8b, 0xbd, 0x90, 0x8b, 0xf5, 0x14, 0x49, 0x95, 0x24, 0x0d, 0xc6, 0x7b, 0x01, 0x18,
|
||||
0x1b, 0x99, 0x87, 0x96, 0x22, 0xe3, 0x71, 0x82, 0x8c, 0x90, 0xb9, 0x9d, 0x1c, 0x34, 0x7e, 0x93,
|
||||
0x44, 0xa3, 0xe4, 0xdb, 0xb5, 0x94, 0x36, 0x97, 0x8d, 0xff, 0x8f, 0xb3, 0x71, 0x23, 0x45, 0x64,
|
||||
0x15, 0x0b, 0x9f, 0x85, 0xe3, 0x81, 0xb8, 0x7a, 0xa9, 0x48, 0x13, 0xb7, 0x9f, 0x7a, 0x9e, 0xe3,
|
||||
0x29, 0x7a, 0xc9, 0x8e, 0xde, 0x15, 0x8c, 0x89, 0xe2, 0xeb, 0x33, 0x20, 0x45, 0x4e, 0xc4, 0xa2,
|
||||
0x4b, 0xff, 0xb9, 0x18, 0x69, 0x91, 0xa5, 0x71, 0x3e, 0x35, 0x14, 0x9f, 0x62, 0x7c, 0x2d, 0x25,
|
||||
0xf8, 0x4a, 0xee, 0xc0, 0xce, 0xc2, 0xf4, 0xb9, 0xdc, 0xe6, 0x28, 0x01, 0xac, 0x6d, 0x31, 0x21,
|
||||
0xf7, 0x27, 0xc9, 0x75, 0x1f, 0x76, 0x63, 0xb6, 0xa6, 0xeb, 0x8e, 0x90, 0x22, 0x65, 0xa4, 0x48,
|
||||
0x2b, 0xb4, 0x3e, 0x71, 0xdd, 0x81, 0xe9, 0xcf, 0xf5, 0x5b, 0xd1, 0xfe, 0x13, 0xec, 0x5e, 0x38,
|
||||
0xb3, 0x80, 0xdd, 0x0b, 0x67, 0xa6, 0xff, 0x5a, 0x8c, 0xec, 0x22, 0x4e, 0x13, 0x28, 0x4f, 0x1c,
|
||||
0x4b, 0x6e, 0x7f, 0xd3, 0xc0, 0x36, 0x39, 0x55, 0x3b, 0x13, 0x5b, 0xd8, 0xe8, 0x3f, 0xf8, 0xfb,
|
||||
0xd3, 0x8d, 0xc2, 0x3f, 0x9f, 0x6e, 0x74, 0x63, 0xb5, 0x0f, 0xa7, 0xb6, 0x45, 0xbd, 0x25, 0xb3,
|
||||
0x79, 0x6f, 0xe6, 0xdc, 0xff, 0xc0, 0x3c, 0xda, 0x13, 0x8a, 0xc3, 0xfe, 0x05, 0xa7, 0xbe, 0x3a,
|
||||
0x0b, 0xe5, 0x81, 0x16, 0x7a, 0x40, 0x6e, 0x42, 0x99, 0x9b, 0xb3, 0x00, 0x4b, 0x01, 0xf8, 0x5e,
|
||||
0xbe, 0x7d, 0x6d, 0x32, 0xcf, 0xc0, 0x29, 0xfd, 0x97, 0xa2, 0xc0, 0x50, 0xe2, 0x0e, 0x7c, 0x55,
|
||||
0x17, 0x5b, 0xa0, 0xcd, 0x4c, 0x1f, 0x8f, 0x5a, 0x33, 0x44, 0x53, 0x8c, 0x4c, 0x29, 0x45, 0x34,
|
||||
0x68, 0x86, 0x68, 0xea, 0x7f, 0x94, 0xa2, 0xd8, 0x08, 0x53, 0xd5, 0x25, 0x0f, 0xf7, 0xa0, 0xc2,
|
||||
0x6c, 0x8b, 0xae, 0xd1, 0x45, 0xcd, 0x90, 0x1d, 0xd2, 0x97, 0x29, 0x55, 0xfb, 0x42, 0xb7, 0x31,
|
||||
0x09, 0xbf, 0x08, 0x92, 0x70, 0xf9, 0x0b, 0x57, 0x91, 0x72, 0xb1, 0x8e, 0xeb, 0x39, 0xce, 0x14,
|
||||
0xf7, 0xf6, 0x45, 0xeb, 0xa0, 0x3c, 0x96, 0x26, 0xaa, 0x89, 0x04, 0xac, 0x4e, 0xb7, 0x16, 0x85,
|
||||
0xe0, 0x4f, 0xa2, 0x08, 0x88, 0xd3, 0xea, 0x6b, 0x7e, 0x5b, 0x7d, 0x37, 0x8a, 0xff, 0x10, 0x64,
|
||||
0xfa, 0x1e, 0x90, 0xcb, 0x84, 0x92, 0xd5, 0x50, 0x92, 0x3d, 0xe4, 0xbf, 0x50, 0xb1, 0xd8, 0x74,
|
||||
0x9a, 0x5f, 0x0f, 0xc8, 0x69, 0xfd, 0xb7, 0x12, 0x54, 0x65, 0x32, 0x27, 0xd7, 0x04, 0xe7, 0x4d,
|
||||
0x66, 0x8f, 0x98, 0x15, 0xf0, 0x05, 0xfb, 0x43, 0x2b, 0x76, 0x68, 0xa5, 0xc4, 0xa1, 0x11, 0x28,
|
||||
0x73, 0xb6, 0xa4, 0x0a, 0x0d, 0xd8, 0x26, 0x57, 0xa1, 0x66, 0xaf, 0x96, 0x23, 0xbe, 0x0e, 0x02,
|
||||
0xb3, 0x6a, 0xaf, 0x96, 0x67, 0x6b, 0x9f, 0x1c, 0xc1, 0x66, 0x0c, 0x14, 0xcc, 0x52, 0x09, 0x6c,
|
||||
0x4b, 0xb9, 0x86, 0x7e, 0x0f, 0x4f, 0x8d, 0x66, 0x88, 0x8c, 0xa1, 0x45, 0xba, 0x80, 0x04, 0x19,
|
||||
0xc9, 0x24, 0x21, 0xc9, 0x52, 0x45, 0xb2, 0x6c, 0x89, 0x71, 0x95, 0x45, 0x44, 0xa5, 0x72, 0x1d,
|
||||
0x1a, 0xe2, 0x24, 0xa5, 0x49, 0x0d, 0x4d, 0xea, 0x62, 0x00, 0x27, 0x6f, 0xc3, 0x76, 0x54, 0x68,
|
||||
0x48, 0x93, 0xba, 0x5c, 0x25, 0x1a, 0x46, 0xc3, 0x6b, 0x50, 0x0f, 0x09, 0xd6, 0x40, 0x8b, 0x9a,
|
||||
0xa9, 0xc0, 0x35, 0x84, 0x9a, 0x72, 0x31, 0xb3, 0x52, 0xba, 0x03, 0x15, 0xd7, 0xf4, 0xb8, 0xaf,
|
||||
0x0a, 0x84, 0x20, 0x7f, 0xbd, 0x36, 0x3d, 0x51, 0xa3, 0xaa, 0x7a, 0x49, 0x9a, 0xe8, 0xc7, 0xb0,
|
||||
0x99, 0x18, 0x17, 0xd7, 0x8f, 0x3b, 0xdc, 0x5c, 0xa8, 0xd2, 0x45, 0x76, 0xc2, 0x9f, 0x29, 0x45,
|
||||
0x3f, 0xa3, 0x3f, 0x81, 0x46, 0xf8, 0x0d, 0xc5, 0x51, 0xbb, 0xab, 0xf1, 0x28, 0x28, 0x7b, 0x37,
|
||||
0x8c, 0xaa, 0xbb, 0x1a, 0xbf, 0x94, 0x95, 0xaf, 0xeb, 0x7c, 0x50, 0x55, 0x9b, 0x66, 0xc8, 0x8e,
|
||||
0xfe, 0x14, 0xea, 0x41, 0x55, 0x95, 0x2f, 0xcd, 0xf9, 0xd4, 0xfa, 0xef, 0x45, 0xa8, 0x4a, 0xf8,
|
||||
0x65, 0x54, 0xda, 0xff, 0xc3, 0x12, 0x74, 0x45, 0x47, 0x62, 0xd3, 0x28, 0xdc, 0x0a, 0x5f, 0x77,
|
||||
0x52, 0x74, 0x78, 0x76, 0xe1, 0x52, 0xa3, 0x81, 0x56, 0xa2, 0x49, 0x6e, 0xc2, 0x86, 0x94, 0xf8,
|
||||
0xdc, 0x63, 0x76, 0x10, 0xfa, 0x4d, 0x1c, 0x7b, 0x83, 0x43, 0xe2, 0x93, 0x4a, 0x13, 0x66, 0x73,
|
||||
0x15, 0x4b, 0x75, 0x1c, 0x18, 0xda, 0x5c, 0xbf, 0x0e, 0x65, 0x5c, 0x07, 0xa0, 0xfa, 0xe6, 0xcc,
|
||||
0x18, 0xbe, 0xfa, 0xae, 0x55, 0x20, 0x35, 0xd0, 0x86, 0xaf, 0xce, 0x5a, 0xc5, 0xa3, 0x8f, 0x15,
|
||||
0xd8, 0x3e, 0xe9, 0x3f, 0x1b, 0x9e, 0xb8, 0xee, 0x82, 0x4d, 0x4c, 0xcc, 0x31, 0x3d, 0x28, 0x63,
|
||||
0x16, 0xcd, 0x78, 0xcc, 0x76, 0xb2, 0xca, 0x39, 0x72, 0x04, 0x15, 0x4c, 0xa6, 0x24, 0xeb, 0x4d,
|
||||
0xdb, 0xc9, 0xac, 0xea, 0xc4, 0x8f, 0xc8, 0x74, 0x7b, 0xf9, 0x69, 0xdb, 0xc9, 0x2a, 0xed, 0xc8,
|
||||
0xb7, 0xd0, 0x88, 0xd2, 0x60, 0xde, 0x03, 0xb7, 0x93, 0x5b, 0xe4, 0x09, 0x7d, 0x94, 0x1e, 0xf3,
|
||||
0x9e, 0xb9, 0x9d, 0xdc, 0x4a, 0x8f, 0x3c, 0x86, 0x5a, 0x90, 0xb9, 0xb2, 0x1f, 0xbb, 0x9d, 0x9c,
|
||||
0x62, 0x4f, 0x1c, 0x8f, 0xcc, 0x27, 0x59, 0x6f, 0xd8, 0x4e, 0x66, 0xfd, 0x46, 0x1e, 0x41, 0x55,
|
||||
0xa1, 0x34, 0xf3, 0x9d, 0xdc, 0xc9, 0xae, 0x12, 0xc5, 0x26, 0xa3, 0xe7, 0x4e, 0xde, 0x03, 0xb8,
|
||||
0x93, 0x5b, 0xff, 0x91, 0x13, 0x80, 0xd8, 0x3b, 0x27, 0xf7, 0x19, 0xdc, 0xc9, 0xaf, 0x02, 0x89,
|
||||
0xb8, 0x3b, 0xe1, 0x4b, 0x23, 0xfb, 0x31, 0xdc, 0xc9, 0x2b, 0x04, 0xc7, 0x55, 0xfc, 0x07, 0xcb,
|
||||
0xc3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x39, 0xd6, 0x39, 0x74, 0xab, 0x11, 0x00, 0x00,
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ message RequestCheckTx{
|
|||
message RequestQuery{
|
||||
bytes data = 1;
|
||||
string path = 2;
|
||||
uint64 height = 3;
|
||||
int64 height = 3;
|
||||
bool prove = 4;
|
||||
}
|
||||
|
||||
|
@ -66,10 +66,12 @@ message RequestInitChain{
|
|||
message RequestBeginBlock{
|
||||
bytes hash = 1;
|
||||
Header header = 2;
|
||||
repeated int32 absent_validators = 3;
|
||||
repeated Evidence byzantine_validators = 4;
|
||||
}
|
||||
|
||||
message RequestEndBlock{
|
||||
uint64 height = 1;
|
||||
int64 height = 1;
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
@ -107,7 +109,7 @@ message ResponseFlush{
|
|||
message ResponseInfo {
|
||||
string data = 1;
|
||||
string version = 2;
|
||||
uint64 last_block_height = 3;
|
||||
int64 last_block_height = 3;
|
||||
bytes last_block_app_hash = 4;
|
||||
}
|
||||
|
||||
|
@ -126,8 +128,8 @@ message ResponseCheckTx{
|
|||
uint32 code = 1;
|
||||
bytes data = 2 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
|
||||
string log = 3;
|
||||
uint64 gas = 4;
|
||||
uint64 fee = 5;
|
||||
int64 gas = 4;
|
||||
int64 fee = 5;
|
||||
}
|
||||
|
||||
message ResponseQuery{
|
||||
|
@ -136,7 +138,7 @@ message ResponseQuery{
|
|||
bytes key = 3 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
|
||||
bytes value = 4 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
|
||||
bytes proof = 5 [(gogoproto.customtype) = "github.com/tendermint/go-wire/data.Bytes", (gogoproto.nullable) = false];
|
||||
uint64 height = 6;
|
||||
int64 height = 6;
|
||||
string log = 7;
|
||||
}
|
||||
|
||||
|
@ -162,9 +164,9 @@ message ResponseEndBlock{
|
|||
|
||||
message Header {
|
||||
string chain_id = 1;
|
||||
uint64 height = 2;
|
||||
uint64 time = 3;
|
||||
uint64 num_txs = 4;
|
||||
int64 height = 2;
|
||||
int64 time = 3;
|
||||
int64 num_txs = 4;
|
||||
BlockID last_block_id = 5;
|
||||
bytes last_commit_hash = 6;
|
||||
bytes data_hash = 7;
|
||||
|
@ -178,13 +180,18 @@ message BlockID {
|
|||
}
|
||||
|
||||
message PartSetHeader {
|
||||
uint64 total = 1;
|
||||
int64 total = 1;
|
||||
bytes hash = 2;
|
||||
}
|
||||
|
||||
message Validator {
|
||||
bytes pubKey = 1;
|
||||
uint64 power = 2;
|
||||
bytes pub_key = 1;
|
||||
int64 power = 2;
|
||||
}
|
||||
|
||||
message Evidence {
|
||||
bytes pub_key = 1;
|
||||
int64 height = 2;
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
|
|
@ -8,8 +8,9 @@ import (
|
|||
cmn "github.com/tendermint/tmlibs/common"
|
||||
)
|
||||
|
||||
// validators implements sort
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// Validators is a list of validators that implements the Sort interface
|
||||
type Validators []*Validator
|
||||
|
||||
func (v Validators) Len() int {
|
||||
|
@ -27,13 +28,6 @@ func (v Validators) Swap(i, j int) {
|
|||
v[j] = v1
|
||||
}
|
||||
|
||||
//-------------------------------------
|
||||
|
||||
type validatorPretty struct {
|
||||
PubKey data.Bytes `json:"pub_key"`
|
||||
Power uint64 `json:"power"`
|
||||
}
|
||||
|
||||
func ValidatorsString(vs Validators) string {
|
||||
s := make([]validatorPretty, len(vs))
|
||||
for i, v := range vs {
|
||||
|
@ -45,3 +39,28 @@ func ValidatorsString(vs Validators) string {
|
|||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
type validatorPretty struct {
|
||||
PubKey data.Bytes `json:"pub_key"`
|
||||
Power int64 `json:"power"`
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// KVPairInt is a helper method to build KV pair with an integer value.
|
||||
func KVPairInt(key string, val int64) *KVPair {
|
||||
return &KVPair{
|
||||
Key: key,
|
||||
ValueInt: val,
|
||||
ValueType: KVPair_INT,
|
||||
}
|
||||
}
|
||||
|
||||
// KVPairString is a helper method to build KV pair with a string value.
|
||||
func KVPairString(key, val string) *KVPair {
|
||||
return &KVPair{
|
||||
Key: key,
|
||||
ValueString: val,
|
||||
ValueType: KVPair_STRING,
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue