From d38a74e23381515a72e65a3f667b83f9b194a03c Mon Sep 17 00:00:00 2001 From: David Boreham Date: Wed, 12 Oct 2022 15:28:45 -0600 Subject: [PATCH 1/4] Initial rename --- compose/docker-compose-laconicd.yml | 3 ++- container-build/cerc-laconic-client/build.sh | 5 ++--- container-image-list.txt | 2 +- repository-list.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compose/docker-compose-laconicd.yml b/compose/docker-compose-laconicd.yml index d5c95d48..38376f77 100644 --- a/compose/docker-compose-laconicd.yml +++ b/compose/docker-compose-laconicd.yml @@ -3,4 +3,5 @@ services: laconicd: restart: unless-stopped image: cerc/laconicd:local - + volume: + - ./create-testingnet.sh:/laconicd-entrypoint-init.d/create-testingnet.sh diff --git a/container-build/cerc-laconic-client/build.sh b/container-build/cerc-laconic-client/build.sh index 97c646fc..a4a8de41 100755 --- a/container-build/cerc-laconic-client/build.sh +++ b/container-build/cerc-laconic-client/build.sh @@ -1,8 +1,7 @@ #!/usr/bin/env bash -# Build cerc/laconic-client +# Build cerc/laconic-cns-cli # See: https://stackoverflow.com/a/246128/1701505 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -# TODO: change the repo name to laconic-client, if it becomes re-named (laconic-client currently is just the TS protocol client library, not the CLI tool) -docker build -t cerc/laconic-client:local -f ${SCRIPT_DIR}/Dockerfile --build-arg NPM_AUTH_TOKEN=$(NPM_AUTH_TOKEN) ${CERC_REPO_BASE_DIR}/laconic-sdk +docker build -t cerc/laconic-cns-cli:local -f ${SCRIPT_DIR}/Dockerfile --build-arg NPM_AUTH_TOKEN=$(NPM_AUTH_TOKEN) ${CERC_REPO_BASE_DIR}/laconic-cns-cli diff --git a/container-image-list.txt b/container-image-list.txt index ff225f60..660e7e66 100644 --- a/container-image-list.txt +++ b/container-image-list.txt @@ -9,4 +9,4 @@ cerc/ipld-eth-beacon-db cerc/ipld-eth-beacon-indexer cerc/ipld-eth-server cerc/laconicd -cerc/laconic-client +cerc/laconic-cns-cli diff --git a/repository-list.txt b/repository-list.txt index a471b567..01e178ac 100644 --- a/repository-list.txt +++ b/repository-list.txt @@ -8,4 +8,4 @@ vulcanize/ipld-eth-db-validator vulcanize/ipld-eth-beacon-indexer vulcanize/ipld-eth-beacon-db cerc-io/laconicd -cerc-io/laconic-sdk +cerc-io/laconic-cns-cli From c11213de52e04f32fc9cee345f6595820784a86b Mon Sep 17 00:00:00 2001 From: David Boreham Date: Wed, 12 Oct 2022 16:30:37 -0600 Subject: [PATCH 2/4] Enable fixturenet for laconicd --- compose/docker-compose-laconicd.yml | 16 +++- config/laconicd/create-fixturenet.sh | 118 +++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 config/laconicd/create-fixturenet.sh diff --git a/compose/docker-compose-laconicd.yml b/compose/docker-compose-laconicd.yml index d5c95d48..fab8c066 100644 --- a/compose/docker-compose-laconicd.yml +++ b/compose/docker-compose-laconicd.yml @@ -3,4 +3,18 @@ services: laconicd: restart: unless-stopped image: cerc/laconicd:local - + command: ["sh", "/docker-entrypoint-scripts.d/create-fixturenet.sh"] + volumes: + # TODO: look at folding this script into the container + - ../config/laconicd/create-fixturenet.sh:/docker-entrypoint-scripts.d/create-fixturenet.sh + # TODO: determine which of the ports below is really needed + ports: + - "6060" + - "26657" + - "26656" + - "9473" + - "8545" + - "8546" + - "9090" + - "9091" + - "1317" diff --git a/config/laconicd/create-fixturenet.sh b/config/laconicd/create-fixturenet.sh new file mode 100644 index 00000000..8d5115be --- /dev/null +++ b/config/laconicd/create-fixturenet.sh @@ -0,0 +1,118 @@ +#!/bin/sh + +# Originally from: https://github.com/cerc-io/laconicd/blob/main/init.sh +# TODO: fold this back into the laconicd repo + + +KEY="mykey" +CHAINID="laconic_9000-1" +MONIKER="localtestnet" +KEYRING="test" +KEYALGO="eth_secp256k1" +LOGLEVEL="info" +# to trace evm +TRACE="--trace" +# TRACE="" + +# validate dependencies are installed +command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; } + +# remove existing daemon and client +rm -rf ~/.laconic* + +make install + +laconicd config keyring-backend $KEYRING +laconicd config chain-id $CHAINID + +# if $KEY exists it should be deleted +laconicd keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO + +# Set moniker and chain-id for laconic (Moniker can be anything, chain-id must be an integer) +laconicd init $MONIKER --chain-id $CHAINID + +# Change parameter token denominations to aphoton +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +# Custom modules +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["record_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_rent"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_commit_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_reveal_fee"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_minimum_bid"]["denom"]="aphoton"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + +if [[ "$TEST_NAMESERVICE_EXPIRY" == "true" ]]; then + echo "Setting timers for expiry tests." + + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["record_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_grace_period"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +fi + +if [[ "$TEST_AUCTION_ENABLED" == "true" ]]; then + echo "Enabling auction and setting timers." + + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_enabled"]=true' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_rent_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_grace_period"]="300s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_commits_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + cat $HOME/.laconicd/config/genesis.json | jq '.app_state["nameservice"]["params"]["authority_auction_reveals_duration"]="60s"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json +fi + +# increase block time (?) +cat $HOME/.laconicd/config/genesis.json | jq '.consensus_params["block"]["time_iota_ms"]="1000"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + +# Set gas limit in genesis +cat $HOME/.laconicd/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="10000000"' > $HOME/.laconicd/config/tmp_genesis.json && mv $HOME/.laconicd/config/tmp_genesis.json $HOME/.laconicd/config/genesis.json + +# disable produce empty block +if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.laconicd/config/config.toml + else + sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.laconicd/config/config.toml +fi + +if [[ $1 == "pending" ]]; then + if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i '' 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.laconicd/config/config.toml + sed -i '' 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.laconicd/config/config.toml + else + sed -i 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.laconicd/config/config.toml + sed -i 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.laconicd/config/config.toml + fi +fi + +# Allocate genesis accounts (cosmos formatted addresses) +laconicd add-genesis-account $KEY 100000000000000000000000000aphoton --keyring-backend $KEYRING + +# Sign genesis transaction +laconicd gentx $KEY 1000000000000000000000aphoton --keyring-backend $KEYRING --chain-id $CHAINID + +# Collect genesis tx +laconicd collect-gentxs + +# Run this to ensure everything worked and that the genesis file is setup correctly +laconicd validate-genesis + +if [[ $1 == "pending" ]]; then + echo "pending mode is on, please wait for the first block committed." +fi + +# Start the node (remove the --pruning=nothing flag if historical queries are not needed) +laconicd start --mode validator --pruning=nothing --evm.tracer=json $TRACE --log_level $LOGLEVEL --minimum-gas-prices=0.0001aphoton --json-rpc.api eth,txpool,personal,net,debug,web3,miner --api.enable --gql-server --gql-playground From 079a86cf5a5e8de01549f1a7e2c0a504e3368c4d Mon Sep 17 00:00:00 2001 From: David Boreham Date: Wed, 12 Oct 2022 21:37:54 -0600 Subject: [PATCH 3/4] Rename to match container --- .../{cerc-laconic-client => cerc-laconic-cns-cli}/Dockerfile | 0 .../{cerc-laconic-client => cerc-laconic-cns-cli}/build.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename container-build/{cerc-laconic-client => cerc-laconic-cns-cli}/Dockerfile (100%) rename container-build/{cerc-laconic-client => cerc-laconic-cns-cli}/build.sh (100%) diff --git a/container-build/cerc-laconic-client/Dockerfile b/container-build/cerc-laconic-cns-cli/Dockerfile similarity index 100% rename from container-build/cerc-laconic-client/Dockerfile rename to container-build/cerc-laconic-cns-cli/Dockerfile diff --git a/container-build/cerc-laconic-client/build.sh b/container-build/cerc-laconic-cns-cli/build.sh similarity index 100% rename from container-build/cerc-laconic-client/build.sh rename to container-build/cerc-laconic-cns-cli/build.sh From af967dd54423b12ac9e083dbb3b25e29edc1801a Mon Sep 17 00:00:00 2001 From: David Boreham Date: Thu, 13 Oct 2022 06:14:13 -0600 Subject: [PATCH 4/4] Remove postgraphile container --- compose/docker-compose-ipld-eth-server.yml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/compose/docker-compose-ipld-eth-server.yml b/compose/docker-compose-ipld-eth-server.yml index 35f6685a..21dfd2b2 100644 --- a/compose/docker-compose-ipld-eth-server.yml +++ b/compose/docker-compose-ipld-eth-server.yml @@ -31,18 +31,3 @@ services: - "127.0.0.1:8081:8081" - "127.0.0.1:8082:8082" - graphql: - restart: unless-stopped - depends_on: - ipld-eth-db: - condition: service_healthy - image: vulcanize/postgraphile:v1.0.1 - environment: - PG_HOST: ipld-eth-db - PG_PORT: 5432 - PG_DATABASE: cerc_testing - PG_USER: vdbm - PG_PASSWORD: password - SCHEMA: public,eth - ports: - - "127.0.0.1:5000:5000"