Application BlockChain Interface (ABCI), then Tendermint will take care the blockchain parts.
liked init MONIKER. This will generate basic configuration files and a template
genesis.jsonfor chain parameters.
liked add-genesis-account(or just modify
genesis.jsonmanually) to initialize genesis account list.
genesis.jsonto generate and sign genesis transaction by
liked gentx. The genesis transaction with signature will be stored in
liked collect-gentxsto collect the genesis transactions into
genesis.jsonto all validators.
genesis.jsonto start the node.
.liked/config/priv_validator_key.jsonin plaintext, while the signing state is stored in
.liked/data/priv_validator_state.json. One can get its consensus public key by running
liked tendermint show-validator.
config.tomlto allow the external service to connect to the node and provide signatures when needed.
.liked/config/node_key.jsonin plaintext. One can get its node ID by running
liked tendermint show-node-id.
likecli keys add, it is stored and encrypted inside the database in
.likecli. The initialization process will show mnemonic words for backup the key.
ledgertag. The applications require Go 1.13+ to compile. One can compile the applications by
go build -o likecli --tags 'ledger' cmd/likecli/main.go(change the paths for
--ledgeroption in command line arguments:
likecli keys add my_key_name --ledger.
sdk.Msgis an interface implemented by Cosmos modules. It wraps the application logic related data, and has interface on things like who should be signing the message, how should the message be signed, how to validate the message, etc.
CheckTxto do basic verifications for the trasnaction, e.g. checking sequence and signature.
p2p.external_addressis not set in
config.toml, Tendermint will detect the external address from the listener or UPnP.
tcp://0.0.0.0:26656, the node will broadcast its own IP as
0.0.0.0:26657, which is invalid for others to connect to.
p2p.external_addressoption cannot be overridden by command line arguments or environment variables, so it is not possible to fix by external programs.
liked, which detects external IP by some common IP detecting services (e.g. httpbin.org) and set the
p2p.external_addressfield in the configuration structure before real execution.
config.toml, but should remember to update this field when the external address changes.
mintmodule will create coins for inflation, and the
distributionmodule will record block validators precommit info to count missing validators. Since the application state is always changing, Tendermint will keep creating new empty blocks.
mintmodule, there is a parameter on the expected number of blocks per year. Then, in the chain's application logic, the inflation rate and annual provision will be computed by that block period instead of actually one year.
365.25 * 24 * 3600 / 60 = 525960blocks per year, but then there are transactions every 10 seconds, then the actual number of blocks per year will be 6 times as the expected one.
mintmodule to use block timestamp instead of block number as the measure on time, but more investigation is needed.