Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: input-output-hk/mithril
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: be638e5d59e45b2a20f8f2493f256483c7d62168
Choose a base ref
..
head repository: input-output-hk/mithril
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3794e050e37f0a06b871772bce6c9055ce4a3483
Choose a head ref
Showing with 17,439 additions and 891 deletions.
  1. +2 −2 .github/workflows/backward-compatibility.yml
  2. +4 −4 .github/workflows/ci.yml
  3. +1 −1 .github/workflows/test-docker-distribution.yml
  4. +2 −0 CHANGELOG.md
  5. +4 −5 Cargo.lock
  6. +21 −0 DEV-ADR.md
  7. +29 −0 docs/website/adr/010-http-status-code.md
  8. +8 −8 docs/website/root/manual/develop/run-mithril-devnet.md
  9. +4 −4 docs/website/root/manual/getting-started/bootstrap-cardano-node.md
  10. +1 −1 mithril-aggregator/Cargo.toml
  11. +1 −1 mithril-aggregator/Dockerfile
  12. +1 −1 mithril-aggregator/Dockerfile.ci
  13. +19 −8 mithril-aggregator/src/http_server/routes/reply.rs
  14. +5 −4 mithril-aggregator/src/http_server/routes/signer_routes.rs
  15. +1 −8 mithril-aggregator/tests/create_certificate_slave.rs
  16. +196 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/alonzo-genesis.json
  17. +14,572 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/byron-genesis.json
  18. +110 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/config-bp.json
  19. +110 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/config.json
  20. +303 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/conway-genesis.json
  21. +68 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/shelley-genesis.json
  22. +31 −0 mithril-infra/assets/docker/cardano/config/10.2/mainnet/cardano-node/topology.json
  23. +196 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/alonzo-genesis.json
  24. +117 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/byron-genesis.json
  25. +109 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/config-bp.json
  26. +109 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/config.json
  27. +303 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/conway-genesis.json
  28. +72 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/shelley-genesis.json
  29. +23 −0 mithril-infra/assets/docker/cardano/config/10.2/preprod/cardano-node/topology.json
  30. +2 −1 mithril-infra/assets/infra.version
  31. +1 −1 mithril-infra/variables.tf
  32. +1 −1 mithril-signer/Cargo.toml
  33. +1 −1 mithril-signer/Dockerfile
  34. +1 −1 mithril-signer/Dockerfile.ci
  35. +112 −7 mithril-signer/src/runtime/state_machine.rs
  36. +22 −1 mithril-signer/src/services/aggregator_client.rs
  37. +10 −0 mithril-stm/CHANGELOG.md
  38. +1 −1 mithril-stm/Cargo.toml
  39. +0 −798 mithril-stm/src/merkle_tree.rs
  40. +210 −0 mithril-stm/src/merkle_tree/commitment.rs
  41. +53 −0 mithril-stm/src/merkle_tree/leaf.rs
  42. +39 −0 mithril-stm/src/merkle_tree/mod.rs
  43. +151 −0 mithril-stm/src/merkle_tree/path.rs
  44. +387 −0 mithril-stm/src/merkle_tree/tree.rs
  45. +0 −1 mithril-stm/src/stm.rs
  46. +2 −1 mithril-test-lab/mithril-devnet/VERSION
  47. +1 −1 mithril-test-lab/mithril-devnet/mkfiles/mkfiles-init.sh
  48. +1 −2 mithril-test-lab/mithril-end-to-end/Cargo.toml
  49. +7 −8 mithril-test-lab/mithril-end-to-end/src/main.rs
  50. +11 −14 mithril-test-lab/mithril-end-to-end/src/mithril/infrastructure.rs
  51. +2 −3 mithril-test-lab/mithril-end-to-end/src/mithril/relay_signer.rs
  52. +2 −2 openapi.yaml
