diff --git a/.circleci/config.yml b/.circleci/config.yml index 82ef5230..8d321e9e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -77,6 +77,12 @@ jobs: set -ex export PATH="$GOBIN:$PATH" make metalinter + - run: + name: check_dep + command: | + set -ex + export PATH="$GOBIN:$PATH" + make check_dep test_abci_apps: <<: *defaults @@ -141,7 +147,7 @@ jobs: for pkg in $(go list github.com/tendermint/tendermint/... | circleci tests split --split-by=timings); do id=$(basename "$pkg") - GOCACHE=off go test -v -timeout 5m -race -coverprofile=/tmp/workspace/profiles/$id.out -covermode=atomic "$pkg" | tee "/tmp/logs/$id-$RANDOM.log" + GOCACHE=off go test -timeout 5m -race -coverprofile=/tmp/workspace/profiles/$id.out -covermode=atomic "$pkg" | tee "/tmp/logs/$id-$RANDOM.log" done - persist_to_workspace: root: /tmp/workspace diff --git a/.github/ISSUE_TEMPLATE b/.github/ISSUE_TEMPLATE deleted file mode 100644 index ed3caac5..00000000 --- a/.github/ISSUE_TEMPLATE +++ /dev/null @@ -1,42 +0,0 @@ - - -**Is this a BUG REPORT or FEATURE REQUEST?** (choose one): - - - -**Tendermint version** (use `tendermint version` or `git rev-parse --verify HEAD` if installed from source): - - -**ABCI app** (name for built-in, URL for self-written if it's publicly available): - -**Environment**: -- **OS** (e.g. from /etc/os-release): -- **Install tools**: -- **Others**: - - -**What happened**: - - -**What you expected to happen**: - - -**How to reproduce it** (as minimally and precisely as possible): - -**Logs (you can paste a small part showing an error or link a pastebin, gist, etc. containing more of the log file)**: - -**Config (you can paste only the changes you've made)**: - -**`/dump_consensus_state` output for consensus bugs** - -**Anything else do we need to know**: diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 00000000..7ace32f2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,38 @@ +--- +name: Bug Report +about: Create a report to help us squash bugs! + +--- + + +**Tendermint version** (use `tendermint version` or `git rev-parse --verify HEAD` if installed from source): + + +**ABCI app** (name for built-in, URL for self-written if it's publicly available): + +**Environment**: +- **OS** (e.g. from /etc/os-release): +- **Install tools**: +- **Others**: + + +**What happened**: + + +**What you expected to happen**: + + +**How to reproduce it** (as minimally and precisely as possible): + +**Logs (paste a small part showing an error (< 10 lines) or link a pastebin, gist, etc. containing more of the log file)**: + +**Config (you can paste only the changes you've made)**: + +**`/dump_consensus_state` output for consensus bugs** + +**Anything else we need to know**: diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 00000000..e88fe61d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,13 @@ +--- +name: Feature Request +about: Create a proposal to request a feature + +--- + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 902469b4..d4f55392 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,4 +3,4 @@ * [ ] Updated all relevant documentation in docs * [ ] Updated all code comments where relevant * [ ] Wrote tests -* [ ] Updated CHANGELOG.md +* [ ] Updated CHANGELOG_PENDING.md diff --git a/.gitignore b/.gitignore index 21a77ad1..69196fac 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ docs/_build *.log abci-cli docs/node_modules/ +index.html.md scripts/wal2json/wal2json scripts/cutWALUntil/cutWALUntil diff --git a/CHANGELOG.md b/CHANGELOG.md index 99c51a04..b62e2354 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,37 @@ # Changelog -## TBA +## 0.22.8 + +*July 26th, 2018* + +BUG FIXES + +- [consensus, blockchain] Fix 0.22.7 below. + +## 0.22.7 + +*July 26th, 2018* + +BUG FIXES + +- [consensus, blockchain] Register the Evidence interface so it can be + marshalled/unmarshalled by the blockchain and consensus reactors + +## 0.22.6 + +*July 24th, 2018* + +BUG FIXES + +- [rpc] Fix `/blockchain` endpoint + - (#2049) Fix OOM attack by returning error on negative input + - Fix result length to have max 20 (instead of 21) block metas +- [rpc] Validate height is non-negative in `/abci_query` +- [consensus] (#2050) Include evidence in proposal block parts (previously evidence was + not being included in blocks!) +- [p2p] (#2046) Close rejected inbound connections so file descriptor doesn't + leak +- [Gopkg] (#2053) Fix versions in the toml ## 0.22.5 @@ -13,9 +44,10 @@ BREAKING CHANGES: IMPROVEMENTS: - [abci, libs/common] Generated gogoproto static marshaller methods - [config] Increase default send/recv rates to 5 mB/s +- [p2p] reject addresses coming from private peers - [p2p] allow persistent peers to be private -BUG FIXES +BUG FIXES: - [mempool] fixed a race condition when `create_empty_blocks=false` where a transaction is published at an old height. - [p2p] dial external IP setup by `persistent_peers`, not internal NAT IP diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 1e002049..252a4d48 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -9,8 +9,26 @@ BREAKING CHANGES: - [lite] Complete refactor of the package - [rpc] `/commit` returns a `signed_header` field instead of everything being top-level +- [abci] Removed Fee from ResponseDeliverTx and ResponseCheckTx +- [tools] Removed `make ensure_deps` in favor of `make get_vendor_deps` +- [p2p] Remove salsa and ripemd primitives, in favor of using chacha as a stream cipher, and hkdf +- [abci] Changed time format from int64 to google.protobuf.Timestamp +- [abci] Changed Validators to LastCommitInfo in RequestBeginBlock + +FEATURES: +- [tools] Added `make check_dep` + - ensures gopkg.lock is synced with gopkg.toml + - ensures no branches are used in the gopkg.toml IMPROVEMENTS: - [blockchain] Improve fast-sync logic - tweak params - only process one block at a time to avoid starving +- [crypto] Switch hkdfchachapoly1305 to xchachapoly1305 +- [common] bit array functions which take in another parameter are now thread safe +- [p2p] begin connecting to peers as soon a seed node provides them to you ([#2093](https://github.com/tendermint/tendermint/issues/2093)) + +BUG FIXES: +- [common] Safely handle cases where atomic write files already exist [#2109](https://github.com/tendermint/tendermint/issues/2109) +- [privval] fix a deadline for accepting new connections in socket private + validator. diff --git a/Gopkg.lock b/Gopkg.lock index 31d04b36..fc34e799 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -3,48 +3,67 @@ [[projects]] branch = "master" + digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d" name = "github.com/beorn7/perks" packages = ["quantile"] + pruneopts = "UT" revision = "3a771d992973f24aa725d07868b467d1ddfceafb" [[projects]] branch = "master" + digest = "1:2c00f064ba355903866cbfbf3f7f4c0fe64af6638cc7d1b8bdcf3181bc67f1d8" name = "github.com/btcsuite/btcd" packages = ["btcec"] +<<<<<<< HEAD revision = "f5e261fc9ec3437697fb31d8b38453c293204b29" +======= + pruneopts = "UT" + revision = "9a2f9524024889e129a5422aca2cff73cb3eabf6" +>>>>>>> origin/develop [[projects]] + digest = "1:1d8e1cb71c33a9470bbbae09bfec09db43c6bf358dfcae13cd8807c4e2a9a2bf" name = "github.com/btcsuite/btcutil" packages = [ "base58", - "bech32" + "bech32", ] + pruneopts = "UT" revision = "d4cc87b860166d00d6b5b9e0d3b3d71d6088d4d4" [[projects]] + digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39" name = "github.com/davecgh/go-spew" packages = ["spew"] + pruneopts = "UT" revision = "346938d642f2ec3594ed81d874461961cd0faa76" version = "v1.1.0" [[projects]] + digest = "1:c7644c73a3d23741fdba8a99b1464e021a224b7e205be497271a8003a15ca41b" name = "github.com/ebuchman/fail-test" packages = ["."] + pruneopts = "UT" revision = "95f809107225be108efcf10a3509e4ea6ceef3c4" [[projects]] + digest = "1:544229a3ca0fb2dd5ebc2896d3d2ff7ce096d9751635301e44e37e761349ee70" name = "github.com/fortytw2/leaktest" packages = ["."] + pruneopts = "UT" revision = "a5ef70473c97b71626b9abeda80ee92ba2a7de9e" version = "v1.2.0" [[projects]] + digest = "1:abeb38ade3f32a92943e5be54f55ed6d6e3b6602761d74b4aab4c9dd45c18abd" name = "github.com/fsnotify/fsnotify" packages = ["."] + pruneopts = "UT" revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" version = "v1.4.7" [[projects]] + digest = "1:fdf5169073fb0ad6dc12a70c249145e30f4058647bea25f0abd48b6d9f228a11" name = "github.com/go-kit/kit" packages = [ "log", @@ -53,24 +72,35 @@ "metrics", "metrics/discard", "metrics/internal/lv", - "metrics/prometheus" + "metrics/prometheus", ] +<<<<<<< HEAD revision = "ca4112baa34cb55091301bdc13b1420a122b1b9e" version = "v0.7.0" +======= + pruneopts = "UT" + revision = "4dc7be5d2d12881735283bcab7352178e190fc71" + version = "v0.6.0" +>>>>>>> origin/develop [[projects]] + digest = "1:31a18dae27a29aa074515e43a443abfd2ba6deb6d69309d8d7ce789c45f34659" name = "github.com/go-logfmt/logfmt" packages = ["."] + pruneopts = "UT" revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5" version = "v0.3.0" [[projects]] + digest = "1:c4a2528ccbcabf90f9f3c464a5fc9e302d592861bbfd0b7135a7de8a943d0406" name = "github.com/go-stack/stack" packages = ["."] + pruneopts = "UT" revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc" version = "v1.7.0" [[projects]] + digest = "1:35621fe20f140f05a0c4ef662c26c0ab4ee50bca78aa30fe87d33120bd28165e" name = "github.com/gogo/protobuf" packages = [ "gogoproto", @@ -78,37 +108,48 @@ "proto", "protoc-gen-gogo/descriptor", "sortkeys", - "types" + "types", ] +<<<<<<< HEAD +======= + pruneopts = "UT" +>>>>>>> origin/develop revision = "636bf0302bc95575d69441b25a2603156ffdddf1" version = "v1.1.1" [[projects]] + digest = "1:17fe264ee908afc795734e8c4e63db2accabaf57326dbf21763a7d6b86096260" name = "github.com/golang/protobuf" packages = [ "proto", "ptypes", "ptypes/any", "ptypes/duration", - "ptypes/timestamp" + "ptypes/timestamp", ] + pruneopts = "UT" revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265" version = "v1.1.0" [[projects]] branch = "master" + digest = "1:4a0c6bb4805508a6287675fac876be2ac1182539ca8a32468d8128882e9d5009" name = "github.com/golang/snappy" packages = ["."] + pruneopts = "UT" revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a" [[projects]] + digest = "1:43dd08a10854b2056e615d1b1d22ac94559d822e1f8b6fcc92c1a1057e85188e" name = "github.com/gorilla/websocket" packages = ["."] + pruneopts = "UT" revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b" version = "v1.2.0" [[projects]] branch = "master" + digest = "1:12247a2e99a060cc692f6680e5272c8adf0b8f572e6bce0d7095e624c958a240" name = "github.com/hashicorp/hcl" packages = [ ".", @@ -120,36 +161,47 @@ "hcl/token", "json/parser", "json/scanner", - "json/token" + "json/token", ] + pruneopts = "UT" revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168" [[projects]] + digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be" name = "github.com/inconshreveable/mousetrap" packages = ["."] + pruneopts = "UT" revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" version = "v1.0" [[projects]] + digest = "1:39b27d1381a30421f9813967a5866fba35dc1d4df43a6eefe3b7a5444cb07214" name = "github.com/jmhodges/levigo" packages = ["."] + pruneopts = "UT" revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9" [[projects]] branch = "master" + digest = "1:a64e323dc06b73892e5bb5d040ced475c4645d456038333883f58934abbf6f72" name = "github.com/kr/logfmt" packages = ["."] + pruneopts = "UT" revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0" [[projects]] + digest = "1:c568d7727aa262c32bdf8a3f7db83614f7af0ed661474b24588de635c20024c7" name = "github.com/magiconair/properties" packages = ["."] + pruneopts = "UT" revision = "c2353362d570a7bfa228149c62842019201cfb71" version = "v1.8.0" [[projects]] + digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc" name = "github.com/matttproud/golang_protobuf_extensions" packages = ["pbutil"] + pruneopts = "UT" revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" version = "v1.0.1" @@ -160,113 +212,168 @@ revision = "f15292f7a699fcc1a38a80977f80a046874ba8ac" [[projects]] + digest = "1:95741de3af260a92cc5c7f3f3061e85273f5a81b5db20d4bd68da74bd521675e" name = "github.com/pelletier/go-toml" packages = ["."] + pruneopts = "UT" revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194" version = "v1.2.0" [[projects]] + digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747" name = "github.com/pkg/errors" packages = ["."] + pruneopts = "UT" revision = "645ef00459ed84a119197bfb8d8205042c6df63d" version = "v0.8.0" [[projects]] + digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe" name = "github.com/pmezard/go-difflib" packages = ["difflib"] + pruneopts = "UT" revision = "792786c7400a136282c1664665ae0a8db921c6c2" version = "v1.0.0" [[projects]] + digest = "1:c1a04665f9613e082e1209cf288bf64f4068dcd6c87a64bf1c4ff006ad422ba0" name = "github.com/prometheus/client_golang" packages = [ "prometheus", - "prometheus/promhttp" + "prometheus/promhttp", ] + pruneopts = "UT" revision = "ae27198cdd90bf12cd134ad79d1366a6cf49f632" [[projects]] branch = "master" +<<<<<<< HEAD +======= + digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4" +>>>>>>> origin/develop name = "github.com/prometheus/client_model" packages = ["go"] revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f" [[projects]] branch = "master" + digest = "1:e469cd65badf7694aeb44874518606d93c1d59e7735d3754ad442782437d3cc3" name = "github.com/prometheus/common" packages = [ "expfmt", "internal/bitbucket.org/ww/goautoneg", - "model" + "model", ] +<<<<<<< HEAD revision = "c7de2306084e37d54b8be01f3541a8464345e9a5" +======= + pruneopts = "UT" + revision = "7600349dcfe1abd18d72d3a1770870d9800a7801" +>>>>>>> origin/develop [[projects]] branch = "master" + digest = "1:8c49953a1414305f2ff5465147ee576dd705487c35b15918fcd4efdc0cb7a290" name = "github.com/prometheus/procfs" packages = [ ".", "internal/util", "nfs", - "xfs" + "xfs", ] +<<<<<<< HEAD +======= + pruneopts = "UT" +>>>>>>> origin/develop revision = "05ee40e3a273f7245e8777337fc7b46e533a9a92" [[projects]] + digest = "1:c4556a44e350b50a490544d9b06e9fba9c286c21d6c0e47f54f3a9214597298c" name = "github.com/rcrowley/go-metrics" packages = ["."] + pruneopts = "UT" revision = "e2704e165165ec55d062f5919b4b29494e9fa790" [[projects]] + digest = "1:bd1ae00087d17c5a748660b8e89e1043e1e5479d0fea743352cda2f8dd8c4f84" name = "github.com/spf13/afero" packages = [ ".", - "mem" + "mem", ] + pruneopts = "UT" revision = "787d034dfe70e44075ccc060d346146ef53270ad" version = "v1.1.1" [[projects]] + digest = "1:516e71bed754268937f57d4ecb190e01958452336fa73dbac880894164e91c1f" name = "github.com/spf13/cast" packages = ["."] + pruneopts = "UT" revision = "8965335b8c7107321228e3e3702cab9832751bac" version = "v1.2.0" [[projects]] + digest = "1:7ffc0983035bc7e297da3688d9fe19d60a420e9c38bef23f845c53788ed6a05e" name = "github.com/spf13/cobra" packages = ["."] +<<<<<<< HEAD revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385" version = "v0.0.3" +======= + pruneopts = "UT" + revision = "7b2c5ac9fc04fc5efafb60700713d4fa609b777b" + version = "v0.0.1" +>>>>>>> origin/develop [[projects]] branch = "master" + digest = "1:080e5f630945ad754f4b920e60b4d3095ba0237ebf88dc462eb28002932e3805" name = "github.com/spf13/jwalterweatherman" packages = ["."] + pruneopts = "UT" revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394" [[projects]] + digest = "1:9424f440bba8f7508b69414634aef3b2b3a877e522d8a4624692412805407bb7" name = "github.com/spf13/pflag" packages = ["."] + pruneopts = "UT" revision = "583c0c0531f06d5278b7d917446061adc344b5cd" version = "v1.0.1" [[projects]] + digest = "1:f8e1a678a2571e265f4bf91a3e5e32aa6b1474a55cb0ea849750cc177b664d96" name = "github.com/spf13/viper" packages = ["."] +<<<<<<< HEAD revision = "b5e8006cbee93ec955a89ab31e0e3ce3204f3736" version = "v1.0.2" +======= + pruneopts = "UT" + revision = "25b30aa063fc18e48662b86996252eabdcf2f0c7" + version = "v1.0.0" +>>>>>>> origin/develop [[projects]] + digest = "1:7e8d267900c7fa7f35129a2a37596e38ed0f11ca746d6d9ba727980ee138f9f6" name = "github.com/stretchr/testify" packages = [ "assert", - "require" + "require", ] +<<<<<<< HEAD revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686" version = "v1.2.2" +======= + pruneopts = "UT" + revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71" + version = "v1.2.1" +>>>>>>> origin/develop [[projects]] branch = "master" + digest = "1:b3cfb8d82b1601a846417c3f31c03a7961862cb2c98dcf0959c473843e6d9a2b" name = "github.com/syndtr/goleveldb" packages = [ "leveldb", @@ -280,28 +387,41 @@ "leveldb/opt", "leveldb/storage", "leveldb/table", - "leveldb/util" + "leveldb/util", ] + pruneopts = "UT" revision = "c4c61651e9e37fa117f53c5a906d3b63090d8445" [[projects]] branch = "master" + digest = "1:087aaa7920e5d0bf79586feb57ce01c35c830396ab4392798112e8aae8c47722" name = "github.com/tendermint/ed25519" packages = [ ".", "edwards25519", - "extra25519" + "extra25519", ] + pruneopts = "UT" revision = "d8387025d2b9d158cf4efb07e7ebf814bcce2057" [[projects]] +<<<<<<< HEAD branch = "jae/writeemptyptr" name = "github.com/tendermint/go-amino" packages = ["."] revision = "8202139066d340b77084a583e176e29fb28b42e9" +======= + digest = "1:e9113641c839c21d8eaeb2c907c7276af1eddeed988df8322168c56b7e06e0e1" + name = "github.com/tendermint/go-amino" + packages = ["."] + pruneopts = "UT" + revision = "2106ca61d91029c931fd54968c2bb02dc96b1412" + version = "0.10.1" +>>>>>>> origin/develop [[projects]] branch = "master" + digest = "1:c31a37cafc12315b8bd745c8ad6a006ac25350472488162a821e557b3e739d67" name = "golang.org/x/crypto" packages = [ "bcrypt", @@ -317,11 +437,16 @@ "openpgp/errors", "poly1305", "ripemd160", - "salsa20/salsa" + "salsa20/salsa", ] +<<<<<<< HEAD +======= + pruneopts = "UT" +>>>>>>> origin/develop revision = "c126467f60eb25f8f27e5a981f32a87e3965053f" [[projects]] + digest = "1:d36f55a999540d29b6ea3c2ea29d71c76b1d9853fdcd3e5c5cb4836f2ba118f1" name = "golang.org/x/net" packages = [ "context", @@ -331,20 +456,28 @@ "idna", "internal/timeseries", "netutil", - "trace" + "trace", ] + pruneopts = "UT" revision = "292b43bbf7cb8d35ddf40f8d5100ef3837cced3f" [[projects]] branch = "master" + digest = "1:12ff7b51d336ea7e8b182aa3313679a37d53de64f84d2c3cbfd6a0237877e20a" name = "golang.org/x/sys" packages = [ "cpu", - "unix" + "unix", ] +<<<<<<< HEAD revision = "3dc4335d56c789b04b0ba99b7a37249d9b614314" +======= + pruneopts = "UT" + revision = "e072cadbbdc8dd3d3ffa82b8b4b9304c261d9311" +>>>>>>> origin/develop [[projects]] + digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" name = "golang.org/x/text" packages = [ "collate", @@ -360,17 +493,21 @@ "unicode/bidi", "unicode/cldr", "unicode/norm", - "unicode/rangetable" + "unicode/rangetable", ] + pruneopts = "UT" revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" version = "v0.3.0" [[projects]] + digest = "1:cd018653a358d4b743a9d3bee89e825521f2ab2f2ec0770164bf7632d8d73ab7" name = "google.golang.org/genproto" packages = ["googleapis/rpc/status"] + pruneopts = "UT" revision = "7fd901a49ba6a7f87732eb344f6e3c5b19d1b200" [[projects]] + digest = "1:2dab32a43451e320e49608ff4542fdfc653c95dcc35d0065ec9c6c3dd540ed74" name = "google.golang.org/grpc" packages = [ ".", @@ -397,20 +534,75 @@ "stats", "status", "tap", - "transport" + "transport", ] + pruneopts = "UT" revision = "168a6198bcb0ef175f7dacec0b8691fc141dc9b8" version = "v1.13.0" [[projects]] + digest = "1:342378ac4dcb378a5448dd723f0784ae519383532f5e70ade24132c4c8693202" name = "gopkg.in/yaml.v2" packages = ["."] + pruneopts = "UT" revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183" version = "v2.2.1" [solve-meta] analyzer-name = "dep" analyzer-version = 1 +<<<<<<< HEAD inputs-digest = "cb44aec2727610e0547ee75e2b4602266d85026bb47747f4fb8bdcef4709bdd1" +======= + input-imports = [ + "github.com/btcsuite/btcd/btcec", + "github.com/btcsuite/btcutil/base58", + "github.com/btcsuite/btcutil/bech32", + "github.com/ebuchman/fail-test", + "github.com/fortytw2/leaktest", + "github.com/go-kit/kit/log", + "github.com/go-kit/kit/log/level", + "github.com/go-kit/kit/log/term", + "github.com/go-kit/kit/metrics", + "github.com/go-kit/kit/metrics/discard", + "github.com/go-kit/kit/metrics/prometheus", + "github.com/go-logfmt/logfmt", + "github.com/gogo/protobuf/gogoproto", + "github.com/gogo/protobuf/jsonpb", + "github.com/gogo/protobuf/proto", + "github.com/gogo/protobuf/types", + "github.com/golang/protobuf/proto", + "github.com/golang/protobuf/ptypes/timestamp", + "github.com/gorilla/websocket", + "github.com/jmhodges/levigo", + "github.com/pkg/errors", + "github.com/prometheus/client_golang/prometheus", + "github.com/prometheus/client_golang/prometheus/promhttp", + "github.com/rcrowley/go-metrics", + "github.com/spf13/cobra", + "github.com/spf13/viper", + "github.com/stretchr/testify/assert", + "github.com/stretchr/testify/require", + "github.com/syndtr/goleveldb/leveldb", + "github.com/syndtr/goleveldb/leveldb/errors", + "github.com/syndtr/goleveldb/leveldb/iterator", + "github.com/syndtr/goleveldb/leveldb/opt", + "github.com/tendermint/ed25519", + "github.com/tendermint/ed25519/extra25519", + "github.com/tendermint/go-amino", + "golang.org/x/crypto/bcrypt", + "golang.org/x/crypto/chacha20poly1305", + "golang.org/x/crypto/curve25519", + "golang.org/x/crypto/hkdf", + "golang.org/x/crypto/nacl/box", + "golang.org/x/crypto/nacl/secretbox", + "golang.org/x/crypto/openpgp/armor", + "golang.org/x/crypto/ripemd160", + "golang.org/x/net/context", + "golang.org/x/net/netutil", + "google.golang.org/grpc", + "google.golang.org/grpc/credentials", + ] +>>>>>>> origin/develop solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index c5fb71c0..a4d71aa8 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -10,11 +10,6 @@ # name = "github.com/user/project" # version = "1.0.0" # -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# # [[override]] # name = "github.com/x/y" # version = "2.4.0" @@ -31,7 +26,7 @@ [[constraint]] name = "github.com/go-kit/kit" - version = "=0.7.0" + version = "=0.6.0" [[constraint]] name = "github.com/gogo/protobuf" @@ -51,15 +46,15 @@ [[constraint]] name = "github.com/spf13/cobra" - version = "=0.0.3" + version = "=0.0.1" [[constraint]] name = "github.com/spf13/viper" - version = "=1.0.2" + version = "=1.0.0" [[constraint]] name = "github.com/stretchr/testify" - version = "=1.2.2" + version = "=1.2.1" [[constraint]] name = "github.com/tendermint/go-amino" diff --git a/Makefile b/Makefile index 14e48ee0..c08e583e 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ GOTOOLS = \ github.com/gogo/protobuf/protoc-gen-gogo \ github.com/gogo/protobuf/gogoproto \ github.com/square/certstrap -PACKAGES=$(shell go list ./... | grep -v '/vendor/') +PACKAGES=$(shell go list ./...) INCLUDE = -I=. -I=${GOPATH}/src -I=${GOPATH}/src/github.com/gogo/protobuf/protobuf BUILD_TAGS?='tendermint' @@ -37,7 +37,7 @@ protoc_all: protoc_libs protoc_abci protoc_grpc ## If you get the following error, ## "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory" ## See https://stackoverflow.com/a/25518702 - protoc $(INCLUDE) $< --gogo_out=plugins=grpc:. + protoc $(INCLUDE) $< --gogo_out=Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,plugins=grpc:. @echo "--> adding nolint declarations to protobuf generated files" @awk -i inplace '/^\s*package \w+/ { print "//nolint" }1' $@ @@ -77,16 +77,8 @@ update_tools: @echo "--> Updating tools" @go get -u $(GOTOOLS) -#Run this from CI +#Update dependencies get_vendor_deps: - @rm -rf vendor/ - @echo "--> Running dep" - @dep ensure -vendor-only - - -#Run this locally. -ensure_deps: - @rm -rf vendor/ @echo "--> Running dep" @dep ensure @@ -254,6 +246,16 @@ metalinter_all: @echo "--> Running linter (all)" gometalinter.v2 --vendor --deadline=600s --enable-all --disable=lll ./... +DESTINATION = ./index.html.md + +rpc-docs: + cat rpc/core/slate_header.txt > $(DESTINATION) + godoc2md -template rpc/core/doc_template.txt github.com/tendermint/tendermint/rpc/core | grep -v -e "pipe.go" -e "routes.go" -e "dev.go" | sed 's,/src/target,https://github.com/tendermint/tendermint/tree/master/rpc/core,' >> $(DESTINATION) + +check_dep: + dep status >> /dev/null + !(grep -n branch Gopkg.toml) + ########################################################### ### Docker image @@ -309,4 +311,4 @@ build-slate: # To avoid unintended conflicts with file names, always add to .PHONY # unless there is a reason not to. # https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html -.PHONY: check build build_race build_abci dist install install_abci check_tools get_tools update_tools get_vendor_deps draw_deps get_protoc protoc_abci protoc_libs gen_certs clean_certs grpc_dbserver test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate protoc_grpc protoc_all +.PHONY: check build build_race build_abci dist install install_abci check_dep check_tools get_tools update_tools get_vendor_deps draw_deps get_protoc protoc_abci protoc_libs gen_certs clean_certs grpc_dbserver test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt rpc-docs build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate protoc_grpc protoc_all diff --git a/README.md b/README.md index 6268e054..94d8d7f0 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ develop | [![CircleCI](https://circleci.com/gh/tendermint/tendermint/tree/deve Tendermint Core is Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine - written in any programming language - and securely replicates it on many machines. -For protocol details, see [the specification](/docs/spec). +For protocol details, see [the specification](/docs/spec). For a consensus proof and detailed protocol analysis checkout our recent paper, "[The latest gossip on BFT consensus](https://arxiv.org/abs/1807.04938)". ## A Note on Production Readiness diff --git a/abci/README.md b/abci/README.md index 6de9f706..493d862f 100644 --- a/abci/README.md +++ b/abci/README.md @@ -29,7 +29,7 @@ The two guides to focus on are the `Application Development Guide` and `Using AB To compile the protobuf file, run: ``` -make protoc +cd $GOPATH/src/github.com/tendermint/tendermint/; make protoc_abci ``` See `protoc --help` and [the Protocol Buffers site](https://developers.google.com/protocol-buffers) diff --git a/abci/client/grpc_client.go b/abci/client/grpc_client.go index 502ee0fc..a1f09946 100644 --- a/abci/client/grpc_client.go +++ b/abci/client/grpc_client.go @@ -63,7 +63,7 @@ RETRY_LOOP: ENSURE_CONNECTED: for { - _, err := client.Echo(context.Background(), &types.RequestEcho{"hello"}, grpc.FailFast(true)) + _, err := client.Echo(context.Background(), &types.RequestEcho{Message: "hello"}, grpc.FailFast(true)) if err == nil { break ENSURE_CONNECTED } @@ -129,7 +129,7 @@ func (cli *grpcClient) EchoAsync(msg string) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_Echo{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_Echo{res}}) } func (cli *grpcClient) FlushAsync() *ReqRes { @@ -138,7 +138,7 @@ func (cli *grpcClient) FlushAsync() *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_Flush{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_Flush{res}}) } func (cli *grpcClient) InfoAsync(params types.RequestInfo) *ReqRes { @@ -147,7 +147,7 @@ func (cli *grpcClient) InfoAsync(params types.RequestInfo) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_Info{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_Info{res}}) } func (cli *grpcClient) SetOptionAsync(params types.RequestSetOption) *ReqRes { @@ -156,7 +156,7 @@ func (cli *grpcClient) SetOptionAsync(params types.RequestSetOption) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_SetOption{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_SetOption{res}}) } func (cli *grpcClient) DeliverTxAsync(tx []byte) *ReqRes { @@ -165,7 +165,7 @@ func (cli *grpcClient) DeliverTxAsync(tx []byte) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_DeliverTx{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_DeliverTx{res}}) } func (cli *grpcClient) CheckTxAsync(tx []byte) *ReqRes { @@ -174,7 +174,7 @@ func (cli *grpcClient) CheckTxAsync(tx []byte) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_CheckTx{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_CheckTx{res}}) } func (cli *grpcClient) QueryAsync(params types.RequestQuery) *ReqRes { @@ -183,7 +183,7 @@ func (cli *grpcClient) QueryAsync(params types.RequestQuery) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_Query{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_Query{res}}) } func (cli *grpcClient) CommitAsync() *ReqRes { @@ -192,7 +192,7 @@ func (cli *grpcClient) CommitAsync() *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_Commit{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_Commit{res}}) } func (cli *grpcClient) InitChainAsync(params types.RequestInitChain) *ReqRes { @@ -201,7 +201,7 @@ func (cli *grpcClient) InitChainAsync(params types.RequestInitChain) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_InitChain{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_InitChain{res}}) } func (cli *grpcClient) BeginBlockAsync(params types.RequestBeginBlock) *ReqRes { @@ -210,7 +210,7 @@ func (cli *grpcClient) BeginBlockAsync(params types.RequestBeginBlock) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_BeginBlock{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_BeginBlock{res}}) } func (cli *grpcClient) EndBlockAsync(params types.RequestEndBlock) *ReqRes { @@ -219,7 +219,7 @@ func (cli *grpcClient) EndBlockAsync(params types.RequestEndBlock) *ReqRes { if err != nil { cli.StopForError(err) } - return cli.finishAsyncCall(req, &types.Response{&types.Response_EndBlock{res}}) + return cli.finishAsyncCall(req, &types.Response{Value: &types.Response_EndBlock{res}}) } func (cli *grpcClient) finishAsyncCall(req *types.Request, res *types.Response) *ReqRes { diff --git a/abci/client/local_client.go b/abci/client/local_client.go index 3d1f8d8e..3ac3b6af 100644 --- a/abci/client/local_client.go +++ b/abci/client/local_client.go @@ -149,7 +149,7 @@ func (app *localClient) FlushSync() error { } func (app *localClient) EchoSync(msg string) (*types.ResponseEcho, error) { - return &types.ResponseEcho{msg}, nil + return &types.ResponseEcho{Message: msg}, nil } func (app *localClient) InfoSync(req types.RequestInfo) (*types.ResponseInfo, error) { diff --git a/abci/cmd/abci-cli/abci-cli.go b/abci/cmd/abci-cli/abci-cli.go index e2024401..00bceec2 100644 --- a/abci/cmd/abci-cli/abci-cli.go +++ b/abci/cmd/abci-cli/abci-cli.go @@ -514,7 +514,7 @@ func cmdInfo(cmd *cobra.Command, args []string) error { if len(args) == 1 { version = args[0] } - res, err := client.InfoSync(types.RequestInfo{version}) + res, err := client.InfoSync(types.RequestInfo{Version: version}) if err != nil { return err } @@ -537,7 +537,7 @@ func cmdSetOption(cmd *cobra.Command, args []string) error { } key, val := args[0], args[1] - _, err := client.SetOptionSync(types.RequestSetOption{key, val}) + _, err := client.SetOptionSync(types.RequestSetOption{Key: key, Value: val}) if err != nil { return err } diff --git a/abci/example/example_test.go b/abci/example/example_test.go index bbb53b5a..7e8bd2e5 100644 --- a/abci/example/example_test.go +++ b/abci/example/example_test.go @@ -132,7 +132,7 @@ func testGRPCSync(t *testing.T, app *types.GRPCApplication) { // Write requests for counter := 0; counter < numDeliverTxs; counter++ { // Send request - response, err := client.DeliverTx(context.Background(), &types.RequestDeliverTx{[]byte("test")}) + response, err := client.DeliverTx(context.Background(), &types.RequestDeliverTx{Tx: []byte("test")}) if err != nil { t.Fatalf("Error in GRPC DeliverTx: %v", err.Error()) } diff --git a/abci/example/kvstore/kvstore_test.go b/abci/example/kvstore/kvstore_test.go index 2d8f8127..6ef5a08f 100644 --- a/abci/example/kvstore/kvstore_test.go +++ b/abci/example/kvstore/kvstore_test.go @@ -90,8 +90,8 @@ func TestPersistentKVStoreInfo(t *testing.T) { header := types.Header{ Height: int64(height), } - kvstore.BeginBlock(types.RequestBeginBlock{hash, header, nil, nil}) - kvstore.EndBlock(types.RequestEndBlock{header.Height}) + kvstore.BeginBlock(types.RequestBeginBlock{Hash: hash, Header: header}) + kvstore.EndBlock(types.RequestEndBlock{Height: header.Height}) kvstore.Commit() resInfo = kvstore.Info(types.RequestInfo{}) @@ -176,13 +176,13 @@ func makeApplyBlock(t *testing.T, kvstore types.Application, heightInt int, diff Height: height, } - kvstore.BeginBlock(types.RequestBeginBlock{hash, header, nil, nil}) + kvstore.BeginBlock(types.RequestBeginBlock{Hash: hash, Header: header}) for _, tx := range txs { if r := kvstore.DeliverTx(tx); r.IsErr() { t.Fatal(r) } } - resEndBlock := kvstore.EndBlock(types.RequestEndBlock{header.Height}) + resEndBlock := kvstore.EndBlock(types.RequestEndBlock{Height: header.Height}) kvstore.Commit() valsEqual(t, diff, resEndBlock.ValidatorUpdates) diff --git a/abci/tests/test_app/app.go b/abci/tests/test_app/app.go index a33f4ee9..25ed2f58 100644 --- a/abci/tests/test_app/app.go +++ b/abci/tests/test_app/app.go @@ -26,7 +26,7 @@ func startClient(abciType string) abcicli.Client { } func setOption(client abcicli.Client, key, value string) { - _, err := client.SetOptionSync(types.RequestSetOption{key, value}) + _, err := client.SetOptionSync(types.RequestSetOption{Key: key, Value: value}) if err != nil { panicf("setting %v=%v: \nerr: %v", key, value, err) } diff --git a/abci/types/application.go b/abci/types/application.go index ef1bc92e..88f8d001 100644 --- a/abci/types/application.go +++ b/abci/types/application.go @@ -85,7 +85,7 @@ func NewGRPCApplication(app Application) *GRPCApplication { } func (app *GRPCApplication) Echo(ctx context.Context, req *RequestEcho) (*ResponseEcho, error) { - return &ResponseEcho{req.Message}, nil + return &ResponseEcho{Message: req.Message}, nil } func (app *GRPCApplication) Flush(ctx context.Context, req *RequestFlush) (*ResponseFlush, error) { diff --git a/abci/types/messages.go b/abci/types/messages.go index 52e4b675..cb64a15d 100644 --- a/abci/types/messages.go +++ b/abci/types/messages.go @@ -71,7 +71,7 @@ func encodeVarint(w io.Writer, i int64) (err error) { func ToRequestEcho(message string) *Request { return &Request{ - Value: &Request_Echo{&RequestEcho{message}}, + Value: &Request_Echo{&RequestEcho{Message: message}}, } } @@ -95,13 +95,13 @@ func ToRequestSetOption(req RequestSetOption) *Request { func ToRequestDeliverTx(tx []byte) *Request { return &Request{ - Value: &Request_DeliverTx{&RequestDeliverTx{tx}}, + Value: &Request_DeliverTx{&RequestDeliverTx{Tx: tx}}, } } func ToRequestCheckTx(tx []byte) *Request { return &Request{ - Value: &Request_CheckTx{&RequestCheckTx{tx}}, + Value: &Request_CheckTx{&RequestCheckTx{Tx: tx}}, } } @@ -139,13 +139,13 @@ func ToRequestEndBlock(req RequestEndBlock) *Request { func ToResponseException(errStr string) *Response { return &Response{ - Value: &Response_Exception{&ResponseException{errStr}}, + Value: &Response_Exception{&ResponseException{Error: errStr}}, } } func ToResponseEcho(message string) *Response { return &Response{ - Value: &Response_Echo{&ResponseEcho{message}}, + Value: &Response_Echo{&ResponseEcho{Message: message}}, } } diff --git a/abci/types/messages_test.go b/abci/types/messages_test.go index da6595a4..603e602a 100644 --- a/abci/types/messages_test.go +++ b/abci/types/messages_test.go @@ -85,7 +85,6 @@ func TestWriteReadMessage2(t *testing.T) { Tags: []cmn.KVPair{ cmn.KVPair{[]byte("abc"), []byte("def")}, }, - // Fee: cmn.KI64Pair{ }, // TODO: add the rest } diff --git a/abci/types/types.pb.go b/abci/types/types.pb.go index 57dd1439..ac71d91c 100644 --- a/abci/types/types.pb.go +++ b/abci/types/types.pb.go @@ -1,48 +1,6 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: abci/types/types.proto -/* - Package types is a generated protocol buffer package. - - It is generated from these files: - abci/types/types.proto - - It has these top-level messages: - Request - RequestEcho - RequestFlush - RequestInfo - RequestSetOption - RequestInitChain - RequestQuery - RequestBeginBlock - RequestCheckTx - RequestDeliverTx - RequestEndBlock - RequestCommit - Response - ResponseException - ResponseEcho - ResponseFlush - ResponseInfo - ResponseSetOption - ResponseInitChain - ResponseQuery - ResponseBeginBlock - ResponseCheckTx - ResponseDeliverTx - ResponseEndBlock - ResponseCommit - ConsensusParams - BlockSize - TxSize - BlockGossip - Header - Validator - SigningValidator - PubKey - Evidence -*/ //nolint package types @@ -51,13 +9,18 @@ import golang_proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import _ "github.com/gogo/protobuf/gogoproto" +import _ "github.com/golang/protobuf/ptypes/timestamp" import common "github.com/tendermint/tendermint/libs/common" +import time "time" + import bytes "bytes" import context "golang.org/x/net/context" import grpc "google.golang.org/grpc" +import github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + import io "io" // Reference imports to suppress errors if they are not otherwise used. @@ -65,6 +28,7 @@ var _ = proto.Marshal var _ = golang_proto.Marshal var _ = fmt.Errorf var _ = math.Inf +var _ = time.Kitchen // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. @@ -85,13 +49,44 @@ type Request struct { // *Request_DeliverTx // *Request_EndBlock // *Request_Commit - Value isRequest_Value `protobuf_oneof:"value"` + Value isRequest_Value `protobuf_oneof:"value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{0} } +func (m *Request) Reset() { *m = Request{} } +func (m *Request) String() string { return proto.CompactTextString(m) } +func (*Request) ProtoMessage() {} +func (*Request) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{0} +} +func (m *Request) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Request.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *Request) XXX_Merge(src proto.Message) { + xxx_messageInfo_Request.Merge(dst, src) +} +func (m *Request) XXX_Size() int { + return m.Size() +} +func (m *Request) XXX_DiscardUnknown() { + xxx_messageInfo_Request.DiscardUnknown(m) +} + +var xxx_messageInfo_Request proto.InternalMessageInfo type isRequest_Value interface { isRequest_Value() @@ -415,57 +410,57 @@ func _Request_OneofSizer(msg proto.Message) (n int) { switch x := m.Value.(type) { case *Request_Echo: s := proto.Size(x.Echo) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_Flush: s := proto.Size(x.Flush) - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_Info: s := proto.Size(x.Info) - n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_SetOption: s := proto.Size(x.SetOption) - n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_InitChain: s := proto.Size(x.InitChain) - n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_Query: s := proto.Size(x.Query) - n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_BeginBlock: s := proto.Size(x.BeginBlock) - n += proto.SizeVarint(8<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_CheckTx: s := proto.Size(x.CheckTx) - n += proto.SizeVarint(9<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_DeliverTx: s := proto.Size(x.DeliverTx) - n += proto.SizeVarint(19<<3 | proto.WireBytes) + n += 2 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_EndBlock: s := proto.Size(x.EndBlock) - n += proto.SizeVarint(11<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Request_Commit: s := proto.Size(x.Commit) - n += proto.SizeVarint(12<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -476,13 +471,44 @@ func _Request_OneofSizer(msg proto.Message) (n int) { } type RequestEcho struct { - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestEcho) Reset() { *m = RequestEcho{} } -func (m *RequestEcho) String() string { return proto.CompactTextString(m) } -func (*RequestEcho) ProtoMessage() {} -func (*RequestEcho) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{1} } +func (m *RequestEcho) Reset() { *m = RequestEcho{} } +func (m *RequestEcho) String() string { return proto.CompactTextString(m) } +func (*RequestEcho) ProtoMessage() {} +func (*RequestEcho) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{1} +} +func (m *RequestEcho) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestEcho) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestEcho.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestEcho) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestEcho.Merge(dst, src) +} +func (m *RequestEcho) XXX_Size() int { + return m.Size() +} +func (m *RequestEcho) XXX_DiscardUnknown() { + xxx_messageInfo_RequestEcho.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestEcho proto.InternalMessageInfo func (m *RequestEcho) GetMessage() string { if m != nil { @@ -492,21 +518,83 @@ func (m *RequestEcho) GetMessage() string { } type RequestFlush struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestFlush) Reset() { *m = RequestFlush{} } -func (m *RequestFlush) String() string { return proto.CompactTextString(m) } -func (*RequestFlush) ProtoMessage() {} -func (*RequestFlush) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{2} } +func (m *RequestFlush) Reset() { *m = RequestFlush{} } +func (m *RequestFlush) String() string { return proto.CompactTextString(m) } +func (*RequestFlush) ProtoMessage() {} +func (*RequestFlush) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{2} +} +func (m *RequestFlush) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestFlush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestFlush.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestFlush) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestFlush.Merge(dst, src) +} +func (m *RequestFlush) XXX_Size() int { + return m.Size() +} +func (m *RequestFlush) XXX_DiscardUnknown() { + xxx_messageInfo_RequestFlush.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestFlush proto.InternalMessageInfo type RequestInfo struct { - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestInfo) Reset() { *m = RequestInfo{} } -func (m *RequestInfo) String() string { return proto.CompactTextString(m) } -func (*RequestInfo) ProtoMessage() {} -func (*RequestInfo) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{3} } +func (m *RequestInfo) Reset() { *m = RequestInfo{} } +func (m *RequestInfo) String() string { return proto.CompactTextString(m) } +func (*RequestInfo) ProtoMessage() {} +func (*RequestInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{3} +} +func (m *RequestInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestInfo.Merge(dst, src) +} +func (m *RequestInfo) XXX_Size() int { + return m.Size() +} +func (m *RequestInfo) XXX_DiscardUnknown() { + xxx_messageInfo_RequestInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestInfo proto.InternalMessageInfo func (m *RequestInfo) GetVersion() string { if m != nil { @@ -517,14 +605,45 @@ func (m *RequestInfo) GetVersion() string { // nondeterministic type RequestSetOption struct { - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestSetOption) Reset() { *m = RequestSetOption{} } -func (m *RequestSetOption) String() string { return proto.CompactTextString(m) } -func (*RequestSetOption) ProtoMessage() {} -func (*RequestSetOption) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{4} } +func (m *RequestSetOption) Reset() { *m = RequestSetOption{} } +func (m *RequestSetOption) String() string { return proto.CompactTextString(m) } +func (*RequestSetOption) ProtoMessage() {} +func (*RequestSetOption) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{4} +} +func (m *RequestSetOption) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestSetOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestSetOption.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestSetOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestSetOption.Merge(dst, src) +} +func (m *RequestSetOption) XXX_Size() int { + return m.Size() +} +func (m *RequestSetOption) XXX_DiscardUnknown() { + xxx_messageInfo_RequestSetOption.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestSetOption proto.InternalMessageInfo func (m *RequestSetOption) GetKey() string { if m != nil { @@ -541,23 +660,54 @@ func (m *RequestSetOption) GetValue() string { } type RequestInitChain struct { - Time int64 `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"` - ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - ConsensusParams *ConsensusParams `protobuf:"bytes,3,opt,name=consensus_params,json=consensusParams" json:"consensus_params,omitempty"` - Validators []Validator `protobuf:"bytes,4,rep,name=validators" json:"validators"` - AppStateBytes []byte `protobuf:"bytes,5,opt,name=app_state_bytes,json=appStateBytes,proto3" json:"app_state_bytes,omitempty"` + Time time.Time `protobuf:"bytes,1,opt,name=time,stdtime" json:"time"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ConsensusParams *ConsensusParams `protobuf:"bytes,3,opt,name=consensus_params,json=consensusParams" json:"consensus_params,omitempty"` + Validators []Validator `protobuf:"bytes,4,rep,name=validators" json:"validators"` + AppStateBytes []byte `protobuf:"bytes,5,opt,name=app_state_bytes,json=appStateBytes,proto3" json:"app_state_bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestInitChain) Reset() { *m = RequestInitChain{} } -func (m *RequestInitChain) String() string { return proto.CompactTextString(m) } -func (*RequestInitChain) ProtoMessage() {} -func (*RequestInitChain) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{5} } +func (m *RequestInitChain) Reset() { *m = RequestInitChain{} } +func (m *RequestInitChain) String() string { return proto.CompactTextString(m) } +func (*RequestInitChain) ProtoMessage() {} +func (*RequestInitChain) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{5} +} +func (m *RequestInitChain) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestInitChain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestInitChain.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestInitChain) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestInitChain.Merge(dst, src) +} +func (m *RequestInitChain) XXX_Size() int { + return m.Size() +} +func (m *RequestInitChain) XXX_DiscardUnknown() { + xxx_messageInfo_RequestInitChain.DiscardUnknown(m) +} -func (m *RequestInitChain) GetTime() int64 { +var xxx_messageInfo_RequestInitChain proto.InternalMessageInfo + +func (m *RequestInitChain) GetTime() time.Time { if m != nil { return m.Time } - return 0 + return time.Time{} } func (m *RequestInitChain) GetChainId() string { @@ -589,16 +739,47 @@ func (m *RequestInitChain) GetAppStateBytes() []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 int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` - Prove bool `protobuf:"varint,4,opt,name=prove,proto3" json:"prove,omitempty"` + 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 int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` + Prove bool `protobuf:"varint,4,opt,name=prove,proto3" json:"prove,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestQuery) Reset() { *m = RequestQuery{} } -func (m *RequestQuery) String() string { return proto.CompactTextString(m) } -func (*RequestQuery) ProtoMessage() {} -func (*RequestQuery) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{6} } +func (m *RequestQuery) Reset() { *m = RequestQuery{} } +func (m *RequestQuery) String() string { return proto.CompactTextString(m) } +func (*RequestQuery) ProtoMessage() {} +func (*RequestQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{6} +} +func (m *RequestQuery) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestQuery.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestQuery.Merge(dst, src) +} +func (m *RequestQuery) XXX_Size() int { + return m.Size() +} +func (m *RequestQuery) XXX_DiscardUnknown() { + xxx_messageInfo_RequestQuery.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestQuery proto.InternalMessageInfo func (m *RequestQuery) GetData() []byte { if m != nil { @@ -628,17 +809,49 @@ func (m *RequestQuery) GetProve() bool { return false } +// NOTE: validators here have empty pubkeys. 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"` - Validators []SigningValidator `protobuf:"bytes,3,rep,name=validators" json:"validators"` - ByzantineValidators []Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators" json:"byzantine_validators"` + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Header Header `protobuf:"bytes,2,opt,name=header" json:"header"` + LastCommitInfo LastCommitInfo `protobuf:"bytes,3,opt,name=last_commit_info,json=lastCommitInfo" json:"last_commit_info"` + ByzantineValidators []Evidence `protobuf:"bytes,4,rep,name=byzantine_validators,json=byzantineValidators" json:"byzantine_validators"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} } -func (m *RequestBeginBlock) String() string { return proto.CompactTextString(m) } -func (*RequestBeginBlock) ProtoMessage() {} -func (*RequestBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{7} } +func (m *RequestBeginBlock) Reset() { *m = RequestBeginBlock{} } +func (m *RequestBeginBlock) String() string { return proto.CompactTextString(m) } +func (*RequestBeginBlock) ProtoMessage() {} +func (*RequestBeginBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{7} +} +func (m *RequestBeginBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestBeginBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestBeginBlock.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestBeginBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestBeginBlock.Merge(dst, src) +} +func (m *RequestBeginBlock) XXX_Size() int { + return m.Size() +} +func (m *RequestBeginBlock) XXX_DiscardUnknown() { + xxx_messageInfo_RequestBeginBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestBeginBlock proto.InternalMessageInfo func (m *RequestBeginBlock) GetHash() []byte { if m != nil { @@ -654,11 +867,11 @@ func (m *RequestBeginBlock) GetHeader() Header { return Header{} } -func (m *RequestBeginBlock) GetValidators() []SigningValidator { +func (m *RequestBeginBlock) GetLastCommitInfo() LastCommitInfo { if m != nil { - return m.Validators + return m.LastCommitInfo } - return nil + return LastCommitInfo{} } func (m *RequestBeginBlock) GetByzantineValidators() []Evidence { @@ -669,13 +882,44 @@ func (m *RequestBeginBlock) GetByzantineValidators() []Evidence { } type RequestCheckTx struct { - Tx []byte `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` + Tx []byte `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestCheckTx) Reset() { *m = RequestCheckTx{} } -func (m *RequestCheckTx) String() string { return proto.CompactTextString(m) } -func (*RequestCheckTx) ProtoMessage() {} -func (*RequestCheckTx) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{8} } +func (m *RequestCheckTx) Reset() { *m = RequestCheckTx{} } +func (m *RequestCheckTx) String() string { return proto.CompactTextString(m) } +func (*RequestCheckTx) ProtoMessage() {} +func (*RequestCheckTx) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{8} +} +func (m *RequestCheckTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestCheckTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestCheckTx.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestCheckTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestCheckTx.Merge(dst, src) +} +func (m *RequestCheckTx) XXX_Size() int { + return m.Size() +} +func (m *RequestCheckTx) XXX_DiscardUnknown() { + xxx_messageInfo_RequestCheckTx.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestCheckTx proto.InternalMessageInfo func (m *RequestCheckTx) GetTx() []byte { if m != nil { @@ -685,13 +929,44 @@ func (m *RequestCheckTx) GetTx() []byte { } type RequestDeliverTx struct { - Tx []byte `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` + Tx []byte `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestDeliverTx) Reset() { *m = RequestDeliverTx{} } -func (m *RequestDeliverTx) String() string { return proto.CompactTextString(m) } -func (*RequestDeliverTx) ProtoMessage() {} -func (*RequestDeliverTx) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{9} } +func (m *RequestDeliverTx) Reset() { *m = RequestDeliverTx{} } +func (m *RequestDeliverTx) String() string { return proto.CompactTextString(m) } +func (*RequestDeliverTx) ProtoMessage() {} +func (*RequestDeliverTx) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{9} +} +func (m *RequestDeliverTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestDeliverTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestDeliverTx.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestDeliverTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestDeliverTx.Merge(dst, src) +} +func (m *RequestDeliverTx) XXX_Size() int { + return m.Size() +} +func (m *RequestDeliverTx) XXX_DiscardUnknown() { + xxx_messageInfo_RequestDeliverTx.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestDeliverTx proto.InternalMessageInfo func (m *RequestDeliverTx) GetTx() []byte { if m != nil { @@ -701,13 +976,44 @@ func (m *RequestDeliverTx) GetTx() []byte { } type RequestEndBlock struct { - Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestEndBlock) Reset() { *m = RequestEndBlock{} } -func (m *RequestEndBlock) String() string { return proto.CompactTextString(m) } -func (*RequestEndBlock) ProtoMessage() {} -func (*RequestEndBlock) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{10} } +func (m *RequestEndBlock) Reset() { *m = RequestEndBlock{} } +func (m *RequestEndBlock) String() string { return proto.CompactTextString(m) } +func (*RequestEndBlock) ProtoMessage() {} +func (*RequestEndBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{10} +} +func (m *RequestEndBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestEndBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestEndBlock.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestEndBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestEndBlock.Merge(dst, src) +} +func (m *RequestEndBlock) XXX_Size() int { + return m.Size() +} +func (m *RequestEndBlock) XXX_DiscardUnknown() { + xxx_messageInfo_RequestEndBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestEndBlock proto.InternalMessageInfo func (m *RequestEndBlock) GetHeight() int64 { if m != nil { @@ -717,12 +1023,43 @@ func (m *RequestEndBlock) GetHeight() int64 { } type RequestCommit struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *RequestCommit) Reset() { *m = RequestCommit{} } -func (m *RequestCommit) String() string { return proto.CompactTextString(m) } -func (*RequestCommit) ProtoMessage() {} -func (*RequestCommit) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{11} } +func (m *RequestCommit) Reset() { *m = RequestCommit{} } +func (m *RequestCommit) String() string { return proto.CompactTextString(m) } +func (*RequestCommit) ProtoMessage() {} +func (*RequestCommit) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{11} +} +func (m *RequestCommit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RequestCommit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RequestCommit.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *RequestCommit) XXX_Merge(src proto.Message) { + xxx_messageInfo_RequestCommit.Merge(dst, src) +} +func (m *RequestCommit) XXX_Size() int { + return m.Size() +} +func (m *RequestCommit) XXX_DiscardUnknown() { + xxx_messageInfo_RequestCommit.DiscardUnknown(m) +} + +var xxx_messageInfo_RequestCommit proto.InternalMessageInfo type Response struct { // Types that are valid to be assigned to Value: @@ -738,13 +1075,44 @@ type Response struct { // *Response_DeliverTx // *Response_EndBlock // *Response_Commit - Value isResponse_Value `protobuf_oneof:"value"` + Value isResponse_Value `protobuf_oneof:"value"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} -func (*Response) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{12} } +func (m *Response) Reset() { *m = Response{} } +func (m *Response) String() string { return proto.CompactTextString(m) } +func (*Response) ProtoMessage() {} +func (*Response) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{12} +} +func (m *Response) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Response.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *Response) XXX_Merge(src proto.Message) { + xxx_messageInfo_Response.Merge(dst, src) +} +func (m *Response) XXX_Size() int { + return m.Size() +} +func (m *Response) XXX_DiscardUnknown() { + xxx_messageInfo_Response.DiscardUnknown(m) +} + +var xxx_messageInfo_Response proto.InternalMessageInfo type isResponse_Value interface { isResponse_Value() @@ -1093,62 +1461,62 @@ func _Response_OneofSizer(msg proto.Message) (n int) { switch x := m.Value.(type) { case *Response_Exception: s := proto.Size(x.Exception) - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_Echo: s := proto.Size(x.Echo) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_Flush: s := proto.Size(x.Flush) - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_Info: s := proto.Size(x.Info) - n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_SetOption: s := proto.Size(x.SetOption) - n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_InitChain: s := proto.Size(x.InitChain) - n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_Query: s := proto.Size(x.Query) - n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_BeginBlock: s := proto.Size(x.BeginBlock) - n += proto.SizeVarint(8<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_CheckTx: s := proto.Size(x.CheckTx) - n += proto.SizeVarint(9<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_DeliverTx: s := proto.Size(x.DeliverTx) - n += proto.SizeVarint(10<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_EndBlock: s := proto.Size(x.EndBlock) - n += proto.SizeVarint(11<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Response_Commit: s := proto.Size(x.Commit) - n += proto.SizeVarint(12<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -1160,13 +1528,44 @@ func _Response_OneofSizer(msg proto.Message) (n int) { // nondeterministic type ResponseException struct { - Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseException) Reset() { *m = ResponseException{} } -func (m *ResponseException) String() string { return proto.CompactTextString(m) } -func (*ResponseException) ProtoMessage() {} -func (*ResponseException) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{13} } +func (m *ResponseException) Reset() { *m = ResponseException{} } +func (m *ResponseException) String() string { return proto.CompactTextString(m) } +func (*ResponseException) ProtoMessage() {} +func (*ResponseException) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{13} +} +func (m *ResponseException) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseException) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseException.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseException) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseException.Merge(dst, src) +} +func (m *ResponseException) XXX_Size() int { + return m.Size() +} +func (m *ResponseException) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseException.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseException proto.InternalMessageInfo func (m *ResponseException) GetError() string { if m != nil { @@ -1176,13 +1575,44 @@ func (m *ResponseException) GetError() string { } type ResponseEcho struct { - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseEcho) Reset() { *m = ResponseEcho{} } -func (m *ResponseEcho) String() string { return proto.CompactTextString(m) } -func (*ResponseEcho) ProtoMessage() {} -func (*ResponseEcho) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{14} } +func (m *ResponseEcho) Reset() { *m = ResponseEcho{} } +func (m *ResponseEcho) String() string { return proto.CompactTextString(m) } +func (*ResponseEcho) ProtoMessage() {} +func (*ResponseEcho) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{14} +} +func (m *ResponseEcho) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseEcho) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseEcho.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseEcho) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseEcho.Merge(dst, src) +} +func (m *ResponseEcho) XXX_Size() int { + return m.Size() +} +func (m *ResponseEcho) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseEcho.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseEcho proto.InternalMessageInfo func (m *ResponseEcho) GetMessage() string { if m != nil { @@ -1192,24 +1622,86 @@ func (m *ResponseEcho) GetMessage() string { } type ResponseFlush struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseFlush) Reset() { *m = ResponseFlush{} } -func (m *ResponseFlush) String() string { return proto.CompactTextString(m) } -func (*ResponseFlush) ProtoMessage() {} -func (*ResponseFlush) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{15} } +func (m *ResponseFlush) Reset() { *m = ResponseFlush{} } +func (m *ResponseFlush) String() string { return proto.CompactTextString(m) } +func (*ResponseFlush) ProtoMessage() {} +func (*ResponseFlush) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{15} +} +func (m *ResponseFlush) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseFlush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseFlush.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseFlush) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseFlush.Merge(dst, src) +} +func (m *ResponseFlush) XXX_Size() int { + return m.Size() +} +func (m *ResponseFlush) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseFlush.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseFlush proto.InternalMessageInfo 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 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"` + 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 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"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseInfo) Reset() { *m = ResponseInfo{} } -func (m *ResponseInfo) String() string { return proto.CompactTextString(m) } -func (*ResponseInfo) ProtoMessage() {} -func (*ResponseInfo) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{16} } +func (m *ResponseInfo) Reset() { *m = ResponseInfo{} } +func (m *ResponseInfo) String() string { return proto.CompactTextString(m) } +func (*ResponseInfo) ProtoMessage() {} +func (*ResponseInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{16} +} +func (m *ResponseInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseInfo.Merge(dst, src) +} +func (m *ResponseInfo) XXX_Size() int { + return m.Size() +} +func (m *ResponseInfo) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseInfo proto.InternalMessageInfo func (m *ResponseInfo) GetData() string { if m != nil { @@ -1243,14 +1735,45 @@ func (m *ResponseInfo) GetLastBlockAppHash() []byte { type ResponseSetOption struct { Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` // bytes data = 2; - Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` - Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseSetOption) Reset() { *m = ResponseSetOption{} } -func (m *ResponseSetOption) String() string { return proto.CompactTextString(m) } -func (*ResponseSetOption) ProtoMessage() {} -func (*ResponseSetOption) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{17} } +func (m *ResponseSetOption) Reset() { *m = ResponseSetOption{} } +func (m *ResponseSetOption) String() string { return proto.CompactTextString(m) } +func (*ResponseSetOption) ProtoMessage() {} +func (*ResponseSetOption) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{17} +} +func (m *ResponseSetOption) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseSetOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseSetOption.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseSetOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseSetOption.Merge(dst, src) +} +func (m *ResponseSetOption) XXX_Size() int { + return m.Size() +} +func (m *ResponseSetOption) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseSetOption.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseSetOption proto.InternalMessageInfo func (m *ResponseSetOption) GetCode() uint32 { if m != nil { @@ -1274,14 +1797,45 @@ func (m *ResponseSetOption) GetInfo() string { } type ResponseInitChain struct { - ConsensusParams *ConsensusParams `protobuf:"bytes,1,opt,name=consensus_params,json=consensusParams" json:"consensus_params,omitempty"` - Validators []Validator `protobuf:"bytes,2,rep,name=validators" json:"validators"` + ConsensusParams *ConsensusParams `protobuf:"bytes,1,opt,name=consensus_params,json=consensusParams" json:"consensus_params,omitempty"` + Validators []Validator `protobuf:"bytes,2,rep,name=validators" json:"validators"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseInitChain) Reset() { *m = ResponseInitChain{} } -func (m *ResponseInitChain) String() string { return proto.CompactTextString(m) } -func (*ResponseInitChain) ProtoMessage() {} -func (*ResponseInitChain) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{18} } +func (m *ResponseInitChain) Reset() { *m = ResponseInitChain{} } +func (m *ResponseInitChain) String() string { return proto.CompactTextString(m) } +func (*ResponseInitChain) ProtoMessage() {} +func (*ResponseInitChain) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{18} +} +func (m *ResponseInitChain) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseInitChain) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseInitChain.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseInitChain) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseInitChain.Merge(dst, src) +} +func (m *ResponseInitChain) XXX_Size() int { + return m.Size() +} +func (m *ResponseInitChain) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseInitChain.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseInitChain proto.InternalMessageInfo func (m *ResponseInitChain) GetConsensusParams() *ConsensusParams { if m != nil { @@ -1300,19 +1854,50 @@ func (m *ResponseInitChain) GetValidators() []Validator { type ResponseQuery struct { Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` // bytes data = 2; // use "value" instead. - Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` - Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` - Index int64 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` - Key []byte `protobuf:"bytes,6,opt,name=key,proto3" json:"key,omitempty"` - Value []byte `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"` - Proof []byte `protobuf:"bytes,8,opt,name=proof,proto3" json:"proof,omitempty"` - Height int64 `protobuf:"varint,9,opt,name=height,proto3" json:"height,omitempty"` + Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + Index int64 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` + Key []byte `protobuf:"bytes,6,opt,name=key,proto3" json:"key,omitempty"` + Value []byte `protobuf:"bytes,7,opt,name=value,proto3" json:"value,omitempty"` + Proof []byte `protobuf:"bytes,8,opt,name=proof,proto3" json:"proof,omitempty"` + Height int64 `protobuf:"varint,9,opt,name=height,proto3" json:"height,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseQuery) Reset() { *m = ResponseQuery{} } -func (m *ResponseQuery) String() string { return proto.CompactTextString(m) } -func (*ResponseQuery) ProtoMessage() {} -func (*ResponseQuery) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{19} } +func (m *ResponseQuery) Reset() { *m = ResponseQuery{} } +func (m *ResponseQuery) String() string { return proto.CompactTextString(m) } +func (*ResponseQuery) ProtoMessage() {} +func (*ResponseQuery) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{19} +} +func (m *ResponseQuery) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseQuery.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseQuery) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseQuery.Merge(dst, src) +} +func (m *ResponseQuery) XXX_Size() int { + return m.Size() +} +func (m *ResponseQuery) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseQuery.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseQuery proto.InternalMessageInfo func (m *ResponseQuery) GetCode() uint32 { if m != nil { @@ -1371,13 +1956,44 @@ func (m *ResponseQuery) GetHeight() int64 { } type ResponseBeginBlock struct { - Tags []common.KVPair `protobuf:"bytes,1,rep,name=tags" json:"tags,omitempty"` + Tags []common.KVPair `protobuf:"bytes,1,rep,name=tags" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseBeginBlock) Reset() { *m = ResponseBeginBlock{} } -func (m *ResponseBeginBlock) String() string { return proto.CompactTextString(m) } -func (*ResponseBeginBlock) ProtoMessage() {} -func (*ResponseBeginBlock) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{20} } +func (m *ResponseBeginBlock) Reset() { *m = ResponseBeginBlock{} } +func (m *ResponseBeginBlock) String() string { return proto.CompactTextString(m) } +func (*ResponseBeginBlock) ProtoMessage() {} +func (*ResponseBeginBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{20} +} +func (m *ResponseBeginBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseBeginBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseBeginBlock.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseBeginBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseBeginBlock.Merge(dst, src) +} +func (m *ResponseBeginBlock) XXX_Size() int { + return m.Size() +} +func (m *ResponseBeginBlock) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseBeginBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseBeginBlock proto.InternalMessageInfo func (m *ResponseBeginBlock) GetTags() []common.KVPair { if m != nil { @@ -1387,20 +2003,50 @@ func (m *ResponseBeginBlock) GetTags() []common.KVPair { } type ResponseCheckTx struct { - Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` - Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` - GasWanted int64 `protobuf:"varint,5,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` - GasUsed int64 `protobuf:"varint,6,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` - Tags []common.KVPair `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"` - Fee common.KI64Pair `protobuf:"bytes,8,opt,name=fee" json:"fee"` + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + GasWanted int64 `protobuf:"varint,5,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` + GasUsed int64 `protobuf:"varint,6,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + Tags []common.KVPair `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseCheckTx) Reset() { *m = ResponseCheckTx{} } -func (m *ResponseCheckTx) String() string { return proto.CompactTextString(m) } -func (*ResponseCheckTx) ProtoMessage() {} -func (*ResponseCheckTx) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{21} } +func (m *ResponseCheckTx) Reset() { *m = ResponseCheckTx{} } +func (m *ResponseCheckTx) String() string { return proto.CompactTextString(m) } +func (*ResponseCheckTx) ProtoMessage() {} +func (*ResponseCheckTx) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{21} +} +func (m *ResponseCheckTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseCheckTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseCheckTx.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseCheckTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseCheckTx.Merge(dst, src) +} +func (m *ResponseCheckTx) XXX_Size() int { + return m.Size() +} +func (m *ResponseCheckTx) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseCheckTx.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseCheckTx proto.InternalMessageInfo func (m *ResponseCheckTx) GetCode() uint32 { if m != nil { @@ -1451,28 +2097,51 @@ func (m *ResponseCheckTx) GetTags() []common.KVPair { return nil } -func (m *ResponseCheckTx) GetFee() common.KI64Pair { - if m != nil { - return m.Fee - } - return common.KI64Pair{} -} - type ResponseDeliverTx struct { - Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` - Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` - GasWanted int64 `protobuf:"varint,5,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` - GasUsed int64 `protobuf:"varint,6,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` - Tags []common.KVPair `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"` - Fee common.KI64Pair `protobuf:"bytes,8,opt,name=fee" json:"fee"` + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Log string `protobuf:"bytes,3,opt,name=log,proto3" json:"log,omitempty"` + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + GasWanted int64 `protobuf:"varint,5,opt,name=gas_wanted,json=gasWanted,proto3" json:"gas_wanted,omitempty"` + GasUsed int64 `protobuf:"varint,6,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + Tags []common.KVPair `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseDeliverTx) Reset() { *m = ResponseDeliverTx{} } -func (m *ResponseDeliverTx) String() string { return proto.CompactTextString(m) } -func (*ResponseDeliverTx) ProtoMessage() {} -func (*ResponseDeliverTx) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{22} } +func (m *ResponseDeliverTx) Reset() { *m = ResponseDeliverTx{} } +func (m *ResponseDeliverTx) String() string { return proto.CompactTextString(m) } +func (*ResponseDeliverTx) ProtoMessage() {} +func (*ResponseDeliverTx) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{22} +} +func (m *ResponseDeliverTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseDeliverTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseDeliverTx.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseDeliverTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseDeliverTx.Merge(dst, src) +} +func (m *ResponseDeliverTx) XXX_Size() int { + return m.Size() +} +func (m *ResponseDeliverTx) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseDeliverTx.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseDeliverTx proto.InternalMessageInfo func (m *ResponseDeliverTx) GetCode() uint32 { if m != nil { @@ -1523,23 +2192,47 @@ func (m *ResponseDeliverTx) GetTags() []common.KVPair { return nil } -func (m *ResponseDeliverTx) GetFee() common.KI64Pair { - if m != nil { - return m.Fee - } - return common.KI64Pair{} -} - type ResponseEndBlock struct { ValidatorUpdates []Validator `protobuf:"bytes,1,rep,name=validator_updates,json=validatorUpdates" json:"validator_updates"` ConsensusParamUpdates *ConsensusParams `protobuf:"bytes,2,opt,name=consensus_param_updates,json=consensusParamUpdates" json:"consensus_param_updates,omitempty"` Tags []common.KVPair `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseEndBlock) Reset() { *m = ResponseEndBlock{} } -func (m *ResponseEndBlock) String() string { return proto.CompactTextString(m) } -func (*ResponseEndBlock) ProtoMessage() {} -func (*ResponseEndBlock) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{23} } +func (m *ResponseEndBlock) Reset() { *m = ResponseEndBlock{} } +func (m *ResponseEndBlock) String() string { return proto.CompactTextString(m) } +func (*ResponseEndBlock) ProtoMessage() {} +func (*ResponseEndBlock) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{23} +} +func (m *ResponseEndBlock) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseEndBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseEndBlock.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseEndBlock) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseEndBlock.Merge(dst, src) +} +func (m *ResponseEndBlock) XXX_Size() int { + return m.Size() +} +func (m *ResponseEndBlock) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseEndBlock.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseEndBlock proto.InternalMessageInfo func (m *ResponseEndBlock) GetValidatorUpdates() []Validator { if m != nil { @@ -1564,13 +2257,44 @@ func (m *ResponseEndBlock) GetTags() []common.KVPair { type ResponseCommit struct { // reserve 1 - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ResponseCommit) Reset() { *m = ResponseCommit{} } -func (m *ResponseCommit) String() string { return proto.CompactTextString(m) } -func (*ResponseCommit) ProtoMessage() {} -func (*ResponseCommit) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{24} } +func (m *ResponseCommit) Reset() { *m = ResponseCommit{} } +func (m *ResponseCommit) String() string { return proto.CompactTextString(m) } +func (*ResponseCommit) ProtoMessage() {} +func (*ResponseCommit) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{24} +} +func (m *ResponseCommit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResponseCommit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResponseCommit.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ResponseCommit) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResponseCommit.Merge(dst, src) +} +func (m *ResponseCommit) XXX_Size() int { + return m.Size() +} +func (m *ResponseCommit) XXX_DiscardUnknown() { + xxx_messageInfo_ResponseCommit.DiscardUnknown(m) +} + +var xxx_messageInfo_ResponseCommit proto.InternalMessageInfo func (m *ResponseCommit) GetData() []byte { if m != nil { @@ -1582,15 +2306,46 @@ func (m *ResponseCommit) GetData() []byte { // ConsensusParams contains all consensus-relevant parameters // that can be adjusted by the abci app type ConsensusParams struct { - BlockSize *BlockSize `protobuf:"bytes,1,opt,name=block_size,json=blockSize" json:"block_size,omitempty"` - TxSize *TxSize `protobuf:"bytes,2,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"` - BlockGossip *BlockGossip `protobuf:"bytes,3,opt,name=block_gossip,json=blockGossip" json:"block_gossip,omitempty"` + BlockSize *BlockSize `protobuf:"bytes,1,opt,name=block_size,json=blockSize" json:"block_size,omitempty"` + TxSize *TxSize `protobuf:"bytes,2,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"` + BlockGossip *BlockGossip `protobuf:"bytes,3,opt,name=block_gossip,json=blockGossip" json:"block_gossip,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ConsensusParams) Reset() { *m = ConsensusParams{} } -func (m *ConsensusParams) String() string { return proto.CompactTextString(m) } -func (*ConsensusParams) ProtoMessage() {} -func (*ConsensusParams) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{25} } +func (m *ConsensusParams) Reset() { *m = ConsensusParams{} } +func (m *ConsensusParams) String() string { return proto.CompactTextString(m) } +func (*ConsensusParams) ProtoMessage() {} +func (*ConsensusParams) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{25} +} +func (m *ConsensusParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConsensusParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConsensusParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *ConsensusParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConsensusParams.Merge(dst, src) +} +func (m *ConsensusParams) XXX_Size() int { + return m.Size() +} +func (m *ConsensusParams) XXX_DiscardUnknown() { + xxx_messageInfo_ConsensusParams.DiscardUnknown(m) +} + +var xxx_messageInfo_ConsensusParams proto.InternalMessageInfo func (m *ConsensusParams) GetBlockSize() *BlockSize { if m != nil { @@ -1613,17 +2368,48 @@ func (m *ConsensusParams) GetBlockGossip() *BlockGossip { return nil } -// BlockSize contain limits on the block size. +// BlockSize contains limits on the block size. type BlockSize struct { - MaxBytes int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` - MaxTxs int32 `protobuf:"varint,2,opt,name=max_txs,json=maxTxs,proto3" json:"max_txs,omitempty"` - MaxGas int64 `protobuf:"varint,3,opt,name=max_gas,json=maxGas,proto3" json:"max_gas,omitempty"` + MaxBytes int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` + MaxTxs int32 `protobuf:"varint,2,opt,name=max_txs,json=maxTxs,proto3" json:"max_txs,omitempty"` + MaxGas int64 `protobuf:"varint,3,opt,name=max_gas,json=maxGas,proto3" json:"max_gas,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *BlockSize) Reset() { *m = BlockSize{} } -func (m *BlockSize) String() string { return proto.CompactTextString(m) } -func (*BlockSize) ProtoMessage() {} -func (*BlockSize) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{26} } +func (m *BlockSize) Reset() { *m = BlockSize{} } +func (m *BlockSize) String() string { return proto.CompactTextString(m) } +func (*BlockSize) ProtoMessage() {} +func (*BlockSize) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{26} +} +func (m *BlockSize) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BlockSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BlockSize.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *BlockSize) XXX_Merge(src proto.Message) { + xxx_messageInfo_BlockSize.Merge(dst, src) +} +func (m *BlockSize) XXX_Size() int { + return m.Size() +} +func (m *BlockSize) XXX_DiscardUnknown() { + xxx_messageInfo_BlockSize.DiscardUnknown(m) +} + +var xxx_messageInfo_BlockSize proto.InternalMessageInfo func (m *BlockSize) GetMaxBytes() int32 { if m != nil { @@ -1646,16 +2432,47 @@ func (m *BlockSize) GetMaxGas() int64 { return 0 } -// TxSize contain limits on the tx size. +// TxSize contains limits on the tx size. type TxSize struct { - MaxBytes int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` - MaxGas int64 `protobuf:"varint,2,opt,name=max_gas,json=maxGas,proto3" json:"max_gas,omitempty"` + MaxBytes int32 `protobuf:"varint,1,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` + MaxGas int64 `protobuf:"varint,2,opt,name=max_gas,json=maxGas,proto3" json:"max_gas,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *TxSize) Reset() { *m = TxSize{} } -func (m *TxSize) String() string { return proto.CompactTextString(m) } -func (*TxSize) ProtoMessage() {} -func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{27} } +func (m *TxSize) Reset() { *m = TxSize{} } +func (m *TxSize) String() string { return proto.CompactTextString(m) } +func (*TxSize) ProtoMessage() {} +func (*TxSize) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{27} +} +func (m *TxSize) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TxSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TxSize.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *TxSize) XXX_Merge(src proto.Message) { + xxx_messageInfo_TxSize.Merge(dst, src) +} +func (m *TxSize) XXX_Size() int { + return m.Size() +} +func (m *TxSize) XXX_DiscardUnknown() { + xxx_messageInfo_TxSize.DiscardUnknown(m) +} + +var xxx_messageInfo_TxSize proto.InternalMessageInfo func (m *TxSize) GetMaxBytes() int32 { if m != nil { @@ -1675,13 +2492,44 @@ func (m *TxSize) GetMaxGas() int64 { // elements of how blocks are gossiped type BlockGossip struct { // Note: must not be 0 - BlockPartSizeBytes int32 `protobuf:"varint,1,opt,name=block_part_size_bytes,json=blockPartSizeBytes,proto3" json:"block_part_size_bytes,omitempty"` + BlockPartSizeBytes int32 `protobuf:"varint,1,opt,name=block_part_size_bytes,json=blockPartSizeBytes,proto3" json:"block_part_size_bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *BlockGossip) Reset() { *m = BlockGossip{} } -func (m *BlockGossip) String() string { return proto.CompactTextString(m) } -func (*BlockGossip) ProtoMessage() {} -func (*BlockGossip) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{28} } +func (m *BlockGossip) Reset() { *m = BlockGossip{} } +func (m *BlockGossip) String() string { return proto.CompactTextString(m) } +func (*BlockGossip) ProtoMessage() {} +func (*BlockGossip) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{28} +} +func (m *BlockGossip) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BlockGossip) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BlockGossip.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *BlockGossip) XXX_Merge(src proto.Message) { + xxx_messageInfo_BlockGossip.Merge(dst, src) +} +func (m *BlockGossip) XXX_Size() int { + return m.Size() +} +func (m *BlockGossip) XXX_DiscardUnknown() { + xxx_messageInfo_BlockGossip.DiscardUnknown(m) +} + +var xxx_messageInfo_BlockGossip proto.InternalMessageInfo func (m *BlockGossip) GetBlockPartSizeBytes() int32 { if m != nil { @@ -1690,12 +2538,67 @@ func (m *BlockGossip) GetBlockPartSizeBytes() int32 { return 0 } +type LastCommitInfo struct { + CommitRound int32 `protobuf:"varint,1,opt,name=commit_round,json=commitRound,proto3" json:"commit_round,omitempty"` + Validators []SigningValidator `protobuf:"bytes,2,rep,name=validators" json:"validators"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LastCommitInfo) Reset() { *m = LastCommitInfo{} } +func (m *LastCommitInfo) String() string { return proto.CompactTextString(m) } +func (*LastCommitInfo) ProtoMessage() {} +func (*LastCommitInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{29} +} +func (m *LastCommitInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LastCommitInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LastCommitInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *LastCommitInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_LastCommitInfo.Merge(dst, src) +} +func (m *LastCommitInfo) XXX_Size() int { + return m.Size() +} +func (m *LastCommitInfo) XXX_DiscardUnknown() { + xxx_messageInfo_LastCommitInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_LastCommitInfo proto.InternalMessageInfo + +func (m *LastCommitInfo) GetCommitRound() int32 { + if m != nil { + return m.CommitRound + } + return 0 +} + +func (m *LastCommitInfo) GetValidators() []SigningValidator { + if m != nil { + return m.Validators + } + return nil +} + // just the minimum the app might need type Header struct { // basics - ChainID string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,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"` + ChainID string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Height int64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"` + Time time.Time `protobuf:"bytes,3,opt,name=time,stdtime" json:"time"` // txs NumTxs int32 `protobuf:"varint,4,opt,name=num_txs,json=numTxs,proto3" json:"num_txs,omitempty"` TotalTxs int64 `protobuf:"varint,5,opt,name=total_txs,json=totalTxs,proto3" json:"total_txs,omitempty"` @@ -1704,13 +2607,44 @@ type Header struct { ValidatorsHash []byte `protobuf:"bytes,7,opt,name=validators_hash,json=validatorsHash,proto3" json:"validators_hash,omitempty"` AppHash []byte `protobuf:"bytes,8,opt,name=app_hash,json=appHash,proto3" json:"app_hash,omitempty"` // consensus - Proposer Validator `protobuf:"bytes,9,opt,name=proposer" json:"proposer"` + Proposer Validator `protobuf:"bytes,9,opt,name=proposer" json:"proposer"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Header) Reset() { *m = Header{} } -func (m *Header) String() string { return proto.CompactTextString(m) } -func (*Header) ProtoMessage() {} -func (*Header) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{29} } +func (m *Header) Reset() { *m = Header{} } +func (m *Header) String() string { return proto.CompactTextString(m) } +func (*Header) ProtoMessage() {} +func (*Header) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{30} +} +func (m *Header) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Header.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *Header) XXX_Merge(src proto.Message) { + xxx_messageInfo_Header.Merge(dst, src) +} +func (m *Header) XXX_Size() int { + return m.Size() +} +func (m *Header) XXX_DiscardUnknown() { + xxx_messageInfo_Header.DiscardUnknown(m) +} + +var xxx_messageInfo_Header proto.InternalMessageInfo func (m *Header) GetChainID() string { if m != nil { @@ -1726,11 +2660,11 @@ func (m *Header) GetHeight() int64 { return 0 } -func (m *Header) GetTime() int64 { +func (m *Header) GetTime() time.Time { if m != nil { return m.Time } - return 0 + return time.Time{} } func (m *Header) GetNumTxs() int32 { @@ -1777,15 +2711,46 @@ func (m *Header) GetProposer() Validator { // Validator type Validator struct { - Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - PubKey PubKey `protobuf:"bytes,2,opt,name=pub_key,json=pubKey" json:"pub_key"` - Power int64 `protobuf:"varint,3,opt,name=power,proto3" json:"power,omitempty"` + Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + PubKey PubKey `protobuf:"bytes,2,opt,name=pub_key,json=pubKey" json:"pub_key"` + Power int64 `protobuf:"varint,3,opt,name=power,proto3" json:"power,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Validator) Reset() { *m = Validator{} } -func (m *Validator) String() string { return proto.CompactTextString(m) } -func (*Validator) ProtoMessage() {} -func (*Validator) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{30} } +func (m *Validator) Reset() { *m = Validator{} } +func (m *Validator) String() string { return proto.CompactTextString(m) } +func (*Validator) ProtoMessage() {} +func (*Validator) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{31} +} +func (m *Validator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Validator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *Validator) XXX_Merge(src proto.Message) { + xxx_messageInfo_Validator.Merge(dst, src) +} +func (m *Validator) XXX_Size() int { + return m.Size() +} +func (m *Validator) XXX_DiscardUnknown() { + xxx_messageInfo_Validator.DiscardUnknown(m) +} + +var xxx_messageInfo_Validator proto.InternalMessageInfo func (m *Validator) GetAddress() []byte { if m != nil { @@ -1810,14 +2775,45 @@ func (m *Validator) GetPower() int64 { // Validator with an extra bool type SigningValidator struct { - Validator Validator `protobuf:"bytes,1,opt,name=validator" json:"validator"` - SignedLastBlock bool `protobuf:"varint,2,opt,name=signed_last_block,json=signedLastBlock,proto3" json:"signed_last_block,omitempty"` + Validator Validator `protobuf:"bytes,1,opt,name=validator" json:"validator"` + SignedLastBlock bool `protobuf:"varint,2,opt,name=signed_last_block,json=signedLastBlock,proto3" json:"signed_last_block,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *SigningValidator) Reset() { *m = SigningValidator{} } -func (m *SigningValidator) String() string { return proto.CompactTextString(m) } -func (*SigningValidator) ProtoMessage() {} -func (*SigningValidator) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{31} } +func (m *SigningValidator) Reset() { *m = SigningValidator{} } +func (m *SigningValidator) String() string { return proto.CompactTextString(m) } +func (*SigningValidator) ProtoMessage() {} +func (*SigningValidator) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{32} +} +func (m *SigningValidator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SigningValidator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SigningValidator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *SigningValidator) XXX_Merge(src proto.Message) { + xxx_messageInfo_SigningValidator.Merge(dst, src) +} +func (m *SigningValidator) XXX_Size() int { + return m.Size() +} +func (m *SigningValidator) XXX_DiscardUnknown() { + xxx_messageInfo_SigningValidator.DiscardUnknown(m) +} + +var xxx_messageInfo_SigningValidator proto.InternalMessageInfo func (m *SigningValidator) GetValidator() Validator { if m != nil { @@ -1834,14 +2830,45 @@ func (m *SigningValidator) GetSignedLastBlock() bool { } type PubKey struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *PubKey) Reset() { *m = PubKey{} } -func (m *PubKey) String() string { return proto.CompactTextString(m) } -func (*PubKey) ProtoMessage() {} -func (*PubKey) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{32} } +func (m *PubKey) Reset() { *m = PubKey{} } +func (m *PubKey) String() string { return proto.CompactTextString(m) } +func (*PubKey) ProtoMessage() {} +func (*PubKey) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{33} +} +func (m *PubKey) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PubKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PubKey.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *PubKey) XXX_Merge(src proto.Message) { + xxx_messageInfo_PubKey.Merge(dst, src) +} +func (m *PubKey) XXX_Size() int { + return m.Size() +} +func (m *PubKey) XXX_DiscardUnknown() { + xxx_messageInfo_PubKey.DiscardUnknown(m) +} + +var xxx_messageInfo_PubKey proto.InternalMessageInfo func (m *PubKey) GetType() string { if m != nil { @@ -1858,17 +2885,48 @@ func (m *PubKey) GetData() []byte { } type Evidence struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Validator Validator `protobuf:"bytes,2,opt,name=validator" json:"validator"` - Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` - Time int64 `protobuf:"varint,4,opt,name=time,proto3" json:"time,omitempty"` - TotalVotingPower int64 `protobuf:"varint,5,opt,name=total_voting_power,json=totalVotingPower,proto3" json:"total_voting_power,omitempty"` + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Validator Validator `protobuf:"bytes,2,opt,name=validator" json:"validator"` + Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` + Time time.Time `protobuf:"bytes,4,opt,name=time,stdtime" json:"time"` + TotalVotingPower int64 `protobuf:"varint,5,opt,name=total_voting_power,json=totalVotingPower,proto3" json:"total_voting_power,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -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{33} } +func (m *Evidence) Reset() { *m = Evidence{} } +func (m *Evidence) String() string { return proto.CompactTextString(m) } +func (*Evidence) ProtoMessage() {} +func (*Evidence) Descriptor() ([]byte, []int) { + return fileDescriptor_types_d8da2202f45d32c0, []int{34} +} +func (m *Evidence) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Evidence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Evidence.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *Evidence) XXX_Merge(src proto.Message) { + xxx_messageInfo_Evidence.Merge(dst, src) +} +func (m *Evidence) XXX_Size() int { + return m.Size() +} +func (m *Evidence) XXX_DiscardUnknown() { + xxx_messageInfo_Evidence.DiscardUnknown(m) +} + +var xxx_messageInfo_Evidence proto.InternalMessageInfo func (m *Evidence) GetType() string { if m != nil { @@ -1891,11 +2949,11 @@ func (m *Evidence) GetHeight() int64 { return 0 } -func (m *Evidence) GetTime() int64 { +func (m *Evidence) GetTime() time.Time { if m != nil { return m.Time } - return 0 + return time.Time{} } func (m *Evidence) GetTotalVotingPower() int64 { @@ -1964,6 +3022,8 @@ func init() { golang_proto.RegisterType((*TxSize)(nil), "types.TxSize") proto.RegisterType((*BlockGossip)(nil), "types.BlockGossip") golang_proto.RegisterType((*BlockGossip)(nil), "types.BlockGossip") + proto.RegisterType((*LastCommitInfo)(nil), "types.LastCommitInfo") + golang_proto.RegisterType((*LastCommitInfo)(nil), "types.LastCommitInfo") proto.RegisterType((*Header)(nil), "types.Header") golang_proto.RegisterType((*Header)(nil), "types.Header") proto.RegisterType((*Validator)(nil), "types.Validator") @@ -2003,6 +3063,9 @@ func (this *Request) Equal(that interface{}) bool { } else if !this.Value.Equal(that1.Value) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *Request_Echo) Equal(that interface{}) bool { @@ -2291,6 +3354,9 @@ func (this *RequestEcho) Equal(that interface{}) bool { if this.Message != that1.Message { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestFlush) Equal(that interface{}) bool { @@ -2312,6 +3378,9 @@ func (this *RequestFlush) Equal(that interface{}) bool { } else if this == nil { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestInfo) Equal(that interface{}) bool { @@ -2336,6 +3405,9 @@ func (this *RequestInfo) Equal(that interface{}) bool { if this.Version != that1.Version { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestSetOption) Equal(that interface{}) bool { @@ -2363,6 +3435,9 @@ func (this *RequestSetOption) Equal(that interface{}) bool { if this.Value != that1.Value { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestInitChain) Equal(that interface{}) bool { @@ -2384,7 +3459,7 @@ func (this *RequestInitChain) Equal(that interface{}) bool { } else if this == nil { return false } - if this.Time != that1.Time { + if !this.Time.Equal(that1.Time) { return false } if this.ChainId != that1.ChainId { @@ -2404,6 +3479,9 @@ func (this *RequestInitChain) Equal(that interface{}) bool { if !bytes.Equal(this.AppStateBytes, that1.AppStateBytes) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestQuery) Equal(that interface{}) bool { @@ -2437,6 +3515,9 @@ func (this *RequestQuery) Equal(that interface{}) bool { if this.Prove != that1.Prove { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestBeginBlock) Equal(that interface{}) bool { @@ -2464,14 +3545,9 @@ func (this *RequestBeginBlock) Equal(that interface{}) bool { if !this.Header.Equal(&that1.Header) { return false } - if len(this.Validators) != len(that1.Validators) { + if !this.LastCommitInfo.Equal(&that1.LastCommitInfo) { return false } - for i := range this.Validators { - if !this.Validators[i].Equal(&that1.Validators[i]) { - return false - } - } if len(this.ByzantineValidators) != len(that1.ByzantineValidators) { return false } @@ -2480,6 +3556,9 @@ func (this *RequestBeginBlock) Equal(that interface{}) bool { return false } } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestCheckTx) Equal(that interface{}) bool { @@ -2504,6 +3583,9 @@ func (this *RequestCheckTx) Equal(that interface{}) bool { if !bytes.Equal(this.Tx, that1.Tx) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestDeliverTx) Equal(that interface{}) bool { @@ -2528,6 +3610,9 @@ func (this *RequestDeliverTx) Equal(that interface{}) bool { if !bytes.Equal(this.Tx, that1.Tx) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestEndBlock) Equal(that interface{}) bool { @@ -2552,6 +3637,9 @@ func (this *RequestEndBlock) Equal(that interface{}) bool { if this.Height != that1.Height { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *RequestCommit) Equal(that interface{}) bool { @@ -2573,6 +3661,9 @@ func (this *RequestCommit) Equal(that interface{}) bool { } else if this == nil { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *Response) Equal(that interface{}) bool { @@ -2603,6 +3694,9 @@ func (this *Response) Equal(that interface{}) bool { } else if !this.Value.Equal(that1.Value) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *Response_Exception) Equal(that interface{}) bool { @@ -2915,6 +4009,9 @@ func (this *ResponseException) Equal(that interface{}) bool { if this.Error != that1.Error { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseEcho) Equal(that interface{}) bool { @@ -2939,6 +4036,9 @@ func (this *ResponseEcho) Equal(that interface{}) bool { if this.Message != that1.Message { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseFlush) Equal(that interface{}) bool { @@ -2960,6 +4060,9 @@ func (this *ResponseFlush) Equal(that interface{}) bool { } else if this == nil { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseInfo) Equal(that interface{}) bool { @@ -2993,6 +4096,9 @@ func (this *ResponseInfo) Equal(that interface{}) bool { if !bytes.Equal(this.LastBlockAppHash, that1.LastBlockAppHash) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseSetOption) Equal(that interface{}) bool { @@ -3023,6 +4129,9 @@ func (this *ResponseSetOption) Equal(that interface{}) bool { if this.Info != that1.Info { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseInitChain) Equal(that interface{}) bool { @@ -3055,6 +4164,9 @@ func (this *ResponseInitChain) Equal(that interface{}) bool { return false } } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseQuery) Equal(that interface{}) bool { @@ -3100,6 +4212,9 @@ func (this *ResponseQuery) Equal(that interface{}) bool { if this.Height != that1.Height { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseBeginBlock) Equal(that interface{}) bool { @@ -3129,6 +4244,9 @@ func (this *ResponseBeginBlock) Equal(that interface{}) bool { return false } } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseCheckTx) Equal(that interface{}) bool { @@ -3176,7 +4294,7 @@ func (this *ResponseCheckTx) Equal(that interface{}) bool { return false } } - if !this.Fee.Equal(&that1.Fee) { + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { return false } return true @@ -3226,7 +4344,7 @@ func (this *ResponseDeliverTx) Equal(that interface{}) bool { return false } } - if !this.Fee.Equal(&that1.Fee) { + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { return false } return true @@ -3269,6 +4387,9 @@ func (this *ResponseEndBlock) Equal(that interface{}) bool { return false } } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ResponseCommit) Equal(that interface{}) bool { @@ -3293,6 +4414,9 @@ func (this *ResponseCommit) Equal(that interface{}) bool { if !bytes.Equal(this.Data, that1.Data) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *ConsensusParams) Equal(that interface{}) bool { @@ -3323,6 +4447,9 @@ func (this *ConsensusParams) Equal(that interface{}) bool { if !this.BlockGossip.Equal(that1.BlockGossip) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *BlockSize) Equal(that interface{}) bool { @@ -3353,6 +4480,9 @@ func (this *BlockSize) Equal(that interface{}) bool { if this.MaxGas != that1.MaxGas { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *TxSize) Equal(that interface{}) bool { @@ -3380,6 +4510,9 @@ func (this *TxSize) Equal(that interface{}) bool { if this.MaxGas != that1.MaxGas { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *BlockGossip) Equal(that interface{}) bool { @@ -3404,6 +4537,44 @@ func (this *BlockGossip) Equal(that interface{}) bool { if this.BlockPartSizeBytes != that1.BlockPartSizeBytes { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } + return true +} +func (this *LastCommitInfo) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*LastCommitInfo) + if !ok { + that2, ok := that.(LastCommitInfo) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.CommitRound != that1.CommitRound { + return false + } + if len(this.Validators) != len(that1.Validators) { + return false + } + for i := range this.Validators { + if !this.Validators[i].Equal(&that1.Validators[i]) { + return false + } + } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *Header) Equal(that interface{}) bool { @@ -3431,7 +4602,7 @@ func (this *Header) Equal(that interface{}) bool { if this.Height != that1.Height { return false } - if this.Time != that1.Time { + if !this.Time.Equal(that1.Time) { return false } if this.NumTxs != that1.NumTxs { @@ -3452,6 +4623,9 @@ func (this *Header) Equal(that interface{}) bool { if !this.Proposer.Equal(&that1.Proposer) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *Validator) Equal(that interface{}) bool { @@ -3482,6 +4656,9 @@ func (this *Validator) Equal(that interface{}) bool { if this.Power != that1.Power { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *SigningValidator) Equal(that interface{}) bool { @@ -3509,6 +4686,9 @@ func (this *SigningValidator) Equal(that interface{}) bool { if this.SignedLastBlock != that1.SignedLastBlock { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *PubKey) Equal(that interface{}) bool { @@ -3536,6 +4716,9 @@ func (this *PubKey) Equal(that interface{}) bool { if !bytes.Equal(this.Data, that1.Data) { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } func (this *Evidence) Equal(that interface{}) bool { @@ -3566,12 +4749,15 @@ func (this *Evidence) Equal(that interface{}) bool { if this.Height != that1.Height { return false } - if this.Time != that1.Time { + if !this.Time.Equal(that1.Time) { return false } if this.TotalVotingPower != that1.TotalVotingPower { return false } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } return true } @@ -3609,7 +4795,7 @@ func NewABCIApplicationClient(cc *grpc.ClientConn) ABCIApplicationClient { func (c *aBCIApplicationClient) Echo(ctx context.Context, in *RequestEcho, opts ...grpc.CallOption) (*ResponseEcho, error) { out := new(ResponseEcho) - err := grpc.Invoke(ctx, "/types.ABCIApplication/Echo", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/Echo", in, out, opts...) if err != nil { return nil, err } @@ -3618,7 +4804,7 @@ func (c *aBCIApplicationClient) Echo(ctx context.Context, in *RequestEcho, opts func (c *aBCIApplicationClient) Flush(ctx context.Context, in *RequestFlush, opts ...grpc.CallOption) (*ResponseFlush, error) { out := new(ResponseFlush) - err := grpc.Invoke(ctx, "/types.ABCIApplication/Flush", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/Flush", in, out, opts...) if err != nil { return nil, err } @@ -3627,7 +4813,7 @@ func (c *aBCIApplicationClient) Flush(ctx context.Context, in *RequestFlush, opt func (c *aBCIApplicationClient) Info(ctx context.Context, in *RequestInfo, opts ...grpc.CallOption) (*ResponseInfo, error) { out := new(ResponseInfo) - err := grpc.Invoke(ctx, "/types.ABCIApplication/Info", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/Info", in, out, opts...) if err != nil { return nil, err } @@ -3636,7 +4822,7 @@ func (c *aBCIApplicationClient) Info(ctx context.Context, in *RequestInfo, opts func (c *aBCIApplicationClient) SetOption(ctx context.Context, in *RequestSetOption, opts ...grpc.CallOption) (*ResponseSetOption, error) { out := new(ResponseSetOption) - err := grpc.Invoke(ctx, "/types.ABCIApplication/SetOption", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/SetOption", in, out, opts...) if err != nil { return nil, err } @@ -3645,7 +4831,7 @@ func (c *aBCIApplicationClient) SetOption(ctx context.Context, in *RequestSetOpt func (c *aBCIApplicationClient) DeliverTx(ctx context.Context, in *RequestDeliverTx, opts ...grpc.CallOption) (*ResponseDeliverTx, error) { out := new(ResponseDeliverTx) - err := grpc.Invoke(ctx, "/types.ABCIApplication/DeliverTx", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/DeliverTx", in, out, opts...) if err != nil { return nil, err } @@ -3654,7 +4840,7 @@ func (c *aBCIApplicationClient) DeliverTx(ctx context.Context, in *RequestDelive func (c *aBCIApplicationClient) CheckTx(ctx context.Context, in *RequestCheckTx, opts ...grpc.CallOption) (*ResponseCheckTx, error) { out := new(ResponseCheckTx) - err := grpc.Invoke(ctx, "/types.ABCIApplication/CheckTx", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/CheckTx", in, out, opts...) if err != nil { return nil, err } @@ -3663,7 +4849,7 @@ func (c *aBCIApplicationClient) CheckTx(ctx context.Context, in *RequestCheckTx, func (c *aBCIApplicationClient) Query(ctx context.Context, in *RequestQuery, opts ...grpc.CallOption) (*ResponseQuery, error) { out := new(ResponseQuery) - err := grpc.Invoke(ctx, "/types.ABCIApplication/Query", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/Query", in, out, opts...) if err != nil { return nil, err } @@ -3672,7 +4858,7 @@ func (c *aBCIApplicationClient) Query(ctx context.Context, in *RequestQuery, opt 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...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/Commit", in, out, opts...) if err != nil { return nil, err } @@ -3681,7 +4867,7 @@ func (c *aBCIApplicationClient) Commit(ctx context.Context, in *RequestCommit, o func (c *aBCIApplicationClient) InitChain(ctx context.Context, in *RequestInitChain, opts ...grpc.CallOption) (*ResponseInitChain, error) { out := new(ResponseInitChain) - err := grpc.Invoke(ctx, "/types.ABCIApplication/InitChain", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/InitChain", in, out, opts...) if err != nil { return nil, err } @@ -3690,7 +4876,7 @@ func (c *aBCIApplicationClient) InitChain(ctx context.Context, in *RequestInitCh func (c *aBCIApplicationClient) BeginBlock(ctx context.Context, in *RequestBeginBlock, opts ...grpc.CallOption) (*ResponseBeginBlock, error) { out := new(ResponseBeginBlock) - err := grpc.Invoke(ctx, "/types.ABCIApplication/BeginBlock", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/BeginBlock", in, out, opts...) if err != nil { return nil, err } @@ -3699,7 +4885,7 @@ func (c *aBCIApplicationClient) BeginBlock(ctx context.Context, in *RequestBegin func (c *aBCIApplicationClient) EndBlock(ctx context.Context, in *RequestEndBlock, opts ...grpc.CallOption) (*ResponseEndBlock, error) { out := new(ResponseEndBlock) - err := grpc.Invoke(ctx, "/types.ABCIApplication/EndBlock", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/types.ABCIApplication/EndBlock", in, out, opts...) if err != nil { return nil, err } @@ -3999,6 +5185,9 @@ func (m *Request) MarshalTo(dAtA []byte) (int, error) { } i += nn1 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4179,6 +5368,9 @@ func (m *RequestEcho) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Message))) i += copy(dAtA[i:], m.Message) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4197,6 +5389,9 @@ func (m *RequestFlush) MarshalTo(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4221,6 +5416,9 @@ func (m *RequestInfo) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Version))) i += copy(dAtA[i:], m.Version) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4251,6 +5449,9 @@ func (m *RequestSetOption) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Value))) i += copy(dAtA[i:], m.Value) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4269,11 +5470,14 @@ func (m *RequestInitChain) MarshalTo(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Time != 0 { - dAtA[i] = 0x8 - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.Time)) + dAtA[i] = 0xa + i++ + i = encodeVarintTypes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(m.Time))) + n13, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) + if err != nil { + return 0, err } + i += n13 if len(m.ChainId) > 0 { dAtA[i] = 0x12 i++ @@ -4284,11 +5488,11 @@ func (m *RequestInitChain) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintTypes(dAtA, i, uint64(m.ConsensusParams.Size())) - n13, err := m.ConsensusParams.MarshalTo(dAtA[i:]) + n14, err := m.ConsensusParams.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n13 + i += n14 } if len(m.Validators) > 0 { for _, msg := range m.Validators { @@ -4308,6 +5512,9 @@ func (m *RequestInitChain) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.AppStateBytes))) i += copy(dAtA[i:], m.AppStateBytes) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4353,6 +5560,9 @@ func (m *RequestQuery) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4380,23 +5590,19 @@ func (m *RequestBeginBlock) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Header.Size())) - n14, err := m.Header.MarshalTo(dAtA[i:]) + n15, err := m.Header.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n14 - if len(m.Validators) > 0 { - for _, msg := range m.Validators { - dAtA[i] = 0x1a - i++ - i = encodeVarintTypes(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + i += n15 + dAtA[i] = 0x1a + i++ + i = encodeVarintTypes(dAtA, i, uint64(m.LastCommitInfo.Size())) + n16, err := m.LastCommitInfo.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err } + i += n16 if len(m.ByzantineValidators) > 0 { for _, msg := range m.ByzantineValidators { dAtA[i] = 0x22 @@ -4409,6 +5615,9 @@ func (m *RequestBeginBlock) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4433,6 +5642,9 @@ func (m *RequestCheckTx) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Tx))) i += copy(dAtA[i:], m.Tx) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4457,6 +5669,9 @@ func (m *RequestDeliverTx) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Tx))) i += copy(dAtA[i:], m.Tx) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4480,6 +5695,9 @@ func (m *RequestEndBlock) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintTypes(dAtA, i, uint64(m.Height)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4498,6 +5716,9 @@ func (m *RequestCommit) MarshalTo(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4517,11 +5738,14 @@ func (m *Response) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if m.Value != nil { - nn15, err := m.Value.MarshalTo(dAtA[i:]) + nn17, err := m.Value.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn15 + i += nn17 + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } return i, nil } @@ -4532,11 +5756,11 @@ func (m *Response_Exception) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.Exception.Size())) - n16, err := m.Exception.MarshalTo(dAtA[i:]) + n18, err := m.Exception.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n16 + i += n18 } return i, nil } @@ -4546,11 +5770,11 @@ func (m *Response_Echo) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Echo.Size())) - n17, err := m.Echo.MarshalTo(dAtA[i:]) + n19, err := m.Echo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n19 } return i, nil } @@ -4560,11 +5784,11 @@ func (m *Response_Flush) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintTypes(dAtA, i, uint64(m.Flush.Size())) - n18, err := m.Flush.MarshalTo(dAtA[i:]) + n20, err := m.Flush.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n20 } return i, nil } @@ -4574,11 +5798,11 @@ func (m *Response_Info) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Info.Size())) - n19, err := m.Info.MarshalTo(dAtA[i:]) + n21, err := m.Info.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n21 } return i, nil } @@ -4588,11 +5812,11 @@ func (m *Response_SetOption) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintTypes(dAtA, i, uint64(m.SetOption.Size())) - n20, err := m.SetOption.MarshalTo(dAtA[i:]) + n22, err := m.SetOption.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n22 } return i, nil } @@ -4602,11 +5826,11 @@ func (m *Response_InitChain) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintTypes(dAtA, i, uint64(m.InitChain.Size())) - n21, err := m.InitChain.MarshalTo(dAtA[i:]) + n23, err := m.InitChain.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n23 } return i, nil } @@ -4616,11 +5840,11 @@ func (m *Response_Query) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintTypes(dAtA, i, uint64(m.Query.Size())) - n22, err := m.Query.MarshalTo(dAtA[i:]) + n24, err := m.Query.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n24 } return i, nil } @@ -4630,11 +5854,11 @@ func (m *Response_BeginBlock) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintTypes(dAtA, i, uint64(m.BeginBlock.Size())) - n23, err := m.BeginBlock.MarshalTo(dAtA[i:]) + n25, err := m.BeginBlock.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n25 } return i, nil } @@ -4644,11 +5868,11 @@ func (m *Response_CheckTx) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintTypes(dAtA, i, uint64(m.CheckTx.Size())) - n24, err := m.CheckTx.MarshalTo(dAtA[i:]) + n26, err := m.CheckTx.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n26 } return i, nil } @@ -4658,11 +5882,11 @@ func (m *Response_DeliverTx) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintTypes(dAtA, i, uint64(m.DeliverTx.Size())) - n25, err := m.DeliverTx.MarshalTo(dAtA[i:]) + n27, err := m.DeliverTx.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 + i += n27 } return i, nil } @@ -4672,11 +5896,11 @@ func (m *Response_EndBlock) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x5a i++ i = encodeVarintTypes(dAtA, i, uint64(m.EndBlock.Size())) - n26, err := m.EndBlock.MarshalTo(dAtA[i:]) + n28, err := m.EndBlock.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n28 } return i, nil } @@ -4686,11 +5910,11 @@ func (m *Response_Commit) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x62 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Commit.Size())) - n27, err := m.Commit.MarshalTo(dAtA[i:]) + n29, err := m.Commit.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n29 } return i, nil } @@ -4715,6 +5939,9 @@ func (m *ResponseException) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Error))) i += copy(dAtA[i:], m.Error) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4739,6 +5966,9 @@ func (m *ResponseEcho) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Message))) i += copy(dAtA[i:], m.Message) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4757,6 +5987,9 @@ func (m *ResponseFlush) MarshalTo(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4798,6 +6031,9 @@ func (m *ResponseInfo) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.LastBlockAppHash))) i += copy(dAtA[i:], m.LastBlockAppHash) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4833,6 +6069,9 @@ func (m *ResponseSetOption) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Info))) i += copy(dAtA[i:], m.Info) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4855,11 +6094,11 @@ func (m *ResponseInitChain) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.ConsensusParams.Size())) - n28, err := m.ConsensusParams.MarshalTo(dAtA[i:]) + n30, err := m.ConsensusParams.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n30 } if len(m.Validators) > 0 { for _, msg := range m.Validators { @@ -4873,6 +6112,9 @@ func (m *ResponseInitChain) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4936,6 +6178,9 @@ func (m *ResponseQuery) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintTypes(dAtA, i, uint64(m.Height)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -4966,6 +6211,9 @@ func (m *ResponseBeginBlock) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5029,14 +6277,9 @@ func (m *ResponseCheckTx) MarshalTo(dAtA []byte) (int, error) { i += n } } - dAtA[i] = 0x42 - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.Fee.Size())) - n29, err := m.Fee.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } - i += n29 return i, nil } @@ -5100,14 +6343,9 @@ func (m *ResponseDeliverTx) MarshalTo(dAtA []byte) (int, error) { i += n } } - dAtA[i] = 0x42 - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.Fee.Size())) - n30, err := m.Fee.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) } - i += n30 return i, nil } @@ -5160,6 +6398,9 @@ func (m *ResponseEndBlock) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5184,6 +6425,9 @@ func (m *ResponseCommit) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Data))) i += copy(dAtA[i:], m.Data) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5232,6 +6476,9 @@ func (m *ConsensusParams) MarshalTo(dAtA []byte) (int, error) { } i += n34 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5265,6 +6512,9 @@ func (m *BlockSize) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintTypes(dAtA, i, uint64(m.MaxGas)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5293,6 +6543,9 @@ func (m *TxSize) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintTypes(dAtA, i, uint64(m.MaxGas)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5316,6 +6569,47 @@ func (m *BlockGossip) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintTypes(dAtA, i, uint64(m.BlockPartSizeBytes)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *LastCommitInfo) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LastCommitInfo) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.CommitRound != 0 { + dAtA[i] = 0x8 + i++ + i = encodeVarintTypes(dAtA, i, uint64(m.CommitRound)) + } + if len(m.Validators) > 0 { + for _, msg := range m.Validators { + dAtA[i] = 0x12 + i++ + i = encodeVarintTypes(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5345,11 +6639,14 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintTypes(dAtA, i, uint64(m.Height)) } - if m.Time != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.Time)) + dAtA[i] = 0x1a + i++ + i = encodeVarintTypes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(m.Time))) + n35, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) + if err != nil { + return 0, err } + i += n35 if m.NumTxs != 0 { dAtA[i] = 0x20 i++ @@ -5381,11 +6678,14 @@ func (m *Header) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintTypes(dAtA, i, uint64(m.Proposer.Size())) - n35, err := m.Proposer.MarshalTo(dAtA[i:]) + n36, err := m.Proposer.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n36 + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5413,16 +6713,19 @@ func (m *Validator) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.PubKey.Size())) - n36, err := m.PubKey.MarshalTo(dAtA[i:]) + n37, err := m.PubKey.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n37 if m.Power != 0 { dAtA[i] = 0x18 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Power)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5444,11 +6747,11 @@ func (m *SigningValidator) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintTypes(dAtA, i, uint64(m.Validator.Size())) - n37, err := m.Validator.MarshalTo(dAtA[i:]) + n38, err := m.Validator.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n38 if m.SignedLastBlock { dAtA[i] = 0x10 i++ @@ -5459,6 +6762,9 @@ func (m *SigningValidator) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5489,6 +6795,9 @@ func (m *PubKey) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintTypes(dAtA, i, uint64(len(m.Data))) i += copy(dAtA[i:], m.Data) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5516,26 +6825,32 @@ func (m *Evidence) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Validator.Size())) - n38, err := m.Validator.MarshalTo(dAtA[i:]) + n39, err := m.Validator.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n39 if m.Height != 0 { dAtA[i] = 0x18 i++ i = encodeVarintTypes(dAtA, i, uint64(m.Height)) } - if m.Time != 0 { - dAtA[i] = 0x20 - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.Time)) + dAtA[i] = 0x22 + i++ + i = encodeVarintTypes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(m.Time))) + n40, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i:]) + if err != nil { + return 0, err } + i += n40 if m.TotalVotingPower != 0 { dAtA[i] = 0x28 i++ i = encodeVarintTypes(dAtA, i, uint64(m.TotalVotingPower)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -5576,6 +6891,7 @@ func NewPopulatedRequest(r randyTypes, easy bool) *Request { this.Value = NewPopulatedRequest_DeliverTx(r, easy) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 20) } return this } @@ -5639,6 +6955,7 @@ func NewPopulatedRequestEcho(r randyTypes, easy bool) *RequestEcho { this := &RequestEcho{} this.Message = string(randStringTypes(r)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5646,6 +6963,7 @@ func NewPopulatedRequestEcho(r randyTypes, easy bool) *RequestEcho { func NewPopulatedRequestFlush(r randyTypes, easy bool) *RequestFlush { this := &RequestFlush{} if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 1) } return this } @@ -5654,6 +6972,7 @@ func NewPopulatedRequestInfo(r randyTypes, easy bool) *RequestInfo { this := &RequestInfo{} this.Version = string(randStringTypes(r)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5663,43 +6982,43 @@ func NewPopulatedRequestSetOption(r randyTypes, easy bool) *RequestSetOption { this.Key = string(randStringTypes(r)) this.Value = string(randStringTypes(r)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } func NewPopulatedRequestInitChain(r randyTypes, easy bool) *RequestInitChain { this := &RequestInitChain{} - this.Time = int64(r.Int63()) - if r.Intn(2) == 0 { - this.Time *= -1 - } + v1 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) + this.Time = *v1 this.ChainId = string(randStringTypes(r)) if r.Intn(10) != 0 { this.ConsensusParams = NewPopulatedConsensusParams(r, easy) } if r.Intn(10) != 0 { - v1 := r.Intn(5) - this.Validators = make([]Validator, v1) - for i := 0; i < v1; i++ { - v2 := NewPopulatedValidator(r, easy) - this.Validators[i] = *v2 + v2 := r.Intn(5) + this.Validators = make([]Validator, v2) + for i := 0; i < v2; i++ { + v3 := NewPopulatedValidator(r, easy) + this.Validators[i] = *v3 } } - v3 := r.Intn(100) - this.AppStateBytes = make([]byte, v3) - for i := 0; i < v3; i++ { + v4 := r.Intn(100) + this.AppStateBytes = make([]byte, v4) + for i := 0; i < v4; i++ { this.AppStateBytes[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 6) } return this } func NewPopulatedRequestQuery(r randyTypes, easy bool) *RequestQuery { this := &RequestQuery{} - v4 := r.Intn(100) - this.Data = make([]byte, v4) - for i := 0; i < v4; i++ { + v5 := r.Intn(100) + this.Data = make([]byte, v5) + for i := 0; i < v5; i++ { this.Data[i] = byte(r.Intn(256)) } this.Path = string(randStringTypes(r)) @@ -5709,27 +7028,22 @@ func NewPopulatedRequestQuery(r randyTypes, easy bool) *RequestQuery { } this.Prove = bool(bool(r.Intn(2) == 0)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 5) } return this } func NewPopulatedRequestBeginBlock(r randyTypes, easy bool) *RequestBeginBlock { this := &RequestBeginBlock{} - v5 := r.Intn(100) - this.Hash = make([]byte, v5) - for i := 0; i < v5; i++ { + v6 := r.Intn(100) + this.Hash = make([]byte, v6) + for i := 0; i < v6; i++ { this.Hash[i] = byte(r.Intn(256)) } - v6 := NewPopulatedHeader(r, easy) - this.Header = *v6 - if r.Intn(10) != 0 { - v7 := r.Intn(5) - this.Validators = make([]SigningValidator, v7) - for i := 0; i < v7; i++ { - v8 := NewPopulatedSigningValidator(r, easy) - this.Validators[i] = *v8 - } - } + v7 := NewPopulatedHeader(r, easy) + this.Header = *v7 + v8 := NewPopulatedLastCommitInfo(r, easy) + this.LastCommitInfo = *v8 if r.Intn(10) != 0 { v9 := r.Intn(5) this.ByzantineValidators = make([]Evidence, v9) @@ -5739,6 +7053,7 @@ func NewPopulatedRequestBeginBlock(r randyTypes, easy bool) *RequestBeginBlock { } } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 5) } return this } @@ -5751,6 +7066,7 @@ func NewPopulatedRequestCheckTx(r randyTypes, easy bool) *RequestCheckTx { this.Tx[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5763,6 +7079,7 @@ func NewPopulatedRequestDeliverTx(r randyTypes, easy bool) *RequestDeliverTx { this.Tx[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5774,6 +7091,7 @@ func NewPopulatedRequestEndBlock(r randyTypes, easy bool) *RequestEndBlock { this.Height *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5781,6 +7099,7 @@ func NewPopulatedRequestEndBlock(r randyTypes, easy bool) *RequestEndBlock { func NewPopulatedRequestCommit(r randyTypes, easy bool) *RequestCommit { this := &RequestCommit{} if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 1) } return this } @@ -5815,6 +7134,7 @@ func NewPopulatedResponse(r randyTypes, easy bool) *Response { this.Value = NewPopulatedResponse_Commit(r, easy) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 13) } return this } @@ -5883,6 +7203,7 @@ func NewPopulatedResponseException(r randyTypes, easy bool) *ResponseException { this := &ResponseException{} this.Error = string(randStringTypes(r)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5891,6 +7212,7 @@ func NewPopulatedResponseEcho(r randyTypes, easy bool) *ResponseEcho { this := &ResponseEcho{} this.Message = string(randStringTypes(r)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -5898,6 +7220,7 @@ func NewPopulatedResponseEcho(r randyTypes, easy bool) *ResponseEcho { func NewPopulatedResponseFlush(r randyTypes, easy bool) *ResponseFlush { this := &ResponseFlush{} if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 1) } return this } @@ -5916,6 +7239,7 @@ func NewPopulatedResponseInfo(r randyTypes, easy bool) *ResponseInfo { this.LastBlockAppHash[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 5) } return this } @@ -5926,6 +7250,7 @@ func NewPopulatedResponseSetOption(r randyTypes, easy bool) *ResponseSetOption { this.Log = string(randStringTypes(r)) this.Info = string(randStringTypes(r)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 5) } return this } @@ -5944,6 +7269,7 @@ func NewPopulatedResponseInitChain(r randyTypes, easy bool) *ResponseInitChain { } } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } @@ -5977,6 +7303,7 @@ func NewPopulatedResponseQuery(r randyTypes, easy bool) *ResponseQuery { this.Height *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 10) } return this } @@ -5992,6 +7319,7 @@ func NewPopulatedResponseBeginBlock(r randyTypes, easy bool) *ResponseBeginBlock } } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) } return this } @@ -6022,9 +7350,8 @@ func NewPopulatedResponseCheckTx(r randyTypes, easy bool) *ResponseCheckTx { this.Tags[i] = *v23 } } - v24 := common.NewPopulatedKI64Pair(r, easy) - this.Fee = *v24 if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 8) } return this } @@ -6032,9 +7359,9 @@ func NewPopulatedResponseCheckTx(r randyTypes, easy bool) *ResponseCheckTx { func NewPopulatedResponseDeliverTx(r randyTypes, easy bool) *ResponseDeliverTx { this := &ResponseDeliverTx{} this.Code = uint32(r.Uint32()) - v25 := r.Intn(100) - this.Data = make([]byte, v25) - for i := 0; i < v25; i++ { + v24 := r.Intn(100) + this.Data = make([]byte, v24) + for i := 0; i < v24; i++ { this.Data[i] = byte(r.Intn(256)) } this.Log = string(randStringTypes(r)) @@ -6048,16 +7375,15 @@ func NewPopulatedResponseDeliverTx(r randyTypes, easy bool) *ResponseDeliverTx { this.GasUsed *= -1 } if r.Intn(10) != 0 { - v26 := r.Intn(5) - this.Tags = make([]common.KVPair, v26) - for i := 0; i < v26; i++ { - v27 := common.NewPopulatedKVPair(r, easy) - this.Tags[i] = *v27 + v25 := r.Intn(5) + this.Tags = make([]common.KVPair, v25) + for i := 0; i < v25; i++ { + v26 := common.NewPopulatedKVPair(r, easy) + this.Tags[i] = *v26 } } - v28 := common.NewPopulatedKI64Pair(r, easy) - this.Fee = *v28 if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 8) } return this } @@ -6065,37 +7391,39 @@ func NewPopulatedResponseDeliverTx(r randyTypes, easy bool) *ResponseDeliverTx { func NewPopulatedResponseEndBlock(r randyTypes, easy bool) *ResponseEndBlock { this := &ResponseEndBlock{} if r.Intn(10) != 0 { - v29 := r.Intn(5) - this.ValidatorUpdates = make([]Validator, v29) - for i := 0; i < v29; i++ { - v30 := NewPopulatedValidator(r, easy) - this.ValidatorUpdates[i] = *v30 + v27 := r.Intn(5) + this.ValidatorUpdates = make([]Validator, v27) + for i := 0; i < v27; i++ { + v28 := NewPopulatedValidator(r, easy) + this.ValidatorUpdates[i] = *v28 } } if r.Intn(10) != 0 { this.ConsensusParamUpdates = NewPopulatedConsensusParams(r, easy) } if r.Intn(10) != 0 { - v31 := r.Intn(5) - this.Tags = make([]common.KVPair, v31) - for i := 0; i < v31; i++ { - v32 := common.NewPopulatedKVPair(r, easy) - this.Tags[i] = *v32 + v29 := r.Intn(5) + this.Tags = make([]common.KVPair, v29) + for i := 0; i < v29; i++ { + v30 := common.NewPopulatedKVPair(r, easy) + this.Tags[i] = *v30 } } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 4) } return this } func NewPopulatedResponseCommit(r randyTypes, easy bool) *ResponseCommit { this := &ResponseCommit{} - v33 := r.Intn(100) - this.Data = make([]byte, v33) - for i := 0; i < v33; i++ { + v31 := r.Intn(100) + this.Data = make([]byte, v31) + for i := 0; i < v31; i++ { this.Data[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } @@ -6112,6 +7440,7 @@ func NewPopulatedConsensusParams(r randyTypes, easy bool) *ConsensusParams { this.BlockGossip = NewPopulatedBlockGossip(r, easy) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 4) } return this } @@ -6131,6 +7460,7 @@ func NewPopulatedBlockSize(r randyTypes, easy bool) *BlockSize { this.MaxGas *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 4) } return this } @@ -6146,6 +7476,7 @@ func NewPopulatedTxSize(r randyTypes, easy bool) *TxSize { this.MaxGas *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } @@ -6157,6 +7488,27 @@ func NewPopulatedBlockGossip(r randyTypes, easy bool) *BlockGossip { this.BlockPartSizeBytes *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 2) + } + return this +} + +func NewPopulatedLastCommitInfo(r randyTypes, easy bool) *LastCommitInfo { + this := &LastCommitInfo{} + this.CommitRound = int32(r.Int31()) + if r.Intn(2) == 0 { + this.CommitRound *= -1 + } + if r.Intn(10) != 0 { + v32 := r.Intn(5) + this.Validators = make([]SigningValidator, v32) + for i := 0; i < v32; i++ { + v33 := NewPopulatedSigningValidator(r, easy) + this.Validators[i] = *v33 + } + } + if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } @@ -6168,10 +7520,8 @@ func NewPopulatedHeader(r randyTypes, easy bool) *Header { if r.Intn(2) == 0 { this.Height *= -1 } - this.Time = int64(r.Int63()) - if r.Intn(2) == 0 { - this.Time *= -1 - } + v34 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) + this.Time = *v34 this.NumTxs = int32(r.Int31()) if r.Intn(2) == 0 { this.NumTxs *= -1 @@ -6180,52 +7530,55 @@ func NewPopulatedHeader(r randyTypes, easy bool) *Header { if r.Intn(2) == 0 { this.TotalTxs *= -1 } - v34 := r.Intn(100) - this.LastBlockHash = make([]byte, v34) - for i := 0; i < v34; i++ { + v35 := r.Intn(100) + this.LastBlockHash = make([]byte, v35) + for i := 0; i < v35; i++ { this.LastBlockHash[i] = byte(r.Intn(256)) } - v35 := r.Intn(100) - this.ValidatorsHash = make([]byte, v35) - for i := 0; i < v35; i++ { + v36 := r.Intn(100) + this.ValidatorsHash = make([]byte, v36) + for i := 0; i < v36; i++ { this.ValidatorsHash[i] = byte(r.Intn(256)) } - v36 := r.Intn(100) - this.AppHash = make([]byte, v36) - for i := 0; i < v36; i++ { + v37 := r.Intn(100) + this.AppHash = make([]byte, v37) + for i := 0; i < v37; i++ { this.AppHash[i] = byte(r.Intn(256)) } - v37 := NewPopulatedValidator(r, easy) - this.Proposer = *v37 + v38 := NewPopulatedValidator(r, easy) + this.Proposer = *v38 if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 10) } return this } func NewPopulatedValidator(r randyTypes, easy bool) *Validator { this := &Validator{} - v38 := r.Intn(100) - this.Address = make([]byte, v38) - for i := 0; i < v38; i++ { + v39 := r.Intn(100) + this.Address = make([]byte, v39) + for i := 0; i < v39; i++ { this.Address[i] = byte(r.Intn(256)) } - v39 := NewPopulatedPubKey(r, easy) - this.PubKey = *v39 + v40 := NewPopulatedPubKey(r, easy) + this.PubKey = *v40 this.Power = int64(r.Int63()) if r.Intn(2) == 0 { this.Power *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 4) } return this } func NewPopulatedSigningValidator(r randyTypes, easy bool) *SigningValidator { this := &SigningValidator{} - v40 := NewPopulatedValidator(r, easy) - this.Validator = *v40 + v41 := NewPopulatedValidator(r, easy) + this.Validator = *v41 this.SignedLastBlock = bool(bool(r.Intn(2) == 0)) if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } @@ -6233,12 +7586,13 @@ func NewPopulatedSigningValidator(r randyTypes, easy bool) *SigningValidator { func NewPopulatedPubKey(r randyTypes, easy bool) *PubKey { this := &PubKey{} this.Type = string(randStringTypes(r)) - v41 := r.Intn(100) - this.Data = make([]byte, v41) - for i := 0; i < v41; i++ { + v42 := r.Intn(100) + this.Data = make([]byte, v42) + for i := 0; i < v42; i++ { this.Data[i] = byte(r.Intn(256)) } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 3) } return this } @@ -6246,21 +7600,20 @@ func NewPopulatedPubKey(r randyTypes, easy bool) *PubKey { func NewPopulatedEvidence(r randyTypes, easy bool) *Evidence { this := &Evidence{} this.Type = string(randStringTypes(r)) - v42 := NewPopulatedValidator(r, easy) - this.Validator = *v42 + v43 := NewPopulatedValidator(r, easy) + this.Validator = *v43 this.Height = int64(r.Int63()) if r.Intn(2) == 0 { this.Height *= -1 } - this.Time = int64(r.Int63()) - if r.Intn(2) == 0 { - this.Time *= -1 - } + v44 := github_com_gogo_protobuf_types.NewPopulatedStdTime(r, easy) + this.Time = *v44 this.TotalVotingPower = int64(r.Int63()) if r.Intn(2) == 0 { this.TotalVotingPower *= -1 } if !easy && r.Intn(10) != 0 { + this.XXX_unrecognized = randUnrecognizedTypes(r, 6) } return this } @@ -6284,9 +7637,9 @@ func randUTF8RuneTypes(r randyTypes) rune { return rune(ru + 61) } func randStringTypes(r randyTypes) string { - v43 := r.Intn(100) - tmps := make([]rune, v43) - for i := 0; i < v43; i++ { + v45 := r.Intn(100) + tmps := make([]rune, v45) + for i := 0; i < v45; i++ { tmps[i] = randUTF8RuneTypes(r) } return string(tmps) @@ -6308,11 +7661,11 @@ func randFieldTypes(dAtA []byte, r randyTypes, fieldNumber int, wire int) []byte switch wire { case 0: dAtA = encodeVarintPopulateTypes(dAtA, uint64(key)) - v44 := r.Int63() + v46 := r.Int63() if r.Intn(2) == 0 { - v44 *= -1 + v46 *= -1 } - dAtA = encodeVarintPopulateTypes(dAtA, uint64(v44)) + dAtA = encodeVarintPopulateTypes(dAtA, uint64(v46)) case 1: dAtA = encodeVarintPopulateTypes(dAtA, uint64(key)) dAtA = append(dAtA, byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256))) @@ -6343,6 +7696,9 @@ func (m *Request) Size() (n int) { if m.Value != nil { n += m.Value.Size() } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6452,12 +7808,18 @@ func (m *RequestEcho) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *RequestFlush) Size() (n int) { var l int _ = l + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6468,6 +7830,9 @@ func (m *RequestInfo) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6482,15 +7847,17 @@ func (m *RequestSetOption) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *RequestInitChain) Size() (n int) { var l int _ = l - if m.Time != 0 { - n += 1 + sovTypes(uint64(m.Time)) - } + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Time) + n += 1 + l + sovTypes(uint64(l)) l = len(m.ChainId) if l > 0 { n += 1 + l + sovTypes(uint64(l)) @@ -6509,6 +7876,9 @@ func (m *RequestInitChain) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6529,6 +7899,9 @@ func (m *RequestQuery) Size() (n int) { if m.Prove { n += 2 } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6541,18 +7914,17 @@ func (m *RequestBeginBlock) Size() (n int) { } l = m.Header.Size() n += 1 + l + sovTypes(uint64(l)) - if len(m.Validators) > 0 { - for _, e := range m.Validators { - l = e.Size() - n += 1 + l + sovTypes(uint64(l)) - } - } + l = m.LastCommitInfo.Size() + n += 1 + l + sovTypes(uint64(l)) if len(m.ByzantineValidators) > 0 { for _, e := range m.ByzantineValidators { l = e.Size() n += 1 + l + sovTypes(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6563,6 +7935,9 @@ func (m *RequestCheckTx) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6573,6 +7948,9 @@ func (m *RequestDeliverTx) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6582,12 +7960,18 @@ func (m *RequestEndBlock) Size() (n int) { if m.Height != 0 { n += 1 + sovTypes(uint64(m.Height)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *RequestCommit) Size() (n int) { var l int _ = l + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6597,6 +7981,9 @@ func (m *Response) Size() (n int) { if m.Value != nil { n += m.Value.Size() } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6715,6 +8102,9 @@ func (m *ResponseException) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6725,12 +8115,18 @@ func (m *ResponseEcho) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ResponseFlush) Size() (n int) { var l int _ = l + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6752,6 +8148,9 @@ func (m *ResponseInfo) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6769,6 +8168,9 @@ func (m *ResponseSetOption) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6785,6 +8187,9 @@ func (m *ResponseInitChain) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6820,6 +8225,9 @@ func (m *ResponseQuery) Size() (n int) { if m.Height != 0 { n += 1 + sovTypes(uint64(m.Height)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6832,6 +8240,9 @@ func (m *ResponseBeginBlock) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6865,8 +8276,9 @@ func (m *ResponseCheckTx) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } - l = m.Fee.Size() - n += 1 + l + sovTypes(uint64(l)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6900,8 +8312,9 @@ func (m *ResponseDeliverTx) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } - l = m.Fee.Size() - n += 1 + l + sovTypes(uint64(l)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6924,6 +8337,9 @@ func (m *ResponseEndBlock) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6934,6 +8350,9 @@ func (m *ResponseCommit) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6952,6 +8371,9 @@ func (m *ConsensusParams) Size() (n int) { l = m.BlockGossip.Size() n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6967,6 +8389,9 @@ func (m *BlockSize) Size() (n int) { if m.MaxGas != 0 { n += 1 + sovTypes(uint64(m.MaxGas)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6979,6 +8404,9 @@ func (m *TxSize) Size() (n int) { if m.MaxGas != 0 { n += 1 + sovTypes(uint64(m.MaxGas)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -6988,6 +8416,27 @@ func (m *BlockGossip) Size() (n int) { if m.BlockPartSizeBytes != 0 { n += 1 + sovTypes(uint64(m.BlockPartSizeBytes)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *LastCommitInfo) Size() (n int) { + var l int + _ = l + if m.CommitRound != 0 { + n += 1 + sovTypes(uint64(m.CommitRound)) + } + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -7001,9 +8450,8 @@ func (m *Header) Size() (n int) { if m.Height != 0 { n += 1 + sovTypes(uint64(m.Height)) } - if m.Time != 0 { - n += 1 + sovTypes(uint64(m.Time)) - } + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Time) + n += 1 + l + sovTypes(uint64(l)) if m.NumTxs != 0 { n += 1 + sovTypes(uint64(m.NumTxs)) } @@ -7024,6 +8472,9 @@ func (m *Header) Size() (n int) { } l = m.Proposer.Size() n += 1 + l + sovTypes(uint64(l)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -7039,6 +8490,9 @@ func (m *Validator) Size() (n int) { if m.Power != 0 { n += 1 + sovTypes(uint64(m.Power)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -7050,6 +8504,9 @@ func (m *SigningValidator) Size() (n int) { if m.SignedLastBlock { n += 2 } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -7064,6 +8521,9 @@ func (m *PubKey) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -7079,12 +8539,14 @@ func (m *Evidence) Size() (n int) { if m.Height != 0 { n += 1 + sovTypes(uint64(m.Height)) } - if m.Time != 0 { - n += 1 + sovTypes(uint64(m.Time)) - } + l = github_com_gogo_protobuf_types.SizeOfStdTime(m.Time) + n += 1 + l + sovTypes(uint64(l)) if m.TotalVotingPower != 0 { n += 1 + sovTypes(uint64(m.TotalVotingPower)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -7494,6 +8956,7 @@ func (m *Request) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -7573,6 +9036,7 @@ func (m *RequestEcho) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -7623,6 +9087,7 @@ func (m *RequestFlush) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -7702,6 +9167,7 @@ func (m *RequestInfo) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -7810,6 +9276,7 @@ func (m *RequestSetOption) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -7849,10 +9316,10 @@ func (m *RequestInitChain) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) } - m.Time = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -7862,11 +9329,22 @@ func (m *RequestInitChain) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Time |= (int64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Time, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) @@ -8003,6 +9481,7 @@ func (m *RequestInitChain) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -8152,6 +9631,7 @@ func (m *RequestQuery) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -8253,7 +9733,7 @@ func (m *RequestBeginBlock) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastCommitInfo", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -8277,8 +9757,7 @@ func (m *RequestBeginBlock) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Validators = append(m.Validators, SigningValidator{}) - if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastCommitInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -8325,6 +9804,7 @@ func (m *RequestBeginBlock) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -8406,6 +9886,7 @@ func (m *RequestCheckTx) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -8487,6 +9968,7 @@ func (m *RequestDeliverTx) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -8556,6 +10038,7 @@ func (m *RequestEndBlock) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -8606,6 +10089,7 @@ func (m *RequestCommit) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9040,6 +10524,7 @@ func (m *Response) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9119,6 +10604,7 @@ func (m *ResponseException) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9198,6 +10684,7 @@ func (m *ResponseEcho) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9248,6 +10735,7 @@ func (m *ResponseFlush) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9406,6 +10894,7 @@ func (m *ResponseInfo) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9533,6 +11022,7 @@ func (m *ResponseSetOption) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9647,6 +11137,7 @@ func (m *ResponseInitChain) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9905,6 +11396,7 @@ func (m *ResponseQuery) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -9986,6 +11478,7 @@ func (m *ResponseBeginBlock) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -10201,36 +11694,6 @@ func (m *ResponseCheckTx) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Fee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -10243,6 +11706,7 @@ func (m *ResponseCheckTx) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -10458,36 +11922,6 @@ func (m *ResponseDeliverTx) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Fee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -10500,6 +11934,7 @@ func (m *ResponseDeliverTx) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -10645,6 +12080,7 @@ func (m *ResponseEndBlock) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -10726,6 +12162,7 @@ func (m *ResponseCommit) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -10875,6 +12312,7 @@ func (m *ConsensusParams) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -10982,6 +12420,7 @@ func (m *BlockSize) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11070,6 +12509,7 @@ func (m *TxSize) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11139,6 +12579,108 @@ func (m *BlockGossip) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LastCommitInfo) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LastCommitInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LastCommitInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CommitRound", wireType) + } + m.CommitRound = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CommitRound |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, SigningValidator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11226,10 +12768,10 @@ func (m *Header) Unmarshal(dAtA []byte) error { } } case 3: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) } - m.Time = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -11239,11 +12781,22 @@ func (m *Header) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Time |= (int64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Time, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 4: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field NumTxs", wireType) @@ -11417,6 +12970,7 @@ func (m *Header) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11547,6 +13101,7 @@ func (m *Validator) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11647,6 +13202,7 @@ func (m *SigningValidator) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11757,6 +13313,7 @@ func (m *PubKey) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -11874,10 +13431,10 @@ func (m *Evidence) Unmarshal(dAtA []byte) error { } } case 4: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) } - m.Time = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -11887,11 +13444,22 @@ func (m *Evidence) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Time |= (int64(b) & 0x7F) << shift + msglen |= (int(b) & 0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Time, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field TotalVotingPower", wireType) @@ -11923,6 +13491,7 @@ func (m *Evidence) Unmarshal(dAtA []byte) error { if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -12037,128 +13606,134 @@ var ( ErrIntOverflowTypes = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("abci/types/types.proto", fileDescriptorTypes) } -func init() { golang_proto.RegisterFile("abci/types/types.proto", fileDescriptorTypes) } - -var fileDescriptorTypes = []byte{ - // 1892 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4b, 0x73, 0x1c, 0x49, - 0x11, 0x56, 0xcf, 0xbb, 0x53, 0x8f, 0x19, 0x97, 0x6c, 0x69, 0x3c, 0x0b, 0xb2, 0xa3, 0x83, 0xf0, - 0xca, 0xac, 0x56, 0x02, 0xed, 0xda, 0x61, 0xef, 0xc2, 0x06, 0x1a, 0xad, 0xd9, 0x51, 0x2c, 0x0f, - 0xd1, 0xf6, 0x9a, 0x08, 0x2e, 0x13, 0x35, 0xd3, 0xa5, 0x9e, 0x0e, 0xcf, 0x74, 0xf7, 0x76, 0xd5, - 0x68, 0x47, 0xbe, 0x71, 0xdf, 0xe0, 0xca, 0x99, 0x1b, 0x27, 0x0e, 0x44, 0x10, 0xc1, 0x91, 0x13, - 0xb1, 0x47, 0xfe, 0x00, 0x0e, 0xd0, 0x72, 0xe2, 0x17, 0x70, 0x83, 0xa8, 0xac, 0xea, 0xa7, 0x7a, - 0x1c, 0xc2, 0x1c, 0xb9, 0x48, 0x95, 0x9d, 0x99, 0x55, 0x95, 0x39, 0x99, 0x5f, 0x66, 0x16, 0x6c, - 0xd1, 0xd1, 0xd8, 0x3b, 0x10, 0x17, 0x21, 0xe3, 0xea, 0xef, 0x7e, 0x18, 0x05, 0x22, 0x20, 0x75, - 0x24, 0x7a, 0xef, 0xba, 0x9e, 0x98, 0xcc, 0x47, 0xfb, 0xe3, 0x60, 0x76, 0xe0, 0x06, 0x6e, 0x70, - 0x80, 0xdc, 0xd1, 0xfc, 0x0c, 0x29, 0x24, 0x70, 0xa5, 0xb4, 0x7a, 0x8f, 0x32, 0xe2, 0x82, 0xf9, - 0x0e, 0x8b, 0x66, 0x9e, 0x2f, 0xb2, 0xcb, 0xa9, 0x37, 0xe2, 0x07, 0xe3, 0x60, 0x36, 0x0b, 0xfc, - 0xec, 0x79, 0xd6, 0x9f, 0x6b, 0xd0, 0xb4, 0xd9, 0xe7, 0x73, 0xc6, 0x05, 0xd9, 0x85, 0x1a, 0x1b, - 0x4f, 0x82, 0x6e, 0xe5, 0xae, 0xb1, 0xbb, 0x7a, 0x48, 0xf6, 0x95, 0x9c, 0xe6, 0x3e, 0x19, 0x4f, - 0x82, 0xc1, 0x8a, 0x8d, 0x12, 0xe4, 0x1d, 0xa8, 0x9f, 0x4d, 0xe7, 0x7c, 0xd2, 0xad, 0xa2, 0xe8, - 0x66, 0x5e, 0xf4, 0x87, 0x92, 0x35, 0x58, 0xb1, 0x95, 0x8c, 0xdc, 0xd6, 0xf3, 0xcf, 0x82, 0x6e, - 0xad, 0x6c, 0xdb, 0x13, 0xff, 0x0c, 0xb7, 0x95, 0x12, 0xe4, 0x11, 0x00, 0x67, 0x62, 0x18, 0x84, - 0xc2, 0x0b, 0xfc, 0x6e, 0x1d, 0xe5, 0xb7, 0xf3, 0xf2, 0x4f, 0x99, 0xf8, 0x29, 0xb2, 0x07, 0x2b, - 0xb6, 0xc9, 0x63, 0x42, 0x6a, 0x7a, 0xbe, 0x27, 0x86, 0xe3, 0x09, 0xf5, 0xfc, 0x6e, 0xa3, 0x4c, - 0xf3, 0xc4, 0xf7, 0xc4, 0xb1, 0x64, 0x4b, 0x4d, 0x2f, 0x26, 0xa4, 0x29, 0x9f, 0xcf, 0x59, 0x74, - 0xd1, 0x6d, 0x96, 0x99, 0xf2, 0x33, 0xc9, 0x92, 0xa6, 0xa0, 0x0c, 0xf9, 0x10, 0x56, 0x47, 0xcc, - 0xf5, 0xfc, 0xe1, 0x68, 0x1a, 0x8c, 0x5f, 0x74, 0x5b, 0xa8, 0xd2, 0xcd, 0xab, 0xf4, 0xa5, 0x40, - 0x5f, 0xf2, 0x07, 0x2b, 0x36, 0x8c, 0x12, 0x8a, 0x1c, 0x42, 0x6b, 0x3c, 0x61, 0xe3, 0x17, 0x43, - 0xb1, 0xe8, 0x9a, 0xa8, 0x79, 0x2b, 0xaf, 0x79, 0x2c, 0xb9, 0xcf, 0x16, 0x83, 0x15, 0xbb, 0x39, - 0x56, 0x4b, 0xf2, 0x00, 0x4c, 0xe6, 0x3b, 0xfa, 0xb8, 0x55, 0x54, 0xda, 0x2a, 0xfc, 0x2e, 0xbe, - 0x13, 0x1f, 0xd6, 0x62, 0x7a, 0x4d, 0xf6, 0xa1, 0x21, 0x7f, 0x6b, 0x4f, 0x74, 0xd7, 0x50, 0xe7, - 0x66, 0xe1, 0x20, 0xe4, 0x0d, 0x56, 0x6c, 0x2d, 0x25, 0xdd, 0xe7, 0xb0, 0xa9, 0x77, 0xce, 0x22, - 0x79, 0xb9, 0xcd, 0x32, 0xf7, 0x7d, 0xac, 0xf8, 0x78, 0x3d, 0xd3, 0x89, 0x89, 0x7e, 0x13, 0xea, - 0xe7, 0x74, 0x3a, 0x67, 0xd6, 0xdb, 0xb0, 0x9a, 0x89, 0x14, 0xd2, 0x85, 0xe6, 0x8c, 0x71, 0x4e, - 0x5d, 0xd6, 0x35, 0xee, 0x1a, 0xbb, 0xa6, 0x1d, 0x93, 0xd6, 0x06, 0xac, 0x65, 0xe3, 0x24, 0xa3, - 0x28, 0x63, 0x41, 0x2a, 0x9e, 0xb3, 0x88, 0xcb, 0x00, 0xd0, 0x8a, 0x9a, 0xb4, 0x3e, 0x80, 0x4e, - 0x31, 0x08, 0x48, 0x07, 0xaa, 0x2f, 0xd8, 0x85, 0x96, 0x94, 0x4b, 0x72, 0x53, 0x5f, 0x08, 0xa3, - 0xd8, 0xb4, 0xf5, 0xed, 0xfe, 0x61, 0x24, 0xca, 0x49, 0x1c, 0x10, 0x02, 0x35, 0xe1, 0xcd, 0xd4, - 0x05, 0xab, 0x36, 0xae, 0xc9, 0x6d, 0xf9, 0x23, 0x51, 0xcf, 0x1f, 0x7a, 0x8e, 0xde, 0xa1, 0x89, - 0xf4, 0x89, 0x43, 0x8e, 0xa0, 0x33, 0x0e, 0x7c, 0xce, 0x7c, 0x3e, 0xe7, 0xc3, 0x90, 0x46, 0x74, - 0xc6, 0x75, 0xfc, 0xc7, 0x3f, 0xc9, 0x71, 0xcc, 0x3e, 0x45, 0xae, 0xdd, 0x1e, 0xe7, 0x3f, 0x90, - 0x87, 0x00, 0xe7, 0x74, 0xea, 0x39, 0x54, 0x04, 0x11, 0xef, 0xd6, 0xee, 0x56, 0x77, 0x57, 0x0f, - 0x3b, 0x5a, 0xf9, 0x79, 0xcc, 0xe8, 0xd7, 0xbe, 0x7a, 0x75, 0x67, 0xc5, 0xce, 0x48, 0x92, 0x7b, - 0xd0, 0xa6, 0x61, 0x38, 0xe4, 0x82, 0x0a, 0x36, 0x1c, 0x5d, 0x08, 0xc6, 0x31, 0x3b, 0xd6, 0xec, - 0x75, 0x1a, 0x86, 0x4f, 0xe5, 0xd7, 0xbe, 0xfc, 0x68, 0x39, 0x89, 0x6f, 0x31, 0x70, 0xa5, 0x85, - 0x0e, 0x15, 0x14, 0x2d, 0x5c, 0xb3, 0x71, 0x2d, 0xbf, 0x85, 0x54, 0x4c, 0xb4, 0x75, 0xb8, 0x26, - 0x5b, 0xd0, 0x98, 0x30, 0xcf, 0x9d, 0x08, 0x34, 0xa8, 0x6a, 0x6b, 0x4a, 0x3a, 0x33, 0x8c, 0x82, - 0x73, 0x86, 0xb9, 0xdb, 0xb2, 0x15, 0x61, 0xfd, 0xd5, 0x80, 0x1b, 0x57, 0x82, 0x5d, 0xee, 0x3b, - 0xa1, 0x7c, 0x12, 0x9f, 0x25, 0xd7, 0xe4, 0x1d, 0xb9, 0x2f, 0x75, 0x58, 0xa4, 0x31, 0x65, 0x5d, - 0xdb, 0x3a, 0xc0, 0x8f, 0xda, 0x50, 0x2d, 0x42, 0xbe, 0x9f, 0x73, 0x4e, 0x15, 0x9d, 0x13, 0x07, - 0xe1, 0x53, 0xcf, 0xf5, 0x3d, 0xdf, 0x7d, 0x9d, 0x8f, 0x06, 0x70, 0x73, 0x74, 0xf1, 0x92, 0xfa, - 0xc2, 0xf3, 0xd9, 0xf0, 0x8a, 0x97, 0xdb, 0x7a, 0xa3, 0x27, 0xe7, 0x9e, 0xc3, 0xfc, 0x31, 0xd3, - 0x1b, 0x6c, 0x26, 0x2a, 0xc9, 0xd6, 0xdc, 0xba, 0x0b, 0x1b, 0xf9, 0x8c, 0x24, 0x1b, 0x50, 0x11, - 0x0b, 0x6d, 0x59, 0x45, 0x2c, 0x2c, 0x2b, 0x89, 0xa6, 0x24, 0x2d, 0xae, 0xc8, 0xdc, 0x87, 0x76, - 0x21, 0x45, 0x33, 0x6e, 0x36, 0xb2, 0x6e, 0xb6, 0xda, 0xb0, 0x9e, 0xcb, 0x4c, 0xeb, 0xcb, 0x3a, - 0xb4, 0x6c, 0xc6, 0x43, 0x19, 0x3e, 0xe4, 0x11, 0x98, 0x6c, 0x31, 0x66, 0x0a, 0x14, 0x8d, 0x02, - 0xe4, 0x28, 0x99, 0x27, 0x31, 0x5f, 0x26, 0x67, 0x22, 0x4c, 0xee, 0xe7, 0x00, 0x7d, 0xb3, 0xa8, - 0x94, 0x45, 0xf4, 0xbd, 0x3c, 0xa2, 0xdf, 0x2c, 0xc8, 0x16, 0x20, 0xfd, 0x7e, 0x0e, 0xd2, 0x8b, - 0x1b, 0xe7, 0x30, 0xfd, 0x71, 0x09, 0xa6, 0x17, 0xaf, 0xbf, 0x04, 0xd4, 0x1f, 0x97, 0x80, 0x7a, - 0xf7, 0xca, 0x59, 0xa5, 0xa8, 0xbe, 0x97, 0x47, 0xf5, 0xa2, 0x39, 0x05, 0x58, 0xff, 0x5e, 0x19, - 0xac, 0xdf, 0x2e, 0xe8, 0x2c, 0xc5, 0xf5, 0xf7, 0xae, 0xe0, 0xfa, 0x56, 0x41, 0xb5, 0x04, 0xd8, - 0x1f, 0xe7, 0x10, 0x17, 0x4a, 0x6d, 0x2b, 0x87, 0x5c, 0xf2, 0xf0, 0x6a, 0x4d, 0xd8, 0x2e, 0xfe, - 0xb4, 0x65, 0x45, 0xe1, 0xa0, 0x50, 0x14, 0x6e, 0x15, 0x6f, 0x59, 0xa8, 0x0a, 0x29, 0xb6, 0xdf, - 0x97, 0xf9, 0x5e, 0x88, 0x34, 0x89, 0x0d, 0x2c, 0x8a, 0x82, 0x48, 0x83, 0xaf, 0x22, 0xac, 0x5d, - 0x89, 0x40, 0x69, 0x7c, 0xbd, 0xa6, 0x0e, 0x60, 0xd0, 0x67, 0xa2, 0xcb, 0xfa, 0xb5, 0x91, 0xea, - 0x62, 0x29, 0xc8, 0xa2, 0x97, 0xa9, 0xd1, 0x2b, 0x53, 0x1e, 0x2a, 0xb9, 0xf2, 0x40, 0xbe, 0x0d, - 0x37, 0xa6, 0x94, 0x0b, 0xe5, 0x97, 0x61, 0x0e, 0xce, 0xda, 0x92, 0xa1, 0x1c, 0xa2, 0x70, 0xed, - 0x5d, 0xd8, 0xcc, 0xc8, 0x4a, 0x68, 0x45, 0xe8, 0xaa, 0x61, 0xf2, 0x76, 0x12, 0xe9, 0xa3, 0x30, - 0x1c, 0x50, 0x3e, 0xb1, 0x7e, 0x9c, 0xda, 0x9f, 0x96, 0x1e, 0x02, 0xb5, 0x71, 0xe0, 0x28, 0xb3, - 0xd6, 0x6d, 0x5c, 0xcb, 0x72, 0x34, 0x0d, 0x5c, 0x3c, 0xd5, 0xb4, 0xe5, 0x52, 0x4a, 0x25, 0x99, - 0x62, 0xaa, 0x94, 0xb0, 0x7e, 0x65, 0xa4, 0xfb, 0xa5, 0xd5, 0xa8, 0xac, 0xbc, 0x18, 0xff, 0x4b, - 0x79, 0xa9, 0x5c, 0xb7, 0xbc, 0x58, 0x7f, 0x30, 0xd2, 0xdf, 0x22, 0x29, 0x1c, 0x6f, 0x66, 0x9c, - 0x0c, 0x0b, 0xcf, 0x77, 0xd8, 0x02, 0x53, 0xbd, 0x6a, 0x2b, 0x22, 0xae, 0xd3, 0x0d, 0x74, 0x70, - 0xbe, 0x4e, 0x37, 0xf1, 0x9b, 0x22, 0x74, 0xc1, 0x09, 0xce, 0x30, 0x07, 0xd7, 0x6c, 0x45, 0x64, - 0x70, 0xd3, 0xcc, 0xe1, 0xe6, 0x29, 0x90, 0xab, 0xd9, 0x49, 0x3e, 0x80, 0x9a, 0xa0, 0xae, 0x74, - 0x9e, 0xb4, 0x7f, 0x63, 0x5f, 0x75, 0xbd, 0xfb, 0x9f, 0x3e, 0x3f, 0xa5, 0x5e, 0xd4, 0xdf, 0x92, - 0xd6, 0xff, 0xf3, 0xd5, 0x9d, 0x0d, 0x29, 0xb3, 0x17, 0xcc, 0x3c, 0xc1, 0x66, 0xa1, 0xb8, 0xb0, - 0x51, 0xc7, 0xfa, 0xb7, 0x21, 0x51, 0x3b, 0x97, 0xb5, 0xa5, 0xbe, 0x88, 0x43, 0xb3, 0x92, 0x29, - 0xac, 0xd7, 0xf3, 0xcf, 0x37, 0x01, 0x5c, 0xca, 0x87, 0x5f, 0x50, 0x5f, 0x30, 0x47, 0x3b, 0xc9, - 0x74, 0x29, 0xff, 0x39, 0x7e, 0x90, 0xfd, 0x87, 0x64, 0xcf, 0x39, 0x73, 0xd0, 0x5b, 0x55, 0xbb, - 0xe9, 0x52, 0xfe, 0x19, 0x67, 0x4e, 0x62, 0x57, 0xf3, 0xbf, 0xb7, 0x8b, 0xec, 0x42, 0xf5, 0x8c, - 0x31, 0x8d, 0x6c, 0x9d, 0x44, 0xf5, 0xe4, 0xe1, 0xfb, 0xa8, 0xac, 0x42, 0x42, 0x8a, 0x58, 0xbf, - 0xac, 0xa4, 0xc1, 0x99, 0x16, 0xb7, 0xff, 0x2f, 0x1f, 0x7c, 0x8d, 0xdd, 0x62, 0x1e, 0x4a, 0xc9, - 0x31, 0xdc, 0x48, 0x52, 0x66, 0x38, 0x0f, 0x1d, 0x2a, 0xbb, 0x30, 0xe3, 0xb5, 0x39, 0xd6, 0x49, - 0x14, 0x3e, 0x53, 0xf2, 0xe4, 0x27, 0xb0, 0x5d, 0x48, 0xf2, 0x64, 0xab, 0xca, 0x6b, 0x73, 0xfd, - 0x56, 0x3e, 0xd7, 0xe3, 0xfd, 0x62, 0x7f, 0x54, 0xdf, 0x20, 0xd6, 0xbf, 0x25, 0xdb, 0x9c, 0x2c, - 0xf4, 0x97, 0xfd, 0xa2, 0xd6, 0x6f, 0x0c, 0x68, 0x17, 0x2e, 0x43, 0x0e, 0x00, 0x14, 0x72, 0x72, - 0xef, 0x25, 0xd3, 0x20, 0x15, 0xfb, 0x00, 0x9d, 0xf5, 0xd4, 0x7b, 0xc9, 0x6c, 0x73, 0x14, 0x2f, - 0xc9, 0x3d, 0x68, 0x8a, 0x85, 0x92, 0xce, 0x37, 0x82, 0xcf, 0x16, 0x28, 0xda, 0x10, 0xf8, 0x9f, - 0x3c, 0x80, 0x35, 0xb5, 0xb1, 0x1b, 0x70, 0xee, 0x85, 0xba, 0x19, 0x21, 0xd9, 0xad, 0x3f, 0x41, - 0x8e, 0xbd, 0x3a, 0x4a, 0x09, 0xeb, 0x17, 0x60, 0x26, 0xc7, 0x92, 0xb7, 0xc0, 0x9c, 0xd1, 0x85, - 0xee, 0x92, 0xe5, 0xdd, 0xea, 0x76, 0x6b, 0x46, 0x17, 0xd8, 0x20, 0x93, 0x6d, 0x68, 0x4a, 0xa6, - 0x58, 0x28, 0x7f, 0xd7, 0xed, 0xc6, 0x8c, 0x2e, 0x9e, 0x2d, 0x12, 0x86, 0x4b, 0x79, 0xdc, 0x02, - 0xcf, 0xe8, 0xe2, 0x13, 0xca, 0xad, 0x8f, 0xa0, 0xa1, 0x2e, 0x79, 0xad, 0x8d, 0xa5, 0x7e, 0x25, - 0xa7, 0xff, 0x03, 0x58, 0xcd, 0xdc, 0x9b, 0x7c, 0x17, 0x6e, 0x29, 0x0b, 0x43, 0x1a, 0x09, 0xf4, - 0x48, 0x6e, 0x43, 0x82, 0xcc, 0x53, 0x1a, 0x09, 0x79, 0xa4, 0x6a, 0xea, 0x7f, 0x5f, 0x81, 0x86, - 0x6a, 0x98, 0xc9, 0xbd, 0xcc, 0x74, 0x82, 0x55, 0xb1, 0xbf, 0x7a, 0xf9, 0xea, 0x4e, 0x13, 0x0b, - 0xc8, 0xc9, 0xc7, 0xe9, 0xa8, 0x92, 0x02, 0x66, 0x25, 0xd7, 0xcf, 0xc7, 0x13, 0x4f, 0x35, 0x33, - 0xf1, 0x6c, 0x43, 0xd3, 0x9f, 0xcf, 0xd0, 0x25, 0x35, 0xe5, 0x12, 0x7f, 0x3e, 0x93, 0x2e, 0x79, - 0x0b, 0x4c, 0x11, 0x08, 0x3a, 0x45, 0x96, 0x4a, 0xd2, 0x16, 0x7e, 0x90, 0xcc, 0x7b, 0xd0, 0xce, - 0x56, 0x5b, 0x59, 0x3d, 0x15, 0xb8, 0xaf, 0xa7, 0xb5, 0x56, 0x4e, 0x00, 0x6f, 0x43, 0x3b, 0x2d, - 0x34, 0x4a, 0x4e, 0x01, 0xfe, 0x46, 0xfa, 0x19, 0x05, 0x6f, 0x43, 0x2b, 0xa9, 0xc3, 0x0a, 0xfc, - 0x9b, 0x54, 0x95, 0x5f, 0x39, 0x38, 0x87, 0x51, 0x10, 0x06, 0x9c, 0x45, 0xba, 0xc1, 0x5a, 0x96, - 0x70, 0x89, 0x9c, 0xe5, 0x81, 0x99, 0x30, 0x65, 0xd3, 0x40, 0x1d, 0x27, 0x62, 0x9c, 0xeb, 0xfe, - 0x3c, 0x26, 0xc9, 0x1e, 0x34, 0xc3, 0xf9, 0x68, 0x28, 0x6b, 0x53, 0x3e, 0x30, 0x4f, 0xe7, 0xa3, - 0x4f, 0xd9, 0x45, 0x3c, 0xa1, 0x84, 0x48, 0x61, 0x75, 0x0a, 0xbe, 0x60, 0x91, 0xf6, 0x9f, 0x22, - 0x2c, 0x01, 0x9d, 0xe2, 0x78, 0x42, 0xde, 0x07, 0x33, 0xb1, 0xaf, 0x90, 0x20, 0xc5, 0x3b, 0xa7, - 0x82, 0xb2, 0x85, 0xe1, 0x9e, 0xeb, 0x33, 0x67, 0x98, 0xfa, 0x16, 0xef, 0xd5, 0xb2, 0xdb, 0x8a, - 0xf1, 0xa3, 0xd8, 0xb9, 0xd6, 0x77, 0xa0, 0xa1, 0xee, 0x88, 0x3f, 0xea, 0x45, 0x18, 0xf7, 0x57, - 0xb8, 0x2e, 0xcd, 0xe4, 0xdf, 0x19, 0xd0, 0x8a, 0xc7, 0x9f, 0x52, 0xa5, 0xdc, 0xa5, 0x2b, 0xd7, - 0xbd, 0xf4, 0xb2, 0xd9, 0x31, 0x8e, 0xb5, 0x5a, 0x26, 0xd6, 0xf6, 0x80, 0xa8, 0x90, 0x3a, 0x0f, - 0x84, 0xe7, 0xbb, 0x43, 0xe5, 0x4d, 0x15, 0x5b, 0x1d, 0xe4, 0x3c, 0x47, 0xc6, 0xa9, 0xfc, 0x7e, - 0xf8, 0x65, 0x1d, 0xda, 0x47, 0xfd, 0xe3, 0x93, 0xa3, 0x30, 0x9c, 0x7a, 0x63, 0x8a, 0x5d, 0xd7, - 0x01, 0xd4, 0xb0, 0xaf, 0x2c, 0x79, 0x9d, 0xea, 0x95, 0x0d, 0x38, 0xe4, 0x10, 0xea, 0xd8, 0x5e, - 0x92, 0xb2, 0x47, 0xaa, 0x5e, 0xe9, 0x9c, 0x23, 0x0f, 0x51, 0x0d, 0xe8, 0xd5, 0xb7, 0xaa, 0x5e, - 0xd9, 0xb0, 0x43, 0x3e, 0x02, 0x33, 0x6d, 0x0c, 0x97, 0xbd, 0x58, 0xf5, 0x96, 0x8e, 0x3d, 0x52, - 0x3f, 0xad, 0xb5, 0xcb, 0x1e, 0x5e, 0x7a, 0x4b, 0xe7, 0x03, 0xf2, 0x08, 0x9a, 0x71, 0xb7, 0x52, - 0xfe, 0xa6, 0xd4, 0x5b, 0x32, 0x92, 0x48, 0xf7, 0xa8, 0x8e, 0xaf, 0xec, 0xe1, 0xab, 0x57, 0x3a, - 0x37, 0x91, 0x07, 0xd0, 0xd0, 0x05, 0xa3, 0xf4, 0x5d, 0xa9, 0x57, 0x3e, 0x58, 0x48, 0x23, 0xd3, - 0x6e, 0x77, 0xd9, 0xe3, 0x5c, 0x6f, 0xe9, 0x80, 0x47, 0x8e, 0x00, 0x32, 0x5d, 0xde, 0xd2, 0x57, - 0xb7, 0xde, 0xf2, 0xc1, 0x8d, 0x7c, 0x08, 0xad, 0x74, 0x18, 0x2f, 0x7f, 0x47, 0xeb, 0x2d, 0x9b, - 0xa5, 0xfa, 0xdf, 0xf8, 0xd7, 0xdf, 0x77, 0x8c, 0xdf, 0x5e, 0xee, 0x18, 0x7f, 0xbc, 0xdc, 0x31, - 0xbe, 0xba, 0xdc, 0x31, 0xfe, 0x72, 0xb9, 0x63, 0xfc, 0xed, 0x72, 0xc7, 0xf8, 0xd3, 0xd7, 0x3b, - 0xc6, 0xa8, 0x81, 0xef, 0xa9, 0xef, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x59, 0x8b, 0xa6, - 0xd9, 0x15, 0x00, 0x00, +func init() { proto.RegisterFile("abci/types/types.proto", fileDescriptor_types_d8da2202f45d32c0) } +func init() { + golang_proto.RegisterFile("abci/types/types.proto", fileDescriptor_types_d8da2202f45d32c0) +} + +var fileDescriptor_types_d8da2202f45d32c0 = []byte{ + // 1959 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4f, 0x73, 0x1b, 0x49, + 0x15, 0xf7, 0xc8, 0xb2, 0xa4, 0x79, 0xb2, 0x2d, 0xa7, 0x9d, 0xd8, 0x8a, 0x16, 0xec, 0x30, 0x45, + 0x65, 0x1d, 0xd6, 0x2b, 0x83, 0x97, 0x6c, 0x39, 0xbb, 0xb0, 0x85, 0xe5, 0x0d, 0x2b, 0xd7, 0x2e, + 0x60, 0x26, 0xd9, 0x50, 0xc5, 0x45, 0xd5, 0xd2, 0xb4, 0x47, 0x53, 0x91, 0x66, 0x66, 0xa7, 0x5b, + 0x5e, 0x39, 0x1f, 0x81, 0xda, 0xa2, 0xb8, 0x71, 0xe6, 0xc6, 0x17, 0xa0, 0x8a, 0x23, 0x27, 0x6a, + 0x8f, 0x1c, 0xa0, 0xe0, 0x14, 0xc0, 0x5b, 0x5c, 0xf8, 0x04, 0x1c, 0xa9, 0xd7, 0xdd, 0xf3, 0xd7, + 0xa3, 0x54, 0x12, 0x6e, 0x5c, 0xa4, 0xee, 0x7e, 0xef, 0xf5, 0xf4, 0x7b, 0xfd, 0xde, 0xfb, 0xbd, + 0xd7, 0xb0, 0x45, 0x87, 0x23, 0xef, 0x40, 0x5c, 0x86, 0x8c, 0xab, 0xdf, 0x6e, 0x18, 0x05, 0x22, + 0x20, 0x2b, 0x72, 0xd2, 0x79, 0xdb, 0xf5, 0xc4, 0x78, 0x36, 0xec, 0x8e, 0x82, 0xe9, 0x81, 0x1b, + 0xb8, 0xc1, 0x81, 0xa4, 0x0e, 0x67, 0xe7, 0x72, 0x26, 0x27, 0x72, 0xa4, 0xa4, 0x3a, 0xbb, 0x6e, + 0x10, 0xb8, 0x13, 0x96, 0x72, 0x09, 0x6f, 0xca, 0xb8, 0xa0, 0xd3, 0x50, 0x33, 0x1c, 0x65, 0xf6, + 0x13, 0xcc, 0x77, 0x58, 0x34, 0xf5, 0x7c, 0x91, 0x1d, 0x4e, 0xbc, 0x21, 0x3f, 0x18, 0x05, 0xd3, + 0x69, 0xe0, 0x67, 0x0f, 0x64, 0xfd, 0xb1, 0x0a, 0x75, 0x9b, 0x7d, 0x36, 0x63, 0x5c, 0x90, 0x3d, + 0xa8, 0xb2, 0xd1, 0x38, 0x68, 0x57, 0xee, 0x18, 0x7b, 0xcd, 0x43, 0xd2, 0x55, 0x7c, 0x9a, 0xfa, + 0x70, 0x34, 0x0e, 0xfa, 0x4b, 0xb6, 0xe4, 0x20, 0x6f, 0xc1, 0xca, 0xf9, 0x64, 0xc6, 0xc7, 0xed, + 0x65, 0xc9, 0xba, 0x99, 0x67, 0xfd, 0x21, 0x92, 0xfa, 0x4b, 0xb6, 0xe2, 0xc1, 0x6d, 0x3d, 0xff, + 0x3c, 0x68, 0x57, 0xcb, 0xb6, 0x3d, 0xf5, 0xcf, 0xe5, 0xb6, 0xc8, 0x41, 0x8e, 0x00, 0x38, 0x13, + 0x83, 0x20, 0x14, 0x5e, 0xe0, 0xb7, 0x57, 0x24, 0xff, 0x76, 0x9e, 0xff, 0x11, 0x13, 0x3f, 0x91, + 0xe4, 0xfe, 0x92, 0x6d, 0xf2, 0x78, 0x82, 0x92, 0x9e, 0xef, 0x89, 0xc1, 0x68, 0x4c, 0x3d, 0xbf, + 0x5d, 0x2b, 0x93, 0x3c, 0xf5, 0x3d, 0x71, 0x82, 0x64, 0x94, 0xf4, 0xe2, 0x09, 0xaa, 0xf2, 0xd9, + 0x8c, 0x45, 0x97, 0xed, 0x7a, 0x99, 0x2a, 0x3f, 0x45, 0x12, 0xaa, 0x22, 0x79, 0xc8, 0xfb, 0xd0, + 0x1c, 0x32, 0xd7, 0xf3, 0x07, 0xc3, 0x49, 0x30, 0x7a, 0xda, 0x6e, 0x48, 0x91, 0x76, 0x5e, 0xa4, + 0x87, 0x0c, 0x3d, 0xa4, 0xf7, 0x97, 0x6c, 0x18, 0x26, 0x33, 0x72, 0x08, 0x8d, 0xd1, 0x98, 0x8d, + 0x9e, 0x0e, 0xc4, 0xbc, 0x6d, 0x4a, 0xc9, 0x5b, 0x79, 0xc9, 0x13, 0xa4, 0x3e, 0x9e, 0xf7, 0x97, + 0xec, 0xfa, 0x48, 0x0d, 0xc9, 0x7d, 0x30, 0x99, 0xef, 0xe8, 0xcf, 0x35, 0xa5, 0xd0, 0x56, 0xe1, + 0x5e, 0x7c, 0x27, 0xfe, 0x58, 0x83, 0xe9, 0x31, 0xe9, 0x42, 0x0d, 0xef, 0xda, 0x13, 0xed, 0x55, + 0x29, 0x73, 0xb3, 0xf0, 0x21, 0x49, 0xeb, 0x2f, 0xd9, 0x9a, 0x0b, 0xcd, 0xe7, 0xb0, 0x89, 0x77, + 0xc1, 0x22, 0x3c, 0xdc, 0x66, 0x99, 0xf9, 0x3e, 0x54, 0x74, 0x79, 0x3c, 0xd3, 0x89, 0x27, 0xbd, + 0x3a, 0xac, 0x5c, 0xd0, 0xc9, 0x8c, 0x59, 0x6f, 0x42, 0x33, 0xe3, 0x29, 0xa4, 0x0d, 0xf5, 0x29, + 0xe3, 0x9c, 0xba, 0xac, 0x6d, 0xdc, 0x31, 0xf6, 0x4c, 0x3b, 0x9e, 0x5a, 0xeb, 0xb0, 0x9a, 0xf5, + 0x93, 0x8c, 0x20, 0xfa, 0x02, 0x0a, 0x5e, 0xb0, 0x88, 0xa3, 0x03, 0x68, 0x41, 0x3d, 0xb5, 0xde, + 0x83, 0x8d, 0xa2, 0x13, 0x90, 0x0d, 0x58, 0x7e, 0xca, 0x2e, 0x35, 0x27, 0x0e, 0xc9, 0x4d, 0x7d, + 0x20, 0xe9, 0xc5, 0xa6, 0xad, 0x4f, 0xf7, 0x8b, 0x4a, 0x22, 0x9c, 0xf8, 0x01, 0x39, 0x82, 0x2a, + 0x06, 0x92, 0x94, 0x6e, 0x1e, 0x76, 0xba, 0x2a, 0xca, 0xba, 0x71, 0x94, 0x75, 0x1f, 0xc7, 0x51, + 0xd6, 0x6b, 0x7c, 0xf9, 0x7c, 0x77, 0xe9, 0x57, 0x7f, 0xdf, 0x35, 0x6c, 0x29, 0x41, 0x6e, 0xe3, + 0x55, 0x52, 0xcf, 0x1f, 0x78, 0x8e, 0xfe, 0x4e, 0x5d, 0xce, 0x4f, 0x1d, 0x72, 0x0c, 0x1b, 0xa3, + 0xc0, 0xe7, 0xcc, 0xe7, 0x33, 0x3e, 0x08, 0x69, 0x44, 0xa7, 0x5c, 0x47, 0x49, 0x7c, 0x71, 0x27, + 0x31, 0xf9, 0x4c, 0x52, 0xed, 0xd6, 0x28, 0xbf, 0x40, 0xde, 0x05, 0xb8, 0xa0, 0x13, 0xcf, 0xa1, + 0x22, 0x88, 0x78, 0xbb, 0x7a, 0x67, 0x79, 0xaf, 0x79, 0xb8, 0xa1, 0x85, 0x9f, 0xc4, 0x84, 0x5e, + 0x15, 0xcf, 0x64, 0x67, 0x38, 0xc9, 0x5d, 0x68, 0xd1, 0x30, 0x1c, 0x70, 0x41, 0x05, 0x1b, 0x0c, + 0x2f, 0x05, 0xe3, 0x32, 0x86, 0x56, 0xed, 0x35, 0x1a, 0x86, 0x8f, 0x70, 0xb5, 0x87, 0x8b, 0x96, + 0x93, 0xdc, 0x80, 0x74, 0x6f, 0x42, 0xa0, 0xea, 0x50, 0x41, 0xa5, 0x1d, 0x56, 0x6d, 0x39, 0xc6, + 0xb5, 0x90, 0x8a, 0xb1, 0xd6, 0x4e, 0x8e, 0xc9, 0x16, 0xd4, 0xc6, 0xcc, 0x73, 0xc7, 0x42, 0x2a, + 0xb4, 0x6c, 0xeb, 0x19, 0x9a, 0x3c, 0x8c, 0x82, 0x0b, 0x26, 0x23, 0xbc, 0x61, 0xab, 0x89, 0xf5, + 0x2f, 0x03, 0x6e, 0x5c, 0x0b, 0x09, 0xdc, 0x77, 0x4c, 0xf9, 0x38, 0xfe, 0x16, 0x8e, 0xc9, 0x5b, + 0xb8, 0x2f, 0x75, 0x58, 0xa4, 0x33, 0xcf, 0x9a, 0xd6, 0xb5, 0x2f, 0x17, 0xb5, 0xa2, 0x9a, 0x85, + 0x3c, 0x84, 0x8d, 0x09, 0xe5, 0x62, 0xa0, 0x3c, 0x77, 0x20, 0x33, 0xcb, 0x72, 0x2e, 0x9a, 0x3e, + 0xa1, 0xb1, 0x87, 0xa3, 0x43, 0x69, 0xf1, 0xf5, 0x49, 0x6e, 0x95, 0xf4, 0xe1, 0xe6, 0xf0, 0xf2, + 0x19, 0xf5, 0x85, 0xe7, 0xb3, 0xc1, 0x35, 0x6b, 0xb7, 0xf4, 0x56, 0x0f, 0x2f, 0x3c, 0x87, 0xf9, + 0x23, 0xa6, 0x37, 0xd9, 0x4c, 0x44, 0x92, 0x6b, 0xe0, 0xd6, 0x1d, 0x58, 0xcf, 0xc7, 0x2f, 0x59, + 0x87, 0x8a, 0x98, 0x6b, 0x0d, 0x2b, 0x62, 0x6e, 0x59, 0x89, 0xef, 0x25, 0x41, 0x74, 0x8d, 0xe7, + 0x1e, 0xb4, 0x0a, 0x01, 0x9d, 0x31, 0xb7, 0x91, 0x35, 0xb7, 0xd5, 0x82, 0xb5, 0x5c, 0x1c, 0x5b, + 0x5f, 0xac, 0x40, 0xc3, 0x66, 0x3c, 0x44, 0x37, 0x22, 0x47, 0x60, 0xb2, 0xf9, 0x88, 0xa9, 0x14, + 0x6a, 0x14, 0x12, 0x94, 0xe2, 0x79, 0x18, 0xd3, 0x31, 0x94, 0x13, 0x66, 0x72, 0x2f, 0x97, 0xfe, + 0x37, 0x8b, 0x42, 0xd9, 0xfc, 0xbf, 0x9f, 0xcf, 0xff, 0x37, 0x0b, 0xbc, 0x05, 0x00, 0xb8, 0x97, + 0x03, 0x80, 0xe2, 0xc6, 0x39, 0x04, 0x78, 0x50, 0x82, 0x00, 0xc5, 0xe3, 0x2f, 0x80, 0x80, 0x07, + 0x25, 0x10, 0xd0, 0xbe, 0xf6, 0xad, 0x52, 0x0c, 0xd8, 0xcf, 0x63, 0x40, 0x51, 0x9d, 0x02, 0x08, + 0x7c, 0xaf, 0x0c, 0x04, 0x6e, 0x17, 0x64, 0x16, 0xa2, 0xc0, 0x3b, 0xd7, 0x50, 0x60, 0xab, 0x20, + 0x5a, 0x02, 0x03, 0x0f, 0x72, 0xf9, 0x19, 0x4a, 0x75, 0x2b, 0x4f, 0xd0, 0xe4, 0xdd, 0xeb, 0x08, + 0xb2, 0x5d, 0xbc, 0xda, 0x32, 0x08, 0x39, 0x28, 0x40, 0xc8, 0xad, 0xe2, 0x29, 0x0b, 0x18, 0x92, + 0x22, 0xc1, 0x3d, 0x8c, 0xfb, 0x82, 0xa7, 0x61, 0x8e, 0x60, 0x51, 0x14, 0x44, 0x3a, 0x55, 0xab, + 0x89, 0xb5, 0x87, 0x99, 0x28, 0xf5, 0xaf, 0x17, 0xa0, 0x86, 0x74, 0xfa, 0x8c, 0x77, 0x59, 0xbf, + 0x36, 0x52, 0x59, 0x19, 0xd1, 0xd9, 0x2c, 0x66, 0xea, 0x2c, 0x96, 0x01, 0x93, 0x4a, 0x0e, 0x4c, + 0xc8, 0xb7, 0xe0, 0x86, 0x4c, 0x23, 0xd2, 0x2e, 0x83, 0x5c, 0x5a, 0x6b, 0x21, 0x41, 0x19, 0x44, + 0xe5, 0xb7, 0xb7, 0x61, 0x33, 0xc3, 0x8b, 0x29, 0x56, 0xa6, 0xb0, 0xaa, 0x0c, 0xde, 0x8d, 0x84, + 0xfb, 0x38, 0x0c, 0xfb, 0x94, 0x8f, 0xad, 0x1f, 0xa5, 0xfa, 0xa7, 0x40, 0x45, 0xa0, 0x3a, 0x0a, + 0x1c, 0xa5, 0xd6, 0x9a, 0x2d, 0xc7, 0x08, 0x5e, 0x93, 0xc0, 0x95, 0x5f, 0x35, 0x6d, 0x1c, 0x22, + 0x57, 0x12, 0x29, 0xa6, 0x0a, 0x09, 0xeb, 0x97, 0x46, 0xba, 0x5f, 0x8a, 0x5d, 0x65, 0x30, 0x63, + 0xfc, 0x2f, 0x30, 0x53, 0x79, 0x59, 0x98, 0xb1, 0x7e, 0x67, 0xa4, 0x77, 0x91, 0x00, 0xc8, 0xeb, + 0x29, 0x87, 0x6e, 0xe1, 0xf9, 0x0e, 0x9b, 0xcb, 0x50, 0x5f, 0xb6, 0xd5, 0x24, 0x46, 0xf5, 0x9a, + 0x34, 0x70, 0x1e, 0xd5, 0xeb, 0x72, 0x4d, 0x4d, 0x34, 0xf0, 0x04, 0xe7, 0x32, 0x06, 0x57, 0x6d, + 0x35, 0xc9, 0xe4, 0x4d, 0x33, 0x97, 0x37, 0xcf, 0x80, 0x5c, 0x8f, 0x4e, 0xf2, 0x1e, 0x54, 0x05, + 0x75, 0xd1, 0x78, 0xa8, 0xff, 0x7a, 0x57, 0xd5, 0xc8, 0xdd, 0x8f, 0x9f, 0x9c, 0x51, 0x2f, 0xea, + 0x6d, 0xa1, 0xf6, 0xff, 0x7e, 0xbe, 0xbb, 0x8e, 0x3c, 0xfb, 0xc1, 0xd4, 0x13, 0x6c, 0x1a, 0x8a, + 0x4b, 0x5b, 0xca, 0x58, 0x7f, 0x31, 0x30, 0x6b, 0xe7, 0xa2, 0xb6, 0xd4, 0x16, 0xb1, 0x6b, 0x56, + 0x32, 0x00, 0xfb, 0x72, 0xf6, 0xf9, 0x3a, 0x80, 0x4b, 0xf9, 0xe0, 0x73, 0xea, 0x0b, 0xe6, 0x68, + 0x23, 0x99, 0x2e, 0xe5, 0x3f, 0x93, 0x0b, 0x58, 0x87, 0x20, 0x79, 0xc6, 0x99, 0x23, 0xad, 0xb5, + 0x6c, 0xd7, 0x5d, 0xca, 0x3f, 0xe5, 0xcc, 0x49, 0xf4, 0xaa, 0xbf, 0x86, 0x5e, 0x7f, 0xcd, 0xb8, + 0x5c, 0x0a, 0x59, 0xff, 0x0f, 0x9a, 0x7d, 0x65, 0x20, 0x16, 0xe7, 0xd3, 0x1e, 0x39, 0x81, 0x1b, + 0x89, 0x7b, 0x0f, 0x66, 0xa1, 0x43, 0xb1, 0x72, 0x32, 0x5e, 0x18, 0x0f, 0x1b, 0x89, 0xc0, 0xa7, + 0x8a, 0x9f, 0xfc, 0x18, 0xb6, 0x0b, 0x01, 0x99, 0x6c, 0x55, 0x79, 0x61, 0x5c, 0xde, 0xca, 0xc7, + 0x65, 0xbc, 0x5f, 0xac, 0xe5, 0xf2, 0x6b, 0x68, 0xf9, 0x4d, 0x2c, 0x49, 0xb2, 0x69, 0xba, 0xec, + 0x9e, 0xac, 0xdf, 0x18, 0xd0, 0x2a, 0x1c, 0x86, 0x1c, 0x00, 0xa8, 0x2c, 0xc7, 0xbd, 0x67, 0x71, + 0x61, 0x1c, 0xdb, 0x40, 0x1a, 0xeb, 0x91, 0xf7, 0x8c, 0xd9, 0xe6, 0x30, 0x1e, 0x92, 0xbb, 0x50, + 0x17, 0x73, 0xc5, 0x9d, 0x2f, 0xde, 0x1e, 0xcf, 0x25, 0x6b, 0x4d, 0xc8, 0x7f, 0x72, 0x1f, 0x56, + 0xd5, 0xc6, 0x6e, 0xc0, 0xb9, 0x17, 0xea, 0xc2, 0x81, 0x64, 0xb7, 0xfe, 0x48, 0x52, 0xec, 0xe6, + 0x30, 0x9d, 0x58, 0x3f, 0x07, 0x33, 0xf9, 0x2c, 0x79, 0x03, 0xcc, 0x29, 0x9d, 0xeb, 0xca, 0x16, + 0xcf, 0xb6, 0x62, 0x37, 0xa6, 0x74, 0x2e, 0x8b, 0x5a, 0xb2, 0x0d, 0x75, 0x24, 0x8a, 0xb9, 0xb2, + 0xf7, 0x8a, 0x5d, 0x9b, 0xd2, 0xf9, 0xe3, 0x79, 0x42, 0x70, 0x29, 0x8f, 0xcb, 0xd6, 0x29, 0x9d, + 0x7f, 0x44, 0xb9, 0xf5, 0x01, 0xd4, 0xd4, 0x21, 0x5f, 0x6a, 0x63, 0x94, 0xaf, 0xe4, 0xe4, 0x7f, + 0x00, 0xcd, 0xcc, 0xb9, 0xc9, 0x77, 0xe0, 0x96, 0xd2, 0x30, 0xa4, 0x91, 0x90, 0x16, 0xc9, 0x6d, + 0x48, 0x24, 0xf1, 0x8c, 0x46, 0x02, 0x3f, 0xa9, 0x0a, 0xf1, 0x08, 0xd6, 0xf3, 0xc5, 0x2a, 0xf9, + 0x06, 0xac, 0xea, 0xc2, 0x36, 0x0a, 0x66, 0xbe, 0xa3, 0x65, 0x9b, 0x6a, 0xcd, 0xc6, 0x25, 0xf2, + 0xfd, 0x92, 0xb4, 0x1d, 0x23, 0xfa, 0x23, 0xcf, 0xf5, 0x3d, 0xdf, 0x7d, 0x51, 0xf6, 0xfe, 0x5b, + 0x05, 0x6a, 0xaa, 0xb0, 0x26, 0x77, 0x33, 0x5d, 0x8c, 0x44, 0xcd, 0x5e, 0xf3, 0xea, 0xf9, 0x6e, + 0x5d, 0x02, 0xcc, 0xe9, 0x87, 0x69, 0x4b, 0x93, 0x26, 0xd4, 0x4a, 0xae, 0xee, 0x8f, 0xfb, 0xa7, + 0xe5, 0x57, 0xee, 0x9f, 0xb6, 0xa1, 0xee, 0xcf, 0xa6, 0xf2, 0xb2, 0xaa, 0xea, 0xb2, 0xfc, 0xd9, + 0x14, 0x2f, 0xeb, 0x0d, 0x30, 0x45, 0x20, 0xe8, 0x44, 0x92, 0x54, 0x52, 0x68, 0xc8, 0x05, 0x24, + 0xde, 0x85, 0x56, 0x16, 0xb3, 0x11, 0x83, 0x15, 0x44, 0xac, 0xa5, 0x88, 0x8d, 0xfd, 0xc4, 0x9b, + 0xd0, 0x4a, 0x15, 0x56, 0x7c, 0x0a, 0x36, 0xd6, 0xd3, 0x65, 0xc9, 0x78, 0x1b, 0x1a, 0x09, 0x9a, + 0x2b, 0x08, 0xa9, 0x53, 0x05, 0xe2, 0xd8, 0xac, 0x87, 0x51, 0x10, 0x06, 0x9c, 0x45, 0xba, 0x4c, + 0x5b, 0x94, 0x0a, 0x12, 0x3e, 0xcb, 0x03, 0x33, 0x21, 0x62, 0xe9, 0x41, 0x1d, 0x27, 0x62, 0x9c, + 0xeb, 0x2a, 0x3f, 0x9e, 0x92, 0x7d, 0xa8, 0x87, 0xb3, 0xe1, 0x00, 0x11, 0x2e, 0x1f, 0x32, 0x67, + 0xb3, 0xe1, 0xc7, 0xec, 0x32, 0xee, 0x77, 0x42, 0x39, 0x93, 0x18, 0x17, 0x7c, 0xce, 0x22, 0xed, + 0xbc, 0x6a, 0x62, 0x09, 0xd8, 0x28, 0xde, 0x35, 0xf9, 0x2e, 0x98, 0x89, 0x7e, 0x85, 0xd0, 0x2d, + 0x9e, 0x39, 0x65, 0xc4, 0x42, 0x88, 0x7b, 0xae, 0xcf, 0x9c, 0x41, 0x6a, 0x5b, 0x79, 0xae, 0x86, + 0xdd, 0x52, 0x84, 0x4f, 0x62, 0xe3, 0x5a, 0xdf, 0x86, 0x9a, 0x3a, 0x23, 0xe6, 0x13, 0xdc, 0x39, + 0x2e, 0xb6, 0x70, 0x5c, 0x9a, 0x63, 0xfe, 0x6c, 0x40, 0x23, 0x6e, 0xa2, 0x4a, 0x85, 0x72, 0x87, + 0xae, 0xbc, 0xec, 0xa1, 0x17, 0x75, 0xa2, 0xb1, 0x47, 0x56, 0x5f, 0xd9, 0x23, 0xf7, 0x81, 0x28, + 0xc7, 0xbb, 0x08, 0x84, 0xe7, 0xbb, 0x03, 0x65, 0x73, 0xe5, 0x81, 0x1b, 0x92, 0xf2, 0x44, 0x12, + 0xce, 0x70, 0xfd, 0xf0, 0x8b, 0x15, 0x68, 0x1d, 0xf7, 0x4e, 0x4e, 0x8f, 0xc3, 0x70, 0xe2, 0x8d, + 0xa8, 0xac, 0xf0, 0x0e, 0xa0, 0x2a, 0x6b, 0xd8, 0x92, 0x77, 0xb3, 0x4e, 0x59, 0x33, 0x45, 0x0e, + 0x61, 0x45, 0x96, 0xb2, 0xa4, 0xec, 0xf9, 0xac, 0x53, 0xda, 0x53, 0xe1, 0x47, 0x54, 0xb1, 0x7b, + 0xfd, 0x15, 0xad, 0x53, 0xd6, 0x58, 0x91, 0x0f, 0xc0, 0x4c, 0x8b, 0xd0, 0x45, 0x6f, 0x69, 0x9d, + 0x85, 0x2d, 0x16, 0xca, 0xa7, 0x15, 0xc0, 0xa2, 0x27, 0xa1, 0xce, 0xc2, 0x5e, 0x84, 0x1c, 0x41, + 0x3d, 0xae, 0x8c, 0xca, 0x5f, 0xbb, 0x3a, 0x0b, 0xda, 0x1f, 0x34, 0x8f, 0xaa, 0x2e, 0xcb, 0x9e, + 0xe4, 0x3a, 0xa5, 0x3d, 0x1a, 0xb9, 0x0f, 0x35, 0x0d, 0x78, 0xa5, 0x2f, 0x5e, 0x9d, 0xf2, 0x26, + 0x06, 0x95, 0x4c, 0x2b, 0xeb, 0x45, 0xcf, 0x86, 0x9d, 0x85, 0xcd, 0x24, 0x39, 0x06, 0xc8, 0x54, + 0x94, 0x0b, 0xdf, 0x03, 0x3b, 0x8b, 0x9b, 0x44, 0xf2, 0x3e, 0x34, 0xd2, 0xc6, 0xbf, 0xfc, 0x85, + 0xaf, 0xb3, 0xa8, 0x6f, 0xeb, 0x7d, 0xed, 0x3f, 0xff, 0xdc, 0x31, 0x7e, 0x7b, 0xb5, 0x63, 0xfc, + 0xfe, 0x6a, 0xc7, 0xf8, 0xf2, 0x6a, 0xc7, 0xf8, 0xd3, 0xd5, 0x8e, 0xf1, 0x8f, 0xab, 0x1d, 0xe3, + 0x0f, 0x5f, 0xed, 0x18, 0xc3, 0x9a, 0x74, 0xff, 0x77, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xc1, + 0xc2, 0x93, 0xfb, 0x94, 0x16, 0x00, 0x00, } diff --git a/abci/types/types.proto b/abci/types/types.proto index 0e1c1843..6e6b1cd3 100644 --- a/abci/types/types.proto +++ b/abci/types/types.proto @@ -4,6 +4,7 @@ package types; // For more information on gogo.proto, see: // https://github.com/gogo/protobuf/blob/master/extensions.md import "github.com/gogo/protobuf/gogoproto/gogo.proto"; +import "google/protobuf/timestamp.proto"; import "github.com/tendermint/tendermint/libs/common/types.proto"; // This file is copied from http://github.com/tendermint/abci @@ -56,7 +57,7 @@ message RequestSetOption { } message RequestInitChain { - int64 time = 1; + google.protobuf.Timestamp time = 1 [(gogoproto.nullable)=false, (gogoproto.stdtime)=true]; string chain_id = 2; ConsensusParams consensus_params = 3; repeated Validator validators = 4 [(gogoproto.nullable)=false]; @@ -70,10 +71,11 @@ message RequestQuery { bool prove = 4; } +// NOTE: validators here have empty pubkeys. message RequestBeginBlock { bytes hash = 1; Header header = 2 [(gogoproto.nullable)=false]; - repeated SigningValidator validators = 3 [(gogoproto.nullable)=false]; + LastCommitInfo last_commit_info = 3 [(gogoproto.nullable)=false]; repeated Evidence byzantine_validators = 4 [(gogoproto.nullable)=false]; } @@ -168,7 +170,6 @@ message ResponseCheckTx { int64 gas_wanted = 5; int64 gas_used = 6; repeated common.KVPair tags = 7 [(gogoproto.nullable)=false, (gogoproto.jsontag)="tags,omitempty"]; - common.KI64Pair fee = 8 [(gogoproto.nullable)=false]; } message ResponseDeliverTx { @@ -179,7 +180,6 @@ message ResponseDeliverTx { int64 gas_wanted = 5; int64 gas_used = 6; repeated common.KVPair tags = 7 [(gogoproto.nullable)=false, (gogoproto.jsontag)="tags,omitempty"]; - common.KI64Pair fee = 8 [(gogoproto.nullable)=false]; } message ResponseEndBlock { @@ -204,14 +204,14 @@ message ConsensusParams { BlockGossip block_gossip = 3; } -// BlockSize contain limits on the block size. +// BlockSize contains limits on the block size. message BlockSize { int32 max_bytes = 1; int32 max_txs = 2; int64 max_gas = 3; } -// TxSize contain limits on the tx size. +// TxSize contains limits on the tx size. message TxSize { int32 max_bytes = 1; int64 max_gas = 2; @@ -224,6 +224,11 @@ message BlockGossip { int32 block_part_size_bytes = 1; } +message LastCommitInfo { + int32 commit_round = 1; + repeated SigningValidator validators = 2 [(gogoproto.nullable)=false]; +} + //---------------------------------------- // Blockchain Types @@ -232,7 +237,7 @@ message Header { // basics string chain_id = 1 [(gogoproto.customname)="ChainID"]; int64 height = 2; - int64 time = 3; + google.protobuf.Timestamp time = 3 [(gogoproto.nullable)=false, (gogoproto.stdtime)=true]; // txs int32 num_txs = 4; @@ -269,7 +274,7 @@ message Evidence { string type = 1; Validator validator = 2 [(gogoproto.nullable)=false]; int64 height = 3; - int64 time = 4; + google.protobuf.Timestamp time = 4 [(gogoproto.nullable)=false, (gogoproto.stdtime)=true]; int64 total_voting_power = 5; } diff --git a/abci/types/typespb_test.go b/abci/types/typespb_test.go index d1316239..33a368af 100644 --- a/abci/types/typespb_test.go +++ b/abci/types/typespb_test.go @@ -1,59 +1,19 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: abci/types/types.proto -/* -Package types is a generated protocol buffer package. - -It is generated from these files: - abci/types/types.proto - -It has these top-level messages: - Request - RequestEcho - RequestFlush - RequestInfo - RequestSetOption - RequestInitChain - RequestQuery - RequestBeginBlock - RequestCheckTx - RequestDeliverTx - RequestEndBlock - RequestCommit - Response - ResponseException - ResponseEcho - ResponseFlush - ResponseInfo - ResponseSetOption - ResponseInitChain - ResponseQuery - ResponseBeginBlock - ResponseCheckTx - ResponseDeliverTx - ResponseEndBlock - ResponseCommit - ConsensusParams - BlockSize - TxSize - BlockGossip - Header - Validator - SigningValidator - PubKey - Evidence -*/ package types import testing "testing" -import rand "math/rand" +import math_rand "math/rand" import time "time" +import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" +import github_com_gogo_protobuf_jsonpb "github.com/gogo/protobuf/jsonpb" import proto "github.com/gogo/protobuf/proto" -import jsonpb "github.com/gogo/protobuf/jsonpb" import golang_proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import _ "github.com/gogo/protobuf/gogoproto" +import _ "github.com/golang/protobuf/ptypes/timestamp" import _ "github.com/tendermint/tendermint/libs/common" // Reference imports to suppress errors if they are not otherwise used. @@ -64,14 +24,14 @@ var _ = math.Inf func TestRequestProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequest(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Request{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -89,13 +49,13 @@ func TestRequestProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequest(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -107,7 +67,7 @@ func TestRequestMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Request{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -120,14 +80,14 @@ func TestRequestMarshalTo(t *testing.T) { func TestRequestEchoProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEcho(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestEcho{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -145,13 +105,13 @@ func TestRequestEchoProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestEchoMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEcho(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -163,7 +123,7 @@ func TestRequestEchoMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestEcho{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -176,14 +136,14 @@ func TestRequestEchoMarshalTo(t *testing.T) { func TestRequestFlushProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestFlush(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestFlush{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -201,13 +161,13 @@ func TestRequestFlushProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestFlushMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestFlush(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -219,7 +179,7 @@ func TestRequestFlushMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestFlush{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -232,14 +192,14 @@ func TestRequestFlushMarshalTo(t *testing.T) { func TestRequestInfoProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInfo(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestInfo{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -257,13 +217,13 @@ func TestRequestInfoProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestInfoMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInfo(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -275,7 +235,7 @@ func TestRequestInfoMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestInfo{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -288,14 +248,14 @@ func TestRequestInfoMarshalTo(t *testing.T) { func TestRequestSetOptionProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestSetOption(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestSetOption{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -313,13 +273,13 @@ func TestRequestSetOptionProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestSetOptionMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestSetOption(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -331,7 +291,7 @@ func TestRequestSetOptionMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestSetOption{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -344,14 +304,14 @@ func TestRequestSetOptionMarshalTo(t *testing.T) { func TestRequestInitChainProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInitChain(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestInitChain{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -369,13 +329,13 @@ func TestRequestInitChainProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestInitChainMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInitChain(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -387,7 +347,7 @@ func TestRequestInitChainMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestInitChain{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -400,14 +360,14 @@ func TestRequestInitChainMarshalTo(t *testing.T) { func TestRequestQueryProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestQuery(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestQuery{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -425,13 +385,13 @@ func TestRequestQueryProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestQueryMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestQuery(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -443,7 +403,7 @@ func TestRequestQueryMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestQuery{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -456,14 +416,14 @@ func TestRequestQueryMarshalTo(t *testing.T) { func TestRequestBeginBlockProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestBeginBlock(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestBeginBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -481,13 +441,13 @@ func TestRequestBeginBlockProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestBeginBlockMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestBeginBlock(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -499,7 +459,7 @@ func TestRequestBeginBlockMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestBeginBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -512,14 +472,14 @@ func TestRequestBeginBlockMarshalTo(t *testing.T) { func TestRequestCheckTxProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCheckTx(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestCheckTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -537,13 +497,13 @@ func TestRequestCheckTxProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestCheckTxMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCheckTx(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -555,7 +515,7 @@ func TestRequestCheckTxMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestCheckTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -568,14 +528,14 @@ func TestRequestCheckTxMarshalTo(t *testing.T) { func TestRequestDeliverTxProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestDeliverTx(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestDeliverTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -593,13 +553,13 @@ func TestRequestDeliverTxProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestDeliverTxMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestDeliverTx(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -611,7 +571,7 @@ func TestRequestDeliverTxMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestDeliverTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -624,14 +584,14 @@ func TestRequestDeliverTxMarshalTo(t *testing.T) { func TestRequestEndBlockProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEndBlock(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestEndBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -649,13 +609,13 @@ func TestRequestEndBlockProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestEndBlockMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEndBlock(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -667,7 +627,7 @@ func TestRequestEndBlockMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestEndBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -680,14 +640,14 @@ func TestRequestEndBlockMarshalTo(t *testing.T) { func TestRequestCommitProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCommit(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestCommit{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -705,13 +665,13 @@ func TestRequestCommitProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestRequestCommitMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCommit(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -723,7 +683,7 @@ func TestRequestCommitMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestCommit{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -736,14 +696,14 @@ func TestRequestCommitMarshalTo(t *testing.T) { func TestResponseProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponse(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Response{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -761,13 +721,13 @@ func TestResponseProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponse(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -779,7 +739,7 @@ func TestResponseMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Response{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -792,14 +752,14 @@ func TestResponseMarshalTo(t *testing.T) { func TestResponseExceptionProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseException(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseException{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -817,13 +777,13 @@ func TestResponseExceptionProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseExceptionMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseException(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -835,7 +795,7 @@ func TestResponseExceptionMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseException{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -848,14 +808,14 @@ func TestResponseExceptionMarshalTo(t *testing.T) { func TestResponseEchoProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEcho(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseEcho{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -873,13 +833,13 @@ func TestResponseEchoProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseEchoMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEcho(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -891,7 +851,7 @@ func TestResponseEchoMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseEcho{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -904,14 +864,14 @@ func TestResponseEchoMarshalTo(t *testing.T) { func TestResponseFlushProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseFlush(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseFlush{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -929,13 +889,13 @@ func TestResponseFlushProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseFlushMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseFlush(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -947,7 +907,7 @@ func TestResponseFlushMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseFlush{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -960,14 +920,14 @@ func TestResponseFlushMarshalTo(t *testing.T) { func TestResponseInfoProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInfo(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseInfo{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -985,13 +945,13 @@ func TestResponseInfoProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseInfoMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInfo(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1003,7 +963,7 @@ func TestResponseInfoMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseInfo{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1016,14 +976,14 @@ func TestResponseInfoMarshalTo(t *testing.T) { func TestResponseSetOptionProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseSetOption(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseSetOption{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1041,13 +1001,13 @@ func TestResponseSetOptionProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseSetOptionMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseSetOption(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1059,7 +1019,7 @@ func TestResponseSetOptionMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseSetOption{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1072,14 +1032,14 @@ func TestResponseSetOptionMarshalTo(t *testing.T) { func TestResponseInitChainProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInitChain(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseInitChain{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1097,13 +1057,13 @@ func TestResponseInitChainProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseInitChainMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInitChain(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1115,7 +1075,7 @@ func TestResponseInitChainMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseInitChain{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1128,14 +1088,14 @@ func TestResponseInitChainMarshalTo(t *testing.T) { func TestResponseQueryProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseQuery(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseQuery{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1153,13 +1113,13 @@ func TestResponseQueryProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseQueryMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseQuery(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1171,7 +1131,7 @@ func TestResponseQueryMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseQuery{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1184,14 +1144,14 @@ func TestResponseQueryMarshalTo(t *testing.T) { func TestResponseBeginBlockProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseBeginBlock(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseBeginBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1209,13 +1169,13 @@ func TestResponseBeginBlockProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseBeginBlockMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseBeginBlock(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1227,7 +1187,7 @@ func TestResponseBeginBlockMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseBeginBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1240,14 +1200,14 @@ func TestResponseBeginBlockMarshalTo(t *testing.T) { func TestResponseCheckTxProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCheckTx(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseCheckTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1265,13 +1225,13 @@ func TestResponseCheckTxProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseCheckTxMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCheckTx(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1283,7 +1243,7 @@ func TestResponseCheckTxMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseCheckTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1296,14 +1256,14 @@ func TestResponseCheckTxMarshalTo(t *testing.T) { func TestResponseDeliverTxProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseDeliverTx(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseDeliverTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1321,13 +1281,13 @@ func TestResponseDeliverTxProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseDeliverTxMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseDeliverTx(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1339,7 +1299,7 @@ func TestResponseDeliverTxMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseDeliverTx{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1352,14 +1312,14 @@ func TestResponseDeliverTxMarshalTo(t *testing.T) { func TestResponseEndBlockProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEndBlock(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseEndBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1377,13 +1337,13 @@ func TestResponseEndBlockProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseEndBlockMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEndBlock(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1395,7 +1355,7 @@ func TestResponseEndBlockMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseEndBlock{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1408,14 +1368,14 @@ func TestResponseEndBlockMarshalTo(t *testing.T) { func TestResponseCommitProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCommit(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseCommit{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1433,13 +1393,13 @@ func TestResponseCommitProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestResponseCommitMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCommit(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1451,7 +1411,7 @@ func TestResponseCommitMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseCommit{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1464,14 +1424,14 @@ func TestResponseCommitMarshalTo(t *testing.T) { func TestConsensusParamsProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedConsensusParams(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ConsensusParams{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1489,13 +1449,13 @@ func TestConsensusParamsProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestConsensusParamsMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedConsensusParams(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1507,7 +1467,7 @@ func TestConsensusParamsMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ConsensusParams{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1520,14 +1480,14 @@ func TestConsensusParamsMarshalTo(t *testing.T) { func TestBlockSizeProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockSize(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &BlockSize{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1545,13 +1505,13 @@ func TestBlockSizeProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestBlockSizeMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockSize(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1563,7 +1523,7 @@ func TestBlockSizeMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &BlockSize{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1576,14 +1536,14 @@ func TestBlockSizeMarshalTo(t *testing.T) { func TestTxSizeProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedTxSize(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &TxSize{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1601,13 +1561,13 @@ func TestTxSizeProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestTxSizeMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedTxSize(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1619,7 +1579,7 @@ func TestTxSizeMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &TxSize{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1632,14 +1592,14 @@ func TestTxSizeMarshalTo(t *testing.T) { func TestBlockGossipProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockGossip(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &BlockGossip{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1657,13 +1617,13 @@ func TestBlockGossipProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestBlockGossipMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockGossip(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1675,7 +1635,63 @@ func TestBlockGossipMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &BlockGossip{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + for i := range dAtA { + dAtA[i] = byte(popr.Intn(256)) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } +} + +func TestLastCommitInfoProto(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, false) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + littlefuzz := make([]byte, len(dAtA)) + copy(littlefuzz, dAtA) + for i := range dAtA { + dAtA[i] = byte(popr.Intn(256)) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } + if len(littlefuzz) > 0 { + fuzzamount := 100 + for i := 0; i < fuzzamount; i++ { + littlefuzz[popr.Intn(len(littlefuzz))] = byte(popr.Intn(256)) + littlefuzz = append(littlefuzz, byte(popr.Intn(256))) + } + // shouldn't panic + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) + } +} + +func TestLastCommitInfoMarshalTo(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, false) + size := p.Size() + dAtA := make([]byte, size) + for i := range dAtA { + dAtA[i] = byte(popr.Intn(256)) + } + _, err := p.MarshalTo(dAtA) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1688,14 +1704,14 @@ func TestBlockGossipMarshalTo(t *testing.T) { func TestHeaderProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedHeader(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Header{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1713,13 +1729,13 @@ func TestHeaderProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestHeaderMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedHeader(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1731,7 +1747,7 @@ func TestHeaderMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Header{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1744,14 +1760,14 @@ func TestHeaderMarshalTo(t *testing.T) { func TestValidatorProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedValidator(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Validator{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1769,13 +1785,13 @@ func TestValidatorProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestValidatorMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedValidator(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1787,7 +1803,7 @@ func TestValidatorMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Validator{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1800,14 +1816,14 @@ func TestValidatorMarshalTo(t *testing.T) { func TestSigningValidatorProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedSigningValidator(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &SigningValidator{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1825,13 +1841,13 @@ func TestSigningValidatorProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestSigningValidatorMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedSigningValidator(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1843,7 +1859,7 @@ func TestSigningValidatorMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &SigningValidator{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1856,14 +1872,14 @@ func TestSigningValidatorMarshalTo(t *testing.T) { func TestPubKeyProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedPubKey(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &PubKey{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1881,13 +1897,13 @@ func TestPubKeyProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestPubKeyMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedPubKey(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1899,7 +1915,7 @@ func TestPubKeyMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &PubKey{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1912,14 +1928,14 @@ func TestPubKeyMarshalTo(t *testing.T) { func TestEvidenceProto(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedEvidence(popr, false) - dAtA, err := proto.Marshal(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Evidence{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } littlefuzz := make([]byte, len(dAtA)) @@ -1937,13 +1953,13 @@ func TestEvidenceProto(t *testing.T) { littlefuzz = append(littlefuzz, byte(popr.Intn(256))) } // shouldn't panic - _ = proto.Unmarshal(littlefuzz, msg) + _ = github_com_gogo_protobuf_proto.Unmarshal(littlefuzz, msg) } } func TestEvidenceMarshalTo(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedEvidence(popr, false) size := p.Size() dAtA := make([]byte, size) @@ -1955,7 +1971,7 @@ func TestEvidenceMarshalTo(t *testing.T) { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Evidence{} - if err := proto.Unmarshal(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.Unmarshal(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } for i := range dAtA { @@ -1968,15 +1984,15 @@ func TestEvidenceMarshalTo(t *testing.T) { func TestRequestJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequest(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Request{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -1986,15 +2002,15 @@ func TestRequestJSON(t *testing.T) { } func TestRequestEchoJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEcho(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestEcho{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2004,15 +2020,15 @@ func TestRequestEchoJSON(t *testing.T) { } func TestRequestFlushJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestFlush(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestFlush{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2022,15 +2038,15 @@ func TestRequestFlushJSON(t *testing.T) { } func TestRequestInfoJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInfo(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestInfo{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2040,15 +2056,15 @@ func TestRequestInfoJSON(t *testing.T) { } func TestRequestSetOptionJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestSetOption(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestSetOption{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2058,15 +2074,15 @@ func TestRequestSetOptionJSON(t *testing.T) { } func TestRequestInitChainJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInitChain(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestInitChain{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2076,15 +2092,15 @@ func TestRequestInitChainJSON(t *testing.T) { } func TestRequestQueryJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestQuery(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestQuery{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2094,15 +2110,15 @@ func TestRequestQueryJSON(t *testing.T) { } func TestRequestBeginBlockJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestBeginBlock(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestBeginBlock{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2112,15 +2128,15 @@ func TestRequestBeginBlockJSON(t *testing.T) { } func TestRequestCheckTxJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCheckTx(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestCheckTx{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2130,15 +2146,15 @@ func TestRequestCheckTxJSON(t *testing.T) { } func TestRequestDeliverTxJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestDeliverTx(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestDeliverTx{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2148,15 +2164,15 @@ func TestRequestDeliverTxJSON(t *testing.T) { } func TestRequestEndBlockJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEndBlock(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestEndBlock{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2166,15 +2182,15 @@ func TestRequestEndBlockJSON(t *testing.T) { } func TestRequestCommitJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCommit(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &RequestCommit{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2184,15 +2200,15 @@ func TestRequestCommitJSON(t *testing.T) { } func TestResponseJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponse(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Response{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2202,15 +2218,15 @@ func TestResponseJSON(t *testing.T) { } func TestResponseExceptionJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseException(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseException{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2220,15 +2236,15 @@ func TestResponseExceptionJSON(t *testing.T) { } func TestResponseEchoJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEcho(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseEcho{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2238,15 +2254,15 @@ func TestResponseEchoJSON(t *testing.T) { } func TestResponseFlushJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseFlush(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseFlush{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2256,15 +2272,15 @@ func TestResponseFlushJSON(t *testing.T) { } func TestResponseInfoJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInfo(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseInfo{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2274,15 +2290,15 @@ func TestResponseInfoJSON(t *testing.T) { } func TestResponseSetOptionJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseSetOption(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseSetOption{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2292,15 +2308,15 @@ func TestResponseSetOptionJSON(t *testing.T) { } func TestResponseInitChainJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInitChain(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseInitChain{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2310,15 +2326,15 @@ func TestResponseInitChainJSON(t *testing.T) { } func TestResponseQueryJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseQuery(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseQuery{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2328,15 +2344,15 @@ func TestResponseQueryJSON(t *testing.T) { } func TestResponseBeginBlockJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseBeginBlock(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseBeginBlock{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2346,15 +2362,15 @@ func TestResponseBeginBlockJSON(t *testing.T) { } func TestResponseCheckTxJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCheckTx(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseCheckTx{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2364,15 +2380,15 @@ func TestResponseCheckTxJSON(t *testing.T) { } func TestResponseDeliverTxJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseDeliverTx(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseDeliverTx{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2382,15 +2398,15 @@ func TestResponseDeliverTxJSON(t *testing.T) { } func TestResponseEndBlockJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEndBlock(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseEndBlock{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2400,15 +2416,15 @@ func TestResponseEndBlockJSON(t *testing.T) { } func TestResponseCommitJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCommit(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ResponseCommit{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2418,15 +2434,15 @@ func TestResponseCommitJSON(t *testing.T) { } func TestConsensusParamsJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedConsensusParams(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &ConsensusParams{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2436,15 +2452,15 @@ func TestConsensusParamsJSON(t *testing.T) { } func TestBlockSizeJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockSize(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &BlockSize{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2454,15 +2470,15 @@ func TestBlockSizeJSON(t *testing.T) { } func TestTxSizeJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedTxSize(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &TxSize{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2472,15 +2488,33 @@ func TestTxSizeJSON(t *testing.T) { } func TestBlockGossipJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockGossip(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &BlockGossip{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Json Equal %#v", seed, msg, p) + } +} +func TestLastCommitInfoJSON(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} + jsondata, err := marshaler.MarshalToString(p) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + msg := &LastCommitInfo{} + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2490,15 +2524,15 @@ func TestBlockGossipJSON(t *testing.T) { } func TestHeaderJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedHeader(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Header{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2508,15 +2542,15 @@ func TestHeaderJSON(t *testing.T) { } func TestValidatorJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedValidator(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Validator{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2526,15 +2560,15 @@ func TestValidatorJSON(t *testing.T) { } func TestSigningValidatorJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedSigningValidator(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &SigningValidator{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2544,15 +2578,15 @@ func TestSigningValidatorJSON(t *testing.T) { } func TestPubKeyJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedPubKey(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &PubKey{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2562,15 +2596,15 @@ func TestPubKeyJSON(t *testing.T) { } func TestEvidenceJSON(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedEvidence(popr, true) - marshaler := jsonpb.Marshaler{} + marshaler := github_com_gogo_protobuf_jsonpb.Marshaler{} jsondata, err := marshaler.MarshalToString(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } msg := &Evidence{} - err = jsonpb.UnmarshalString(jsondata, msg) + err = github_com_gogo_protobuf_jsonpb.UnmarshalString(jsondata, msg) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -2580,11 +2614,11 @@ func TestEvidenceJSON(t *testing.T) { } func TestRequestProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequest(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &Request{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2594,11 +2628,11 @@ func TestRequestProtoText(t *testing.T) { func TestRequestProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequest(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &Request{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2608,11 +2642,11 @@ func TestRequestProtoCompactText(t *testing.T) { func TestRequestEchoProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEcho(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestEcho{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2622,11 +2656,11 @@ func TestRequestEchoProtoText(t *testing.T) { func TestRequestEchoProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEcho(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestEcho{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2636,11 +2670,11 @@ func TestRequestEchoProtoCompactText(t *testing.T) { func TestRequestFlushProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestFlush(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestFlush{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2650,11 +2684,11 @@ func TestRequestFlushProtoText(t *testing.T) { func TestRequestFlushProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestFlush(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestFlush{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2664,11 +2698,11 @@ func TestRequestFlushProtoCompactText(t *testing.T) { func TestRequestInfoProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInfo(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestInfo{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2678,11 +2712,11 @@ func TestRequestInfoProtoText(t *testing.T) { func TestRequestInfoProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInfo(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestInfo{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2692,11 +2726,11 @@ func TestRequestInfoProtoCompactText(t *testing.T) { func TestRequestSetOptionProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestSetOption(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestSetOption{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2706,11 +2740,11 @@ func TestRequestSetOptionProtoText(t *testing.T) { func TestRequestSetOptionProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestSetOption(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestSetOption{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2720,11 +2754,11 @@ func TestRequestSetOptionProtoCompactText(t *testing.T) { func TestRequestInitChainProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInitChain(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestInitChain{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2734,11 +2768,11 @@ func TestRequestInitChainProtoText(t *testing.T) { func TestRequestInitChainProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInitChain(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestInitChain{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2748,11 +2782,11 @@ func TestRequestInitChainProtoCompactText(t *testing.T) { func TestRequestQueryProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestQuery(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestQuery{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2762,11 +2796,11 @@ func TestRequestQueryProtoText(t *testing.T) { func TestRequestQueryProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestQuery(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestQuery{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2776,11 +2810,11 @@ func TestRequestQueryProtoCompactText(t *testing.T) { func TestRequestBeginBlockProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestBeginBlock(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestBeginBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2790,11 +2824,11 @@ func TestRequestBeginBlockProtoText(t *testing.T) { func TestRequestBeginBlockProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestBeginBlock(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestBeginBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2804,11 +2838,11 @@ func TestRequestBeginBlockProtoCompactText(t *testing.T) { func TestRequestCheckTxProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCheckTx(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestCheckTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2818,11 +2852,11 @@ func TestRequestCheckTxProtoText(t *testing.T) { func TestRequestCheckTxProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCheckTx(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestCheckTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2832,11 +2866,11 @@ func TestRequestCheckTxProtoCompactText(t *testing.T) { func TestRequestDeliverTxProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestDeliverTx(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestDeliverTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2846,11 +2880,11 @@ func TestRequestDeliverTxProtoText(t *testing.T) { func TestRequestDeliverTxProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestDeliverTx(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestDeliverTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2860,11 +2894,11 @@ func TestRequestDeliverTxProtoCompactText(t *testing.T) { func TestRequestEndBlockProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEndBlock(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestEndBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2874,11 +2908,11 @@ func TestRequestEndBlockProtoText(t *testing.T) { func TestRequestEndBlockProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEndBlock(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestEndBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2888,11 +2922,11 @@ func TestRequestEndBlockProtoCompactText(t *testing.T) { func TestRequestCommitProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCommit(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &RequestCommit{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2902,11 +2936,11 @@ func TestRequestCommitProtoText(t *testing.T) { func TestRequestCommitProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCommit(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &RequestCommit{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2916,11 +2950,11 @@ func TestRequestCommitProtoCompactText(t *testing.T) { func TestResponseProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponse(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &Response{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2930,11 +2964,11 @@ func TestResponseProtoText(t *testing.T) { func TestResponseProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponse(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &Response{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2944,11 +2978,11 @@ func TestResponseProtoCompactText(t *testing.T) { func TestResponseExceptionProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseException(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseException{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2958,11 +2992,11 @@ func TestResponseExceptionProtoText(t *testing.T) { func TestResponseExceptionProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseException(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseException{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2972,11 +3006,11 @@ func TestResponseExceptionProtoCompactText(t *testing.T) { func TestResponseEchoProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEcho(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseEcho{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -2986,11 +3020,11 @@ func TestResponseEchoProtoText(t *testing.T) { func TestResponseEchoProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEcho(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseEcho{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3000,11 +3034,11 @@ func TestResponseEchoProtoCompactText(t *testing.T) { func TestResponseFlushProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseFlush(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseFlush{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3014,11 +3048,11 @@ func TestResponseFlushProtoText(t *testing.T) { func TestResponseFlushProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseFlush(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseFlush{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3028,11 +3062,11 @@ func TestResponseFlushProtoCompactText(t *testing.T) { func TestResponseInfoProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInfo(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseInfo{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3042,11 +3076,11 @@ func TestResponseInfoProtoText(t *testing.T) { func TestResponseInfoProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInfo(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseInfo{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3056,11 +3090,11 @@ func TestResponseInfoProtoCompactText(t *testing.T) { func TestResponseSetOptionProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseSetOption(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseSetOption{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3070,11 +3104,11 @@ func TestResponseSetOptionProtoText(t *testing.T) { func TestResponseSetOptionProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseSetOption(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseSetOption{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3084,11 +3118,11 @@ func TestResponseSetOptionProtoCompactText(t *testing.T) { func TestResponseInitChainProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInitChain(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseInitChain{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3098,11 +3132,11 @@ func TestResponseInitChainProtoText(t *testing.T) { func TestResponseInitChainProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInitChain(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseInitChain{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3112,11 +3146,11 @@ func TestResponseInitChainProtoCompactText(t *testing.T) { func TestResponseQueryProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseQuery(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseQuery{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3126,11 +3160,11 @@ func TestResponseQueryProtoText(t *testing.T) { func TestResponseQueryProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseQuery(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseQuery{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3140,11 +3174,11 @@ func TestResponseQueryProtoCompactText(t *testing.T) { func TestResponseBeginBlockProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseBeginBlock(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseBeginBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3154,11 +3188,11 @@ func TestResponseBeginBlockProtoText(t *testing.T) { func TestResponseBeginBlockProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseBeginBlock(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseBeginBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3168,11 +3202,11 @@ func TestResponseBeginBlockProtoCompactText(t *testing.T) { func TestResponseCheckTxProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCheckTx(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseCheckTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3182,11 +3216,11 @@ func TestResponseCheckTxProtoText(t *testing.T) { func TestResponseCheckTxProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCheckTx(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseCheckTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3196,11 +3230,11 @@ func TestResponseCheckTxProtoCompactText(t *testing.T) { func TestResponseDeliverTxProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseDeliverTx(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseDeliverTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3210,11 +3244,11 @@ func TestResponseDeliverTxProtoText(t *testing.T) { func TestResponseDeliverTxProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseDeliverTx(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseDeliverTx{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3224,11 +3258,11 @@ func TestResponseDeliverTxProtoCompactText(t *testing.T) { func TestResponseEndBlockProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEndBlock(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseEndBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3238,11 +3272,11 @@ func TestResponseEndBlockProtoText(t *testing.T) { func TestResponseEndBlockProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEndBlock(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseEndBlock{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3252,11 +3286,11 @@ func TestResponseEndBlockProtoCompactText(t *testing.T) { func TestResponseCommitProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCommit(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ResponseCommit{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3266,11 +3300,11 @@ func TestResponseCommitProtoText(t *testing.T) { func TestResponseCommitProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCommit(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ResponseCommit{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3280,11 +3314,11 @@ func TestResponseCommitProtoCompactText(t *testing.T) { func TestConsensusParamsProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedConsensusParams(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &ConsensusParams{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3294,11 +3328,11 @@ func TestConsensusParamsProtoText(t *testing.T) { func TestConsensusParamsProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedConsensusParams(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &ConsensusParams{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3308,11 +3342,11 @@ func TestConsensusParamsProtoCompactText(t *testing.T) { func TestBlockSizeProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockSize(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &BlockSize{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3322,11 +3356,11 @@ func TestBlockSizeProtoText(t *testing.T) { func TestBlockSizeProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockSize(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &BlockSize{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3336,11 +3370,11 @@ func TestBlockSizeProtoCompactText(t *testing.T) { func TestTxSizeProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedTxSize(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &TxSize{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3350,11 +3384,11 @@ func TestTxSizeProtoText(t *testing.T) { func TestTxSizeProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedTxSize(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &TxSize{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3364,11 +3398,11 @@ func TestTxSizeProtoCompactText(t *testing.T) { func TestBlockGossipProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockGossip(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &BlockGossip{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3378,11 +3412,39 @@ func TestBlockGossipProtoText(t *testing.T) { func TestBlockGossipProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockGossip(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &BlockGossip{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } +} + +func TestLastCommitInfoProtoText(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + if !p.Equal(msg) { + t.Fatalf("seed = %d, %#v !Proto %#v", seed, msg, p) + } +} + +func TestLastCommitInfoProtoCompactText(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) + msg := &LastCommitInfo{} + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3392,11 +3454,11 @@ func TestBlockGossipProtoCompactText(t *testing.T) { func TestHeaderProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedHeader(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &Header{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3406,11 +3468,11 @@ func TestHeaderProtoText(t *testing.T) { func TestHeaderProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedHeader(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &Header{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3420,11 +3482,11 @@ func TestHeaderProtoCompactText(t *testing.T) { func TestValidatorProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedValidator(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &Validator{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3434,11 +3496,11 @@ func TestValidatorProtoText(t *testing.T) { func TestValidatorProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedValidator(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &Validator{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3448,11 +3510,11 @@ func TestValidatorProtoCompactText(t *testing.T) { func TestSigningValidatorProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedSigningValidator(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &SigningValidator{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3462,11 +3524,11 @@ func TestSigningValidatorProtoText(t *testing.T) { func TestSigningValidatorProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedSigningValidator(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &SigningValidator{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3476,11 +3538,11 @@ func TestSigningValidatorProtoCompactText(t *testing.T) { func TestPubKeyProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedPubKey(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &PubKey{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3490,11 +3552,11 @@ func TestPubKeyProtoText(t *testing.T) { func TestPubKeyProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedPubKey(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &PubKey{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3504,11 +3566,11 @@ func TestPubKeyProtoCompactText(t *testing.T) { func TestEvidenceProtoText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedEvidence(popr, true) - dAtA := proto.MarshalTextString(p) + dAtA := github_com_gogo_protobuf_proto.MarshalTextString(p) msg := &Evidence{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3518,11 +3580,11 @@ func TestEvidenceProtoText(t *testing.T) { func TestEvidenceProtoCompactText(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedEvidence(popr, true) - dAtA := proto.CompactTextString(p) + dAtA := github_com_gogo_protobuf_proto.CompactTextString(p) msg := &Evidence{} - if err := proto.UnmarshalText(dAtA, msg); err != nil { + if err := github_com_gogo_protobuf_proto.UnmarshalText(dAtA, msg); err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } if !p.Equal(msg) { @@ -3532,10 +3594,10 @@ func TestEvidenceProtoCompactText(t *testing.T) { func TestRequestSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequest(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3546,7 +3608,7 @@ func TestRequestSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3554,10 +3616,10 @@ func TestRequestSize(t *testing.T) { func TestRequestEchoSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEcho(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3568,7 +3630,7 @@ func TestRequestEchoSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3576,10 +3638,10 @@ func TestRequestEchoSize(t *testing.T) { func TestRequestFlushSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestFlush(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3590,7 +3652,7 @@ func TestRequestFlushSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3598,10 +3660,10 @@ func TestRequestFlushSize(t *testing.T) { func TestRequestInfoSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInfo(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3612,7 +3674,7 @@ func TestRequestInfoSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3620,10 +3682,10 @@ func TestRequestInfoSize(t *testing.T) { func TestRequestSetOptionSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestSetOption(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3634,7 +3696,7 @@ func TestRequestSetOptionSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3642,10 +3704,10 @@ func TestRequestSetOptionSize(t *testing.T) { func TestRequestInitChainSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestInitChain(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3656,7 +3718,7 @@ func TestRequestInitChainSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3664,10 +3726,10 @@ func TestRequestInitChainSize(t *testing.T) { func TestRequestQuerySize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestQuery(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3678,7 +3740,7 @@ func TestRequestQuerySize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3686,10 +3748,10 @@ func TestRequestQuerySize(t *testing.T) { func TestRequestBeginBlockSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestBeginBlock(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3700,7 +3762,7 @@ func TestRequestBeginBlockSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3708,10 +3770,10 @@ func TestRequestBeginBlockSize(t *testing.T) { func TestRequestCheckTxSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCheckTx(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3722,7 +3784,7 @@ func TestRequestCheckTxSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3730,10 +3792,10 @@ func TestRequestCheckTxSize(t *testing.T) { func TestRequestDeliverTxSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestDeliverTx(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3744,7 +3806,7 @@ func TestRequestDeliverTxSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3752,10 +3814,10 @@ func TestRequestDeliverTxSize(t *testing.T) { func TestRequestEndBlockSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestEndBlock(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3766,7 +3828,7 @@ func TestRequestEndBlockSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3774,10 +3836,10 @@ func TestRequestEndBlockSize(t *testing.T) { func TestRequestCommitSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedRequestCommit(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3788,7 +3850,7 @@ func TestRequestCommitSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3796,10 +3858,10 @@ func TestRequestCommitSize(t *testing.T) { func TestResponseSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponse(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3810,7 +3872,7 @@ func TestResponseSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3818,10 +3880,10 @@ func TestResponseSize(t *testing.T) { func TestResponseExceptionSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseException(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3832,7 +3894,7 @@ func TestResponseExceptionSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3840,10 +3902,10 @@ func TestResponseExceptionSize(t *testing.T) { func TestResponseEchoSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEcho(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3854,7 +3916,7 @@ func TestResponseEchoSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3862,10 +3924,10 @@ func TestResponseEchoSize(t *testing.T) { func TestResponseFlushSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseFlush(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3876,7 +3938,7 @@ func TestResponseFlushSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3884,10 +3946,10 @@ func TestResponseFlushSize(t *testing.T) { func TestResponseInfoSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInfo(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3898,7 +3960,7 @@ func TestResponseInfoSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3906,10 +3968,10 @@ func TestResponseInfoSize(t *testing.T) { func TestResponseSetOptionSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseSetOption(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3920,7 +3982,7 @@ func TestResponseSetOptionSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3928,10 +3990,10 @@ func TestResponseSetOptionSize(t *testing.T) { func TestResponseInitChainSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseInitChain(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3942,7 +4004,7 @@ func TestResponseInitChainSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3950,10 +4012,10 @@ func TestResponseInitChainSize(t *testing.T) { func TestResponseQuerySize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseQuery(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3964,7 +4026,7 @@ func TestResponseQuerySize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3972,10 +4034,10 @@ func TestResponseQuerySize(t *testing.T) { func TestResponseBeginBlockSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseBeginBlock(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -3986,7 +4048,7 @@ func TestResponseBeginBlockSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -3994,10 +4056,10 @@ func TestResponseBeginBlockSize(t *testing.T) { func TestResponseCheckTxSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCheckTx(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4008,7 +4070,7 @@ func TestResponseCheckTxSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4016,10 +4078,10 @@ func TestResponseCheckTxSize(t *testing.T) { func TestResponseDeliverTxSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseDeliverTx(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4030,7 +4092,7 @@ func TestResponseDeliverTxSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4038,10 +4100,10 @@ func TestResponseDeliverTxSize(t *testing.T) { func TestResponseEndBlockSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseEndBlock(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4052,7 +4114,7 @@ func TestResponseEndBlockSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4060,10 +4122,10 @@ func TestResponseEndBlockSize(t *testing.T) { func TestResponseCommitSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedResponseCommit(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4074,7 +4136,7 @@ func TestResponseCommitSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4082,10 +4144,10 @@ func TestResponseCommitSize(t *testing.T) { func TestConsensusParamsSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedConsensusParams(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4096,7 +4158,7 @@ func TestConsensusParamsSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4104,10 +4166,10 @@ func TestConsensusParamsSize(t *testing.T) { func TestBlockSizeSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockSize(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4118,7 +4180,7 @@ func TestBlockSizeSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4126,10 +4188,10 @@ func TestBlockSizeSize(t *testing.T) { func TestTxSizeSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedTxSize(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4140,7 +4202,7 @@ func TestTxSizeSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4148,10 +4210,10 @@ func TestTxSizeSize(t *testing.T) { func TestBlockGossipSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedBlockGossip(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4162,7 +4224,29 @@ func TestBlockGossipSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) + if size3 != size { + t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) + } +} + +func TestLastCommitInfoSize(t *testing.T) { + seed := time.Now().UnixNano() + popr := math_rand.New(math_rand.NewSource(seed)) + p := NewPopulatedLastCommitInfo(popr, true) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) + if err != nil { + t.Fatalf("seed = %d, err = %v", seed, err) + } + size := p.Size() + if len(dAtA) != size { + t.Errorf("seed = %d, size %v != marshalled size %v", seed, size, len(dAtA)) + } + if size2 != size { + t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) + } + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4170,10 +4254,10 @@ func TestBlockGossipSize(t *testing.T) { func TestHeaderSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedHeader(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4184,7 +4268,7 @@ func TestHeaderSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4192,10 +4276,10 @@ func TestHeaderSize(t *testing.T) { func TestValidatorSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedValidator(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4206,7 +4290,7 @@ func TestValidatorSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4214,10 +4298,10 @@ func TestValidatorSize(t *testing.T) { func TestSigningValidatorSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedSigningValidator(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4228,7 +4312,7 @@ func TestSigningValidatorSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4236,10 +4320,10 @@ func TestSigningValidatorSize(t *testing.T) { func TestPubKeySize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedPubKey(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4250,7 +4334,7 @@ func TestPubKeySize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } @@ -4258,10 +4342,10 @@ func TestPubKeySize(t *testing.T) { func TestEvidenceSize(t *testing.T) { seed := time.Now().UnixNano() - popr := rand.New(rand.NewSource(seed)) + popr := math_rand.New(math_rand.NewSource(seed)) p := NewPopulatedEvidence(popr, true) - size2 := proto.Size(p) - dAtA, err := proto.Marshal(p) + size2 := github_com_gogo_protobuf_proto.Size(p) + dAtA, err := github_com_gogo_protobuf_proto.Marshal(p) if err != nil { t.Fatalf("seed = %d, err = %v", seed, err) } @@ -4272,7 +4356,7 @@ func TestEvidenceSize(t *testing.T) { if size2 != size { t.Errorf("seed = %d, size %v != before marshal proto.Size %v", seed, size, size2) } - size3 := proto.Size(p) + size3 := github_com_gogo_protobuf_proto.Size(p) if size3 != size { t.Errorf("seed = %d, size %v != after marshal proto.Size %v", seed, size, size3) } diff --git a/blockchain/reactor.go b/blockchain/reactor.go index eadeedc9..f00df50c 100644 --- a/blockchain/reactor.go +++ b/blockchain/reactor.go @@ -109,9 +109,6 @@ func (bcR *BlockchainReactor) SetLogger(l log.Logger) { // OnStart implements cmn.Service. func (bcR *BlockchainReactor) OnStart() error { - if err := bcR.BaseReactor.OnStart(); err != nil { - return err - } if bcR.fastSync { err := bcR.pool.Start() if err != nil { @@ -124,7 +121,6 @@ func (bcR *BlockchainReactor) OnStart() error { // OnStop implements cmn.Service. func (bcR *BlockchainReactor) OnStop() { - bcR.BaseReactor.OnStop() bcR.pool.Stop() } diff --git a/blockchain/reactor_test.go b/blockchain/reactor_test.go index 21eaae4b..11991bda 100644 --- a/blockchain/reactor_test.go +++ b/blockchain/reactor_test.go @@ -156,7 +156,7 @@ func makeTxs(height int64) (txs []types.Tx) { } func makeBlock(height int64, state sm.State) *types.Block { - block, _ := state.MakeBlock(height, makeTxs(height), new(types.Commit)) + block, _ := state.MakeBlock(height, makeTxs(height), new(types.Commit), nil) return block } diff --git a/blockchain/wire.go b/blockchain/wire.go index ff02d58c..91156fa8 100644 --- a/blockchain/wire.go +++ b/blockchain/wire.go @@ -2,12 +2,12 @@ package blockchain import ( "github.com/tendermint/go-amino" - cryptoAmino "github.com/tendermint/tendermint/crypto/encoding/amino" + "github.com/tendermint/tendermint/types" ) var cdc = amino.NewCodec() func init() { RegisterBlockchainMessages(cdc) - cryptoAmino.RegisterAmino(cdc) + types.RegisterBlockAmino(cdc) } diff --git a/consensus/common_test.go b/consensus/common_test.go index e6033537..f4855992 100644 --- a/consensus/common_test.go +++ b/consensus/common_test.go @@ -378,8 +378,11 @@ func randConsensusNetWithPeers(nValidators, nPeers int, testName string, tickerF if i < nValidators { privVal = privVals[i] } else { - _, tempFilePath := cmn.Tempfile("priv_validator_") - privVal = privval.GenFilePV(tempFilePath) + tempFile, err := ioutil.TempFile("", "priv_validator_") + if err != nil { + panic(err) + } + privVal = privval.GenFilePV(tempFile.Name()) } app := appFunc() @@ -429,7 +432,7 @@ func randGenesisDoc(numValidators int, randPower bool, minPower int64) (*types.G func randGenesisState(numValidators int, randPower bool, minPower int64) (sm.State, []types.PrivValidator) { genDoc, privValidators := randGenesisDoc(numValidators, randPower, minPower) s0, _ := sm.MakeGenesisState(genDoc) - db := dbm.NewMemDB() + db := dbm.NewMemDB() // remove this ? sm.SaveState(db, s0) return s0, privValidators } diff --git a/consensus/reactor.go b/consensus/reactor.go index 3eb1d73a..58ff42ae 100644 --- a/consensus/reactor.go +++ b/consensus/reactor.go @@ -58,9 +58,6 @@ func NewConsensusReactor(consensusState *ConsensusState, fastSync bool) *Consens // broadcasted to other peers and starting state if we're not in fast sync. func (conR *ConsensusReactor) OnStart() error { conR.Logger.Info("ConsensusReactor ", "fastSync", conR.FastSync()) - if err := conR.BaseReactor.OnStart(); err != nil { - return err - } conR.subscribeToBroadcastEvents() @@ -77,7 +74,6 @@ func (conR *ConsensusReactor) OnStart() error { // OnStop implements BaseService by unsubscribing from events and stopping // state. func (conR *ConsensusReactor) OnStop() { - conR.BaseReactor.OnStop() conR.unsubscribeFromBroadcastEvents() conR.conS.Stop() if !conR.FastSync() { diff --git a/consensus/reactor_test.go b/consensus/reactor_test.go index 98be7d92..a3d284d9 100644 --- a/consensus/reactor_test.go +++ b/consensus/reactor_test.go @@ -4,15 +4,22 @@ import ( "context" "fmt" "os" + "path" "runtime" "runtime/pprof" "sync" "testing" "time" + abcicli "github.com/tendermint/tendermint/abci/client" "github.com/tendermint/tendermint/abci/example/kvstore" + abci "github.com/tendermint/tendermint/abci/types" + bc "github.com/tendermint/tendermint/blockchain" cmn "github.com/tendermint/tendermint/libs/common" + dbm "github.com/tendermint/tendermint/libs/db" "github.com/tendermint/tendermint/libs/log" + mempl "github.com/tendermint/tendermint/mempool" + sm "github.com/tendermint/tendermint/state" cfg "github.com/tendermint/tendermint/config" "github.com/tendermint/tendermint/p2p" @@ -91,6 +98,120 @@ func TestReactorBasic(t *testing.T) { }, css) } +// Ensure we can process blocks with evidence +func TestReactorWithEvidence(t *testing.T) { + nValidators := 4 + testName := "consensus_reactor_test" + tickerFunc := newMockTickerFunc(true) + appFunc := newCounter + + // heed the advice from https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction + // to unroll unwieldy abstractions. Here we duplicate the code from: + // css := randConsensusNet(N, "consensus_reactor_test", newMockTickerFunc(true), newCounter) + + genDoc, privVals := randGenesisDoc(nValidators, false, 30) + css := make([]*ConsensusState, nValidators) + logger := consensusLogger() + for i := 0; i < nValidators; i++ { + stateDB := dbm.NewMemDB() // each state needs its own db + state, _ := sm.LoadStateFromDBOrGenesisDoc(stateDB, genDoc) + thisConfig := ResetConfig(cmn.Fmt("%s_%d", testName, i)) + ensureDir(path.Dir(thisConfig.Consensus.WalFile()), 0700) // dir for wal + app := appFunc() + vals := types.TM2PB.Validators(state.Validators) + app.InitChain(abci.RequestInitChain{Validators: vals}) + + pv := privVals[i] + // duplicate code from: + // css[i] = newConsensusStateWithConfig(thisConfig, state, privVals[i], app) + + blockDB := dbm.NewMemDB() + blockStore := bc.NewBlockStore(blockDB) + + // one for mempool, one for consensus + mtx := new(sync.Mutex) + proxyAppConnMem := abcicli.NewLocalClient(mtx, app) + proxyAppConnCon := abcicli.NewLocalClient(mtx, app) + + // Make Mempool + mempool := mempl.NewMempool(thisConfig.Mempool, proxyAppConnMem, 0) + mempool.SetLogger(log.TestingLogger().With("module", "mempool")) + if thisConfig.Consensus.WaitForTxs() { + mempool.EnableTxsAvailable() + } + + // mock the evidence pool + // everyone includes evidence of another double signing + vIdx := (i + 1) % nValidators + evpool := newMockEvidencePool(privVals[vIdx].GetAddress()) + + // Make ConsensusState + blockExec := sm.NewBlockExecutor(stateDB, log.TestingLogger(), proxyAppConnCon, mempool, evpool) + cs := NewConsensusState(thisConfig.Consensus, state, blockExec, blockStore, mempool, evpool) + cs.SetLogger(log.TestingLogger().With("module", "consensus")) + cs.SetPrivValidator(pv) + + eventBus := types.NewEventBus() + eventBus.SetLogger(log.TestingLogger().With("module", "events")) + eventBus.Start() + cs.SetEventBus(eventBus) + + cs.SetTimeoutTicker(tickerFunc()) + cs.SetLogger(logger.With("validator", i, "module", "consensus")) + + css[i] = cs + } + + reactors, eventChans, eventBuses := startConsensusNet(t, css, nValidators) + defer stopConsensusNet(log.TestingLogger(), reactors, eventBuses) + + // wait till everyone makes the first new block with no evidence + timeoutWaitGroup(t, nValidators, func(j int) { + blockI := <-eventChans[j] + block := blockI.(types.EventDataNewBlock).Block + assert.True(t, len(block.Evidence.Evidence) == 0) + }, css) + + // second block should have evidence + timeoutWaitGroup(t, nValidators, func(j int) { + blockI := <-eventChans[j] + block := blockI.(types.EventDataNewBlock).Block + assert.True(t, len(block.Evidence.Evidence) > 0) + }, css) +} + +// mock evidence pool returns no evidence for block 1, +// and returnes one piece for all higher blocks. The one piece +// is for a given validator at block 1. +type mockEvidencePool struct { + height int + ev []types.Evidence +} + +func newMockEvidencePool(val []byte) *mockEvidencePool { + return &mockEvidencePool{ + ev: []types.Evidence{types.NewMockGoodEvidence(1, 1, val)}, + } +} + +func (m *mockEvidencePool) PendingEvidence() []types.Evidence { + if m.height > 0 { + return m.ev + } + return nil +} +func (m *mockEvidencePool) AddEvidence(types.Evidence) error { return nil } +func (m *mockEvidencePool) Update(block *types.Block, state sm.State) { + if m.height > 0 { + if len(block.Evidence.Evidence) == 0 { + panic("block has no evidence") + } + } + m.height += 1 +} + +//------------------------------------ + // Ensure a testnet sends proposal heartbeats and makes blocks when there are txs func TestReactorProposalHeartbeats(t *testing.T) { N := 4 diff --git a/consensus/replay.go b/consensus/replay.go index 33e14424..25859a76 100644 --- a/consensus/replay.go +++ b/consensus/replay.go @@ -227,7 +227,7 @@ func (h *Handshaker) NBlocks() int { func (h *Handshaker) Handshake(proxyApp proxy.AppConns) error { // Handshake is done via ABCI Info on the query conn. - res, err := proxyApp.Query().InfoSync(abci.RequestInfo{version.Version}) + res, err := proxyApp.Query().InfoSync(abci.RequestInfo{Version: version.Version}) if err != nil { return fmt.Errorf("Error calling Info: %v", err) } @@ -269,7 +269,7 @@ func (h *Handshaker) ReplayBlocks(state sm.State, appHash []byte, appBlockHeight nextVals := types.TM2PB.Validators(state.NextValidators) // state.Validators would work too. csParams := types.TM2PB.ConsensusParams(h.genDoc.ConsensusParams) req := abci.RequestInitChain{ - Time: h.genDoc.GenesisTime.Unix(), // TODO + Time: h.genDoc.GenesisTime, ChainId: h.genDoc.ChainID, ConsensusParams: csParams, Validators: nextVals, diff --git a/consensus/replay_test.go b/consensus/replay_test.go index da526d24..fa0ec040 100644 --- a/consensus/replay_test.go +++ b/consensus/replay_test.go @@ -376,7 +376,7 @@ func testHandshakeReplay(t *testing.T, nBlocks int, mode uint) { defer proxyApp.Stop() // get the latest app hash from the app - res, err := proxyApp.Query().InfoSync(abci.RequestInfo{""}) + res, err := proxyApp.Query().InfoSync(abci.RequestInfo{Version: ""}) if err != nil { t.Fatal(err) } diff --git a/consensus/state.go b/consensus/state.go index add87691..c7c17517 100644 --- a/consensus/state.go +++ b/consensus/state.go @@ -915,6 +915,8 @@ func (cs *ConsensusState) isProposalComplete() bool { } // Create the next block to propose and return it. +// We really only need to return the parts, but the block +// is returned for convenience so we can log the proposal block. // Returns nil block upon error. // NOTE: keep it side-effect free for clarity. func (cs *ConsensusState) createProposalBlock() (block *types.Block, blockParts *types.PartSet) { @@ -934,9 +936,8 @@ func (cs *ConsensusState) createProposalBlock() (block *types.Block, blockParts // Mempool validated transactions txs := cs.mempool.Reap(cs.state.ConsensusParams.BlockSize.MaxTxs) - block, parts := cs.state.MakeBlock(cs.Height, txs, commit) evidence := cs.evpool.PendingEvidence() - block.AddEvidence(evidence) + block, parts := cs.state.MakeBlock(cs.Height, txs, commit, evidence) return block, parts } diff --git a/consensus/types/wire.go b/consensus/types/wire.go index 9221de96..db674816 100644 --- a/consensus/types/wire.go +++ b/consensus/types/wire.go @@ -2,11 +2,11 @@ package types import ( "github.com/tendermint/go-amino" - cryptoAmino "github.com/tendermint/tendermint/crypto/encoding/amino" + "github.com/tendermint/tendermint/types" ) var cdc = amino.NewCodec() func init() { - cryptoAmino.RegisterAmino(cdc) + types.RegisterBlockAmino(cdc) } diff --git a/consensus/wire.go b/consensus/wire.go index cc172bea..567e6095 100644 --- a/consensus/wire.go +++ b/consensus/wire.go @@ -2,7 +2,7 @@ package consensus import ( "github.com/tendermint/go-amino" - cryptoAmino "github.com/tendermint/tendermint/crypto/encoding/amino" + "github.com/tendermint/tendermint/types" ) var cdc = amino.NewCodec() @@ -10,5 +10,5 @@ var cdc = amino.NewCodec() func init() { RegisterConsensusMessages(cdc) RegisterWALMessages(cdc) - cryptoAmino.RegisterAmino(cdc) + types.RegisterBlockAmino(cdc) } diff --git a/crypto/ed25519/bench_test.go b/crypto/ed25519/bench_test.go new file mode 100644 index 00000000..47897cde --- /dev/null +++ b/crypto/ed25519/bench_test.go @@ -0,0 +1,26 @@ +package ed25519 + +import ( + "io" + "testing" + + "github.com/tendermint/tendermint/crypto" + "github.com/tendermint/tendermint/crypto/internal/benchmarking" +) + +func BenchmarkKeyGeneration(b *testing.B) { + benchmarkKeygenWrapper := func(reader io.Reader) crypto.PrivKey { + return genPrivKey(reader) + } + benchmarking.BenchmarkKeyGeneration(b, benchmarkKeygenWrapper) +} + +func BenchmarkSigning(b *testing.B) { + priv := GenPrivKey() + benchmarking.BenchmarkSigning(b, priv) +} + +func BenchmarkVerification(b *testing.B) { + priv := GenPrivKey() + benchmarking.BenchmarkVerification(b, priv) +} diff --git a/crypto/ed25519/ed25519.go b/crypto/ed25519/ed25519.go index 8b7bd42b..3dd4d2b3 100644 --- a/crypto/ed25519/ed25519.go +++ b/crypto/ed25519/ed25519.go @@ -4,6 +4,7 @@ import ( "bytes" "crypto/subtle" "fmt" + "io" "github.com/tendermint/ed25519" "github.com/tendermint/ed25519/extra25519" @@ -102,8 +103,16 @@ func (privKey PrivKeyEd25519) ToCurve25519() *[PubKeyEd25519Size]byte { // It uses OS randomness in conjunction with the current global random seed // in tendermint/libs/common to generate the private key. func GenPrivKey() PrivKeyEd25519 { + return genPrivKey(crypto.CReader()) +} + +// genPrivKey generates a new ed25519 private key using the provided reader. +func genPrivKey(rand io.Reader) PrivKeyEd25519 { privKey := new([64]byte) - copy(privKey[:32], crypto.CRandBytes(32)) + _, err := io.ReadFull(rand, privKey[:32]) + if err != nil { + panic(err) + } // ed25519.MakePublicKey(privKey) alters the last 32 bytes of privKey. // It places the pubkey in the last 32 bytes of privKey, and returns the // public key. diff --git a/crypto/hkdfchacha20poly1305/hkdfchachapoly.go b/crypto/hkdfchacha20poly1305/hkdfchachapoly.go deleted file mode 100644 index 4bf24cb1..00000000 --- a/crypto/hkdfchacha20poly1305/hkdfchachapoly.go +++ /dev/null @@ -1,106 +0,0 @@ -// Package hkdfchacha20poly1305 creates an AEAD using hkdf, chacha20, and poly1305 -// When sealing and opening, the hkdf is used to obtain the nonce and subkey for -// chacha20. Other than the change for the how the subkey and nonce for chacha -// are obtained, this is the same as chacha20poly1305 -package hkdfchacha20poly1305 - -import ( - "crypto/cipher" - "crypto/sha256" - "errors" - "io" - - "golang.org/x/crypto/chacha20poly1305" - "golang.org/x/crypto/hkdf" -) - -// Implements crypto.AEAD -type hkdfchacha20poly1305 struct { - key [KeySize]byte -} - -const ( - // KeySize is the size of the key used by this AEAD, in bytes. - KeySize = 32 - // NonceSize is the size of the nonce used with this AEAD, in bytes. - NonceSize = 24 - // TagSize is the size added from poly1305 - TagSize = 16 - // MaxPlaintextSize is the max size that can be passed into a single call of Seal - MaxPlaintextSize = (1 << 38) - 64 - // MaxCiphertextSize is the max size that can be passed into a single call of Open, - // this differs from plaintext size due to the tag - MaxCiphertextSize = (1 << 38) - 48 - // HkdfInfo is the parameter used internally for Hkdf's info parameter. - HkdfInfo = "TENDERMINT_SECRET_CONNECTION_FRAME_KEY_DERIVE" -) - -//New xChaChapoly1305 AEAD with 24 byte nonces -func New(key []byte) (cipher.AEAD, error) { - if len(key) != KeySize { - return nil, errors.New("chacha20poly1305: bad key length") - } - ret := new(hkdfchacha20poly1305) - copy(ret.key[:], key) - return ret, nil - -} -func (c *hkdfchacha20poly1305) NonceSize() int { - return NonceSize -} - -func (c *hkdfchacha20poly1305) Overhead() int { - return TagSize -} - -func (c *hkdfchacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte { - if len(nonce) != NonceSize { - panic("hkdfchacha20poly1305: bad nonce length passed to Seal") - } - - if uint64(len(plaintext)) > MaxPlaintextSize { - panic("hkdfchacha20poly1305: plaintext too large") - } - - subKey, chachaNonce := getSubkeyAndChachaNonceFromHkdf(&c.key, &nonce) - - aead, err := chacha20poly1305.New(subKey[:]) - if err != nil { - panic("hkdfchacha20poly1305: failed to initialize chacha20poly1305") - } - - return aead.Seal(dst, chachaNonce[:], plaintext, additionalData) -} - -func (c *hkdfchacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { - if len(nonce) != NonceSize { - return nil, errors.New("hkdfchacha20poly1305: bad nonce length passed to Open") - } - if uint64(len(ciphertext)) > MaxCiphertextSize { - return nil, errors.New("hkdfchacha20poly1305: ciphertext too large") - } - - subKey, chachaNonce := getSubkeyAndChachaNonceFromHkdf(&c.key, &nonce) - - aead, err := chacha20poly1305.New(subKey[:]) - if err != nil { - panic("hkdfchacha20poly1305: failed to initialize chacha20poly1305") - } - - return aead.Open(dst, chachaNonce[:], ciphertext, additionalData) -} - -func getSubkeyAndChachaNonceFromHkdf(cKey *[32]byte, nonce *[]byte) ( - subKey [KeySize]byte, chachaNonce [chacha20poly1305.NonceSize]byte) { - hash := sha256.New - hkdf := hkdf.New(hash, (*cKey)[:], *nonce, []byte(HkdfInfo)) - _, err := io.ReadFull(hkdf, subKey[:]) - if err != nil { - panic("hkdfchacha20poly1305: failed to read subkey from hkdf") - } - _, err = io.ReadFull(hkdf, chachaNonce[:]) - if err != nil { - panic("hkdfchacha20poly1305: failed to read chachaNonce from hkdf") - } - return -} diff --git a/crypto/internal/benchmarking/bench.go b/crypto/internal/benchmarking/bench.go new file mode 100644 index 00000000..c988de48 --- /dev/null +++ b/crypto/internal/benchmarking/bench.go @@ -0,0 +1,88 @@ +package benchmarking + +import ( + "io" + "testing" + + "github.com/tendermint/tendermint/crypto" +) + +// The code in this file is adapted from agl/ed25519. +// As such it is under the following license. +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found at the bottom of this file. + +type zeroReader struct{} + +func (zeroReader) Read(buf []byte) (int, error) { + for i := range buf { + buf[i] = 0 + } + return len(buf), nil +} + +// BenchmarkKeyGeneration benchmarks the given key generation algorithm using +// a dummy reader. +func BenchmarkKeyGeneration(b *testing.B, GenerateKey func(reader io.Reader) crypto.PrivKey) { + var zero zeroReader + for i := 0; i < b.N; i++ { + GenerateKey(zero) + } +} + +// BenchmarkSigning benchmarks the given signing algorithm using +// the provided privkey. +func BenchmarkSigning(b *testing.B, priv crypto.PrivKey) { + message := []byte("Hello, world!") + b.ResetTimer() + for i := 0; i < b.N; i++ { + priv.Sign(message) + } +} + +// BenchmarkVerification benchmarks the given verification algorithm using +// the provided privkey on a constant message. +func BenchmarkVerification(b *testing.B, priv crypto.PrivKey) { + pub := priv.PubKey() + // use a short message, so this time doesn't get dominated by hashing. + message := []byte("Hello, world!") + signature, err := priv.Sign(message) + if err != nil { + b.Fatal(err) + } + b.ResetTimer() + for i := 0; i < b.N; i++ { + pub.VerifyBytes(message, signature) + } +} + +// Below is the aforementioned license. + +// Copyright (c) 2012 The Go Authors. All rights reserved. + +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: + +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. + +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/crypto/secp256k1/bench_test.go b/crypto/secp256k1/bench_test.go new file mode 100644 index 00000000..4f651b76 --- /dev/null +++ b/crypto/secp256k1/bench_test.go @@ -0,0 +1,26 @@ +package secp256k1 + +import ( + "io" + "testing" + + "github.com/tendermint/tendermint/crypto" + "github.com/tendermint/tendermint/crypto/internal/benchmarking" +) + +func BenchmarkKeyGeneration(b *testing.B) { + benchmarkKeygenWrapper := func(reader io.Reader) crypto.PrivKey { + return genPrivKey(reader) + } + benchmarking.BenchmarkKeyGeneration(b, benchmarkKeygenWrapper) +} + +func BenchmarkSigning(b *testing.B) { + priv := GenPrivKey() + benchmarking.BenchmarkSigning(b, priv) +} + +func BenchmarkVerification(b *testing.B) { + priv := GenPrivKey() + benchmarking.BenchmarkVerification(b, priv) +} diff --git a/crypto/secp256k1/secp256k1.go b/crypto/secp256k1/secp256k1.go index 4b210dc7..03d5614a 100644 --- a/crypto/secp256k1/secp256k1.go +++ b/crypto/secp256k1/secp256k1.go @@ -5,6 +5,7 @@ import ( "crypto/sha256" "crypto/subtle" "fmt" + "io" secp256k1 "github.com/btcsuite/btcd/btcec" amino "github.com/tendermint/go-amino" @@ -80,8 +81,16 @@ func (privKey PrivKeySecp256k1) Equals(other crypto.PrivKey) bool { // It uses OS randomness in conjunction with the current global random seed // in tendermint/libs/common to generate the private key. func GenPrivKey() PrivKeySecp256k1 { + return genPrivKey(crypto.CReader()) +} + +// genPrivKey generates a new secp256k1 private key using the provided reader. +func genPrivKey(rand io.Reader) PrivKeySecp256k1 { privKeyBytes := [32]byte{} - copy(privKeyBytes[:], crypto.CRandBytes(32)) + _, err := io.ReadFull(rand, privKeyBytes[:]) + if err != nil { + panic(err) + } // crypto.CRandBytes is guaranteed to be 32 bytes long, so it can be // casted to PrivKeySecp256k1. return PrivKeySecp256k1(privKeyBytes) diff --git a/crypto/xchacha20poly1305/vector_test.go b/crypto/xchacha20poly1305/vector_test.go new file mode 100644 index 00000000..3001217f --- /dev/null +++ b/crypto/xchacha20poly1305/vector_test.go @@ -0,0 +1,103 @@ +package xchacha20poly1305 + +import ( + "bytes" + "encoding/hex" + "testing" +) + +func toHex(bits []byte) string { + return hex.EncodeToString(bits) +} + +func fromHex(bits string) []byte { + b, err := hex.DecodeString(bits) + if err != nil { + panic(err) + } + return b +} + +func TestHChaCha20(t *testing.T) { + for i, v := range hChaCha20Vectors { + var key [32]byte + var nonce [16]byte + copy(key[:], v.key) + copy(nonce[:], v.nonce) + + HChaCha20(&key, &nonce, &key) + if !bytes.Equal(key[:], v.keystream) { + t.Errorf("Test %d: keystream mismatch:\n \t got: %s\n \t want: %s", i, toHex(key[:]), toHex(v.keystream)) + } + } +} + +var hChaCha20Vectors = []struct { + key, nonce, keystream []byte +}{ + { + fromHex("0000000000000000000000000000000000000000000000000000000000000000"), + fromHex("000000000000000000000000000000000000000000000000"), + fromHex("1140704c328d1d5d0e30086cdf209dbd6a43b8f41518a11cc387b669b2ee6586"), + }, + { + fromHex("8000000000000000000000000000000000000000000000000000000000000000"), + fromHex("000000000000000000000000000000000000000000000000"), + fromHex("7d266a7fd808cae4c02a0a70dcbfbcc250dae65ce3eae7fc210f54cc8f77df86"), + }, + { + fromHex("0000000000000000000000000000000000000000000000000000000000000001"), + fromHex("000000000000000000000000000000000000000000000002"), + fromHex("e0c77ff931bb9163a5460c02ac281c2b53d792b1c43fea817e9ad275ae546963"), + }, + { + fromHex("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"), + fromHex("000102030405060708090a0b0c0d0e0f1011121314151617"), + fromHex("51e3ff45a895675c4b33b46c64f4a9ace110d34df6a2ceab486372bacbd3eff6"), + }, + { + fromHex("24f11cce8a1b3d61e441561a696c1c1b7e173d084fd4812425435a8896a013dc"), + fromHex("d9660c5900ae19ddad28d6e06e45fe5e"), + fromHex("5966b3eec3bff1189f831f06afe4d4e3be97fa9235ec8c20d08acfbbb4e851e3"), + }, +} + +func TestVectors(t *testing.T) { + for i, v := range vectors { + if len(v.plaintext) == 0 { + v.plaintext = make([]byte, len(v.ciphertext)) + } + + var nonce [24]byte + copy(nonce[:], v.nonce) + + aead, err := New(v.key) + if err != nil { + t.Error(err) + } + + dst := aead.Seal(nil, nonce[:], v.plaintext, v.ad) + if !bytes.Equal(dst, v.ciphertext) { + t.Errorf("Test %d: ciphertext mismatch:\n \t got: %s\n \t want: %s", i, toHex(dst), toHex(v.ciphertext)) + } + open, err := aead.Open(nil, nonce[:], dst, v.ad) + if err != nil { + t.Error(err) + } + if !bytes.Equal(open, v.plaintext) { + t.Errorf("Test %d: plaintext mismatch:\n \t got: %s\n \t want: %s", i, string(open), string(v.plaintext)) + } + } +} + +var vectors = []struct { + key, nonce, ad, plaintext, ciphertext []byte +}{ + { + []byte{0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f}, + []byte{0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b}, + []byte{0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7}, + []byte("Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."), + []byte{0x45, 0x3c, 0x06, 0x93, 0xa7, 0x40, 0x7f, 0x04, 0xff, 0x4c, 0x56, 0xae, 0xdb, 0x17, 0xa3, 0xc0, 0xa1, 0xaf, 0xff, 0x01, 0x17, 0x49, 0x30, 0xfc, 0x22, 0x28, 0x7c, 0x33, 0xdb, 0xcf, 0x0a, 0xc8, 0xb8, 0x9a, 0xd9, 0x29, 0x53, 0x0a, 0x1b, 0xb3, 0xab, 0x5e, 0x69, 0xf2, 0x4c, 0x7f, 0x60, 0x70, 0xc8, 0xf8, 0x40, 0xc9, 0xab, 0xb4, 0xf6, 0x9f, 0xbf, 0xc8, 0xa7, 0xff, 0x51, 0x26, 0xfa, 0xee, 0xbb, 0xb5, 0x58, 0x05, 0xee, 0x9c, 0x1c, 0xf2, 0xce, 0x5a, 0x57, 0x26, 0x32, 0x87, 0xae, 0xc5, 0x78, 0x0f, 0x04, 0xec, 0x32, 0x4c, 0x35, 0x14, 0x12, 0x2c, 0xfc, 0x32, 0x31, 0xfc, 0x1a, 0x8b, 0x71, 0x8a, 0x62, 0x86, 0x37, 0x30, 0xa2, 0x70, 0x2b, 0xb7, 0x63, 0x66, 0x11, 0x6b, 0xed, 0x09, 0xe0, 0xfd, 0x5c, 0x6d, 0x84, 0xb6, 0xb0, 0xc1, 0xab, 0xaf, 0x24, 0x9d, 0x5d, 0xd0, 0xf7, 0xf5, 0xa7, 0xea}, + }, +} diff --git a/crypto/xchacha20poly1305/xchachapoly.go b/crypto/xchacha20poly1305/xchachapoly.go new file mode 100644 index 00000000..c7a175b5 --- /dev/null +++ b/crypto/xchacha20poly1305/xchachapoly.go @@ -0,0 +1,261 @@ +// Package xchacha20poly1305 creates an AEAD using hchacha, chacha, and poly1305 +// This allows for randomized nonces to be used in conjunction with chacha. +package xchacha20poly1305 + +import ( + "crypto/cipher" + "encoding/binary" + "errors" + "fmt" + + "golang.org/x/crypto/chacha20poly1305" +) + +// Implements crypto.AEAD +type xchacha20poly1305 struct { + key [KeySize]byte +} + +const ( + // KeySize is the size of the key used by this AEAD, in bytes. + KeySize = 32 + // NonceSize is the size of the nonce used with this AEAD, in bytes. + NonceSize = 24 + // TagSize is the size added from poly1305 + TagSize = 16 + // MaxPlaintextSize is the max size that can be passed into a single call of Seal + MaxPlaintextSize = (1 << 38) - 64 + // MaxCiphertextSize is the max size that can be passed into a single call of Open, + // this differs from plaintext size due to the tag + MaxCiphertextSize = (1 << 38) - 48 + + // sigma are constants used in xchacha. + // Unrolled from a slice so that they can be inlined, as slices can't be constants. + sigma0 = uint32(0x61707865) + sigma1 = uint32(0x3320646e) + sigma2 = uint32(0x79622d32) + sigma3 = uint32(0x6b206574) +) + +// New returns a new xchachapoly1305 AEAD +func New(key []byte) (cipher.AEAD, error) { + if len(key) != KeySize { + return nil, errors.New("xchacha20poly1305: bad key length") + } + ret := new(xchacha20poly1305) + copy(ret.key[:], key) + return ret, nil +} + +// nolint +func (c *xchacha20poly1305) NonceSize() int { + return NonceSize +} + +// nolint +func (c *xchacha20poly1305) Overhead() int { + return TagSize +} + +func (c *xchacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte { + if len(nonce) != NonceSize { + panic("xchacha20poly1305: bad nonce length passed to Seal") + } + + if uint64(len(plaintext)) > MaxPlaintextSize { + panic("xchacha20poly1305: plaintext too large") + } + + var subKey [KeySize]byte + var hNonce [16]byte + var subNonce [chacha20poly1305.NonceSize]byte + copy(hNonce[:], nonce[:16]) + + HChaCha20(&subKey, &hNonce, &c.key) + + // This can't error because we always provide a correctly sized key + chacha20poly1305, _ := chacha20poly1305.New(subKey[:]) + + copy(subNonce[4:], nonce[16:]) + + return chacha20poly1305.Seal(dst, subNonce[:], plaintext, additionalData) +} + +func (c *xchacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { + if len(nonce) != NonceSize { + return nil, fmt.Errorf("xchacha20poly1305: bad nonce length passed to Open") + } + if uint64(len(ciphertext)) > MaxCiphertextSize { + return nil, fmt.Errorf("xchacha20poly1305: ciphertext too large") + } + var subKey [KeySize]byte + var hNonce [16]byte + var subNonce [chacha20poly1305.NonceSize]byte + copy(hNonce[:], nonce[:16]) + + HChaCha20(&subKey, &hNonce, &c.key) + + // This can't error because we always provide a correctly sized key + chacha20poly1305, _ := chacha20poly1305.New(subKey[:]) + + copy(subNonce[4:], nonce[16:]) + + return chacha20poly1305.Open(dst, subNonce[:], ciphertext, additionalData) +} + +// HChaCha exported from +// https://github.com/aead/chacha20/blob/8b13a72661dae6e9e5dea04f344f0dc95ea29547/chacha/chacha_generic.go#L194 +// TODO: Add support for the different assembly instructions used there. + +// The MIT License (MIT) + +// Copyright (c) 2016 Andreas Auernhammer + +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// HChaCha20 generates 32 pseudo-random bytes from a 128 bit nonce and a 256 bit secret key. +// It can be used as a key-derivation-function (KDF). +func HChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { hChaCha20Generic(out, nonce, key) } + +func hChaCha20Generic(out *[32]byte, nonce *[16]byte, key *[32]byte) { + v00 := sigma0 + v01 := sigma1 + v02 := sigma2 + v03 := sigma3 + v04 := binary.LittleEndian.Uint32(key[0:]) + v05 := binary.LittleEndian.Uint32(key[4:]) + v06 := binary.LittleEndian.Uint32(key[8:]) + v07 := binary.LittleEndian.Uint32(key[12:]) + v08 := binary.LittleEndian.Uint32(key[16:]) + v09 := binary.LittleEndian.Uint32(key[20:]) + v10 := binary.LittleEndian.Uint32(key[24:]) + v11 := binary.LittleEndian.Uint32(key[28:]) + v12 := binary.LittleEndian.Uint32(nonce[0:]) + v13 := binary.LittleEndian.Uint32(nonce[4:]) + v14 := binary.LittleEndian.Uint32(nonce[8:]) + v15 := binary.LittleEndian.Uint32(nonce[12:]) + + for i := 0; i < 20; i += 2 { + v00 += v04 + v12 ^= v00 + v12 = (v12 << 16) | (v12 >> 16) + v08 += v12 + v04 ^= v08 + v04 = (v04 << 12) | (v04 >> 20) + v00 += v04 + v12 ^= v00 + v12 = (v12 << 8) | (v12 >> 24) + v08 += v12 + v04 ^= v08 + v04 = (v04 << 7) | (v04 >> 25) + v01 += v05 + v13 ^= v01 + v13 = (v13 << 16) | (v13 >> 16) + v09 += v13 + v05 ^= v09 + v05 = (v05 << 12) | (v05 >> 20) + v01 += v05 + v13 ^= v01 + v13 = (v13 << 8) | (v13 >> 24) + v09 += v13 + v05 ^= v09 + v05 = (v05 << 7) | (v05 >> 25) + v02 += v06 + v14 ^= v02 + v14 = (v14 << 16) | (v14 >> 16) + v10 += v14 + v06 ^= v10 + v06 = (v06 << 12) | (v06 >> 20) + v02 += v06 + v14 ^= v02 + v14 = (v14 << 8) | (v14 >> 24) + v10 += v14 + v06 ^= v10 + v06 = (v06 << 7) | (v06 >> 25) + v03 += v07 + v15 ^= v03 + v15 = (v15 << 16) | (v15 >> 16) + v11 += v15 + v07 ^= v11 + v07 = (v07 << 12) | (v07 >> 20) + v03 += v07 + v15 ^= v03 + v15 = (v15 << 8) | (v15 >> 24) + v11 += v15 + v07 ^= v11 + v07 = (v07 << 7) | (v07 >> 25) + v00 += v05 + v15 ^= v00 + v15 = (v15 << 16) | (v15 >> 16) + v10 += v15 + v05 ^= v10 + v05 = (v05 << 12) | (v05 >> 20) + v00 += v05 + v15 ^= v00 + v15 = (v15 << 8) | (v15 >> 24) + v10 += v15 + v05 ^= v10 + v05 = (v05 << 7) | (v05 >> 25) + v01 += v06 + v12 ^= v01 + v12 = (v12 << 16) | (v12 >> 16) + v11 += v12 + v06 ^= v11 + v06 = (v06 << 12) | (v06 >> 20) + v01 += v06 + v12 ^= v01 + v12 = (v12 << 8) | (v12 >> 24) + v11 += v12 + v06 ^= v11 + v06 = (v06 << 7) | (v06 >> 25) + v02 += v07 + v13 ^= v02 + v13 = (v13 << 16) | (v13 >> 16) + v08 += v13 + v07 ^= v08 + v07 = (v07 << 12) | (v07 >> 20) + v02 += v07 + v13 ^= v02 + v13 = (v13 << 8) | (v13 >> 24) + v08 += v13 + v07 ^= v08 + v07 = (v07 << 7) | (v07 >> 25) + v03 += v04 + v14 ^= v03 + v14 = (v14 << 16) | (v14 >> 16) + v09 += v14 + v04 ^= v09 + v04 = (v04 << 12) | (v04 >> 20) + v03 += v04 + v14 ^= v03 + v14 = (v14 << 8) | (v14 >> 24) + v09 += v14 + v04 ^= v09 + v04 = (v04 << 7) | (v04 >> 25) + } + + binary.LittleEndian.PutUint32(out[0:], v00) + binary.LittleEndian.PutUint32(out[4:], v01) + binary.LittleEndian.PutUint32(out[8:], v02) + binary.LittleEndian.PutUint32(out[12:], v03) + binary.LittleEndian.PutUint32(out[16:], v12) + binary.LittleEndian.PutUint32(out[20:], v13) + binary.LittleEndian.PutUint32(out[24:], v14) + binary.LittleEndian.PutUint32(out[28:], v15) +} diff --git a/crypto/hkdfchacha20poly1305/hkdfchachapoly_test.go b/crypto/xchacha20poly1305/xchachapoly_test.go similarity index 73% rename from crypto/hkdfchacha20poly1305/hkdfchachapoly_test.go rename to crypto/xchacha20poly1305/xchachapoly_test.go index 854a312e..5b92a760 100644 --- a/crypto/hkdfchacha20poly1305/hkdfchachapoly_test.go +++ b/crypto/xchacha20poly1305/xchachapoly_test.go @@ -1,54 +1,12 @@ -package hkdfchacha20poly1305 +package xchacha20poly1305 import ( "bytes" cr "crypto/rand" - "encoding/hex" mr "math/rand" "testing" - - "github.com/stretchr/testify/assert" ) -// Test that a test vector we generated is valid. (Ensures backwards -// compatibility) -func TestVector(t *testing.T) { - key, _ := hex.DecodeString("56f8de45d3c294c7675bcaf457bdd4b71c380b9b2408ce9412b348d0f08b69ee") - aead, err := New(key[:]) - if err != nil { - t.Fatal(err) - } - cts := []string{"e20a8bf42c535ac30125cfc52031577f0b", - "657695b37ba30f67b25860d90a6f1d00d8", - "e9aa6f3b7f625d957fd50f05bcdf20d014", - "8a00b3b5a6014e0d2033bebc5935086245", - "aadd74867b923879e6866ea9e03c009039", - "fc59773c2c864ee3b4cc971876b3c7bed4", - "caec14e3a9a52ce1a2682c6737defa4752", - "0b89511ffe490d2049d6950494ee51f919", - "7de854ea71f43ca35167a07566c769083d", - "cd477327f4ea4765c71e311c5fec1edbfb"} - - for i := 0; i < 10; i++ { - ct, _ := hex.DecodeString(cts[i]) - - byteArr := []byte{byte(i)} - nonce := make([]byte, 24) - nonce[0] = byteArr[0] - - // Test that we get the expected plaintext on open - plaintext, err := aead.Open(nil, nonce, ct, byteArr) - if err != nil { - t.Errorf("%dth Open failed", i) - continue - } - assert.Equal(t, byteArr, plaintext) - // Test that sealing yields the expected ciphertext - ciphertext := aead.Seal(nil, nonce, plaintext, byteArr) - assert.Equal(t, ct, ciphertext) - } -} - // The following test is taken from // https://github.com/golang/crypto/blob/master/chacha20poly1305/chacha20poly1305_test.go#L69 // It requires the below copyright notice, where "this source code" refers to the following function. diff --git a/docs/app-dev/abci-spec.md b/docs/app-dev/abci-spec.md index ef274a4e..770740b8 100644 --- a/docs/app-dev/abci-spec.md +++ b/docs/app-dev/abci-spec.md @@ -108,8 +108,11 @@ See below for more details on the message types and how they are used. ### InitChain - **Request**: - - `Validators ([]Validator)`: Initial genesis validators - - `AppStateBytes ([]byte)`: Serialized initial application state + - `Time (google.protobuf.Timestamp)`: Genesis time. + - `ChainID (string)`: ID of the blockchain. + - `ConsensusParams (ConsensusParams)`: Initial consensus-critical parameters. + - `Validators ([]Validator)`: Initial genesis validators. + - `AppStateBytes ([]byte)`: Serialized initial application state. Amino-encoded JSON bytes. - **Response**: - `ConsensusParams (ConsensusParams)`: Initial consensus-critical parameters. @@ -157,9 +160,8 @@ See below for more details on the message types and how they are used. - **Request**: - `Hash ([]byte)`: The block's hash. This can be derived from the block header. - - `Header (struct{})`: The block header - - `Validators ([]SigningValidator)`: List of validators in the current validator - set and whether or not they signed a vote in the LastCommit + - `Header (struct{})`: The block header. + - `LastCommitInfo (LastCommitInfo)`: Info about the last commit. - `ByzantineValidators ([]Evidence)`: List of evidence of validators that acted maliciously - **Response**: @@ -168,8 +170,9 @@ See below for more details on the message types and how they are used. - Signals the beginning of a new block. Called prior to any DeliverTxs. - The header is expected to at least contain the Height. - - The `Validators` and `ByzantineValidators` can be used to - determine rewards and punishments for the validators. + - The `LastCommitInfo` and `ByzantineValidators` can be used to determine + rewards and punishments for the validators. NOTE validators here do not + include pubkeys. ### CheckTx @@ -186,7 +189,6 @@ See below for more details on the message types and how they are used. - `GasUsed (int64)`: Amount of gas consumed by transaction. - `Tags ([]cmn.KVPair)`: Key-Value tags for filtering and indexing transactions (eg. by account). - - `Fee (cmn.KI64Pair)`: Fee paid for the transaction. - **Usage**: Validate a mempool transaction, prior to broadcasting or proposing. CheckTx should perform stateful but light-weight checks of the validity of the transaction (like checking signatures @@ -223,7 +225,6 @@ See below for more details on the message types and how they are used. - `GasUsed (int64)`: Amount of gas consumed by transaction. - `Tags ([]cmn.KVPair)`: Key-Value tags for filtering and indexing transactions (eg. by account). - - `Fee (cmn.KI64Pair)`: Fee paid for the transaction. - **Usage**: - Deliver a transaction to be executed in full by the application. If the transaction is valid, returns CodeType.OK. @@ -265,7 +266,8 @@ See below for more details on the message types and how they are used. - **Fields**: - `ChainID (string)`: ID of the blockchain - `Height (int64)`: Height of the block in the chain - - `Time (int64)`: Unix time of the block + - `Time (google.protobuf.Timestamp)`: Time of the block. It is the proposer's + local time when block was created. - `NumTxs (int32)`: Number of transactions in the block - `TotalTxs (int64)`: Total number of transactions in the blockchain until now @@ -320,6 +322,14 @@ See below for more details on the message types and how they are used. "duplicate/vote". - `Validator (Validator`: The offending validator - `Height (int64)`: Height when the offense was committed - - `Time (int64)`: Unix time of the block at height `Height` + - `Time (google.protobuf.Timestamp)`: Time of the block at height `Height`. + It is the proposer's local time when block was created. - `TotalVotingPower (int64)`: Total voting power of the validator set at height `Height` + +### LastCommitInfo + +- **Fields**: + - `CommitRound (int32)`: Commit round. + - `Validators ([]SigningValidator)`: List of validators in the current + validator set and whether or not they signed a vote. diff --git a/docs/app-dev/app-development.md b/docs/app-dev/app-development.md index a795673f..d3f22362 100644 --- a/docs/app-dev/app-development.md +++ b/docs/app-dev/app-development.md @@ -365,14 +365,14 @@ ResponseBeginBlock requestBeginBlock(RequestBeginBlock req) { ### EndBlock -The EndBlock request can be used to run some code at the end of every -block. Additionally, the response may contain a list of validators, -which can be used to update the validator set. To add a new validator or -update an existing one, simply include them in the list returned in the -EndBlock response. To remove one, include it in the list with a `power` -equal to `0`. Tendermint core will take care of updating the validator -set. Note the change in voting power must be strictly less than 1/3 per -block if you want a light client to be able to prove the transition +The EndBlock request can be used to run some code at the end of every block. +Additionally, the response may contain a list of validators, which can be used +to update the validator set. To add a new validator or update an existing one, +simply include them in the list returned in the EndBlock response. To remove +one, include it in the list with a `power` equal to `0`. Validator's `address` +field can be left empty. Tendermint core will take care of updating the +validator set. Note the change in voting power must be strictly less than 1/3 +per block if you want a light client to be able to prove the transition externally. See the [light client docs](https://godoc.org/github.com/tendermint/tendermint/lite#hdr-How_We_Track_Validators) for details on how it tracks validators. diff --git a/docs/app-dev/getting-started.md b/docs/app-dev/getting-started.md index cfc614dd..40820bea 100644 --- a/docs/app-dev/getting-started.md +++ b/docs/app-dev/getting-started.md @@ -93,9 +93,7 @@ like: "jsonrpc": "2.0", "id": "", "result": { - "check_tx": { - "fee": {} - }, + "check_tx": {}, "deliver_tx": { "tags": [ { @@ -106,8 +104,7 @@ like: "key": "YXBwLmtleQ==", "value": "YWJjZA==" } - ], - "fee": {} + ] }, "hash": "9DF66553F98DE3C26E3C3317A3E4CED54F714E39", "height": 14 @@ -219,13 +216,10 @@ the number `1`. If instead, we try to send a `5`, we get an error: "jsonrpc": "2.0", "id": "", "result": { - "check_tx": { - "fee": {} - }, + "check_tx": {}, "deliver_tx": { "code": 2, - "log": "Invalid nonce. Expected 1, got 5", - "fee": {} + "log": "Invalid nonce. Expected 1, got 5" }, "hash": "33B93DFF98749B0D6996A70F64071347060DC19C", "height": 34 @@ -241,12 +235,8 @@ But if we send a `1`, it works again: "jsonrpc": "2.0", "id": "", "result": { - "check_tx": { - "fee": {} - }, - "deliver_tx": { - "fee": {} - }, + "check_tx": {}, + "deliver_tx": {}, "hash": "F17854A977F6FA7EEA1BD758E296710B86F72F3D", "height": 60 } diff --git a/docs/architecture/adr-012-peer-transport.md b/docs/architecture/adr-012-peer-transport.md new file mode 100644 index 00000000..01a79c8a --- /dev/null +++ b/docs/architecture/adr-012-peer-transport.md @@ -0,0 +1,113 @@ +# ADR 012: PeerTransport + +## Context + +One of the more apparent problems with the current architecture in the p2p +package is that there is no clear separation of concerns between different +components. Most notably the `Switch` is currently doing physical connection +handling. An artifact is the dependency of the Switch on +`[config.P2PConfig`](https://github.com/tendermint/tendermint/blob/05a76fb517f50da27b4bfcdc7b4cf185fc61eff6/config/config.go#L272-L339). + +Addresses: +* [#2046](https://github.com/tendermint/tendermint/issues/2046) +* [#2047](https://github.com/tendermint/tendermint/issues/2047) + +First iteraton in [#2067](https://github.com/tendermint/tendermint/issues/2067) + +## Decision + +Transport concerns will be handled by a new component (`PeerTransport`) which +will provide Peers at its boundary to the caller. In turn `Switch` will use +this new component accept new `Peer`s and dial them based on `NetAddress`. + +### PeerTransport + +Responsible for emitting and connecting to Peers. The implementation of `Peer` +is left to the transport, which implies that the chosen transport dictates the +characteristics of the implementation handed back to the `Switch`. Each +transport implementation is responsible to filter establishing peers specific +to its domain, for the default multiplexed implementation the following will +apply: + +* connections from our own node +* handshake fails +* upgrade to secret connection fails +* prevent duplicate ip +* prevent duplicate id +* nodeinfo incompatibility + + +``` go +// PeerTransport proxies incoming and outgoing peer connections. +type PeerTransport interface { + // Accept returns a newly connected Peer. + Accept() (Peer, error) + + // Dial connects to a Peer. + Dial(NetAddress) (Peer, error) +} + +// EXAMPLE OF DEFAULT IMPLEMENTATION + +// multiplexTransport accepts tcp connections and upgrades to multiplexted +// peers. +type multiplexTransport struct { + listener net.Listener + + acceptc chan accept + closec <-chan struct{} + listenc <-chan struct{} + + dialTimeout time.Duration + handshakeTimeout time.Duration + nodeAddr NetAddress + nodeInfo NodeInfo + nodeKey NodeKey + + // TODO(xla): Remove when MConnection is refactored into mPeer. + mConfig conn.MConnConfig +} + +var _ PeerTransport = (*multiplexTransport)(nil) + +// NewMTransport returns network connected multiplexed peers. +func NewMTransport( + nodeAddr NetAddress, + nodeInfo NodeInfo, + nodeKey NodeKey, +) *multiplexTransport +``` + +### Switch + +From now the Switch will depend on a fully setup `PeerTransport` to +retrieve/reach out to its peers. As the more low-level concerns are pushed to +the transport, we can omit passing the `config.P2PConfig` to the Switch. + +``` go +func NewSwitch(transport PeerTransport, opts ...SwitchOption) *Switch +``` + +## Status + +In Review. + +## Consequences + +### Positive + +* free Switch from transport concerns - simpler implementation +* pluggable transport implementation - simpler test setup +* remove Switch dependency on P2PConfig - easier to test + +### Negative + +* more setup for tests which depend on Switches + +### Neutral + +* multiplexed will be the default implementation + +[0] These guards could be potentially extended to be pluggable much like +middlewares to express different concerns required by differentally configured +environments. diff --git a/docs/architecture/adr-015-crypto-encoding.md b/docs/architecture/adr-015-crypto-encoding.md new file mode 100644 index 00000000..98341127 --- /dev/null +++ b/docs/architecture/adr-015-crypto-encoding.md @@ -0,0 +1,80 @@ +# ADR 015: Crypto encoding + +## Context + +We must standardize our method for encoding public keys and signatures on chain. +Currently we amino encode the public keys and signatures. +The reason we are using amino here is primarily due to ease of support in +parsing for other languages. +We don't need its upgradability properties in cryptosystems, as a change in +the crypto that requires adapting the encoding, likely warrants being deemed +a new cryptosystem. +(I.e. using new public parameters) + +## Decision + +### Public keys + +For public keys, we will continue to use amino encoding on the canonical +representation of the pubkey. +(Canonical as defined by the cryptosystem itself) +This has two significant drawbacks. +Amino encoding is less space-efficient, due to requiring support for upgradability. +Amino encoding support requires forking protobuf and adding this new interface support +option in the langauge of choice. + +The reason for continuing to use amino however is that people can create code +more easily in languages that already have an up to date amino library. +It is possible that this will change in the future, if it is deemed that +requiring amino for interacting with tendermint cryptography is unneccessary. + +The arguments for space efficiency here are refuted on the basis that there are +far more egregious wastages of space in the SDK. +The space requirement of the public keys doesn't cause many problems beyond +increasing the space attached to each validator / account. + +The alternative to using amino here would be for us to create an enum type. +Switching to just an enum type is worthy of investigation post-launch. +For referrence, part of amino encoding interfaces is basically a 4 byte enum +type definition. +Enum types would just change that 4 bytes to be a varuint, and it would remove +the protobuf overhead, but it would be hard to integrate into the existing API. + +### Signatures + +Signatures should be switched to be `[]byte`. +Spatial efficiency in the signatures is quite important, +as it directly affects the gas cost of every transaction, +and the throughput of the chain. +Signatures don't need to encode what type they are for (unlike public keys) +since public keys must already be known. +Therefore we can validate the signature without needing to encode its type. + +When placed in state, signatures will still be amino encoded, but it will be the +primitive type `[]byte` getting encoded. + +#### Ed25519 +Use the canonical representation for signatures. + +#### Secp256k1 +There isn't a clear canonical representation here. +Signatures have two elements `r,s`. +We should encode these bytes as `r || s`, where `r` and `s` are both exactly +32 bytes long. +This is basically Ethereum's encoding, but without the leading recovery bit. + +## Status + +Proposed. The signature section seems to be agreed upon for the most part. +Needs decision on Enum types. + +## Consequences + +### Positive +* More space efficient signatures + +### Negative +* We have an amino dependency for cryptography. + +### Neutral +* No change to public keys \ No newline at end of file diff --git a/docs/spec/blockchain/blockchain.md b/docs/spec/blockchain/blockchain.md index eb34f4c8..e3171818 100644 --- a/docs/spec/blockchain/blockchain.md +++ b/docs/spec/blockchain/blockchain.md @@ -52,7 +52,8 @@ type Header struct { // application ResultsHash []byte // SimpleMerkle of []abci.Result from prevBlock AppHash []byte // Arbitrary state digest - ValidatorsHash []byte // SimpleMerkle of the ValidatorSet + ValidatorsHash []byte // SimpleMerkle of the current ValidatorSet + NextValidatorsHash []byte // SimpleMerkle of the next ValidatorSet ConsensusParamsHash []byte // SimpleMerkle of the ConsensusParams // consensus @@ -160,9 +161,12 @@ We refer to certain globally available objects: `block` is the block under consideration, `prevBlock` is the `block` at the previous height, and `state` keeps track of the validator set, the consensus parameters -and other results from the application. +and other results from the application. At the point when `block` is the block under consideration, +the current version of the `state` corresponds to the state +after executing transactions from the `prevBlock`. Elements of an object are accessed as expected, -ie. `block.Header`. See [here](https://github.com/tendermint/tendermint/blob/master/docs/spec/blockchain/state.md) for the definition of `state`. +ie. `block.Header`. +See [here](https://github.com/tendermint/tendermint/blob/master/docs/spec/blockchain/state.md) for the definition of `state`. ### Header @@ -278,7 +282,14 @@ block.ValidatorsHash == SimpleMerkleRoot(state.Validators) Simple Merkle root of the current validator set that is committing the block. This can be used to validate the `LastCommit` included in the next block. -May be updated by the application. + +### NextValidatorsHash + +```go +block.NextValidatorsHash == SimpleMerkleRoot(state.NextValidators) +``` +Simple Merkle root of the next validator set that will be the validator set that commits the next block. +Modifications to the validator set are defined by the application. ### ConsensusParamsHash @@ -407,25 +418,20 @@ set (TODO). Execute is defined as: ```go Execute(s State, app ABCIApp, block Block) State { - TODO: just spell out ApplyBlock here - and remove ABCIResponses struct. - abciResponses := app.ApplyBlock(block) + // Fuction ApplyBlock executes block of transactions against the app and returns the new root hash of the app state, + // modifications to the validator set and the changes of the consensus parameters. + AppHash, ValidatorChanges, ConsensusParamChanges := app.ApplyBlock(block) return State{ LastResults: abciResponses.DeliverTxResults, - AppHash: abciResponses.AppHash, - Validators: UpdateValidators(state.Validators, abciResponses.ValidatorChanges), + AppHash: AppHash, LastValidators: state.Validators, - ConsensusParams: UpdateConsensusParams(state.ConsensusParams, abci.Responses.ConsensusParamChanges), + Validators: state.NextValidators, + NextValidators: UpdateValidators(state.NextValidators, ValidatorChanges), + ConsensusParams: UpdateConsensusParams(state.ConsensusParams, ConsensusParamChanges), } } -type ABCIResponses struct { - DeliverTxResults []Result - ValidatorChanges []Validator - ConsensusParamChanges ConsensusParams - AppHash []byte -} ``` diff --git a/docs/spec/blockchain/state.md b/docs/spec/blockchain/state.md index 3b374f70..df86cd45 100644 --- a/docs/spec/blockchain/state.md +++ b/docs/spec/blockchain/state.md @@ -3,7 +3,7 @@ ## State The state contains information whose cryptographic digest is included in block headers, and thus is -necessary for validating new blocks. For instance, the set of validators and the results of +necessary for validating new blocks. For instance, the validators set and the results of transactions are never included in blocks, but their Merkle roots are - the state keeps track of them. Note that the `State` object itself is an implementation detail, since it is never @@ -18,8 +18,9 @@ type State struct { LastResults []Result AppHash []byte - Validators []Validator LastValidators []Validator + Validators []Validator + NextValidators []Validator ConsensusParams ConsensusParams } diff --git a/docs/spec/p2p/peer.md b/docs/spec/p2p/peer.md index 69c5bbac..dadb4a3a 100644 --- a/docs/spec/p2p/peer.md +++ b/docs/spec/p2p/peer.md @@ -27,27 +27,24 @@ Both handshakes have configurable timeouts (they should complete quickly). ### Authenticated Encryption Handshake Tendermint implements the Station-to-Station protocol -using ED25519 keys for Diffie-Helman key-exchange and NACL SecretBox for encryption. +using X25519 keys for Diffie-Helman key-exchange and chacha20poly1305 for encryption. It goes as follows: -- generate an emphemeral ED25519 keypair +- generate an ephemeral X25519 keypair - send the ephemeral public key to the peer - wait to receive the peer's ephemeral public key - compute the Diffie-Hellman shared secret using the peers ephemeral public key and our ephemeral private key -- generate two nonces to use for encryption (sending and receiving) as follows: - - sort the ephemeral public keys in ascending order and concatenate them - - RIPEMD160 the result - - append 4 empty bytes (extending the hash to 24-bytes) - - the result is nonce1 - - flip the last bit of nonce1 to get nonce2 - - if we had the smaller ephemeral pubkey, use nonce1 for receiving, nonce2 for sending; - else the opposite -- all communications from now on are encrypted using the shared secret and the nonces, where each nonce -increments by 2 every time it is used +- generate two keys to use for encryption (sending and receiving) and a challenge for authentication as follows: + - create a hkdf-sha256 instance with the key being the diffie hellman shared secret, and info parameter as + `TENDERMINT_SECRET_CONNECTION_KEY_AND_CHALLENGE_GEN` + - get 96 bytes of output from hkdf-sha256 + - if we had the smaller ephemeral pubkey, use the first 32 bytes for the key for receiving, the second 32 bytes for sending; else the opposite + - use the last 32 bytes of output for the challenge +- use a seperate nonce for receiving and sending. Both nonces start at 0, and should support the full 96 bit nonce range +- all communications from now on are encrypted in 1024 byte frames, +using the respective secret and nonce. Each nonce is incremented by one after each use. - we now have an encrypted channel, but still need to authenticate -- generate a common challenge to sign: - - SHA256 of the sorted (lowest first) and concatenated ephemeral pub keys -- sign the common challenge with our persistent private key -- send the go-wire encoded persistent pubkey and signature to the peer +- sign the common challenge obtained from the hkdf with our persistent private key +- send the amino encoded persistent pubkey and signature to the peer - wait to receive the persistent public key and signature from the peer - verify the signature on the challenge using the peer's persistent public key diff --git a/docs/spec/reactors/pex/pex.md b/docs/spec/reactors/pex/pex.md index 317803b8..0f13c0cb 100644 --- a/docs/spec/reactors/pex/pex.md +++ b/docs/spec/reactors/pex/pex.md @@ -12,7 +12,8 @@ them. Some peers can be marked as `private`, which means we will not put them in the address book or gossip them to others. -All peers except private peers are tracked using the address book. +All peers except private peers and peers coming from them are tracked using the +address book. ## Discovery diff --git a/evidence/reactor.go b/evidence/reactor.go index bf11ac10..cfe47364 100644 --- a/evidence/reactor.go +++ b/evidence/reactor.go @@ -44,11 +44,6 @@ func (evR *EvidenceReactor) SetLogger(l log.Logger) { evR.evpool.SetLogger(l) } -// OnStart implements cmn.Service -func (evR *EvidenceReactor) OnStart() error { - return evR.BaseReactor.OnStart() -} - // GetChannels implements Reactor. // It returns the list of channels for this reactor. func (evR *EvidenceReactor) GetChannels() []*p2p.ChannelDescriptor { diff --git a/evidence/wire.go b/evidence/wire.go index c61b8618..73ff33b2 100644 --- a/evidence/wire.go +++ b/evidence/wire.go @@ -12,14 +12,4 @@ func init() { RegisterEvidenceMessages(cdc) cryptoAmino.RegisterAmino(cdc) types.RegisterEvidences(cdc) - RegisterMockEvidences(cdc) // For testing -} - -//------------------------------------------- - -func RegisterMockEvidences(cdc *amino.Codec) { - cdc.RegisterConcrete(types.MockGoodEvidence{}, - "tendermint/MockGoodEvidence", nil) - cdc.RegisterConcrete(types.MockBadEvidence{}, - "tendermint/MockBadEvidence", nil) } diff --git a/libs/autofile/autofile_test.go b/libs/autofile/autofile_test.go index b39fb7cf..67397380 100644 --- a/libs/autofile/autofile_test.go +++ b/libs/autofile/autofile_test.go @@ -1,6 +1,7 @@ package autofile import ( + "io/ioutil" "os" "sync/atomic" "syscall" @@ -13,10 +14,14 @@ import ( func TestSIGHUP(t *testing.T) { // First, create an AutoFile writing to a tempfile dir - file, name := cmn.Tempfile("sighup_test") - if err := file.Close(); err != nil { + file, err := ioutil.TempFile("", "sighup_test") + if err != nil { t.Fatalf("Error creating tempfile: %v", err) } + if err := file.Close(); err != nil { + t.Fatalf("Error closing tempfile: %v", err) + } + name := file.Name() // Here is the actual AutoFile af, err := OpenAutoFile(name) if err != nil { diff --git a/libs/autofile/group_test.go b/libs/autofile/group_test.go index 72581f9e..c7e8725c 100644 --- a/libs/autofile/group_test.go +++ b/libs/autofile/group_test.go @@ -147,14 +147,13 @@ func TestSearch(t *testing.T) { // Now search for each number for i := 0; i < 100; i++ { - t.Log("Testing for i", i) gr, match, err := g.Search("INFO", makeSearchFunc(i)) - require.NoError(t, err, "Failed to search for line") - assert.True(t, match, "Expected Search to return exact match") + require.NoError(t, err, "Failed to search for line, tc #%d", i) + assert.True(t, match, "Expected Search to return exact match, tc #%d", i) line, err := gr.ReadLine() - require.NoError(t, err, "Failed to read line after search") + require.NoError(t, err, "Failed to read line after search, tc #%d", i) if !strings.HasPrefix(line, fmt.Sprintf("INFO %v ", i)) { - t.Fatal("Failed to get correct line") + t.Fatalf("Failed to get correct line, tc #%d", i) } // Make sure we can continue to read from there. cur := i + 1 @@ -165,16 +164,16 @@ func TestSearch(t *testing.T) { // OK! break } else { - t.Fatal("Got EOF after the wrong INFO #") + t.Fatalf("Got EOF after the wrong INFO #, tc #%d", i) } } else if err != nil { - t.Fatal("Error reading line", err) + t.Fatalf("Error reading line, tc #%d, err:\n%s", i, err) } if !strings.HasPrefix(line, "INFO ") { continue } if !strings.HasPrefix(line, fmt.Sprintf("INFO %v ", cur)) { - t.Fatalf("Unexpected INFO #. Expected %v got:\n%v", cur, line) + t.Fatalf("Unexpected INFO #. Expected %v got:\n%v, tc #%d", cur, line, i) } cur++ } diff --git a/libs/common/bit_array.go b/libs/common/bit_array.go index 0290921a..abf6110d 100644 --- a/libs/common/bit_array.go +++ b/libs/common/bit_array.go @@ -8,13 +8,15 @@ import ( "sync" ) +// BitArray is a thread-safe implementation of a bit array. type BitArray struct { mtx sync.Mutex Bits int `json:"bits"` // NOTE: persisted via reflect, must be exported Elems []uint64 `json:"elems"` // NOTE: persisted via reflect, must be exported } -// There is no BitArray whose Size is 0. Use nil instead. +// NewBitArray returns a new bit array. +// It returns nil if the number of bits is zero. func NewBitArray(bits int) *BitArray { if bits <= 0 { return nil @@ -25,6 +27,7 @@ func NewBitArray(bits int) *BitArray { } } +// Size returns the number of bits in the bitarray func (bA *BitArray) Size() int { if bA == nil { return 0 @@ -32,7 +35,8 @@ func (bA *BitArray) Size() int { return bA.Bits } -// NOTE: behavior is undefined if i >= bA.Bits +// GetIndex returns the bit at index i within the bit array. +// The behavior is undefined if i >= bA.Bits func (bA *BitArray) GetIndex(i int) bool { if bA == nil { return false @@ -49,7 +53,8 @@ func (bA *BitArray) getIndex(i int) bool { return bA.Elems[i/64]&(uint64(1)< 0 } -// NOTE: behavior is undefined if i >= bA.Bits +// SetIndex sets the bit at index i within the bit array. +// The behavior is undefined if i >= bA.Bits func (bA *BitArray) SetIndex(i int, v bool) bool { if bA == nil { return false @@ -71,6 +76,7 @@ func (bA *BitArray) setIndex(i int, v bool) bool { return true } +// Copy returns a copy of the provided bit array. func (bA *BitArray) Copy() *BitArray { if bA == nil { return nil @@ -98,7 +104,9 @@ func (bA *BitArray) copyBits(bits int) *BitArray { } } -// Returns a BitArray of larger bits size. +// Or returns a bit array resulting from a bitwise OR of the two bit arrays. +// If the two bit-arrys have different lengths, Or right-pads the smaller of the two bit-arrays with zeroes. +// Thus the size of the return value is the maximum of the two provided bit arrays. func (bA *BitArray) Or(o *BitArray) *BitArray { if bA == nil && o == nil { return nil @@ -110,7 +118,11 @@ func (bA *BitArray) Or(o *BitArray) *BitArray { return bA.Copy() } bA.mtx.Lock() - defer bA.mtx.Unlock() + o.mtx.Lock() + defer func() { + bA.mtx.Unlock() + o.mtx.Unlock() + }() c := bA.copyBits(MaxInt(bA.Bits, o.Bits)) for i := 0; i < len(c.Elems); i++ { c.Elems[i] |= o.Elems[i] @@ -118,13 +130,19 @@ func (bA *BitArray) Or(o *BitArray) *BitArray { return c } -// Returns a BitArray of smaller bit size. +// And returns a bit array resulting from a bitwise AND of the two bit arrays. +// If the two bit-arrys have different lengths, this truncates the larger of the two bit-arrays from the right. +// Thus the size of the return value is the minimum of the two provided bit arrays. func (bA *BitArray) And(o *BitArray) *BitArray { if bA == nil || o == nil { return nil } bA.mtx.Lock() - defer bA.mtx.Unlock() + o.mtx.Lock() + defer func() { + bA.mtx.Unlock() + o.mtx.Unlock() + }() return bA.and(o) } @@ -136,12 +154,17 @@ func (bA *BitArray) and(o *BitArray) *BitArray { return c } +// Not returns a bit array resulting from a bitwise Not of the provided bit array. func (bA *BitArray) Not() *BitArray { if bA == nil { return nil // Degenerate } bA.mtx.Lock() defer bA.mtx.Unlock() + return bA.not() +} + +func (bA *BitArray) not() *BitArray { c := bA.copy() for i := 0; i < len(c.Elems); i++ { c.Elems[i] = ^c.Elems[i] @@ -149,13 +172,20 @@ func (bA *BitArray) Not() *BitArray { return c } +// Sub subtracts the two bit-arrays bitwise, without carrying the bits. +// This is essentially bA.And(o.Not()). +// If bA is longer than o, o is right padded with zeroes. func (bA *BitArray) Sub(o *BitArray) *BitArray { if bA == nil || o == nil { // TODO: Decide if we should do 1's complement here? return nil } bA.mtx.Lock() - defer bA.mtx.Unlock() + o.mtx.Lock() + defer func() { + bA.mtx.Unlock() + o.mtx.Unlock() + }() if bA.Bits > o.Bits { c := bA.copy() for i := 0; i < len(o.Elems)-1; i++ { @@ -164,15 +194,15 @@ func (bA *BitArray) Sub(o *BitArray) *BitArray { i := len(o.Elems) - 1 if i >= 0 { for idx := i * 64; idx < o.Bits; idx++ { - // NOTE: each individual GetIndex() call to o is safe. - c.setIndex(idx, c.getIndex(idx) && !o.GetIndex(idx)) + c.setIndex(idx, c.getIndex(idx) && !o.getIndex(idx)) } } return c } - return bA.and(o.Not()) // Note degenerate case where o == nil + return bA.and(o.not()) // Note degenerate case where o == nil } +// IsEmpty returns true iff all bits in the bit array are 0 func (bA *BitArray) IsEmpty() bool { if bA == nil { return true // should this be opposite? @@ -187,6 +217,7 @@ func (bA *BitArray) IsEmpty() bool { return true } +// IsFull returns true iff all bits in the bit array are 1. func (bA *BitArray) IsFull() bool { if bA == nil { return true @@ -207,6 +238,8 @@ func (bA *BitArray) IsFull() bool { return (lastElem+1)&((uint64(1)< atomicWriteFileMaxNumConflicts { + atomicWriteFileRandMu.Lock() + atomicWriteFileRand = writeFileRandReseed() + atomicWriteFileRandMu.Unlock() + } + continue + } else if err != nil { + return err + } + break + } + if i == atomicWriteFileMaxNumWriteAttempts { + return fmt.Errorf("Could not create atomic write file after %d attempts", i) + } + + // Clean up in any case. Defer stacking order is last-in-first-out. + defer os.Remove(f.Name()) + defer f.Close() + + if n, err := f.Write(data); err != nil { + return err + } else if n < len(data) { + return io.ErrShortWrite + } + // Close the file before renaming it, otherwise it will cause "The process + // cannot access the file because it is being used by another process." on windows. + f.Close() + + return os.Rename(f.Name(), filename) +} diff --git a/libs/common/tempfile_test.go b/libs/common/tempfile_test.go new file mode 100644 index 00000000..51da9091 --- /dev/null +++ b/libs/common/tempfile_test.go @@ -0,0 +1,138 @@ +package common + +// Need access to internal variables, so can't use _test package + +import ( + "bytes" + fmt "fmt" + "io/ioutil" + "os" + testing "testing" + + "github.com/stretchr/testify/require" +) + +func TestWriteFileAtomic(t *testing.T) { + var ( + data = []byte(RandStr(RandIntn(2048))) + old = RandBytes(RandIntn(2048)) + perm os.FileMode = 0600 + ) + + f, err := ioutil.TempFile("/tmp", "write-atomic-test-") + if err != nil { + t.Fatal(err) + } + defer os.Remove(f.Name()) + + if err = ioutil.WriteFile(f.Name(), old, 0664); err != nil { + t.Fatal(err) + } + + if err = WriteFileAtomic(f.Name(), data, perm); err != nil { + t.Fatal(err) + } + + rData, err := ioutil.ReadFile(f.Name()) + if err != nil { + t.Fatal(err) + } + + if !bytes.Equal(data, rData) { + t.Fatalf("data mismatch: %v != %v", data, rData) + } + + stat, err := os.Stat(f.Name()) + if err != nil { + t.Fatal(err) + } + + if have, want := stat.Mode().Perm(), perm; have != want { + t.Errorf("have %v, want %v", have, want) + } +} + +// This tests atomic write file when there is a single duplicate file. +// Expected behavior is for a new file to be created, and the original write file to be unaltered. +func TestWriteFileAtomicDuplicateFile(t *testing.T) { + var ( + defaultSeed uint64 = 1 + testString = "This is a glorious test string" + expectedString = "Did the test file's string appear here?" + + fileToWrite = "/tmp/TestWriteFileAtomicDuplicateFile-test.txt" + ) + // Create a file at the seed, and reset the seed. + atomicWriteFileRand = defaultSeed + firstFileRand := randWriteFileSuffix() + atomicWriteFileRand = defaultSeed + fname := "/tmp/" + atomicWriteFilePrefix + firstFileRand + f, err := os.OpenFile(fname, atomicWriteFileFlag, 0777) + defer os.Remove(fname) + // Defer here, in case there is a panic in WriteFileAtomic. + defer os.Remove(fileToWrite) + + require.Nil(t, err) + f.WriteString(testString) + WriteFileAtomic(fileToWrite, []byte(expectedString), 0777) + // Check that the first atomic file was untouched + firstAtomicFileBytes, err := ioutil.ReadFile(fname) + require.Nil(t, err, "Error reading first atomic file") + require.Equal(t, []byte(testString), firstAtomicFileBytes, "First atomic file was overwritten") + // Check that the resultant file is correct + resultantFileBytes, err := ioutil.ReadFile(fileToWrite) + require.Nil(t, err, "Error reading resultant file") + require.Equal(t, []byte(expectedString), resultantFileBytes, "Written file had incorrect bytes") + + // Check that the intermediate write file was deleted + // Get the second write files' randomness + atomicWriteFileRand = defaultSeed + _ = randWriteFileSuffix() + secondFileRand := randWriteFileSuffix() + _, err = os.Stat("/tmp/" + atomicWriteFilePrefix + secondFileRand) + require.True(t, os.IsNotExist(err), "Intermittent atomic write file not deleted") +} + +// This tests atomic write file when there are many duplicate files. +// Expected behavior is for a new file to be created under a completely new seed, +// and the original write files to be unaltered. +func TestWriteFileAtomicManyDuplicates(t *testing.T) { + var ( + defaultSeed uint64 = 2 + testString = "This is a glorious test string, from file %d" + expectedString = "Did any of the test file's string appear here?" + + fileToWrite = "/tmp/TestWriteFileAtomicDuplicateFile-test.txt" + ) + // Initialize all of the atomic write files + atomicWriteFileRand = defaultSeed + for i := 0; i < atomicWriteFileMaxNumConflicts+2; i++ { + fileRand := randWriteFileSuffix() + fname := "/tmp/" + atomicWriteFilePrefix + fileRand + f, err := os.OpenFile(fname, atomicWriteFileFlag, 0777) + require.Nil(t, err) + f.WriteString(fmt.Sprintf(testString, i)) + defer os.Remove(fname) + } + + atomicWriteFileRand = defaultSeed + // Defer here, in case there is a panic in WriteFileAtomic. + defer os.Remove(fileToWrite) + + WriteFileAtomic(fileToWrite, []byte(expectedString), 0777) + // Check that all intermittent atomic file were untouched + atomicWriteFileRand = defaultSeed + for i := 0; i < atomicWriteFileMaxNumConflicts+2; i++ { + fileRand := randWriteFileSuffix() + fname := "/tmp/" + atomicWriteFilePrefix + fileRand + firstAtomicFileBytes, err := ioutil.ReadFile(fname) + require.Nil(t, err, "Error reading first atomic file") + require.Equal(t, []byte(fmt.Sprintf(testString, i)), firstAtomicFileBytes, + "atomic write file %d was overwritten", i) + } + + // Check that the resultant file is correct + resultantFileBytes, err := ioutil.ReadFile(fileToWrite) + require.Nil(t, err, "Error reading resultant file") + require.Equal(t, []byte(expectedString), resultantFileBytes, "Written file had incorrect bytes") +} diff --git a/libs/db/backend_test.go b/libs/db/backend_test.go index 493ed83f..b31b4d74 100644 --- a/libs/db/backend_test.go +++ b/libs/db/backend_test.go @@ -2,6 +2,7 @@ package db import ( "fmt" + "io/ioutil" "os" "path/filepath" "testing" @@ -17,8 +18,8 @@ func cleanupDBDir(dir, name string) { func testBackendGetSetDelete(t *testing.T, backend DBBackendType) { // Default - dir, dirname := cmn.Tempdir(fmt.Sprintf("test_backend_%s_", backend)) - defer dir.Close() + dirname, err := ioutil.TempDir("", fmt.Sprintf("test_backend_%s_", backend)) + require.Nil(t, err) db := NewDB("testdb", backend, dirname) // A nonexistent key should return nil, even if the key is empty diff --git a/libs/db/common_test.go b/libs/db/common_test.go index 027b8ee5..68420cd2 100644 --- a/libs/db/common_test.go +++ b/libs/db/common_test.go @@ -2,12 +2,12 @@ package db import ( "fmt" + "io/ioutil" "sync" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - cmn "github.com/tendermint/tendermint/libs/common" ) //---------------------------------------- @@ -61,9 +61,9 @@ func checkValuePanics(t *testing.T, itr Iterator) { } func newTempDB(t *testing.T, backend DBBackendType) (db DB) { - dir, dirname := cmn.Tempdir("db_common_test") + dirname, err := ioutil.TempDir("", "db_common_test") + require.Nil(t, err) db = NewDB("testdb", backend, dirname) - dir.Close() return db } diff --git a/mempool/mempool_test.go b/mempool/mempool_test.go index acaa17ee..c0f66051 100644 --- a/mempool/mempool_test.go +++ b/mempool/mempool_test.go @@ -117,7 +117,7 @@ func TestTxsAvailable(t *testing.T) { func TestSerialReap(t *testing.T) { app := counter.NewCounterApplication(true) - app.SetOption(abci.RequestSetOption{"serial", "on"}) + app.SetOption(abci.RequestSetOption{Key: "serial", Value: "on"}) cc := proxy.NewLocalClientCreator(app) mempool := newMempoolWithApp(cc) diff --git a/node/node.go b/node/node.go index e333c667..0c3396dc 100644 --- a/node/node.go +++ b/node/node.go @@ -85,7 +85,7 @@ func DefaultNewNode(config *cfg.Config, logger log.Logger) (*Node, error) { proxy.DefaultClientCreator(config.ProxyApp, config.ABCI, config.DBDir()), DefaultGenesisDocProviderFunc(config), DefaultDBProvider, - DefaultMetricsProvider, + DefaultMetricsProvider(config.Instrumentation), logger, ) } @@ -93,15 +93,15 @@ func DefaultNewNode(config *cfg.Config, logger log.Logger) (*Node, error) { // MetricsProvider returns a consensus, p2p and mempool Metrics. type MetricsProvider func() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) -// DefaultMetricsProvider returns consensus, p2p and mempool Metrics build -// using Prometheus client library. -func DefaultMetricsProvider() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) { - return cs.PrometheusMetrics(), p2p.PrometheusMetrics(), mempl.PrometheusMetrics() -} - -// NopMetricsProvider returns consensus, p2p and mempool Metrics as no-op. -func NopMetricsProvider() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) { - return cs.NopMetrics(), p2p.NopMetrics(), mempl.NopMetrics() +// DefaultMetricsProvider returns Metrics build using Prometheus client library +// if Prometheus is enabled. Otherwise, it returns no-op Metrics. +func DefaultMetricsProvider(config *cfg.InstrumentationConfig) MetricsProvider { + return func() (*cs.Metrics, *p2p.Metrics, *mempl.Metrics) { + if config.Prometheus { + return cs.PrometheusMetrics(), p2p.PrometheusMetrics(), mempl.PrometheusMetrics() + } + return cs.NopMetrics(), p2p.NopMetrics(), mempl.NopMetrics() + } } //------------------------------------------------------------------------------ @@ -229,17 +229,7 @@ func NewNode(config *cfg.Config, consensusLogger.Info("This node is not a validator", "addr", privValidator.GetAddress(), "pubKey", privValidator.GetPubKey()) } - // metrics - var ( - csMetrics *cs.Metrics - p2pMetrics *p2p.Metrics - memplMetrics *mempl.Metrics - ) - if config.Instrumentation.Prometheus { - csMetrics, p2pMetrics, memplMetrics = metricsProvider() - } else { - csMetrics, p2pMetrics, memplMetrics = NopMetricsProvider() - } + csMetrics, p2pMetrics, memplMetrics := metricsProvider() // Make MempoolReactor mempoolLogger := logger.With("module", "mempool") @@ -462,7 +452,8 @@ func (n *Node) OnStart() error { n.rpcListeners = listeners } - if n.config.Instrumentation.Prometheus { + if n.config.Instrumentation.Prometheus && + n.config.Instrumentation.PrometheusListenAddr != "" { n.prometheusSrv = n.startPrometheusServer(n.config.Instrumentation.PrometheusListenAddr) } diff --git a/p2p/conn/secret_connection.go b/p2p/conn/secret_connection.go index a2cbe008..1b2b1da5 100644 --- a/p2p/conn/secret_connection.go +++ b/p2p/conn/secret_connection.go @@ -1,9 +1,3 @@ -// Uses nacl's secret_box to encrypt a net.Conn. -// It is (meant to be) an implementation of the STS protocol. -// Note we do not (yet) assume that a remote peer's pubkey -// is known ahead of time, and thus we are technically -// still vulnerable to MITM. (TODO!) -// See docs/sts-final.pdf for more info package conn import ( @@ -16,36 +10,45 @@ import ( "net" "time" + "golang.org/x/crypto/chacha20poly1305" + "golang.org/x/crypto/curve25519" "golang.org/x/crypto/nacl/box" - "golang.org/x/crypto/nacl/secretbox" - "golang.org/x/crypto/ripemd160" "github.com/tendermint/tendermint/crypto" cmn "github.com/tendermint/tendermint/libs/common" + "golang.org/x/crypto/hkdf" ) // 4 + 1024 == 1028 total frame size const dataLenSize = 4 const dataMaxSize = 1024 const totalFrameSize = dataMaxSize + dataLenSize -const sealedFrameSize = totalFrameSize + secretbox.Overhead +const aeadSizeOverhead = 16 // overhead of poly 1305 authentication tag +const aeadKeySize = chacha20poly1305.KeySize +const aeadNonceSize = chacha20poly1305.NonceSize -// Implements net.Conn +// SecretConnection implements net.conn. +// It is an implementation of the STS protocol. +// Note we do not (yet) assume that a remote peer's pubkey +// is known ahead of time, and thus we are technically +// still vulnerable to MITM. (TODO!) +// See docs/sts-final.pdf for more info type SecretConnection struct { conn io.ReadWriteCloser recvBuffer []byte - recvNonce *[24]byte - sendNonce *[24]byte + recvNonce *[aeadNonceSize]byte + sendNonce *[aeadNonceSize]byte + recvSecret *[aeadKeySize]byte + sendSecret *[aeadKeySize]byte remPubKey crypto.PubKey - shrSecret *[32]byte // shared secret } -// Performs handshake and returns a new authenticated SecretConnection. -// Returns nil if error in handshake. +// MakeSecretConnection performs handshake and returns a new authenticated +// SecretConnection. +// Returns nil if there is an error in handshake. // Caller should call conn.Close() // See docs/sts-final.pdf for more information. func MakeSecretConnection(conn io.ReadWriteCloser, locPrivKey crypto.PrivKey) (*SecretConnection, error) { - locPubKey := locPrivKey.PubKey() // Generate ephemeral keys for perfect forward secrecy. @@ -59,29 +62,27 @@ func MakeSecretConnection(conn io.ReadWriteCloser, locPrivKey crypto.PrivKey) (* return nil, err } - // Compute common shared secret. - shrSecret := computeSharedSecret(remEphPub, locEphPriv) - // Sort by lexical order. - loEphPub, hiEphPub := sort32(locEphPub, remEphPub) + loEphPub, _ := sort32(locEphPub, remEphPub) // Check if the local ephemeral public key // was the least, lexicographically sorted. locIsLeast := bytes.Equal(locEphPub[:], loEphPub[:]) - // Generate nonces to use for secretbox. - recvNonce, sendNonce := genNonces(loEphPub, hiEphPub, locIsLeast) + // Compute common diffie hellman secret using X25519. + dhSecret := computeDHSecret(remEphPub, locEphPriv) - // Generate common challenge to sign. - challenge := genChallenge(loEphPub, hiEphPub) + // generate the secret used for receiving, sending, challenge via hkdf-sha2 on dhSecret + recvSecret, sendSecret, challenge := deriveSecretAndChallenge(dhSecret, locIsLeast) // Construct SecretConnection. sc := &SecretConnection{ conn: conn, recvBuffer: nil, - recvNonce: recvNonce, - sendNonce: sendNonce, - shrSecret: shrSecret, + recvNonce: new([aeadNonceSize]byte), + sendNonce: new([aeadNonceSize]byte), + recvSecret: recvSecret, + sendSecret: sendSecret, } // Sign the challenge bytes for authentication. @@ -92,6 +93,7 @@ func MakeSecretConnection(conn io.ReadWriteCloser, locPrivKey crypto.PrivKey) (* if err != nil { return nil, err } + remPubKey, remSignature := authSigMsg.Key, authSigMsg.Sig if !remPubKey.VerifyBytes(challenge[:], remSignature) { return nil, errors.New("Challenge verification failed") @@ -102,7 +104,7 @@ func MakeSecretConnection(conn io.ReadWriteCloser, locPrivKey crypto.PrivKey) (* return sc, nil } -// Returns authenticated remote pubkey +// RemotePubKey returns authenticated remote pubkey func (sc *SecretConnection) RemotePubKey() crypto.PubKey { return sc.remPubKey } @@ -124,14 +126,17 @@ func (sc *SecretConnection) Write(data []byte) (n int, err error) { binary.BigEndian.PutUint32(frame, uint32(chunkLength)) copy(frame[dataLenSize:], chunk) + aead, err := chacha20poly1305.New(sc.sendSecret[:]) + if err != nil { + return n, errors.New("Invalid SecretConnection Key") + } // encrypt the frame - var sealedFrame = make([]byte, sealedFrameSize) - secretbox.Seal(sealedFrame[:0], frame, sc.sendNonce, sc.shrSecret) - // fmt.Printf("secretbox.Seal(sealed:%X,sendNonce:%X,shrSecret:%X\n", sealedFrame, sc.sendNonce, sc.shrSecret) - incr2Nonce(sc.sendNonce) + var sealedFrame = make([]byte, aeadSizeOverhead+totalFrameSize) + aead.Seal(sealedFrame[:0], sc.sendNonce[:], frame, nil) + incrNonce(sc.sendNonce) // end encryption - _, err := sc.conn.Write(sealedFrame) + _, err = sc.conn.Write(sealedFrame) if err != nil { return n, err } @@ -148,7 +153,11 @@ func (sc *SecretConnection) Read(data []byte) (n int, err error) { return } - sealedFrame := make([]byte, sealedFrameSize) + aead, err := chacha20poly1305.New(sc.recvSecret[:]) + if err != nil { + return n, errors.New("Invalid SecretConnection Key") + } + sealedFrame := make([]byte, totalFrameSize+aeadSizeOverhead) _, err = io.ReadFull(sc.conn, sealedFrame) if err != nil { return @@ -156,12 +165,11 @@ func (sc *SecretConnection) Read(data []byte) (n int, err error) { // decrypt the frame var frame = make([]byte, totalFrameSize) - // fmt.Printf("secretbox.Open(sealed:%X,recvNonce:%X,shrSecret:%X\n", sealedFrame, sc.recvNonce, sc.shrSecret) - _, ok := secretbox.Open(frame[:0], sealedFrame, sc.recvNonce, sc.shrSecret) - if !ok { + _, err = aead.Open(frame[:0], sc.recvNonce[:], sealedFrame, nil) + if err != nil { return n, errors.New("Failed to decrypt SecretConnection") } - incr2Nonce(sc.recvNonce) + incrNonce(sc.recvNonce) // end decryption var chunkLength = binary.BigEndian.Uint32(frame) // read the first two bytes @@ -176,6 +184,7 @@ func (sc *SecretConnection) Read(data []byte) (n int, err error) { } // Implements net.Conn +// nolint func (sc *SecretConnection) Close() error { return sc.conn.Close() } func (sc *SecretConnection) LocalAddr() net.Addr { return sc.conn.(net.Conn).LocalAddr() } func (sc *SecretConnection) RemoteAddr() net.Addr { return sc.conn.(net.Conn).RemoteAddr() } @@ -204,18 +213,16 @@ func shareEphPubKey(conn io.ReadWriteCloser, locEphPub *[32]byte) (remEphPub *[3 var _, err1 = cdc.MarshalBinaryWriter(conn, locEphPub) if err1 != nil { return nil, err1, true // abort - } else { - return nil, nil, false } + return nil, nil, false }, func(_ int) (val interface{}, err error, abort bool) { var _remEphPub [32]byte var _, err2 = cdc.UnmarshalBinaryReader(conn, &_remEphPub, 1024*1024) // TODO if err2 != nil { return nil, err2, true // abort - } else { - return _remEphPub, nil, false } + return _remEphPub, nil, false }, ) @@ -230,9 +237,40 @@ func shareEphPubKey(conn io.ReadWriteCloser, locEphPub *[32]byte) (remEphPub *[3 return &_remEphPub, nil } -func computeSharedSecret(remPubKey, locPrivKey *[32]byte) (shrSecret *[32]byte) { - shrSecret = new([32]byte) - box.Precompute(shrSecret, remPubKey, locPrivKey) +func deriveSecretAndChallenge(dhSecret *[32]byte, locIsLeast bool) (recvSecret, sendSecret *[aeadKeySize]byte, challenge *[32]byte) { + hash := sha256.New + hkdf := hkdf.New(hash, dhSecret[:], nil, []byte("TENDERMINT_SECRET_CONNECTION_KEY_AND_CHALLENGE_GEN")) + // get enough data for 2 aead keys, and a 32 byte challenge + res := new([2*aeadKeySize + 32]byte) + _, err := io.ReadFull(hkdf, res[:]) + if err != nil { + panic(err) + } + + challenge = new([32]byte) + recvSecret = new([aeadKeySize]byte) + sendSecret = new([aeadKeySize]byte) + // Use the last 32 bytes as the challenge + copy(challenge[:], res[2*aeadKeySize:2*aeadKeySize+32]) + + // bytes 0 through aeadKeySize - 1 are one aead key. + // bytes aeadKeySize through 2*aeadKeySize -1 are another aead key. + // which key corresponds to sending and receiving key depends on whether + // the local key is less than the remote key. + if locIsLeast { + copy(recvSecret[:], res[0:aeadKeySize]) + copy(sendSecret[:], res[aeadKeySize:aeadKeySize*2]) + } else { + copy(sendSecret[:], res[0:aeadKeySize]) + copy(recvSecret[:], res[aeadKeySize:aeadKeySize*2]) + } + + return +} + +func computeDHSecret(remPubKey, locPrivKey *[32]byte) (shrKey *[32]byte) { + shrKey = new([32]byte) + curve25519.ScalarMult(shrKey, locPrivKey, remPubKey) return } @@ -247,25 +285,6 @@ func sort32(foo, bar *[32]byte) (lo, hi *[32]byte) { return } -func genNonces(loPubKey, hiPubKey *[32]byte, locIsLo bool) (recvNonce, sendNonce *[24]byte) { - nonce1 := hash24(append(loPubKey[:], hiPubKey[:]...)) - nonce2 := new([24]byte) - copy(nonce2[:], nonce1[:]) - nonce2[len(nonce2)-1] ^= 0x01 - if locIsLo { - recvNonce = nonce1 - sendNonce = nonce2 - } else { - recvNonce = nonce2 - sendNonce = nonce1 - } - return -} - -func genChallenge(loPubKey, hiPubKey *[32]byte) (challenge *[32]byte) { - return hash32(append(loPubKey[:], hiPubKey[:]...)) -} - func signChallenge(challenge *[32]byte, locPrivKey crypto.PrivKey) (signature crypto.Signature) { signature, err := locPrivKey.Sign(challenge[:]) // TODO(ismail): let signChallenge return an error instead @@ -288,18 +307,16 @@ func shareAuthSignature(sc *SecretConnection, pubKey crypto.PubKey, signature cr var _, err1 = cdc.MarshalBinaryWriter(sc, authSigMessage{pubKey, signature}) if err1 != nil { return nil, err1, true // abort - } else { - return nil, nil, false } + return nil, nil, false }, func(_ int) (val interface{}, err error, abort bool) { var _recvMsg authSigMessage var _, err2 = cdc.UnmarshalBinaryReader(sc, &_recvMsg, 1024*1024) // TODO if err2 != nil { return nil, err2, true // abort - } else { - return _recvMsg, nil, false } + return _recvMsg, nil, false }, ) @@ -315,36 +332,11 @@ func shareAuthSignature(sc *SecretConnection, pubKey crypto.PubKey, signature cr //-------------------------------------------------------------------------------- -// sha256 -func hash32(input []byte) (res *[32]byte) { - hasher := sha256.New() - hasher.Write(input) // nolint: errcheck, gas - resSlice := hasher.Sum(nil) - res = new([32]byte) - copy(res[:], resSlice) - return -} - -// We only fill in the first 20 bytes with ripemd160 -func hash24(input []byte) (res *[24]byte) { - hasher := ripemd160.New() - hasher.Write(input) // nolint: errcheck, gas - resSlice := hasher.Sum(nil) - res = new([24]byte) - copy(res[:], resSlice) - return -} - -// increment nonce big-endian by 2 with wraparound. -func incr2Nonce(nonce *[24]byte) { - incrNonce(nonce) - incrNonce(nonce) -} - // increment nonce big-endian by 1 with wraparound. -func incrNonce(nonce *[24]byte) { - for i := 23; 0 <= i; i-- { +func incrNonce(nonce *[aeadNonceSize]byte) { + for i := aeadNonceSize - 1; 0 <= i; i-- { nonce[i]++ + // if this byte wrapped around to zero, we need to increment the next byte if nonce[i] != 0 { return } diff --git a/p2p/conn/secret_connection_test.go b/p2p/conn/secret_connection_test.go index 27dca034..75ed8fe0 100644 --- a/p2p/conn/secret_connection_test.go +++ b/p2p/conn/secret_connection_test.go @@ -1,8 +1,16 @@ package conn import ( + "bufio" + "encoding/hex" + "flag" "fmt" "io" + "log" + "os" + "path/filepath" + "strconv" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -208,6 +216,66 @@ func TestSecretConnectionReadWrite(t *testing.T) { } +// Run go test -update from within this module +// to update the golden test vector file +var update = flag.Bool("update", false, "update .golden files") + +func TestDeriveSecretsAndChallengeGolden(t *testing.T) { + goldenFilepath := filepath.Join("testdata", t.Name()+".golden") + if *update { + t.Logf("Updating golden test vector file %s", goldenFilepath) + data := createGoldenTestVectors(t) + cmn.WriteFile(goldenFilepath, []byte(data), 0644) + } + f, err := os.Open(goldenFilepath) + if err != nil { + log.Fatal(err) + } + defer f.Close() + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := scanner.Text() + params := strings.Split(line, ",") + randSecretVector, err := hex.DecodeString(params[0]) + require.Nil(t, err) + randSecret := new([32]byte) + copy((*randSecret)[:], randSecretVector) + locIsLeast, err := strconv.ParseBool(params[1]) + require.Nil(t, err) + expectedRecvSecret, err := hex.DecodeString(params[2]) + require.Nil(t, err) + expectedSendSecret, err := hex.DecodeString(params[3]) + require.Nil(t, err) + expectedChallenge, err := hex.DecodeString(params[4]) + require.Nil(t, err) + + recvSecret, sendSecret, challenge := deriveSecretAndChallenge(randSecret, locIsLeast) + require.Equal(t, expectedRecvSecret, (*recvSecret)[:], "Recv Secrets aren't equal") + require.Equal(t, expectedSendSecret, (*sendSecret)[:], "Send Secrets aren't equal") + require.Equal(t, expectedChallenge, (*challenge)[:], "challenges aren't equal") + } +} + +// Creates the data for a test vector file. +// The file format is: +// Hex(diffie_hellman_secret), loc_is_least, Hex(recvSecret), Hex(sendSecret), Hex(challenge) +func createGoldenTestVectors(t *testing.T) string { + data := "" + for i := 0; i < 32; i++ { + randSecretVector := cmn.RandBytes(32) + randSecret := new([32]byte) + copy((*randSecret)[:], randSecretVector) + data += hex.EncodeToString((*randSecret)[:]) + "," + locIsLeast := cmn.RandBool() + data += strconv.FormatBool(locIsLeast) + "," + recvSecret, sendSecret, challenge := deriveSecretAndChallenge(randSecret, locIsLeast) + data += hex.EncodeToString((*recvSecret)[:]) + "," + data += hex.EncodeToString((*sendSecret)[:]) + "," + data += hex.EncodeToString((*challenge)[:]) + "\n" + } + return data +} + func BenchmarkSecretConnection(b *testing.B) { b.StopTimer() fooSecConn, barSecConn := makeSecretConnPair(b) diff --git a/p2p/conn/testdata/TestDeriveSecretsAndChallengeGolden.golden b/p2p/conn/testdata/TestDeriveSecretsAndChallengeGolden.golden new file mode 100644 index 00000000..eb69b29f --- /dev/null +++ b/p2p/conn/testdata/TestDeriveSecretsAndChallengeGolden.golden @@ -0,0 +1,32 @@ +9fe4a5a73df12dbd8659b1d9280873fe993caefec6b0ebc2686dd65027148e03,true,80a83ad6afcb6f8175192e41973aed31dd75e3c106f813d986d9567a4865eb2f,96362a04f628a0666d9866147326898bb0847b8db8680263ad19e6336d4eed9e,2632c3fd20f456c5383ed16aa1d56dc7875a2b0fc0d5ff053c3ada8934098c69 +0716764b370d543fee692af03832c16410f0a56e4ddb79604ea093b10bb6f654,false,84f2b1e8658456529a2c324f46c3406c3c6fecd5fbbf9169f60bed8956a8b03d,cba357ae33d7234520d5742102a2a6cdb39b7db59c14a58fa8aadd310127630f,576643a8fcc1a4cf866db900f4a150dbe35d44a1b3ff36e4911565c3fa22fc32 +358dd73aae2c5b7b94b57f950408a3c681e748777ecab2063c8ca51a63588fa8,false,c2e2f664c8ee561af8e1e30553373be4ae23edecc8c6bd762d44b2afb7f2a037,d1563f428ac1c023c15d8082b2503157fe9ecbde4fb3493edd69ebc299b4970c,89fb6c6439b12fe11a4c604b8ad883f7dc76be33df590818fe5eb15ddb01face +0958308bdb583e639dd399a98cd21077d834b4b5e30771275a5a73a62efcc7e0,false,523c0ae97039173566f7ab4b8f271d8d78feef5a432d618e58ced4f80f7c1696,c1b743401c6e4508e62b8245ea7c3252bbad082e10af10e80608084d63877977,d7c52adf12ebc69677aec4bd387b0c5a35570fe61cb7b8ae55f3ab14b1b79be0 +d93d134e72f58f177642ac30f36b2d3cd4720aa7e60feb1296411a9009cf4524,false,47a427bcc1ef6f0ce31dbf343bc8bbf49554b4dd1e2330fd97d0df23ecdbba10,73e23adb7801179349ecf9c8cdf64d71d64a9f1145ba6730e5d029f99eaf8840,a8fdcb77f591bfba7b8483aa15ae7b42054ba68625d51dec005896dfe910281f +6104474c791cda24d952b356fb41a5d273c0ce6cc87d270b1701d0523cd5aa13,true,1cb4397b9e478430321af4647da2ccbef62ff8888542d31cca3f626766c8080f,673b23318826bd31ad1a4995c6e5095c4b092f5598aa0a96381a3e977bc0eaf9,4a25a25c5f75d6cc512f2ba8c1546e6263e9ef8269f0c046c37838cc66aa83e6 +8a6002503c15cab763e27c53fc449f6854a210c95cdd67e4466b0f2cb46b629c,false,f01ff06aef356c87f8d2646ff9ed8b855497c2ca00ea330661d84ef421a67e63,4f59bb23090010614877265a1597f1a142fa97b7208e1d554435763505f36f6a,1aadcb1c8b5993da102cebcb60c545b03197c98137064530840f45d917ad300e +31a57c6b1fe33beb1f7ebbbfc06d58c4f307cd355b6f9753e58f3edec16c7559,false,13e126c4cb240349dccf0dc843977671d34a1daffd0517d06ed66b703344db22,d491431906a306af45ecf9f1977e32d7f65a79f5139f931760416de27554b687,5ea7e8e3d5a30503423341609d360d246b61a9159fc07f253a46e357977cd745 +71a3c79718b824627faeefdce887d9465b353bd962cc5e97c5b5dfedab457ef9,true,e2e8eea547dcee7eafa89ae41f48ab049beac24935fad75258924fd5273d23cb,45d2e839bf36a3616cbe8a9bdbd4e7b288bf5bf1e6e79c07995eb2b18eb2eaff,7ee50e0810bc9f98e56bc46de5da22d84b3efa52fe5d85db4b2344530ef17ed8 +2e9dba2eb4f9019c2628ff5899744469c26caf793636f30ddb76601751aee968,false,8bfc3b314e4468d4e19c9d28b7bfd5b5532263105273b0fe80801f6146313993,b77d2b223e27038f978ab87a725859f6995f903056bdbd594ab04f0b2cbad517,9032be49a9cbcd1de6fee332f8f24ebf545c05e0175b98c564e7d1e69630ae20 +81322b22c835efb26d78051f3a3840a9d01aa558c019ecfa26483b5c5535728c,true,61eacb7e9665e362ef492ef950cea58f8bc67434ab7ee5545139147adf395da4,0f600ef0c358cae938969f434c2ec0ce3be632fdf5246b7bb8ee3ff294036ecd,a7026b4c21fe225ecd775ae81249405c6f492882eb85f3f8e2232f11e515561e +826b86c5e8cb4173ff2d05c48e3537140c5e0f26f7866bbcd4e57616806e1be2,true,ae44dabd077d227c8d898930a7705a2b785c8849121282106c045bb58b66eb36,24b2c1b1e2a9ebe387df6dfb9fbde6c681e4eeb0a33bb1c3df3789087f56ffe3,b37a64ea97431b25cb271c4c8435f6dd97118b35da57168f3c3c269920f7bbc1 +18b5a7b973d4b263072e69515c5b6ed22191c3d6e851aaba872904672f8344ec,true,ce402af2fb93b6ef18cd406f7c437d3cbfb09141b7a02116b1cfbabbf75ad84a,c86bdb1709ef0f4a31a818843660f83338b9db77e262bb7c6546138e51c6046b,11fcd8e59c4e7f6050d3cd332337db794ae31260c159e409af3ed8f4d6523bf4 +26d10c56872b72bb76ae7c7b3f074afb3d4a364e5e3f8c661be9b4f5a522ea75,true,1c9782a8485c4ecb13904ec551a7f9300ecd687abfbe63c91c7fd583f84a7a4d,ae3f4ccd0dfee8b514f67db2e923714d324935b9ae9e488d088ebb79569d8cc4,8139a3ab728b0e765e4d90549ab8eed7e1048a83267eafa7442208a7f627558a +558838dfcfe94105c46a4ade4548e6c96271d33e6c752661356cc66024615bae,true,d5a38625be74177318072cf877f2427ce2327e9b58d2eb134d0ac52c9126572f,dead938f77007e3164b6eee4cd153433d03ca5d9ec64f41aa6b2d6a069edeeda,4a081a356361da429c564cf7ac8e217121bbe8c5ee5c9632bae0b7ddbe94f9d4 +f4a3f6a93a4827a59682fd8bf1a8e4fd9aaff01a337a86e1966c8fff0e746014,true,39a0aea2a8ac7f0524d63e395a25b98fc3844ed039f20b11058019dca2b3840f,6ff53243426ded506d22501ae0f989d9946b86a8bb2550d7ed6e90fdf41d0e7c,8784e728bf12f465ed20dc6f0e1d949a68e5795d4799536427a6f859547b7fd6 +1717020e1c4fca1b4926dba16671c0c04e4f19c621c646cb4525fa533b1c205c,false,b9a909767f3044608b4e314b149a729bef199f8311310e1ecd2072e5659b7194,7baf0ff4b980919cf545312f45234976f0b6c574aac5b772024f73248aad7538,99a18e1e4b039ef3777a8fdd0d9ffaccaf3b4523b6d26adacfe91cc5fcd9977e +de769062be27b2a4248dd5be315960c8d231738417ece670c2d6a1c52877b59e,true,cc6c2086718b21813513894546e85766d34c754e81fd6a19c12fc322ffb9b1c3,5a7da7500191c65a5f1fbb2a6122717edc70ca0469baf2bbbd6ca8255b93c077,8c0d32091dc687f1399c754a617d224742726bece848b50c35b4db5f0469ace7 +7c5549f36767e02ebf49a4616467199459aa6932dcc091f182f822185659559a,true,d8335e606128b0c621ff6cda99dc62babf4a4436c574c5c478c20122712727d0,0a7c673cccd6f7fd4ed1673f7d0f2cb08961faced123ca901b74581d5bdc8b25,16ac1eb2a39384716c7d490272d87e76c10665fdb331e1883435de175ce4460e +ecf8261ebda248dc7796f98987efe1b7be363a59037c9e61044490d08a077610,true,53def80fcdba01367c0ea36459b57409f59a771f57a8259b54f24785e5656b7d,90140870b3b1e84c9dcf7836eac0581b16fe0a40307619d267c6f871e1efce6a,c6d1836b66c1a722a377c7eb058995a0ef8711839c6d6a0cdd6ad1ff70f935a5 +21c0ef76ce0eae9391ceabfb08a861899db55ac4ccf010ed672599669c6938f2,false,8af5482cc015093f261d5b7ce87035dda41d8318b9960b52cca3e5f0d3f61808,f4d5338bcb57262e1034f01ed3858ca1e5d66a73f18588e72f3dc8c6a730be0c,7ba82c2820c95e3354d9a6ab4920ebcd7938ce19e25930fee58439246b0321b1 +05f3b66d6b0fe906137e60b4719083a2465106badedcdae3a4c91c46c5367340,false,e5c9e074e95c2896fa4093830e96e9cf159b8dcba2ead21f37237cf6e9a9aaa2,b3a0a50309b4ca23cd34363fd8df30e73ec4a275973986c2e11a53752eff0a3b,358a62056ff05f27185b9952d291c6346171937f6811cafbacddd82e17010f39 +fef0251cff7c5d1ba0514f1820a8265453365fd9f5bb8a92f955dc007a40e730,true,e35a0aff6e9060a39c15d276a1337f1948d0be0aef81fcd563a6783115b5283d,20a8efe83474253d70e5fd847df0cd26222cd39e9210687b68c0a23b73429108,2989fab4278b32f4f40dc02227ab30e10f62e15ab7aa7382da769b1d084e33df +1b7bb172baa2753ec9c3e81a7a9b4c6ef10f9ed7afcafa975395f095eca63a54,false,a98257203987d0c4d260d8feef841466977276612e268b69b5ce4191af161b29,ea177a20d6c1f73f9667090568f9197943037d6586f7e2d6b7b81756fc71df5f,844eff318ef4c6ee45f158c1946ff999e40ffac70883ab6d6b90995f246e69a2 +5ee9b60a25753066d0ecc1155ca6afcc6b853ba558c9533c134a93b82e756856,true,9889460b95ca9545864a4a5194891b7d475362428d6d797532da10bf1fc92076,a7a96739abd8eceb6751afc98df68e29f7af16fbfda3d4710df9c35b6dcdb4d5,998326285c90a2ea2e1f6c6dac79530742645e3dd1b2b42a0733388a99cab81b +a102613781872f88a949d82cb5efcc2e0f437010a950d71b87929ecb480af3b3,false,e099080a55b9b29ccecbbb0d91dbe49defcc217efd1de0588e0836ce5970d327,319293b8660a3cea9879487645ddadda72a5c60079c9154bb0dbb8a0c9cda79e,4d567f1b1a1b304347cf7b129e4c7a05aa57e2bbb8ea335db9e33d05fab12e4d +1d4538180d06f37c43e8caa2d0d80aa7c5d701c8c3e31508704131427837f5cc,true,73afeeb46efc03d2b9f20fc271752528e52b8931287296a7e4367c96bccb32bd,59dc4b69d9ccf6f77715e47fb9bf454f1b90bbd05f1d2bbd07c7d6666f31c91f,ac59d735dfcdc3a0a4ce5a10f09dea8c6afd47de9c0308dc817e3789c8aee963 +e4c480af1b0e3487a331761f64eb3f020a2b8ffa25ad17e00f57aa7ec2c5e84d,true,1145e9f001c70d364e97fcdbc88a2a3d6aecdd975212923820f90a0b215f11f6,b802ac7ef21c8abaeae024c76e3fa70a2a82f73e0bb7c7fe76752ad1742af2e6,0a95876e30617e32ae25acd3af97c37dc075825f800def3f2bf3f68a268744e9 +3a7a83dd657dd6277bcfa957534f40d9b559039aad752066a8d7ed9a6d9c0ab5,false,f90a251ad2338b19cfee6a7965f6f5098136974abb99b3d24553fa6117384978,e422ed7567e5602731b3d980106d0546ef4a4da5eb7175d66a452df12d37bad2,b086bed71dfb6662cb10e2b4fb16a7c22394f488e822fc19697db6077f6caf6f +273e8560c2b1734e863a6542bded7a6fcbfb49a12770bd8866d4863dceea3ae9,false,3b7849a362e7b7ba8c8b8a0cd00df5180604987dbda6c03f37d9a09fdb27fb28,e6cdf4d767df0f411e970da8dda6acd3c2c34ce63908d8a6dbf3715daa0318e4,359a4a39fbdffc808161a48a3ffbe77fc6a03ff52324c22510a42e46c08a6f22 +9b4f8702991be9569b6c0b07a2173104d41325017b27d68fa5af91cdab164c4d,true,598323677db11ece050289f31881ee8caacb59376c7182f9055708b2a4673f84,7675adc1264b6758beb097a991f766f62796f78c1cfa58a4de3d81c36434d3ae,d5d8d610ffd85b04cbe1c73ff5becd5917c513d9625b001f51d486d0dadcefe3 +e1a686ba0169eb97379ebf9d22e073819450ee5ad5f049c8e93016e8d2ec1430,false,ffe461e6075865cde2704aa148fd29bcf0af245803f446cb6153244f25617993,46df6c25fa0344e662490c4da0bddca626644e67e66705840ef08aae35c343fa,e9a56d75acad4272ab0c49ee5919a4e86e6c5695ef065704c1e592d4e7b41a10 diff --git a/p2p/listener.go b/p2p/listener.go index 3509ec69..d73b3cab 100644 --- a/p2p/listener.go +++ b/p2p/listener.go @@ -151,7 +151,7 @@ func (l *DefaultListener) OnStop() { l.listener.Close() // nolint: errcheck } -// Accept connections and pass on the channel +// Accept connections and pass on the channel. func (l *DefaultListener) listenRoutine() { for { conn, err := l.listener.Accept() @@ -178,6 +178,8 @@ func (l *DefaultListener) listenRoutine() { // Connections returns a channel of inbound connections. // It gets closed when the listener closes. +// It is the callers responsibility to close any connections received +// over this channel. func (l *DefaultListener) Connections() <-chan net.Conn { return l.connections } diff --git a/p2p/pex/addrbook.go b/p2p/pex/addrbook.go index c630d14c..ef7d7eda 100644 --- a/p2p/pex/addrbook.go +++ b/p2p/pex/addrbook.go @@ -638,6 +638,7 @@ func (a *addrBook) addAddress(addr, src *p2p.NetAddress) error { if a.routabilityStrict && !addr.Routable() { return ErrAddrBookNonRoutable{addr} } + // TODO: we should track ourAddrs by ID and by IP:PORT and refuse both. if _, ok := a.ourAddrs[addr.String()]; ok { return ErrAddrBookSelf{addr} @@ -647,6 +648,10 @@ func (a *addrBook) addAddress(addr, src *p2p.NetAddress) error { return ErrAddrBookPrivate{addr} } + if _, ok := a.privateIDs[src.ID]; ok { + return ErrAddrBookPrivateSrc{src} + } + ka := a.addrLookup[addr.ID] if ka != nil { // If its already old and the addr is the same, ignore it. diff --git a/p2p/pex/addrbook_test.go b/p2p/pex/addrbook_test.go index 8b64c380..761c1187 100644 --- a/p2p/pex/addrbook_test.go +++ b/p2p/pex/addrbook_test.go @@ -8,7 +8,6 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" cmn "github.com/tendermint/tendermint/libs/common" "github.com/tendermint/tendermint/libs/log" @@ -374,10 +373,19 @@ func TestPrivatePeers(t *testing.T) { } book.AddPrivateIDs(private) + // private addrs must not be added for _, addr := range addrs { err := book.AddAddress(addr, addr) - require.Error(t, err, "AddAddress should have failed with private peer %s", addr) - _, ok := err.(ErrAddrBookPrivate) - require.True(t, ok, "Wrong error type, wanted ErrAddrBookPrivate, got error: %s", err) + if assert.Error(t, err) { + _, ok := err.(ErrAddrBookPrivate) + assert.True(t, ok) + } + } + + // addrs coming from private peers must not be added + err := book.AddAddress(randIPv4Address(t), addrs[0]) + if assert.Error(t, err) { + _, ok := err.(ErrAddrBookPrivateSrc) + assert.True(t, ok) } } diff --git a/p2p/pex/errors.go b/p2p/pex/errors.go index 34bfb5ab..7f660bdc 100644 --- a/p2p/pex/errors.go +++ b/p2p/pex/errors.go @@ -30,6 +30,14 @@ func (err ErrAddrBookPrivate) Error() string { return fmt.Sprintf("Cannot add private peer with address %v", err.Addr) } +type ErrAddrBookPrivateSrc struct { + Src *p2p.NetAddress +} + +func (err ErrAddrBookPrivateSrc) Error() string { + return fmt.Sprintf("Cannot add peer coming from private peer with address %v", err.Src) +} + type ErrAddrBookNilAddr struct { Addr *p2p.NetAddress Src *p2p.NetAddress diff --git a/p2p/pex/pex_reactor.go b/p2p/pex/pex_reactor.go index 5c4894ce..c59b3797 100644 --- a/p2p/pex/pex_reactor.go +++ b/p2p/pex/pex_reactor.go @@ -74,6 +74,8 @@ type PEXReactor struct { requestsSent *cmn.CMap // ID->struct{}: unanswered send requests lastReceivedRequests *cmn.CMap // ID->time.Time: last time peer requested from us + seedAddrs []*p2p.NetAddress + attemptsToDial sync.Map // address (string) -> {number of attempts (int), last time dialed (time.Time)} } @@ -113,9 +115,6 @@ func NewPEXReactor(b AddrBook, config *PEXReactorConfig) *PEXReactor { // OnStart implements BaseService func (r *PEXReactor) OnStart() error { - if err := r.BaseReactor.OnStart(); err != nil { - return err - } err := r.book.Start() if err != nil && err != cmn.ErrAlreadyStarted { return err @@ -123,10 +122,13 @@ func (r *PEXReactor) OnStart() error { // return err if user provided a bad seed address // or a host name that we cant resolve - if err := r.checkSeeds(); err != nil { + seedAddrs, err := r.checkSeeds() + if err != nil { return err } + r.seedAddrs = seedAddrs + // Check if this node should run // in seed/crawler mode if r.config.SeedMode { @@ -139,7 +141,6 @@ func (r *PEXReactor) OnStart() error { // OnStop implements BaseService func (r *PEXReactor) OnStop() { - r.BaseReactor.OnStop() r.book.Stop() } @@ -285,7 +286,6 @@ func (r *PEXReactor) RequestAddrs(p Peer) { // request for this peer and deletes the open request. // If there's no open request for the src peer, it returns an error. func (r *PEXReactor) ReceiveAddrs(addrs []*p2p.NetAddress, src Peer) error { - id := string(src.ID()) if !r.requestsSent.Has(id) { return cmn.NewError("Received unsolicited pexAddrsMessage") @@ -301,6 +301,13 @@ func (r *PEXReactor) ReceiveAddrs(addrs []*p2p.NetAddress, src Peer) error { err := r.book.AddAddress(netAddr, srcAddr) r.logErrAddrBook(err) + + // If this address came from a seed node, try to connect to it without waiting. + for _, seedAddr := range r.seedAddrs { + if seedAddr.Equals(srcAddr) { + r.ensurePeers() + } + } } return nil } @@ -472,18 +479,18 @@ func (r *PEXReactor) dialPeer(addr *p2p.NetAddress) { } // check seed addresses are well formed -func (r *PEXReactor) checkSeeds() error { +func (r *PEXReactor) checkSeeds() ([]*p2p.NetAddress, error) { lSeeds := len(r.config.Seeds) if lSeeds == 0 { - return nil + return nil, nil } - _, errs := p2p.NewNetAddressStrings(r.config.Seeds) + netAddrs, errs := p2p.NewNetAddressStrings(r.config.Seeds) for _, err := range errs { if err != nil { - return err + return nil, err } } - return nil + return netAddrs, nil } // randomly dial seeds until we connect to one or exhaust them @@ -492,13 +499,12 @@ func (r *PEXReactor) dialSeeds() { if lSeeds == 0 { return } - seedAddrs, _ := p2p.NewNetAddressStrings(r.config.Seeds) perm := cmn.RandPerm(lSeeds) // perm := r.Switch.rng.Perm(lSeeds) for _, i := range perm { // dial a random seed - seedAddr := seedAddrs[i] + seedAddr := r.seedAddrs[i] err := r.Switch.DialPeerWithAddress(seedAddr, false) if err == nil { return diff --git a/p2p/pex/pex_reactor_test.go b/p2p/pex/pex_reactor_test.go index 8d54693f..36f38c57 100644 --- a/p2p/pex/pex_reactor_test.go +++ b/p2p/pex/pex_reactor_test.go @@ -211,31 +211,26 @@ func TestPEXReactorUsesSeedsIfNeeded(t *testing.T) { defer os.RemoveAll(dir) // nolint: errcheck // 1. create seed - seed := p2p.MakeSwitch( - cfg, - 0, - "127.0.0.1", - "123.123.123", - func(i int, sw *p2p.Switch) *p2p.Switch { - book := NewAddrBook(filepath.Join(dir, "addrbook0.json"), false) - book.SetLogger(log.TestingLogger()) - sw.SetAddrBook(book) - - sw.SetLogger(log.TestingLogger()) - - r := NewPEXReactor(book, &PEXReactorConfig{}) - r.SetLogger(log.TestingLogger()) - sw.AddReactor("pex", r) - return sw - }, - ) - seed.AddListener( - p2p.NewDefaultListener("tcp://"+seed.NodeInfo().ListenAddr, "", false, log.TestingLogger()), - ) + seed := testCreateSeed(dir, 0, []*p2p.NetAddress{}, []*p2p.NetAddress{}) require.Nil(t, seed.Start()) defer seed.Stop() // 2. create usual peer with only seed configured. + peer := testCreatePeerWithSeed(dir, 1, seed) + require.Nil(t, peer.Start()) + defer peer.Stop() + + // 3. check that the peer connects to seed immediately + assertPeersWithTimeout(t, []*p2p.Switch{peer}, 10*time.Millisecond, 3*time.Second, 1) +} + +func TestConnectionSpeedForPeerReceivedFromSeed(t *testing.T) { + // directory to store address books + dir, err := ioutil.TempDir("", "pex_reactor") + require.Nil(t, err) + defer os.RemoveAll(dir) // nolint: errcheck + + // 1. create peer peer := p2p.MakeSwitch( cfg, 1, @@ -250,20 +245,34 @@ func TestPEXReactorUsesSeedsIfNeeded(t *testing.T) { r := NewPEXReactor( book, - &PEXReactorConfig{ - Seeds: []string{seed.NodeInfo().NetAddress().String()}, - }, + &PEXReactorConfig{}, ) r.SetLogger(log.TestingLogger()) sw.AddReactor("pex", r) return sw }, ) + peer.AddListener( + p2p.NewDefaultListener("tcp://"+peer.NodeInfo().ListenAddr, "", false, log.TestingLogger()), + ) require.Nil(t, peer.Start()) defer peer.Stop() - // 3. check that the peer connects to seed immediately - assertPeersWithTimeout(t, []*p2p.Switch{peer}, 10*time.Millisecond, 3*time.Second, 1) + // 2. Create seed which knows about the peer + seed := testCreateSeed(dir, 2, []*p2p.NetAddress{peer.NodeInfo().NetAddress()}, []*p2p.NetAddress{peer.NodeInfo().NetAddress()}) + require.Nil(t, seed.Start()) + defer seed.Stop() + + // 3. create another peer with only seed configured. + secondPeer := testCreatePeerWithSeed(dir, 3, seed) + require.Nil(t, secondPeer.Start()) + defer secondPeer.Stop() + + // 4. check that the second peer connects to seed immediately + assertPeersWithTimeout(t, []*p2p.Switch{secondPeer}, 10*time.Millisecond, 3*time.Second, 1) + + // 5. check that the second peer connects to the first peer immediately + assertPeersWithTimeout(t, []*p2p.Switch{secondPeer}, 10*time.Millisecond, 1*time.Second, 2) } func TestPEXReactorCrawlStatus(t *testing.T) { @@ -401,6 +410,7 @@ func assertPeersWithTimeout( outbound, inbound, _ := s.NumPeers() if outbound+inbound < nPeers { allGood = false + break } } remaining -= checkPeriod @@ -417,14 +427,77 @@ func assertPeersWithTimeout( numPeersStr += fmt.Sprintf("%d => {outbound: %d, inbound: %d}, ", i, outbound, inbound) } t.Errorf( - "expected all switches to be connected to at least one peer (switches: %s)", - numPeersStr, + "expected all switches to be connected to at least %d peer(s) (switches: %s)", + nPeers, numPeersStr, ) return } } } +// Creates a seed which knows about the provided addresses / source address pairs. +// Starting and stopping the seed is left to the caller +func testCreateSeed(dir string, id int, knownAddrs, srcAddrs []*p2p.NetAddress) *p2p.Switch { + seed := p2p.MakeSwitch( + cfg, + id, + "127.0.0.1", + "123.123.123", + func(i int, sw *p2p.Switch) *p2p.Switch { + book := NewAddrBook(filepath.Join(dir, "addrbookSeed.json"), false) + book.SetLogger(log.TestingLogger()) + for j := 0; j < len(knownAddrs); j++ { + book.AddAddress(knownAddrs[j], srcAddrs[j]) + book.MarkGood(knownAddrs[j]) + } + sw.SetAddrBook(book) + + sw.SetLogger(log.TestingLogger()) + + r := NewPEXReactor(book, &PEXReactorConfig{}) + r.SetLogger(log.TestingLogger()) + sw.AddReactor("pex", r) + return sw + }, + ) + seed.AddListener( + p2p.NewDefaultListener("tcp://"+seed.NodeInfo().ListenAddr, "", false, log.TestingLogger()), + ) + return seed +} + +// Creates a peer which knows about the provided seed. +// Starting and stopping the peer is left to the caller +func testCreatePeerWithSeed(dir string, id int, seed *p2p.Switch) *p2p.Switch { + peer := p2p.MakeSwitch( + cfg, + id, + "127.0.0.1", + "123.123.123", + func(i int, sw *p2p.Switch) *p2p.Switch { + book := NewAddrBook(filepath.Join(dir, fmt.Sprintf("addrbook%d.json", id)), false) + book.SetLogger(log.TestingLogger()) + sw.SetAddrBook(book) + + sw.SetLogger(log.TestingLogger()) + + r := NewPEXReactor( + book, + &PEXReactorConfig{ + Seeds: []string{seed.NodeInfo().NetAddress().String()}, + }, + ) + r.SetLogger(log.TestingLogger()) + sw.AddReactor("pex", r) + return sw + }, + ) + peer.AddListener( + p2p.NewDefaultListener("tcp://"+peer.NodeInfo().ListenAddr, "", false, log.TestingLogger()), + ) + return peer +} + func createReactor(conf *PEXReactorConfig) (r *PEXReactor, book *addrBook) { // directory to store address book dir, err := ioutil.TempDir("", "pex_reactor") diff --git a/p2p/switch.go b/p2p/switch.go index 636ca6d8..da94fa4b 100644 --- a/p2p/switch.go +++ b/p2p/switch.go @@ -496,6 +496,7 @@ func (sw *Switch) listenerRoutine(l Listener) { maxPeers := sw.config.MaxNumPeers - DefaultMinNumOutboundPeers if maxPeers <= sw.peers.Size() { sw.Logger.Info("Ignoring inbound connection: already have enough peers", "address", inConn.RemoteAddr().String(), "numPeers", sw.peers.Size(), "max", maxPeers) + inConn.Close() continue } @@ -510,6 +511,7 @@ func (sw *Switch) listenerRoutine(l Listener) { // cleanup } +// closes conn if err is returned func (sw *Switch) addInboundPeerWithConfig( conn net.Conn, config *config.P2PConfig, diff --git a/privval/priv_validator_test.go b/privval/priv_validator_test.go index 7c9c93fc..127f5c1f 100644 --- a/privval/priv_validator_test.go +++ b/privval/priv_validator_test.go @@ -3,6 +3,7 @@ package privval import ( "encoding/base64" "fmt" + "io/ioutil" "os" "testing" "time" @@ -11,22 +12,22 @@ import ( "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto/ed25519" - cmn "github.com/tendermint/tendermint/libs/common" "github.com/tendermint/tendermint/types" ) func TestGenLoadValidator(t *testing.T) { assert := assert.New(t) - _, tempFilePath := cmn.Tempfile("priv_validator_") - privVal := GenFilePV(tempFilePath) + tempFile, err := ioutil.TempFile("", "priv_validator_") + require.Nil(t, err) + privVal := GenFilePV(tempFile.Name()) height := int64(100) privVal.LastHeight = height privVal.Save() addr := privVal.GetAddress() - privVal = LoadFilePV(tempFilePath) + privVal = LoadFilePV(tempFile.Name()) assert.Equal(addr, privVal.GetAddress(), "expected privval addr to be the same") assert.Equal(height, privVal.LastHeight, "expected privval.LastHeight to have been saved") } @@ -34,7 +35,9 @@ func TestGenLoadValidator(t *testing.T) { func TestLoadOrGenValidator(t *testing.T) { assert := assert.New(t) - _, tempFilePath := cmn.Tempfile("priv_validator_") + tempFile, err := ioutil.TempFile("", "priv_validator_") + require.Nil(t, err) + tempFilePath := tempFile.Name() if err := os.Remove(tempFilePath); err != nil { t.Error(err) } @@ -91,8 +94,9 @@ func TestUnmarshalValidator(t *testing.T) { func TestSignVote(t *testing.T) { assert := assert.New(t) - _, tempFilePath := cmn.Tempfile("priv_validator_") - privVal := GenFilePV(tempFilePath) + tempFile, err := ioutil.TempFile("", "priv_validator_") + require.Nil(t, err) + privVal := GenFilePV(tempFile.Name()) block1 := types.BlockID{[]byte{1, 2, 3}, types.PartSetHeader{}} block2 := types.BlockID{[]byte{3, 2, 1}, types.PartSetHeader{}} @@ -101,7 +105,7 @@ func TestSignVote(t *testing.T) { // sign a vote for first time vote := newVote(privVal.Address, 0, height, round, voteType, block1) - err := privVal.SignVote("mychainid", vote) + err = privVal.SignVote("mychainid", vote) assert.NoError(err, "expected no error signing vote") // try to sign the same vote again; should be fine @@ -132,8 +136,9 @@ func TestSignVote(t *testing.T) { func TestSignProposal(t *testing.T) { assert := assert.New(t) - _, tempFilePath := cmn.Tempfile("priv_validator_") - privVal := GenFilePV(tempFilePath) + tempFile, err := ioutil.TempFile("", "priv_validator_") + require.Nil(t, err) + privVal := GenFilePV(tempFile.Name()) block1 := types.PartSetHeader{5, []byte{1, 2, 3}} block2 := types.PartSetHeader{10, []byte{3, 2, 1}} @@ -141,7 +146,7 @@ func TestSignProposal(t *testing.T) { // sign a proposal for first time proposal := newProposal(height, round, block1) - err := privVal.SignProposal("mychainid", proposal) + err = privVal.SignProposal("mychainid", proposal) assert.NoError(err, "expected no error signing proposal") // try to sign the same proposal again; should be fine @@ -170,8 +175,9 @@ func TestSignProposal(t *testing.T) { } func TestDifferByTimestamp(t *testing.T) { - _, tempFilePath := cmn.Tempfile("priv_validator_") - privVal := GenFilePV(tempFilePath) + tempFile, err := ioutil.TempFile("", "priv_validator_") + require.Nil(t, err) + privVal := GenFilePV(tempFile.Name()) block1 := types.PartSetHeader{5, []byte{1, 2, 3}} height, round := int64(10), 1 diff --git a/privval/socket.go b/privval/socket.go index c33443ed..d5ede471 100644 --- a/privval/socket.go +++ b/privval/socket.go @@ -7,12 +7,12 @@ import ( "net" "time" - "github.com/tendermint/go-amino" + amino "github.com/tendermint/go-amino" + "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/crypto/ed25519" cmn "github.com/tendermint/tendermint/libs/common" "github.com/tendermint/tendermint/libs/log" - p2pconn "github.com/tendermint/tendermint/p2p/conn" "github.com/tendermint/tendermint/types" ) @@ -33,7 +33,7 @@ var ( ) var ( - acceptDeadline = time.Second + defaultAcceptDeadlineSeconds + acceptDeadline = time.Second * defaultAcceptDeadlineSeconds connDeadline = time.Second * defaultConnDeadlineSeconds connHeartbeat = time.Second * defaultConnHeartBeatSeconds ) diff --git a/proxy/app_conn_test.go b/proxy/app_conn_test.go index 3c556d4f..44936056 100644 --- a/proxy/app_conn_test.go +++ b/proxy/app_conn_test.go @@ -142,7 +142,7 @@ func TestInfo(t *testing.T) { proxy := NewAppConnTest(cli) t.Log("Connected") - resInfo, err := proxy.InfoSync(types.RequestInfo{""}) + resInfo, err := proxy.InfoSync(types.RequestInfo{Version: ""}) if err != nil { t.Errorf("Unexpected error: %v", err) } diff --git a/rpc/client/mock/abci.go b/rpc/client/mock/abci.go index c8ca060c..4502c087 100644 --- a/rpc/client/mock/abci.go +++ b/rpc/client/mock/abci.go @@ -23,7 +23,7 @@ var ( ) func (a ABCIApp) ABCIInfo() (*ctypes.ResultABCIInfo, error) { - return &ctypes.ResultABCIInfo{a.App.Info(abci.RequestInfo{version.Version})}, nil + return &ctypes.ResultABCIInfo{a.App.Info(abci.RequestInfo{Version: version.Version})}, nil } func (a ABCIApp) ABCIQuery(path string, data cmn.HexBytes) (*ctypes.ResultABCIQuery, error) { @@ -31,7 +31,7 @@ func (a ABCIApp) ABCIQuery(path string, data cmn.HexBytes) (*ctypes.ResultABCIQu } func (a ABCIApp) ABCIQueryWithOptions(path string, data cmn.HexBytes, opts client.ABCIQueryOptions) (*ctypes.ResultABCIQuery, error) { - q := a.App.Query(abci.RequestQuery{data, path, opts.Height, opts.Trusted}) + q := a.App.Query(abci.RequestQuery{Data: data, Path: path, Height: opts.Height, Prove: opts.Trusted}) return &ctypes.ResultABCIQuery{q}, nil } diff --git a/rpc/core/README.md b/rpc/core/README.md index 9547079b..32c3051e 100644 --- a/rpc/core/README.md +++ b/rpc/core/README.md @@ -1,18 +1,15 @@ # Tendermint RPC -## Generate markdown for [Slate](https://github.com/tendermint/slate) - -We are using [Slate](https://github.com/tendermint/slate) to power our RPC +We are using [Slate](https://github.com/lord/slate) to power our RPC documentation. For generating markdown use: ```shell go get github.com/davecheney/godoc2md -godoc2md -template rpc/core/doc_template.txt github.com/tendermint/tendermint/rpc/core | grep -v -e "pipe.go" -e "routes.go" -e "dev.go" | sed 's$/src/target$https://github.com/tendermint/tendermint/tree/master/rpc/core$' +# from root of this repo +make rpc-docs ``` -For more information see the [CI script for building the Slate docs](/scripts/slate.sh) - ## Pagination Requests that return multiple items will be paginated to 30 items by default. diff --git a/rpc/core/abci.go b/rpc/core/abci.go index a5eede3f..3f399be8 100644 --- a/rpc/core/abci.go +++ b/rpc/core/abci.go @@ -1,10 +1,12 @@ package core import ( + "fmt" + abci "github.com/tendermint/tendermint/abci/types" + cmn "github.com/tendermint/tendermint/libs/common" ctypes "github.com/tendermint/tendermint/rpc/core/types" "github.com/tendermint/tendermint/version" - cmn "github.com/tendermint/tendermint/libs/common" ) // Query the application for some information. @@ -48,6 +50,10 @@ import ( // | height | int64 | 0 | false | Height (0 means latest) | // | trusted | bool | false | false | Does not include a proof of the data inclusion | func ABCIQuery(path string, data cmn.HexBytes, height int64, trusted bool) (*ctypes.ResultABCIQuery, error) { + if height < 0 { + return nil, fmt.Errorf("height must be non-negative") + } + resQuery, err := proxyAppQuery.QuerySync(abci.RequestQuery{ Path: path, Data: data, @@ -87,7 +93,7 @@ func ABCIQuery(path string, data cmn.HexBytes, height int64, trusted bool) (*cty // } // ``` func ABCIInfo() (*ctypes.ResultABCIInfo, error) { - resInfo, err := proxyAppQuery.InfoSync(abci.RequestInfo{version.Version}) + resInfo, err := proxyAppQuery.InfoSync(abci.RequestInfo{Version: version.Version}) if err != nil { return nil, err } diff --git a/rpc/core/blocks.go b/rpc/core/blocks.go index af061c93..bb69db63 100644 --- a/rpc/core/blocks.go +++ b/rpc/core/blocks.go @@ -64,25 +64,15 @@ import ( // // func BlockchainInfo(minHeight, maxHeight int64) (*ctypes.ResultBlockchainInfo, error) { - if minHeight == 0 { - minHeight = 1 - } - - if maxHeight == 0 { - maxHeight = blockStore.Height() - } else { - maxHeight = cmn.MinInt64(blockStore.Height(), maxHeight) - } // maximum 20 block metas const limit int64 = 20 - minHeight = cmn.MaxInt64(minHeight, maxHeight-limit) - - logger.Debug("BlockchainInfoHandler", "maxHeight", maxHeight, "minHeight", minHeight) - - if minHeight > maxHeight { - return nil, fmt.Errorf("min height %d can't be greater than max height %d", minHeight, maxHeight) + var err error + minHeight, maxHeight, err = filterMinMax(blockStore.Height(), minHeight, maxHeight, limit) + if err != nil { + return nil, err } + logger.Debug("BlockchainInfoHandler", "maxHeight", maxHeight, "minHeight", minHeight) blockMetas := []*types.BlockMeta{} for height := maxHeight; height >= minHeight; height-- { @@ -93,6 +83,37 @@ func BlockchainInfo(minHeight, maxHeight int64) (*ctypes.ResultBlockchainInfo, e return &ctypes.ResultBlockchainInfo{blockStore.Height(), blockMetas}, nil } +// error if either min or max are negative or min < max +// if 0, use 1 for min, latest block height for max +// enforce limit. +// error if min > max +func filterMinMax(height, min, max, limit int64) (int64, int64, error) { + // filter negatives + if min < 0 || max < 0 { + return min, max, fmt.Errorf("heights must be non-negative") + } + + // adjust for default values + if min == 0 { + min = 1 + } + if max == 0 { + max = height + } + + // limit max to the height + max = cmn.MinInt64(height, max) + + // limit min to within `limit` of max + // so the total number of blocks returned will be `limit` + min = cmn.MaxInt64(min, max-limit+1) + + if min > max { + return min, max, fmt.Errorf("min height %d can't be greater than max height %d", min, max) + } + return min, max, nil +} + // Get block at a given height. // If no height is provided, it will fetch the latest block. // diff --git a/rpc/core/blocks_test.go b/rpc/core/blocks_test.go new file mode 100644 index 00000000..da3920c2 --- /dev/null +++ b/rpc/core/blocks_test.go @@ -0,0 +1,58 @@ +package core + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestBlockchainInfo(t *testing.T) { + + cases := []struct { + min, max int64 + height int64 + limit int64 + resultLength int64 + wantErr bool + }{ + + // min > max + {0, 0, 0, 10, 0, true}, // min set to 1 + {0, 1, 0, 10, 0, true}, // max set to height (0) + {0, 0, 1, 10, 1, false}, // max set to height (1) + {2, 0, 1, 10, 0, true}, // max set to height (1) + {2, 1, 5, 10, 0, true}, + + // negative + {1, 10, 14, 10, 10, false}, // control + {-1, 10, 14, 10, 0, true}, + {1, -10, 14, 10, 0, true}, + {-9223372036854775808, -9223372036854775788, 100, 20, 0, true}, + + // check limit and height + {1, 1, 1, 10, 1, false}, + {1, 1, 5, 10, 1, false}, + {2, 2, 5, 10, 1, false}, + {1, 2, 5, 10, 2, false}, + {1, 5, 1, 10, 1, false}, + {1, 5, 10, 10, 5, false}, + {1, 15, 10, 10, 10, false}, + {1, 15, 15, 10, 10, false}, + {1, 15, 15, 20, 15, false}, + {1, 20, 15, 20, 15, false}, + {1, 20, 20, 20, 20, false}, + } + + for i, c := range cases { + caseString := fmt.Sprintf("test %d failed", i) + min, max, err := filterMinMax(c.height, c.min, c.max, c.limit) + if c.wantErr { + require.Error(t, err, caseString) + } else { + require.NoError(t, err, caseString) + require.Equal(t, 1+max-min, c.resultLength, caseString) + } + } + +} diff --git a/rpc/core/slate_header.txt b/rpc/core/slate_header.txt new file mode 100644 index 00000000..bb4ca6e0 --- /dev/null +++ b/rpc/core/slate_header.txt @@ -0,0 +1,13 @@ +--- +title: RPC Reference + +language_tabs: # must be one of https://git.io/vQNgJ + - shell + - go + +toc_footers: + - Tendermint + - Documentation Powered by Slate + +search: true +--- diff --git a/rpc/core/status.go b/rpc/core/status.go index 0228fd86..e34f5244 100644 --- a/rpc/core/status.go +++ b/rpc/core/status.go @@ -109,21 +109,11 @@ func Status() (*ctypes.ResultStatus, error) { return result, nil } -const consensusTimeout = time.Second - func validatorAtHeight(h int64) *types.Validator { - lastBlockHeight, vals := getValidatorsWithTimeout( - consensusState, - consensusTimeout, - ) - - if lastBlockHeight == -1 { - return nil - } - privValAddress := pubKey.Address() // If we're still at height h, search in the current validator set. + lastBlockHeight, vals := consensusState.GetValidators() if lastBlockHeight == h { for _, val := range vals { if bytes.Equal(val.Address, privValAddress) { @@ -144,32 +134,3 @@ func validatorAtHeight(h int64) *types.Validator { return nil } - -type validatorRetriever interface { - GetValidators() (int64, []*types.Validator) -} - -// NOTE: Consensus might halt, but we still need to process RPC requests (at -// least for endpoints whole output does not depend on consensus state). -func getValidatorsWithTimeout( - vr validatorRetriever, - t time.Duration, -) (int64, []*types.Validator) { - resultCh := make(chan struct { - lastBlockHeight int64 - vals []*types.Validator - }) - go func() { - h, v := vr.GetValidators() - resultCh <- struct { - lastBlockHeight int64 - vals []*types.Validator - }{h, v} - }() - select { - case res := <-resultCh: - return res.lastBlockHeight, res.vals - case <-time.After(t): - return -1, []*types.Validator{} - } -} diff --git a/rpc/core/status_test.go b/rpc/core/status_test.go deleted file mode 100644 index e44ffed0..00000000 --- a/rpc/core/status_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package core - -import ( - "testing" - "time" - - "github.com/tendermint/tendermint/types" -) - -func TestGetValidatorsWithTimeout(t *testing.T) { - height, vs := getValidatorsWithTimeout( - testValidatorReceiver{}, - time.Millisecond, - ) - - if height != -1 { - t.Errorf("expected negative height") - } - - if len(vs) != 0 { - t.Errorf("expected no validators") - } -} - -type testValidatorReceiver struct{} - -func (tr testValidatorReceiver) GetValidators() (int64, []*types.Validator) { - vs := []*types.Validator{} - - for i := 0; i < 3; i++ { - v, _ := types.RandValidator(true, 10) - - vs = append(vs, v) - } - - time.Sleep(time.Millisecond) - - return 10, vs -} diff --git a/rpc/core/types/wire.go b/rpc/core/types/wire.go index d49b977e..ef1fa800 100644 --- a/rpc/core/types/wire.go +++ b/rpc/core/types/wire.go @@ -2,12 +2,10 @@ package core_types import ( "github.com/tendermint/go-amino" - cryptoAmino "github.com/tendermint/tendermint/crypto/encoding/amino" "github.com/tendermint/tendermint/types" ) func RegisterAmino(cdc *amino.Codec) { types.RegisterEventDatas(cdc) - types.RegisterEvidences(cdc) - cryptoAmino.RegisterAmino(cdc) + types.RegisterBlockAmino(cdc) } diff --git a/rpc/test/helpers.go b/rpc/test/helpers.go index 91591181..7e0cba0e 100644 --- a/rpc/test/helpers.go +++ b/rpc/test/helpers.go @@ -123,7 +123,7 @@ func NewTendermint(app abci.Application) *nm.Node { node, err := nm.NewNode(config, pv, papp, nm.DefaultGenesisDocProviderFunc(config), nm.DefaultDBProvider, - nm.DefaultMetricsProvider, + nm.DefaultMetricsProvider(config.Instrumentation), logger) if err != nil { panic(err) diff --git a/state/execution.go b/state/execution.go index abecb138..54e5c950 100644 --- a/state/execution.go +++ b/state/execution.go @@ -188,9 +188,12 @@ func execBlockOnProxyApp(logger log.Logger, proxyAppConn proxy.AppConnConsensus, // Begin block. _, err := proxyAppConn.BeginBlockSync(abci.RequestBeginBlock{ - Hash: block.Hash(), - Header: types.TM2PB.Header(&block.Header), - Validators: signVals, + Hash: block.Hash(), + Header: types.TM2PB.Header(&block.Header), + LastCommitInfo: abci.LastCommitInfo{ + CommitRound: int32(block.LastCommit.Round()), + Validators: signVals, + }, ByzantineValidators: byzVals, }) if err != nil { @@ -207,7 +210,7 @@ func execBlockOnProxyApp(logger log.Logger, proxyAppConn proxy.AppConnConsensus, } // End block. - abciResponses.EndBlock, err = proxyAppConn.EndBlockSync(abci.RequestEndBlock{block.Height}) + abciResponses.EndBlock, err = proxyAppConn.EndBlockSync(abci.RequestEndBlock{Height: block.Height}) if err != nil { logger.Error("Error in proxyAppConn.EndBlock", "err", err) return nil, err @@ -245,7 +248,7 @@ func getBeginBlockValidatorInfo(block *types.Block, lastValSet *types.ValidatorS vote = block.LastCommit.Precommits[i] } val := abci.SigningValidator{ - Validator: types.TM2PB.Validator(val), + Validator: types.TM2PB.ValidatorWithoutPubKey(val), SignedLastBlock: vote != nil, } signVals[i] = val diff --git a/state/execution_test.go b/state/execution_test.go index 81510fb9..53c5c882 100644 --- a/state/execution_test.go +++ b/state/execution_test.go @@ -79,7 +79,7 @@ func TestBeginBlockValidators(t *testing.T) { lastCommit := &types.Commit{BlockID: prevBlockID, Precommits: tc.lastCommitPrecommits} // block for height 2 - block, _ := state.MakeBlock(2, makeTxs(2), lastCommit) + block, _ := state.MakeBlock(2, makeTxs(2), lastCommit, nil) _, err = ExecCommitBlock(proxyApp.Consensus(), block, log.TestingLogger(), state.Validators, stateDB) require.Nil(t, err, tc.desc) @@ -138,7 +138,7 @@ func TestBeginBlockByzantineValidators(t *testing.T) { lastCommit := &types.Commit{BlockID: prevBlockID, Precommits: votes} for _, tc := range testCases { - block, _ := state.MakeBlock(10, makeTxs(2), lastCommit) + block, _ := state.MakeBlock(10, makeTxs(2), lastCommit, nil) block.Time = now block.Evidence.Evidence = tc.evidence _, err = ExecCommitBlock(proxyApp.Consensus(), block, log.TestingLogger(), state.Validators, stateDB) @@ -168,7 +168,7 @@ func TestUpdateValidators(t *testing.T) { "adding a validator is OK", types.NewValidatorSet([]*types.Validator{val1}), - []abci.Validator{{[]byte{}, types.TM2PB.PubKey(pubkey2), 20}}, + []abci.Validator{{Address: []byte{}, PubKey: types.TM2PB.PubKey(pubkey2), Power: 20}}, types.NewValidatorSet([]*types.Validator{val1, val2}), false, @@ -177,7 +177,7 @@ func TestUpdateValidators(t *testing.T) { "updating a validator is OK", types.NewValidatorSet([]*types.Validator{val1}), - []abci.Validator{{[]byte{}, types.TM2PB.PubKey(pubkey1), 20}}, + []abci.Validator{{Address: []byte{}, PubKey: types.TM2PB.PubKey(pubkey1), Power: 20}}, types.NewValidatorSet([]*types.Validator{types.NewValidator(pubkey1, 20)}), false, @@ -186,7 +186,7 @@ func TestUpdateValidators(t *testing.T) { "removing a validator is OK", types.NewValidatorSet([]*types.Validator{val1, val2}), - []abci.Validator{{[]byte{}, types.TM2PB.PubKey(pubkey2), 0}}, + []abci.Validator{{Address: []byte{}, PubKey: types.TM2PB.PubKey(pubkey2), Power: 0}}, types.NewValidatorSet([]*types.Validator{val1}), false, @@ -196,7 +196,7 @@ func TestUpdateValidators(t *testing.T) { "removing a non-existing validator results in error", types.NewValidatorSet([]*types.Validator{val1}), - []abci.Validator{{[]byte{}, types.TM2PB.PubKey(pubkey2), 0}}, + []abci.Validator{{Address: []byte{}, PubKey: types.TM2PB.PubKey(pubkey2), Power: 0}}, types.NewValidatorSet([]*types.Validator{val1}), true, @@ -206,7 +206,7 @@ func TestUpdateValidators(t *testing.T) { "adding a validator with negative power results in error", types.NewValidatorSet([]*types.Validator{val1}), - []abci.Validator{{[]byte{}, types.TM2PB.PubKey(pubkey2), -100}}, + []abci.Validator{{Address: []byte{}, PubKey: types.TM2PB.PubKey(pubkey2), Power: -100}}, types.NewValidatorSet([]*types.Validator{val1}), true, @@ -262,14 +262,14 @@ func state(nVals, height int) (State, dbm.DB) { SaveState(stateDB, s) for i := 1; i < height; i++ { - s.LastBlockHeight += 1 + s.LastBlockHeight++ SaveState(stateDB, s) } return s, stateDB } func makeBlock(state State, height int64) *types.Block { - block, _ := state.MakeBlock(height, makeTxs(state.LastBlockHeight), new(types.Commit)) + block, _ := state.MakeBlock(height, makeTxs(state.LastBlockHeight), new(types.Commit), nil) return block } @@ -293,7 +293,7 @@ func (app *testApp) Info(req abci.RequestInfo) (resInfo abci.ResponseInfo) { } func (app *testApp) BeginBlock(req abci.RequestBeginBlock) abci.ResponseBeginBlock { - app.Validators = req.Validators + app.Validators = req.LastCommitInfo.Validators app.ByzantineValidators = req.ByzantineValidators return abci.ResponseBeginBlock{} } diff --git a/state/state.go b/state/state.go index 0891f837..8a813056 100644 --- a/state/state.go +++ b/state/state.go @@ -98,19 +98,27 @@ func (state State) IsEmpty() bool { //------------------------------------------------------------------------ // Create a block from the latest state -// MakeBlock builds a block with the given txs and commit from the current state. -func (state State) MakeBlock(height int64, txs []types.Tx, commit *types.Commit) (*types.Block, *types.PartSet) { - // Build base block. - block := types.MakeBlock(height, txs, commit) +// MakeBlock builds a block from the current state with the given txs, commit, and evidence. +func (state State) MakeBlock( + height int64, + txs []types.Tx, + commit *types.Commit, + evidence []types.Evidence, +) (*types.Block, *types.PartSet) { - // Fill header with state data. + // Build base block with block data. + block := types.MakeBlock(height, txs, commit, evidence) + + // Fill rest of header with state data. block.ChainID = state.ChainID - block.TotalTxs = state.LastBlockTotalTx + block.NumTxs + block.LastBlockID = state.LastBlockID + block.TotalTxs = state.LastBlockTotalTx + block.NumTxs + block.ValidatorsHash = state.Validators.Hash() block.NextValidatorsHash = state.NextValidators.Hash() - block.AppHash = state.AppHash block.ConsensusHash = state.ConsensusParams.Hash() + block.AppHash = state.AppHash block.LastResultsHash = state.LastResultsHash return block, block.MakePartSet(state.ConsensusParams.BlockGossip.BlockPartSizeBytes) diff --git a/state/txindex/kv/kv_test.go b/state/txindex/kv/kv_test.go index 1272f4a7..c32c827d 100644 --- a/state/txindex/kv/kv_test.go +++ b/state/txindex/kv/kv_test.go @@ -185,7 +185,6 @@ func txResultWithTags(tags []cmn.KVPair) *types.TxResult { Code: abci.CodeTypeOK, Log: "", Tags: tags, - Fee: cmn.KI64Pair{Key: nil, Value: 0}, }, } } @@ -201,7 +200,6 @@ func benchmarkTxIndex(txsCount int64, b *testing.B) { Code: abci.CodeTypeOK, Log: "", Tags: []cmn.KVPair{}, - Fee: cmn.KI64Pair{Key: []uint8{}, Value: 0}, }, } diff --git a/test/docker/Dockerfile b/test/docker/Dockerfile index e2fc3da1..6bb320be 100644 --- a/test/docker/Dockerfile +++ b/test/docker/Dockerfile @@ -13,11 +13,11 @@ ENV REPO $GOPATH/src/github.com/tendermint/tendermint ENV GOBIN $GOPATH/bin WORKDIR $REPO -# Install the vendored dependencies before copying code +# Copy in the code +COPY . $REPO + +# Install the vendored dependencies # docker caching prevents reinstall on code change! -ADD Gopkg.toml Gopkg.toml -ADD Gopkg.lock Gopkg.lock -ADD Makefile Makefile RUN make get_tools RUN make get_vendor_deps diff --git a/tools/build/LICENSE b/tools/build/LICENSE deleted file mode 100644 index bb66bb35..00000000 --- a/tools/build/LICENSE +++ /dev/null @@ -1,204 +0,0 @@ -Tendermint Core -License: Apache2.0 - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 All in Bits, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tools/mintnet-kubernetes/LICENSE b/tools/mintnet-kubernetes/LICENSE deleted file mode 100644 index 64a33ddf..00000000 --- a/tools/mintnet-kubernetes/LICENSE +++ /dev/null @@ -1,192 +0,0 @@ -Copyright (C) 2017 Tendermint - - - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tools/mintnet-kubernetes/README.rst b/tools/mintnet-kubernetes/README.rst index 9cfdbb8e..edf5e81e 100644 --- a/tools/mintnet-kubernetes/README.rst +++ b/tools/mintnet-kubernetes/README.rst @@ -52,7 +52,7 @@ then query the Tendermint app logs from the first pod: ``kubectl logs -c tm -f tm-0`` -finally, use our `Rest API <../specification/rpc.html>`__ to fetch the status of the second pod's Tendermint app. +finally, use our `Rest API `__ to fetch the status of the second pod's Tendermint app. Note we are using ``kubectl exec`` because pods are not exposed (and should not be) to the outer network: diff --git a/tools/tm-bench/LICENSE b/tools/tm-bench/LICENSE deleted file mode 100644 index f4891396..00000000 --- a/tools/tm-bench/LICENSE +++ /dev/null @@ -1,204 +0,0 @@ -Tendermint Bench -Copyright 2017 Tendermint - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tools/tm-bench/Makefile b/tools/tm-bench/Makefile index 2d427dbc..79aaf0c9 100644 --- a/tools/tm-bench/Makefile +++ b/tools/tm-bench/Makefile @@ -15,7 +15,7 @@ install: test: @go test -race -build-all: check_tools +build-all: rm -rf ./dist gox -verbose \ -ldflags "-s -w" \ @@ -47,4 +47,4 @@ clean: # To avoid unintended conflicts with file names, always add to .PHONY # unless there is a reason not to. # https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html -.PHONY: check check_tools get_tools update_tools get_vendor_deps build install test build-all dist fmt metalinter metalinter_all build-docker clean +.PHONY: build install test build-all dist build-docker clean diff --git a/tools/tm-monitor/LICENSE b/tools/tm-monitor/LICENSE deleted file mode 100644 index 20728d31..00000000 --- a/tools/tm-monitor/LICENSE +++ /dev/null @@ -1,204 +0,0 @@ -Tendermint Monitor -Copyright 2017 Tendermint - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/tools/tm-monitor/Makefile b/tools/tm-monitor/Makefile index 3371a0c1..077d60b9 100644 --- a/tools/tm-monitor/Makefile +++ b/tools/tm-monitor/Makefile @@ -1,36 +1,7 @@ DIST_DIRS := find * -type d -exec VERSION := $(shell perl -ne '/^var version.*"([^"]+)".*$$/ && print "v$$1\n"' main.go) -GOTOOLS = \ - github.com/mitchellh/gox \ - github.com/golang/dep/cmd/dep \ - gopkg.in/alecthomas/gometalinter.v2 -PACKAGES=$(shell go list ./... | grep -v '/vendor/') -all: check get_vendor_deps build test install metalinter - -check: check_tools - -######################################## -### Tools & dependencies - -check_tools: - @# https://stackoverflow.com/a/25668869 - @echo "Found tools: $(foreach tool,$(GOTOOLS_CHECK),\ - $(if $(shell which $(tool)),$(tool),$(error "No $(tool) in PATH")))" - -get_tools: - @echo "--> Installing tools" - go get -u -v $(GOTOOLS) - @gometalinter.v2 --install - -update_tools: - @echo "--> Updating tools" - @go get -u $(GOTOOLS) - -get_vendor_deps: - @rm -rf vendor/ - @echo "--> Running dep ensure" - @dep ensure +all: build test install ######################################## ### Build @@ -44,7 +15,7 @@ install: test: @go test -race $(PACKAGES) -build-all: check_tools +build-all: rm -rf ./dist gox -verbose \ -ldflags "-s -w" \ @@ -72,45 +43,7 @@ clean: rm -f ./tm-monitor rm -rf ./dist -######################################## -### Formatting, linting, and vetting - -fmt: - @go fmt ./... - -metalinter: - @echo "==> Running linter" - gometalinter.v2 --vendor --deadline=600s --disable-all \ - --enable=maligned \ - --enable=deadcode \ - --enable=goconst \ - --enable=goimports \ - --enable=gosimple \ - --enable=ineffassign \ - --enable=megacheck \ - --enable=misspell \ - --enable=staticcheck \ - --enable=safesql \ - --enable=structcheck \ - --enable=unconvert \ - --enable=unused \ - --enable=varcheck \ - --enable=vetshadow \ - ./... - #--enable=gas \ - #--enable=dupl \ - #--enable=errcheck \ - #--enable=gocyclo \ - #--enable=golint \ <== comments on anything exported - #--enable=gotype \ - #--enable=interfacer \ - #--enable=unparam \ - #--enable=vet \ - -metalinter_all: - gometalinter.v2 --vendor --deadline=600s --enable-all --disable=lll ./... - # To avoid unintended conflicts with file names, always add to .PHONY # unless there is a reason not to. # https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html -.PHONY: check check_tools get_tools update_tools get_vendor_deps build install test build-all dist fmt metalinter metalinter_all build-docker clean +.PHONY: build install test build-all dist build-docker clean diff --git a/types/block.go b/types/block.go index c112ee50..fe3a2bbc 100644 --- a/types/block.go +++ b/types/block.go @@ -25,7 +25,7 @@ type Block struct { // MakeBlock returns a new block with an empty header, except what can be computed from itself. // It populates the same set of fields validated by ValidateBasic -func MakeBlock(height int64, txs []Tx, commit *Commit) *Block { +func MakeBlock(height int64, txs []Tx, commit *Commit, evidence []Evidence) *Block { block := &Block{ Header: Header{ Height: height, @@ -35,20 +35,13 @@ func MakeBlock(height int64, txs []Tx, commit *Commit) *Block { Data: Data{ Txs: txs, }, + Evidence: EvidenceData{Evidence: evidence}, LastCommit: commit, } block.fillHeader() return block } -// AddEvidence appends the given evidence to the block -func (b *Block) AddEvidence(evidence []Evidence) { - if b == nil { - return - } - b.Evidence.Evidence = append(b.Evidence.Evidence, evidence...) -} - // ValidateBasic performs basic validation that doesn't involve state data. // It checks the internal consistency of the block. func (b *Block) ValidateBasic() error { diff --git a/types/block_test.go b/types/block_test.go index 1d27a774..50695c84 100644 --- a/types/block_test.go +++ b/types/block_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - crypto "github.com/tendermint/tendermint/crypto" + "github.com/tendermint/tendermint/crypto" cmn "github.com/tendermint/tendermint/libs/common" ) @@ -19,11 +19,13 @@ func TestBlockAddEvidence(t *testing.T) { commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals) require.NoError(t, err) - block := MakeBlock(h, txs, commit) - require.NotNil(t, block) - ev := NewMockGoodEvidence(h, 0, valSet.Validators[0].Address) - block.AddEvidence([]Evidence{ev}) + evList := []Evidence{ev} + + block := MakeBlock(h, txs, commit, evList) + require.NotNil(t, block) + require.Equal(t, 1, len(block.Evidence.Evidence)) + require.NotNil(t, block.EvidenceHash) } func TestBlockValidateBasic(t *testing.T) { @@ -33,11 +35,14 @@ func TestBlockValidateBasic(t *testing.T) { lastID := makeBlockIDRandom() h := int64(3) - voteSet, _, vals := randVoteSet(h-1, 1, VoteTypePrecommit, 10, 1) + voteSet, valSet, vals := randVoteSet(h-1, 1, VoteTypePrecommit, 10, 1) commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals) require.NoError(t, err) - block := MakeBlock(h, txs, commit) + ev := NewMockGoodEvidence(h, 0, valSet.Validators[0].Address) + evList := []Evidence{ev} + + block := MakeBlock(h, txs, commit, evList) require.NotNil(t, block) // proper block must pass @@ -45,39 +50,39 @@ func TestBlockValidateBasic(t *testing.T) { require.NoError(t, err) // tamper with NumTxs - block = MakeBlock(h, txs, commit) + block = MakeBlock(h, txs, commit, evList) block.NumTxs++ err = block.ValidateBasic() require.Error(t, err) // remove 1/2 the commits - block = MakeBlock(h, txs, commit) + block = MakeBlock(h, txs, commit, evList) block.LastCommit.Precommits = commit.Precommits[:commit.Size()/2] block.LastCommit.hash = nil // clear hash or change wont be noticed err = block.ValidateBasic() require.Error(t, err) // tamper with LastCommitHash - block = MakeBlock(h, txs, commit) + block = MakeBlock(h, txs, commit, evList) block.LastCommitHash = []byte("something else") err = block.ValidateBasic() require.Error(t, err) // tamper with data - block = MakeBlock(h, txs, commit) + block = MakeBlock(h, txs, commit, evList) block.Data.Txs[0] = Tx("something else") block.Data.hash = nil // clear hash or change wont be noticed err = block.ValidateBasic() require.Error(t, err) // tamper with DataHash - block = MakeBlock(h, txs, commit) + block = MakeBlock(h, txs, commit, evList) block.DataHash = cmn.RandBytes(len(block.DataHash)) err = block.ValidateBasic() require.Error(t, err) // tamper with evidence - block = MakeBlock(h, txs, commit) + block = MakeBlock(h, txs, commit, evList) block.EvidenceHash = []byte("something else") err = block.ValidateBasic() require.Error(t, err) @@ -85,17 +90,36 @@ func TestBlockValidateBasic(t *testing.T) { func TestBlockHash(t *testing.T) { assert.Nil(t, (*Block)(nil).Hash()) - assert.Nil(t, MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil).Hash()) + assert.Nil(t, MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil, nil).Hash()) } func TestBlockMakePartSet(t *testing.T) { assert.Nil(t, (*Block)(nil).MakePartSet(2)) - partSet := MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil).MakePartSet(1024) + partSet := MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil, nil).MakePartSet(1024) assert.NotNil(t, partSet) assert.Equal(t, 1, partSet.Total()) } +func TestBlockMakePartSetWithEvidence(t *testing.T) { + assert.Nil(t, (*Block)(nil).MakePartSet(2)) + + txs := []Tx{Tx("foo"), Tx("bar")} + lastID := makeBlockIDRandom() + h := int64(3) + + voteSet, valSet, vals := randVoteSet(h-1, 1, VoteTypePrecommit, 10, 1) + commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals) + require.NoError(t, err) + + ev := NewMockGoodEvidence(h, 0, valSet.Validators[0].Address) + evList := []Evidence{ev} + + partSet := MakeBlock(h, txs, commit, evList).MakePartSet(1024) + assert.NotNil(t, partSet) + assert.Equal(t, 3, partSet.Total()) +} + func TestBlockHashesTo(t *testing.T) { assert.False(t, (*Block)(nil).HashesTo(nil)) @@ -105,7 +129,10 @@ func TestBlockHashesTo(t *testing.T) { commit, err := MakeCommit(lastID, h-1, 1, voteSet, vals) require.NoError(t, err) - block := MakeBlock(h, []Tx{Tx("Hello World")}, commit) + ev := NewMockGoodEvidence(h, 0, valSet.Validators[0].Address) + evList := []Evidence{ev} + + block := MakeBlock(h, []Tx{Tx("Hello World")}, commit, evList) block.ValidatorsHash = valSet.Hash() assert.False(t, block.HashesTo([]byte{})) assert.False(t, block.HashesTo([]byte("something else"))) @@ -113,7 +140,7 @@ func TestBlockHashesTo(t *testing.T) { } func TestBlockSize(t *testing.T) { - size := MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil).Size() + size := MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil, nil).Size() if size <= 0 { t.Fatal("Size of the block is zero or negative") } @@ -124,7 +151,7 @@ func TestBlockString(t *testing.T) { assert.Equal(t, "nil-Block", (*Block)(nil).StringIndented("")) assert.Equal(t, "nil-Block", (*Block)(nil).StringShort()) - block := MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil) + block := MakeBlock(int64(3), []Tx{Tx("Hello World")}, nil, nil) assert.NotEqual(t, "nil-Block", block.String()) assert.NotEqual(t, "nil-Block", block.StringIndented("")) assert.NotEqual(t, "nil-Block", block.StringShort()) diff --git a/types/event_bus_test.go b/types/event_bus_test.go index 768b5b32..907c69d3 100644 --- a/types/event_bus_test.go +++ b/types/event_bus_test.go @@ -22,7 +22,7 @@ func TestEventBusPublishEventTx(t *testing.T) { defer eventBus.Stop() tx := Tx("foo") - result := abci.ResponseDeliverTx{Data: []byte("bar"), Tags: []cmn.KVPair{{[]byte("baz"), []byte("1")}}, Fee: cmn.KI64Pair{Key: []uint8{}, Value: 0}} + result := abci.ResponseDeliverTx{Data: []byte("bar"), Tags: []cmn.KVPair{{[]byte("baz"), []byte("1")}}} txEventsCh := make(chan interface{}) diff --git a/types/evidence.go b/types/evidence.go index 6313f43a..92675868 100644 --- a/types/evidence.go +++ b/types/evidence.go @@ -41,6 +41,10 @@ type Evidence interface { func RegisterEvidences(cdc *amino.Codec) { cdc.RegisterInterface((*Evidence)(nil), nil) cdc.RegisterConcrete(&DuplicateVoteEvidence{}, "tendermint/DuplicateVoteEvidence", nil) + + // mocks + cdc.RegisterConcrete(MockGoodEvidence{}, "tendermint/MockGoodEvidence", nil) + cdc.RegisterConcrete(MockBadEvidence{}, "tendermint/MockBadEvidence", nil) } //------------------------------------------- diff --git a/types/protobuf.go b/types/protobuf.go index 0e1e446d..01d4ebf0 100644 --- a/types/protobuf.go +++ b/types/protobuf.go @@ -38,7 +38,7 @@ func (tm2pb) Header(header *Header) abci.Header { ChainID: header.ChainID, Height: header.Height, - Time: header.Time.Unix(), + Time: header.Time, NumTxs: int32(header.NumTxs), // XXX: overflow TotalTxs: header.TotalTxs, @@ -50,6 +50,13 @@ func (tm2pb) Header(header *Header) abci.Header { } } +func (tm2pb) ValidatorWithoutPubKey(val *Validator) abci.Validator { + return abci.Validator{ + Address: val.PubKey.Address(), + Power: val.VotingPower, + } +} + // XXX: panics on unknown pubkey type func (tm2pb) Validator(val *Validator) abci.Validator { return abci.Validator{ @@ -129,9 +136,9 @@ func (tm2pb) Evidence(ev Evidence, valSet *ValidatorSet, evTime time.Time) abci. return abci.Evidence{ Type: evType, - Validator: TM2PB.Validator(val), + Validator: TM2PB.ValidatorWithoutPubKey(val), Height: ev.Height(), - Time: evTime.Unix(), + Time: evTime, TotalVotingPower: valSet.TotalVotingPower(), } } diff --git a/types/protobuf_test.go b/types/protobuf_test.go index 6ee79b90..8711974e 100644 --- a/types/protobuf_test.go +++ b/types/protobuf_test.go @@ -102,6 +102,9 @@ func TestABCIEvidence(t *testing.T) { ) assert.Equal(t, "duplicate/vote", abciEv.Type) + + // test we do not send pubkeys + assert.Empty(t, abciEv.Validator.PubKey) } type pubKeyEddie struct{} @@ -120,3 +123,21 @@ func TestABCIValidatorFromPubKeyAndPower(t *testing.T) { assert.Panics(t, func() { TM2PB.ValidatorFromPubKeyAndPower(nil, 10) }) assert.Panics(t, func() { TM2PB.ValidatorFromPubKeyAndPower(pubKeyEddie{}, 10) }) } + +func TestABCIValidatorWithoutPubKey(t *testing.T) { + pkEd := ed25519.GenPrivKey().PubKey() + + abciVal := TM2PB.ValidatorWithoutPubKey(&Validator{ + Address: pkEd.Address(), + PubKey: pkEd, + VotingPower: 10, + }) + + // pubkey must be nil + tmValExpected := abci.Validator{ + Address: pkEd.Address(), + Power: 10, + } + + assert.Equal(t, tmValExpected, abciVal) +} diff --git a/types/wire.go b/types/wire.go index 9221de96..c5608998 100644 --- a/types/wire.go +++ b/types/wire.go @@ -2,11 +2,16 @@ package types import ( "github.com/tendermint/go-amino" - cryptoAmino "github.com/tendermint/tendermint/crypto/encoding/amino" + "github.com/tendermint/tendermint/crypto/encoding/amino" ) var cdc = amino.NewCodec() func init() { - cryptoAmino.RegisterAmino(cdc) + RegisterBlockAmino(cdc) +} + +func RegisterBlockAmino(cdc *amino.Codec) { + cryptoAmino.RegisterAmino(cdc) + RegisterEvidences(cdc) } diff --git a/version/version.go b/version/version.go index 70626437..85b1f191 100644 --- a/version/version.go +++ b/version/version.go @@ -4,13 +4,13 @@ package version const ( Maj = "0" Min = "22" - Fix = "5" + Fix = "8" ) var ( // Version is the current version of Tendermint // Must be a string because scripts like dist.sh read this file. - Version = "0.22.5" + Version = "0.22.8" // GitCommit is the current HEAD set using ldflags. GitCommit string