From 6afe5ea77b780f02bfd7853cff18bf8c33125264 Mon Sep 17 00:00:00 2001 From: Simon Paitrault Date: Wed, 25 Oct 2023 10:07:23 +0200 Subject: [PATCH 1/2] chore: fixing requirement for docker github workflow Signed-off-by: Simon Paitrault --- .github/workflows/docker_utils.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker_utils.yml b/.github/workflows/docker_utils.yml index 99d34c902..5a0ff4079 100644 --- a/.github/workflows/docker_utils.yml +++ b/.github/workflows/docker_utils.yml @@ -20,7 +20,7 @@ on: type: string default: stable features: - required: true + required: false type: string default: tce,sequencer,network,node,subnet outputs: From 47e6d585bc70988b795b832975112902ff29ab2d Mon Sep 17 00:00:00 2001 From: Simon Paitrault Date: Wed, 25 Oct 2023 15:02:53 +0200 Subject: [PATCH 2/2] fix: fixing docker setup Signed-off-by: Simon Paitrault --- .github/workflows/docker_build_push.yml | 5 +- .gitignore | 3 + Dockerfile | 12 +- .../src/behaviour/grpc/connection.rs | 1 - crates/topos-tce-storage/src/epoch/tables.rs | 7 +- crates/topos-tce-storage/src/index/mod.rs | 7 +- .../topos-tce-storage/src/validator/tables.rs | 17 +- crates/topos-wallet/src/lib.rs | 2 +- tools/docker-compose.yml | 55 +++--- tools/env/node.env | 6 - tools/init.sh | 159 +++--------------- tools/libp2p_keys.json | 1 - tools/node_config/node/boot/config.toml | 13 ++ .../node/boot/consensus/validator-bls.key | 1 + .../node/boot/consensus/validator.key | 1 + tools/node_config/node/boot/libp2p/libp2p.key | 1 + tools/node_config/node/test/config.toml | 10 +- tools/node_config/subnet/topos/genesis.json | 2 +- tools/peer_nodes.json | 12 +- tools/validator_bls_keys.json | 1 - tools/validator_keys.json | 1 - 21 files changed, 128 insertions(+), 189 deletions(-) create mode 100644 tools/node_config/node/boot/config.toml create mode 100644 tools/node_config/node/boot/consensus/validator-bls.key create mode 100644 tools/node_config/node/boot/consensus/validator.key create mode 100644 tools/node_config/node/boot/libp2p/libp2p.key diff --git a/.github/workflows/docker_build_push.yml b/.github/workflows/docker_build_push.yml index a9d5cda7c..821ec3cf8 100644 --- a/.github/workflows/docker_build_push.yml +++ b/.github/workflows/docker_build_push.yml @@ -62,7 +62,7 @@ jobs: max_attempts: 5 retry_wait_seconds: 40 timeout_minutes: 10 - on_retry_command: docker inspect --format "{{ .Id }} {{ .State.Health.Status }}" $(docker compose -f tools/docker-compose.yml ps -aq peer boot) | grep "healthy$" | cut -d ' ' -f 1 | xargs -I{} sh -c 'echo "\nLogs for => {}\n" && docker logs {}' + on_retry_command: docker inspect --format "{{ .Name }} {{ .State.Health.Status }}" $(docker compose -f tools/docker-compose.yml ps -aq peer boot) | grep "healthy$" | cut -d ' ' -f 1 | xargs -I{} sh -c 'echo "\nLogs for => {}\n" && docker logs {}' command: | EXPECTED=$(docker compose -f tools/docker-compose.yml ps -aq peer boot|wc -l) COUNT=$(docker inspect --format "{{.State.Health.Status }}" $(docker compose -f tools/docker-compose.yml ps -aq peer boot)|grep "^healthy$"|wc -l) @@ -84,7 +84,8 @@ jobs: frontend-erc20-e2e: runs-on: ubuntu-latest needs: docker - if: ${{ github.event_name == 'pull_request' }} + # if: ${{ github.event_name == 'pull_request' }} + if: ${{ false }} # disable for now because of: TP-768 steps: - name: Set environment run: | diff --git a/.gitignore b/.gitignore index 2a2726a74..58286f411 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,6 @@ polygon-edge # macOS directory attributes **/.DS_Store + +tools/node_config/node/test/libp2p/ +tools/node_config/node/test/consensus/ diff --git a/Dockerfile b/Dockerfile index 3a53738a9..ad497838c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,15 +25,6 @@ ENV USER=topos ENV UID=10001 ENV PATH="${PATH}:/usr/src/app" -RUN adduser \ - --disabled-password \ - --gecos "" \ - --home "/nonexistent" \ - --shell "/sbin/nologin" \ - --no-create-home \ - --uid "${UID}" \ - "${USER}" - WORKDIR /usr/src/app COPY --from=build /usr/src/app/target/release/topos . @@ -46,8 +37,7 @@ RUN apt-get update && apt-get install -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -USER topos:topos - +RUN mkdir /tmp/node_config RUN mkdir /tmp/shared ENTRYPOINT ["./init.sh"] diff --git a/crates/topos-p2p/src/behaviour/grpc/connection.rs b/crates/topos-p2p/src/behaviour/grpc/connection.rs index 28e204f32..5725977b7 100644 --- a/crates/topos-p2p/src/behaviour/grpc/connection.rs +++ b/crates/topos-p2p/src/behaviour/grpc/connection.rs @@ -64,7 +64,6 @@ impl IntoFuture for OutboundConnection { type IntoFuture = BoxFuture<'static, Self::Output>; fn into_future(self) -> Self::IntoFuture { - println!("Outbound future is in: {:?}", self); async move { match self { // The outbound connection is already opened diff --git a/crates/topos-tce-storage/src/epoch/tables.rs b/crates/topos-tce-storage/src/epoch/tables.rs index 70517ee84..cfef710b2 100644 --- a/crates/topos-tce-storage/src/epoch/tables.rs +++ b/crates/topos-tce-storage/src/epoch/tables.rs @@ -1,7 +1,8 @@ -use std::path::PathBuf; +use std::{fs::create_dir_all, path::PathBuf}; use rocksdb::ColumnFamilyDescriptor; use topos_core::uci::CertificateId; +use tracing::warn; use crate::{ constant::cfs, @@ -44,6 +45,10 @@ impl ValidatorPerEpochTables { pub(crate) fn open(epoch_id: EpochId, mut path: PathBuf) -> Self { path.push("epochs"); path.push(epoch_id.to_string()); + if !path.exists() { + warn!("Path {:?} does not exist, creating it", path); + create_dir_all(&path).expect("Cannot create ValidatorPerEpochTables directory"); + } let cfs = vec![ ColumnFamilyDescriptor::new(cfs::EPOCH_SUMMARY, default_options()), ColumnFamilyDescriptor::new(cfs::BROADCAST_STATES, default_options()), diff --git a/crates/topos-tce-storage/src/index/mod.rs b/crates/topos-tce-storage/src/index/mod.rs index 545d7673f..5bc6f5dd3 100644 --- a/crates/topos-tce-storage/src/index/mod.rs +++ b/crates/topos-tce-storage/src/index/mod.rs @@ -1,10 +1,11 @@ -use std::path::PathBuf; +use std::{fs::create_dir_all, path::PathBuf}; use rocksdb::ColumnFamilyDescriptor; use topos_core::{ types::stream::{CertificateTargetStreamPosition, Position}, uci::{CertificateId, SubnetId}, }; +use tracing::warn; use crate::{ constant::cfs, @@ -32,6 +33,10 @@ pub struct IndexTables { impl IndexTables { pub fn open(mut path: PathBuf) -> Self { path.push("index"); + if !path.exists() { + warn!("Path {:?} does not exist, creating it", path); + create_dir_all(&path).expect("Cannot create IndexTables directory"); + } let mut options_stream = default_options(); options_stream.set_prefix_extractor(rocksdb::SliceTransform::create_fixed_prefix( constants::TARGET_STREAMS_PREFIX_SIZE, diff --git a/crates/topos-tce-storage/src/validator/tables.rs b/crates/topos-tce-storage/src/validator/tables.rs index a5d0d2637..9b89b98ef 100644 --- a/crates/topos-tce-storage/src/validator/tables.rs +++ b/crates/topos-tce-storage/src/validator/tables.rs @@ -1,10 +1,11 @@ -use std::{collections::BTreeSet, path::PathBuf, sync::atomic::AtomicU64}; +use std::{collections::BTreeSet, fs::create_dir_all, path::PathBuf, sync::atomic::AtomicU64}; use rocksdb::ColumnFamilyDescriptor; use topos_core::{ types::{stream::CertificateSourceStreamPosition, CertificateDelivered, ProofOfDelivery}, uci::{Certificate, CertificateId}, }; +use tracing::warn; use crate::{ constant::cfs, @@ -32,7 +33,10 @@ pub struct ValidatorPendingTables { impl ValidatorPendingTables { pub fn open(mut path: PathBuf) -> Self { path.push("pending"); - + if !path.exists() { + warn!("Path {:?} does not exist, creating it", path); + create_dir_all(&path).expect("Cannot create ValidatorPendingTables directory"); + } let cfs = vec![ ColumnFamilyDescriptor::new(cfs::PENDING_POOL, default_options()), ColumnFamilyDescriptor::new(cfs::PENDING_POOL_INDEX, default_options()), @@ -66,6 +70,10 @@ pub struct ValidatorPerpetualTables { impl ValidatorPerpetualTables { pub fn open(mut path: PathBuf) -> Self { path.push("perpetual"); + if !path.exists() { + warn!("Path {:?} does not exist, creating it", path); + create_dir_all(&path).expect("Cannot create ValidatorPerpetualTables directory"); + } let mut options_stream = default_options(); options_stream.set_prefix_extractor(rocksdb::SliceTransform::create_fixed_prefix( constants::SOURCE_STREAMS_PREFIX_SIZE, @@ -78,8 +86,9 @@ impl ValidatorPerpetualTables { ColumnFamilyDescriptor::new(cfs::UNVERIFIED, default_options()), ]; - let db = init_with_cfs(&path, default_options(), cfs) - .unwrap_or_else(|_| panic!("Cannot open DB at {:?}", path)); + let db = init_with_cfs(&path, default_options(), cfs).unwrap_or_else(|e| { + panic!("Cannot open DB at {:?} => error {:?}", path, e); + }); Self { certificates: DBColumn::reopen(&db, cfs::CERTIFICATES), diff --git a/crates/topos-wallet/src/lib.rs b/crates/topos-wallet/src/lib.rs index 6ebc76887..fceebe7c5 100644 --- a/crates/topos-wallet/src/lib.rs +++ b/crates/topos-wallet/src/lib.rs @@ -15,7 +15,7 @@ pub const VALIDATOR_BLS_KEY: &str = "consensus/validator-bls.key"; /// Load from the filesystem pub fn load_fs_secret(file: PathBuf) -> Option { match &fs::read_to_string(&file) { - Ok(s) => Some(hex::decode(s).expect("decode failure")), + Ok(s) => Some(hex::decode(s).unwrap_or_else(|_| panic!("decode failure for {}", s))), Err(e) => panic!("Failed at reading {file:?}: {e}"), } } diff --git a/tools/docker-compose.yml b/tools/docker-compose.yml index d9bcb7335..921820c6b 100644 --- a/tools/docker-compose.yml +++ b/tools/docker-compose.yml @@ -1,9 +1,27 @@ version: "3.3" services: + init: + container_name: init + command: sh -c "cp /tmp/libp2p_keys.json /tmp/shared/libp2p_keys.json && \ + cp /tmp/validator_bls_keys.json /tmp/shared/validator_bls_keys.json && \ + cp /tmp/validator_keys.json /tmp/shared/validator_keys.json && \ + chmod a+rwx /tmp/shared/* && ls /tmp && ls /tmp/shared" + image: debian:bullseye-slim + volumes: + - shared:/tmp/shared + - ./libp2p_keys.json:/tmp/libp2p_keys.json + - ./validator_bls_keys.json:/tmp/validator_bls_keys.json + - ./validator_keys.json:/tmp/validator_keys.json + healthcheck: + test: ["CMD-SHELL", "test -f /tmp/shared/libp2p_keys.json"] + interval: 5s + timeout: 5s + retries: 5 + start_period: 5s boot: container_name: boot - command: boot node up --name test --home /tmp/node_config --no-edge-process + command: node up --name boot --home /tmp/node_config --no-edge-process image: ghcr.io/topos-protocol/topos:main init: true labels: @@ -14,16 +32,18 @@ services: interval: 15s volumes: - shared:/tmp/shared - - ./node_config:/tmp/node_config - - ./libp2p_keys.json:/tmp/shared/libp2p_keys.json - - ./validator_bls_keys.json:/tmp/shared/validator_bls_keys.json - - ./validator_keys.json:/tmp/shared/validator_keys.json + - ./node_config/node/boot/config.toml:/tmp/node_config/node/boot/config.toml:ro + - ./node_config/node/boot/libp2p/:/tmp/node_config/node/boot/libp2p/:ro + - ./node_config/node/boot/consensus/:/tmp/node_config/node/boot/consensus/:ro + - ./node_config/subnet/topos/genesis.json:/tmp/node_config/subnet/topos/genesis.json:ro build: context: ../ args: - TOOLCHAIN_VERSION=stable - - FEATURES=tce,network + - FEATURES=tce,network,node,subnet depends_on: + init: + condition: service_completed_successfully autoheal: condition: service_started ports: @@ -36,7 +56,6 @@ services: - env/node.env - env/telemetry.env environment: - - TCE_LOCAL_KS=1 # 12D3KooWRhFCXBhmsMnur3up3vJsDoqWh4c39PKXgSWwzAzDHNLn - RUST_LOG=topos=debug,topos_tce_storage=info,topos_tce_synchronizer=info peer: @@ -50,16 +69,16 @@ services: interval: 5s volumes: - shared:/tmp/shared - - ./node_config:/tmp/node_config - - ./libp2p_keys.json:/tmp/shared/libp2p_keys.json - - ./validator_bls_keys.json:/tmp/shared/validator_bls_keys.json - - ./validator_keys.json:/tmp/shared/validator_keys.json + - ./node_config/node/test/config.toml:/tmp/node_config/node/test/config.toml + - ./node_config/subnet/topos/genesis.json:/tmp/node_config/subnet/topos/genesis.json build: context: ../ args: - TOOLCHAIN_VERSION=stable - - FEATURES=tce + - FEATURES=tce,network,node,subnet depends_on: + init: + condition: service_completed_successfully autoheal: condition: service_started boot: @@ -70,7 +89,7 @@ services: - "3000" - "4000" deploy: - replicas: 2 + replicas: 14 env_file: - env/base.env - env/node.env @@ -86,10 +105,8 @@ services: "autoheal": "true" volumes: - shared:/tmp/shared - - ./node_config:/tmp/node_config - - ./libp2p_keys.json:/tmp/shared/libp2p_keys.json - - ./validator_bls_keys.json:/tmp/shared/validator_bls_keys.json - - ./validator_keys.json:/tmp/shared/validator_keys.json + - ./node_config/node/test/config.toml:/tmp/node_config/node/test/config.toml + - ./node_config/subnet/topos/genesis.json:/tmp/node_config/subnet/topos/genesis.json build: context: ../ args: @@ -144,7 +161,7 @@ services: - check init: true volumes: - - shared:/tmp/shared + - ./peer_nodes.json:/tmp/peer_nodes.json build: context: ../ args: @@ -159,7 +176,7 @@ services: environment: - LOCAL_TEST_NET=true - RUST_LOG=info,topos=info - - TARGET_NODES_PATH=/tmp/shared/peer_nodes.json + - TARGET_NODES_PATH=/tmp/peer_nodes.json autoheal: container_name: autoheal diff --git a/tools/env/node.env b/tools/env/node.env index 38462418e..2539db1a6 100644 --- a/tools/env/node.env +++ b/tools/env/node.env @@ -1,14 +1,8 @@ RUST_LOG=warn,topos=warn LOCAL_TEST_NET=true -TCE_DB_PATH=/tmp/default-db - TOPOS_MINIMUM_TCE_CLUSTER_SIZE=7 -TCE_API_ADDR=0.0.0.0:1340 -TCE_GRAPHQL_API_ADDR=0.0.0.0:4000 -TCE_METRICS_API_ADDR=0.0.0.0:3000 - TCE_ECHO_SAMPLE_SIZE=14 TCE_READY_SAMPLE_SIZE=14 TCE_DELIVERY_SAMPLE_SIZE=14 diff --git a/tools/init.sh b/tools/init.sh index 11911860a..c49a9b9f9 100755 --- a/tools/init.sh +++ b/tools/init.sh @@ -11,128 +11,41 @@ fi JQ=$(which jq) TOPOS_BIN=./topos TOPOS_HOME=/tmp/node_config -PEER_LIST_PATH=/tmp/shared/peer_ids.json -NODE_LIST_PATH=/tmp/shared/peer_nodes.json NODE="http://$HOSTNAME:1340" TCE_EXT_HOST="/dns4/$HOSTNAME" FIXED_BOOT_PEER_ID="BOOT_NODE_1" -case "$1" in - - "boot") - BOOT_PEER_ID=$($TOPOS_BIN tce keys --from-seed=$FIXED_BOOT_PEER_ID) - - echo "Generating peer list file..." - $JQ -n --arg PEER $BOOT_PEER_ID '[$PEER]' > $PEER_LIST_PATH - echo "Peer list file have been successfully generated" - - cat $PEER_LIST_PATH - - echo "Generating node list file..." - $JQ -n --arg NODE $NODE '{"nodes": [$NODE]}' > $NODE_LIST_PATH - echo "Peer nodes list have been successfully generated" - - echo "Starting boot node..." - - echo "BOOT_PEER_ID: $BOOT_PEER_ID" - echo "TCE_LOCAL_KS: $HOSTNAME" - - export TOPOS_HOME=$TOPOS_HOME - export TCE_LOCAL_KS=$HOSTNAME - export TCE_EXT_HOST - - if [ ! -d "$TOPOS_HOME/node/test/libp2p/" ]; then - echo "Directory $TOPOS_HOME/node/test/libp2p/ does not exist!" - fi - - if [ ! -w "$TOPOS_HOME/node/test/libp2p/" ]; then - echo "Directory $TOPOS_HOME/node/test/libp2p/ is not writable!" - fi - - ( - flock -x 200 - LIBP2P_KEY=$(jq -r ".keys[0]" /tmp/shared/libp2p_keys.json) - echo -n "$LIBP2P_KEY" > $TOPOS_HOME/node/test/libp2p/libp2p.key - jq "del(.keys[0])" /tmp/shared/libp2p_keys.json > /tmp/shared/libp2p_keys_temp.json && cat /tmp/shared/libp2p_keys_temp.json > /tmp/shared/libp2p_keys.json && rm /tmp/shared/libp2p_keys_temp.json - ) 200>/tmp/shared/libp2p_keys.lock - - ( - flock -x 201 - VALIDATOR_BLS_KEY=$(jq -r ".keys[0]" /tmp/shared/validator_bls_keys.json) - echo -n "$VALIDATOR_BLS_KEY" > $TOPOS_HOME/node/test/consensus/validator-bls.key - jq "del(.keys[0])" /tmp/shared/validator_bls_keys.json > /tmp/shared/validator_bls_keys_temp.json && cat /tmp/shared/validator_bls_keys_temp.json > /tmp/shared/validator_bls_keys.json && rm /tmp/shared/validator_bls_keys_temp.json - ) 201>/tmp/shared/validator_bls_keys.lock +random_entry () { + local seed=$(hostname -i | tr -d ".") + local result=$(jq -r --arg i $(($seed % $(jq '.keys|length' $1))) '.keys[$i|tonumber]' $1) - ( - flock -x 202 - VALIDATOR_KEY=$(jq -r ".keys[0]" /tmp/shared/validator_keys.json) - echo -n "$VALIDATOR_KEY" > $TOPOS_HOME/node/test/consensus/validator.key - jq "del(.keys[0])" /tmp/shared/validator_keys.json > /tmp/shared/validator_keys_temp.json && cat /tmp/shared/validator_keys_temp.json > /tmp/shared/validator_keys.json && rm /tmp/shared/validator_keys_temp.json - ) 202>/tmp/shared/validator_keys.lock - - exec "$TOPOS_BIN" "${@:2}" - ;; + echo $result +} +case "$1" in + "boot") + exec "$TOPOS_BIN" "${@:2}" + ;; "peer") if [[ ${LOCAL_TEST_NET:-"false"} == "true" ]]; then - until [ -f "$PEER_LIST_PATH" ] - do - echo "Waiting 1s for peer_list file $PEER_LIST_PATH to be created by boot container..." - sleep 1 - done - PEER=$($TOPOS_BIN tce keys --from-seed=$HOSTNAME) - # Acquire lock and add $PEER to ${PEER_LIST_PATH} only once - ( - flock --exclusive -w 10 201 || exit 1 - cat <<< $($JQ --arg PEER $PEER '. |= (. + [$PEER] | unique )' $PEER_LIST_PATH) > $PEER_LIST_PATH - - ) 201>"${PEER_LIST_PATH}.lock" - export TOPOS_HOME=$TOPOS_HOME export TCE_LOCAL_KS=$HOSTNAME export TCE_EXT_HOST - until [ -f "$NODE_LIST_PATH" ] - do - echo "Waiting 1s for node_list file $NODE_LIST_PATH to be created by boot container..." - sleep 1 - done - - # Acquire lock and add $NODE to ${NODE_LIST_PATH} only once - ( - flock --exclusive -w 10 200 || exit 1 - cat <<< $($JQ --arg NODE $NODE '.nodes |= (. + [$NODE] | unique)' $NODE_LIST_PATH) > $NODE_LIST_PATH - - ) 200>"${NODE_LIST_PATH}.lock" - - cat $PEER_LIST_PATH - - echo "PEER_ID: $PEER" - echo "TCE_LOCAL_KS: $HOSTNAME" - - ( - flock -x 200 - LIBP2P_KEY=$(jq -r ".keys[0]" /tmp/shared/libp2p_keys.json) - echo -n "$LIBP2P_KEY" > $TOPOS_HOME/node/test/libp2p/libp2p.key - jq "del(.keys[0])" /tmp/shared/libp2p_keys.json > /tmp/shared/libp2p_keys_temp.json && cat /tmp/shared/libp2p_keys_temp.json > /tmp/shared/libp2p_keys.json && rm /tmp/shared/libp2p_keys_temp.json - ) 200>/tmp/shared/libp2p_keys.lock - - ( - flock -x 201 - VALIDATOR_BLS_KEY=$(jq -r ".keys[0]" /tmp/shared/validator_bls_keys.json) - echo -n "$VALIDATOR_BLS_KEY" > $TOPOS_HOME/node/test/consensus/validator-bls.key - jq "del(.keys[0])" /tmp/shared/validator_bls_keys.json > /tmp/shared/validator_bls_keys_temp.json && cat /tmp/shared/validator_bls_keys_temp.json > /tmp/shared/validator_bls_keys.json && rm /tmp/shared/validator_bls_keys_temp.json - ) 201>/tmp/shared/validator_bls_keys.lock - - ( - flock -x 202 - VALIDATOR_KEY=$(jq -r ".keys[0]" /tmp/shared/validator_keys.json) - echo -n "$VALIDATOR_KEY" > $TOPOS_HOME/node/test/consensus/validator.key - jq "del(.keys[0])" /tmp/shared/validator_keys.json > /tmp/shared/validator_keys_temp.json && cat /tmp/shared/validator_keys_temp.json > /tmp/shared/validator_keys.json && rm /tmp/shared/validator_keys_temp.json - ) 202>/tmp/shared/validator_keys.lock + mkdir -p $TOPOS_HOME/node/test/libp2p + mkdir -p $TOPOS_HOME/node/test/consensus + + LIBP2P_KEY=$(random_entry /tmp/shared/libp2p_keys.json) + echo -n $LIBP2P_KEY > $TOPOS_HOME/node/test/libp2p/libp2p.key + + VALIDATOR_BLS_KEY=$(random_entry /tmp/shared/validator_bls_keys.json) + echo -n $VALIDATOR_BLS_KEY > $TOPOS_HOME/node/test/consensus/validator-bls.key + + VALIDATOR_KEY=$(random_entry /tmp/shared/validator_keys.json) + echo -n $VALIDATOR_KEY > $TOPOS_HOME/node/test/consensus/validator.key fi @@ -142,37 +55,17 @@ case "$1" in "sync") if [[ ${LOCAL_TEST_NET:-"false"} == "true" ]]; then - until [ -f "$PEER_LIST_PATH" ] - do - echo "Waiting 1s for peer_list file $PEER_LIST_PATH to be created by boot container..." - sleep 1 - done - export TCE_LOCAL_KS=$HOSTNAME export TCE_EXT_HOST - until [ -f "$NODE_LIST_PATH" ] - do - echo "Waiting 1s for node_list file $NODE_LIST_PATH to be created by boot container..." - sleep 1 - done - - echo "TCE_LOCAL_KS: $HOSTNAME" - - # For libp2p_keys.json - LIBP2P_KEY=$(jq -r ".keys[0]" /tmp/shared/libp2p_keys.json) - echo -n "$LIBP2P_KEY" > $TOPOS_HOME/node/test/libp2p/libp2p.key - jq "del(.keys[0])" /tmp/shared/libp2p_keys.json > /tmp/shared/libp2p_keys_temp.json && mv /tmp/shared/libp2p_keys_temp.json /tmp/shared/libp2p_keys.json + LIBP2P_KEY=$(random_entry /tmp/shared/libp2p_keys.json) + echo -n $LIBP2P_KEY > $TOPOS_HOME/node/test/libp2p/libp2p.key - # For validator_bls_keys.json - VALIDATOR_BLS_KEY=$(jq -r ".keys[0]" /tmp/shared/validator_bls_keys.json) - echo -n "$VALIDATOR_BLS_KEY" > $TOPOS_HOME/node/test/consensus/validator-bls.key - jq "del(.keys[0])" /tmp/shared/validator_bls_keys.json > /tmp/shared/validator_bls_keys_temp.json && mv /tmp/shared/validator_bls_keys_temp.json /tmp/shared/validator_bls_keys.json + VALIDATOR_BLS_KEY=$(random_entry /tmp/shared/validator_bls_keys.json) + echo -n $VALIDATOR_BLS_KEY > $TOPOS_HOME/node/test/consensus/validator-bls.key - # For validator_keys.json - VALIDATOR_KEY=$(jq -r ".keys[0]" /tmp/shared/validator_keys.json) - echo -n "$VALIDATOR_KEY" > $TOPOS_HOME/node/test/consensus/validator.key - jq "del(.keys[0])" /tmp/shared/validator_keys.json > /tmp/shared/validator_keys_temp.json && mv /tmp/shared/validator_keys_temp.json /tmp/shared/validator_keys.json + VALIDATOR_KEY=$(random_entry /tmp/shared/validator_keys.json) + echo -n $VALIDATOR_KEY > $TOPOS_HOME/node/test/consensus/validator.key fi diff --git a/tools/libp2p_keys.json b/tools/libp2p_keys.json index d1e5670b5..4e47228af 100644 --- a/tools/libp2p_keys.json +++ b/tools/libp2p_keys.json @@ -1,6 +1,5 @@ { "keys": [ - "080212208b55eb6ff3879e0387f017a3b25645bf86cdb3ec971255614875deeebb836759", "0802122092f56011e200c99116b33144c662bd147085d11ce7a8e80c097141f3909f9587", "08021220053796df9815c3c2466f853151cfb4d8e6ba8209588cbcf85e8ed7cab56fbbde", "080212204bd962cb308ec31fcd0c9a4a6a740ebd35fb619b18a76527dd54ba6c6ff50b39", diff --git a/tools/node_config/node/boot/config.toml b/tools/node_config/node/boot/config.toml new file mode 100644 index 000000000..489743542 --- /dev/null +++ b/tools/node_config/node/boot/config.toml @@ -0,0 +1,13 @@ +[base] +name = "boot" +role = "validator" +subnet-id = "topos" + +[edge] + +[tce] +db-path = "tce_rocksdb" +graphql-api-addr = "0.0.0.0:4030" +grpc-api-addr = "0.0.0.0:1340" +libp2p-api-addr = "0.0.0.0:9090" +metrics-api-addr = "0.0.0.0:3000" diff --git a/tools/node_config/node/boot/consensus/validator-bls.key b/tools/node_config/node/boot/consensus/validator-bls.key new file mode 100644 index 000000000..9adcf2f69 --- /dev/null +++ b/tools/node_config/node/boot/consensus/validator-bls.key @@ -0,0 +1 @@ +0eabed33b556471648343728eb5a5bfd0efaf132680b26ef6ca43c996d40b557 \ No newline at end of file diff --git a/tools/node_config/node/boot/consensus/validator.key b/tools/node_config/node/boot/consensus/validator.key new file mode 100644 index 000000000..0d5062cd4 --- /dev/null +++ b/tools/node_config/node/boot/consensus/validator.key @@ -0,0 +1 @@ +f06e8ff19883bd931b385eb556c0468acf3ca8b86a4f3f57f58ae8432db45f5c \ No newline at end of file diff --git a/tools/node_config/node/boot/libp2p/libp2p.key b/tools/node_config/node/boot/libp2p/libp2p.key new file mode 100644 index 000000000..6d2d207d8 --- /dev/null +++ b/tools/node_config/node/boot/libp2p/libp2p.key @@ -0,0 +1 @@ +080212208b55eb6ff3879e0387f017a3b25645bf86cdb3ec971255614875deeebb836759 \ No newline at end of file diff --git a/tools/node_config/node/test/config.toml b/tools/node_config/node/test/config.toml index 711a845d6..f3a095f72 100644 --- a/tools/node_config/node/test/config.toml +++ b/tools/node_config/node/test/config.toml @@ -6,8 +6,8 @@ subnet-id = "topos" [edge] [tce] -db-path = "node_config/node/test/./tce_rocksdb" -graphql-api-addr = "0.0.0.1:4030" -grpc-api-addr = "0.0.0.1:1340" -libp2p-api-addr = "0.0.0.1:9090" -metrics-api-addr = "0.0.0.1:3000" +db-path = "tce_rocksdb" +graphql-api-addr = "0.0.0.0:4030" +grpc-api-addr = "0.0.0.0:1340" +libp2p-api-addr = "0.0.0.0:9090" +metrics-api-addr = "0.0.0.0:3000" diff --git a/tools/node_config/subnet/topos/genesis.json b/tools/node_config/subnet/topos/genesis.json index ec4fbb88c..83a5056ca 100644 --- a/tools/node_config/subnet/topos/genesis.json +++ b/tools/node_config/subnet/topos/genesis.json @@ -43,6 +43,6 @@ "burnContractDestinationAddress": "0x0000000000000000000000000000000000000000" }, "bootnodes": [ - "/ip4/10.101.232.59/tcp/10001/p2p/12D3KooWKfbuXufub9aRs3HQJ2T8geHDM8mkfA6DaZ8KTHzQzzPU" + "/dns4/boot/tcp/9090/p2p/16Uiu2HAmGTNGFnvac2RixfEXTutQkvTYcn2BxwbBJref3foS525G" ] } diff --git a/tools/peer_nodes.json b/tools/peer_nodes.json index 4be406c53..a3ebbe62d 100644 --- a/tools/peer_nodes.json +++ b/tools/peer_nodes.json @@ -1,9 +1,19 @@ { "nodes": [ + "http://boot:1340", "http://tools-peer-1:1340", "http://tools-peer-2:1340", "http://tools-peer-3:1340", "http://tools-peer-4:1340", - "http://tools-peer-5:1340" + "http://tools-peer-5:1340", + "http://tools-peer-6:1340", + "http://tools-peer-7:1340", + "http://tools-peer-8:1340", + "http://tools-peer-9:1340", + "http://tools-peer-10:1340", + "http://tools-peer-11:1340", + "http://tools-peer-12:1340", + "http://tools-peer-13:1340", + "http://tools-peer-14:1340" ] } diff --git a/tools/validator_bls_keys.json b/tools/validator_bls_keys.json index 49afbf3af..fb9dea212 100644 --- a/tools/validator_bls_keys.json +++ b/tools/validator_bls_keys.json @@ -1,6 +1,5 @@ { "keys": [ - "0eabed33b556471648343728eb5a5bfd0efaf132680b26ef6ca43c996d40b557", "6d853d51a7a318a2813d9431897d0e091099924983d6838401b80bf2baeb1474", "2a36a46dd8dae0b6b8506d267571b8b198488c0e8e13e88752a0e2ab91ca4008", "4036d3398382575f1eb923b6bf706927b64a019ab7b8716569dd98d2ac0a31fe", diff --git a/tools/validator_keys.json b/tools/validator_keys.json index fc3029f4d..26ad4d6b6 100644 --- a/tools/validator_keys.json +++ b/tools/validator_keys.json @@ -1,6 +1,5 @@ { "keys": [ - "f06e8ff19883bd931b385eb556c0468acf3ca8b86a4f3f57f58ae8432db45f5c", "ffef573c0ce02f7141fec99823c0e6d0d10257fc554653308a43a084f345dce9", "9c77dd2c27f3b800fae364b0a875bd3e6215738d7a30c560b5f814093453ee9e", "980e55b655d40c0cac88ab7349f7154040364a3b52ae7a627d9a526442af6ff4",