4 changes: 2 additions & 2 deletions .github/workflows/backward-compatibility.yml
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ on:
description: "Cardano node version used in e2e"
required: true
type: string
default: "10.1.4"
default: "10.2.1"
signed-entity-types:
description: "Signed entity types parameters (discriminants names in an ordered comma separated list)"
required: true
@@ -25,7 +25,7 @@ on:
default: 3
cardano-node-version:
type: string
default: "10.1.4"
default: "10.2.1"
signed-entity-types:
type: string
default: "CardanoTransactions,CardanoStakeDistribution"
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -309,8 +309,8 @@ jobs:
# Include a test for partial decentralization with master/slave signer registration and P2P signature registration
- mode: "master-slave"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
next_era: ""
cardano_node_version: "10.1.4"
next_era: [""]
cardano_node_version: "10.2.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
extra_args: "--number-of-aggregators=2 --use-relays --relay-signer-registration-mode=passthrough --relay-signature-registration-mode=p2p"
@@ -326,15 +326,15 @@ jobs:
- mode: "std"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
next_era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[1] }}
cardano_node_version: "10.1.4"
cardano_node_version: "10.2.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
extra_args: ""
# Include a test for the era switch with regenesis
- mode: "std"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
next_era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[1] }}
cardano_node_version: "10.1.4"
cardano_node_version: "10.2.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
extra_args: "--mithril-era-regenesis-on-switch"
2 changes: 1 addition & 1 deletion .github/workflows/test-docker-distribution.yml
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ on:
description: The url of the archive of the Cardano binaries
required: true
type: string
default: https://github.com/IntersectMBO/cardano-node/releases/download/10.1.4/cardano-node-10.1.4-linux.tar.gz
default: https://github.com/IntersectMBO/cardano-node/releases/download/10.2.1/cardano-node-10.2.1-linux.tar.gz
dry_run:
description: Dry run will not push the Docker images to the registry
required: true
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -13,6 +13,8 @@ As a minor extension, we have adopted a slightly different versioning convention

- Upgraded the minimum required `glibc` version from `2.31` to `2.35` for the pre-built Linux binaries.

- Support for `Cardano node` `10.2.1` in the signer and the aggregator.

- End support for **macOS x64 pre-built binaries** for the client CLI.

- **UNSTABLE** Implement a slave signer registration mode in the aggregator.
9 changes: 4 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions DEV-ADR.md
Original file line number Diff line number Diff line change
@@ -2,6 +2,27 @@

---

<!--
Template of ADR
## ID. TITLE
date: 2025-XX-XX
status: Accepted
### Context
To complete
### Decision
To complete
### Consequences
To complete
-->

## 2. Remove Artifacts serialization support when compiling to WebAssembly

date: 2025-02-26
29 changes: 29 additions & 0 deletions docs/website/adr/010-http-status-code.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
slug: 10
title: |
10. Specific Mithril Http status code
authors:
- name: Mithril Team
tags: [Accepted]
date: 2025-03-21
---

## Status

Accepted

## Context

In exchanges between the signer and the aggregator, we need to retrieve the reason why a request was unsuccessful.
Error handling will depend on the specific functional case of Mithril.
We could have reused existing HTTP codes, but they are too general and could be returned for cases other than the one we wish to isolate.

## Decision

We therefore decided to return specific error codes when we need to identify the functional case.
We start at 450 for client error codes and at 550 for server error codes.

## Consequences

