From d16b99df7193a735abe7b481466e127bfcd1506a Mon Sep 17 00:00:00 2001 From: Ulrich Petri Date: Mon, 25 Sep 2023 11:31:27 +0200 Subject: [PATCH 01/16] Remove sentry nodes from docker setup Currently all validators connect to validator-0 instead of bootstrap (see `02-init-chain.sh:56`) --- docker/02-init-chain.sh | 45 ++++++-------- docker/04-bootstrap.sh | 2 +- docker/05-test.sh | 9 ++- docker/config.example/keyper-0.toml | 2 +- docker/config.example/keyper-1.toml | 2 +- docker/config.example/keyper-2.toml | 2 +- docker/config.example/keyper-3.toml | 2 +- docker/docker-compose.yml | 92 ++++------------------------- 8 files changed, 41 insertions(+), 115 deletions(-) diff --git a/docker/02-init-chain.sh b/docker/02-init-chain.sh index 4b2c4d1d6..9b3a3a6bf 100755 --- a/docker/02-init-chain.sh +++ b/docker/02-init-chain.sh @@ -4,13 +4,13 @@ source ./common.sh $DC stop geth $DC rm -f geth -$DC stop chain-{0..3}-{validator,sentry} chain-seed -$DC rm -f chain-{0..3}-{validator,sentry} chain-seed +$DC stop chain-{0..3}-validator chain-seed +$DC rm -f chain-{0..3}-validator chain-seed ${BB} rm -rf data/geth -${BB} rm -rf data/chain-{0..3}-{validator,sentry} data/chain-seed -${BB} mkdir -p data/chain-{0..3}-{validator,sentry}/config data/chain-seed/config -${BB} chmod -R a+rwX data/chain-{0..3}-{validator,sentry}/config data/chain-seed/config +${BB} rm -rf data/chain-{0..3}-validator data/chain-seed +${BB} mkdir -p data/chain-{0..3}-validator/config data/chain-seed/config +${BB} chmod -R a+rwX data/chain-{0..3}-validator/config data/chain-seed/config ${BB} rm -rf data/deployments # has geth as dependency @@ -19,56 +19,45 @@ $DC up deploy-contracts $DC run --rm --no-deps chain-seed init \ --root /chain \ --blocktime 1 \ - --listen-address tcp://127.0.0.1:${TM_RPC_PORT} \ + --listen-address tcp://0.0.0.0:${TM_RPC_PORT} \ --role seed for num in 0 1 2 3; do validator_cmd=chain-$num-validator - sentry_cmd=chain-$num-sentry - $DC run --rm --no-deps ${sentry_cmd} init \ - --root /chain \ - --blocktime 1 \ - --listen-address tcp://0.0.0.0:${TM_RPC_PORT} \ - --role sentry - - # TODO: check if validator can have listen-address tcp://127.0.0.1... $DC run --rm --no-deps ${validator_cmd} init \ --root /chain \ --genesis-keyper 0x440Dc6F164e9241F04d282215ceF2780cd0B755e \ --blocktime 1 \ - --listen-address tcp://127.0.0.1:${TM_RPC_PORT} \ + --listen-address tcp://0.0.0.0:${TM_RPC_PORT} \ --role validator ${BB} sed -i "/ValidatorPublicKey/c\ValidatorPublicKey = \"$(cat data/${validator_cmd}/config/priv_validator_pubkey.hex)\"" /config/keyper-${num}.toml if [ $num -eq 0 ]; then - for destination in data/chain-seed/config/ data/chain-{1..3}-validator/config/ data/chain-{0..3}-sentry/config/; do + for destination in data/chain-seed/config/ data/chain-{1..3}-validator/config/ ; do ${BB} cp -v data/chain-0-validator/config/genesis.json "${destination}" done fi done seed_node=$(cat data/chain-seed/config/node_key.json.id)@chain-seed:${TM_P2P_PORT} +validator_0_node=$(cat data/chain-0-validator/config/node_key.json.id)@chain-0-validator:${TM_P2P_PORT} -for num in 0 1 2 3; do - sentry_cmd=chain-$num-sentry +${BB} sed -i "/^moniker/c\moniker = \"chain-seed\"" data/chain-seed/config/config.toml + +for num in {0..3}; do validator_cmd=chain-$num-validator validator_id=$(cat data/${validator_cmd}/config/node_key.json.id) validator_node=${validator_id}@${validator_cmd}:${TM_P2P_PORT} - sentry_node=$(cat data/${sentry_cmd}/config/node_key.json.id)@${sentry_cmd}:${TM_P2P_PORT} - # set seed node for sentry - ${BB} sed -i "/^persistent_peers =/c\persistent_peers = \"${seed_node}\"" data/${sentry_cmd}/config/config.toml - # set validator node for sentry - ${BB} sed -i "/^private_peer_ids =/c\private_peer_ids = \"${validator_id}\"" data/${sentry_cmd}/config/config.toml - ${BB} sed -i "/^unconditional_peer_ids =/c\unconditional_peer_ids = \"${validator_id}\"" data/${sentry_cmd}/config/config.toml - ${BB} sed -i "/^external_address =/c\external_address = \"${sentry_cmd}:${TM_P2P_PORT}\"" data/${sentry_cmd}/config/config.toml - - # set sentry node for validator - ${BB} sed -i "/^persistent_peers =/c\persistent_peers = \"${sentry_node}\"" data/${validator_cmd}/config/config.toml + # set seed node for validator + ${BB} sed -i "/^bootstrap_peers =/c\bootstrap_peers = \"${validator_0_node}\"" data/${validator_cmd}/config/config.toml ${BB} sed -i "/^external_address =/c\external_address = \"${validator_cmd}:${TM_P2P_PORT}\"" data/${validator_cmd}/config/config.toml + ${BB} sed -i "/^pex/c\pex = true" data/${validator_cmd}/config/config.toml + ${BB} sed -i "/^moniker/c\moniker = \"${validator_cmd}\"" data/${validator_cmd}/config/config.toml + done $DC stop -t 30 diff --git a/docker/04-bootstrap.sh b/docker/04-bootstrap.sh index 59ab9788f..fb6481f90 100755 --- a/docker/04-bootstrap.sh +++ b/docker/04-bootstrap.sh @@ -7,5 +7,5 @@ echo "Submitting bootstrap transaction" $DC run --rm --no-deps --entrypoint /rolling-shutter chain-0-validator bootstrap \ --deployment-dir /deployments/dockerGeth \ --ethereum-url http://geth:8545 \ - --shuttermint-url http://chain-0-sentry:${TM_RPC_PORT} \ + --shuttermint-url http://chain-0-validator:${TM_RPC_PORT} \ --signing-key 479968ffa5ee4c84514a477a8f15f3db0413964fd4c20b08a55fed9fed790fad diff --git a/docker/05-test.sh b/docker/05-test.sh index 90ef592c0..72e00a737 100755 --- a/docker/05-test.sh +++ b/docker/05-test.sh @@ -3,9 +3,14 @@ source ./common.sh set +ex -echo "Testing decryption key generation" EPOCH_ID=$(LC_ALL=C tr -dc 'a-f0-9' Date: Mon, 25 Sep 2023 15:21:06 +0200 Subject: [PATCH 02/16] Change `chain init` roles This changes the `validator` role to create a configuration for a network exposed validator. The previous setting, where `--role validator` set the parameters for an isolated validator behind a `sentry` mode can now be configured by using `--role isolated-validator`. This is now more in line with the setup used in https://github.com/shutter-network/snapshot-keyper which means less configuration changes are needed during the setup. It also allows for a simpler local docker compose test setup. --- rolling-shutter/cmd/chain/init.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rolling-shutter/cmd/chain/init.go b/rolling-shutter/cmd/chain/init.go index a8ab70326..e9489efe1 100644 --- a/rolling-shutter/cmd/chain/init.go +++ b/rolling-shutter/cmd/chain/init.go @@ -24,6 +24,7 @@ import ( "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" "github.com/tendermint/tendermint/types" + "golang.org/x/exp/slices" "github.com/shutter-network/rolling-shutter/rolling-shutter/app" ) @@ -140,11 +141,12 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error { switch config.Role { case VALIDATOR: // standard validator mode, network exposed tendermintCfg.P2P.PexReactor = true + tendermintCfg.Mode = cfg.ModeValidator tendermintCfg.P2P.AddrBookStrict = true case ISOLATEDVALIDATOR: // validator mode behind a sentry node tendermintCfg.P2P.PexReactor = false tendermintCfg.P2P.AddrBookStrict = false - case SENTRY: + case SENTRY: // even though "sentry" nodes are documented, there is no special mode tendermintCfg.P2P.PexReactor = true tendermintCfg.P2P.AddrBookStrict = false case SEED: @@ -237,7 +239,7 @@ func initFilesWithConfig(tendermintConfig *cfg.Config, config *Config, appState log.Info().Str("path", genFile).Msg("Generated genesis file") } } - + nodeKeyFile := tendermintConfig.NodeKeyFile() if tmos.FileExists(nodeKeyFile) { log.Info().Str("path", nodeKeyFile).Msg("Found node key") From 51f9d51c2537d7d8b8533667e4f79e8dfda8b24d Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 25 Sep 2023 15:30:14 +0200 Subject: [PATCH 03/16] Simplify init-chain script --- docker/02-init-chain.sh | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/docker/02-init-chain.sh b/docker/02-init-chain.sh index 9b3a3a6bf..e1130baf8 100755 --- a/docker/02-init-chain.sh +++ b/docker/02-init-chain.sh @@ -16,13 +16,19 @@ ${BB} rm -rf data/deployments # has geth as dependency $DC up deploy-contracts +# setup chain-seed $DC run --rm --no-deps chain-seed init \ --root /chain \ --blocktime 1 \ --listen-address tcp://0.0.0.0:${TM_RPC_PORT} \ --role seed -for num in 0 1 2 3; do +seed_node=$(cat data/chain-seed/config/node_key.json.id)@chain-seed:${TM_P2P_PORT} + +${BB} sed -i "/^moniker/c\moniker = \"chain-seed\"" data/chain-seed/config/config.toml + +# configure validators and keypers 0-3 +for num in {0..3}; do validator_cmd=chain-$num-validator $DC run --rm --no-deps ${validator_cmd} init \ @@ -32,31 +38,26 @@ for num in 0 1 2 3; do --listen-address tcp://0.0.0.0:${TM_RPC_PORT} \ --role validator - ${BB} sed -i "/ValidatorPublicKey/c\ValidatorPublicKey = \"$(cat data/${validator_cmd}/config/priv_validator_pubkey.hex)\"" /config/keyper-${num}.toml + validator_id=$(cat data/${validator_cmd}/config/node_key.json.id) + validator_node=${validator_id}@${validator_cmd}:${TM_P2P_PORT} + validator_config_path=data/${validator_cmd}/config/config.toml + # share genesis if [ $num -eq 0 ]; then - for destination in data/chain-seed/config/ data/chain-{1..3}-validator/config/ ; do + for destination in data/chain-seed/config/ data/chain-{1..3}-validator/config/; do ${BB} cp -v data/chain-0-validator/config/genesis.json "${destination}" done fi -done -seed_node=$(cat data/chain-seed/config/node_key.json.id)@chain-seed:${TM_P2P_PORT} -validator_0_node=$(cat data/chain-0-validator/config/node_key.json.id)@chain-0-validator:${TM_P2P_PORT} - -${BB} sed -i "/^moniker/c\moniker = \"chain-seed\"" data/chain-seed/config/config.toml - -for num in {0..3}; do - validator_cmd=chain-$num-validator - - validator_id=$(cat data/${validator_cmd}/config/node_key.json.id) - validator_node=${validator_id}@${validator_cmd}:${TM_P2P_PORT} + # set validator publickey for keyper + ${BB} sed -i "/ValidatorPublicKey/c\ValidatorPublicKey = \"$(cat data/${validator_cmd}/config/priv_validator_pubkey.hex)\"" /config/keyper-${num}.toml - # set seed node for validator - ${BB} sed -i "/^bootstrap_peers =/c\bootstrap_peers = \"${validator_0_node}\"" data/${validator_cmd}/config/config.toml - ${BB} sed -i "/^external_address =/c\external_address = \"${validator_cmd}:${TM_P2P_PORT}\"" data/${validator_cmd}/config/config.toml - ${BB} sed -i "/^pex/c\pex = true" data/${validator_cmd}/config/config.toml - ${BB} sed -i "/^moniker/c\moniker = \"${validator_cmd}\"" data/${validator_cmd}/config/config.toml + # set seed node for chain bootstrap + ${BB} sed -i "/^bootstrap_peers =/c\bootstrap_peers = \"${seed_node}\"" "${validator_config_path}" + # fix external address for docker internal communication + ${BB} sed -i "/^external_address =/c\external_address = \"${validator_cmd}:${TM_P2P_PORT}\"" "${validator_config_path}" + # give a nice name + ${BB} sed -i "/^moniker/c\moniker = \"${validator_cmd}\"" "${validator_config_path}" done From 15d2cb5a003b4cc24e7dae92b08aaeeb16813be4 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 9 Dec 2024 12:13:49 +0100 Subject: [PATCH 04/16] Fix import after rebase --- rolling-shutter/cmd/chain/init.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rolling-shutter/cmd/chain/init.go b/rolling-shutter/cmd/chain/init.go index e9489efe1..dffd457e1 100644 --- a/rolling-shutter/cmd/chain/init.go +++ b/rolling-shutter/cmd/chain/init.go @@ -24,7 +24,6 @@ import ( "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" "github.com/tendermint/tendermint/types" - "golang.org/x/exp/slices" "github.com/shutter-network/rolling-shutter/rolling-shutter/app" ) @@ -141,7 +140,6 @@ func initFiles(_ *cobra.Command, config *Config, _ []string) error { switch config.Role { case VALIDATOR: // standard validator mode, network exposed tendermintCfg.P2P.PexReactor = true - tendermintCfg.Mode = cfg.ModeValidator tendermintCfg.P2P.AddrBookStrict = true case ISOLATEDVALIDATOR: // validator mode behind a sentry node tendermintCfg.P2P.PexReactor = false @@ -239,7 +237,7 @@ func initFilesWithConfig(tendermintConfig *cfg.Config, config *Config, appState log.Info().Str("path", genFile).Msg("Generated genesis file") } } - + nodeKeyFile := tendermintConfig.NodeKeyFile() if tmos.FileExists(nodeKeyFile) { log.Info().Str("path", nodeKeyFile).Msg("Found node key") From 7ab9b2daedf4e04e40dbde2868319023ad6b2c60 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 9 Dec 2024 12:45:27 +0000 Subject: [PATCH 05/16] Fix db name --- rolling-shutter/keyperimpl/snapshot/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rolling-shutter/keyperimpl/snapshot/config.go b/rolling-shutter/keyperimpl/snapshot/config.go index ac395c3d3..a4a657154 100644 --- a/rolling-shutter/keyperimpl/snapshot/config.go +++ b/rolling-shutter/keyperimpl/snapshot/config.go @@ -46,7 +46,7 @@ func (c *Config) Validate() error { } func (c *Config) Name() string { - return "keyper" + return "snapshot" } func (c *Config) SetDefaultValues() error { From 13b5e892e1a28987d95310b9a10cd12c1ad1ba07 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 9 Dec 2024 13:58:48 +0100 Subject: [PATCH 06/16] Fix database definition import --- rolling-shutter/cmd/snapshotkeyper/snapshotkeyper.go | 2 +- rolling-shutter/keyperimpl/snapshot/config.go | 2 +- rolling-shutter/keyperimpl/snapshot/database/definition.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rolling-shutter/cmd/snapshotkeyper/snapshotkeyper.go b/rolling-shutter/cmd/snapshotkeyper/snapshotkeyper.go index a6ed5e42b..7cb5cda73 100644 --- a/rolling-shutter/cmd/snapshotkeyper/snapshotkeyper.go +++ b/rolling-shutter/cmd/snapshotkeyper/snapshotkeyper.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" "github.com/shutter-network/rolling-shutter/rolling-shutter/cmd/shversion" - "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database" keyper "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/snapshot" + "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/snapshot/database" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/configuration/command" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db" "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service" diff --git a/rolling-shutter/keyperimpl/snapshot/config.go b/rolling-shutter/keyperimpl/snapshot/config.go index a4a657154..f7f2d20fd 100644 --- a/rolling-shutter/keyperimpl/snapshot/config.go +++ b/rolling-shutter/keyperimpl/snapshot/config.go @@ -46,7 +46,7 @@ func (c *Config) Validate() error { } func (c *Config) Name() string { - return "snapshot" + return "snapshotkeyper" } func (c *Config) SetDefaultValues() error { diff --git a/rolling-shutter/keyperimpl/snapshot/database/definition.go b/rolling-shutter/keyperimpl/snapshot/database/definition.go index b67bae819..4f184142c 100644 --- a/rolling-shutter/keyperimpl/snapshot/database/definition.go +++ b/rolling-shutter/keyperimpl/snapshot/database/definition.go @@ -7,7 +7,7 @@ import ( ) var Definition = db.NewAggregateDefinition( - "snapshot", + "snapshotkeyper", database.Definition, chainobsdb.CollatorDefinition, ) From ae441ded07552b4b95504b14197cad6669ffaf51 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 9 Dec 2024 14:54:29 +0100 Subject: [PATCH 07/16] DEBUG db version validation --- rolling-shutter/medley/db/connect.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rolling-shutter/medley/db/connect.go b/rolling-shutter/medley/db/connect.go index 22ab75b66..9ff1d6998 100644 --- a/rolling-shutter/medley/db/connect.go +++ b/rolling-shutter/medley/db/connect.go @@ -13,6 +13,7 @@ import ( ) func ValidateDBVersion(ctx context.Context, dbpool *pgxpool.Pool, role string) error { + log.Info().Str("role", role).Msg("FOO: ValidateDBVersion called") err := dbpool.BeginFunc( ctx, func(tx pgx.Tx) error { @@ -28,16 +29,19 @@ func ValidateDBVersion(ctx context.Context, dbpool *pgxpool.Pool, role string) e // Connect to the database `url` from within a runner.Start() method // and create the pgxpool.Pool. func Connect(ctx context.Context, runner service.Runner, url, version string) (*pgxpool.Pool, error) { + log.Info().Str("version", version).Msg("FOO: initiating connection") dbpool, err := pgxpool.Connect(ctx, url) if err != nil { return nil, err } runner.Defer(dbpool.Close) - + log.Info().Str("version", version).Msg("FOO: validating db version") err = ValidateDBVersion(ctx, dbpool, version) + log.Info().Str("version", version).Msg("FOO: validation complete") if err != nil { return nil, err } + log.Info().Str("version", version).Msg("creating connection info") shdb.AddConnectionInfo(log.Info(), dbpool).Msg("connected to database") return dbpool, nil } From 41f67a4680115c340312c727e69faeed02f0f527 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Tue, 10 Dec 2024 11:22:50 +0100 Subject: [PATCH 08/16] More DEBUG --- rolling-shutter/keyper/keyper.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rolling-shutter/keyper/keyper.go b/rolling-shutter/keyper/keyper.go index f417ae4c1..b49f35061 100644 --- a/rolling-shutter/keyper/keyper.go +++ b/rolling-shutter/keyper/keyper.go @@ -103,6 +103,7 @@ func (kpr *KeyperCore) initOptions(ctx context.Context, runner service.Runner) e return err } if kpr.opts.dbpool == nil { + log.Info().Str("name", database.Definition.Name()).Msg("FOO: initOptions Connect") // connect, but don't validate any database version. // If that is desired, it should be done in the keyper-implementation kpr.dbpool, err = db.Connect(ctx, runner, kpr.config.DatabaseURL, database.Definition.Name()) @@ -127,15 +128,18 @@ func (kpr *KeyperCore) initOptions(ctx context.Context, runner service.Runner) e func (kpr *KeyperCore) Start(ctx context.Context, runner service.Runner) error { config := kpr.config + log.Info().Str("name", database.Definition.Name()).Msg("FOO: Core Start called") err := kpr.initOptions(ctx, runner) if err != nil { return err } + log.Info().Str("name", database.Definition.Name()).Msg("FOO: calling beginFunc") err = kpr.dbpool.BeginFunc(db.WrapContext(ctx, database.Definition.Validate)) if err != nil { return err } + log.Info().Str("name", database.Definition.Name()).Msg("FOO: calling LinkConfigToDB") err = LinkConfigToDB(ctx, config, kpr.dbpool) if err != nil { return err @@ -164,6 +168,7 @@ func (kpr *KeyperCore) Start(ctx context.Context, runner service.Runner) error { epochkghandler.NewEonPublicKeyHandler(kpr.config, kpr.dbpool), ) kpr.messaging.AddMessageHandler(kpr.opts.messageHandler...) + log.Info().Str("name", database.Definition.Name()).Msg("FOO: calling StartService") return runner.StartService(kpr.getServices()...) } From 1d03324001d1c5aa21fc119e4dce7c3e4e9b94ac Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Thu, 12 Dec 2024 14:38:01 +0000 Subject: [PATCH 09/16] WIP --- docker/.env | 1 + docker/02-init-chain.sh | 3 +++ docker/build-src/deploy_contracts/Dockerfile | 14 ++++++++------ docker/build-src/geth/Dockerfile | 2 +- docker/config.gnosis/.gitignore | 2 ++ .../grafana/provisioning/datasources/vm.yaml | 8 ++++++++ docker/docker-compose.yml | 18 +++++++++++++----- docker/tools.sh | 19 +++++++++++++++++++ 8 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 docker/config.gnosis/.gitignore create mode 100644 docker/config.gnosis/grafana/provisioning/datasources/vm.yaml create mode 100644 docker/tools.sh diff --git a/docker/.env b/docker/.env index f18da9d92..e03b3be28 100644 --- a/docker/.env +++ b/docker/.env @@ -1 +1,2 @@ COMPOSE_PROJECT_NAME=snapshutter +DEPLOY_KEY=0x44ea0c624dbec53682a11482f732dcd4e8581ed181fbfe2ad69e88523dc0a312 diff --git a/docker/02-init-chain.sh b/docker/02-init-chain.sh index e1130baf8..8e6275ddb 100755 --- a/docker/02-init-chain.sh +++ b/docker/02-init-chain.sh @@ -14,6 +14,9 @@ ${BB} chmod -R a+rwX data/chain-{0..3}-validator/config data/chain-seed/config ${BB} rm -rf data/deployments # has geth as dependency +$DC up -d geth +sleep 5 +sh tools.sh $DC up deploy-contracts # setup chain-seed diff --git a/docker/build-src/deploy_contracts/Dockerfile b/docker/build-src/deploy_contracts/Dockerfile index 211a22c5e..95a759700 100644 --- a/docker/build-src/deploy_contracts/Dockerfile +++ b/docker/build-src/deploy_contracts/Dockerfile @@ -1,13 +1,15 @@ -FROM node:16.16 +FROM alpine/git AS builder -RUN mkdir /contracts +RUN git clone https://github.com/shutter-network/contracts /contracts COPY /contracts/package*.json /contracts/ WORKDIR /contracts -RUN --mount=type=cache,target=/root/.npm npm install +#COPY /contracts /contracts -COPY /contracts /contracts +FROM ghcr.io/foundry-rs/foundry:latest AS runner +WORKDIR /contracts +COPY --from=builder /contracts /contracts -ENTRYPOINT ["npx", "hardhat", "--network", "dockerGeth"] -CMD ["deploy"] +RUN forge build +ENTRYPOINT ["forge", "script"] diff --git a/docker/build-src/geth/Dockerfile b/docker/build-src/geth/Dockerfile index ddbc15aee..73a896e1a 100644 --- a/docker/build-src/geth/Dockerfile +++ b/docker/build-src/geth/Dockerfile @@ -1,4 +1,4 @@ -FROM ethereum/client-go:v1.10.20 +FROM ethereum/client-go:v1.14.12 RUN apk add --no-cache curl diff --git a/docker/config.gnosis/.gitignore b/docker/config.gnosis/.gitignore new file mode 100644 index 000000000..28e1e28bf --- /dev/null +++ b/docker/config.gnosis/.gitignore @@ -0,0 +1,2 @@ +*.toml +*.json diff --git a/docker/config.gnosis/grafana/provisioning/datasources/vm.yaml b/docker/config.gnosis/grafana/provisioning/datasources/vm.yaml new file mode 100644 index 000000000..5defdf2be --- /dev/null +++ b/docker/config.gnosis/grafana/provisioning/datasources/vm.yaml @@ -0,0 +1,8 @@ +apiVersion: 1 + +datasources: + - name: VictoriaMetrics + type: victoriametrics-datasource + access: proxy + url: http://metrics:8428 + isDefault: true diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d31c75af7..e2a3cd3d7 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -34,8 +34,8 @@ services: command: > --datadir /data --dev - --dev.period 1 --ipcdisable + --dev.period 1 --http --http.addr 0.0.0.0 --http.vhosts geth @@ -48,13 +48,21 @@ services: logging: *logging deploy-contracts: + image: footest build: dockerfile: docker/build-src/deploy_contracts/Dockerfile context: .. + command: + - "script/Deploy.gnosh.s.sol" + - "--rpc-url" + - "http://geth:8545" + - "--broadcast" volumes: - ./data/deployments:/contracts/deployments - ./config:/config environment: + DEPLOY_KEY: ${DEPLOY_KEY} + PRIVATE_KEY: ${DEPLOY_KEY} DEPLOY_CONF: /config/node-deploy.json KEYPER_SET_INDEX: 0 depends_on: @@ -217,7 +225,7 @@ services: entrypoint: - /rolling-shutter - "--loglevel=:debug,basichost:info,swarm:info,swarm2:info,net/identify:info,pubsub:info,p2p-config:info,upgrader:info" - - snapshotkeyper + - gnosiskeyper command: "--config /config/keyper-0.toml" volumes: - ./config:/config @@ -243,7 +251,7 @@ services: entrypoint: - /rolling-shutter - "--loglevel=:debug,basichost:info,swarm:info,swarm2:info,net/identify:info,pubsub:info,p2p-config:info,upgrader:info" - - snapshotkeyper + - gnosiskeyper command: "--config /config/keyper-1.toml" volumes: - ./config:/config @@ -269,7 +277,7 @@ services: entrypoint: - /rolling-shutter - "--loglevel=:debug,basichost:info,swarm:info,swarm2:info,net/identify:info,pubsub:info,p2p-config:info,upgrader:info" - - snapshotkeyper + - gnosiskeyper command: "--config /config/keyper-2.toml" volumes: - ./config:/config @@ -295,7 +303,7 @@ services: entrypoint: - /rolling-shutter - "--loglevel=:debug,basichost:info,swarm:info,swarm2:info,net/identify:info,pubsub:info,p2p-config:info,upgrader:info" - - snapshotkeyper + - gnosiskeyper command: "--config /config/keyper-3.toml" volumes: - ./config:/config diff --git a/docker/tools.sh b/docker/tools.sh new file mode 100644 index 000000000..54f05300e --- /dev/null +++ b/docker/tools.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e + +## Fund account + +# DEPLOY PRIVATE KEY=44ea0c624dbec53682a11482f732dcd4e8581ed181fbfe2ad69e88523dc0a312 +DEPLOY_ACCOUNT="0x346a9357D8EB6F0FbC4894ed6DBb1eCCA1051c09" + +DEV_ACCOUNT=$(docker run --rm -it --network snapshutter_default curlimages/curl -Ss -H "Content-Type: application/json" -XPOST http://geth:8545 -d '{ + "jsonrpc":"2.0", + "method":"eth_accounts", + "params":[], + "id":1 +}'|jq -r ".result[0]") + + +DATA=$(jq -nc --arg dev "$DEV_ACCOUNT" --arg deploy "$DEPLOY_ACCOUNT" '{ jsonrpc:"2.0", method:"eth_sendTransaction", params:[{ from: $dev, to: $deploy, value: "0xc097ce7bc90715b34b9f1000000000" }], id:1}') + +docker run --rm -it --network snapshutter_default curlimages/curl -H "Content-Type: application/json" -XPOST http://geth:8545 -d $DATA From 78bf4feaed7c816c69147f94b47edd432f79a98d Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Thu, 12 Dec 2024 16:05:43 +0000 Subject: [PATCH 10/16] Parse contract addresses from forge deployment --- docker/02-init-chain.sh | 1 + docker/build-src/deploy_contracts/Dockerfile | 3 ++- docker/config.snapshot/.gitignore | 2 ++ .../grafana/provisioning/datasources/vm.yaml | 8 ++++++ docker/docker-compose.yml | 2 +- docker/get-contracts.sh | 25 +++++++++++++++++++ 6 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 docker/config.snapshot/.gitignore create mode 100644 docker/config.snapshot/grafana/provisioning/datasources/vm.yaml create mode 100755 docker/get-contracts.sh diff --git a/docker/02-init-chain.sh b/docker/02-init-chain.sh index 8e6275ddb..0724cb2d7 100755 --- a/docker/02-init-chain.sh +++ b/docker/02-init-chain.sh @@ -19,6 +19,7 @@ sleep 5 sh tools.sh $DC up deploy-contracts +bash get-contracts.sh # setup chain-seed $DC run --rm --no-deps chain-seed init \ --root /chain \ diff --git a/docker/build-src/deploy_contracts/Dockerfile b/docker/build-src/deploy_contracts/Dockerfile index 95a759700..0deba2ee2 100644 --- a/docker/build-src/deploy_contracts/Dockerfile +++ b/docker/build-src/deploy_contracts/Dockerfile @@ -1,6 +1,7 @@ FROM alpine/git AS builder -RUN git clone https://github.com/shutter-network/contracts /contracts +RUN date +RUN git clone --branch=docker_deploy_gnosis https://github.com/shutter-network/contracts /contracts COPY /contracts/package*.json /contracts/ WORKDIR /contracts diff --git a/docker/config.snapshot/.gitignore b/docker/config.snapshot/.gitignore new file mode 100644 index 000000000..28e1e28bf --- /dev/null +++ b/docker/config.snapshot/.gitignore @@ -0,0 +1,2 @@ +*.toml +*.json diff --git a/docker/config.snapshot/grafana/provisioning/datasources/vm.yaml b/docker/config.snapshot/grafana/provisioning/datasources/vm.yaml new file mode 100644 index 000000000..5defdf2be --- /dev/null +++ b/docker/config.snapshot/grafana/provisioning/datasources/vm.yaml @@ -0,0 +1,8 @@ +apiVersion: 1 + +datasources: + - name: VictoriaMetrics + type: victoriametrics-datasource + access: proxy + url: http://metrics:8428 + isDefault: true diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index e2a3cd3d7..8ff8da9d0 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -58,7 +58,7 @@ services: - "http://geth:8545" - "--broadcast" volumes: - - ./data/deployments:/contracts/deployments + - ./data/deployments:/contracts/broadcast - ./config:/config environment: DEPLOY_KEY: ${DEPLOY_KEY} diff --git a/docker/get-contracts.sh b/docker/get-contracts.sh new file mode 100755 index 000000000..8134f45af --- /dev/null +++ b/docker/get-contracts.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +## Needs to be bash, for the variable expansion to work! +source ./common.sh +set -e + +CONTRACTS_JSON=$(jq '.transactions[]|(select(.function==null))|{(.contractName|tostring): .contractAddress}' data/deployments/Deploy.gnosh.s.sol/1337/run-latest.json) +#echo ${CONTRACTS_JSON} | jq -r ".[]|to_entries" + + +for s in $(echo ${CONTRACTS_JSON} | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")| .[] " ); do + export $s +done + +for cfg in keyper-{0..3}.toml; +do + config_path=config/${cfg}; + echo $config_path + + for name in KeyperSetManager KeyperSet KeyBroadcastContract Sequencer ValidatorRegistry; + do + key=$name + value="${!name}" + ${BB} sed -i "/^$key =/c$key = \"$value\"" "${config_path}" + done +done From dd8caa48ffe00b7b009b2ff5e445383925d1256e Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Thu, 12 Dec 2024 16:08:12 +0000 Subject: [PATCH 11/16] Maintain config folders for different deployments --- docker/config.gnosis/.gitignore | 2 - docker/config.gnosis/bootnode-0.toml | 16 ++++++ docker/config.gnosis/bootnode-1.toml | 16 ++++++ docker/config.gnosis/bootnode0.toml | 29 ++++++++++ docker/config.gnosis/bootnode1.toml | 29 ++++++++++ docker/config.gnosis/collator.toml | 32 +++++++++++ docker/config.gnosis/keyper-0.toml | 70 +++++++++++++++++++++++++ docker/config.gnosis/keyper-1.toml | 70 +++++++++++++++++++++++++ docker/config.gnosis/keyper-2.toml | 69 ++++++++++++++++++++++++ docker/config.gnosis/keyper-3.toml | 68 ++++++++++++++++++++++++ docker/config.gnosis/keyper0.toml | 63 ++++++++++++++++++++++ docker/config.gnosis/keyper1.toml | 63 ++++++++++++++++++++++ docker/config.gnosis/keyper2.toml | 63 ++++++++++++++++++++++ docker/config.gnosis/keyper3.toml | 63 ++++++++++++++++++++++ docker/config.gnosis/node-deploy.json | 18 +++++++ docker/config.gnosis/work.toml | 70 +++++++++++++++++++++++++ docker/config.snapshot/.gitignore | 2 - docker/config.snapshot/bootnode-0.toml | 16 ++++++ docker/config.snapshot/bootnode-1.toml | 16 ++++++ docker/config.snapshot/bootnode0.toml | 29 ++++++++++ docker/config.snapshot/bootnode1.toml | 29 ++++++++++ docker/config.snapshot/collator.toml | 32 +++++++++++ docker/config.snapshot/keyper-0.toml | 46 ++++++++++++++++ docker/config.snapshot/keyper-1.toml | 46 ++++++++++++++++ docker/config.snapshot/keyper-2.toml | 45 ++++++++++++++++ docker/config.snapshot/keyper-3.toml | 44 ++++++++++++++++ docker/config.snapshot/keyper0.toml | 63 ++++++++++++++++++++++ docker/config.snapshot/keyper1.toml | 63 ++++++++++++++++++++++ docker/config.snapshot/keyper2.toml | 63 ++++++++++++++++++++++ docker/config.snapshot/keyper3.toml | 63 ++++++++++++++++++++++ docker/config.snapshot/node-deploy.json | 18 +++++++ docker/config.snapshot/snapshot.toml | 40 ++++++++++++++ 32 files changed, 1352 insertions(+), 4 deletions(-) delete mode 100644 docker/config.gnosis/.gitignore create mode 100644 docker/config.gnosis/bootnode-0.toml create mode 100644 docker/config.gnosis/bootnode-1.toml create mode 100644 docker/config.gnosis/bootnode0.toml create mode 100644 docker/config.gnosis/bootnode1.toml create mode 100644 docker/config.gnosis/collator.toml create mode 100644 docker/config.gnosis/keyper-0.toml create mode 100644 docker/config.gnosis/keyper-1.toml create mode 100644 docker/config.gnosis/keyper-2.toml create mode 100644 docker/config.gnosis/keyper-3.toml create mode 100644 docker/config.gnosis/keyper0.toml create mode 100644 docker/config.gnosis/keyper1.toml create mode 100644 docker/config.gnosis/keyper2.toml create mode 100644 docker/config.gnosis/keyper3.toml create mode 100644 docker/config.gnosis/node-deploy.json create mode 100644 docker/config.gnosis/work.toml delete mode 100644 docker/config.snapshot/.gitignore create mode 100644 docker/config.snapshot/bootnode-0.toml create mode 100644 docker/config.snapshot/bootnode-1.toml create mode 100644 docker/config.snapshot/bootnode0.toml create mode 100644 docker/config.snapshot/bootnode1.toml create mode 100644 docker/config.snapshot/collator.toml create mode 100644 docker/config.snapshot/keyper-0.toml create mode 100644 docker/config.snapshot/keyper-1.toml create mode 100644 docker/config.snapshot/keyper-2.toml create mode 100644 docker/config.snapshot/keyper-3.toml create mode 100644 docker/config.snapshot/keyper0.toml create mode 100644 docker/config.snapshot/keyper1.toml create mode 100644 docker/config.snapshot/keyper2.toml create mode 100644 docker/config.snapshot/keyper3.toml create mode 100644 docker/config.snapshot/node-deploy.json create mode 100644 docker/config.snapshot/snapshot.toml diff --git a/docker/config.gnosis/.gitignore b/docker/config.gnosis/.gitignore deleted file mode 100644 index 28e1e28bf..000000000 --- a/docker/config.gnosis/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.toml -*.json diff --git a/docker/config.gnosis/bootnode-0.toml b/docker/config.gnosis/bootnode-0.toml new file mode 100644 index 000000000..34c957b3b --- /dev/null +++ b/docker/config.gnosis/bootnode-0.toml @@ -0,0 +1,16 @@ +# Peer identity: /p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ +# Peer role: bootstrap + +# whether to register handlers on the messages and log them +InstanceID = 0 +ListenMessages = true + +[P2P] +P2PKey = "CAESQKFtiMAqd2c8bQ/mfPStxViY970MNtWUVWdn44rUoQXAfv7ztSQ9nLeqliXrkuqKi3XUObyAfH+Py3eMbHFvIpM=" +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' diff --git a/docker/config.gnosis/bootnode-1.toml b/docker/config.gnosis/bootnode-1.toml new file mode 100644 index 000000000..1a19f55da --- /dev/null +++ b/docker/config.gnosis/bootnode-1.toml @@ -0,0 +1,16 @@ +# Peer identity: /p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo +# Peer role: bootstrap + +# whether to register handlers on the messages and log them +InstanceID = 0 +ListenMessages = true + +[P2P] +P2PKey = "CAESQCywBzANmzk2gFd63qkQ8+PlZzy/IqK9Wuv5d6FB1cYh+SggYvQ9pBD5FPLqTbc7garDqgQUJz/6Gpi6Ssbcx44=" +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' diff --git a/docker/config.gnosis/bootnode0.toml b/docker/config.gnosis/bootnode0.toml new file mode 100644 index 000000000..bccae3a02 --- /dev/null +++ b/docker/config.gnosis/bootnode0.toml @@ -0,0 +1,29 @@ +# Peer identity: /p2p/12D3KooWPt2Eh4uTNw8smCNFs7PT68DXdVNyDrQEHFzzgnJWWdS3 +# Peer role: bootstrap + + +# whether to register handlers on the messages and log them +ListenMessages = true + +[P2P] +P2PKey = 'CAESQNfnoz3CQaZy/6rlfhHe48TksOc07kPiVe19hrnldjbH0PNnMHMeSJu9D9kd6MKcrc9OE0emziqRnBUdGCXW/XQ=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/bootnode1.toml b/docker/config.gnosis/bootnode1.toml new file mode 100644 index 000000000..a6cd2170d --- /dev/null +++ b/docker/config.gnosis/bootnode1.toml @@ -0,0 +1,29 @@ +# Peer identity: /p2p/12D3KooWEUQAo6evsiqAbwGaoXT4WcmLATdgikQ9w4KDmGNa4kK7 +# Peer role: bootstrap + + +# whether to register handlers on the messages and log them +ListenMessages = true + +[P2P] +P2PKey = 'CAESQEJ6NhABhjCtDfPfaPoAsLIq9UK9jdpxvQYODZmRTJwFRS0UsuQQY3/PX19cVqrc9pBXRiDTxQIcnVNNshXIBI4=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/collator.toml b/docker/config.gnosis/collator.toml new file mode 100644 index 000000000..cf194f74f --- /dev/null +++ b/docker/config.gnosis/collator.toml @@ -0,0 +1,32 @@ +# Note: for snapshot shutter, we don't need to run a collator! + +# Peer identity: /p2p/12D3KooWFsVXBunDMNQZ8LLvS7BpY85Bop8isZaFAq6NVL7nLzUj +# Ethereum address: 0x2E135FE171fB6351026B75aF688a7F9689B66B87 + + +InstanceID = 0 +DatabaseURL = "postgres://postgres@db:5432/collator" +HTTPListenAddress = ':3000' +SequencerURL = "http://geth:8545/" +EpochDuration = '1s' +ExecutionBlockDelay = 5 +BatchIndexAcceptenceInterval = 5 + +[P2P] +P2PKey = "CAESQDTb6IrZcY37WUI2Ld42H4ixyA7S/7ttXBUt0J9EwuPGWfMtbuNarlScRbqIz6Dm8jZqZWkpECDx8r8PwXB97ZQ=" +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] + +[Ethereum] + +PrivateKey = "215ddd19b91c54252bb956c7f88e42122a61bd45a562d5bae38bc2328a9b52d0" +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = "http://geth:8545/" +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" diff --git a/docker/config.gnosis/keyper-0.toml b/docker/config.gnosis/keyper-0.toml new file mode 100644 index 000000000..c6a4c4fc2 --- /dev/null +++ b/docker/config.gnosis/keyper-0.toml @@ -0,0 +1,70 @@ + +# Peer identity: /p2p/12D3KooWQ8iKQe4iEfkTh3gdBtpxWsKwx3BwrA18km5rq3Zwt2QF +# Ethereum address: 0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-0" +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQJ3NdZ6mRrDAW/Z59OKwcKdOCbZQ45z5o8K+tLHOL8Xw1LbawPZLk3mXNyiDyADcLk1bqYMe3uQ6T8xi65zkM0A=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 +SyncMonitorCheckInterval = 30 + +[Gnosis.Node] +PrivateKey = '82904d1c48d3a27d218408fc2db3e743f554a69b05b91d28c2897a9026ea47df' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Gnosis.Contracts] +KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" +KeyBroadcastContract = "0x11389b254727b0cdd3ec6b874b688b4a664090fb" +Sequencer = "0x813d13b8b75528e301afc1f0ff5c4d34fde37f36" +ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" + +[Ethereum] +PrivateKey = '82904d1c48d3a27d218408fc2db3e743f554a69b05b91d28c2897a9026ea47df' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-0-validator:26657" +ValidatorPublicKey = "a2d003fcfd2547e8e0d7865b0cee3557e04d5bd806660874baa327d909368acf" +EncryptionKey = 'e5c124eb4d3c13fa46532107b69b5abfa11e8aaf3a7a86d11ef370470834e076' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.gnosis/keyper-1.toml b/docker/config.gnosis/keyper-1.toml new file mode 100644 index 000000000..a1c81ea53 --- /dev/null +++ b/docker/config.gnosis/keyper-1.toml @@ -0,0 +1,70 @@ + +# Peer identity: /p2p/12D3KooWGksg5G2oau6EgdJFLiQoKaMvzPJnTCuoPScZcmZRdkny +# Ethereum address: 0x539cF80D345d26525A47dB80De0fAb147D588fDa + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-1" +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQO+t2CR93jdMq/FDqZf2+KIY9kLhKA1rZY9WFherSqvZZxzY8W4y5hSBrW5u79SDCvbLcmo7kEwu6VsK0NjZnxY=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Ethereum] +PrivateKey = '939babbad75cbcc42eef92496ce86ede989ba96918bbc6cc0efcc498f9cc0887' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 +SyncMonitorCheckInterval = 30 + +[Gnosis.Node] +PrivateKey = '939babbad75cbcc42eef92496ce86ede989ba96918bbc6cc0efcc498f9cc0887' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://geth:8545/' + +[Gnosis.Contracts] +KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" +KeyBroadcastContract = "0x11389b254727b0cdd3ec6b874b688b4a664090fb" +Sequencer = "0x813d13b8b75528e301afc1f0ff5c4d34fde37f36" +ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" + +[Shuttermint] +ShuttermintURL = "http://chain-1-validator:26657" +ValidatorPublicKey = "baa575e63e3a686d6c4ce61a0075f8b8d5107badf5e38121feb93f7c46f83443" +EncryptionKey = '8972bbbcf5b4a9eaef0030b1eff64332e7188ff4dd523314176956b5c624ca8b' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.gnosis/keyper-2.toml b/docker/config.gnosis/keyper-2.toml new file mode 100644 index 000000000..a60dde836 --- /dev/null +++ b/docker/config.gnosis/keyper-2.toml @@ -0,0 +1,69 @@ +# Peer identity: /p2p/12D3KooWLwtKMLJqRGWB3AGi87u8Sc7hwp6a6PDMAyWEAsHnjGJG +# Ethereum address: 0x4F01A5A4Ef09c08Df83A85885516424A4a53be68 + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-2" +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQJrsyuTYZZpjqfbXTtMbrQOuS1XtzD+M6ssAZLo5R26fpV218+TTRXw4mkAdaxWpIDX0ZEQH5NC8A8+1nWvbF2U=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 +SyncMonitorCheckInterval = 30 + +[Gnosis.Node] +PrivateKey = 'e9383a24352f05bc11895c0da19efb6b83c726f05643c38f64b4146f19215125' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://geth:8545/' + +[Gnosis.Contracts] +KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" +KeyBroadcastContract = "0x11389b254727b0cdd3ec6b874b688b4a664090fb" +Sequencer = "0x813d13b8b75528e301afc1f0ff5c4d34fde37f36" +ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" + +[Ethereum] +PrivateKey = 'e9383a24352f05bc11895c0da19efb6b83c726f05643c38f64b4146f19215125' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-2-validator:26657" +ValidatorPublicKey = "715176f9cee457f92a5eae3e5b40df49e3674445ed21fb38ffd0f7b480bc4013" +EncryptionKey = 'ee014227e5b6209682f31c967b4a21c6617a02bc5f11f644f5f54f6d613906b9' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.gnosis/keyper-3.toml b/docker/config.gnosis/keyper-3.toml new file mode 100644 index 000000000..10a1f8935 --- /dev/null +++ b/docker/config.gnosis/keyper-3.toml @@ -0,0 +1,68 @@ +# Peer identity: /p2p/12D3KooWQHp6UiLdi46qyettnq664LkjqwFv8yKhxA1tLHi1C73c +# Ethereum address: 0x03C82916552440f803b6284B40a0d64C5eb4E779 + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-3" +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQH9VL1y+iPWZeVK+ga3pIy33JNpkX0bdKyON/45ut+gG1wudK44qlCp/pcE40rEk4NljSzkfHs7Ez86wIfN8YEc=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Ethereum] +PrivateKey = 'e728f5f1254b4c645ff2f2181fc114f4bb6ab2a995df2f6d97f1f220f5936898' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 +SyncMonitorCheckInterval = 30 + +[Gnosis.Node] +PrivateKey = 'e728f5f1254b4c645ff2f2181fc114f4bb6ab2a995df2f6d97f1f220f5936898' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://geth:8545/' + +[Gnosis.Contracts] +KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" +KeyBroadcastContract = "0x11389b254727b0cdd3ec6b874b688b4a664090fb" +Sequencer = "0x813d13b8b75528e301afc1f0ff5c4d34fde37f36" +ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" + +[Shuttermint] +ShuttermintURL = "http://chain-3-validator:26657" +ValidatorPublicKey = "39fd823ce2b68fcaee3a00480fae8c1b38bb1d278747d379af2ffc4fe6f22ac8" +EncryptionKey = '13c24d4a50e53bdb4cf8ae328491fd10fbf1bc0118ff6adad1340fa77eaf9c3c' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.gnosis/keyper0.toml b/docker/config.gnosis/keyper0.toml new file mode 100644 index 000000000..0483c603b --- /dev/null +++ b/docker/config.gnosis/keyper0.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0xcC389b9540238A026f0D744f4a89F5FD4CDa1A43 +# Peer identity: /p2p/12D3KooWSmAD1twafZMHLSYJX1zzuJcP8EggZQnKx3a3KmKCu1Vi + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = '19b197b5173b7a5844204245ea61a3739fd698bd61655f13316718de99bd9bf8' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQIA+h5ZuaUT9zF5tlDxPwhE/uWEgydbclkk70PwgTesd+8RpQi8rd6REqTwhheo9Me9KdckrNu0HoagRePq9d5E=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = '9b7d54bf92be1ee6625f6d789f3e0ee2ff4d125bb73537db04a6fd538118f425' +EncryptionKey = 'a3266ff2904ecee87c1a61a8f2e25087bfebf3ab44f64be4be679d203e466f77' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/keyper1.toml b/docker/config.gnosis/keyper1.toml new file mode 100644 index 000000000..be7114d52 --- /dev/null +++ b/docker/config.gnosis/keyper1.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0x68faB7db16eF0c9BF4cBFa40a459f50997676270 +# Peer identity: /p2p/12D3KooWPLM5fMq3Sa72ZUHj5xbSGF1KjP3QnwWGu2Pev2U14sEK + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = 'ab44f3f9959bf5937c98c80d9297e375d165c47032209aaf0b4766bbf843ade2' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQEK5upov0lG+cphyupljXszdC/2g5/xITGtxuQgaMiHryNYf4WRDeLquUhMi08qUvAPfLKYXNU+sRrK9HgJNMiQ=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = '252c0cae4661dd6b10781887e218215d81a48b4645d2d5cfe5b48d60bd2efb4a' +EncryptionKey = 'c2f4f975c32c4253d4fad4b5e9a41d7f699e03f810b4c86cdcadb06ef19185bc' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/keyper2.toml b/docker/config.gnosis/keyper2.toml new file mode 100644 index 000000000..ba4477b2d --- /dev/null +++ b/docker/config.gnosis/keyper2.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0x5065f92b465B3893A482A4499afb2C8b7659B4a3 +# Peer identity: /p2p/12D3KooWLYufY9XTC7apVv1PPPKg5wMB5JXPkgStbiTHE34RHkAL + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = '690147ddd4bf8aa96254fa65438fef73da1ba6c92e2c4909daa3f865f9779b39' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQEyaMOX2cueplqMgqqGoZTsE+E3Jidsxk5jcis6z3UIpn3rgWnUSC/0H1nkNW1cThrEVf19k1HDqL0QKjbbFwQk=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = 'c907db71a964ea7e8b55a1bfb3df381d0f6a3abf5960e0edcc0e093df25aa410' +EncryptionKey = '97292f16453b3e37b3d74011a181f4d2c7e3b9630fa50e2eb6dd4496b4e3dfbd' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/keyper3.toml b/docker/config.gnosis/keyper3.toml new file mode 100644 index 000000000..1dd2394f5 --- /dev/null +++ b/docker/config.gnosis/keyper3.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0xA23a39a531Fa747EfCf5bE13e53816b100F18194 +# Peer identity: /p2p/12D3KooWAPdQ2NmDUj7fwoYip1FUA2Y63iGEdav16XWYtFEHw2uu + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = 'db096bae97b5749054f47da9537e14e7c01db6f24203428c8f06553439a9e67c' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQIH0njjyp0dtKsq9A0tRTO58qoQhol/10v2RpVIuPvvICIVi2orsFPGndjQigslvwEQyFJTVCZF9cICiSS8LJ7A=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = 'e9f99dcb962f204738b52be48187ce2d5063776e23cdb572b29739cd0b9c7c12' +EncryptionKey = '9603cae69c5282f8480edb5278eefd79df1819b6838bd30ebf137823e67154f7' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/node-deploy.json b/docker/config.gnosis/node-deploy.json new file mode 100644 index 000000000..b0716211a --- /dev/null +++ b/docker/config.gnosis/node-deploy.json @@ -0,0 +1,18 @@ +{ + "keypers": [ + [ + "0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c", + "0x539cF80D345d26525A47dB80De0fAb147D588fDa", + "0x4F01A5A4Ef09c08Df83A85885516424A4a53be68" + ], + [ + "0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c", + "0x539cF80D345d26525A47dB80De0fAb147D588fDa", + "0x03C82916552440f803b6284B40a0d64C5eb4E779" + ] + ], + "decryptors": ["0x0000000000000000000000000000000000000000"], + "collator": "0x2E135FE171fB6351026B75aF688a7F9689B66B87", + "fundValue": "1000", + "activationBlockOffset": 30 +} diff --git a/docker/config.gnosis/work.toml b/docker/config.gnosis/work.toml new file mode 100644 index 000000000..5cae3c0b7 --- /dev/null +++ b/docker/config.gnosis/work.toml @@ -0,0 +1,70 @@ + +# Peer identity: /p2p/12D3KooWQ8iKQe4iEfkTh3gdBtpxWsKwx3BwrA18km5rq3Zwt2QF +# Ethereum address: 0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-0" +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQJ3NdZ6mRrDAW/Z59OKwcKdOCbZQ45z5o8K+tLHOL8Xw1LbawPZLk3mXNyiDyADcLk1bqYMe3uQ6T8xi65zkM0A=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 +SyncMonitorCheckInterval = 30 + +[Gnosis.Node] +PrivateKey = '82904d1c48d3a27d218408fc2db3e743f554a69b05b91d28c2897a9026ea47df' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Gnosis.Contracts] +KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" +KeyBroadcastContract = "0x11389b254727b0cdd3ec6b874b688b4a664090fb" +Sequencer = "0x813d13b8b75528e301afc1f0ff5c4d34fde37f36" +ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" + +[Ethereum] +PrivateKey = '82904d1c48d3a27d218408fc2db3e743f554a69b05b91d28c2897a9026ea47df' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-0-validator-1:26657" +ValidatorPublicKey = "5a69a8b19d6e17f67c94e36fe7a21e3386533a626198902dd487daba8229cb6c" +EncryptionKey = 'e5c124eb4d3c13fa46532107b69b5abfa11e8aaf3a7a86d11ef370470834e076' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.snapshot/.gitignore b/docker/config.snapshot/.gitignore deleted file mode 100644 index 28e1e28bf..000000000 --- a/docker/config.snapshot/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.toml -*.json diff --git a/docker/config.snapshot/bootnode-0.toml b/docker/config.snapshot/bootnode-0.toml new file mode 100644 index 000000000..34c957b3b --- /dev/null +++ b/docker/config.snapshot/bootnode-0.toml @@ -0,0 +1,16 @@ +# Peer identity: /p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ +# Peer role: bootstrap + +# whether to register handlers on the messages and log them +InstanceID = 0 +ListenMessages = true + +[P2P] +P2PKey = "CAESQKFtiMAqd2c8bQ/mfPStxViY970MNtWUVWdn44rUoQXAfv7ztSQ9nLeqliXrkuqKi3XUObyAfH+Py3eMbHFvIpM=" +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' diff --git a/docker/config.snapshot/bootnode-1.toml b/docker/config.snapshot/bootnode-1.toml new file mode 100644 index 000000000..1a19f55da --- /dev/null +++ b/docker/config.snapshot/bootnode-1.toml @@ -0,0 +1,16 @@ +# Peer identity: /p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo +# Peer role: bootstrap + +# whether to register handlers on the messages and log them +InstanceID = 0 +ListenMessages = true + +[P2P] +P2PKey = "CAESQCywBzANmzk2gFd63qkQ8+PlZzy/IqK9Wuv5d6FB1cYh+SggYvQ9pBD5FPLqTbc7garDqgQUJz/6Gpi6Ssbcx44=" +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' diff --git a/docker/config.snapshot/bootnode0.toml b/docker/config.snapshot/bootnode0.toml new file mode 100644 index 000000000..bccae3a02 --- /dev/null +++ b/docker/config.snapshot/bootnode0.toml @@ -0,0 +1,29 @@ +# Peer identity: /p2p/12D3KooWPt2Eh4uTNw8smCNFs7PT68DXdVNyDrQEHFzzgnJWWdS3 +# Peer role: bootstrap + + +# whether to register handlers on the messages and log them +ListenMessages = true + +[P2P] +P2PKey = 'CAESQNfnoz3CQaZy/6rlfhHe48TksOc07kPiVe19hrnldjbH0PNnMHMeSJu9D9kd6MKcrc9OE0emziqRnBUdGCXW/XQ=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.snapshot/bootnode1.toml b/docker/config.snapshot/bootnode1.toml new file mode 100644 index 000000000..a6cd2170d --- /dev/null +++ b/docker/config.snapshot/bootnode1.toml @@ -0,0 +1,29 @@ +# Peer identity: /p2p/12D3KooWEUQAo6evsiqAbwGaoXT4WcmLATdgikQ9w4KDmGNa4kK7 +# Peer role: bootstrap + + +# whether to register handlers on the messages and log them +ListenMessages = true + +[P2P] +P2PKey = 'CAESQEJ6NhABhjCtDfPfaPoAsLIq9UK9jdpxvQYODZmRTJwFRS0UsuQQY3/PX19cVqrc9pBXRiDTxQIcnVNNshXIBI4=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.snapshot/collator.toml b/docker/config.snapshot/collator.toml new file mode 100644 index 000000000..cf194f74f --- /dev/null +++ b/docker/config.snapshot/collator.toml @@ -0,0 +1,32 @@ +# Note: for snapshot shutter, we don't need to run a collator! + +# Peer identity: /p2p/12D3KooWFsVXBunDMNQZ8LLvS7BpY85Bop8isZaFAq6NVL7nLzUj +# Ethereum address: 0x2E135FE171fB6351026B75aF688a7F9689B66B87 + + +InstanceID = 0 +DatabaseURL = "postgres://postgres@db:5432/collator" +HTTPListenAddress = ':3000' +SequencerURL = "http://geth:8545/" +EpochDuration = '1s' +ExecutionBlockDelay = 5 +BatchIndexAcceptenceInterval = 5 + +[P2P] +P2PKey = "CAESQDTb6IrZcY37WUI2Ld42H4ixyA7S/7ttXBUt0J9EwuPGWfMtbuNarlScRbqIz6Dm8jZqZWkpECDx8r8PwXB97ZQ=" +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] + +[Ethereum] + +PrivateKey = "215ddd19b91c54252bb956c7f88e42122a61bd45a562d5bae38bc2328a9b52d0" +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = "http://geth:8545/" +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" diff --git a/docker/config.snapshot/keyper-0.toml b/docker/config.snapshot/keyper-0.toml new file mode 100644 index 000000000..6a28ea4e2 --- /dev/null +++ b/docker/config.snapshot/keyper-0.toml @@ -0,0 +1,46 @@ + +# Peer identity: /p2p/12D3KooWQ8iKQe4iEfkTh3gdBtpxWsKwx3BwrA18km5rq3Zwt2QF +# Ethereum address: 0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-0" +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQJ3NdZ6mRrDAW/Z59OKwcKdOCbZQ45z5o8K+tLHOL8Xw1LbawPZLk3mXNyiDyADcLk1bqYMe3uQ6T8xi65zkM0A=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Ethereum] +PrivateKey = '82904d1c48d3a27d218408fc2db3e743f554a69b05b91d28c2897a9026ea47df' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-0-validator-1:26657" +ValidatorPublicKey = "272adbfdd30113011c4492d0ebbd6ad250b2e6798adfa469783b485028700d54" +EncryptionKey = 'e5c124eb4d3c13fa46532107b69b5abfa11e8aaf3a7a86d11ef370470834e076' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.snapshot/keyper-1.toml b/docker/config.snapshot/keyper-1.toml new file mode 100644 index 000000000..4fb31f431 --- /dev/null +++ b/docker/config.snapshot/keyper-1.toml @@ -0,0 +1,46 @@ + +# Peer identity: /p2p/12D3KooWGksg5G2oau6EgdJFLiQoKaMvzPJnTCuoPScZcmZRdkny +# Ethereum address: 0x539cF80D345d26525A47dB80De0fAb147D588fDa + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-1" +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQO+t2CR93jdMq/FDqZf2+KIY9kLhKA1rZY9WFherSqvZZxzY8W4y5hSBrW5u79SDCvbLcmo7kEwu6VsK0NjZnxY=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Ethereum] +PrivateKey = '939babbad75cbcc42eef92496ce86ede989ba96918bbc6cc0efcc498f9cc0887' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-1-validator-1:26657" +ValidatorPublicKey = "472feec7a833384dadf98dd0d3c869410bfb016a3fa0debce6bcfba0ca4663bc" +EncryptionKey = '8972bbbcf5b4a9eaef0030b1eff64332e7188ff4dd523314176956b5c624ca8b' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.snapshot/keyper-2.toml b/docker/config.snapshot/keyper-2.toml new file mode 100644 index 000000000..566a5005b --- /dev/null +++ b/docker/config.snapshot/keyper-2.toml @@ -0,0 +1,45 @@ +# Peer identity: /p2p/12D3KooWLwtKMLJqRGWB3AGi87u8Sc7hwp6a6PDMAyWEAsHnjGJG +# Ethereum address: 0x4F01A5A4Ef09c08Df83A85885516424A4a53be68 + + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-2" +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQJrsyuTYZZpjqfbXTtMbrQOuS1XtzD+M6ssAZLo5R26fpV218+TTRXw4mkAdaxWpIDX0ZEQH5NC8A8+1nWvbF2U=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Ethereum] +PrivateKey = 'e9383a24352f05bc11895c0da19efb6b83c726f05643c38f64b4146f19215125' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-2-validator-1:26657" +ValidatorPublicKey = "129f3ff4871a4d938843cdbb862fabe3ddea5a6dde2b615f1abf0d896ac428f0" +EncryptionKey = 'ee014227e5b6209682f31c967b4a21c6617a02bc5f11f644f5f54f6d613906b9' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.snapshot/keyper-3.toml b/docker/config.snapshot/keyper-3.toml new file mode 100644 index 000000000..05b83e5db --- /dev/null +++ b/docker/config.snapshot/keyper-3.toml @@ -0,0 +1,44 @@ +# Peer identity: /p2p/12D3KooWQHp6UiLdi46qyettnq664LkjqwFv8yKhxA1tLHi1C73c +# Ethereum address: 0x03C82916552440f803b6284B40a0d64C5eb4E779 + +InstanceID = 0 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = "postgres://postgres@db:5432/keyper-3" +HTTPEnabled = false +HTTPListenAddress = ':3000' + +[P2P] +P2PKey = 'CAESQH9VL1y+iPWZeVK+ga3pIy33JNpkX0bdKyON/45ut+gG1wudK44qlCp/pcE40rEk4NljSzkfHs7Ez86wIfN8YEc=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[Ethereum] +PrivateKey = 'e728f5f1254b4c645ff2f2181fc114f4bb6ab2a995df2f6d97f1f220f5936898' +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = "/deployments/dockerGeth/" +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Shuttermint] +ShuttermintURL = "http://chain-3-validator-1:26657" +ValidatorPublicKey = "feca1dfd7fab3877c05d99e0e900dd1fc2c17d88d82750bda6ff0b11b41375b3" +EncryptionKey = '13c24d4a50e53bdb4cf8ae328491fd10fbf1bc0118ff6adad1340fa77eaf9c3c' +DKGPhaseLength = 8 +DKGStartBlockDelta = 200 + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 diff --git a/docker/config.snapshot/keyper0.toml b/docker/config.snapshot/keyper0.toml new file mode 100644 index 000000000..0483c603b --- /dev/null +++ b/docker/config.snapshot/keyper0.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0xcC389b9540238A026f0D744f4a89F5FD4CDa1A43 +# Peer identity: /p2p/12D3KooWSmAD1twafZMHLSYJX1zzuJcP8EggZQnKx3a3KmKCu1Vi + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = '19b197b5173b7a5844204245ea61a3739fd698bd61655f13316718de99bd9bf8' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQIA+h5ZuaUT9zF5tlDxPwhE/uWEgydbclkk70PwgTesd+8RpQi8rd6REqTwhheo9Me9KdckrNu0HoagRePq9d5E=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = '9b7d54bf92be1ee6625f6d789f3e0ee2ff4d125bb73537db04a6fd538118f425' +EncryptionKey = 'a3266ff2904ecee87c1a61a8f2e25087bfebf3ab44f64be4be679d203e466f77' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.snapshot/keyper1.toml b/docker/config.snapshot/keyper1.toml new file mode 100644 index 000000000..be7114d52 --- /dev/null +++ b/docker/config.snapshot/keyper1.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0x68faB7db16eF0c9BF4cBFa40a459f50997676270 +# Peer identity: /p2p/12D3KooWPLM5fMq3Sa72ZUHj5xbSGF1KjP3QnwWGu2Pev2U14sEK + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = 'ab44f3f9959bf5937c98c80d9297e375d165c47032209aaf0b4766bbf843ade2' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQEK5upov0lG+cphyupljXszdC/2g5/xITGtxuQgaMiHryNYf4WRDeLquUhMi08qUvAPfLKYXNU+sRrK9HgJNMiQ=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = '252c0cae4661dd6b10781887e218215d81a48b4645d2d5cfe5b48d60bd2efb4a' +EncryptionKey = 'c2f4f975c32c4253d4fad4b5e9a41d7f699e03f810b4c86cdcadb06ef19185bc' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.snapshot/keyper2.toml b/docker/config.snapshot/keyper2.toml new file mode 100644 index 000000000..ba4477b2d --- /dev/null +++ b/docker/config.snapshot/keyper2.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0x5065f92b465B3893A482A4499afb2C8b7659B4a3 +# Peer identity: /p2p/12D3KooWLYufY9XTC7apVv1PPPKg5wMB5JXPkgStbiTHE34RHkAL + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = '690147ddd4bf8aa96254fa65438fef73da1ba6c92e2c4909daa3f865f9779b39' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQEyaMOX2cueplqMgqqGoZTsE+E3Jidsxk5jcis6z3UIpn3rgWnUSC/0H1nkNW1cThrEVf19k1HDqL0QKjbbFwQk=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = 'c907db71a964ea7e8b55a1bfb3df381d0f6a3abf5960e0edcc0e093df25aa410' +EncryptionKey = '97292f16453b3e37b3d74011a181f4d2c7e3b9630fa50e2eb6dd4496b4e3dfbd' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.snapshot/keyper3.toml b/docker/config.snapshot/keyper3.toml new file mode 100644 index 000000000..1dd2394f5 --- /dev/null +++ b/docker/config.snapshot/keyper3.toml @@ -0,0 +1,63 @@ +# Ethereum address: 0xA23a39a531Fa747EfCf5bE13e53816b100F18194 +# Peer identity: /p2p/12D3KooWAPdQ2NmDUj7fwoYip1FUA2Y63iGEdav16XWYtFEHw2uu + + +InstanceID = 42 +# If it's empty, we use the standard PG_ environment variables +DatabaseURL = 'postgres://pguser:pgpassword@localhost:5432/shutter' +BeaconAPIURL = 'http://localhost:5052' +HTTPEnabled = false +HTTPListenAddress = ':3000' +MaxNumKeysPerMessage = 500 + +[Gnosis] +EncryptedGasLimit = 1000000 +MinGasPerTransaction = 21000 +MaxTxPointerAge = 5 +SecondsPerSlot = 5 +SlotsPerEpoch = 16 +GenesisSlotTimestamp = 1665410700 +SyncStartBlockNumber = 0 + +[Gnosis.Node] +PrivateKey = 'db096bae97b5749054f47da9537e14e7c01db6f24203428c8f06553439a9e67c' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = 'http://127.0.0.1:8545/' + +[Gnosis.Contracts] +KeyperSetManager = '0x0000000000000000000000000000000000000000' +KeyBroadcastContract = '0x0000000000000000000000000000000000000000' +Sequencer = '0x0000000000000000000000000000000000000000' +ValidatorRegistry = '0x0000000000000000000000000000000000000000' + +[P2P] +P2PKey = 'CAESQIH0njjyp0dtKsq9A0tRTO58qoQhol/10v2RpVIuPvvICIVi2orsFPGndjQigslvwEQyFJTVCZF9cICiSS8LJ7A=' +ListenAddresses = ['/ip4/0.0.0.0/tcp/0', '/ip4/0.0.0.0/udp/0/quic-v1', '/ip4/0.0.0.0/udp/0/quic-v1/webtransport', '/ip6/::/tcp/0', '/ip6/::/udp/0/quic-v1', '/ip6/::/udp/0/quic-v1/webtransport'] +# Optional, addresses to be advertised to other peers instead of auto-detected ones. +AdvertiseAddresses = [] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = ['/ip4/127.0.0.1/tcp/2001/p2p/QmdfBeR6odD1pRKendUjWejhMd9wybivDq5RjixhRhiERg', '/ip4/127.0.0.1/tcp/2002/p2p/QmV9YbMDLDi736vTzy97jn54p43o74fLxc5DnLUrcmK6WP'] +Environment = 'production' +# Must be unique for each instance id. +DiscoveryNamespace = 'shutter-42' +# Optional, to be set to true if running an access node +IsAccessNode = false + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Shuttermint] +ShuttermintURL = 'http://localhost:26657' +ValidatorPublicKey = 'e9f99dcb962f204738b52be48187ce2d5063776e23cdb572b29739cd0b9c7c12' +EncryptionKey = '9603cae69c5282f8480edb5278eefd79df1819b6838bd30ebf137823e67154f7' +DKGPhaseLength = 30 +DKGStartBlockDelta = 200 + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.snapshot/node-deploy.json b/docker/config.snapshot/node-deploy.json new file mode 100644 index 000000000..b0716211a --- /dev/null +++ b/docker/config.snapshot/node-deploy.json @@ -0,0 +1,18 @@ +{ + "keypers": [ + [ + "0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c", + "0x539cF80D345d26525A47dB80De0fAb147D588fDa", + "0x4F01A5A4Ef09c08Df83A85885516424A4a53be68" + ], + [ + "0xCDD50A6F9B1439dc14c4f2A7eaF14dA1EF5A476c", + "0x539cF80D345d26525A47dB80De0fAb147D588fDa", + "0x03C82916552440f803b6284B40a0d64C5eb4E779" + ] + ], + "decryptors": ["0x0000000000000000000000000000000000000000"], + "collator": "0x2E135FE171fB6351026B75aF688a7F9689B66B87", + "fundValue": "1000", + "activationBlockOffset": 30 +} diff --git a/docker/config.snapshot/snapshot.toml b/docker/config.snapshot/snapshot.toml new file mode 100644 index 000000000..356685add --- /dev/null +++ b/docker/config.snapshot/snapshot.toml @@ -0,0 +1,40 @@ + +# Peer identity: /p2p/12D3KooWGFa3hxTrzU27tgCNE94NP2Wb5my6iS2ty19M3yW24Jeq +# Ethereum address: 0x2E135FE171fB6351026B75aF688a7F9689B66B87 + + +InstanceID = 0 +DatabaseURL = "postgres://postgres@db:5432/snapshot" +SnapshotHubURL = "http://dummyserver:5000" +JSONRPCHost = '' +JSONRPCPort = 8754 + +[P2P] +P2PKey = 'CAESQIL98WGKWUdyzp8mznCV8jJv5Lqsbz2jDNqaY7BXrjCJX5sSskzcPC6U25ZRn98qyvXrunN9DT8AkS1T5PcD/Z4=' +ListenAddresses = ["/ip4/0.0.0.0/tcp/23000"] +# Overwrite p2p boostrap nodes +CustomBootstrapAddresses = [ + "/dns4/bootnode-0/tcp/23000/p2p/12D3KooWJN7262vmnEQHkYG7VrZDwz9fMyJtHyvGp4XSenuUYfeJ", + "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" +] +DiscoveryNamespace = 'shutter-local' + +[P2P.FloodSubDiscovery] +Enabled = false +Interval = 10 +Topics = [] + +[Ethereum] +# Ethereum Private keyh (we reuse the collator EthereumKey, so snapshot can be authorized against collator contract) +PrivateKey = "215ddd19b91c54252bb956c7f88e42122a61bd45a562d5bae38bc2328a9b52d0" +# The JSON RPC endpoint where the contracts are accessible +ContractsURL = 'http://127.0.0.1:8555/' +# Contract source directory +DeploymentDir = '/deployments/localhost/' +# The layer 1 JSON RPC endpoint +EthereumURL = "http://geth:8545/" + +[Metrics] +Enabled = true +Host = "[::]" +Port = 9100 From 9d285d575b436363a7904349c6c800171896f11d Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Thu, 12 Dec 2024 16:12:02 +0000 Subject: [PATCH 12/16] Fix bootnode configs for gnosis docker --- docker/config.gnosis/bootnode-0.toml | 10 ++++++++++ docker/config.gnosis/bootnode-1.toml | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/docker/config.gnosis/bootnode-0.toml b/docker/config.gnosis/bootnode-0.toml index 34c957b3b..10371216a 100644 --- a/docker/config.gnosis/bootnode-0.toml +++ b/docker/config.gnosis/bootnode-0.toml @@ -14,3 +14,13 @@ CustomBootstrapAddresses = [ "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" ] DiscoveryNamespace = 'shutter-local' + +[P2P.FloodSubDiscovery] +Enabled = true +Interval = 10 +Topics = [] + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 diff --git a/docker/config.gnosis/bootnode-1.toml b/docker/config.gnosis/bootnode-1.toml index 1a19f55da..01846b9df 100644 --- a/docker/config.gnosis/bootnode-1.toml +++ b/docker/config.gnosis/bootnode-1.toml @@ -14,3 +14,13 @@ CustomBootstrapAddresses = [ "/dns4/bootnode-1/tcp/23000/p2p/12D3KooWSayB2PEYpXtdk2dEqFaagoy8kDzmWpoD9DieuuzYdcBo" ] DiscoveryNamespace = 'shutter-local' + +[P2P.FloodSubDiscovery] +Enabled = true +Interval = 10 +Topics = [] + +[Metrics] +Enabled = false +Host = '[::]' +Port = 9100 From 47ddb0ed74bbf47c47b5893cf0f54f11ed0fd736 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 16 Dec 2024 14:17:56 +0000 Subject: [PATCH 13/16] Use geth --dev account as initial keyper --- docker/02-init-chain.sh | 2 +- docker/env.template | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 docker/env.template diff --git a/docker/02-init-chain.sh b/docker/02-init-chain.sh index 0724cb2d7..7dbb15008 100755 --- a/docker/02-init-chain.sh +++ b/docker/02-init-chain.sh @@ -37,7 +37,7 @@ for num in {0..3}; do $DC run --rm --no-deps ${validator_cmd} init \ --root /chain \ - --genesis-keyper 0x440Dc6F164e9241F04d282215ceF2780cd0B755e \ + --genesis-keyper 0x346a9357D8EB6F0FbC4894ed6DBb1eCCA1051c09 \ --blocktime 1 \ --listen-address tcp://0.0.0.0:${TM_RPC_PORT} \ --role validator diff --git a/docker/env.template b/docker/env.template new file mode 100644 index 000000000..0e2d980c8 --- /dev/null +++ b/docker/env.template @@ -0,0 +1,3 @@ +COMPOSE_PROJECT_NAME=snapshutter +# This is the default key for `geth --dev` +DEPLOY_KEY=0x44ea0c624dbec53682a11482f732dcd4e8581ed181fbfe2ad69e88523dc0a312 From c90895b0c64258ab9f457e857f82e3573a2b8f05 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 16 Dec 2024 14:19:02 +0000 Subject: [PATCH 14/16] Use op-bootstrap command --- docker/02-init-chain.sh | 2 +- docker/04-bootstrap.sh | 6 +----- docker/config.gnosis/bootstrap.toml | 8 ++++++++ docker/get-contracts.sh | 5 +++++ 4 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 docker/config.gnosis/bootstrap.toml diff --git a/docker/02-init-chain.sh b/docker/02-init-chain.sh index 7dbb15008..8b3840fe2 100755 --- a/docker/02-init-chain.sh +++ b/docker/02-init-chain.sh @@ -57,7 +57,7 @@ for num in {0..3}; do ${BB} sed -i "/ValidatorPublicKey/c\ValidatorPublicKey = \"$(cat data/${validator_cmd}/config/priv_validator_pubkey.hex)\"" /config/keyper-${num}.toml # set seed node for chain bootstrap - ${BB} sed -i "/^bootstrap_peers =/c\bootstrap_peers = \"${seed_node}\"" "${validator_config_path}" + ${BB} sed -i "/^seeds =/c\seeds = \"${seed_node}\"" "${validator_config_path}" # fix external address for docker internal communication ${BB} sed -i "/^external_address =/c\external_address = \"${validator_cmd}:${TM_P2P_PORT}\"" "${validator_config_path}" # give a nice name diff --git a/docker/04-bootstrap.sh b/docker/04-bootstrap.sh index fb6481f90..eee8c042e 100755 --- a/docker/04-bootstrap.sh +++ b/docker/04-bootstrap.sh @@ -4,8 +4,4 @@ source ./common.sh echo "Submitting bootstrap transaction" -$DC run --rm --no-deps --entrypoint /rolling-shutter chain-0-validator bootstrap \ - --deployment-dir /deployments/dockerGeth \ - --ethereum-url http://geth:8545 \ - --shuttermint-url http://chain-0-validator:${TM_RPC_PORT} \ - --signing-key 479968ffa5ee4c84514a477a8f15f3db0413964fd4c20b08a55fed9fed790fad +docker run --rm -it --network snapshutter_default -v /root/rolling-shutter/docker/config:/config -v /root/rolling-shutter/docker/data/bootstrap:/data rolling-shutter op-bootstrap --config /config/bootstrap.toml diff --git a/docker/config.gnosis/bootstrap.toml b/docker/config.gnosis/bootstrap.toml new file mode 100644 index 000000000..4ae258e18 --- /dev/null +++ b/docker/config.gnosis/bootstrap.toml @@ -0,0 +1,8 @@ +InstanceID = 42 +# The op-geth JSON RPC endpoint +JSONRPCURL = 'http://geth:8545' +KeyperSetManager = "0x0000000000000000000000000000000000000000" +ByIndex = 1 +KeyperSetFilePath = '/config/keyperset.json' +ShuttermintURL = 'http://chain:26657' +SigningKey = "0000000000000000000000000000000000000000000000000000000000000000" diff --git a/docker/get-contracts.sh b/docker/get-contracts.sh index 8134f45af..f26d95c0b 100755 --- a/docker/get-contracts.sh +++ b/docker/get-contracts.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash ## Needs to be bash, for the variable expansion to work! source ./common.sh +source .env set -e CONTRACTS_JSON=$(jq '.transactions[]|(select(.function==null))|{(.contractName|tostring): .contractAddress}' data/deployments/Deploy.gnosh.s.sol/1337/run-latest.json) @@ -23,3 +24,7 @@ do ${BB} sed -i "/^$key =/c$key = \"$value\"" "${config_path}" done done + +echo "Setting up bootstrap.toml" +${BB} sed -i "/^KeyperSetManager =/cKeyperSetManager = \"${KeyperSetManager}\"" "config/bootstrap.toml" +${BB} sed -i "/^SigningKey =/cSigningKey = \"$(echo $DEPLOY_KEY|cut -b3-)\"" "config/bootstrap.toml" From 531596a57bff5d220d65c05f0e2e3c6ff5fdbde7 Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 16 Dec 2024 14:20:19 +0000 Subject: [PATCH 15/16] Use websocket geth --- docker/config.gnosis/keyper-0.toml | 6 +++--- docker/config.gnosis/keyper-1.toml | 6 +++--- docker/config.gnosis/keyper-2.toml | 4 ++-- docker/config.gnosis/keyper-3.toml | 6 +++--- docker/docker-compose.yml | 2 ++ 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/docker/config.gnosis/keyper-0.toml b/docker/config.gnosis/keyper-0.toml index c6a4c4fc2..252e9f83c 100644 --- a/docker/config.gnosis/keyper-0.toml +++ b/docker/config.gnosis/keyper-0.toml @@ -35,7 +35,7 @@ PrivateKey = '82904d1c48d3a27d218408fc2db3e743f554a69b05b91d28c2897a9026ea47df' # Contract source directory DeploymentDir = '/deployments/localhost/' # The layer 1 JSON RPC endpoint -EthereumURL = "http://geth:8545/" +EthereumURL = "ws://geth:8546/" [Gnosis.Contracts] KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" @@ -50,11 +50,11 @@ ContractsURL = 'http://127.0.0.1:8555/' # Contract source directory DeploymentDir = "/deployments/dockerGeth/" # The layer 1 JSON RPC endpoint -EthereumURL = "http://geth:8545/" +EthereumURL = "ws://geth:8546/" [Shuttermint] ShuttermintURL = "http://chain-0-validator:26657" -ValidatorPublicKey = "a2d003fcfd2547e8e0d7865b0cee3557e04d5bd806660874baa327d909368acf" +ValidatorPublicKey = "a00439642ca229a867008898d6d95445b90aece0ad910c694df5f43e9a606fbe" EncryptionKey = 'e5c124eb4d3c13fa46532107b69b5abfa11e8aaf3a7a86d11ef370470834e076' DKGPhaseLength = 8 DKGStartBlockDelta = 200 diff --git a/docker/config.gnosis/keyper-1.toml b/docker/config.gnosis/keyper-1.toml index a1c81ea53..f90c9f81b 100644 --- a/docker/config.gnosis/keyper-1.toml +++ b/docker/config.gnosis/keyper-1.toml @@ -27,7 +27,7 @@ ContractsURL = 'http://127.0.0.1:8555/' # Contract source directory DeploymentDir = "/deployments/dockerGeth/" # The layer 1 JSON RPC endpoint -EthereumURL = "http://geth:8545/" +EthereumURL = "ws://geth:8546/" [Gnosis] EncryptedGasLimit = 1000000 @@ -44,7 +44,7 @@ PrivateKey = '939babbad75cbcc42eef92496ce86ede989ba96918bbc6cc0efcc498f9cc0887' # Contract source directory DeploymentDir = '/deployments/localhost/' # The layer 1 JSON RPC endpoint -EthereumURL = 'http://geth:8545/' +EthereumURL = "ws://geth:8546/" [Gnosis.Contracts] KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" @@ -54,7 +54,7 @@ ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" [Shuttermint] ShuttermintURL = "http://chain-1-validator:26657" -ValidatorPublicKey = "baa575e63e3a686d6c4ce61a0075f8b8d5107badf5e38121feb93f7c46f83443" +ValidatorPublicKey = "7ab992829d9826ed71602ec9088ae6f101f8a1621385f0803af24e2cefdb7568" EncryptionKey = '8972bbbcf5b4a9eaef0030b1eff64332e7188ff4dd523314176956b5c624ca8b' DKGPhaseLength = 8 DKGStartBlockDelta = 200 diff --git a/docker/config.gnosis/keyper-2.toml b/docker/config.gnosis/keyper-2.toml index a60dde836..33a4d8e52 100644 --- a/docker/config.gnosis/keyper-2.toml +++ b/docker/config.gnosis/keyper-2.toml @@ -49,11 +49,11 @@ ContractsURL = 'http://127.0.0.1:8555/' # Contract source directory DeploymentDir = "/deployments/dockerGeth/" # The layer 1 JSON RPC endpoint -EthereumURL = "http://geth:8545/" +EthereumURL = "ws://geth:8546/" [Shuttermint] ShuttermintURL = "http://chain-2-validator:26657" -ValidatorPublicKey = "715176f9cee457f92a5eae3e5b40df49e3674445ed21fb38ffd0f7b480bc4013" +ValidatorPublicKey = "010fc888ef61ce97b0b5e59b2b37cf2f26912439e81f4d6b9819c0b8cd39be37" EncryptionKey = 'ee014227e5b6209682f31c967b4a21c6617a02bc5f11f644f5f54f6d613906b9' DKGPhaseLength = 8 DKGStartBlockDelta = 200 diff --git a/docker/config.gnosis/keyper-3.toml b/docker/config.gnosis/keyper-3.toml index 10a1f8935..f62c6b824 100644 --- a/docker/config.gnosis/keyper-3.toml +++ b/docker/config.gnosis/keyper-3.toml @@ -25,7 +25,7 @@ ContractsURL = 'http://127.0.0.1:8555/' # Contract source directory DeploymentDir = "/deployments/dockerGeth/" # The layer 1 JSON RPC endpoint -EthereumURL = "http://geth:8545/" +EthereumURL = "ws://geth:8546/" [Gnosis] EncryptedGasLimit = 1000000 @@ -42,7 +42,7 @@ PrivateKey = 'e728f5f1254b4c645ff2f2181fc114f4bb6ab2a995df2f6d97f1f220f5936898' # Contract source directory DeploymentDir = '/deployments/localhost/' # The layer 1 JSON RPC endpoint -EthereumURL = 'http://geth:8545/' +EthereumURL = "ws://geth:8546/" [Gnosis.Contracts] KeyperSetManager = "0xd9013c930ca8a417138e5103002a3444208c920c" @@ -52,7 +52,7 @@ ValidatorRegistry = "0xd96291f87495f81421bba525a205a652768e1828" [Shuttermint] ShuttermintURL = "http://chain-3-validator:26657" -ValidatorPublicKey = "39fd823ce2b68fcaee3a00480fae8c1b38bb1d278747d379af2ffc4fe6f22ac8" +ValidatorPublicKey = "742a4ae5c8ddb7097c757e4bd7cec18e507a937959acb1a4ff78f03a9ad83fff" EncryptionKey = '13c24d4a50e53bdb4cf8ae328491fd10fbf1bc0118ff6adad1340fa77eaf9c3c' DKGPhaseLength = 8 DKGStartBlockDelta = 200 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 8ff8da9d0..56d86b2cd 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -39,6 +39,8 @@ services: --http --http.addr 0.0.0.0 --http.vhosts geth + --ws + --ws.addr 0.0.0.0 # No idea why this is suddenly needed - the HEALTHCHECK is defined in the dockerfile but doesn't get picked up anymore... healthcheck: test: > From 1d21eb0e546c03052ad04064f3eb1703e8fce8ee Mon Sep 17 00:00:00 2001 From: Konrad Feldmeier Date: Mon, 16 Dec 2024 14:48:41 +0000 Subject: [PATCH 16/16] Add comment --- docker/.env | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/.env b/docker/.env index e03b3be28..0e2d980c8 100644 --- a/docker/.env +++ b/docker/.env @@ -1,2 +1,3 @@ COMPOSE_PROJECT_NAME=snapshutter +# This is the default key for `geth --dev` DEPLOY_KEY=0x44ea0c624dbec53682a11482f732dcd4e8581ed181fbfe2ad69e88523dc0a312