crypto/keyring:
`Keybase` interface gives way to its successor: `Keyring`. `LegacyKeybase`
interface is added in order to guarantee limited backward compatibility with
the old `Keybase` interface for the sole purpose of migrating keys across
the new keyring backends.
The package no longer depends on the `github.com/types.Config`
singleton.
`SupportedAlgos` and `SupportedLedgerAlgos` methods have been removed.
The keyring just fails when trying to perform an action with an unsupported
algorithm.
crypto/ subdirs reorganization:
`crypto/keys/hd` was moved to `crypto/hd`, which now groups together
all HD wallets related types and utilities.
client/input:
* Removal of unnecessary `GetCheckPassword`, `PrintPrefixed` functions.
* `GetConfirmation`'s signature changed to take in a io.Writer for better integration
with `cobra.Command` types.
client/context:
* In-memory keyring is allocated in the context when `--gen-only` flag is passed
in. `GetFromFields` does no longer silently allocate a keyring, it takes one as
argument.
Co-authored with @jgimeno
Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com>
Remove the Update method from the Keybase interface.
Remove redundant lazy keybase implementation altogether.
Created LegacyKeybase interface to restrict capabilities to
only those required by keys commands that deal with
legacy keybase such as update and migrate.
Rename keyring.New() -> keyring.NewLegacy().
Rename client/keys.NewKeyBaseFromDir -> NewLegacyKeyBaseFromDir.
crypto/keyiring.NewInMemory() now returns a in-memory keyring.
BackendMemory is added yet not exposed via command line
--keyring-backend flag. keys add uses it when --dry-run flag
is on.
* Switch keys commands to keyring
* Replace NewKeybase with NewKeyring
* Fix delete test
* Purge dead code
* Override COSMOS_SDK_TEST_KEYRING envvar to switch to a test keyring
* s/unningOnServer/unningUnattended/
C'ing @tnachen
* Add deprecated warning, output looks like the following:
```
$ gaiacli keys update --help
Command "update" is deprecated, it takes no effect with the new keyring
based backend and is provided only for backward compatibility with the
legacy LevelDB based backend.
Refer to your operating system's manual to learn how to change your
keyring's password.
Change the password used to protect private key
Usage:
gaiacli keys update <name> [flags]
Flags:
-h, --help help for update
Global Flags:
--chain-id string Chain ID of tendermint node
-e, --encoding string Binary encoding (hex|b64|btc) (default "hex")
--home string directory for config and data (default "/home/alessio/.gaiacli")
-o, --output string Output format (text|json) (default "text")
--trace print out full stack trace on errors
```
* Update multisign command
* Modify server.GenerateSaveCoinKey()
* GenerateSaveCoinKey more modifications
* Update docs
* Update upgrade module
New genesis workflow:
* `gaiad init` is now used to generate an empty `genesis.json`.
* Genesis accounts need to be populated manually before running
`gaiad collect-gentxs`.
* This should support starfish too, see #2615 for more info.
* Closes: #2596#2615
* Validate validator address and address against respective account ex ante
* Fix local testnet failures
* New genesis tests
* Run make format
* Add --pubkey flag
* gaiad collect-gentxs takes no args
Rework the process of loading a genesis.json file to load a starting app state and set of initial transactions to process.
* New function to create genesis account from MsgCreateValidator
* Add arg to PrintUnsignedStdTx() to actually operate in offline mode
* New func processStdTxs()
* Remove gen-tx command
* Cleanup, return validators as they need to be written into genesis.json
* Modify gaiad init to allow auto-create of stdTx
* Remove server/testnet.go
* Don't load node_key.json, which might not be available
* Get the txs through DeliverTx
* Add app.slashingKeeper.AddValidators at the end of genesis
* On InitChain(), Signature's account number must be 0
* Add (tentative?) command to generate {node_key,priv_validator}.json files
* Reintroduce gaiad testnet
* Prompt user for passwords
* Update gaia to work with auth.StdTx
* Remove test_utils, NewTestGaiaAppGenState is now deprecated
* Combine --genesis-format and --generate-only
* Improve sign command's --offline flag documentation
* Moniker must be set
* Call app.slashingKeeper.AddValidators() even if len(txs) == 0
* Refactoring, introduce gaiad init --skip-genesis, code cleanup
* Drop unnecessary workaround to make lcd_tests pass
* Reintroduce gentx
* Simple name changes, GenesisState.Txs -> .GenTxs; OWK -> OverwriteKey; OverwriteKeys -> OverwriteKey
* Add arg to PrintUnsignedStdTx() to actually operate in offline mode
* WIP simplifying server module
* Expose ExternalIP()
* Move {GenTx,Init}Cmd into gaia's new init package
* `gaiad init gen-tx` makes the outputted file use bech32, with acct prefix
* `gaiad init --gen-txs` only reads bech32 with acct prefixes
The reason for using the account prefix is that in principle you could
have genesis transactions for non-validators.
Closes#1475
* tools: Add unparam linter
unparam detects unused parameters in functions, and a parameter to
a function which only ever takes on one value. The latter is an
indication that more tests are required.
There are many nolints in this PR, as I believe that writing tests
to fix alot of these situations is out of scope for this PR / it
will be changed in future commits. There are some nolints for
when we have to comply to normal api's.
* crypto/keys no longer used by x/gov/client/rest/rest.go
Merges the keybase and Ledger code from go-crypto (which is no more) into the SDK
Adds support for Ledger into gaiacli
Cherry-picks updated error handling from #1158
* Switch ports 4665x to be 2655x
This is done so the default ports aren't in the linux kernel's default ephemeral port range.
* Missed one doc file, change dep so gaiad works
* Update changelog, fix Gopkg.lock
Finished testnet command and introduced localnet targets in Makefile, together with gaiadnode Docker image
Fixed function parameter list - now starts with ctx
Separated GenTxConfig into a server/config package so both the server package and the mock package can use it
Adding server/config to app package
gaiadnode Docker image
Separated GenTxConfig into a server/config package so both the server package and the mock package can use it
Adding server/config to app package
Fixes requested by Rigel
Removed commented code
Global flag fixes