Notes on Production Deployment
Last updated
Last updated
See and
Validators shouldn’t be exposed directly to the internet
RPC shouldn’t be exposed directly to the internet (as it currently doesn’t support rate-limiting, authentication…)
Validator block signing should be via
Currently (tmkms v0.7), the system is still a bit Cosmos-centric, so the setup is slightly quirky.
As per the , create ~/.tmkms/tmkms.toml
(or any path) with something like:
In ~/.tendermint/config/config.toml
(or wherever located), set the socket address to the same one as in tmkms.toml
:
Step 0 depends on the signing provider -- e.g. for Ledger devices, one may need to enable developer mode in Ledger Live settings and install the Tendermint validator app.
Depending on the signing provider, there may be a command to print out the public key. One other option is to run tmkms start -c .tmkms/tmkms.toml -v
where -v
is for verbose logging; the log may then include a message ... added consensus key <KEY_HEX_PAYLOAD>
.
The public key hex payload is Amino-encoded -- for the use in Tendermint configurations, there are two steps that need to be done:
strip off the Amino prefix; in the case of Ed25519 public keys, it's 5 bytes: 0x16, 0x24, 0xDE, 0x64, 0x20.
convert the stripped-off KEY_HEX_PAYLOAD
to base64.
For example, generate the genesis.json
with it if the corresponding node is one of the initial validators.
As before, but along with tendermint node
, tmkms start -c .tmkms/tmkms.toml
should also be launched.