Specific Mithril HTTP status code on server error should be between 550 and 599.
For client error the HTTP status code should be between 450 and 499.
16 changes: 8 additions & 8 deletions docs/website/root/manual/develop/run-mithril-devnet.md
Original file line number Diff line number Diff line change
@@ -107,7 +107,7 @@ You should see the following information displayed:
>> Artifacts Directory[env::ARTIFACTS_DIR]: artifacts
>> Cardano Full nodes [env::NUM_FULL_NODES]: 1
>> Cardano SPO nodes [env::NUM_POOL_NODES]: 2
>> Cardano Node Version [env::CARDANO_NODE_VERSION]: 10.1.4
>> Cardano Node Version [env::CARDANO_NODE_VERSION]: 10.2.1
>> Cardano Network Magic [env::NETWORK_MAGIC]: 42
>> Cardano Hard Fork Babbage At Epoch [env::HARD_FORK_BABBAGE_AT_EPOCH]: 0
>> Cardano Hard Fork Conway At Epoch [env::HARD_FORK_CONWAY_AT_EPOCH]: 0
@@ -126,7 +126,7 @@ generated genesis with: 3 genesis keys, 2 non-delegating UTxO keys, 2 stake pool
>> Start Cardano network
cardano-cli 10.1.1.0 - linux-x86_64 - ghc-8.10
git rev 01bda2e2cb0a70cd95067d696dbb44665f1d680a
cardano-node 10.1.4 - linux-x86_64 - ghc-8.10
cardano-node 10.2.1 - linux-x86_64 - ghc-8.10
git rev 01bda2e2cb0a70cd95067d696dbb44665f1d680a
>> Starting Cardano node 'node-full1'
>> Starting Cardano node 'node-pool1'
@@ -191,7 +191,7 @@ Signer 2 pool1y3pxhtqytcwy3mmnawqf2ej0x9sz5frkkwkz6scfqmzyyw8u38v Certified Po
>> Bootstrap the Genesis certificate
{"msg":"Started","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.953666896Z","hostname":"c993b6b764f2","pid":1,"node_version":"0.5.110+e2fa1e0","run_mode":"dev"}
{Genesis bootstrap for test only!
"msg":"BOOTSTRAP GENESIS command","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.95394937Z","hostname":"c993b6b764f2","pid":1,"config":"Configuration { environment: Production, cardano_cli_path: \"/app/bin/cardano-cli\", cardano_node_socket_path: \"/data/ipc/node.sock\", cardano_node_version: \"10.1.4\", network_magic: Some(42), network: \"devnet\", chain_observer_type: Pallas, protocol_parameters: ProtocolParameters { k: 5, m: 100, phi_f: 0.65 }, snapshot_uploader_type: Local, snapshot_bucket_name: None, snapshot_use_cdn_domain: false, server_ip: \"0.0.0.0\", server_port: 8080, run_interval: 1000, db_directory: \"/data/db\", snapshot_directory: \".\", data_stores_directory: \"/data/mithril/aggregator/stores\", genesis_verification_key: \"5b33322c3235332c3138362c3230312c3137372c31312c3131372c3133352c3138372c3136372c3138312c3138382c32322c35392c3230362c3130352c3233312c3135302c3231352c33302c37382c3231322c37362c31362c3235322c3138302c37322c3133342c3133372c3234372c3136312c36385d\", reset_digests_cache: false, disable_digests_cache: false, store_retention_limit: None, era_reader_adapter_type: Bootstrap, era_reader_adapter_params: None, signed_entity_types: None, snapshot_compression_algorithm: Zstandard, zstandard_parameters: None, cexplorer_pools_url: None, signer_importer_run_interval: 720, allow_unparsable_block: false, cardano_transactions_prover_cache_pool_size: 10, cardano_transactions_database_connection_pool_size: 10, cardano_transactions_signing_config: CardanoTransactionsSigningConfig { security_parameter: BlockNumber(3000), step: BlockNumber(120) }, cardano_transactions_prover_max_hashes_allowed_by_request: 100, cardano_transactions_block_streamer_max_roll_forwards_per_poll: 10000, enable_metrics_server: false, metrics_server_ip: \"0.0.0.0\", metrics_server_port: 9090, persist_usage_report_interval_in_seconds: 10 }"}
"msg":"BOOTSTRAP GENESIS command","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.95394937Z","hostname":"c993b6b764f2","pid":1,"config":"Configuration { environment: Production, cardano_cli_path: \"/app/bin/cardano-cli\", cardano_node_socket_path: \"/data/ipc/node.sock\", cardano_node_version: \"10.2.1\", network_magic: Some(42), network: \"devnet\", chain_observer_type: Pallas, protocol_parameters: ProtocolParameters { k: 5, m: 100, phi_f: 0.65 }, snapshot_uploader_type: Local, snapshot_bucket_name: None, snapshot_use_cdn_domain: false, server_ip: \"0.0.0.0\", server_port: 8080, run_interval: 1000, db_directory: \"/data/db\", snapshot_directory: \".\", data_stores_directory: \"/data/mithril/aggregator/stores\", genesis_verification_key: \"5b33322c3235332c3138362c3230312c3137372c31312c3131372c3133352c3138372c3136372c3138312c3138382c32322c35392c3230362c3130352c3233312c3135302c3231352c33302c37382c3231322c37362c31362c3235322c3138302c37322c3133342c3133372c3234372c3136312c36385d\", reset_digests_cache: false, disable_digests_cache: false, store_retention_limit: None, era_reader_adapter_type: Bootstrap, era_reader_adapter_params: None, signed_entity_types: None, snapshot_compression_algorithm: Zstandard, zstandard_parameters: None, cexplorer_pools_url: None, signer_importer_run_interval: 720, allow_unparsable_block: false, cardano_transactions_prover_cache_pool_size: 10, cardano_transactions_database_connection_pool_size: 10, cardano_transactions_signing_config: CardanoTransactionsSigningConfig { security_parameter: BlockNumber(3000), step: BlockNumber(120) }, cardano_transactions_prover_max_hashes_allowed_by_request: 100, cardano_transactions_block_streamer_max_roll_forwards_per_poll: 10000, enable_metrics_server: false, metrics_server_ip: \"0.0.0.0\", metrics_server_port: 9090, persist_usage_report_interval_in_seconds: 10 }"}
{"msg":"Opening SQLite connection","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954098066Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder","path":"/data/mithril/aggregator/stores/aggregator.sqlite3"}
{"msg":"Enabling SQLite Write Ahead Log journal mode","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954185725Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder"}
{"msg":"Enabling SQLite foreign key support","v":0,"name":"mithril-aggregator","level":20,"time":"2024-11-14T10:29:07.954483371Z","hostname":"c993b6b764f2","pid":1,"src":"ConnectionBuilder"}
@@ -332,7 +332,7 @@ The networks will be queried every second and will display:
"http://0.0.0.0:8080/aggregator/artifact/snapshot/4c7b06dd2bef1416391b92a46dae7d2f606ced2954b628f844b021ba5b52b15f/download"
],
"compression_algorithm": "zstandard",
"cardano_node_version": "10.1.4"
"cardano_node_version": "10.2.1"
},
{
"digest": "b98b25f505401e967df1012a4c13385290db15d157d0292e9f8290bd9933a66e",
@@ -349,7 +349,7 @@ The networks will be queried every second and will display:
"http://0.0.0.0:8080/aggregator/artifact/snapshot/b98b25f505401e967df1012a4c13385290db15d157d0292e9f8290bd9933a66e/download"
],
"compression_algorithm": "zstandard",
"cardano_node_version": "10.1.4"
"cardano_node_version": "10.2.1"
}
]

