Merge branch 'develop' into svaishnavy/cosmos-sdk-cli
This commit is contained in:
commit
8e26eb73a5
|
@ -62,7 +62,7 @@ jobs:
|
||||||
name: Get metalinter
|
name: Get metalinter
|
||||||
command: |
|
command: |
|
||||||
export PATH="$GOBIN:$PATH"
|
export PATH="$GOBIN:$PATH"
|
||||||
make get_tools
|
make get_dev_tools
|
||||||
- run:
|
- run:
|
||||||
name: Lint source
|
name: Lint source
|
||||||
command: |
|
command: |
|
||||||
|
|
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -1,19 +1,5 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## PENDING
|
|
||||||
|
|
||||||
BREAKING CHANGES
|
|
||||||
|
|
||||||
FEATURES
|
|
||||||
* [lcd] Can now query governance proposals by ProposalStatus
|
|
||||||
* [cosmos-sdk-cli] Added support for cosmos-sdk-cli under cosmos-sdk/cmd
|
|
||||||
This allows SDK users to init a new project repository with a single command.
|
|
||||||
|
|
||||||
IMPROVEMENTS
|
|
||||||
* [baseapp] Allow any alphanumeric character in route
|
|
||||||
|
|
||||||
BUG FIXES
|
|
||||||
|
|
||||||
## 0.22.0
|
## 0.22.0
|
||||||
|
|
||||||
*July 16th, 2018*
|
*July 16th, 2018*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
Thank you for considering making contributions to Cosmos-SDK and related repositories! Start by taking a look at this [coding repo](https://github.com/tendermint/coding) for overall information on repository workflow and standards.
|
Thank you for considering making contributions to Cosmos-SDK and related repositories! Start by taking a look at this [coding repo](https://github.com/tendermint/coding) for overall information on repository workflow and standards. Note, we use `make get_dev_tools` and `make update_dev_tools` for installing the linting tools.
|
||||||
|
|
||||||
Please follow standard github best practices: fork the repo, branch from the tip of develop, make some commits, and submit a pull request to develop. See the [open issues](https://github.com/cosmos/cosmos-sdk/issues) for things we need help with!
|
Please follow standard github best practices: fork the repo, branch from the tip of develop, make some commits, and submit a pull request to develop. See the [open issues](https://github.com/cosmos/cosmos-sdk/issues) for things we need help with!
|
||||||
|
|
||||||
|
@ -67,6 +67,29 @@ tested by circle using `go test -v -race ./...`. If not, they will need a
|
||||||
`circle.yml`. Ideally, every repo has a `Makefile` that defines `make test` and
|
`circle.yml`. Ideally, every repo has a `Makefile` that defines `make test` and
|
||||||
includes its continuous integration status using a badge in the `README.md`.
|
includes its continuous integration status using a badge in the `README.md`.
|
||||||
|
|
||||||
|
We expect tests to use `require` or `assert` rather than `t.Skip` or `t.Fail`,
|
||||||
|
unless there is a reason to do otherwise.
|
||||||
|
When testing a function under a variety of different inputs, we prefer to use
|
||||||
|
[table driven tests](https://github.com/golang/go/wiki/TableDrivenTests).
|
||||||
|
Table driven test error messages should follow the following format
|
||||||
|
`<desc>, tc #<index>, i #<index>`.
|
||||||
|
`<desc>` is an optional short description of whats failing, `tc` is the
|
||||||
|
index within the table of the testcase that is failing, and `i` is when there
|
||||||
|
is a loop, exactly which iteration of the loop failed.
|
||||||
|
The idea is you should be able to see the
|
||||||
|
error message and figure out exactly what failed.
|
||||||
|
Here is an example check:
|
||||||
|
|
||||||
|
```
|
||||||
|
<some table>
|
||||||
|
for tcIndex, tc := range cases {
|
||||||
|
<some code>
|
||||||
|
for i := 0; i < tc.numTxsToTest; i++ {
|
||||||
|
<some code>
|
||||||
|
require.Equal(t, expectedTx[:32], calculatedTx[:32],
|
||||||
|
"First 32 bytes of the txs differed. tc #%d, i #%d", tcIndex, i)
|
||||||
|
```
|
||||||
|
|
||||||
## Branching Model and Release
|
## Branching Model and Release
|
||||||
|
|
||||||
User-facing repos should adhere to the branching model: http://nvie.com/posts/a-successful-git-branching-model/.
|
User-facing repos should adhere to the branching model: http://nvie.com/posts/a-successful-git-branching-model/.
|
||||||
|
|
|
@ -2,57 +2,76 @@
|
||||||
|
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:09a7f74eb6bb3c0f14d8926610c87f569c5cff68e978d30e9a3540aeb626fdf0"
|
||||||
name = "github.com/bartekn/go-bip39"
|
name = "github.com/bartekn/go-bip39"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "a05967ea095d81c8fe4833776774cfaff8e5036c"
|
revision = "a05967ea095d81c8fe4833776774cfaff8e5036c"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d"
|
||||||
name = "github.com/beorn7/perks"
|
name = "github.com/beorn7/perks"
|
||||||
packages = ["quantile"]
|
packages = ["quantile"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
|
revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:1343a2963481a305ca4d051e84bc2abd16b601ee22ed324f8d605de1adb291b0"
|
||||||
name = "github.com/bgentry/speakeasy"
|
name = "github.com/bgentry/speakeasy"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "4aabc24848ce5fd31929f7d1e4ea74d3709c14cd"
|
revision = "4aabc24848ce5fd31929f7d1e4ea74d3709c14cd"
|
||||||
version = "v0.1.0"
|
version = "v0.1.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:70f6b224a59b2fa453debffa85c77f71063d8754b90c8c4fbad5794e2c382b0f"
|
||||||
name = "github.com/brejski/hid"
|
name = "github.com/brejski/hid"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "06112dcfcc50a7e0e4fd06e17f9791e788fdaafc"
|
revision = "06112dcfcc50a7e0e4fd06e17f9791e788fdaafc"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:6aabc1566d6351115d561d038da82a4c19b46c3b6e17f4a0a2fa60260663dc79"
|
||||||
name = "github.com/btcsuite/btcd"
|
name = "github.com/btcsuite/btcd"
|
||||||
packages = ["btcec"]
|
packages = ["btcec"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "fdfc19097e7ac6b57035062056f5b7b4638b8898"
|
revision = "fdfc19097e7ac6b57035062056f5b7b4638b8898"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:386de157f7d19259a7f9c81f26ce011223ce0f090353c1152ffdf730d7d10ac2"
|
||||||
name = "github.com/btcsuite/btcutil"
|
name = "github.com/btcsuite/btcutil"
|
||||||
packages = ["bech32"]
|
packages = ["bech32"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "d4cc87b860166d00d6b5b9e0d3b3d71d6088d4d4"
|
revision = "d4cc87b860166d00d6b5b9e0d3b3d71d6088d4d4"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39"
|
||||||
name = "github.com/davecgh/go-spew"
|
name = "github.com/davecgh/go-spew"
|
||||||
packages = ["spew"]
|
packages = ["spew"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
|
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
|
||||||
version = "v1.1.0"
|
version = "v1.1.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:c7644c73a3d23741fdba8a99b1464e021a224b7e205be497271a8003a15ca41b"
|
||||||
name = "github.com/ebuchman/fail-test"
|
name = "github.com/ebuchman/fail-test"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "95f809107225be108efcf10a3509e4ea6ceef3c4"
|
revision = "95f809107225be108efcf10a3509e4ea6ceef3c4"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:abeb38ade3f32a92943e5be54f55ed6d6e3b6602761d74b4aab4c9dd45c18abd"
|
||||||
name = "github.com/fsnotify/fsnotify"
|
name = "github.com/fsnotify/fsnotify"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"
|
revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"
|
||||||
version = "v1.4.7"
|
version = "v1.4.7"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:fa30c0652956e159cdb97dcb2ef8b8db63ed668c02a5c3a40961c8f0641252fe"
|
||||||
name = "github.com/go-kit/kit"
|
name = "github.com/go-kit/kit"
|
||||||
packages = [
|
packages = [
|
||||||
"log",
|
"log",
|
||||||
|
@ -61,24 +80,30 @@
|
||||||
"metrics",
|
"metrics",
|
||||||
"metrics/discard",
|
"metrics/discard",
|
||||||
"metrics/internal/lv",
|
"metrics/internal/lv",
|
||||||
"metrics/prometheus"
|
"metrics/prometheus",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "4dc7be5d2d12881735283bcab7352178e190fc71"
|
revision = "4dc7be5d2d12881735283bcab7352178e190fc71"
|
||||||
version = "v0.6.0"
|
version = "v0.6.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:31a18dae27a29aa074515e43a443abfd2ba6deb6d69309d8d7ce789c45f34659"
|
||||||
name = "github.com/go-logfmt/logfmt"
|
name = "github.com/go-logfmt/logfmt"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5"
|
revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5"
|
||||||
version = "v0.3.0"
|
version = "v0.3.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:c4a2528ccbcabf90f9f3c464a5fc9e302d592861bbfd0b7135a7de8a943d0406"
|
||||||
name = "github.com/go-stack/stack"
|
name = "github.com/go-stack/stack"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc"
|
revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc"
|
||||||
version = "v1.7.0"
|
version = "v1.7.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:af1306bff89268721ea2550d504413c9487ebfca11e2ff8f39ae79b99a720ff5"
|
||||||
name = "github.com/gogo/protobuf"
|
name = "github.com/gogo/protobuf"
|
||||||
packages = [
|
packages = [
|
||||||
"gogoproto",
|
"gogoproto",
|
||||||
|
@ -86,49 +111,61 @@
|
||||||
"proto",
|
"proto",
|
||||||
"protoc-gen-gogo/descriptor",
|
"protoc-gen-gogo/descriptor",
|
||||||
"sortkeys",
|
"sortkeys",
|
||||||
"types"
|
"types",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "1adfc126b41513cc696b209667c8656ea7aac67c"
|
revision = "1adfc126b41513cc696b209667c8656ea7aac67c"
|
||||||
version = "v1.0.0"
|
version = "v1.0.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:cb22af0ed7c72d495d8be1106233ee553898950f15fd3f5404406d44c2e86888"
|
||||||
name = "github.com/golang/protobuf"
|
name = "github.com/golang/protobuf"
|
||||||
packages = [
|
packages = [
|
||||||
"proto",
|
"proto",
|
||||||
"ptypes",
|
"ptypes",
|
||||||
"ptypes/any",
|
"ptypes/any",
|
||||||
"ptypes/duration",
|
"ptypes/duration",
|
||||||
"ptypes/timestamp"
|
"ptypes/timestamp",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
|
revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265"
|
||||||
version = "v1.1.0"
|
version = "v1.1.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:4a0c6bb4805508a6287675fac876be2ac1182539ca8a32468d8128882e9d5009"
|
||||||
name = "github.com/golang/snappy"
|
name = "github.com/golang/snappy"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
|
revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:c79fb010be38a59d657c48c6ba1d003a8aa651fa56b579d959d74573b7dff8e1"
|
||||||
name = "github.com/gorilla/context"
|
name = "github.com/gorilla/context"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"
|
revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"
|
||||||
version = "v1.1.1"
|
version = "v1.1.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:e73f5b0152105f18bc131fba127d9949305c8693f8a762588a82a48f61756f5f"
|
||||||
name = "github.com/gorilla/mux"
|
name = "github.com/gorilla/mux"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf"
|
revision = "e3702bed27f0d39777b0b37b664b6280e8ef8fbf"
|
||||||
version = "v1.6.2"
|
version = "v1.6.2"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:43dd08a10854b2056e615d1b1d22ac94559d822e1f8b6fcc92c1a1057e85188e"
|
||||||
name = "github.com/gorilla/websocket"
|
name = "github.com/gorilla/websocket"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
|
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
|
||||||
version = "v1.2.0"
|
version = "v1.2.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:8951fe6e358876736d8fa1f3992624fdbb2dec6bc49401c1381d1ef8abbb544f"
|
||||||
name = "github.com/hashicorp/hcl"
|
name = "github.com/hashicorp/hcl"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
|
@ -139,160 +176,206 @@
|
||||||
"hcl/token",
|
"hcl/token",
|
||||||
"json/parser",
|
"json/parser",
|
||||||
"json/scanner",
|
"json/scanner",
|
||||||
"json/token"
|
"json/token",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"
|
revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be"
|
||||||
name = "github.com/inconshreveable/mousetrap"
|
name = "github.com/inconshreveable/mousetrap"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
|
revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
|
||||||
version = "v1.0"
|
version = "v1.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:39b27d1381a30421f9813967a5866fba35dc1d4df43a6eefe3b7a5444cb07214"
|
||||||
name = "github.com/jmhodges/levigo"
|
name = "github.com/jmhodges/levigo"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9"
|
revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:a64e323dc06b73892e5bb5d040ced475c4645d456038333883f58934abbf6f72"
|
||||||
name = "github.com/kr/logfmt"
|
name = "github.com/kr/logfmt"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0"
|
revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:c568d7727aa262c32bdf8a3f7db83614f7af0ed661474b24588de635c20024c7"
|
||||||
name = "github.com/magiconair/properties"
|
name = "github.com/magiconair/properties"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c2353362d570a7bfa228149c62842019201cfb71"
|
revision = "c2353362d570a7bfa228149c62842019201cfb71"
|
||||||
version = "v1.8.0"
|
version = "v1.8.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:d4d17353dbd05cb52a2a52b7fe1771883b682806f68db442b436294926bbfafb"
|
||||||
name = "github.com/mattn/go-isatty"
|
name = "github.com/mattn/go-isatty"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
|
revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
|
||||||
version = "v0.0.3"
|
version = "v0.0.3"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc"
|
||||||
name = "github.com/matttproud/golang_protobuf_extensions"
|
name = "github.com/matttproud/golang_protobuf_extensions"
|
||||||
packages = ["pbutil"]
|
packages = ["pbutil"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
|
revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
|
||||||
version = "v1.0.1"
|
version = "v1.0.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:e730597b38a4d56e2361e0b6236cb800e52c73cace2ff91396f4ff35792ddfa7"
|
||||||
name = "github.com/mitchellh/mapstructure"
|
name = "github.com/mitchellh/mapstructure"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b"
|
revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:95741de3af260a92cc5c7f3f3061e85273f5a81b5db20d4bd68da74bd521675e"
|
||||||
name = "github.com/pelletier/go-toml"
|
name = "github.com/pelletier/go-toml"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194"
|
revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194"
|
||||||
version = "v1.2.0"
|
version = "v1.2.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:40e195917a951a8bf867cd05de2a46aaf1806c50cf92eebf4c16f78cd196f747"
|
||||||
name = "github.com/pkg/errors"
|
name = "github.com/pkg/errors"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
||||||
version = "v0.8.0"
|
version = "v0.8.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
|
||||||
name = "github.com/pmezard/go-difflib"
|
name = "github.com/pmezard/go-difflib"
|
||||||
packages = ["difflib"]
|
packages = ["difflib"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
|
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
|
||||||
version = "v1.0.0"
|
version = "v1.0.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:98225904b7abff96c052b669b25788f18225a36673fba022fb93514bb9a2a64e"
|
||||||
name = "github.com/prometheus/client_golang"
|
name = "github.com/prometheus/client_golang"
|
||||||
packages = [
|
packages = [
|
||||||
"prometheus",
|
"prometheus",
|
||||||
"prometheus/promhttp"
|
"prometheus/promhttp",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "ae27198cdd90bf12cd134ad79d1366a6cf49f632"
|
revision = "ae27198cdd90bf12cd134ad79d1366a6cf49f632"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:0f37e09b3e92aaeda5991581311f8dbf38944b36a3edec61cc2d1991f527554a"
|
||||||
name = "github.com/prometheus/client_model"
|
name = "github.com/prometheus/client_model"
|
||||||
packages = ["go"]
|
packages = ["go"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f"
|
revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:4d291d51042ed9de40eef61a3c1b56e969d6e0f8aa5fd3da5e958ec66bee68e4"
|
||||||
name = "github.com/prometheus/common"
|
name = "github.com/prometheus/common"
|
||||||
packages = [
|
packages = [
|
||||||
"expfmt",
|
"expfmt",
|
||||||
"internal/bitbucket.org/ww/goautoneg",
|
"internal/bitbucket.org/ww/goautoneg",
|
||||||
"model"
|
"model",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "7600349dcfe1abd18d72d3a1770870d9800a7801"
|
revision = "7600349dcfe1abd18d72d3a1770870d9800a7801"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:55d7449d6987dabf272b4e81b2f9c449f05b17415c939b68d1e82f57e3374b7f"
|
||||||
name = "github.com/prometheus/procfs"
|
name = "github.com/prometheus/procfs"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"internal/util",
|
"internal/util",
|
||||||
"nfs",
|
"nfs",
|
||||||
"xfs"
|
"xfs",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "ae68e2d4c00fed4943b5f6698d504a5fe083da8a"
|
revision = "ae68e2d4c00fed4943b5f6698d504a5fe083da8a"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:c4556a44e350b50a490544d9b06e9fba9c286c21d6c0e47f54f3a9214597298c"
|
||||||
name = "github.com/rcrowley/go-metrics"
|
name = "github.com/rcrowley/go-metrics"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "e2704e165165ec55d062f5919b4b29494e9fa790"
|
revision = "e2704e165165ec55d062f5919b4b29494e9fa790"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:37ace7f35375adec11634126944bdc45a673415e2fcc07382d03b75ec76ea94c"
|
||||||
name = "github.com/spf13/afero"
|
name = "github.com/spf13/afero"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"mem"
|
"mem",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "787d034dfe70e44075ccc060d346146ef53270ad"
|
revision = "787d034dfe70e44075ccc060d346146ef53270ad"
|
||||||
version = "v1.1.1"
|
version = "v1.1.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:516e71bed754268937f57d4ecb190e01958452336fa73dbac880894164e91c1f"
|
||||||
name = "github.com/spf13/cast"
|
name = "github.com/spf13/cast"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "8965335b8c7107321228e3e3702cab9832751bac"
|
revision = "8965335b8c7107321228e3e3702cab9832751bac"
|
||||||
version = "v1.2.0"
|
version = "v1.2.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:627ab2f549a6a55c44f46fa24a4307f4d0da81bfc7934ed0473bf38b24051d26"
|
||||||
name = "github.com/spf13/cobra"
|
name = "github.com/spf13/cobra"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "7b2c5ac9fc04fc5efafb60700713d4fa609b777b"
|
revision = "7b2c5ac9fc04fc5efafb60700713d4fa609b777b"
|
||||||
version = "v0.0.1"
|
version = "v0.0.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:080e5f630945ad754f4b920e60b4d3095ba0237ebf88dc462eb28002932e3805"
|
||||||
name = "github.com/spf13/jwalterweatherman"
|
name = "github.com/spf13/jwalterweatherman"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394"
|
revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:9424f440bba8f7508b69414634aef3b2b3a877e522d8a4624692412805407bb7"
|
||||||
name = "github.com/spf13/pflag"
|
name = "github.com/spf13/pflag"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "583c0c0531f06d5278b7d917446061adc344b5cd"
|
revision = "583c0c0531f06d5278b7d917446061adc344b5cd"
|
||||||
version = "v1.0.1"
|
version = "v1.0.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:f8e1a678a2571e265f4bf91a3e5e32aa6b1474a55cb0ea849750cc177b664d96"
|
||||||
name = "github.com/spf13/viper"
|
name = "github.com/spf13/viper"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "25b30aa063fc18e48662b86996252eabdcf2f0c7"
|
revision = "25b30aa063fc18e48662b86996252eabdcf2f0c7"
|
||||||
version = "v1.0.0"
|
version = "v1.0.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:73697231b93fb74a73ebd8384b68b9a60c57ea6b13c56d2425414566a72c8e6d"
|
||||||
name = "github.com/stretchr/testify"
|
name = "github.com/stretchr/testify"
|
||||||
packages = [
|
packages = [
|
||||||
"assert",
|
"assert",
|
||||||
"require"
|
"require",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
|
revision = "12b6f73e6084dad08a7c6e575284b177ecafbc71"
|
||||||
version = "v1.2.1"
|
version = "v1.2.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:922191411ad8f61bcd8018ac127589bb489712c1d1a0ab2497aca4b16de417d2"
|
||||||
name = "github.com/syndtr/goleveldb"
|
name = "github.com/syndtr/goleveldb"
|
||||||
packages = [
|
packages = [
|
||||||
"leveldb",
|
"leveldb",
|
||||||
|
@ -306,33 +389,41 @@
|
||||||
"leveldb/opt",
|
"leveldb/opt",
|
||||||
"leveldb/storage",
|
"leveldb/storage",
|
||||||
"leveldb/table",
|
"leveldb/table",
|
||||||
"leveldb/util"
|
"leveldb/util",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c4c61651e9e37fa117f53c5a906d3b63090d8445"
|
revision = "c4c61651e9e37fa117f53c5a906d3b63090d8445"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:203b409c21115233a576f99e8f13d8e07ad82b25500491f7e1cca12588fb3232"
|
||||||
name = "github.com/tendermint/ed25519"
|
name = "github.com/tendermint/ed25519"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"edwards25519",
|
"edwards25519",
|
||||||
"extra25519"
|
"extra25519",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "d8387025d2b9d158cf4efb07e7ebf814bcce2057"
|
revision = "d8387025d2b9d158cf4efb07e7ebf814bcce2057"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:e9113641c839c21d8eaeb2c907c7276af1eddeed988df8322168c56b7e06e0e1"
|
||||||
name = "github.com/tendermint/go-amino"
|
name = "github.com/tendermint/go-amino"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "2106ca61d91029c931fd54968c2bb02dc96b1412"
|
revision = "2106ca61d91029c931fd54968c2bb02dc96b1412"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:d4a15d404afbf591e8be16fcda7f5ac87948d5c7531f9d909fd84cc730ab16e2"
|
||||||
name = "github.com/tendermint/iavl"
|
name = "github.com/tendermint/iavl"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "35f66e53d9b01e83b30de68b931f54b2477a94c9"
|
revision = "35f66e53d9b01e83b30de68b931f54b2477a94c9"
|
||||||
version = "v0.9.2"
|
version = "v0.9.2"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:5f41a7655812fa5901c71735dc8845f33184e94a2020c770f60a1a80ed228cb3"
|
||||||
name = "github.com/tendermint/tendermint"
|
name = "github.com/tendermint/tendermint"
|
||||||
packages = [
|
packages = [
|
||||||
"abci/client",
|
"abci/client",
|
||||||
|
@ -387,18 +478,22 @@
|
||||||
"state/txindex/kv",
|
"state/txindex/kv",
|
||||||
"state/txindex/null",
|
"state/txindex/null",
|
||||||
"types",
|
"types",
|
||||||
"version"
|
"version",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "c64a3c74c870d725ba1356f75b4afadf0928c297"
|
revision = "c64a3c74c870d725ba1356f75b4afadf0928c297"
|
||||||
version = "v0.22.4"
|
version = "v0.22.4"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:5bd938386bd1f61a581bf8cd6ff2b7b2f79c542929176db4ceb44965440dae07"
|
||||||
name = "github.com/zondax/ledger-goclient"
|
name = "github.com/zondax/ledger-goclient"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "39ba4728c137c75718a21f9b4b3280fa31b9139b"
|
revision = "39ba4728c137c75718a21f9b4b3280fa31b9139b"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:e8206c1653e050116ec8c9a823a86413fc9f9ee3c2f3ae977c96d6a1747f7325"
|
||||||
name = "golang.org/x/crypto"
|
name = "golang.org/x/crypto"
|
||||||
packages = [
|
packages = [
|
||||||
"blowfish",
|
"blowfish",
|
||||||
|
@ -411,11 +506,13 @@
|
||||||
"pbkdf2",
|
"pbkdf2",
|
||||||
"poly1305",
|
"poly1305",
|
||||||
"ripemd160",
|
"ripemd160",
|
||||||
"salsa20/salsa"
|
"salsa20/salsa",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602"
|
revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:04dda8391c3e2397daf254ac68003f30141c069b228d06baec8324a5f81dc1e9"
|
||||||
name = "golang.org/x/net"
|
name = "golang.org/x/net"
|
||||||
packages = [
|
packages = [
|
||||||
"context",
|
"context",
|
||||||
|
@ -425,17 +522,21 @@
|
||||||
"idna",
|
"idna",
|
||||||
"internal/timeseries",
|
"internal/timeseries",
|
||||||
"netutil",
|
"netutil",
|
||||||
"trace"
|
"trace",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "292b43bbf7cb8d35ddf40f8d5100ef3837cced3f"
|
revision = "292b43bbf7cb8d35ddf40f8d5100ef3837cced3f"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:d773e525476aefa22ea944a5425a9bfb99819b2e67eeb9b1966454fd57522bbf"
|
||||||
name = "golang.org/x/sys"
|
name = "golang.org/x/sys"
|
||||||
packages = ["unix"]
|
packages = ["unix"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "1b2967e3c290b7c545b3db0deeda16e9be4f98a2"
|
revision = "1b2967e3c290b7c545b3db0deeda16e9be4f98a2"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:7509ba4347d1f8de6ae9be8818b0cd1abc3deeffe28aeaf4be6d4b6b5178d9ca"
|
||||||
name = "golang.org/x/text"
|
name = "golang.org/x/text"
|
||||||
packages = [
|
packages = [
|
||||||
"collate",
|
"collate",
|
||||||
|
@ -451,18 +552,22 @@
|
||||||
"unicode/bidi",
|
"unicode/bidi",
|
||||||
"unicode/cldr",
|
"unicode/cldr",
|
||||||
"unicode/norm",
|
"unicode/norm",
|
||||||
"unicode/rangetable"
|
"unicode/rangetable",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
||||||
version = "v0.3.0"
|
version = "v0.3.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
digest = "1:601e63e7d4577f907118bec825902505291918859d223bce015539e79f1160e3"
|
||||||
name = "google.golang.org/genproto"
|
name = "google.golang.org/genproto"
|
||||||
packages = ["googleapis/rpc/status"]
|
packages = ["googleapis/rpc/status"]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "e92b116572682a5b432ddd840aeaba2a559eeff1"
|
revision = "e92b116572682a5b432ddd840aeaba2a559eeff1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:4d7b5d9746840266938cdb21a40f8eba7137d9153c4ed404d6bb2a450d06f690"
|
||||||
name = "google.golang.org/grpc"
|
name = "google.golang.org/grpc"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
|
@ -487,20 +592,63 @@
|
||||||
"stats",
|
"stats",
|
||||||
"status",
|
"status",
|
||||||
"tap",
|
"tap",
|
||||||
"transport"
|
"transport",
|
||||||
]
|
]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "d11072e7ca9811b1100b80ca0269ac831f06d024"
|
revision = "d11072e7ca9811b1100b80ca0269ac831f06d024"
|
||||||
version = "v1.11.3"
|
version = "v1.11.3"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
digest = "1:342378ac4dcb378a5448dd723f0784ae519383532f5e70ade24132c4c8693202"
|
||||||
name = "gopkg.in/yaml.v2"
|
name = "gopkg.in/yaml.v2"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
pruneopts = "UT"
|
||||||
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
|
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
|
||||||
version = "v2.2.1"
|
version = "v2.2.1"
|
||||||
|
|
||||||
[solve-meta]
|
[solve-meta]
|
||||||
analyzer-name = "dep"
|
analyzer-name = "dep"
|
||||||
analyzer-version = 1
|
analyzer-version = 1
|
||||||
inputs-digest = "71e86b1f1e9ec71901c20d8532dc8477df66eff37a407322379f6a8b03e5d91b"
|
input-imports = [
|
||||||
|
"github.com/bartekn/go-bip39",
|
||||||
|
"github.com/bgentry/speakeasy",
|
||||||
|
"github.com/btcsuite/btcd/btcec",
|
||||||
|
"github.com/golang/protobuf/proto",
|
||||||
|
"github.com/gorilla/mux",
|
||||||
|
"github.com/mattn/go-isatty",
|
||||||
|
"github.com/pkg/errors",
|
||||||
|
"github.com/spf13/cobra",
|
||||||
|
"github.com/spf13/pflag",
|
||||||
|
"github.com/spf13/viper",
|
||||||
|
"github.com/stretchr/testify/assert",
|
||||||
|
"github.com/stretchr/testify/require",
|
||||||
|
"github.com/tendermint/go-amino",
|
||||||
|
"github.com/tendermint/iavl",
|
||||||
|
"github.com/tendermint/tendermint/abci/server",
|
||||||
|
"github.com/tendermint/tendermint/abci/types",
|
||||||
|
"github.com/tendermint/tendermint/cmd/tendermint/commands",
|
||||||
|
"github.com/tendermint/tendermint/config",
|
||||||
|
"github.com/tendermint/tendermint/crypto",
|
||||||
|
"github.com/tendermint/tendermint/crypto/merkle",
|
||||||
|
"github.com/tendermint/tendermint/crypto/tmhash",
|
||||||
|
"github.com/tendermint/tendermint/libs/bech32",
|
||||||
|
"github.com/tendermint/tendermint/libs/cli",
|
||||||
|
"github.com/tendermint/tendermint/libs/cli/flags",
|
||||||
|
"github.com/tendermint/tendermint/libs/common",
|
||||||
|
"github.com/tendermint/tendermint/libs/db",
|
||||||
|
"github.com/tendermint/tendermint/libs/log",
|
||||||
|
"github.com/tendermint/tendermint/node",
|
||||||
|
"github.com/tendermint/tendermint/p2p",
|
||||||
|
"github.com/tendermint/tendermint/privval",
|
||||||
|
"github.com/tendermint/tendermint/proxy",
|
||||||
|
"github.com/tendermint/tendermint/rpc/client",
|
||||||
|
"github.com/tendermint/tendermint/rpc/core/types",
|
||||||
|
"github.com/tendermint/tendermint/rpc/lib/client",
|
||||||
|
"github.com/tendermint/tendermint/rpc/lib/server",
|
||||||
|
"github.com/tendermint/tendermint/types",
|
||||||
|
"github.com/zondax/ledger-goclient",
|
||||||
|
"golang.org/x/crypto/blowfish",
|
||||||
|
"golang.org/x/crypto/ripemd160",
|
||||||
|
]
|
||||||
solver-name = "gps-cdcl"
|
solver-name = "gps-cdcl"
|
||||||
solver-version = 1
|
solver-version = 1
|
||||||
|
|
11
Makefile
11
Makefile
|
@ -83,14 +83,19 @@ dist:
|
||||||
check_tools:
|
check_tools:
|
||||||
cd tools && $(MAKE) check_tools
|
cd tools && $(MAKE) check_tools
|
||||||
|
|
||||||
|
check_dev_tools:
|
||||||
|
cd tools && $(MAKE) check_dev_tools
|
||||||
|
|
||||||
update_tools:
|
update_tools:
|
||||||
cd tools && $(MAKE) update_tools
|
cd tools && $(MAKE) update_tools
|
||||||
|
|
||||||
get_tools:
|
update_dev_tools:
|
||||||
cd tools && $(MAKE) get_tools
|
cd tools && $(MAKE) update_dev_tools
|
||||||
|
|
||||||
|
get_dev_tools:
|
||||||
|
cd tools && $(MAKE) get_dev_tools
|
||||||
|
|
||||||
get_vendor_deps:
|
get_vendor_deps:
|
||||||
@rm -rf vendor/
|
|
||||||
@echo "--> Running dep ensure"
|
@echo "--> Running dep ensure"
|
||||||
@dep ensure -v
|
@dep ensure -v
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
## PENDING
|
||||||
|
|
||||||
|
BREAKING CHANGES
|
||||||
|
* [baseapp] Msgs are no longer run on CheckTx, removed `ctx.IsCheckTx()`
|
||||||
|
* [x/stake] Fixed the period check for the inflation calculation
|
||||||
|
|
||||||
|
FEATURES
|
||||||
|
* [lcd] Can now query governance proposals by ProposalStatus
|
||||||
|
|
||||||
|
IMPROVEMENTS
|
||||||
|
* [baseapp] Allow any alphanumeric character in route
|
||||||
|
* [cli] Improve error messages for all txs when the account doesn't exist
|
||||||
|
* [tools] Remove `rm -rf vendor/` from `make get_vendor_deps`
|
||||||
|
* [x/stake] Add revoked to human-readable validator
|
||||||
|
|
||||||
|
BUG FIXES
|
||||||
|
* \#1666 Add intra-tx counter to the genesis validators
|
|
@ -436,7 +436,11 @@ func (app *BaseApp) BeginBlock(req abci.RequestBeginBlock) (res abci.ResponseBeg
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements ABCI
|
// CheckTx implements ABCI
|
||||||
|
// CheckTx runs the "basic checks" to see whether or not a transaction can possibly be executed,
|
||||||
|
// first decoding, then the ante handler (which checks signatures/fees/ValidateBasic),
|
||||||
|
// then finally the route match to see whether a handler exists. CheckTx does not run the actual
|
||||||
|
// Msg handler function(s).
|
||||||
func (app *BaseApp) CheckTx(txBytes []byte) (res abci.ResponseCheckTx) {
|
func (app *BaseApp) CheckTx(txBytes []byte) (res abci.ResponseCheckTx) {
|
||||||
// Decode the Tx.
|
// Decode the Tx.
|
||||||
var result sdk.Result
|
var result sdk.Result
|
||||||
|
@ -514,16 +518,11 @@ func (app *BaseApp) getContextForAnte(mode runTxMode, txBytes []byte) (ctx sdk.C
|
||||||
ctx = ctx.WithSigningValidators(app.signedValidators)
|
ctx = ctx.WithSigningValidators(app.signedValidators)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simulate a DeliverTx for gas calculation
|
|
||||||
if mode == runTxModeSimulate {
|
|
||||||
ctx = ctx.WithIsCheckTx(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterates through msgs and executes them
|
// Iterates through msgs and executes them
|
||||||
func (app *BaseApp) runMsgs(ctx sdk.Context, msgs []sdk.Msg) (result sdk.Result) {
|
func (app *BaseApp) runMsgs(ctx sdk.Context, msgs []sdk.Msg, mode runTxMode) (result sdk.Result) {
|
||||||
// accumulate results
|
// accumulate results
|
||||||
logs := make([]string, 0, len(msgs))
|
logs := make([]string, 0, len(msgs))
|
||||||
var data []byte // NOTE: we just append them all (?!)
|
var data []byte // NOTE: we just append them all (?!)
|
||||||
|
@ -537,7 +536,11 @@ func (app *BaseApp) runMsgs(ctx sdk.Context, msgs []sdk.Msg) (result sdk.Result)
|
||||||
return sdk.ErrUnknownRequest("Unrecognized Msg type: " + msgType).Result()
|
return sdk.ErrUnknownRequest("Unrecognized Msg type: " + msgType).Result()
|
||||||
}
|
}
|
||||||
|
|
||||||
msgResult := handler(ctx, msg)
|
var msgResult sdk.Result
|
||||||
|
// Skip actual execution for CheckTx
|
||||||
|
if mode != runTxModeCheck {
|
||||||
|
msgResult = handler(ctx, msg)
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: GasWanted is determined by ante handler and
|
// NOTE: GasWanted is determined by ante handler and
|
||||||
// GasUsed by the GasMeter
|
// GasUsed by the GasMeter
|
||||||
|
@ -615,9 +618,9 @@ func (app *BaseApp) runTx(mode runTxMode, txBytes []byte, tx sdk.Tx) (result sdk
|
||||||
|
|
||||||
// run the ante handler
|
// run the ante handler
|
||||||
if app.anteHandler != nil {
|
if app.anteHandler != nil {
|
||||||
newCtx, anteResult, abort := app.anteHandler(ctx, tx)
|
newCtx, result, abort := app.anteHandler(ctx, tx)
|
||||||
if abort {
|
if abort {
|
||||||
return anteResult
|
return result
|
||||||
}
|
}
|
||||||
if !newCtx.IsZero() {
|
if !newCtx.IsZero() {
|
||||||
ctx = newCtx
|
ctx = newCtx
|
||||||
|
@ -636,7 +639,7 @@ func (app *BaseApp) runTx(mode runTxMode, txBytes []byte, tx sdk.Tx) (result sdk
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx = ctx.WithMultiStore(msCache)
|
ctx = ctx.WithMultiStore(msCache)
|
||||||
result = app.runMsgs(ctx, msgs)
|
result = app.runMsgs(ctx, msgs, mode)
|
||||||
result.GasWanted = gasWanted
|
result.GasWanted = gasWanted
|
||||||
|
|
||||||
// only update state if all messages pass and we're not in a simulation
|
// only update state if all messages pass and we're not in a simulation
|
||||||
|
|
|
@ -186,6 +186,11 @@ func (ctx CoreContext) SignAndBuild(name, passphrase string, msgs []sdk.Msg, cdc
|
||||||
|
|
||||||
// sign and build the transaction from the msg
|
// sign and build the transaction from the msg
|
||||||
func (ctx CoreContext) ensureSignBuild(name string, msgs []sdk.Msg, cdc *wire.Codec) (tyBytes []byte, err error) {
|
func (ctx CoreContext) ensureSignBuild(name string, msgs []sdk.Msg, cdc *wire.Codec) (tyBytes []byte, err error) {
|
||||||
|
err = EnsureAccountExists(ctx, name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
ctx, err = EnsureAccountNumber(ctx)
|
ctx, err = EnsureAccountNumber(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -3,6 +3,7 @@ package context
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
tcmd "github.com/tendermint/tendermint/cmd/tendermint/commands"
|
tcmd "github.com/tendermint/tendermint/cmd/tendermint/commands"
|
||||||
|
@ -10,6 +11,9 @@ import (
|
||||||
tmtypes "github.com/tendermint/tendermint/types"
|
tmtypes "github.com/tendermint/tendermint/types"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/client"
|
"github.com/cosmos/cosmos-sdk/client"
|
||||||
|
"github.com/cosmos/cosmos-sdk/client/keys"
|
||||||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewCoreContextFromViper - return a new context with parameters from the command line
|
// NewCoreContextFromViper - return a new context with parameters from the command line
|
||||||
|
@ -68,6 +72,36 @@ func defaultChainID() (string, error) {
|
||||||
return doc.ChainID, nil
|
return doc.ChainID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnsureAccountExists - Make sure account exists
|
||||||
|
func EnsureAccountExists(ctx CoreContext, name string) error {
|
||||||
|
keybase, err := keys.GetKeyBase()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if name == "" {
|
||||||
|
return errors.Errorf("must provide a from address name")
|
||||||
|
}
|
||||||
|
|
||||||
|
info, err := keybase.Get(name)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Errorf("no key for: %s", name)
|
||||||
|
}
|
||||||
|
|
||||||
|
accAddr := sdk.AccAddress(info.GetPubKey().Address())
|
||||||
|
|
||||||
|
Acc, err := ctx.QueryStore(auth.AddressStoreKey(accAddr), ctx.AccountStore)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if account was found
|
||||||
|
if Acc == nil {
|
||||||
|
return errors.Errorf("No account with address %s was found in the state.\nAre you sure there has been a transaction involving it?", accAddr)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// EnsureAccount - automatically set account number if none provided
|
// EnsureAccount - automatically set account number if none provided
|
||||||
func EnsureAccountNumber(ctx CoreContext) (CoreContext, error) {
|
func EnsureAccountNumber(ctx CoreContext) (CoreContext, error) {
|
||||||
// Should be viper.IsSet, but this does not work - https://github.com/spf13/viper/pull/331
|
// Should be viper.IsSet, but this does not work - https://github.com/spf13/viper/pull/331
|
||||||
|
|
|
@ -337,7 +337,7 @@ gaiacli stake delegate \
|
||||||
|
|
||||||
While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool.
|
While tokens are bonded, they are pooled with all the other bonded tokens in the network. Validators and delegators obtain a percentage of shares that equal their stake in this pool.
|
||||||
|
|
||||||
> _*NOTE:*_ Don't use more `steak` thank you have! You can always get more by using the [Faucet](https://faucetcosmos.network/)!
|
> _*NOTE:*_ Don't use more `steak` thank you have! You can always get more by using the [Faucet](https://gaia.faucetcosmos.network/)!
|
||||||
|
|
||||||
### Unbond Tokens
|
### Unbond Tokens
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Documentation Maintenance Overview
|
||||||
|
|
||||||
|
The documentation found in this directory is hosted at:
|
||||||
|
|
||||||
|
- https://cosmos.network/docs/
|
||||||
|
|
||||||
|
and built using [VuePress](https://vuepress.vuejs.org/) from the Cosmos website repo:
|
||||||
|
|
||||||
|
- https://github.com/cosmos/cosmos.network
|
||||||
|
|
||||||
|
which has a [configuration file](https://github.com/cosmos/cosmos.network/blob/develop/docs/.vuepress/config.js) for displaying
|
||||||
|
the Table of Contents that lists all the documentation.
|
||||||
|
|
||||||
|
Under the hood, Jenkins listens for changes in ./docs then pushes a `docs-staging` branch to the cosmos.network repo with the latest documentation. That branch must be manually PR'd to `develop` then `master` for staging then production. This process should happen in synchrony with a release.
|
||||||
|
|
||||||
|
The `README.md` in this directory is the landing page for
|
||||||
|
website documentation.
|
|
@ -47,10 +47,6 @@ func handleMsgQuiz(ctx sdk.Context, k Keeper, msg MsgQuiz) sdk.Result {
|
||||||
return ErrIncorrectCoolAnswer(k.codespace, msg.CoolAnswer).Result()
|
return ErrIncorrectCoolAnswer(k.codespace, msg.CoolAnswer).Result()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.IsCheckTx() {
|
|
||||||
return sdk.Result{} // TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
bonusCoins := sdk.Coins{sdk.NewCoin(msg.CoolAnswer, 69)}
|
bonusCoins := sdk.Coins{sdk.NewCoin(msg.CoolAnswer, 69)}
|
||||||
|
|
||||||
_, _, err := k.ck.AddCoins(ctx, msg.Sender, bonusCoins)
|
_, _, err := k.ck.AddCoins(ctx, msg.Sender, bonusCoins)
|
||||||
|
|
|
@ -26,14 +26,6 @@ func handleMsgMine(ctx sdk.Context, pk Keeper, msg MsgMine) sdk.Result {
|
||||||
return err.Result()
|
return err.Result()
|
||||||
}
|
}
|
||||||
|
|
||||||
// commented for now, makes testing difficult
|
|
||||||
// TODO figure out a better test method that allows early CheckTx return
|
|
||||||
/*
|
|
||||||
if ctx.IsCheckTx() {
|
|
||||||
return sdk.Result{} // TODO
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
err = pk.ApplyValid(ctx, msg.Sender, newDiff, newCount)
|
err = pk.ApplyValid(ctx, msg.Sender, newDiff, newCount)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err.Result()
|
return err.Result()
|
||||||
|
|
|
@ -30,6 +30,9 @@ ifndef DEP_CHECK
|
||||||
else
|
else
|
||||||
@echo "Found dep in path."
|
@echo "Found dep in path."
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
check_dev_tools:
|
||||||
|
$(MAKE) check_tools
|
||||||
ifndef GOLINT_CHECK
|
ifndef GOLINT_CHECK
|
||||||
@echo "No golint in path. Install with 'make get_tools'."
|
@echo "No golint in path. Install with 'make get_tools'."
|
||||||
else
|
else
|
||||||
|
@ -78,6 +81,9 @@ else
|
||||||
@echo "Installing dep"
|
@echo "Installing dep"
|
||||||
go get -v $(DEP)
|
go get -v $(DEP)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
get_dev_tools:
|
||||||
|
$(MAKE) get_tools
|
||||||
ifdef GOLINT_CHECK
|
ifdef GOLINT_CHECK
|
||||||
@echo "Golint is already installed. Run 'make update_tools' to update."
|
@echo "Golint is already installed. Run 'make update_tools' to update."
|
||||||
else
|
else
|
||||||
|
@ -130,6 +136,9 @@ endif
|
||||||
update_tools:
|
update_tools:
|
||||||
@echo "Updating dep"
|
@echo "Updating dep"
|
||||||
go get -u -v $(DEP)
|
go get -u -v $(DEP)
|
||||||
|
|
||||||
|
update_dev_tools:
|
||||||
|
$(MAKE) update_tools
|
||||||
@echo "Updating tendermint/golint"
|
@echo "Updating tendermint/golint"
|
||||||
go get -u -v $(GOLINT)
|
go get -u -v $(GOLINT)
|
||||||
@echo "Updating gometalinter.v2"
|
@echo "Updating gometalinter.v2"
|
||||||
|
@ -150,4 +159,4 @@ update_tools:
|
||||||
# To avoid unintended conflicts with file names, always add to .PHONY
|
# To avoid unintended conflicts with file names, always add to .PHONY
|
||||||
# unless there is a reason not to.
|
# unless there is a reason not to.
|
||||||
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
||||||
.PHONY: check_tools get_tools update_tools
|
.PHONY: check_tools get_tools update_tools check_dev_tools get_dev_tools update_dev_tools
|
||||||
|
|
|
@ -41,7 +41,6 @@ func NewContext(ms MultiStore, header abci.Header, isCheckTx bool, logger log.Lo
|
||||||
c = c.WithBlockHeader(header)
|
c = c.WithBlockHeader(header)
|
||||||
c = c.WithBlockHeight(header.Height)
|
c = c.WithBlockHeight(header.Height)
|
||||||
c = c.WithChainID(header.ChainID)
|
c = c.WithChainID(header.ChainID)
|
||||||
c = c.WithIsCheckTx(isCheckTx)
|
|
||||||
c = c.WithTxBytes(nil)
|
c = c.WithTxBytes(nil)
|
||||||
c = c.WithLogger(logger)
|
c = c.WithLogger(logger)
|
||||||
c = c.WithSigningValidators(nil)
|
c = c.WithSigningValidators(nil)
|
||||||
|
@ -127,7 +126,6 @@ const (
|
||||||
contextKeyBlockHeader
|
contextKeyBlockHeader
|
||||||
contextKeyBlockHeight
|
contextKeyBlockHeight
|
||||||
contextKeyChainID
|
contextKeyChainID
|
||||||
contextKeyIsCheckTx
|
|
||||||
contextKeyTxBytes
|
contextKeyTxBytes
|
||||||
contextKeyLogger
|
contextKeyLogger
|
||||||
contextKeySigningValidators
|
contextKeySigningValidators
|
||||||
|
@ -151,9 +149,6 @@ func (c Context) BlockHeight() int64 {
|
||||||
func (c Context) ChainID() string {
|
func (c Context) ChainID() string {
|
||||||
return c.Value(contextKeyChainID).(string)
|
return c.Value(contextKeyChainID).(string)
|
||||||
}
|
}
|
||||||
func (c Context) IsCheckTx() bool {
|
|
||||||
return c.Value(contextKeyIsCheckTx).(bool)
|
|
||||||
}
|
|
||||||
func (c Context) TxBytes() []byte {
|
func (c Context) TxBytes() []byte {
|
||||||
return c.Value(contextKeyTxBytes).([]byte)
|
return c.Value(contextKeyTxBytes).([]byte)
|
||||||
}
|
}
|
||||||
|
@ -179,9 +174,6 @@ func (c Context) WithBlockHeight(height int64) Context {
|
||||||
func (c Context) WithChainID(chainID string) Context {
|
func (c Context) WithChainID(chainID string) Context {
|
||||||
return c.withValue(contextKeyChainID, chainID)
|
return c.withValue(contextKeyChainID, chainID)
|
||||||
}
|
}
|
||||||
func (c Context) WithIsCheckTx(isCheckTx bool) Context {
|
|
||||||
return c.withValue(contextKeyIsCheckTx, isCheckTx)
|
|
||||||
}
|
|
||||||
func (c Context) WithTxBytes(txBytes []byte) Context {
|
func (c Context) WithTxBytes(txBytes []byte) Context {
|
||||||
return c.withValue(contextKeyTxBytes, txBytes)
|
return c.withValue(contextKeyTxBytes, txBytes)
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,8 @@ func SignCheckDeliver(
|
||||||
seq []int64, expPass bool, priv ...crypto.PrivKey,
|
seq []int64, expPass bool, priv ...crypto.PrivKey,
|
||||||
) sdk.Result {
|
) sdk.Result {
|
||||||
tx := GenTx(msgs, accNums, seq, priv...)
|
tx := GenTx(msgs, accNums, seq, priv...)
|
||||||
res := app.Check(tx)
|
// Must simulate now as CheckTx doesn't run Msgs anymore
|
||||||
|
res := app.Simulate(tx)
|
||||||
|
|
||||||
if expPass {
|
if expPass {
|
||||||
require.Equal(t, sdk.ABCICodeOK, res.Code, res.Log)
|
require.Equal(t, sdk.ABCICodeOK, res.Code, res.Log)
|
||||||
|
|
|
@ -113,6 +113,6 @@ func TestSlashingMsgs(t *testing.T) {
|
||||||
checkValidatorSigningInfo(t, mapp, keeper, sdk.ValAddress(addr1), false)
|
checkValidatorSigningInfo(t, mapp, keeper, sdk.ValAddress(addr1), false)
|
||||||
|
|
||||||
// unrevoke should fail with unknown validator
|
// unrevoke should fail with unknown validator
|
||||||
res := mock.CheckGenTx(t, mapp.BaseApp, []sdk.Msg{unrevokeMsg}, []int64{0}, []int64{1}, false, priv1)
|
res := mock.SignCheckDeliver(t, mapp.BaseApp, []sdk.Msg{unrevokeMsg}, []int64{0}, []int64{1}, false, priv1)
|
||||||
require.Equal(t, sdk.ToABCICode(DefaultCodespace, CodeValidatorNotRevoked), res.Code)
|
require.Equal(t, sdk.ToABCICode(DefaultCodespace, CodeValidatorNotRevoked), res.Code)
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,10 +43,6 @@ func handleMsgUnrevoke(ctx sdk.Context, msg MsgUnrevoke, k Keeper) sdk.Result {
|
||||||
return ErrValidatorJailed(k.codespace).Result()
|
return ErrValidatorJailed(k.codespace).Result()
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.IsCheckTx() {
|
|
||||||
return sdk.Result{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the starting height (so the validator can't be immediately revoked again)
|
// Update the starting height (so the validator can't be immediately revoked again)
|
||||||
info.StartHeight = ctx.BlockHeight()
|
info.StartHeight = ctx.BlockHeight()
|
||||||
k.setValidatorSigningInfo(ctx, addr, info)
|
k.setValidatorSigningInfo(ctx, addr, info)
|
||||||
|
|
|
@ -17,7 +17,7 @@ func InitGenesis(ctx sdk.Context, keeper Keeper, data types.GenesisState) error
|
||||||
keeper.SetNewParams(ctx, data.Params)
|
keeper.SetNewParams(ctx, data.Params)
|
||||||
keeper.InitIntraTxCounter(ctx)
|
keeper.InitIntraTxCounter(ctx)
|
||||||
|
|
||||||
for _, validator := range data.Validators {
|
for i, validator := range data.Validators {
|
||||||
keeper.SetValidator(ctx, validator)
|
keeper.SetValidator(ctx, validator)
|
||||||
|
|
||||||
if validator.Tokens.IsZero() {
|
if validator.Tokens.IsZero() {
|
||||||
|
@ -29,6 +29,8 @@ func InitGenesis(ctx sdk.Context, keeper Keeper, data types.GenesisState) error
|
||||||
|
|
||||||
// Manually set indexes for the first time
|
// Manually set indexes for the first time
|
||||||
keeper.SetValidatorByPubKeyIndex(ctx, validator)
|
keeper.SetValidatorByPubKeyIndex(ctx, validator)
|
||||||
|
|
||||||
|
validator.BondIntraTxCounter = int16(i) // set the intra-tx counter to the order the validators are presented
|
||||||
keeper.SetValidatorByPowerIndex(ctx, validator, data.Pool)
|
keeper.SetValidatorByPowerIndex(ctx, validator, data.Pool)
|
||||||
|
|
||||||
if validator.Status == sdk.Bonded {
|
if validator.Status == sdk.Bonded {
|
||||||
|
|
|
@ -14,23 +14,35 @@ func TestInitGenesis(t *testing.T) {
|
||||||
ctx, _, keeper := keep.CreateTestInput(t, false, 1000)
|
ctx, _, keeper := keep.CreateTestInput(t, false, 1000)
|
||||||
|
|
||||||
pool := keeper.GetPool(ctx)
|
pool := keeper.GetPool(ctx)
|
||||||
pool.LooseTokens = sdk.OneRat()
|
pool.LooseTokens = sdk.NewRat(2)
|
||||||
|
|
||||||
params := keeper.GetParams(ctx)
|
params := keeper.GetParams(ctx)
|
||||||
var delegations []Delegation
|
var delegations []Delegation
|
||||||
|
|
||||||
validators := []Validator{
|
validators := []Validator{
|
||||||
NewValidator(keep.Addrs[0], keep.PKs[0], Description{Moniker: "hoop"}),
|
NewValidator(keep.Addrs[0], keep.PKs[0], Description{Moniker: "hoop"}),
|
||||||
|
NewValidator(keep.Addrs[1], keep.PKs[1], Description{Moniker: "bloop"}),
|
||||||
}
|
}
|
||||||
|
|
||||||
genesisState := types.NewGenesisState(pool, params, validators, delegations)
|
genesisState := types.NewGenesisState(pool, params, validators, delegations)
|
||||||
err := InitGenesis(ctx, keeper, genesisState)
|
err := InitGenesis(ctx, keeper, genesisState)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|
||||||
|
// initialize the validators
|
||||||
validators[0].Tokens = sdk.OneRat()
|
validators[0].Tokens = sdk.OneRat()
|
||||||
validators[0].DelegatorShares = sdk.OneRat()
|
validators[0].DelegatorShares = sdk.OneRat()
|
||||||
|
validators[1].Tokens = sdk.OneRat()
|
||||||
|
validators[1].DelegatorShares = sdk.OneRat()
|
||||||
|
|
||||||
genesisState = types.NewGenesisState(pool, params, validators, delegations)
|
genesisState = types.NewGenesisState(pool, params, validators, delegations)
|
||||||
err = InitGenesis(ctx, keeper, genesisState)
|
err = InitGenesis(ctx, keeper, genesisState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// now make sure the validators are bonded
|
||||||
|
resVal, found := keeper.GetValidator(ctx, keep.Addrs[0])
|
||||||
|
require.True(t, found)
|
||||||
|
require.Equal(t, sdk.Bonded, resVal.Status)
|
||||||
|
|
||||||
|
resVal, found = keeper.GetValidator(ctx, keep.Addrs[1])
|
||||||
|
require.True(t, found)
|
||||||
|
require.Equal(t, sdk.Bonded, resVal.Status)
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) (ValidatorUpdates []abci.Valid
|
||||||
|
|
||||||
// Process types.Validator Provisions
|
// Process types.Validator Provisions
|
||||||
blockTime := ctx.BlockHeader().Time
|
blockTime := ctx.BlockHeader().Time
|
||||||
if pool.InflationLastTime+blockTime >= 3600 {
|
if blockTime-pool.InflationLastTime >= 3600 {
|
||||||
pool.InflationLastTime = blockTime
|
pool.InflationLastTime = blockTime
|
||||||
pool = pool.ProcessProvisions(params)
|
pool = pool.ProcessProvisions(params)
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,6 +147,34 @@ func UnmarshalValidator(cdc *wire.Codec, ownerAddr, value []byte) (validator Val
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HumanReadableString returns a human readable string representation of a
|
||||||
|
// validator. An error is returned if the owner or the owner's public key
|
||||||
|
// cannot be converted to Bech32 format.
|
||||||
|
func (v Validator) HumanReadableString() (string, error) {
|
||||||
|
bechVal, err := sdk.Bech32ifyValPub(v.PubKey)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
resp := "Validator \n"
|
||||||
|
resp += fmt.Sprintf("Owner: %s\n", v.Owner)
|
||||||
|
resp += fmt.Sprintf("Validator: %s\n", bechVal)
|
||||||
|
resp += fmt.Sprintf("Revoked: %v\n", v.Revoked)
|
||||||
|
resp += fmt.Sprintf("Status: %s\n", sdk.BondStatusToString(v.Status))
|
||||||
|
resp += fmt.Sprintf("Tokens: %s\n", v.Tokens.FloatString())
|
||||||
|
resp += fmt.Sprintf("Delegator Shares: %s\n", v.DelegatorShares.FloatString())
|
||||||
|
resp += fmt.Sprintf("Description: %s\n", v.Description)
|
||||||
|
resp += fmt.Sprintf("Bond Height: %d\n", v.BondHeight)
|
||||||
|
resp += fmt.Sprintf("Proposer Reward Pool: %s\n", v.ProposerRewardPool.String())
|
||||||
|
resp += fmt.Sprintf("Commission: %s\n", v.Commission.String())
|
||||||
|
resp += fmt.Sprintf("Max Commission Rate: %s\n", v.CommissionMax.String())
|
||||||
|
resp += fmt.Sprintf("Commission Change Rate: %s\n", v.CommissionChangeRate.String())
|
||||||
|
resp += fmt.Sprintf("Commission Change Today: %s\n", v.CommissionChangeToday.String())
|
||||||
|
resp += fmt.Sprintf("Previous Bonded Tokens: %s\n", v.LastBondedTokens.String())
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
//___________________________________________________________________
|
//___________________________________________________________________
|
||||||
|
|
||||||
// validator struct for bech output
|
// validator struct for bech output
|
||||||
|
@ -408,30 +436,3 @@ func (v Validator) GetPubKey() crypto.PubKey { return v.PubKey }
|
||||||
func (v Validator) GetPower() sdk.Rat { return v.BondedTokens() }
|
func (v Validator) GetPower() sdk.Rat { return v.BondedTokens() }
|
||||||
func (v Validator) GetDelegatorShares() sdk.Rat { return v.DelegatorShares }
|
func (v Validator) GetDelegatorShares() sdk.Rat { return v.DelegatorShares }
|
||||||
func (v Validator) GetBondHeight() int64 { return v.BondHeight }
|
func (v Validator) GetBondHeight() int64 { return v.BondHeight }
|
||||||
|
|
||||||
// HumanReadableString returns a human readable string representation of a
|
|
||||||
// validator. An error is returned if the owner or the owner's public key
|
|
||||||
// cannot be converted to Bech32 format.
|
|
||||||
func (v Validator) HumanReadableString() (string, error) {
|
|
||||||
bechVal, err := sdk.Bech32ifyValPub(v.PubKey)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
resp := "Validator \n"
|
|
||||||
resp += fmt.Sprintf("Owner: %s\n", v.Owner)
|
|
||||||
resp += fmt.Sprintf("Validator: %s\n", bechVal)
|
|
||||||
resp += fmt.Sprintf("Status: %s\n", sdk.BondStatusToString(v.Status))
|
|
||||||
resp += fmt.Sprintf("Tokens: %s\n", v.Tokens.FloatString())
|
|
||||||
resp += fmt.Sprintf("Delegator Shares: %s\n", v.DelegatorShares.FloatString())
|
|
||||||
resp += fmt.Sprintf("Description: %s\n", v.Description)
|
|
||||||
resp += fmt.Sprintf("Bond Height: %d\n", v.BondHeight)
|
|
||||||
resp += fmt.Sprintf("Proposer Reward Pool: %s\n", v.ProposerRewardPool.String())
|
|
||||||
resp += fmt.Sprintf("Commission: %s\n", v.Commission.String())
|
|
||||||
resp += fmt.Sprintf("Max Commission Rate: %s\n", v.CommissionMax.String())
|
|
||||||
resp += fmt.Sprintf("Commission Change Rate: %s\n", v.CommissionChangeRate.String())
|
|
||||||
resp += fmt.Sprintf("Commission Change Today: %s\n", v.CommissionChangeToday.String())
|
|
||||||
resp += fmt.Sprintf("Previous Bonded Tokens: %s\n", v.LastBondedTokens.String())
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue