Skip to content

Zenith block builder API

Notifications You must be signed in to change notification settings

meka-dev/zenith

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zenith

Mekatek's block builder API lives here for posterity.

Operations

Database

# connect
hack/psql-prod

# show tables
\dt;

# describe a table
\d+ chains;

# update a text[]
BEGIN;
UPDATE chains
 SET node_uris = '{http://hostname:26657}'
 WHERE id = 'whatever-chain-id';
COMMIT;

# reset a localnet
BEGIN;
DELETE FROM bids     WHERE chain_id = 'localnet-chain-id';
DELETE FROM auctions WHERE chain_id = 'localnet-chain-id';
COMMIT;

Releases

To release a new tag of our Tendermint fork you check out the tracking branch with the patches, and give it a tag of the format mekatek/REPO@VERSION-PATCH where REPO is the upstream e.g. github.com/tendermint/tendermint, VERSION is the upstream version tag that our branch is tracking e.g. v0.34.19, and PATCH is an integer representing Mekatek's changes on that VERSION e.g. 3.

cd meka-dev/tendermint
git checkout v0.34.19-mekatek
git tag mekatek/github.com/tendermint/[email protected]
git push --tags origin

To produce a patched binary, see the build-NETWORK scripts in hack.

tmkms

meka-dev/tmkms is a fork of iqlusion/tmkms that supports the builder API for validators that use a sentry architecture.

# build
git clone https://github.com/meka-dev/tmkms --branch v0.34.19-mekatek
cd tmkms
cargo build --release --features=softsign
ls -ltar target/release/tmkms

A localnet full node can be configured to use tmkms for signing. Initialize a tmkms instance on the localnet host.

tmkms init --networks osmosis /var/meka/tmkms

tmkms softsign import \
    /path/to/config/priv_validator_key.json \
    /var/meka/tmkms/secrets/priv_validator_key

Write this config file to /var/meka/tmkms/tmkms.toml. Here the key prefixes assume Osmosis, they'll be different for other networks.

[[chain]]
id = "localnet-chain-id"
key_format = { type = "bech32", account_key_prefix = "osmopub", consensus_key_prefix = "osmovalconspub" }
state_file = "/var/meka/tmkms/state/localosmosis-consensus.json"

[[providers.softsign]]
chain_ids = ["localosmosis"]
key_type = "consensus"
path = "/var/meka/tmkms/secrets/priv_validator_key"

[[validator]]
chain_id = "localnet-chain-id"
addr = "tcp://localnet-full-node:26659" # <-- CHANGE THE HOST HERE AS NECESSARY
secret_key = "/var/meka/tmkms/secrets/kms-identity.key"
protocol_version = "v0.34"
reconnect = true

Modify the localnet full node's config.toml like this.

# priv_validator_key_file = "config/priv_validator_key.json"   # <-- COMMENT THIS OUT
# priv_validator_state_file = "data/priv_validator_state.json" # <-- COMMENT THIS OUT
priv_validator_laddr = "tcp://0.0.0.0:26659"                   # <-- SET THIS

Start tmkms like this.

tmkms start --config=/var/meka/tmkms/tmkms.toml

Restart the localnet full node. It should bind to priv_validator_laddr, accept a connection from tmkms, and then use that connection whenever it needs to sign anything.

About

Zenith block builder API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published