@@ -564,7 +564,7 @@ You will see more information about the snapshot:
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Size | 2323485648 |
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Cardano node version | 10.1.4 |
| Cardano node version | 10.2.1 |
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Location | https://storage.googleapis.com/cdn.aggregator.testing-preview.api.mithril.network/preview-e539-i10787.db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667.tar.zst |
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -592,9 +592,9 @@ You will see that the certificate chain is validated to ensure the issued certif
5/5 - Verifying the cardano db signature…
Cardano db 'db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667' has been unpacked and successfully checked against Mithril multi-signature contained in the certificate.

Files in the directory '/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db' can be used to run a Cardano node with version >= 10.1.4.
Files in the directory '/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db' can be used to run a Cardano node with version >= 10.2.1.

If you are using Cardano Docker image, you can restore a Cardano Node with:

docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:10.1.4
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:10.2.1
```
Original file line number Diff line number Diff line change
@@ -429,7 +429,7 @@ You will see more information about the snapshot:
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Size | 2323485648 |
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Cardano node version | 10.1.4 |
| Cardano node version | 10.2.1 |
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Location | https://storage.googleapis.com/cdn.aggregator.testing-preview.api.mithril.network/preview-e539-i10787.db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667.tar.zst |
+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -457,19 +457,19 @@ You will see that the selected snapshot archive has been downloaded locally unpa
5/5 - Verifying the cardano db signature…
Cardano db 'db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667' has been unpacked and successfully checked against Mithril multi-signature contained in the certificate.
Files in the directory '/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db' can be used to run a Cardano node with version >= 10.1.4.
Files in the directory '/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db' can be used to run a Cardano node with version >= 10.2.1.
If you are using a Cardano Docker image, you can restore a Cardano node with:
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:10.1.4
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="/home/mithril/data/testnet/db5f50a060d4b813125c4263b700ecc96e5d8c8710f0430e5c80d2f0fa79b667/db",target=/data/db/ -e NETWORK=preview ghcr.io/intersectmbo/cardano-node:10.2.1
```
### Step 5: Launch a Cardano node from the restored Cardano DB snapshot
Launch an empty Cardano node and make it live in minutes!
```bash
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="$(pwd)/data/testnet/$SNAPSHOT_DIGEST/db",target=/data/db/ -e NETWORK=$CARDANO_NETWORK ghcr.io/intersectmbo/cardano-node:10.1.4
docker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data --mount type=bind,source="$(pwd)/data/testnet/$SNAPSHOT_DIGEST/db",target=/data/db/ -e NETWORK=$CARDANO_NETWORK ghcr.io/intersectmbo/cardano-node:10.2.1
```
You will see the Cardano node start by validating the files ingested from the snapshot archive. Then, it will synchronize with the other network nodes and start adding blocks:
2 changes: 1 addition & 1 deletion mithril-aggregator/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mithril-aggregator"
version = "0.7.19"
version = "0.7.21"
description = "A Mithril Aggregator server"
authors = { workspace = true }
edition = { workspace = true }
2 changes: 1 addition & 1 deletion mithril-aggregator/Dockerfile
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ RUN /app/target/release/mithril-aggregator --version
FROM debian:12-slim

# Args
ARG CARDANO_NODE_VERSION=10.1.4
ARG CARDANO_NODE_VERSION=10.2.1
ARG CARDANO_BIN_URL=https://github.com/input-output-hk/cardano-node/releases/download/$CARDANO_NODE_VERSION/cardano-node-$CARDANO_NODE_VERSION-linux.tar.gz
ARG EMBED-CARDANO-CLI=0

2 changes: 1 addition & 1 deletion mithril-aggregator/Dockerfile.ci
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ RUN mkdir -p /app/bin
RUN apt-get update -y && apt-get install -y libssl-dev ca-certificates wget && apt-get clean && rm -rf /var/lib/apt/lists/*

# Install cardano-cli
ARG CARDANO_NODE_VERSION=10.1.4
ARG CARDANO_NODE_VERSION=10.2.1
ARG CARDANO_BIN_URL=https://github.com/input-output-hk/cardano-node/releases/download/$CARDANO_NODE_VERSION/cardano-node-$CARDANO_NODE_VERSION-linux.tar.gz
ARG EMBED-CARDANO-CLI=0
RUN if [ "$EMBED-CARDANO-CLI" = 1 ] ; then \
Loading