From 2c95ac2e2f72a4c1bf44c65bf45430149f02769c Mon Sep 17 00:00:00 2001 From: Anders Konring Date: Mon, 15 Sep 2025 19:45:27 +0200 Subject: [PATCH 1/2] Revert nitro url for docker committees. --- justfile | 4 ++-- test-configs/docker/committee.toml | 32 +++++++++++++++--------------- test-configs/docker/node_0.toml | 12 +++++------ test-configs/docker/node_1.toml | 12 +++++------ test-configs/docker/node_2.toml | 12 +++++------ test-configs/docker/node_3.toml | 12 +++++------ test-configs/docker/node_4.toml | 12 +++++------ 7 files changed, 48 insertions(+), 48 deletions(-) diff --git a/justfile b/justfile index 6fad8258..5c3736f6 100644 --- a/justfile +++ b/justfile @@ -117,8 +117,8 @@ mkconfig_docker DATETIME *ARGS: --http-api "172.20.0.2:8004" \ --mode "increment-address" \ --chain-namespace 10101 \ - --parent-rpc-url "http://127.0.0.1:8545" \ - --parent-chain-id 31337 \ + --parent-rpc-url "http://172.20.0.12:8545" \ + --parent-chain-id 412346 \ --parent-ibox-contract "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" \ --key-manager-contract "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" \ --timestamp {{DATETIME}} \ diff --git a/test-configs/docker/committee.toml b/test-configs/docker/committee.toml index b43a0c83..c15f83f6 100644 --- a/test-configs/docker/committee.toml +++ b/test-configs/docker/committee.toml @@ -1,41 +1,41 @@ -effective_timestamp = "2025-09-01T20:00:00Z" +effective_timestamp = "2025-09-15T17:08:44Z" [[members]] -signing_key = "eiwaGN1NNaQdbnR9FsjKzUeLghQZsTLPjiL4RcQgfLoX" -dh_key = "AZrLbV37HAGhBWh49JHzup6Wfpu2AAGWGJJnxCDJibiY" -dkg_enc_key = "7PdmfTS45d2hTXB8NcrTmvDwUVBimpYBbrBaGnu3i5Ne65krVfUpbe7bYRHS3AEg7H" +signing_key = "uf6oKVCphzAd1Y87UyK1hLfRz7pJJ8LSC393jzAbHKmZ" +dh_key = "3eP89nLTHxHaVR6kdMhorBeM77ndbe2TtgX1am76BSGW" +dkg_enc_key = "69nv9n7FNSHVeepYq3JBizQkBySZ4pq3YRdB1f574roqmiv2RBpCtDeQqi4igruC55" public_address = "172.20.0.2:8000" http_api = "172.20.0.2:8004" internal_api = "172.20.0.2:8003" [[members]] -signing_key = "vGKKAxVNfkSCdn8qh36nXdSZqyhPq644sQBoeZtcEUCR" -dh_key = "FHTJAk6oyt3jefEp1ZrPEn2MkqRt2LibEFd57AnEUZdb" -dkg_enc_key = "7p1BtEz7WnFMt6Hr28X3Rngqza6i8hRoswhzZRFd6GzgkspLKHBfDocHP8DwzXiNiZ" +signing_key = "z6FrBScyGgtbkbD7LzUfYWGHKnpF9XzrZw81ENPunFLW" +dh_key = "8hMVYLCeffEWAsk147ny4Z71AVHA619L1ijmMVmba7GD" +dkg_enc_key = "7ajdb8uCeehrXr1yaHF3wtgSKpxf9YEYKBwg2QsapZeRGnbD2MZcUx36rVyhU8AQwr" public_address = "172.20.0.3:8000" http_api = "172.20.0.3:8004" internal_api = "172.20.0.3:8003" [[members]] -signing_key = "264jMLf85hfufg4ck97Hw2jiL6i1PHNoGUqxUqfhtssaE" -dh_key = "63eYNKoW2PsWZFhHHj3eZwHTdPE7gEjEDM7gGeDf9Uaj" -dkg_enc_key = "62bnAAbU58zZUcGqy9JKGZRZHkm3g7JZB2DtJGQyChXQBPGvXSS6fF21yoxiVuD1eb" +signing_key = "h2sXHz4BuHF7hi1av6yQbsUgFKjYCNDhf5KhtTbWv2WE" +dh_key = "FHzdL3wZvaNdA9kfqBmJjAwpGckS8xWquhBdNMrzckNz" +dkg_enc_key = "7drbfCdN7vkYhZhN96KHLFDSgPBrmWXHw3o9i3HA7wjUcbGntMCHrhNo4rYLHsgg3X" public_address = "172.20.0.4:8000" http_api = "172.20.0.4:8004" internal_api = "172.20.0.4:8003" [[members]] -signing_key = "v6UBdLT5BvMhLW7iKv7M2xYeaW2SCAsnZ5PiSg6AaKfA" -dh_key = "Do2GmAexW5MUdD8nToDiBWGbDgk1AwXoxtLTyirDtKQh" -dkg_enc_key = "7aZBFZUEbXxFH9SiGJeUyjzas4mYJ1R13mTPsPeawVU7JFuocfvX9XsRT8qgr17RCe" +signing_key = "uxkURysS7THRSkKUDW22R5LWAEkKVepjLDpHRa5jB6MK" +dh_key = "4HZj5ysKMsPobkAMnJytnQvf3NsVSLSkY3N9nBzDfCrc" +dkg_enc_key = "7n6vbt3zsTUifwkGngct9QMc9JqwT3ALvY2uYaKfkk5FDFKZgTSdnoboKr68BiveYv" public_address = "172.20.0.5:8000" http_api = "172.20.0.5:8004" internal_api = "172.20.0.5:8003" [[members]] -signing_key = "tV66KknkDH47hRSNzwJtt7Q7EZtxVxQsNnUGoAJdDn6J" -dh_key = "HXaesvEGFiDgrVTix1fKzSLTarFexTZSJD6ymSrF7vPL" -dkg_enc_key = "6R69TzDg3jo1MTex9Uter9XQud458YPpSvXirkYdS295PV81CRvgz5jVWQbkCpZnYV" +signing_key = "2BH8XmMRMRM2od6gVB9BUnKaoVPbHoZBFaA7F3Qvu5ciS" +dh_key = "4w1eDWLNaiST6LxLGivqhdPwJGrfJf7DXo7SFVdhSmFY" +dkg_enc_key = "72bMFtCgLjrDDCMoFKSSgqBLoMW7dzStRQXaNG6hW3w9TkWM3GtmpJdDGo6YRPf2Hn" public_address = "172.20.0.6:8000" http_api = "172.20.0.6:8004" internal_api = "172.20.0.6:8003" diff --git a/test-configs/docker/node_0.toml b/test-configs/docker/node_0.toml index 217bbe9c..908bda4b 100644 --- a/test-configs/docker/node_0.toml +++ b/test-configs/docker/node_0.toml @@ -8,16 +8,16 @@ http-api = "172.20.0.2:8004" address = "172.20.0.2:8003" [keys.signing] -secret = "3hzb3bRzn3dXSV1iEVE6mU4BF2aS725s8AboRxLwULPp" -public = "eiwaGN1NNaQdbnR9FsjKzUeLghQZsTLPjiL4RcQgfLoX" +secret = "3n5wKiLHe7LBc3akyTyBzqJzkvntpKqdw8bzKz7oC9XE" +public = "uf6oKVCphzAd1Y87UyK1hLfRz7pJJ8LSC393jzAbHKmZ" [keys.dh] -secret = "BB3zUfFQGfw3sL6bpp1JH1HozK6ehEDmRGoiCpQH62rZ" -public = "AZrLbV37HAGhBWh49JHzup6Wfpu2AAGWGJJnxCDJibiY" +secret = "BuvjD47Mv9U11ZiGzW6AsStGpwddPp6TTdrfcEcXgFGb" +public = "3eP89nLTHxHaVR6kdMhorBeM77ndbe2TtgX1am76BSGW" [keys.dkg] -secret = "BW8gq8MARtDkSJL6daobPtGQm22TKkXdbLNrNGngNGTB" -public = "7PdmfTS45d2hTXB8NcrTmvDwUVBimpYBbrBaGnu3i5Ne65krVfUpbe7bYRHS3AEg7H" +secret = "6ietDpSGbG6S32WJRZydd68j2KAcjSHom1cYvfpvPwRb" +public = "69nv9n7FNSHVeepYq3JBizQkBySZ4pq3YRdB1f574roqmiv2RBpCtDeQqi4igruC55" [chain] namespace = 10101 diff --git a/test-configs/docker/node_1.toml b/test-configs/docker/node_1.toml index fcadfd86..7f992455 100644 --- a/test-configs/docker/node_1.toml +++ b/test-configs/docker/node_1.toml @@ -8,16 +8,16 @@ http-api = "172.20.0.3:8004" address = "172.20.0.3:8003" [keys.signing] -secret = "FWJzNGvEjFS3h1N1sSMkcvvroWwjT5LQuGkGHu9JMAYs" -public = "vGKKAxVNfkSCdn8qh36nXdSZqyhPq644sQBoeZtcEUCR" +secret = "DQFySXkfkGQS2VudujHD5nD1ePeKDBGC9w5pphfF2EQ7" +public = "z6FrBScyGgtbkbD7LzUfYWGHKnpF9XzrZw81ENPunFLW" [keys.dh] -secret = "4hjtciEvuoFVT55nAzvdP9E76r18QwntWwFoeginCGnP" -public = "FHTJAk6oyt3jefEp1ZrPEn2MkqRt2LibEFd57AnEUZdb" +secret = "AAfU2kXDKMXccU8uK6JGWkizNahR4kmn1CvZmZud7fFD" +public = "8hMVYLCeffEWAsk147ny4Z71AVHA619L1ijmMVmba7GD" [keys.dkg] -secret = "ARtqWGmRWrBqZUr4MmiLaPgzjsiKp5USsC9iQNRMZYy4" -public = "7p1BtEz7WnFMt6Hr28X3Rngqza6i8hRoswhzZRFd6GzgkspLKHBfDocHP8DwzXiNiZ" +secret = "HxFwTjUPpM6nU1HQ7swSg1z73WNco4LxPkAdxNgYZt1G" +public = "7ajdb8uCeehrXr1yaHF3wtgSKpxf9YEYKBwg2QsapZeRGnbD2MZcUx36rVyhU8AQwr" [chain] namespace = 10101 diff --git a/test-configs/docker/node_2.toml b/test-configs/docker/node_2.toml index d4c66484..0bf6c52e 100644 --- a/test-configs/docker/node_2.toml +++ b/test-configs/docker/node_2.toml @@ -8,16 +8,16 @@ http-api = "172.20.0.4:8004" address = "172.20.0.4:8003" [keys.signing] -secret = "2yWTaC6MWvNva97t81cd9QX5qph68NnB1wRVwAChtuGr" -public = "264jMLf85hfufg4ck97Hw2jiL6i1PHNoGUqxUqfhtssaE" +secret = "GU5LjuT9URRVx7cQWWjDkNhLsJxkjanYX8hcHD2pEYdL" +public = "h2sXHz4BuHF7hi1av6yQbsUgFKjYCNDhf5KhtTbWv2WE" [keys.dh] -secret = "Fo2nYV4gE9VfoVW9bSySAJ1ZuKT461x6ovZnr3EecCZg" -public = "63eYNKoW2PsWZFhHHj3eZwHTdPE7gEjEDM7gGeDf9Uaj" +secret = "86VFr8qEcTuxuzXuVgugwUTA8WNExUKut6KSsMgY9DBZ" +public = "FHzdL3wZvaNdA9kfqBmJjAwpGckS8xWquhBdNMrzckNz" [keys.dkg] -secret = "77r7T3En7NNQvRA81G5hLhJD3VpnigJdkPonX3oAwWkX" -public = "62bnAAbU58zZUcGqy9JKGZRZHkm3g7JZB2DtJGQyChXQBPGvXSS6fF21yoxiVuD1eb" +secret = "8F5bTw1yVe8u49VmJpxAapVtcmKXQsPpVAvRjRePo8Rx" +public = "7drbfCdN7vkYhZhN96KHLFDSgPBrmWXHw3o9i3HA7wjUcbGntMCHrhNo4rYLHsgg3X" [chain] namespace = 10101 diff --git a/test-configs/docker/node_3.toml b/test-configs/docker/node_3.toml index 16bceeb5..0cdfce8f 100644 --- a/test-configs/docker/node_3.toml +++ b/test-configs/docker/node_3.toml @@ -8,16 +8,16 @@ http-api = "172.20.0.5:8004" address = "172.20.0.5:8003" [keys.signing] -secret = "CUpkbkn8bix7ZrbztPKJwu66MRpJrc1Wr2JfdrhetASk" -public = "v6UBdLT5BvMhLW7iKv7M2xYeaW2SCAsnZ5PiSg6AaKfA" +secret = "C3S84dgsyHhrc5nEhCgBRe8zBaEHbEcwWz5fbShCZvU1" +public = "uxkURysS7THRSkKUDW22R5LWAEkKVepjLDpHRa5jB6MK" [keys.dh] -secret = "5KpixkV7czZTDVh7nV7VL1vGk4uf4kjKidDWq34CJx1T" -public = "Do2GmAexW5MUdD8nToDiBWGbDgk1AwXoxtLTyirDtKQh" +secret = "BCnTCKitRJewSgZo8jVn7SU1PpPhRenBkUXy7AhuBwku" +public = "4HZj5ysKMsPobkAMnJytnQvf3NsVSLSkY3N9nBzDfCrc" [keys.dkg] -secret = "7vWcVJDAhfSvmtm1L7KZvoD9agx6hyy9FvA75xWpjxK7" -public = "7aZBFZUEbXxFH9SiGJeUyjzas4mYJ1R13mTPsPeawVU7JFuocfvX9XsRT8qgr17RCe" +secret = "8vkvBsFk2uZ4ci7UGvhNKAT8eXBkBSd9xMxgrDa2Szgx" +public = "7n6vbt3zsTUifwkGngct9QMc9JqwT3ALvY2uYaKfkk5FDFKZgTSdnoboKr68BiveYv" [chain] namespace = 10101 diff --git a/test-configs/docker/node_4.toml b/test-configs/docker/node_4.toml index 056caa13..af7ddb30 100644 --- a/test-configs/docker/node_4.toml +++ b/test-configs/docker/node_4.toml @@ -8,16 +8,16 @@ http-api = "172.20.0.6:8004" address = "172.20.0.6:8003" [keys.signing] -secret = "6LMMEuoPRCkpDsnxnANCRCBC6JagdCHs2pjNicdmQpQE" -public = "tV66KknkDH47hRSNzwJtt7Q7EZtxVxQsNnUGoAJdDn6J" +secret = "ABC1KRHKsiU5Mg9FuHT3gigz1JLQAZ3xXpmPizvLPHuS" +public = "2BH8XmMRMRM2od6gVB9BUnKaoVPbHoZBFaA7F3Qvu5ciS" [keys.dh] -secret = "39wAn3bQzpn19oa8CiaNUFd8GekQAJMMuzrbp8Jt3FKz" -public = "HXaesvEGFiDgrVTix1fKzSLTarFexTZSJD6ymSrF7vPL" +secret = "EMarfnPAnapjA819WAoiJhHd9KfRTatdAn3k8WAn3Ap5" +public = "4w1eDWLNaiST6LxLGivqhdPwJGrfJf7DXo7SFVdhSmFY" [keys.dkg] -secret = "GFvv2wcQmiGpk5rFp1FGpeUjnVUyZmGM9k8VHb1Jn7EG" -public = "6R69TzDg3jo1MTex9Uter9XQud458YPpSvXirkYdS295PV81CRvgz5jVWQbkCpZnYV" +secret = "HzKNSzkzzgqYiBjgt52qUe1UXFnSos1vETQZwCamEhLb" +public = "72bMFtCgLjrDDCMoFKSSgqBLoMW7dzStRQXaNG6hW3w9TkWM3GtmpJdDGo6YRPf2Hn" [chain] namespace = 10101 From a7c86461197de6d74bcdbd6fcc51f3145638d52c Mon Sep 17 00:00:00 2001 From: Anders Konring Date: Tue, 16 Sep 2025 15:05:09 +0200 Subject: [PATCH 2/2] Fix docker compose and run_integration. --- docker-compose.yml | 81 +- docker/timeboost.Dockerfile | 14 +- docker/yapper.Dockerfile | 41 - geth-config/genesis-default.json | 54 ++ geth-config/test-jwt-secret.txt | 1 + grafana/dashboards/main.json | 803 +++++++----------- justfile | 7 +- prometheus/prometheus.yml | 12 +- scripts/deploy-contract-docker | 32 + ...oy-test-contract => deploy-contract-local} | 0 test-configs/docker/committee.toml | 32 +- test-configs/docker/node_0.toml | 14 +- test-configs/docker/node_1.toml | 14 +- test-configs/docker/node_2.toml | 14 +- test-configs/docker/node_3.toml | 14 +- test-configs/docker/node_4.toml | 14 +- yapper/Cargo.toml | 4 + 17 files changed, 519 insertions(+), 632 deletions(-) delete mode 100644 docker/yapper.Dockerfile create mode 100755 geth-config/genesis-default.json create mode 100644 geth-config/test-jwt-secret.txt create mode 100755 scripts/deploy-contract-docker rename scripts/{deploy-test-contract => deploy-contract-local} (100%) diff --git a/docker-compose.yml b/docker-compose.yml index 7519dbfb..c9850f22 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,31 @@ services: + demo-l1-network: + image: ghcr.io/espressosystems/geth-l1:main + command: --dev --dev.period=1 + ports: + - 8545:8545 + - 8546:8546 + volumes: + - "./geth-config/genesis-default.json:/genesis.json" + - "./geth-config/test-jwt-secret.txt:/config/test-jwt-secret.txt" + networks: + timeboost: + ipv4_address: 172.20.0.11 + healthcheck: + test: ["CMD", "curl", "-s", "-X", "POST", "--data", '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}', "-H", "Content-Type: application/json", "http://172.20.0.11:8545"] + interval: 5s + timeout: 3s + retries: 10 + deploy-test-contract: + image: timeboost:latest + environment: + - RUST_LOG=debug + entrypoint: ["/app/deploy-contract-docker"] + depends_on: + demo-l1-network: + condition: service_healthy + networks: + - timeboost node0: image: timeboost:latest command: @@ -12,18 +39,17 @@ services: ipv4_address: 172.20.0.2 environment: - RUST_LOG=timeboost=info,sailfish=info,cliquenet=info - - TIMEBOOST_SAILFISH_PORT=8000 - - TIMEBOOST_DECRYPT_PORT=8001 - - TIMEBOOST_CERTIFIER_PORT=8002 - - TIMEBOOST_RPC_PORT=8800 - - TIMEBOOST_METRICS_PORT=9000 ports: - "8000:8000" - "8030:8001" - "8060:8002" + - "8080:8003" + - "8100:8004" - "8800:8800" - "9000:9000" depends_on: + deploy-test-contract: + condition: service_completed_successfully nitro-dev: condition: service_healthy node1: @@ -39,18 +65,17 @@ services: ipv4_address: 172.20.0.3 environment: - RUST_LOG=timeboost=info,sailfish=info,cliquenet=info - - TIMEBOOST_SAILFISH_PORT=8000 - - TIMEBOOST_DECRYPT_PORT=8001 - - TIMEBOOST_CERTIFIER_PORT=8002 - - TIMEBOOST_RPC_PORT=8800 - - TIMEBOOST_METRICS_PORT=9000 ports: - "8001:8000" - "8031:8001" - "8061:8002" + - "8081:8003" + - "8101:8004" - "8801:8800" - "9001:9000" depends_on: + deploy-test-contract: + condition: service_completed_successfully nitro-dev: condition: service_healthy node2: @@ -66,18 +91,17 @@ services: ipv4_address: 172.20.0.4 environment: - RUST_LOG=timeboost=info,sailfish=info,cliquenet=info - - TIMEBOOST_SAILFISH_PORT=8000 - - TIMEBOOST_DECRYPT_PORT=8001 - - TIMEBOOST_CERTIFIER_PORT=8002 - - TIMEBOOST_RPC_PORT=8800 - - TIMEBOOST_METRICS_PORT=9000 ports: - "8002:8000" - "8032:8001" - "8062:8002" + - "8082:8003" + - "8102:8004" - "8802:8800" - "9002:9000" depends_on: + deploy-test-contract: + condition: service_completed_successfully nitro-dev: condition: service_healthy node3: @@ -93,18 +117,17 @@ services: ipv4_address: 172.20.0.5 environment: - RUST_LOG=timeboost=info,sailfish=info,cliquenet=info - - TIMEBOOST_SAILFISH_PORT=8000 - - TIMEBOOST_DECRYPT_PORT=8001 - - TIMEBOOST_CERTIFIER_PORT=8002 - - TIMEBOOST_RPC_PORT=8800 - - TIMEBOOST_METRICS_PORT=9000 ports: - "8003:8000" - "8033:8001" - "8063:8002" + - "8083:8003" + - "8103:8004" - "8803:8800" - "9003:9000" depends_on: + deploy-test-contract: + condition: service_completed_successfully nitro-dev: condition: service_healthy node4: @@ -120,18 +143,17 @@ services: ipv4_address: 172.20.0.6 environment: - RUST_LOG=timeboost=info,sailfish=info,cliquenet=info - - TIMEBOOST_SAILFISH_PORT=8000 - - TIMEBOOST_DECRYPT_PORT=8001 - - TIMEBOOST_CERTIFIER_PORT=8002 - - TIMEBOOST_RPC_PORT=8800 - - TIMEBOOST_METRICS_PORT=9000 ports: - "8004:8000" - "8034:8001" - "8064:8002" + - "8084:8003" + - "8104:8004" - "8804:8800" - "9004:9000" depends_on: + deploy-test-contract: + condition: service_completed_successfully nitro-dev: condition: service_healthy nitro-dev: @@ -148,15 +170,14 @@ services: timeout: 3s retries: 10 yapper: - image: yapper:latest + image: timeboost:latest command: [ "/app/yapper", - "--tps", - "1", - "--keyset-file", - "committee.json", + "--keyset-file", "committee.toml", ] + environment: + - RUST_LOG=info networks: timeboost: ipv4_address: 172.20.0.13 diff --git a/docker/timeboost.Dockerfile b/docker/timeboost.Dockerfile index 02259ee0..bca144c3 100644 --- a/docker/timeboost.Dockerfile +++ b/docker/timeboost.Dockerfile @@ -11,7 +11,7 @@ ENV PATH="/root/.foundry/bin:${PATH}" RUN forge --version RUN rustup component add rustfmt --toolchain nightly -RUN cargo build --release --bin timeboost +RUN cargo build --release --bins # Non-root app container stage FROM debian:bookworm-slim @@ -25,10 +25,20 @@ RUN groupadd -r appgroup && useradd -r -g appgroup timeboostuser # Copy binary COPY --from=builder /app/target/release/timeboost . +COPY --from=builder /app/target/release/yapper . +COPY --from=builder /app/target/release/register . +COPY --from=builder /app/target/release/deploy . +COPY --from=builder /app/scripts/deploy-contract-docker . + COPY --from=builder /app/test-configs/docker . +# Copy Foundry binaries from builder +COPY --from=builder /root/.foundry/bin/forge /usr/local/bin/forge +COPY --from=builder /root/.foundry/bin/cast /usr/local/bin/cast +RUN chmod +x /usr/local/bin/forge /usr/local/bin/cast + # Set ownership of application files and make binary executable -RUN chown -R timeboostuser:appgroup /app && chmod +x /app/timeboost +RUN chown -R timeboostuser:appgroup /app && chmod +x /app/timeboost /app/yapper /app/register /app/deploy /app/deploy-contract-docker # Switch to non-root user USER timeboostuser diff --git a/docker/yapper.Dockerfile b/docker/yapper.Dockerfile deleted file mode 100644 index ec186992..00000000 --- a/docker/yapper.Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -# Builder stage -FROM rust:bookworm AS builder - -WORKDIR /app - -COPY . . -RUN apt update && apt-get install -y protobuf-compiler -RUN curl -L https://foundry.paradigm.xyz | bash && /root/.foundry/bin/foundryup -ENV PATH="/root/.foundry/bin:${PATH}" -RUN forge --version -RUN rustup component add rustfmt --toolchain nightly -RUN cargo build --release --bin yapper - -# Non-root app container stage -FROM debian:bullseye-slim - -WORKDIR /app - -RUN apt update && apt-get install -y libcurl4 - -# Create non-root user and group -RUN groupadd -r appgroup && useradd -r -g appgroup yapperuser - -# Copy binary and just -COPY --from=builder /app/target/release/yapper . -COPY --from=builder /app/test-configs/docker . - -# Set ownership of application files and make binary executable -RUN chown -R yapperuser:appgroup /app && chmod +x /app/yapper - -# We need curl for the healthcheck -RUN apt update && apt-get install -y openssl - -# Switch to non-root user -USER yapperuser - -# Set the log level to debug by default -ENV RUST_LOG=info - -# Run the timeboost binary -CMD ["/app/yapper"] diff --git a/geth-config/genesis-default.json b/geth-config/genesis-default.json new file mode 100755 index 00000000..f73fa145 --- /dev/null +++ b/geth-config/genesis-default.json @@ -0,0 +1,54 @@ +{ + "config": { + "chainId": 31337, + "homesteadBlock": 0, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "muirGlacierBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "arrowGlacierBlock": 0, + "grayGlacierBlock": 0, + "shanghaiTime": 0, + "cancunTime": 0, + "pragueTime": 0, + "terminalTotalDifficulty": 0, + "terminalTotalDifficultyPassed": true, + "isDev": true, + "blobSchedule": { + "cancun": { + "target": 3, + "max": 6, + "baseFeeUpdateFraction": 3338477 + }, + "prague": { + "target": 6, + "max": 9, + "baseFeeUpdateFraction": 5007716 + } + } + }, + "nonce": "0x0", + "timestamp": "0x6511b40b", + "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gasLimit": "0x1c9c380", + "difficulty": "0", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x0000000000000000000000000000000000000000", + "alloc": { + "f39fd6e51aad88f6f4ce6ab8827279cfffb92266": { + "balance": "0x200000000000000000000000000000000000000000000000000000000000000" + } + }, + "number": "0x0", + "gasUsed": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "baseFeePerGas": "0x3b9aca00", + "excessBlobGas": null, + "blobGasUsed": null +} \ No newline at end of file diff --git a/geth-config/test-jwt-secret.txt b/geth-config/test-jwt-secret.txt new file mode 100644 index 00000000..6e72091c --- /dev/null +++ b/geth-config/test-jwt-secret.txt @@ -0,0 +1 @@ +688f5d737bad920bdfb2fc2f488d6b6209eebda1dae949a8de91398d932c517a diff --git a/grafana/dashboards/main.json b/grafana/dashboards/main.json index 832e5801..f350b27c 100644 --- a/grafana/dashboards/main.json +++ b/grafana/dashboards/main.json @@ -18,7 +18,7 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 3, + "id": 4, "links": [], "panels": [ { @@ -29,9 +29,9 @@ "x": 0, "y": 0 }, - "id": 4, + "id": 16, "panels": [], - "title": "Consensus", + "title": "Sequencer", "type": "row" }, { @@ -80,7 +80,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -89,40 +89,132 @@ ] } }, - "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "{__name__=\"committed_round\", instance=\"172.20.0.4:9002\", job=\"status\"}" - ], - "prefix": "All except:", - "readOnly": false - } + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 1 + }, + "id": 15, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "queued_prio_bundles", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "queued_reg_bundles", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "Queued (Priority/Regular) Bundles", + "type": "timeseries" + }, + { + "datasource": "prom1", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "properties": [ + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } + "color": "red", + "value": 80 } ] } - ] + }, + "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, + "x": 12, "y": 1 }, - "id": 1, + "id": 17, "options": { "legend": { "calcs": [], @@ -131,11 +223,142 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.1.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "queued_encrypted_ilist", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PABF2E7BD7AE7B0F4" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "output_decrypted_ilist", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "Queued (Encrypted/Decrypted) Bundles", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 4, + "panels": [], + "title": "Consensus", + "type": "row" + }, + { + "datasource": "prom1", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 10 + }, + "id": 1, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, - "pluginVersion": "11.4.0", + "pluginVersion": "12.1.1", "targets": [ { "datasource": { @@ -174,7 +397,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -189,7 +412,7 @@ "h": 8, "w": 12, "x": 12, - "y": 1 + "y": 10 }, "id": 2, "options": { @@ -207,7 +430,7 @@ "showThresholdMarkers": true, "sizing": "auto" }, - "pluginVersion": "11.4.0", + "pluginVersion": "12.1.1", "targets": [ { "editorMode": "code", @@ -220,19 +443,6 @@ "title": "Average Round Time", "type": "gauge" }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 11, - "panels": [], - "title": "RBC", - "type": "row" - }, { "datasource": { "type": "prometheus", @@ -249,7 +459,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -264,7 +474,7 @@ "h": 8, "w": 12, "x": 0, - "y": 10 + "y": 18 }, "id": 12, "options": { @@ -291,7 +501,7 @@ "sizing": "auto", "valueMode": "color" }, - "pluginVersion": "11.4.0", + "pluginVersion": "12.1.1", "targets": [ { "disableTextWrap": false, @@ -307,7 +517,6 @@ } ], "title": "Delivery duration (sec)", - "transparent": true, "type": "bargauge" }, { @@ -315,90 +524,43 @@ "type": "prometheus", "uid": "PABF2E7BD7AE7B0F4" }, - "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [] - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 14, - "options": { - "legend": { - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "11.4.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "max by(le) (ack_duration_bucket)", - "format": "heatmap", - "fullMetaSearch": false, - "includeNullMetadata": true, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "ACK duration (sec)", - "transparent": true, - "type": "piechart" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 18 - }, - "id": 5, - "panels": [], - "title": "Network", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } }, "mappings": [], "thresholds": { @@ -406,7 +568,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -420,398 +582,44 @@ "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 19 - }, - "id": 3, - "options": { - "minVizHeight": 75, - "minVizWidth": 75, - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showThresholdLabels": false, - "showThresholdMarkers": true, - "sizing": "auto" - }, - "pluginVersion": "11.4.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "connections", - "fullMetaSearch": false, - "includeNullMetadata": true, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Established connections", - "type": "gauge" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 12, - "y": 19 - }, - "id": 8, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "percentChangeColorMode": "standard", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "11.4.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.9, sum by(le) (rate(latency_bucket[$__rate_interval])))", - "format": "heatmap", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "RTT .90-quantile (milliseconds)", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 19 - }, - "id": 7, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "percentChangeColorMode": "standard", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "11.4.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.95, sum by(le) (rate(latency_bucket[$__rate_interval])))", - "format": "heatmap", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "RTT .95-quantile (milliseconds)", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, "x": 12, - "y": 23 - }, - "id": 10, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "percentChangeColorMode": "standard", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "11.4.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.5, sum by(le) (rate(latency_bucket[$__rate_interval])))", - "format": "heatmap", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "RTT .5-quantiles (milliseconds)", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 23 - }, - "id": 9, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "percentChangeColorMode": "standard", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "11.4.0", - "targets": [ - { - "disableTextWrap": false, - "editorMode": "builder", - "expr": "histogram_quantile(0.75, sum by(le) (rate(latency_bucket[$__rate_interval])))", - "format": "heatmap", - "fullMetaSearch": false, - "includeNullMetadata": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "RTT .75-quantile (milliseconds)", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "PABF2E7BD7AE7B0F4" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 27 + "y": 18 }, - "id": 6, + "id": 3, "options": { - "displayMode": "gradient", "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", - "showLegend": false - }, - "maxVizHeight": 300, - "minVizHeight": 16, - "minVizWidth": 8, - "namePlacement": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "showLegend": true }, - "showUnfilled": true, - "sizing": "auto", - "valueMode": "color" + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "11.4.0", + "pluginVersion": "12.1.1", "targets": [ { "disableTextWrap": false, "editorMode": "builder", - "expr": "sum by(le) (latency_bucket)", - "format": "heatmap", + "expr": "vertex_buffer", "fullMetaSearch": false, "includeNullMetadata": true, - "legendFormat": "{{le}}", + "legendFormat": "{{instance}}", "range": true, "refId": "A", "useBackend": false } ], - "title": "Network Latency (RTT - milliseconds)", - "type": "bargauge" + "title": "Vertex Buffer", + "type": "timeseries" } ], "preload": false, "refresh": "5s", - "schemaVersion": 40, + "schemaVersion": 41, "tags": [], "templating": { "list": [] @@ -823,7 +631,6 @@ "timepicker": {}, "timezone": "browser", "title": "Local Dashboard", - "uid": "dee0j3j8q3zeoc", - "version": 2, - "weekStart": "" + "uid": "b93b583c-7a82-46d0-be52-7fc9d689a0f5", + "version": 2 } \ No newline at end of file diff --git a/justfile b/justfile index 5c3736f6..4f8eb1db 100644 --- a/justfile +++ b/justfile @@ -21,7 +21,6 @@ build_release *ARGS: build_docker: docker build . -f ./docker/timeboost.Dockerfile -t timeboost:latest - docker build . -f ./docker/yapper.Dockerfile -t yapper:latest build-contracts: forge build @@ -117,8 +116,8 @@ mkconfig_docker DATETIME *ARGS: --http-api "172.20.0.2:8004" \ --mode "increment-address" \ --chain-namespace 10101 \ - --parent-rpc-url "http://172.20.0.12:8545" \ - --parent-chain-id 412346 \ + --parent-rpc-url "http://172.20.0.11:8545" \ + --parent-chain-id 31337 \ --parent-ibox-contract "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" \ --key-manager-contract "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" \ --timestamp {{DATETIME}} \ @@ -176,7 +175,7 @@ test-all: build_release build-test-utils --timeout 120 \ --spawn "1:anvil --port 8545" \ --run "2:sleep 3" \ - --run "3:scripts/deploy-test-contract" \ + --run "3:scripts/deploy-contract-local" \ --spawn "4:target/release/block-maker --port 55000 --committee test-configs/local/committee.toml" \ --spawn "4:target/release/yapper --keyset-file test-configs/local/committee.toml" \ --spawn "5:target/release/run-committee --configs test-configs/local/ --committee 0 --timeboost target/release/timeboost" \ diff --git a/prometheus/prometheus.yml b/prometheus/prometheus.yml index 7278a2d6..a2ec7a8c 100644 --- a/prometheus/prometheus.yml +++ b/prometheus/prometheus.yml @@ -6,12 +6,12 @@ scrape_configs: - job_name: status static_configs: - targets: - - 172.20.0.2:9000 - - 172.20.0.3:9001 - - 172.20.0.4:9002 - - 172.20.0.5:9003 - - 172.20.0.6:9004 - metrics_path: /v0/status/metrics + - 172.20.0.2:8004 + - 172.20.0.3:8004 + - 172.20.0.4:8004 + - 172.20.0.5:8004 + - 172.20.0.6:8004 + metrics_path: /i/metrics - job_name: cloud_status static_configs: - targets: diff --git a/scripts/deploy-contract-docker b/scripts/deploy-contract-docker new file mode 100755 index 00000000..bc7a8bff --- /dev/null +++ b/scripts/deploy-contract-docker @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +MANAGER_MNEMONIC="attend year erase basket blind adapt stove broccoli isolate unveil acquire category" +MANAGER_ACCOUNT_INDEX=0 +MANAGER_ADDRESS="0x36561082951eed7ffD59cFD82D70570C57072d02" +FAUCET_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" +URL="http://172.20.0.11:8545" +DEPLOYMENT_FILE=$(mktemp -t timeboost-deployment-XXXXX) + +# Fund manager account && create deployment file +cast send --rpc-url "$URL" --value 1ether --private-key "$FAUCET_PRIVATE_KEY" "$MANAGER_ADDRESS" +RUST_LOG=info /app/deploy \ + -m "$MANAGER_MNEMONIC" \ + -i "$MANAGER_ACCOUNT_INDEX" \ + -u "$URL" \ + -o "$DEPLOYMENT_FILE" + +# Extract the deployed KeyManager address +km_addr=$(sed -nr 's/^key_manager.*=.*"(.+)"/\1/p' "$DEPLOYMENT_FILE") + +# Update the contract +RUST_LOG=info /app/register \ + -m "$MANAGER_MNEMONIC" \ + -i "$MANAGER_ACCOUNT_INDEX" \ + -u "$URL" \ + -k "$km_addr" \ + -c "committee.toml" + +# Clean up the temporary deployment file +rm -f "$DEPLOYMENT_FILE" diff --git a/scripts/deploy-test-contract b/scripts/deploy-contract-local similarity index 100% rename from scripts/deploy-test-contract rename to scripts/deploy-contract-local diff --git a/test-configs/docker/committee.toml b/test-configs/docker/committee.toml index c15f83f6..606864c8 100644 --- a/test-configs/docker/committee.toml +++ b/test-configs/docker/committee.toml @@ -1,41 +1,41 @@ -effective_timestamp = "2025-09-15T17:08:44Z" +effective_timestamp = "2025-09-15T17:42:44Z" [[members]] -signing_key = "uf6oKVCphzAd1Y87UyK1hLfRz7pJJ8LSC393jzAbHKmZ" -dh_key = "3eP89nLTHxHaVR6kdMhorBeM77ndbe2TtgX1am76BSGW" -dkg_enc_key = "69nv9n7FNSHVeepYq3JBizQkBySZ4pq3YRdB1f574roqmiv2RBpCtDeQqi4igruC55" +signing_key = "hc48HUoRWoSngFzcB1j9NgzWqf1giMRK8ZwUGRbirXDf" +dh_key = "BUVYasb9FFFHTLAq3GXumRkq2dVkFmtwdJdgrQwpJnRZ" +dkg_enc_key = "6bJf6og7E5nPsYLrtqYYudoiVhGm88jom4gzp3GouXbeQpAPc8Z8C48fae4NdBDLSz" public_address = "172.20.0.2:8000" http_api = "172.20.0.2:8004" internal_api = "172.20.0.2:8003" [[members]] -signing_key = "z6FrBScyGgtbkbD7LzUfYWGHKnpF9XzrZw81ENPunFLW" -dh_key = "8hMVYLCeffEWAsk147ny4Z71AVHA619L1ijmMVmba7GD" -dkg_enc_key = "7ajdb8uCeehrXr1yaHF3wtgSKpxf9YEYKBwg2QsapZeRGnbD2MZcUx36rVyhU8AQwr" +signing_key = "ra3qtN6y26nFpWSe5MEbyMnvuN54hE82azu5hYg6hxce" +dh_key = "CpuxwJLuXcFLr6mdpqAp3vRZChtH6xVqxro9YcD9rH9k" +dkg_enc_key = "6H2qo1piFuhKgW22bgHxcTbzh9JAQocK77KqfsCtaNx8HaL3GYir4QG2tJkfoBKfQU" public_address = "172.20.0.3:8000" http_api = "172.20.0.3:8004" internal_api = "172.20.0.3:8003" [[members]] -signing_key = "h2sXHz4BuHF7hi1av6yQbsUgFKjYCNDhf5KhtTbWv2WE" -dh_key = "FHzdL3wZvaNdA9kfqBmJjAwpGckS8xWquhBdNMrzckNz" -dkg_enc_key = "7drbfCdN7vkYhZhN96KHLFDSgPBrmWXHw3o9i3HA7wjUcbGntMCHrhNo4rYLHsgg3X" +signing_key = "iUpUHyk3vongZ1LuVjP3AH5cjHTSiJb9Cgtsi53CwtYM" +dh_key = "Bt3CVThACdYeSapFZvaa3PpxVHcQ5znWwpEhVENJJrFF" +dkg_enc_key = "7Jeas4FYbhY2uuzM4HWthHDXRTnsZzqCiykDetVTVjctbkAYZQno7KVvTizPwQ2q2g" public_address = "172.20.0.4:8000" http_api = "172.20.0.4:8004" internal_api = "172.20.0.4:8003" [[members]] -signing_key = "uxkURysS7THRSkKUDW22R5LWAEkKVepjLDpHRa5jB6MK" -dh_key = "4HZj5ysKMsPobkAMnJytnQvf3NsVSLSkY3N9nBzDfCrc" -dkg_enc_key = "7n6vbt3zsTUifwkGngct9QMc9JqwT3ALvY2uYaKfkk5FDFKZgTSdnoboKr68BiveYv" +signing_key = "mnMw9aV8hRuZJJfXw24X9xQkMNRm29F69KQkZdFCAWRm" +dh_key = "FgJ5RWL769YBTT4eNimJp5dfAqLshrUAqdBCCZtgcrbm" +dkg_enc_key = "5yRtZSeQU4f16oHxkJbFph9bcbVQ1yoy7fx2jiXnDyBkCfZYfRKqRVRH6ps83izUcw" public_address = "172.20.0.5:8000" http_api = "172.20.0.5:8004" internal_api = "172.20.0.5:8003" [[members]] -signing_key = "2BH8XmMRMRM2od6gVB9BUnKaoVPbHoZBFaA7F3Qvu5ciS" -dh_key = "4w1eDWLNaiST6LxLGivqhdPwJGrfJf7DXo7SFVdhSmFY" -dkg_enc_key = "72bMFtCgLjrDDCMoFKSSgqBLoMW7dzStRQXaNG6hW3w9TkWM3GtmpJdDGo6YRPf2Hn" +signing_key = "ewYeKQvaC3QDjrSC9aS2bQL1CJZNYFBmWmg76TzmGtan" +dh_key = "D4MUChEMCKo1ZfgkPU12PFe9ZfbiUVqH95Gie3uqEPXC" +dkg_enc_key = "5xbbdsfegZDv2vpJ2CrhTiF1EbfsMfB9mkmsATkaxhkXQdnwu5g2AuLUba4THigwMz" public_address = "172.20.0.6:8000" http_api = "172.20.0.6:8004" internal_api = "172.20.0.6:8003" diff --git a/test-configs/docker/node_0.toml b/test-configs/docker/node_0.toml index 908bda4b..16d2b756 100644 --- a/test-configs/docker/node_0.toml +++ b/test-configs/docker/node_0.toml @@ -8,23 +8,23 @@ http-api = "172.20.0.2:8004" address = "172.20.0.2:8003" [keys.signing] -secret = "3n5wKiLHe7LBc3akyTyBzqJzkvntpKqdw8bzKz7oC9XE" -public = "uf6oKVCphzAd1Y87UyK1hLfRz7pJJ8LSC393jzAbHKmZ" +secret = "Efs9gd7guWeufo4RHFGk65JVDLDPAc8hD5GRu6Xsm2aT" +public = "hc48HUoRWoSngFzcB1j9NgzWqf1giMRK8ZwUGRbirXDf" [keys.dh] -secret = "BuvjD47Mv9U11ZiGzW6AsStGpwddPp6TTdrfcEcXgFGb" -public = "3eP89nLTHxHaVR6kdMhorBeM77ndbe2TtgX1am76BSGW" +secret = "7FiYDQLbqWi1rZPGDFPKyAT66BnoARCyim994jj5EGTs" +public = "BUVYasb9FFFHTLAq3GXumRkq2dVkFmtwdJdgrQwpJnRZ" [keys.dkg] -secret = "6ietDpSGbG6S32WJRZydd68j2KAcjSHom1cYvfpvPwRb" -public = "69nv9n7FNSHVeepYq3JBizQkBySZ4pq3YRdB1f574roqmiv2RBpCtDeQqi4igruC55" +secret = "3cyu7RPqu71f491UVs7RpB4ovdQJkvzg2Bg4f1DCa8kM" +public = "6bJf6og7E5nPsYLrtqYYudoiVhGm88jom4gzp3GouXbeQpAPc8Z8C48fae4NdBDLSz" [chain] namespace = 10101 [chain.parent] id = 31337 -rpc-url = "http://127.0.0.1:8545/" +rpc-url = "http://172.20.0.11:8545/" ibox-contract = "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" block-tag = "finalized" key-manager-contract = "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" diff --git a/test-configs/docker/node_1.toml b/test-configs/docker/node_1.toml index 7f992455..8bcdd42e 100644 --- a/test-configs/docker/node_1.toml +++ b/test-configs/docker/node_1.toml @@ -8,23 +8,23 @@ http-api = "172.20.0.3:8004" address = "172.20.0.3:8003" [keys.signing] -secret = "DQFySXkfkGQS2VudujHD5nD1ePeKDBGC9w5pphfF2EQ7" -public = "z6FrBScyGgtbkbD7LzUfYWGHKnpF9XzrZw81ENPunFLW" +secret = "ERFh9LPspgCz43wXhV93ay6qJFjJxTymhQdmDuWiqyRJ" +public = "ra3qtN6y26nFpWSe5MEbyMnvuN54hE82azu5hYg6hxce" [keys.dh] -secret = "AAfU2kXDKMXccU8uK6JGWkizNahR4kmn1CvZmZud7fFD" -public = "8hMVYLCeffEWAsk147ny4Z71AVHA619L1ijmMVmba7GD" +secret = "2mGbvFZ6rPdzxy3QJXCr9smZVRqLmAVhJwD9PdLorS5w" +public = "CpuxwJLuXcFLr6mdpqAp3vRZChtH6xVqxro9YcD9rH9k" [keys.dkg] -secret = "HxFwTjUPpM6nU1HQ7swSg1z73WNco4LxPkAdxNgYZt1G" -public = "7ajdb8uCeehrXr1yaHF3wtgSKpxf9YEYKBwg2QsapZeRGnbD2MZcUx36rVyhU8AQwr" +secret = "5BTpfxKPmvZ7RLg9ZoUGTmozm8CfLGrPZfMzkikuBCZ8" +public = "6H2qo1piFuhKgW22bgHxcTbzh9JAQocK77KqfsCtaNx8HaL3GYir4QG2tJkfoBKfQU" [chain] namespace = 10101 [chain.parent] id = 31337 -rpc-url = "http://127.0.0.1:8545/" +rpc-url = "http://172.20.0.11:8545/" ibox-contract = "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" block-tag = "finalized" key-manager-contract = "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" diff --git a/test-configs/docker/node_2.toml b/test-configs/docker/node_2.toml index 0bf6c52e..51c92bee 100644 --- a/test-configs/docker/node_2.toml +++ b/test-configs/docker/node_2.toml @@ -8,23 +8,23 @@ http-api = "172.20.0.4:8004" address = "172.20.0.4:8003" [keys.signing] -secret = "GU5LjuT9URRVx7cQWWjDkNhLsJxkjanYX8hcHD2pEYdL" -public = "h2sXHz4BuHF7hi1av6yQbsUgFKjYCNDhf5KhtTbWv2WE" +secret = "A93KRMuKoFMGnW7XcPqqgqCprTX4iczCad6mpQXe9L2X" +public = "iUpUHyk3vongZ1LuVjP3AH5cjHTSiJb9Cgtsi53CwtYM" [keys.dh] -secret = "86VFr8qEcTuxuzXuVgugwUTA8WNExUKut6KSsMgY9DBZ" -public = "FHzdL3wZvaNdA9kfqBmJjAwpGckS8xWquhBdNMrzckNz" +secret = "Fn891W26UJphbmMNz757q3zHd7Hf73b79rri5tBNAmqN" +public = "Bt3CVThACdYeSapFZvaa3PpxVHcQ5znWwpEhVENJJrFF" [keys.dkg] -secret = "8F5bTw1yVe8u49VmJpxAapVtcmKXQsPpVAvRjRePo8Rx" -public = "7drbfCdN7vkYhZhN96KHLFDSgPBrmWXHw3o9i3HA7wjUcbGntMCHrhNo4rYLHsgg3X" +secret = "3e1DHq9Zhob58y8ApF9EpSHeB3hvgxEWUY3K6re3HM5y" +public = "7Jeas4FYbhY2uuzM4HWthHDXRTnsZzqCiykDetVTVjctbkAYZQno7KVvTizPwQ2q2g" [chain] namespace = 10101 [chain.parent] id = 31337 -rpc-url = "http://127.0.0.1:8545/" +rpc-url = "http://172.20.0.11:8545/" ibox-contract = "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" block-tag = "finalized" key-manager-contract = "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" diff --git a/test-configs/docker/node_3.toml b/test-configs/docker/node_3.toml index 0cdfce8f..f6acb1fa 100644 --- a/test-configs/docker/node_3.toml +++ b/test-configs/docker/node_3.toml @@ -8,23 +8,23 @@ http-api = "172.20.0.5:8004" address = "172.20.0.5:8003" [keys.signing] -secret = "C3S84dgsyHhrc5nEhCgBRe8zBaEHbEcwWz5fbShCZvU1" -public = "uxkURysS7THRSkKUDW22R5LWAEkKVepjLDpHRa5jB6MK" +secret = "EpXe2EVVhzTXJhHhppiAwnVZrDkUqkBXd1Wsnn8BewGx" +public = "mnMw9aV8hRuZJJfXw24X9xQkMNRm29F69KQkZdFCAWRm" [keys.dh] -secret = "BCnTCKitRJewSgZo8jVn7SU1PpPhRenBkUXy7AhuBwku" -public = "4HZj5ysKMsPobkAMnJytnQvf3NsVSLSkY3N9nBzDfCrc" +secret = "A9wk8qJGuk9nLsmAKyKwZitFxH6F1MD4rrttpG66rrxZ" +public = "FgJ5RWL769YBTT4eNimJp5dfAqLshrUAqdBCCZtgcrbm" [keys.dkg] -secret = "8vkvBsFk2uZ4ci7UGvhNKAT8eXBkBSd9xMxgrDa2Szgx" -public = "7n6vbt3zsTUifwkGngct9QMc9JqwT3ALvY2uYaKfkk5FDFKZgTSdnoboKr68BiveYv" +secret = "A5LfoCff3jSknLzFhwDQNqUqc5KTUpigiTzDTbwuki5u" +public = "5yRtZSeQU4f16oHxkJbFph9bcbVQ1yoy7fx2jiXnDyBkCfZYfRKqRVRH6ps83izUcw" [chain] namespace = 10101 [chain.parent] id = 31337 -rpc-url = "http://127.0.0.1:8545/" +rpc-url = "http://172.20.0.11:8545/" ibox-contract = "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" block-tag = "finalized" key-manager-contract = "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" diff --git a/test-configs/docker/node_4.toml b/test-configs/docker/node_4.toml index af7ddb30..d3114ed6 100644 --- a/test-configs/docker/node_4.toml +++ b/test-configs/docker/node_4.toml @@ -8,23 +8,23 @@ http-api = "172.20.0.6:8004" address = "172.20.0.6:8003" [keys.signing] -secret = "ABC1KRHKsiU5Mg9FuHT3gigz1JLQAZ3xXpmPizvLPHuS" -public = "2BH8XmMRMRM2od6gVB9BUnKaoVPbHoZBFaA7F3Qvu5ciS" +secret = "8F8LumMWrrDJZGc2rmHVH3yJxAW5EKAae4i4hkCZzJqa" +public = "ewYeKQvaC3QDjrSC9aS2bQL1CJZNYFBmWmg76TzmGtan" [keys.dh] -secret = "EMarfnPAnapjA819WAoiJhHd9KfRTatdAn3k8WAn3Ap5" -public = "4w1eDWLNaiST6LxLGivqhdPwJGrfJf7DXo7SFVdhSmFY" +secret = "67ApLBhdQLqXfdfVdyWT4wVwD6BdstMNjqNrWwkpTAQx" +public = "D4MUChEMCKo1ZfgkPU12PFe9ZfbiUVqH95Gie3uqEPXC" [keys.dkg] -secret = "HzKNSzkzzgqYiBjgt52qUe1UXFnSos1vETQZwCamEhLb" -public = "72bMFtCgLjrDDCMoFKSSgqBLoMW7dzStRQXaNG6hW3w9TkWM3GtmpJdDGo6YRPf2Hn" +secret = "A9j56C5A2XCyCr6KRmSv9Fkz2Yx9AJZDm1Uo4ADWZ269" +public = "5xbbdsfegZDv2vpJ2CrhTiF1EbfsMfB9mkmsATkaxhkXQdnwu5g2AuLUba4THigwMz" [chain] namespace = 10101 [chain.parent] id = 31337 -rpc-url = "http://127.0.0.1:8545/" +rpc-url = "http://172.20.0.11:8545/" ibox-contract = "0xa0f3a1a4e2b2bcb7b48c8527c28098f207572ec1" block-tag = "finalized" key-manager-contract = "0x2bbf15bc655c4cc157b769cfcb1ea9924b9e1a35" diff --git a/yapper/Cargo.toml b/yapper/Cargo.toml index 486da357..2a80934f 100644 --- a/yapper/Cargo.toml +++ b/yapper/Cargo.toml @@ -4,6 +4,10 @@ version.workspace = true edition.workspace = true rust-version.workspace = true +[[bin]] +name = "yapper" +path = "src/main.rs" + [dependencies] alloy = { workspace = true } anyhow = { workspace = true }