├── nix ├── cardano │ ├── dashboards │ │ └── .gitkeep │ ├── nomadCharts │ │ ├── srv-db-sync.nix │ │ ├── srv-node-local.nix │ │ ├── srv-submit-api.nix │ │ ├── srv-ogmios.nix │ │ ├── default.nix │ │ ├── srv-metadata-server.nix │ │ ├── srv-node.nix │ │ ├── srv-wallet.nix │ │ ├── srv-metadata-webhook.nix │ │ └── srv-metadata-varnish.nix │ ├── dashboards.nix │ ├── nomadJob.nix │ ├── constants.nix │ ├── prepare-mono-repo │ │ ├── remove-prepare-mono-repo.diff │ │ └── cabal.diff │ ├── healthChecks.nix │ ├── library.nix │ └── hydraJobs.nix ├── metal │ ├── encrypted │ │ ├── nix-public-key-file │ │ ├── nix-builder-key.pub │ │ ├── .sops.yaml │ │ ├── equinix.json │ │ ├── nomad.bootstrap.enc.json │ │ ├── wg │ │ │ ├── explorer-private │ │ │ ├── explorer-1-private │ │ │ ├── explorer-2-private │ │ │ └── monitoring-private │ │ ├── netrc │ │ ├── consul-clients.json │ │ ├── alertmanager │ │ ├── redis-password.json │ │ ├── grafana-password.json │ │ ├── nomad.json │ │ ├── nix-secret-key-file │ │ ├── awsExt-credentials │ │ ├── awsExt-config │ │ ├── oauth-secrets │ │ ├── consul-core.json │ │ ├── nix-cache.json │ │ ├── docker-passwords.json │ │ ├── nix-builder-key │ │ ├── equinix-cardano-world-ssh.conf │ │ ├── explorer.json │ │ ├── vault.enc.json │ │ └── ca.json │ ├── equinix │ │ ├── explorer-1 │ │ │ ├── packet.nix │ │ │ ├── configuration.nix │ │ │ └── packet │ │ │ │ └── auth.nix │ │ ├── explorer-2 │ │ │ ├── packet.nix │ │ │ ├── configuration.nix │ │ │ └── packet │ │ │ │ └── auth.nix │ │ └── explorer │ │ │ ├── packet.nix │ │ │ ├── configuration.nix │ │ │ └── packet │ │ │ └── auth.nix │ └── explorer │ │ ├── wireguard.nix │ │ ├── wireguard-gateway.nix │ │ ├── cardano-postgres.nix │ │ └── aux-config.nix ├── cloud │ ├── library.nix │ ├── actions.nix │ ├── namespaces │ │ ├── infra.nix │ │ └── mainnet.nix │ ├── kv │ │ ├── vault │ │ │ ├── db-sync │ │ │ │ ├── mainnet.enc.yaml │ │ │ │ ├── preprod.enc.yaml │ │ │ │ ├── preview.enc.yaml │ │ │ │ └── private.enc.yaml │ │ │ ├── metadata │ │ │ │ └── infra.enc.yaml │ │ │ ├── patroni │ │ │ │ └── infra.enc.yaml │ │ │ └── .sops.yaml │ │ └── consul │ │ │ └── cardano │ │ │ └── mainnet.json │ └── constants.nix ├── docs │ ├── packages.nix │ ├── entrypoints.nix │ ├── oci-images.nix │ └── nomadCharts.nix └── automation │ ├── hydraJobs.nix │ ├── push-node-snapshot.sh │ ├── pipelines.nix │ ├── devshells │ └── Readme.md │ ├── nixago.nix │ └── devshells.nix ├── docs ├── README.md ├── .gitignore ├── environments │ ├── mainnet │ │ ├── conway-genesis.json │ │ ├── topology.json │ │ ├── topology-p2p.json │ │ ├── shelley-genesis.json │ │ ├── db-sync-config.json │ │ ├── submit-api-config.json │ │ └── config.json │ ├── preprod │ │ ├── conway-genesis.json │ │ ├── topology.json │ │ ├── shelley-genesis.json │ │ ├── db-sync-config.json │ │ ├── submit-api-config.json │ │ └── config.json │ ├── preview │ │ ├── conway-genesis.json │ │ ├── topology.json │ │ ├── shelley-genesis.json │ │ ├── db-sync-config.json │ │ ├── submit-api-config.json │ │ └── config.json │ ├── .editorconfig │ ├── private │ │ ├── topology.json │ │ ├── conway-genesis.json │ │ ├── shelley-genesis.json │ │ ├── byron-genesis.json │ │ ├── db-sync-config.json │ │ ├── submit-api-config.json │ │ └── config.json │ ├── sanchonet │ │ ├── topology.json │ │ ├── conway-genesis.json │ │ ├── shelley-genesis.json │ │ ├── byron-genesis.json │ │ ├── db-sync-config.json │ │ ├── submit-api-config.json │ │ └── config.json │ └── shelley-qa │ │ ├── topology.json │ │ ├── conway-genesis.json │ │ ├── shelley-genesis.json │ │ ├── byron-genesis.json │ │ ├── db-sync-config.json │ │ ├── submit-api-config.json │ │ └── config.json ├── architecture-decisions │ └── adr_template.md ├── cost-model.md ├── SUMMARY.md └── explain │ └── packaging-principles.md ├── theme └── favicon.png ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── SECURITY.md ├── .jira.d └── config.yml ├── default.nix ├── .envrc ├── book.toml ├── .gitignore ├── .reuse └── dep5 ├── NOTICE ├── CONTRIBUTING.md ├── .editorconfig ├── scripts ├── iptables-cleanup-fn.sh └── dbsync-pool-perf.sh └── README.md /nix/cardano/dashboards/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | {{#include ../README.md}} 2 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # mdbook build 2 | book/** 3 | 4 | -------------------------------------------------------------------------------- /docs/environments/mainnet/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "genDelegs": {} 3 | } 4 | -------------------------------------------------------------------------------- /docs/environments/preprod/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "genDelegs": {} 3 | } 4 | -------------------------------------------------------------------------------- /docs/environments/preview/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "genDelegs": {} 3 | } 4 | -------------------------------------------------------------------------------- /theme/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IntersectMBO/cardano-world/HEAD/theme/favicon.png -------------------------------------------------------------------------------- /nix/metal/encrypted/nix-public-key-file: -------------------------------------------------------------------------------- 1 | cardano-testnet-0:DDsAmc/fvVa3c3notZcw9bfGUHFRURHPonrGC5JmsTo= -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # code owners are automatically assigned to review PRs 2 | 3 | * @input-output-hk/node-sre 4 | -------------------------------------------------------------------------------- /nix/cloud/library.nix: -------------------------------------------------------------------------------- 1 | { 2 | cell, 3 | inputs, 4 | }: { 5 | actionCiInputName = "GitHub event"; 6 | } 7 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | See https://github.com/input-output-hk/cardano-engineering-handbook/blob/main/CODE-OF-CONDUCT.md 2 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer-1/packet.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./packet/auth.nix 4 | ./packet/system.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer-2/packet.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./packet/auth.nix 4 | ./packet/system.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer/packet.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./packet/auth.nix 4 | ./packet/system.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /nix/metal/encrypted/nix-builder-key.pub: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPOGuJprgJnDWCQF3rMEeSatNxq8aKJgIaBrc2SjWtSa builder@monitoring 2 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | See the security file in the [Cardano engineering handbook](https://github.com/input-output-hk/cardano-engineering-handbook/blob/main/SECURITY.md). 2 | -------------------------------------------------------------------------------- /nix/metal/encrypted/.sops.yaml: -------------------------------------------------------------------------------- 1 | creation_rules: 2 | - path_regex: .* 3 | kms: "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847" 4 | -------------------------------------------------------------------------------- /docs/environments/.editorconfig: -------------------------------------------------------------------------------- 1 | end_of_line = unset 2 | insert_final_newline = unset 3 | trim_trailing_whitespace = unset 4 | charset = unset 5 | indent_style = unset 6 | indent_size = unset 7 | -------------------------------------------------------------------------------- /docs/environments/mainnet/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "Producers": [ 3 | { 4 | "addr": "relays-new.cardano-mainnet.iohk.io", 5 | "port": 3001, 6 | "valency": 2 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-db-sync.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | healthChecks, 4 | }: { 5 | address_mode = "auto"; 6 | check = []; 7 | name = "${namespace}-dbsync"; 8 | tags = ["\${NOMAD_ALLOC_ID}"]; 9 | } 10 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer/configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | ... 5 | }: { 6 | imports = [./packet.nix]; 7 | boot.loader.systemd-boot.enable = true; 8 | boot.loader.efi.canTouchEfiVariables = true; 9 | system.stateVersion = "22.11"; 10 | } 11 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer-1/configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | ... 5 | }: { 6 | imports = [./packet.nix]; 7 | boot.loader.systemd-boot.enable = true; 8 | boot.loader.efi.canTouchEfiVariables = true; 9 | system.stateVersion = "22.11"; 10 | } 11 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer-2/configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | pkgs, 4 | ... 5 | }: { 6 | imports = [./packet.nix]; 7 | boot.loader.systemd-boot.enable = true; 8 | boot.loader.efi.canTouchEfiVariables = true; 9 | system.stateVersion = "22.11"; 10 | } 11 | -------------------------------------------------------------------------------- /.jira.d/config.yml: -------------------------------------------------------------------------------- 1 | project: CAD 2 | custom-commands: 3 | - name: ls-sre 4 | help: jira ls on 'Delivering Team = Resident SRE' 5 | script: | 6 | jira ls -q 'resolution = unresolved AND "Delivering Team[Dropdown]" = "Resident SRE" AND project = CAD ORDER BY priority ASC, created' 7 | 8 | -------------------------------------------------------------------------------- /nix/docs/packages.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) nixpkgs; 6 | in { 7 | mdbook = 8 | nixpkgs.runCommand "mdbook-build" { 9 | nativeBuildInputs = [nixpkgs.mdbook]; 10 | } '' 11 | mdbook build --dest-dir "$out" ${inputs.self} 12 | ''; 13 | } 14 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | ( 2 | import 3 | ( 4 | let 5 | lock = builtins.fromJSON (builtins.readFile ./flake.lock); 6 | in 7 | fetchTarball { 8 | url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; 9 | sha256 = lock.nodes.flake-compat.locked.narHash; 10 | } 11 | ) 12 | {src = ./.;} 13 | ) 14 | .defaultNix 15 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-node-local.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | jobname, 4 | }: { 5 | address_mode = "auto"; 6 | check = [ 7 | { 8 | address_mode = "host"; 9 | interval = "1m0s"; 10 | port = "node"; 11 | timeout = "2s"; 12 | type = "tcp"; 13 | } 14 | ]; 15 | name = "${namespace}-${jobname}-node"; 16 | port = "node"; 17 | tags = ["\${NOMAD_ALLOC_ID}"]; 18 | } 19 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-submit-api.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | healthChecks, 4 | }: { 5 | address_mode = "auto"; 6 | check = [ 7 | { 8 | address_mode = "host"; 9 | interval = "1m0s"; 10 | port = "submit"; 11 | timeout = "2s"; 12 | type = "tcp"; 13 | } 14 | ]; 15 | name = "${namespace}-submit"; 16 | port = "submit"; 17 | tags = ["\${NOMAD_ALLOC_ID}"]; 18 | } 19 | -------------------------------------------------------------------------------- /docs/architecture-decisions/adr_template.md: -------------------------------------------------------------------------------- 1 | # {title} 2 | 3 | Date: {date} 4 | 5 | ## Status 6 | 7 | {status} 8 | 9 | ## Context 10 | 11 | What is the issue that we're seeing that is motivating this decision or change? 12 | 13 | ## Decision 14 | 15 | What is the change that we're proposing and/or doing? 16 | 17 | ## Consequences 18 | 19 | What becomes easier or more difficult to do because of this change? 20 | -------------------------------------------------------------------------------- /docs/cost-model.md: -------------------------------------------------------------------------------- 1 | # Plutus Cost Model 2 | [2023-02-14](resources/cost-model-secp-preprod-mainnet.json) 3 | 4 | Environments: 5 | 6 | * Mainnet 7 | * Preprod 8 | * Preview 9 | 10 | [2022-11-05](resources/plutus-costmodels-secp256k1-enabled.json) 11 | 12 | Environments: 13 | 14 | * Preview 15 | 16 | 17 | [2022-07-01](resources/plutus-costmodels-secp256k1-3.json) 18 | 19 | Environments: 20 | 21 | * Mainnet 22 | * Preprod 23 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # power users can choose a different devshell target 4 | [ -f .envrc.local ] && source_env .envrc.local 5 | DEVSHELL_TARGET=${DEVSHELL_TARGET:-dev} 6 | 7 | # Equinix deployment key 8 | source_env_if_exists secrets/equinix-secret.sh 9 | env_vars_required METAL_AUTH_TOKEN 10 | 11 | #shellcheck disable=SC1090 12 | . "$(nix eval .#__std.direnv_lib)" 13 | use std nix "//automation/devshells:${DEVSHELL_TARGET}" 14 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-ogmios.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | healthChecks, 4 | }: { 5 | address_mode = "auto"; 6 | check = [ 7 | { 8 | address_mode = "host"; 9 | type = "http"; 10 | path = "/health"; 11 | interval = "30s"; 12 | timeout = "10s"; 13 | } 14 | ]; 15 | task = "ogmios"; 16 | name = "${namespace}-ogmios"; 17 | port = "ogmios"; 18 | tags = ["\${NOMAD_ALLOC_ID}" "${namespace}"]; 19 | } 20 | -------------------------------------------------------------------------------- /nix/cloud/actions.nix: -------------------------------------------------------------------------------- 1 | { 2 | cell, 3 | inputs, 4 | }: { 5 | "cardano-world/ci" = { 6 | task = "cardano-world/ci"; 7 | io = '' 8 | let github = { 9 | #input: "${cell.library.actionCiInputName}" 10 | #repo: "input-output-hk/cardano-world" 11 | } 12 | 13 | #lib.merge 14 | #ios: [ 15 | #lib.io.github_push & github, 16 | #lib.io.github_pr & github, 17 | ] 18 | ''; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /docs/environments/preprod/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [], 5 | "advertise": false, 6 | "valency": 1 7 | } 8 | ], 9 | "publicRoots": [ 10 | { 11 | "accessPoints": [ 12 | { 13 | "address": "preprod-node.play.dev.cardano.org", 14 | "port": 3001 15 | } 16 | ], 17 | "advertise": false 18 | } 19 | ], 20 | "useLedgerAfterSlot": 42855241 21 | } 22 | -------------------------------------------------------------------------------- /docs/environments/preview/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [], 5 | "advertise": false, 6 | "valency": 1 7 | } 8 | ], 9 | "publicRoots": [ 10 | { 11 | "accessPoints": [ 12 | { 13 | "address": "preview-node.play.dev.cardano.org", 14 | "port": 3001 15 | } 16 | ], 17 | "advertise": false 18 | } 19 | ], 20 | "useLedgerAfterSlot": 31536600 21 | } 22 | -------------------------------------------------------------------------------- /docs/environments/private/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [], 5 | "advertise": false, 6 | "valency": 1 7 | } 8 | ], 9 | "publicRoots": [ 10 | { 11 | "accessPoints": [ 12 | { 13 | "address": "private-node.play.dev.cardano.org", 14 | "port": 3001 15 | } 16 | ], 17 | "advertise": false 18 | } 19 | ], 20 | "useLedgerAfterSlot": 496900 21 | } 22 | -------------------------------------------------------------------------------- /docs/environments/sanchonet/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [], 5 | "advertise": false, 6 | "valency": 1 7 | } 8 | ], 9 | "publicRoots": [ 10 | { 11 | "accessPoints": [ 12 | { 13 | "address": "sanchonet-node.play.dev.cardano.org", 14 | "port": 3001 15 | } 16 | ], 17 | "advertise": false 18 | } 19 | ], 20 | "useLedgerAfterSlot": 14601600 21 | } 22 | -------------------------------------------------------------------------------- /docs/environments/shelley-qa/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [], 5 | "advertise": false, 6 | "valency": 1 7 | } 8 | ], 9 | "publicRoots": [ 10 | { 11 | "accessPoints": [ 12 | { 13 | "address": "shelley-qa-node.play.dev.cardano.org", 14 | "port": 3001 15 | } 16 | ], 17 | "advertise": false 18 | } 19 | ], 20 | "useLedgerAfterSlot": 9208700 21 | } 22 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: { 5 | ogmios = import ./ogmios.nix {inherit inputs cell;}; 6 | cardano-node = import ./cardano-node.nix {inherit inputs cell;}; 7 | cardano-db-sync = import ./cardano-db-sync.nix {inherit inputs cell;}; 8 | cardano-faucet = import ./cardano-faucet.nix {inherit inputs cell;}; 9 | cardano-wallet = import ./cardano-wallet.nix {inherit inputs cell;}; 10 | metadata = import ./metadata.nix {inherit inputs cell;}; 11 | } 12 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-metadata-server.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | instance, 4 | }: { 5 | address_mode = "auto"; 6 | check = [ 7 | { 8 | name = "live"; 9 | address_mode = "host"; 10 | port = "server${toString instance}"; 11 | type = "tcp"; 12 | interval = "10s"; 13 | timeout = "5s"; 14 | } 15 | ]; 16 | name = "${namespace}-metadata-server${toString instance}"; 17 | port = "server${toString instance}"; 18 | tags = [ 19 | "\${NOMAD_ALLOC_ID}" 20 | ]; 21 | } 22 | -------------------------------------------------------------------------------- /book.toml: -------------------------------------------------------------------------------- 1 | [book] 2 | autors = ["The Cardano Authors"] 3 | language = "en" 4 | multilingual = false 5 | src = "docs" 6 | title = "The Cardano Operations Book" 7 | 8 | [build] 9 | build-dir = "docs/book" 10 | 11 | [output.html] 12 | edit-url-template = "https://github.com/input-output-hk/cardano-world/edit/master/src/{path}" 13 | git-repository-icon = "fa-github" 14 | git-repository-url = "https://github.com/input-output-hk/cardano-world" 15 | 16 | [preprocessor.kroki-preprocessor] 17 | command = "mdbook-kroki-preprocessor" 18 | -------------------------------------------------------------------------------- /nix/docs/entrypoints.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) nixpkgs; 6 | inherit (cell) packages; 7 | inherit (inputs.bitte-cells._writers.library) writeShellApplication; 8 | in { 9 | public-documentation-serve = writeShellApplication { 10 | runtimeInputs = [nixpkgs.darkhttpd]; 11 | name = "entrypoint"; 12 | text = '' 13 | exec darkhttpd "''${CONFIG_HTML_ROOT:-${packages.mdbook}}" --port "''${NOMAD_PORT_http:-8080}" --mimetypes ${nixpkgs.mailcap}/etc/mime.types 14 | ''; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # numtide/devshell 2 | .data 3 | 4 | # direnv/direnv + divnix/std 5 | .std 6 | .envrc.local 7 | 8 | # hashicorp/terraform 9 | .terraform 10 | config.tf.json 11 | *.plan 12 | 13 | # iog/bitte 14 | secrets/ 15 | 16 | # nixos/nix 17 | result* 18 | 19 | # cabal 20 | dist-newstyle/ 21 | .nix-cabal.project 22 | 23 | # ... 24 | workbench 25 | 26 | # nixago: ignore-linked-files 27 | .editorconfig 28 | adrgen.config.yml 29 | lefthook.yml 30 | treefmt.toml 31 | .conform.yaml 32 | # nixago-auto-created: mdbook-build-folder 33 | book/** 34 | *.log 35 | -------------------------------------------------------------------------------- /nix/automation/hydraJobs.nix: -------------------------------------------------------------------------------- 1 | { inputs 2 | , cell 3 | , 4 | }: 5 | let 6 | inherit (inputs) nixpkgs cells; 7 | inherit (nixpkgs) lib; 8 | inherit (nixpkgs.stdenv) hostPlatform; 9 | inherit (cell) devshells; 10 | inherit (cell.jobs) mkHydraRequiredJob; 11 | jobs = { 12 | devshells = 13 | if (nixpkgs.stdenv.hostPlatform.isLinux) then 14 | devshells else builtins.removeAttrs devshells [ "ops" ]; 15 | }; 16 | nonRequiredPaths = map lib.hasPrefix [ ]; 17 | required = mkHydraRequiredJob nonRequiredPaths jobs; 18 | in 19 | jobs // { 20 | inherit required; 21 | } 22 | -------------------------------------------------------------------------------- /nix/docs/oci-images.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) nixpkgs; 6 | inherit (inputs.bitte-cells) _utils; 7 | inherit (cell) entrypoints; 8 | n2c = inputs.n2c.packages.nix2container; 9 | in { 10 | public-documentation = n2c.buildImage { 11 | name = "registry.ci.iog.io/cardano-public-documentation"; 12 | maxLayers = 25; 13 | layers = [(n2c.buildLayer {deps = [nixpkgs.mdbook];})]; 14 | copyToRoot = [nixpkgs.bashInteractive]; 15 | config.Cmd = [ 16 | "${entrypoints.public-documentation-serve}/bin/entrypoint" 17 | ]; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-node.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | healthChecks, 4 | }: { 5 | address_mode = "auto"; 6 | check = [ 7 | { 8 | address_mode = "host"; 9 | interval = "1m0s"; 10 | port = "node"; 11 | timeout = "2s"; 12 | type = "tcp"; 13 | } 14 | ]; 15 | name = "${namespace}-node"; 16 | port = "node"; 17 | tags = [ 18 | "\${NOMAD_ALLOC_ID}" 19 | "${namespace}" 20 | "ingress" 21 | "traefik.enable=true" 22 | "traefik.tcp.routers.${namespace}-node.rule=HostSNI(`*`)" 23 | "traefik.tcp.routers.${namespace}-node.entrypoints=${namespace}-node-tcp" 24 | ]; 25 | } 26 | -------------------------------------------------------------------------------- /.reuse/dep5: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: Cardano World 3 | Upstream-Contact: Input Output (Hong Kong) Ltd. <> 4 | Source: https://github.com/input-output-hk/cardano-world 5 | 6 | Files: 7 | docs/* 8 | nix/* 9 | src/* 10 | README.md 11 | Copyright: 2022 Input Output (Hong Kong) Ltd. <> 12 | License: Apache-2.0 13 | 14 | Files: 15 | .editorconfig 16 | .envrc 17 | .gitignore 18 | .jira.d/config.yml 19 | adrgen.config.yml 20 | book.toml 21 | flake.lock 22 | flake.nix 23 | treefmt.toml 24 | Copyright: 2022 Input Output (Hong Kong) Ltd. <> 25 | License: CC0-1.0 26 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Input Output (Hong Kong) Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Cardano World 2 | 3 | Issues and Pull Requests welcome! Basic issues (like typo changes for example) should be 4 | done via a PR fixing it rather than opening an issue asking someone to fix it. 5 | 6 | ## Pull Request Process 7 | 8 | 1. Run `direnv reload` before committing anything to ensure the devshell functions. 9 | 2. Ensure documentation is up-to-date for the changes made. 10 | 3. PR can be auto-merged with `bors` or merged by a maintainer manually after review. 11 | 12 | ## Resources 13 | [CODEOWNERS]: https://github.com/input-output-hk/cardano-world/blob/master/.github/CODEOWNERS 14 | [CODE OF CONDUCT]: https://github.com/input-output-hk/cardano-world/blob/master/CODE_OF_CONDUCT.md 15 | -------------------------------------------------------------------------------- /nix/cardano/dashboards.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | importAsJson = builtins.readFile; 6 | in { 7 | application-metrics = importAsJson ./dashboards/application-metrics.json; 8 | dbsync = importAsJson ./dashboards/dbsync.json; 9 | faucet = importAsJson ./dashboards/faucet.json; 10 | nginx-basic = importAsJson ./dashboards/nginx-basic.json; 11 | nginx-vts = importAsJson ./dashboards/nginx-vts.json; 12 | node-exporter = importAsJson ./dashboards/node-exporter.json; 13 | p2p = importAsJson ./dashboards/p2p.json; 14 | performance = importAsJson ./dashboards/performance.json; 15 | varnish = importAsJson ./dashboards/varnish.json; 16 | wireguard = importAsJson ./dashboards/wireguard.json; 17 | } 18 | -------------------------------------------------------------------------------- /nix/automation/push-node-snapshot.sh: -------------------------------------------------------------------------------- 1 | #! /usr/env bash 2 | 3 | trap 'echo "$(date -u +"%b %d, %y %H:%M:%S +0000"): Caught SIGINT -- exiting" && exit 0' INT 4 | 5 | [ -z "${envName:-}" ] && echo "envName env var must be set -- aborting" && exit 1 6 | [ -z "${stateDir:-}" ] && echo "stateDir env var must be set -- aborting" && exit 1 7 | 8 | stateDir="${stateDir/#\~/$HOME}" 9 | 10 | S3_BASE="s3://iohk-moe-public" 11 | 12 | tmpdir=$(mktemp --directory) 13 | pushd "$tmpdir" 14 | tar -zcvf "db-${envName}.tgz" --directory "${stateDir}" . 15 | sha256sum "db-${envName}.tgz" >"db-${envName}.tgz.sha256" 16 | aws s3 cp "db-${envName}.tgz" "$S3_BASE/db-${envName}.tgz" 17 | aws s3 cp "db-${envName}.tgz.sha256" "$S3_BASE/db-${envName}.tgz.sha256" 18 | popd "$tmpdir" 19 | rm -r "$tmpdir" 20 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-wallet.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | healthChecks, 4 | }: { 5 | address_mode = "auto"; 6 | check = [ 7 | { 8 | address_mode = "host"; 9 | args = []; 10 | # FIXME: switch back to fully qualified invocation 11 | # after: https://github.com/nlewo/nix2container/issues/15 12 | # command = "${healthChecks.cardano-wallet-network-sync}/bin/healthcheck"; 13 | command = "/bin/healthcheck"; 14 | interval = "30s"; 15 | # on_update = "ignore_warnings"; 16 | # check_restart.ignore_warnings = true; 17 | task = "wallet"; 18 | timeout = "10s"; 19 | type = "script"; 20 | } 21 | ]; 22 | name = "${namespace}-wallet"; 23 | port = "wallet"; 24 | tags = ["\${NOMAD_ALLOC_ID}"]; 25 | } 26 | -------------------------------------------------------------------------------- /nix/cardano/nomadJob.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | l = inputs.nixpkgs.lib // builtins; 6 | msg = target: '' 7 | WARNING: the 'cardano.nomadJob' target is deprecated and has been renamed to 'cardano.nomadCharts'. 8 | 9 | Please use 'cardano.nomadCharts.${target}' instead of 'cardano.nomadJob.${target}'. 10 | 11 | Reason: there has been a semantic inconsistency in that nomadJobs actually where only templates. 12 | In analogy to helm charts, we now call them nomad charts to clarify their semantics and free up 13 | nomad job for what it actually is. 14 | ''; 15 | in { 16 | ogmios = l.warn (msg "ogmios") cell.nomadCharts.ogmios; 17 | cardano-node = l.warn (msg "cardano-node") cell.nomadCharts.cardano-node; 18 | cardano-db-sync = l.warn (msg "cardano-db-sync") cell.nomadCharts.cardano-db-sync; 19 | } 20 | -------------------------------------------------------------------------------- /docs/environments/mainnet/topology-p2p.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [], 5 | "advertise": false, 6 | "valency": 1 7 | } 8 | ], 9 | "publicRoots": [ 10 | { 11 | "accessPoints": [ 12 | { 13 | "address": "backbone.cardano.iog.io", 14 | "port": 3001 15 | } 16 | ], 17 | "advertise": false 18 | }, 19 | { 20 | "accessPoints": [ 21 | { 22 | "address": "backbone.cardano-mainnet.iohk.io", 23 | "port": 3001 24 | } 25 | ], 26 | "advertise": false 27 | }, 28 | { 29 | "accessPoints": [ 30 | { 31 | "address": "backbone.mainnet.emurgornd.com", 32 | "port": 3001 33 | } 34 | ], 35 | "advertise": false 36 | } 37 | ], 38 | "useLedgerAfterSlot": 99532743 39 | } 40 | -------------------------------------------------------------------------------- /nix/cardano/constants.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: { 5 | node-snapshots = { 6 | # https://update-cardano-mainnet.iohk.io/cardano-node-state/index.html# 7 | mainnet = { 8 | base_url = "https://update-cardano-mainnet.iohk.io/cardano-node-state"; 9 | file_name = "db-mainnet.tar.gz"; 10 | }; 11 | }; 12 | 13 | db-sync-snapshots = { 14 | # https://update-cardano-mainnet.iohk.io/cardano-db-sync/index.html#13/ 15 | mainnet = { 16 | base_url = "https://update-cardano-mainnet.iohk.io/cardano-db-sync/13"; 17 | file_name = "db-sync-snapshot-schema-13-block-7981218-x86_64.tgz"; 18 | }; 19 | }; 20 | 21 | metadata = { 22 | testnet = { 23 | varnishTtlSec = 900; 24 | varnishMemoryMb = 2 * 1024; 25 | varnishMaxPostSizeBodyKb = 64; 26 | varnishMaxPostSizeCachableKb = 100; 27 | }; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer-1/packet/auth.nix: -------------------------------------------------------------------------------- 1 | { 2 | users.users.root.initialHashedPassword = "$6$WONYKlSC6JYJADoK$Of874zqVebBLTpeSkU2iataZfCEluaxr53s43m9wD13EsHGk5qBgOL.ha6pnvUlIcl4c8Kf4RZ70ZSS5Q8IOG/"; 3 | 4 | users.users.root.openssh.authorizedKeys.keys = [ 5 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBBqvlmO+TMLdQ1a3h9wzwVAMyqRldliApRc5JYtZbgRlGeEUyvNUj/TKeXogGmCR/e9Cscqf8p3G8vjwk1mmw+1Gx/BG2GQNpRuepRjqxJrZ76jIxjhG1vRH96AUiQzfGdT6tl7fbSv83plq/2xvaLOI4djr43jurt7KicIllnHIuTaXbp+VSlqNLFRNNeDzmfHPVQ4Qj/82ZuUy0oU12qeEgDGxomfjNwEQTc//HaOb3jLxkVfnX4Ykv7X2Vgvna2uukpTwvtBfsvLPd0+1BTCDbL4j42xmC7fjU3+bLnEdgZ2yrc+qgBCMk1wG1iduT5Jzm8s99PV/cFUa0E4H0P4vvPhfupbaKz1MnRPRGUjx49AyuGAYggqDrEGmP8JtnqWjVKgaZ5FERQ4p5EbKIce3EghYtu36jND9DTQEC3PTi6+QTExlT9jyv0oPYsvtCCntykm/2v/EAcWTL1nhLgbIuRdg0FhwW6gZIEvetqmFhwOlM7wmZKbyvSo5yms7nYh0TuhGPjENsDwfooayl0ewSmBCzpAWJ2NbljE+EOO/RMFw2FF/SQdYYPSgRPeaMSxEYCncjF01+HBf8147q8NqeHJdo52XyfqjcSLKc9OxwfVK1PUYirpqvB7bonZxjWGDFanajOZHzEvVk0lC0dKjduCkbIt+VjW+ustO3pQ==" 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer-2/packet/auth.nix: -------------------------------------------------------------------------------- 1 | { 2 | users.users.root.initialHashedPassword = "$6$wgtSvwFo378yMhtb$IixDRh1nArVpHLCwn6ziwREILxCcoEDwVGct7Pt7eLvrqb2CoSnX7D5DRVnheoBZGhgNDeyHpNaYJ4.R/pWzA0"; 3 | 4 | users.users.root.openssh.authorizedKeys.keys = [ 5 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBBqvlmO+TMLdQ1a3h9wzwVAMyqRldliApRc5JYtZbgRlGeEUyvNUj/TKeXogGmCR/e9Cscqf8p3G8vjwk1mmw+1Gx/BG2GQNpRuepRjqxJrZ76jIxjhG1vRH96AUiQzfGdT6tl7fbSv83plq/2xvaLOI4djr43jurt7KicIllnHIuTaXbp+VSlqNLFRNNeDzmfHPVQ4Qj/82ZuUy0oU12qeEgDGxomfjNwEQTc//HaOb3jLxkVfnX4Ykv7X2Vgvna2uukpTwvtBfsvLPd0+1BTCDbL4j42xmC7fjU3+bLnEdgZ2yrc+qgBCMk1wG1iduT5Jzm8s99PV/cFUa0E4H0P4vvPhfupbaKz1MnRPRGUjx49AyuGAYggqDrEGmP8JtnqWjVKgaZ5FERQ4p5EbKIce3EghYtu36jND9DTQEC3PTi6+QTExlT9jyv0oPYsvtCCntykm/2v/EAcWTL1nhLgbIuRdg0FhwW6gZIEvetqmFhwOlM7wmZKbyvSo5yms7nYh0TuhGPjENsDwfooayl0ewSmBCzpAWJ2NbljE+EOO/RMFw2FF/SQdYYPSgRPeaMSxEYCncjF01+HBf8147q8NqeHJdo52XyfqjcSLKc9OxwfVK1PUYirpqvB7bonZxjWGDFanajOZHzEvVk0lC0dKjduCkbIt+VjW+ustO3pQ==" 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /nix/metal/equinix/explorer/packet/auth.nix: -------------------------------------------------------------------------------- 1 | { 2 | users.users.root.initialHashedPassword = "$6$lZzXTQZYkZdnIkEd$TUjBEbFzjvWAeD5sTNLVEF8ePqqSyXKrbwQUnK/yX1UI7V01yDBeyE.zm8SkxSmWP9VPRabL6iBx.WnUkfken."; 3 | 4 | users.users.root.openssh.authorizedKeys.keys = [ 5 | "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBBqvlmO+TMLdQ1a3h9wzwVAMyqRldliApRc5JYtZbgRlGeEUyvNUj/TKeXogGmCR/e9Cscqf8p3G8vjwk1mmw+1Gx/BG2GQNpRuepRjqxJrZ76jIxjhG1vRH96AUiQzfGdT6tl7fbSv83plq/2xvaLOI4djr43jurt7KicIllnHIuTaXbp+VSlqNLFRNNeDzmfHPVQ4Qj/82ZuUy0oU12qeEgDGxomfjNwEQTc//HaOb3jLxkVfnX4Ykv7X2Vgvna2uukpTwvtBfsvLPd0+1BTCDbL4j42xmC7fjU3+bLnEdgZ2yrc+qgBCMk1wG1iduT5Jzm8s99PV/cFUa0E4H0P4vvPhfupbaKz1MnRPRGUjx49AyuGAYggqDrEGmP8JtnqWjVKgaZ5FERQ4p5EbKIce3EghYtu36jND9DTQEC3PTi6+QTExlT9jyv0oPYsvtCCntykm/2v/EAcWTL1nhLgbIuRdg0FhwW6gZIEvetqmFhwOlM7wmZKbyvSo5yms7nYh0TuhGPjENsDwfooayl0ewSmBCzpAWJ2NbljE+EOO/RMFw2FF/SQdYYPSgRPeaMSxEYCncjF01+HBf8147q8NqeHJdo52XyfqjcSLKc9OxwfVK1PUYirpqvB7bonZxjWGDFanajOZHzEvVk0lC0dKjduCkbIt+VjW+ustO3pQ==" 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /nix/automation/pipelines.nix: -------------------------------------------------------------------------------- 1 | { 2 | cell, 3 | inputs, 4 | }: { 5 | "cardano-world/ci" = { 6 | config, 7 | lib, 8 | ... 9 | }: { 10 | preset = { 11 | nix.enable = true; 12 | 13 | github.ci = { 14 | enable = config.actionRun.facts != {}; 15 | repository = "input-output-hk/cardano-world"; 16 | revision = config.preset.github.lib.readRevision inputs.cells.cloud.library.actionCiInputName null; 17 | }; 18 | }; 19 | 20 | command.text = config.preset.github.status.lib.reportBulk { 21 | bulk.text = '' 22 | nix eval .#hydraJobs --json \ 23 | --apply 'jobs: __attrNames (removeAttrs jobs [ "required" ])' \ 24 | | nix-systems -i 25 | ''; 26 | each.text = ''nix build -L .#hydraJobs."$1".required''; 27 | skippedDescription = lib.escapeShellArg "No nix builder available for this system"; 28 | }; 29 | 30 | memory = 1024 * 6; 31 | nomad.resources.cpu = 10000; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /nix/cardano/prepare-mono-repo/remove-prepare-mono-repo.diff: -------------------------------------------------------------------------------- 1 | diff --git a/nix/automation/devshells.nix b/nix/automation/devshells.nix 2 | index e55834b276..7171255e8f 100644 3 | --- a/nix/automation/devshells.nix 4 | +++ b/nix/automation/devshells.nix 5 | @@ -73,12 +73,6 @@ in { 6 | inputs.cells.cardano.devshellProfiles.world 7 | ]; 8 | }; 9 | - monorepo = std.lib.mkShell { 10 | - imports = [ 11 | - cardanoWorld 12 | - inputs.cells.cardano.devshellProfiles.monorepo 13 | - ]; 14 | - }; 15 | minimal = std.lib.mkShell { 16 | imports = [ 17 | cardanoWorld 18 | diff --git a/nix/cardano/devshellProfiles.nix b/nix/cardano/devshellProfiles.nix 19 | index f20934dd60..1515e39000 100644 20 | --- a/nix/cardano/devshellProfiles.nix 21 | +++ b/nix/cardano/devshellProfiles.nix 22 | @@ -117,12 +117,4 @@ rec { 23 | } 24 | ]; 25 | }; 26 | - monorepo = _: { 27 | - commands = [ 28 | - { 29 | - package = inputs.cells.cardano.prepare-mono-repo.merge-mono-repo; 30 | - category = "nix-build"; 31 | - } 32 | - ]; 33 | - }; 34 | } 35 | -------------------------------------------------------------------------------- /docs/environments/private/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "pvtCommitteeNormal": 0.51, 4 | "pvtCommitteeNoConfidence": 0.51, 5 | "pvtHardForkInitiation": 0.51, 6 | "pvtMotionNoConfidence": 0.51 7 | }, 8 | "dRepVotingThresholds": { 9 | "dvtMotionNoConfidence": 0.51, 10 | "dvtCommitteeNormal": 0.51, 11 | "dvtCommitteeNoConfidence": 0.51, 12 | "dvtUpdateToConstitution": 0.51, 13 | "dvtHardForkInitiation": 0.51, 14 | "dvtPPNetworkGroup": 0.51, 15 | "dvtPPEconomicGroup": 0.51, 16 | "dvtPPTechnicalGroup": 0.51, 17 | "dvtPPGovGroup": 0.51, 18 | "dvtTreasuryWithdrawal": 0.51 19 | }, 20 | "committeeMinSize": 0, 21 | "committeeMaxTermLength": 200, 22 | "govActionLifetime": 10, 23 | "govActionDeposit": 1000000000, 24 | "dRepDeposit": 2000000, 25 | "dRepActivity": 20, 26 | "constitution": { 27 | "anchor": { 28 | "url": "", 29 | "dataHash": "0000000000000000000000000000000000000000000000000000000000000000" 30 | } 31 | }, 32 | "committee": { 33 | "members": { 34 | }, 35 | "quorum": 0 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /docs/environments/sanchonet/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "pvtCommitteeNormal": 0.51, 4 | "pvtCommitteeNoConfidence": 0.51, 5 | "pvtHardForkInitiation": 0.51, 6 | "pvtMotionNoConfidence": 0.51 7 | }, 8 | "dRepVotingThresholds": { 9 | "dvtMotionNoConfidence": 0.51, 10 | "dvtCommitteeNormal": 0.51, 11 | "dvtCommitteeNoConfidence": 0.51, 12 | "dvtUpdateToConstitution": 0.51, 13 | "dvtHardForkInitiation": 0.51, 14 | "dvtPPNetworkGroup": 0.51, 15 | "dvtPPEconomicGroup": 0.51, 16 | "dvtPPTechnicalGroup": 0.51, 17 | "dvtPPGovGroup": 0.51, 18 | "dvtTreasuryWithdrawal": 0.51 19 | }, 20 | "committeeMinSize": 0, 21 | "committeeMaxTermLength": 200, 22 | "govActionLifetime": 10, 23 | "govActionDeposit": 1000000000, 24 | "dRepDeposit": 2000000, 25 | "dRepActivity": 20, 26 | "constitution": { 27 | "anchor": { 28 | "url": "", 29 | "dataHash": "0000000000000000000000000000000000000000000000000000000000000000" 30 | } 31 | }, 32 | "committee": { 33 | "members": { 34 | }, 35 | "quorum": 0 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /docs/environments/shelley-qa/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "pvtCommitteeNormal": 0.51, 4 | "pvtCommitteeNoConfidence": 0.51, 5 | "pvtHardForkInitiation": 0.51, 6 | "pvtMotionNoConfidence": 0.51 7 | }, 8 | "dRepVotingThresholds": { 9 | "dvtMotionNoConfidence": 0.51, 10 | "dvtCommitteeNormal": 0.51, 11 | "dvtCommitteeNoConfidence": 0.51, 12 | "dvtUpdateToConstitution": 0.51, 13 | "dvtHardForkInitiation": 0.51, 14 | "dvtPPNetworkGroup": 0.51, 15 | "dvtPPEconomicGroup": 0.51, 16 | "dvtPPTechnicalGroup": 0.51, 17 | "dvtPPGovGroup": 0.51, 18 | "dvtTreasuryWithdrawal": 0.51 19 | }, 20 | "committeeMinSize": 0, 21 | "committeeMaxTermLength": 200, 22 | "govActionLifetime": 10, 23 | "govActionDeposit": 1000000000, 24 | "dRepDeposit": 2000000, 25 | "dRepActivity": 20, 26 | "constitution": { 27 | "anchor": { 28 | "url": "", 29 | "dataHash": "0000000000000000000000000000000000000000000000000000000000000000" 30 | } 31 | }, 32 | "committee": { 33 | "members": { 34 | }, 35 | "quorum": 0 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /nix/cloud/namespaces/infra.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) data-merge; 6 | inherit (inputs.bitte-cells) patroni; 7 | inherit (inputs.cells) cardano docs; 8 | inherit (cell) constants; 9 | 10 | WALG_S3_PREFIX = "s3://iog-cardano-bitte/backups/infra/walg"; 11 | in { 12 | documentation = docs.nomadCharts.documentation constants.envs.infra; 13 | database = data-merge.merge (patroni.nomadCharts.default (constants.envs.infra 14 | // { 15 | datacenters = ["eu-central-1"]; 16 | })) { 17 | job.database.group.database.task.patroni.env = {inherit WALG_S3_PREFIX;}; 18 | job.database.group.database.task.backup-walg.env = {inherit WALG_S3_PREFIX;}; 19 | }; 20 | 21 | metadata = let 22 | jobname = "metadata"; 23 | in cardano.nomadCharts.metadata ( 24 | constants.envs.infra 25 | // { 26 | datacenters = ["eu-central-1"]; 27 | inherit jobname; 28 | inherit 29 | (cardano.constants.metadata.testnet) 30 | varnishTtlSec 31 | varnishMemoryMb 32 | varnishMaxPostSizeBodyKb 33 | varnishMaxPostSizeCachableKb 34 | ; 35 | } 36 | ); 37 | } 38 | -------------------------------------------------------------------------------- /nix/cloud/kv/vault/db-sync/mainnet.enc.yaml: -------------------------------------------------------------------------------- 1 | pgUser: ENC[AES256_GCM,data:cfQB0UawOOHipL/Rj2k=,iv:L382t/jgQHFYHJIKyxXG7S1pIF3bCEHK53SYqDcLy80=,tag:MtgQ3d36cb3D7/IjuKZm8A==,type:str] 2 | pgPass: ENC[AES256_GCM,data:BVuz0r52Pv6+ZINtzK854AMZRubGu9EGOVRXTuhac1DoUWrSq/A0/epYQl3/0XbYOl4wb1c1whyGJPyqI8qk7g==,iv:Wm3MkLeXXePEJuhi5r7kGLNodY3ZozJNbxxMf22KE3I=,tag:M5YRbjH+Pm8/Y4qHkdg1UQ==,type:str] 3 | sops: 4 | kms: [] 5 | gcp_kms: [] 6 | azure_kv: [] 7 | hc_vault: 8 | - vault_address: https://vault.world.dev.cardano.org 9 | engine_path: sops 10 | key_name: ops 11 | created_at: "2022-08-22T16:37:55Z" 12 | enc: vault:v1:++lzXgGkKR+OSFkKJGn86RBjB2h3JLDNNqkxqC55oT5Zy9GVusAUYKLZJpOUOcFZLrEgLxP0MjYfVTKT 13 | age: [] 14 | lastmodified: "2022-08-22T16:37:56Z" 15 | mac: ENC[AES256_GCM,data:YRk3aP6kJnu+ZpY/939DMKrz3hRvhHJTe9InAZeHvcw6R1L+on3w3pYRSKo4/14H9RbDEGXlgWmRww+5g1J8YWEm/qkobo2Br++bMnKOgSC+qc8TQhUh/typ+doigGRm8BWdAxt4boVVIzJnj9OzOL+GN0dI9o6+NIt5IpIUemo=,iv:uj21Z97T+eBj2U4lbqgff4i7r22e1mL7V7A9oG+Pc8I=,tag:gDUUDftVZ9a1w0MnHTCwNw==,type:str] 16 | pgp: [] 17 | unencrypted_suffix: _unencrypted 18 | version: 3.7.2 19 | -------------------------------------------------------------------------------- /nix/cloud/kv/vault/db-sync/preprod.enc.yaml: -------------------------------------------------------------------------------- 1 | pgUser: ENC[AES256_GCM,data:ZiTTzG7oNG5twoArwSk=,iv:IPkaN73zlOz9urgcg0dP6lcY7LUotX9GKOHalfY5uAk=,tag:APiECrb8vI+Pp2J4NTRnEw==,type:str] 2 | pgPass: ENC[AES256_GCM,data:3mO5Mx8w+PkBmWJ0aDBOqo73xtS+s+Gc6xde1rJ5Tkl/Ui0tqg50CKkp+UIuBWQiDgSp3CeUKt9xrPUo7sM8eA==,iv:9imTcHv3MkKb2tpMDn5vsGeSjdLfwBClVbtI1gbPcp4=,tag:JZEH5Tv+hCBD0csdnH8jWQ==,type:str] 3 | sops: 4 | kms: [] 5 | gcp_kms: [] 6 | azure_kv: [] 7 | hc_vault: 8 | - vault_address: https://vault.world.dev.cardano.org 9 | engine_path: sops 10 | key_name: ops 11 | created_at: "2022-08-15T22:38:16Z" 12 | enc: vault:v1:8uiKwBS2Nt46yG1vkjf2tzfG+7BQqI/9GR5dX4RBh1nXZVvbq2MIvfm9gQbAPzSN1FWsmS4awSZb2BrH 13 | age: [] 14 | lastmodified: "2022-08-15T22:38:16Z" 15 | mac: ENC[AES256_GCM,data:/Q5FsmzXvS7vR3DD150D3mikHdIgkl/mkrt9sfSqs2icl6jlmWRJuntU9kU7eWNjH/FLmmtZZBbZrVcfrq87yK1kMjHwd8cZaPDe288avxJa9/244w4IeurPXMeGAH1nyRuKfoHyEDFyIvk993XDz8MBfzATBac7hb2Q1HxCWoQ=,iv:44eQB+tmkqy1C9zl8mkHaBWjmS8q0sStuekLpvXdanw=,tag:lSPq1yO2UwjoDtAny+HjhA==,type:str] 16 | pgp: [] 17 | unencrypted_suffix: _unencrypted 18 | version: 3.7.2 19 | -------------------------------------------------------------------------------- /nix/cloud/kv/vault/db-sync/preview.enc.yaml: -------------------------------------------------------------------------------- 1 | pgUser: ENC[AES256_GCM,data:DxJkUC6wydAEVK8HquA=,iv:3PU/cLV0OLBhQr9a/z/S9l3k5nb2DPQJP5LhACSpym4=,tag:9tbx+2bPLwy2nAU4kgpeFA==,type:str] 2 | pgPass: ENC[AES256_GCM,data:3MOvdlZp8Q2Z6benAhMIU7akoL8F2kvxVDIVHkUWrGfaKhvH3woZi0LrOwuwwcLUFAjS7fkNFUuH97zu/O+Ohg==,iv:G+2KBL44nzFWotqpL38vmuz1+UbTX4wHXCOcO+s9e7M=,tag:SmeU1skobaemPRTCcSv0DA==,type:str] 3 | sops: 4 | kms: [] 5 | gcp_kms: [] 6 | azure_kv: [] 7 | hc_vault: 8 | - vault_address: https://vault.world.dev.cardano.org 9 | engine_path: sops 10 | key_name: ops 11 | created_at: "2022-08-15T22:38:10Z" 12 | enc: vault:v1:+GlMbGfXK+hYtkd0fnV8PApO3pm885XxWtMeFfBYSYS1uCtEF2nI7RSi40TjbMKwAikvyrqvJOzqHV68 13 | age: [] 14 | lastmodified: "2022-08-15T22:38:11Z" 15 | mac: ENC[AES256_GCM,data:9RFCqz04sMmN8hvxmkVAGjQnvnXac6j+ziqu0HKezyabQlIDfPhVf2tqNPjWmM8Lpcfomo27pSldBjRj0OcyfrEijFGlMImA5MxRoaOz/HiG8oqU4dm/JFFWqvp5yYa7amMT191vesHiTb18FYzq18KrLOs+JDP1W4cTmIfDTgE=,iv:uF7amEfnl7x3Sb3BuVvNr9lTxDDM1B4JFwMlqOZWM5o=,tag:38Xd8ebwLvRLo3wxPNUODA==,type:str] 16 | pgp: [] 17 | unencrypted_suffix: _unencrypted 18 | version: 3.7.2 19 | -------------------------------------------------------------------------------- /nix/cloud/kv/vault/db-sync/private.enc.yaml: -------------------------------------------------------------------------------- 1 | pgUser: ENC[AES256_GCM,data:qx9chypGb9iudLUWG0U=,iv:kaSTFz2/Ik/hBQgaqtdXQ+VRp/Hm4YlRS1CzFnHYx0k=,tag:kU8sWw6sDfONxc0D8XtxwQ==,type:str] 2 | pgPass: ENC[AES256_GCM,data:KZkFX3EDYX+C/Tgem0cNXZaBIVd/wZbKnPf4r6HnZ9z/nX7VEWa/fc1cxAEZ/B2FAa6VzauAnbCiBakNlLUufQ==,iv:M4yLOjeVWlYZvcD1OSmxaObCDe1/vy8m/Soid8HfXnU=,tag:GDa+KUzU3DGnVoZdyT6o1g==,type:str] 3 | sops: 4 | kms: [] 5 | gcp_kms: [] 6 | azure_kv: [] 7 | hc_vault: 8 | - vault_address: https://vault.world.dev.cardano.org 9 | engine_path: sops 10 | key_name: ops 11 | created_at: "2022-08-15T22:38:10Z" 12 | enc: vault:v1:+GlMbGfXK+hYtkd0fnV8PApO3pm885XxWtMeFfBYSYS1uCtEF2nI7RSi40TjbMKwAikvyrqvJOzqHV68 13 | age: [] 14 | lastmodified: "2023-02-13T20:26:51Z" 15 | mac: ENC[AES256_GCM,data:DTzsqGL7aWWPmra+zGSXt0Knr7sVmiDk74bbYgD53kR/efHoKxD8+CJJEhNKduchs8CGSWA8+B0CX7sUT8e3giMzsKX7vhGaYhvO/mSIuIkP/eZXxKEdcc/h/EL8YqPum0K3la3zycxzy38tX1ifjqnSyz2yqLMwo4HdAE4IMRA=,iv:5w4cXMTZW2iOgl7RyD9T0iHAy8iu28PXQLCHIhR75Ew=,tag:rzi/tZIb1jsue07cgFtFMg==,type:str] 16 | pgp: [] 17 | unencrypted_suffix: _unencrypted 18 | version: 3.7.3 19 | -------------------------------------------------------------------------------- /docs/SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | [Cardano](README.md) 4 | 5 | # Tutorials 6 | 7 | # How-To Guides 8 | 9 | - [Contribution Guide]() 10 | 11 | # Explanation 12 | 13 | - [Design Overview]() 14 | - [Packaging Principles](explain/packaging-principles.md) 15 | 16 | # Reference 17 | 18 | - [Environments](environments.md) 19 | - [Cost Model](cost-model.md) 20 | - [Cardano]() 21 | - [System Requirements]() 22 | - [Installing]() 23 | - [Running]() 24 | - [Tracing]() 25 | - [Metrics]() 26 | - [CLI Reference]() 27 | - [DB Sync]() 28 | - [System Requirements]() 29 | - [Installing]() 30 | - [Running]() 31 | - [Tracing]() 32 | - [Metrics]() 33 | - [CLI Reference]() 34 | - [Wallet Backend/CLI]() 35 | - [System Requirements]() 36 | - [Installing]() 37 | - [Running]() 38 | - [Tracing]() 39 | - [Metrics]() 40 | - [CLI Reference]() 41 | - [Submit API]() 42 | - [System Requirements]() 43 | - [Installing]() 44 | - [Running]() 45 | - [Tracing]() 46 | - [Metrics]() 47 | - [CLI Reference]() 48 | - [Ogmios]() 49 | - [System Requirements]() 50 | - [Installing]() 51 | - [Running]() 52 | - [Tracing]() 53 | - [Metrics]() 54 | - [CLI Reference]() 55 | -------------------------------------------------------------------------------- /nix/metal/encrypted/equinix.json: -------------------------------------------------------------------------------- 1 | { 2 | "cardano": "ENC[AES256_GCM,data:5sQt0NNHLCg3udrimrpsJWmJf1NFN7XrT9nGGQO8UPZYtEaK,iv:INFa9tbXQmzC8pSJtQNsGcXc5kY0OVBef+OanHE3OXc=,tag:NNae+pT4f6ZFo4enC3fdwA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-01-23T19:15:59Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgEsEB7w9duda3IK6fXZhDgRAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMg2ewr+6O11MDp5xLAgEQgDtKdSderQamDD9j3LbiXtVV8YxPQ8SK+fFAm61gNyvpOaThbuYGk9gr/mEtLDZT4W4rkWTibhHIUuJ8Cw==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-01-23T21:26:41Z", 17 | "mac": "ENC[AES256_GCM,data:zhosaHe7IPRQRJZFDdMOR5wX3XRgFDtdAi9ecifOjys6XxXLNAj2KSeyfy6T7HMmRQio7uyTWlS0OmjgrDpNEDejuLNnN6z/c27YodTpvEVxpkk3LmewZm7C8PyR2+Cvnh2oXlLEbI3U4spzrWoaTrEAlyU9xpiDTZnQUSl/VSg=,iv:IP65ruG0+lu/fWA/BRMzbUVkWsYxs26hNBCdzqaWEpc=,tag:ABZYtiVAaVwEVSqVnq8OFg==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/nomad.bootstrap.enc.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "ENC[AES256_GCM,data:2WBqnTLHkHpxx+pb4+auyVuv6/nm1kwnb8PVNQYnsHgwLjJo,iv:MDxTRDnKLvhODEQeyomtA1pjkLvkFAukudG0wmJVS8Q=,tag:Oo8L9ryD/qvT7WvkHhKltA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T06:51:29Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGTd6ZAbjd4N54BJ7NjY+cOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMtU43a1N0YzrtQCm3AgEQgDu45TxKk9v1pyORfCtbGEGs5Zggc/n11fZrKUtMxNmL6ETthE+3uctBqbCJmv7ceEz78dRmo0WM6SvS2Q==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T06:51:34Z", 17 | "mac": "ENC[AES256_GCM,data:psKtmhuAmOlkiy5bOc1by4RvNbtcC3fyzCIWwXWbJR4NQEU3U79td98hk8Rb3Icgk8FrbL1itzVMVjB0UYTfAjyFhJc7iM2LGw5AexnEYRXaNsFLdHW929YfT6FlEBZRE2BrgIkZOQCS53e5G4HKwBybUr0I7qeGfJ4/XEV0SbQ=,iv:6gpAlwrOMVm6/vw9X2cTINLIzty+29UBUbqLgfTcXiI=,tag:WDpBlij5TXEdXx7MSHKmUQ==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.1" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/wg/explorer-private: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:YBCYV6tOz24WOGmUJgBL+7HnrKBjOaC+JHPj3qOmjaF5sNmrPHruTLI3ovpK,iv:D7N9GTHtXVCpOFFygsEoX9Lv3iFhC1lQz1QPK4ay/zk=,tag:n51B2wkl8soA7aLSSyOENA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-03-09T17:40:39Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgEVlOPrDoQ9/+e0xomHAEHmAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMP/ai6bdNSsMJSqc1AgEQgDu+UlD7CTef81Aj2Vu+qDsH3mFAWjoYmE7oKIDkC7GUi8k5QvIVY1yaDi+lc8ml6XGpTfNtpX4sSeJDQg==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-03-09T17:40:39Z", 17 | "mac": "ENC[AES256_GCM,data:aoAFKjRE8jSG/MT/9vpL7lTazPe217ctXlpnClIN7WIZX2gcwIeFgKQVqTKl+MLc6dt4jh/UL1hy5wqlJNpBsSpTIr3KQZnYCa7PEYcLg0LpHu5vYlAVzJtOkx/k92sgVxb23XEkeOCQIs4Ceybv1z18C02PWGiSZwz17DwcmnM=,iv:6FbvMMb5eyTpIk2zooUBe3fM0BTFETvywL603Z0ltf4=,tag:ykR1uoAEhwU9nHdr0ESyrw==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/wg/explorer-1-private: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:8vU3TTaOGeT/oDWTPLQ3UT3NCc57QD4eeNcRloVBosmbzSDD1woUvlwpa4MD,iv:s5iPN1mZ5lpcQRwfcZk5FGPOKg8s24PKvCiWFtff5wM=,tag:Bq+XMAROL7fe/Srg6b3YxA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-02-09T22:34:29Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgH6CYVEv+Lz8/fboybEx54jAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMly3A4QidzDpt66S7AgEQgDtby4r2fgezXxwEmVuGaJFbJPxvARhg/dvaWk0peEyAZupX+j7GNwCyHmAt8z6HrVOdp7w0ysQSECXaPg==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-02-09T22:34:30Z", 17 | "mac": "ENC[AES256_GCM,data:vXx8Gvhgox4+TXXUyNUGeJ++Gmv4ZTZxaUZwIJ7/OT0PiVsVg8IpIw2otaaSwyFFLPemtcRiWHXSFiHUKmASusbtseXq9CO/wo97L2IHWTuuj9i+ZuanSa3Oqo5BEc8MZlqohoAOI+YEYdsjHAw2e+m8eH1mtKmP8XIr9i9KNlE=,iv:d/aJJo0LRZHKqbMVAgzeOamkantyrfbR+uVrJ5BMYkI=,tag:KbFQnJI9iftSd7qnWjaLEg==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/wg/explorer-2-private: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:AIxTIJt9OzoUaeefluKE/f0P8CzC+nwCB87EAVfgXCnTmIgXay92D3cUZ9aI,iv:4loTdIpsrihe4IeAP3o80omyh2ZkbcGyjImbFLdSK8g=,tag:Z68E/4ZPYwUgxXlvr1LuSw==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-03-06T20:01:58Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgHG/94ZD1AlcOJzzaJzLbdWAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM4gYnTUCXMe/0/JhkAgEQgDu80re/F47EJYXidJ5rd4AffYdFCe6wN7x6v46n/TOGldv4fYs/mCJw/de+4LNXCKvWqUcdYN50+ZaNbg==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-03-06T20:01:59Z", 17 | "mac": "ENC[AES256_GCM,data:eT+cmDoBLK4306fkXbn4wjrsOxvMZNEMgLvH9NrxbgSiawwF7lJ0V6wCCKoymmn561b6KSR79MnkChJfiagxMLvDA3H5HitqcSu39ndfgl3hpAN1WeLump+OIvRkM9b7WFCNVfRUQsAyL2/XbAZtFgrf1ucJlRyjO2VUS+yIkyo=,iv:zj55OTd+LHEnZBnrmLac/UnAyZBkVPqRaDGsxTmPIaY=,tag:mJeXzVeWjY/wOJg+jMLzpw==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/wg/monitoring-private: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:x0G1gse4STND0cyRAvhzxsKhlmqEUPWBiw9Kyr4Yck6zkfPgRhtFISTVCtLe,iv:0IqD5aP2USNcYRDE/AEZQ/OSovp4v2Yvuz4l/mdnOwM=,tag:OFXRYW+Juzdohj6+2f9GWA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-12-04T21:40:41Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgHw6fDTry17rWcdM4/hGk7aAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMgeDeLE37yzf7dWnVAgEQgDs+DiuCicT+bEi9Y/Pg4r0JmKqYD7olBKTcOYKr4a8p4jZeqOxKjuA0U+VkP3R6EMw3NDBGlg2i+da+3g==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-12-04T21:40:41Z", 17 | "mac": "ENC[AES256_GCM,data:ZV5w0YIact0XkYtfTdWrey7WvTufjNkVEh+39+Qz1HNqoTa5dlWCA7AvS1Dv894V0x1XBFKrZEtSsKekDGLz11i+poJ0QIkPz6K/xFct5HRk+GiPdJv/9I+Ek8MbV7YsF69KjsztCwIHsEGFXjH5qxPfMlaWsiwBxbxB+ZrWESI=,iv:0sHoKCB5NIeitSuZfZDJJygMqmeqG0dVlCe6WKs3O8M=,tag:NljDQUmrzsbfLM6qBT1ZZw==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/netrc: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:qb4X/6duq3aXmqPDNX8Out0zrx0f2rzUqA54iz/WRvBJMmhR3FeZ/15N22+iGQOwmAQm7B8CoC0qNh5Lq7iivguX+Guz9D67Wyl4XidLezMjRwkg0hFpxt989w==,iv:QstIogx00ZbKKArC1dPIlEExKJeSjlcSDdW6hpEyTI4=,tag:PfB9Kh+sr8pzATPlCEYoHA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:18:31Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGzJTDCac4LYB4g7cMzDe7BAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMW2bZhjx65wm2fVPVAgEQgDu/V8j7ZpGQGI+T1ooN3jU8XdFt5amfWWNDGuT8whZiCD/cVv4oT5OcBueOX+abe309rXBsVx9QBMvuAQ==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-02-17T15:40:20Z", 17 | "mac": "ENC[AES256_GCM,data:BwaapGq41MSBdKNoBpPt4CBdm/3UhXGAirbf63OC0frEDtJGRDWwraGRI7hvGPo3tKW/H9RMqsoj1oBDaeSokQm2jzffOpBNYxZRnQxq6lTAKZteOnc1SLEzGs9IJ1iE8EuWkUYCrbSS+tcojcLVUzMMByznjbrDAJkxb701XTE=,iv:nxwAMqZ5ewAdzBiNiVKvLmpVENFwFprSPRHFx36JQF0=,tag:yc4WKm8w/6ysR1QZz/879w==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/consul-clients.json: -------------------------------------------------------------------------------- 1 | { 2 | "encrypt": "ENC[AES256_GCM,data:S+3f7+5y12D0l73/rkyoRinlE3MW+Sln4a4dhi6tAEiMQ6qqDnFGY9QSOA8=,iv:oJXsq/JKjmSBtAP/Ni9ebKi3+rfr75UM1mDzqRWC+t0=,tag:bg5f9xg7WELHiZgJxgTo7A==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:12:23Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGfD+RWc04FtpTYFsI+a8Q6AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMbVuUedM8G2rlYpu4AgEQgDvv/33MjTkk5ebCjoncVMIZnnqfdP6f6C8ORSrWGI3gxpol+2oDfbFCrpKMsTj2Cy1YWHpNF45k00sTXA==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T05:12:23Z", 17 | "mac": "ENC[AES256_GCM,data:LeJu6KM8yTTw9UFeTcAA3icVBxzFfsTlz8C09K9KCE8L6n/rllPICzshovFj/7Ayo0FjxRuzfFKUg3xqF+O6GfrZN4vJ40mJf/nD0Y7sjP/9WLJnE3dPudWMIJlsHyQS8H1wHu373VM2nzU88NUogR0RjDmhs9z7cLboyNuOkjs=,iv:uqc0//XLUbCmFx5xSo5NncnFnXIcVBDH9K74e0m9c3c=,tag:qi3sViym0pQOhApZt+PyiQ==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /nix/metal/encrypted/alertmanager: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:nYZgE0Aj+GFuo4sYbz3woEB1YuEA5GU1U+xroWt8zi6dU/8aDisFwvriTasDcpOtIfHyUnqQr5942FBHqVYHVgkj155EVPtqY3ZdlUtpAGGnB72utdcq72FiOg==,iv:E3qQ70MXtp+M3wY7NinFoKMJPK1qb6/1lanuLQE9odw=,tag:KTs69GHWzNiIto5gvquGfw==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:18:31Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGzJTDCac4LYB4g7cMzDe7BAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMW2bZhjx65wm2fVPVAgEQgDu/V8j7ZpGQGI+T1ooN3jU8XdFt5amfWWNDGuT8whZiCD/cVv4oT5OcBueOX+abe309rXBsVx9QBMvuAQ==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-07-25T09:15:16Z", 17 | "mac": "ENC[AES256_GCM,data:n3g3rN0IIsdUMgSacBYZ95WfICsh5ZyEWF333ojl9hZK/DdL9jM+7Np6FD9dd4q9+O5hZUwITqyJbEERoTRdx+WWOl6LaruBsTbqIjB1GXYOHHzceZm6FvpaHKEQmDoxBgT2T2O0NPCwsq3fYP+7oRY8nh3woFx4ozzd3Bw37rE=,iv:kQ3aTOjKXFyHQwE0va5QAMR+BctZWXUDqBOPO6eWk3M=,tag:/iSzoNBnRm5lkilUyb8e6A==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.2" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/redis-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:t7ol6s/RlCegQ03PNq8GKMygVVD6+1vtuGu25VmecasNynqAYgCDU0MisOCUySVnAV0=,iv:WVb4BFymsca1T8ngm/8mUwJzMMszNzG3H1D50S79cpM=,tag:e5HjMlV2CwpL6Rc577a9/Q==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:32:39Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGWJnCh7SjZeRRzEFBMvs36AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMQ6CRdjsae52I8GshAgEQgDuLTGC9IG0oUxPT7VPb5qz66R7flHKD+IGNRi0PkaP46Okv8ZyCUiG0q0rcyQfr3eFNn2UwbDbD0W1ZLw==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T05:32:39Z", 17 | "mac": "ENC[AES256_GCM,data:VrntM5uvME80oZDNhCAlLvNQf+5TStpokw//3pS1hi6nan23xVzXoUnTMNIc1ptQ68amzmMJLcEIk/kBqwJDQtNZWvlYqir/x2vdgFjbNn75dyOfy0JdJtOy/5DHW3j+Fub0Bb6BdYn+yiWqbrqolmy8YFO9XYRv/pvO69SC5gw=,iv:NgFs3+nBPFwdcJ+8heUIqfb4ySjfpUG1rrxafS30D6s=,tag:Z+L4HOMR77GCUfvKgIXZIw==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /nix/metal/encrypted/grafana-password.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:L9WPRvCc7Lboc1z+fDQtnmBf4VLl21QD9vzaPZ6br3KUPlmd9QMv9wpF3EDAvinG3+wD4c0=,iv:AdQrxMAUYmMsVcIpAPnuAi7oFr0JM/Yo68NFLReMBAg=,tag:9SNq7wWIOx/civeDllxHZw==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:32:34Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgHrkwxFHPOfQG5/v8YaBcilAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMiGAYBneBNsAznMEQAgEQgDv8ExoKA7+uPxAP2Nf4SbND1vApmmxcMGbRrVYRFMe5wcuWDXuQuRMTwUHApeGPvELC+HvqU8NFsSOMTw==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T05:32:38Z", 17 | "mac": "ENC[AES256_GCM,data:HHk9+DG3xqAU+Dl5gz0TiDrfjjvGBCmPDT7iiFZQygIbDXd5ggckr0a/zZY1FoUEGl/PwwNn3owGy4S7920MBkGJMnoNL77I3P9vb9favMhyqfGWsi8D/qM7gOHSRoBBQUY141pHcx9gJgXmt2CnyV2DEEf0Jg5MgBmTVktPSsI=,iv:oDtje7MncqrEMWzWuN7OH8UxU+KWFysZePAFMRV++Cg=,tag:QqjNkvExvQ1aOx4+Zs4+UA==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /nix/metal/encrypted/nomad.json: -------------------------------------------------------------------------------- 1 | { 2 | "server": { 3 | "encrypt": "ENC[AES256_GCM,data:a3ay/a9Ch2JDFIsV/Xp4yOo997OZnKkzWF3TCypCvk2VtD+xh2jFalA7qWg=,iv:o3ZX3BMrOrdS+VVvlf7b0QAO5pP+85BB5OwOqDdl3Vs=,tag:C8z8WE83wlxmHhvacoYqCA==,type:str]" 4 | }, 5 | "sops": { 6 | "kms": [ 7 | { 8 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 9 | "created_at": "2022-04-07T05:12:24Z", 10 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgEfL8vIAXP/IBHD2Uy83GUuAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMtE6TrJfcAIMVwHJrAgEQgDsRzd1xu3bikAiml7JHx1masHcCYe6525JZabYmdDNIYX+ISuoGTwkzhSnOPOH3yDQgJ2ESi7yl3FkIvw==", 11 | "aws_profile": "" 12 | } 13 | ], 14 | "gcp_kms": null, 15 | "azure_kv": null, 16 | "hc_vault": null, 17 | "age": null, 18 | "lastmodified": "2022-04-07T05:12:25Z", 19 | "mac": "ENC[AES256_GCM,data:T7pqbOwvhp9MC0qgzhJeHF0Z4EI2OWJMMcIfodVxmfAWKrg5Mx8uPh8uz2ofV6J3KBqLev20P6sXvg+qAyWYefW777lonT00NVSQJL6tXrmECoKVk/5hhhaUjfw58OthvTMI8adpKAvQhzlovVnII2nIh0FF2n2NB+HWZ+ujHhM=,iv:17b8LVFZ9odc//qO7rDcdD2CX006CcDbzUve5gknff0=,tag:IjW2FWZLCc2U/vFja+vI2A==,type:str]", 20 | "pgp": null, 21 | "unencrypted_suffix": "_unencrypted", 22 | "version": "3.7.1" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /nix/metal/encrypted/nix-secret-key-file: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:D4le7SdQyaL04Ezb2cTJl+ob31C5p0NZTJV5GgOm85WyIp3D3KUxe5Nsb/sFMRYFaoO4ea3EVMJN+FGZ0nLDEGM/hXgeEnZFkPqEAhdrFhYtfEfATSQHsfu+v1bGWujlN4YP3XYbC8hl3A==,iv:T/DNSoijR7qJJOB04DLSMexkz9DAZwr1EL0BzB2BLyY=,tag:erZkUj+m9xidAWMcbGxyOw==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:12:23Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgEKEukeN5fsaDnROJT3Yv3aAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMtbDNijmF6scFbR22AgEQgDud0Wi/1YiJiOnmjhkrlxKXU5ET8Ug2h/nIfZwKSG+n4Qz7+y5TJawPZ5EWcCgfb0H7Ad+OjyALbqwlQQ==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T05:12:24Z", 17 | "mac": "ENC[AES256_GCM,data:iNRSnxPBFfOW19l+Gs+/MhHB+YrPjC7QZCchZ1pG6xIUQpc79gU4ljaaMb1yVyvAwi/TGZBEeswyZgBnOHqdR8y6ufUWLZYkJQUKoWQ+ZqV7gypxciIZmjmggo6KIUzhuKKWfEzE9M90xEK0SuKv+JT2rx+X7qoRZ6f3DmomQEE=,iv:o3yZsqdeC11bWlsqRrX03ffco1WZlT8bbjIP7gADg8E=,tag:T+p2ueNuMsfJl/cREMmWcw==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.1" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/awsExt-credentials: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:CWVZMFA00oOcOH5cAVRh5EaFohQhAwejVBjh6RjwBKTDCbZI4VcEgGhh1yS47TsA/fmJBzh+2YK6tME2iD9Iru/APiTYTPDD8To9wVcNNCdFTsjxhY61K8AzBDeAHRdUQtkgLr1K6ytZP7MG9lLEhvz0f5k=,iv:Y6FE0ifGfDeWsBLdFz+OFIR4SAYadV/2QaPH/zQTR88=,tag:EZZ6+UrfJ37j6IRWoPMW7A==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-01-23T22:11:49Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgFpqNMXxngKKmufYEDGVZK5AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMRM4ypv3rUYOIcUDAAgEQgDvaEb147UXvT4xlkkhk0p1AyrBPX/4eZ3NOuoVgQkwoGA8AbEFV2fCabDWLTdDwI+bf981Ihcyse6rdwA==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-01-23T22:11:50Z", 17 | "mac": "ENC[AES256_GCM,data:wTcTveCUfRLG9n1q8RCjitY8BOE8Jeje04elfXRtijXoK45c71qRsFWbJvCKTQTqeddHPuzfRjpFc228Nu0NWYLAlG05hk+MMVabVqTdTA/7FJHUKqAjnVQBLIDRYxdYK17PO1PYuo8zE6phAsudl2PoSKHbp8mfMzKRSnyHJR0=,iv:Ja4RDg0/XzZfByttw63W5SAmRoJWD/bBym1mqKDwul0=,tag:1mmVlHl1k6awvsjbUPR3ow==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset=utf-8 3 | end_of_line=lf 4 | indent_size=2 5 | indent_style=space 6 | insert_final_newline=true 7 | trim_trailing_whitespace=true 8 | 9 | [*-genesis.json] 10 | charset=unset 11 | end_of_line=unset 12 | indent_size=unset 13 | indent_style=unset 14 | insert_final_newline=unset 15 | trim_trailing_whitespace=unset 16 | 17 | [*.hs] 18 | charset=utf-8 19 | end_of_line=lf 20 | indent_size=2 21 | indent_style=space 22 | insert_final_newline=true 23 | trim_trailing_whitespace=true 24 | 25 | [*.md] 26 | max_line_length=off 27 | trim_trailing_whitespace=false 28 | 29 | [*.{diff,patch}] 30 | end_of_line=unset 31 | indent_size=unset 32 | insert_final_newline=unset 33 | trim_trailing_whitespace=unset 34 | 35 | [Makefile] 36 | indent_style=tab 37 | 38 | [nix/metal/encrypted/*] 39 | charset=unset 40 | end_of_line=unset 41 | indent_size=unset 42 | indent_style=unset 43 | insert_final_newline=unset 44 | trim_trailing_whitespace=unset 45 | 46 | [{LICENSES/**,LICENSE}] 47 | charset=unset 48 | end_of_line=unset 49 | indent_size=unset 50 | indent_style=unset 51 | insert_final_newline=unset 52 | trim_trailing_whitespace=unset 53 | 54 | [{secrets/**,**.enc,**.enc.*}] 55 | charset=unset 56 | end_of_line=unset 57 | indent_size=unset 58 | indent_style=unset 59 | insert_final_newline=unset 60 | trim_trailing_whitespace=unset 61 | -------------------------------------------------------------------------------- /nix/metal/encrypted/awsExt-config: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:G161e6oQWN9wAliubXs512GpfDnYFaHb3VR8jZ25ZByzjpAXAWAADXh/2Bev7hfXm2qjAFOQXvdJpV0vcuaywXq9dTHUR/73TIv90sruxf4xIB116nWdUNKDWRKu8VwKww05SNH9Th0Q0XXjQ/aNy4QK+ZSN1GcngESiZXlwHg==,iv:yHvgppyy0CaY/0KASc9cg+IxkK4lisUeFGY+VSPjwYE=,tag:OSJ8v97iN3ram+yCfAs7ww==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-01-23T22:11:47Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGjqn0wa8fhn+SSQlbCmgIbAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMjML9DE0xtutH+zbNAgEQgDsXlb1BJ06NnYJ92qfWWPvVU/fI1Uu/Jz3wBygg1Gs+T6jmeoTv18wvX9wVu7a7L6LgZaYi7j9cGLExsg==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-01-23T22:11:48Z", 17 | "mac": "ENC[AES256_GCM,data:eNGXKjzFC1yKgVZ8WWON1YwAUHYetknal5g4yQFjnTjJZ84r6OycjFn/PZ55GoEzZX1Xx+QQj66f0qMag4KCce+g2qdFpSh98Upmdf40vVO79Yv8Ddx5hdDlgEa5Ap1wuqWZoYtJneddgLYfEXhKAuPGOqEI9zy7KHzS0a3vYxo=,iv:I4X1rf8lOjUGXjYJWDqbzsWB6eSVHo3uVuVaFXF58XY=,tag:FIt9ZcSxFhyuO8q5HczVoA==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/metal/encrypted/oauth-secrets: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:xXgOzUGTwTYhqMdtdzPVMMYWfw4UlTi0ELjvICs8s/Vv6sVGWn7Ctl6QYtHxNzIY5Mg3iH+lRTR4at/69b4OvwTwGcryRAYY5cmSlVfWBp9KDFqQAxRMqrr7bEgHoneUoUHSn4imG7EEGKkEjApF+uqEEI4Hy5gadu4V/PnRMdvo0aWOetbSGVTNh7Nug8r8mmeP4ZhH0dLjVJJ0y0r4hb6msExCVO5Y757C/NglMFIEfEzE/4y/L5YaHKzpV9u7ljrFWapC5jpZih0Q6UsIEkzc5r8I0KxSqx1x,iv:6suf4NKNn5BTZs0zbi6fjVrL5ZB0/4KQF/ldIQAC290=,tag:wMxr5N4EWIJ18O14ONvvlA==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:19:35Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGgcVp/fGgL+1p8uxCOs99aAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMrdP1d6CUesB4/h26AgEQgDsE98lkG6SSx/et35pTeCPA9bub3A0EY4wP77C/K2Lwd1/9Tt7f0rhKfe7tReQMFgj1bc40+OTd1o3o1A==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T05:23:19Z", 17 | "mac": "ENC[AES256_GCM,data:5vffngsyZLS9VRAlJngDcopHEw+on+KH7y3Fat30HFFNl6jMlXV7vCZiI/1mmJrV74lSP//lnhnqqBnKruvHaEDeoXs1t/jh8/koaeOL/7C3uO1AHcnrwgODu4jU2BFVLrVOGpRw3Nz+PZFcEDwpy0+dZeZQK1k2S9Xg+JdbMec=,iv:GUU5nyZBuLUBHgpumsr3fneM0ndeWADUS67xp0GRCyM=,tag:XsjTBEatHZYND5l160To8w==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.2" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-metadata-webhook.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | }: { 4 | address_mode = "auto"; 5 | check = [ 6 | { 7 | name = "live"; 8 | address_mode = "host"; 9 | port = "webhook"; 10 | type = "tcp"; 11 | interval = "10s"; 12 | timeout = "5s"; 13 | } 14 | ]; 15 | name = "${namespace}-metadata-webhook"; 16 | port = "webhook"; 17 | tags = [ 18 | "\${NOMAD_ALLOC_ID}" 19 | "ingress" 20 | "traefik.enable=true" 21 | 22 | # Metadata webhook 23 | "traefik.http.routers.${namespace}-metadata-webhook.rule=Host(`metadata.world.dev.cardano.org`,`metadata.play.dev.cardano.org`) && PathPrefix(`/webhook`) && Method(`POST`)" 24 | "traefik.http.routers.${namespace}-metadata-webhook.entrypoints=https" 25 | "traefik.http.routers.${namespace}-metadata-webhook.tls=true" 26 | "traefik.http.routers.${namespace}-metadata-webhook.tls.certresolver=acme" 27 | "traefik.http.routers.${namespace}-metadata-webhook.middlewares=${namespace}-metadata-cors-headers,${namespace}-metadata-webhook-ratelimit" 28 | 29 | # Middleware (${namespace}-metadata-cors-headers is already declared in srv-metadata-varnish) 30 | "traefik.http.middlewares.${namespace}-metadata-webhook-ratelimit.ratelimit.average=1" 31 | "traefik.http.middlewares.${namespace}-metadata-webhook-ratelimit.ratelimit.burst=5" 32 | "traefik.http.middlewares.${namespace}-metadata-webhook-ratelimit.ratelimit.period=1" 33 | ]; 34 | } 35 | -------------------------------------------------------------------------------- /nix/metal/encrypted/consul-core.json: -------------------------------------------------------------------------------- 1 | { 2 | "encrypt": "ENC[AES256_GCM,data:F1mxH2VpcIYHOTZWlb7BBCgMo47z9lnLUMxXb5WPzdFbNn2Zf5DuzYHeE/Q=,iv:9Xp61pwwFH6rlV55ABWA1xrkyYjyspLV4wf/7tSq5d0=,tag:LgF8uLW1SKmuruUxMnxfDw==,type:str]", 3 | "acl": { 4 | "tokens": { 5 | "master": "ENC[AES256_GCM,data:FcqyUqZTpmRxz2yTqhAZRvg/1xJwwlGU5cHM9eDhBVHDs+mk,iv:Ffnh8EElQZcUxBgiF41V/B1IsKweXnmZP8Rj5CLlPbk=,tag:9dXJhp+0szMCuGGDT6AJ9w==,type:str]" 6 | } 7 | }, 8 | "sops": { 9 | "kms": [ 10 | { 11 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 12 | "created_at": "2022-04-07T05:12:22Z", 13 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgHH/AwPXrdnNTeCaHKEzBRQAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMaeBLTi25/BdtK7nvAgEQgDtaiImUFJRczc6nrzo1SA7547VYJVt9E5/DMCKRADvvSOMl/st1FK+PrP0+PTdnH8IUQtPbCmYgn0+xrA==", 14 | "aws_profile": "" 15 | } 16 | ], 17 | "gcp_kms": null, 18 | "azure_kv": null, 19 | "hc_vault": null, 20 | "age": null, 21 | "lastmodified": "2022-04-07T05:12:23Z", 22 | "mac": "ENC[AES256_GCM,data:pXQime/E5ZWP6z5YhByov97oYqVmR7vPmzOOExYjFostoKJkZ1SL5IGl7DRuSko/hIAaSUBWOrv1AgO/yz8IzlwRTdOSG0GfI6eBniT+DfTavbYJ91pJqomPsG0Z/dKz9yyvCi/vpGRxvPl6CYSxhAOfmT81SijXPDtRijjyfGY=,iv:AU5YhNlolpoLLpnx5srhCH2oHlWevcMZU8zNLbl+n+s=,tag:9kH6Y70ZoDAVvTY+e199NQ==,type:str]", 23 | "pgp": null, 24 | "unencrypted_suffix": "_unencrypted", 25 | "version": "3.7.1" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /nix/cloud/namespaces/mainnet.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) data-merge; 6 | inherit (inputs.cells) cardano; 7 | inherit (cell) constants; 8 | 9 | persistanceMount = "/persist"; 10 | in { 11 | db-sync-0 = let 12 | jobname = "db-sync-0"; 13 | in 14 | data-merge.merge (cardano.nomadCharts.cardano-db-sync ( 15 | constants.envs.mainnet 16 | // { 17 | datacenters = ["eu-central-1"]; 18 | inherit jobname; 19 | scaling = 1; 20 | } 21 | )) { 22 | job.${jobname}.group.db-sync.task = { 23 | node = { 24 | # env.ENVIRONMENT = "testnet"; 25 | # env.DEBUG_SLEEP = 6000; 26 | env = { 27 | ENVIRONMENT="mainnet"; 28 | DATA_DIR = persistanceMount + "/db-sync-0"; 29 | CONSUL_KV_PATH = "config/cardano/mainnet"; 30 | PUBLIC_ROOTS_SRV_DNS = "_mainnet-node._tcp.service.consul"; 31 | EDGE_NODE = "1"; 32 | }; 33 | }; 34 | 35 | db-sync = { 36 | # env.ENVIRONMENT = "testnet"; 37 | # env.DEBUG_SLEEP = 6000; 38 | env = { 39 | DB_NAME = "mainnet_dbsync"; 40 | ENVIRONMENT = "mainnet"; 41 | DATA_DIR = persistanceMount + "/db-sync-0"; 42 | CONSUL_KV_PATH = "config/cardano/mainnet"; 43 | VAULT_KV_PATH = "kv/data/db-sync/mainnet"; 44 | MASTER_REPLICA_SRV_DNS = "_infra-database._master.service.eu-central-1.consul"; 45 | }; 46 | }; 47 | }; 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /nix/metal/encrypted/nix-cache.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": "ENC[AES256_GCM,data:wYBmdIZmNFSJyldl3/ONkouEpvdyzNy407rBfR7RsKFtOJ0S3JUH6tI+FUs9L0T1lvXXJddW8rR/QWJ7MoGkdz+IhaAo7jAerBoOp/pWXH9wfz2MLEcvHx8ITSAnDEEFym78gO7kZcT6kQ==,iv:EafkCMSpuJhz+m9DGGbmR9PDk0Act7UNvty61LQ6KUg=,tag:I5N3ON9M2HkwJiBYx/oEBg==,type:str]", 3 | "public": "ENC[AES256_GCM,data:doB6SE3zgAGhrWt1WZiPvqR3GzdOCl+72+2Ox+SVil54/0xmqVknY+H+PJGw7VafuSLrnPH5FNQJ+TbAwdw=,iv:twZqzka74OdvUD0cY7kKOovSxQ8OT0TkVBwhW7/dSUE=,tag:JwbFfjfmy+f6Ekv5k+8AcA==,type:str]", 4 | "sops": { 5 | "kms": [ 6 | { 7 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 8 | "created_at": "2022-04-07T05:12:21Z", 9 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgEZcHX8ODXIrL3CALkrsTRGAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMfytaSKbIkNGBilLUAgEQgDuNNoAA6XhECFnOlPdMPr+gA3fG3oip1eW423C3Aiq9hXnnGYeU9iL4mZWDHfgOodKGHr+Lp6AFCFEoAg==", 10 | "aws_profile": "" 11 | } 12 | ], 13 | "gcp_kms": null, 14 | "azure_kv": null, 15 | "hc_vault": null, 16 | "age": null, 17 | "lastmodified": "2022-04-07T05:12:22Z", 18 | "mac": "ENC[AES256_GCM,data:s2e/VpY4R2dFves/2Kui0vsHr329HTmzCak419u/yAJqLCvZe/aIa0/Qq2jZ10jNHYRZuCyL/Cf6FTU4wE0G5qmf3ojHqTrvxW444My+O9O1/LfcA4a3RY7gYsyGcHY41uh27ak2MJxfJ7yC67eEm7Kbm6S39g4QxqqsKEfFbZk=,iv:dEN0bGFM1Ky76M+ZGITHeBxK7W6QnNbJt6FuvoHNyXc=,tag:/GZRdW8JgVXp8NZs/N6pWw==,type:str]", 19 | "pgp": null, 20 | "unencrypted_suffix": "_unencrypted", 21 | "version": "3.7.1" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /nix/metal/encrypted/docker-passwords.json: -------------------------------------------------------------------------------- 1 | { 2 | "auths": { 3 | "registry.ci.iog.io": { 4 | "auth": "ENC[AES256_GCM,data:eNyImkaDg9pG8WCPOn0d/njwyWxbLBj/XhSZvVN+IsnedRhsh34spZWOfbcIHIWYXouPtUr/Qdw=,iv:KeTBcxPwGLaVHBuJFFr8JU8s+apWkZCl7EIz5SrkNfY=,tag:cBHj5GkFbfzh+qyHVaMmJA==,type:str]" 5 | } 6 | }, 7 | "HttpHeaders": { 8 | "User-Agent": "ENC[AES256_GCM,data:j2qY7EjLPdHcYxQCmtEVIn/nok2L8MEiIePTNhwq,iv:NqKu6w2zhjeBBx7Vb42yuOnTt+ENntKB0YjfpfDiJ/o=,tag:/5hjxsmGaXjyMpH6iSv4JA==,type:str]" 9 | }, 10 | "sops": { 11 | "kms": [ 12 | { 13 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 14 | "created_at": "2022-04-07T05:19:19Z", 15 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgE8akJ9cY8XxpKkttVmkqZ2AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMVFpIig+7DoJl0qXEAgEQgDskBt2qCsHEU3D6FKwdnVdyddyJPtmxATl4T3dnKXlZuYUqR42WMQwTGZIbbik3LzLdTJseKo/PeiVaqQ==", 16 | "aws_profile": "" 17 | } 18 | ], 19 | "gcp_kms": null, 20 | "azure_kv": null, 21 | "hc_vault": null, 22 | "age": null, 23 | "lastmodified": "2022-06-10T20:10:31Z", 24 | "mac": "ENC[AES256_GCM,data:Py5qHNgV/4Ds2v31Khrp8Cx0YxdnzAL9Z0WOCCWmWSHbuksYfbd+IrDX//raWbET2iilbkheIDA72xnw083e0QtWlcP+75T4qDPtdrD9C/XNYhqYBay6WcOx2ne+ZeD7JevnwxCEjIgw16j9XpM1YBR1Hr4U/cWcdHbmcfhNTWE=,iv:AzbCEf44y9OpLUQgf/D+gOA9dBquvNF+RwVw5602V/E=,tag:2U9Kgc0hoLOFdGhsfIpxYg==,type:str]", 25 | "pgp": null, 26 | "unencrypted_suffix": "_unencrypted", 27 | "version": "3.7.2" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /nix/cardano/healthChecks.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) nixpkgs; 6 | inherit (inputs.bitte-cells._writers.library) writeShellApplication; 7 | inherit (cell) packages; 8 | in { 9 | cardano-wallet-network-sync = writeShellApplication { 10 | runtimeInputs = [nixpkgs.jq nixpkgs.coreutils nixpkgs.curl]; 11 | name = "healthcheck"; 12 | text = '' 13 | [ -z "''${NOMAD_PORT_wallet:-}" ] && echo "NOMAD_PORT_wallet env var must be set -- aborting" && exit 1 14 | 15 | STATUS="$(curl -sf "localhost:$NOMAD_PORT_wallet/v2/network/information" || :)" 16 | jq <<< "$STATUS" || : 17 | jq -e '.sync_progress.status == "ready"' <<< "$STATUS" || exit 1 18 | ''; 19 | }; 20 | cardano-submit-api-network-sync = writeShellApplication { 21 | runtimeInputs = [packages.cardano-cli nixpkgs.jq nixpkgs.coreutils]; 22 | name = "healthcheck"; 23 | text = '' 24 | ENV_FLAG=("$( 25 | [ "''${ENVIRONMENT}" == "mainnet" ] && 26 | echo "--mainnet" || 27 | echo "--testnet-magic $( 28 | jq '.networkMagic' "$( 29 | file="$(jq '.ShelleyGenesisFile' "$NODE_CONFIG" )" 30 | folder="$(dirname "$NODE_CONFIG")" 31 | [[ "$file" == /* ]] && echo "$file" || echo "$folder/$file" 32 | )" 33 | )" 34 | )") 35 | NODE_STATUS="$(env CARDANO_NODE_SOCKET_PATH="$SOCKET_PATH" cardano-cli query tip "''${ENV_FLAG[@]}" 2>/dev/null || true)" 36 | SYNC_PROGRESS="$(jq -e -r '.syncProgress' <<<"$NODE_STATUS" 2>/dev/null || true)" 37 | [ "''${SYNC_PROGRESS%.*}" -ge "99" ] || exit 1 38 | ''; 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /nix/automation/devshells/Readme.md: -------------------------------------------------------------------------------- 1 | # Development Environments 2 | 3 | ## `direnv` 4 | 5 | To quickly enter a development environment every time you enter this repository, 6 | please [install][direnv-install] the great and unmatched [`direnv`][direnv] tool. 7 | 8 | ## `nix develop -c $SHELL ...` 9 | 10 | - Loads temporarily an environment by setting the appropriate environment variables. CTRL+C to exit again. 11 | - You need the latest official [`nix`][nix-install] version `>=2.7`, preferably in multi-user install mode (`nix --version`). 12 | - For your convenience, there is tab completion on `nix develop ./devshell#` (albeit a bit lagging). 13 | 14 | ## The Environments 15 | 16 | #### `__default` → `nix develop ./devshell#__default -c $SHELL` | `direnv allow` 17 | 18 | A fully fledged development environment tailored to operational needs. 19 | 20 | All secrets to access the cluster resources either via the CLI or through the web interface 21 | are automatically set up. You'll be greeted by a useful message of the day [MOTD]. 22 | 23 | The only pre-requisit is that you have well-known [`~/.netrc`][netrc] file set up with your personal 24 | github API token. 25 | 26 | You can inpect the environment & secrets via `env | grep NOMAD`, `env | grep VAULT`, 27 | `env | grep CONSUL`, `env | grep AWS`, etc. 28 | 29 | #### `cardano` → `nix develop ./devshell#cardano -c $SHELL` 30 | 31 | _Not set-up yet._ 32 | 33 | A fully configured environment to develop or debug the cardano application itself. 34 | 35 | --- 36 | 37 | [direnv]: https://direnv.net/ 38 | [direnv-install]: https://direnv.net/docs/installation.html 39 | [netrc]: ./netrc.md 40 | [nix-install]: https://nixos.org/download.html 41 | -------------------------------------------------------------------------------- /nix/metal/encrypted/nix-builder-key: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:Eo82q8v+zfrcHuw1va611ZkqjQ473ypo0ioaDaox+yy7W0dMBrgztyVFGxDuKZmEKwu7a60wmWXpTTk3OLQZxYXbqStWAw1nB8477HYutuDFm6OToxlwFpPWFK8XnlEb5UiL68h7H99g8dEkqf8eBQbPwBjemsveUMFSGjd+e/axOYv7KWukST7shCKRUpKFQckexIRYK7xxrfjBbjhChAj5ZQSJw9w4MlCENuSkETqc67JwwZnxKSb1FkYBtcbcoXGmC+VG2wmUK6zTXXysr+43doC82glEAKa47qqp/dQrmuqjZJqdO/vBwgqxe5FUI6YKb0vD6MsNYgNCpJEJkbctqo+6whbNb50oEX6dlObKCD1FHagQgXEZu7Wg4eUDZ/thlrZvcGmKnrH/OzKsjgIxunMyl3RjjwD5HxiSZtMHxSbEilrbJVR/UCZJ2TYNdOIO4bs/arS1HF8j3ApuN+jxDanbvTIB/JJOIXhiD5ZqUHmOH9Du8+Fv288Z4prNTdn8xmu/fl9kaZrxOY8sXffSx1v9zWWOePq4,iv:UGpgSVhP5O2M493k3tKWeiEwDK6RDhbfRc8mirXZJDM=,tag:HiZlaRjfBTDF5zWGHBiVow==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2022-04-07T05:12:15Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgG1Ba1K7JabHTBwI8pNzX/3AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMjWJfBESf5GjekPMzAgEQgDvnksd8uMhPe98Rzc97/VFM0ZTSExlo8KiEpF/s1Y9AMacirMem51bHP6yk8CIhbyV6DkToHA4PLSsmvA==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2022-04-07T05:12:20Z", 17 | "mac": "ENC[AES256_GCM,data:iN8u6Lyba3tnoLjYToMrk/c1IzZ5UxkhaQYhUpmWFBI839JYLbkkbAPsO2HZblR7+Ey242FpPO7tckFY65rAp+KTt4AMxf3FAXHmB+Qcq32WEnxOWgVClwdrJI1EkXWhUPlIryM5o97Zgy3JqJlj1OsNVnqioJRqCO/7gcFMg4w=,iv:6Ufd6EwrQ+VYQMSPfU2JQ7Fugjdud+YpQyII0+x7t9Q=,tag:F02tFW9Zy2tfsU/8WN2PkQ==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.1" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/cloud/kv/vault/metadata/infra.enc.yaml: -------------------------------------------------------------------------------- 1 | pgUser: ENC[AES256_GCM,data:eSR2DYgwkCdILDtdnA==,iv:eLqKkH4HCNbKA5cgySy0dFAgCltWTjDedFitGP4qHPk=,tag:DXT6JtcS5o0fLdYlga8+iQ==,type:str] 2 | pgPass: ENC[AES256_GCM,data:6BUF0vMWTGDbsr2Ma1EDJ66KiVl1FR7rOuAKCjIJpWmbQHwpd6n4ReJOFNxXTJh1ytWEfbxhGI0f/muiQ//lyg==,iv:eNOga0IQqKMnuLyaNaLARl/feMKU5gDFomGrh8saS30=,tag:1sz8PQ7+pFSuudfRsXgrzQ==,type:str] 3 | gitUrl: ENC[AES256_GCM,data:ZElfT7Um7xDh6KKJS7oCyt5U6P0A4Lts7SFmB1FlfdWluyWp6HHu/1/r62OP8tRr/cC4c25eEXVfcSTeuNIuXA==,iv:x4oflQtrSuMS+mQ1JOCOUd75Sj1Li9YQWe2C/YQVjCI=,tag:yJvTnAe9czT9Iphtd0N2Ug==,type:str] 4 | gitMetadataFolder: ENC[AES256_GCM,data:GRUR3bGbKYA=,iv:e4Oou94IXANkrCjqPynltF3QFkOQv+I8PGYky5FE4h4=,tag:zqLdnVQbcuBnE1eBm6BXJg==,type:str] 5 | metadataWebhookSecret: ENC[AES256_GCM,data:Zxn2TKnfK9OS7gZDN88Q1yDjth7ROhOHfD4sNIXqeBY=,iv:ahS6yG1diPdXfOJcPbyyEpGr3uVMVSd9zwCFIds9l9k=,tag:m+34lfvzA3y5YCMzOHATVg==,type:str] 6 | metadataGithubToken: "" 7 | sops: 8 | kms: [] 9 | gcp_kms: [] 10 | azure_kv: [] 11 | hc_vault: 12 | - vault_address: https://vault.world.dev.cardano.org 13 | engine_path: sops 14 | key_name: ops 15 | created_at: "2023-03-17T01:52:06Z" 16 | enc: vault:v1:uQFF6gz+ycdXVS3ZRIAo8/ZapLZLUo+zJNFhWQJo7fEV7j+xBwIArzEOT/OKsqxjgfoNmujjzczZ0wBd 17 | age: [] 18 | lastmodified: "2023-03-17T04:37:33Z" 19 | mac: ENC[AES256_GCM,data:NRvEBsTTB2iwhaJmvbYV4Eh/4AUzv99ND53dwtpR221XGhe4GOFdAN/T+QfbdVT2m2rqRw4O0zhxFHAxGdeSwKDr7RYi16IOhKoSiCRPy4soLtwNAItBQPRp5T7FsZGPkpjyswosgWfRxKASsP3/9k0LoeI+FIu5mnppqQOtTqg=,iv:nhGrtCqemdK0nLEeRMi1nvMiufg+bSOVzUCSVXR28oY=,tag:E6CFb39UkNCzlsIcSQNPFA==,type:str] 20 | pgp: [] 21 | unencrypted_suffix: _unencrypted 22 | version: 3.7.3 23 | -------------------------------------------------------------------------------- /nix/metal/encrypted/equinix-cardano-world-ssh.conf: -------------------------------------------------------------------------------- 1 | { 2 | "data": "ENC[AES256_GCM,data:qf6K4Z7brQKtmlNeSsulqDdFwTQTgSTqABscVoqhbAipEf+b89QhCZlU+4swT2uOilY6bMdbz3ROFwjE+wFH33wL2GuxFoF2h9+FeLMpO2jk0tkxsEw6x/jsy1ndPN8FuCBw8DHpQ/4DC7MIeVgdHmSOhtJKlvYrY1ItzFehcfi9XDeMh0wLxXmVDBpTnsq7jNO26q2cXWSZsITVyF7R7BCO3o91yTr8AS8EGFK4LXS/38z707uLPZI3vPLaPKMqMD7xsAu1wo/3xeGGZjSBe+OnKSiGEh/9xCdJu7jXzcoTx1Z8kIviD9tBys4kfE2Niaba6Aqpo64SmZZACpH5+cPnrmhFYu1ojCrEZvtMFDJdnDhn1vC0GAwhOihlo74xea1KzTpIE9Cc3B+8guQhMD+3ekcbu4Ygqv+9hyB7qc14MX6U8qw8IUxpr7eWgfr7S0i+MmisVTKvFRYmr+ZqmEhc8DrwyEc51a4UMxXx5jo4Y2KbUnl3smWmw9lk36dPiYJzI6OlELdryLWSTsCAybc/b48nv0a+LJpUWwxa9yoDq794C6ucoCOYDTpc1g==,iv:8+XK5YWe9+4Ipicjrj/XXuXwYo+SDILlLGLOtM/UbZ8=,tag:U02GVT6+rXvBJ2Az0a3CjQ==,type:str]", 3 | "sops": { 4 | "kms": [ 5 | { 6 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 7 | "created_at": "2023-01-24T00:53:41Z", 8 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgFSxmNTA+GtPbnpBWH2lFo5AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMeyPr3c1hC/g7wP7oAgEQgDvjiYxJW4CGokv2WLEVlkcR8vRv5hEn73fhiqhu1MV3AYzBhj1GxLn2lGQ6PMbn8OxYpEQTvzbDQ6+Ghg==", 9 | "aws_profile": "" 10 | } 11 | ], 12 | "gcp_kms": null, 13 | "azure_kv": null, 14 | "hc_vault": null, 15 | "age": null, 16 | "lastmodified": "2023-03-10T01:25:01Z", 17 | "mac": "ENC[AES256_GCM,data:1pn6HCWMfzn+sTO9yHYKndoCtWu1uB0eJLx31xQvxrJxaZNV9F/Dl6XutJGWFHVgKGowIcCDtJSSnih1ddOqKdXiRy6WkkdBaC2oEuAl57gDH+2gf0RUnl6ekAwzerTpdKUze58ZG47pVYthtRjKzMLYnIxOj5ikmRo1juogWn0=,iv:zDZYivEpZBvUCxl3GP8N7gEihYogxwTEw6d+Kg7OJy0=,tag:cEbKWX0MzGgKEoYmKbO3Dg==,type:str]", 18 | "pgp": null, 19 | "unencrypted_suffix": "_unencrypted", 20 | "version": "3.7.3" 21 | } 22 | } -------------------------------------------------------------------------------- /nix/cardano/library.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs.nixpkgs) lib runCommand; 6 | 7 | in rec { 8 | inherit (inputs.iohk-nix.pkgs) cardanoLib; 9 | 10 | # Use the iohk-nix mkConfigHtml attr and transform the output to what mdbook expects 11 | generateStaticHTMLConfigs = environments: let 12 | cardano-deployment = cardanoLib.mkConfigHtml environments; 13 | in runCommand "cardano-html" {} '' 14 | mkdir "$out" 15 | cp "${cardano-deployment}/index.html" "$out/" 16 | cp "${cardano-deployment}/rest-config.json" "$out/" 17 | ENVS=(${lib.escapeShellArgs (builtins.attrNames environments)}) 18 | for ENV in "''${ENVS[@]}"; do 19 | # Migrate each env from a flat dir to an ENV subdir 20 | mkdir -p "$out/config/$ENV" 21 | for i in $(find ${cardano-deployment} -type f -name "$ENV-*" -printf "%f\n"); do 22 | cp -v "${cardano-deployment}/$i" "$out/config/$ENV/''${i#"$ENV-"}" 23 | done 24 | 25 | # Adjust genesis file and config refs 26 | sed -i "s|\"$ENV-|\"|g" "$out/config/$ENV/config.json" 27 | sed -i "s|\"$ENV-|\"|g" "$out/config/$ENV/db-sync-config.json" 28 | 29 | # Adjust index.html file refs 30 | sed -i "s|$ENV-|config/$ENV/|g" "$out/index.html" 31 | done 32 | 33 | ''; 34 | 35 | # Copy the environment configs from iohk-nix into our jobs at runtime 36 | copyEnvsTemplate = environments: let 37 | envCfgs = generateStaticHTMLConfigs environments; 38 | in '' 39 | # DATA_DIR is a runtime entrypoint env var which will contain the cp target 40 | mkdir -p "$DATA_DIR/config" 41 | ENVS=(${lib.escapeShellArgs (builtins.attrNames environments)}) 42 | for ENV in "''${ENVS[@]}"; do 43 | cp -rv "${envCfgs}/config/$ENV" "$DATA_DIR/config/" 44 | done 45 | ''; 46 | } 47 | -------------------------------------------------------------------------------- /nix/cloud/constants.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs.nixpkgs) lib; 6 | 7 | mkEnv = { 8 | name, 9 | namespace ? name, 10 | nodeClass ? "qa", 11 | scaling ? 3, 12 | ... 13 | }@extraConfig: lib.flip lib.recursiveUpdate ({ 14 | ${name} = { 15 | inherit namespace nodeClass scaling; 16 | domain = "${namespace}.${baseDomain}"; 17 | } // (builtins.removeAttrs extraConfig ["name"]); 18 | }); 19 | 20 | # Metadata 21 | # ----------------------------------------------------------------------- 22 | baseDomain = "world.dev.cardano.org"; 23 | 24 | in { 25 | # App Components 26 | # ----------------------------------------------------------------------- 27 | envs = lib.pipe {} [ 28 | (mkEnv { 29 | name = "infra"; 30 | nodeClass = "infra"; 31 | }) 32 | (mkEnv { 33 | name = "mainnet"; 34 | }) 35 | 36 | # Memory for node needs to be adjusted for chain size. 37 | # Since memory exhausted clients can be CPU under-utilized, 38 | # scale the CPU resource to match memory utilization %. 39 | # 40 | # For the qa clients, this is a factor of CPU(Mhz) ~= 0.6X RAM(MB). 41 | (mkEnv { 42 | name = "preprod"; 43 | nodeCpuMhz = 2000; 44 | nodeMemoryMB = 3 * 1024; 45 | }) 46 | (mkEnv { 47 | name = "preview"; 48 | nodeCpuMhz = 2000; 49 | nodeMemoryMB = 3 * 1024; 50 | }) 51 | (mkEnv { 52 | name = "private"; 53 | nodeCpuMhz = 600; 54 | nodeMemoryMB = 1 * 1024; 55 | }) 56 | (mkEnv { 57 | name = "sanchonet"; 58 | nodeCpuMhz = 1200; 59 | nodeMemoryMB = 2 * 1024; 60 | }) 61 | (mkEnv { 62 | name = "shelley-qa"; 63 | nodeCpuMhz = 1200; 64 | nodeMemoryMB = 2 * 1024; 65 | }) 66 | ]; 67 | } 68 | -------------------------------------------------------------------------------- /nix/metal/explorer/wireguard.nix: -------------------------------------------------------------------------------- 1 | name: environmentName: { 2 | self, 3 | pkgs, 4 | lib, 5 | config, 6 | etcEncrypted, 7 | ... 8 | }: let 9 | inherit (config.cluster) domain; 10 | 11 | # Obtain the explorer name index number 12 | explorerNum = builtins.elemAt (lib.splitString "-" name) 1; 13 | in { 14 | networking = { 15 | # See the bitte profiles/multicloud/equinix.nix for equinix firewall handling 16 | firewall.allowedUDPPorts = lib.mkForce [51820]; 17 | wireguard = { 18 | enable = true; 19 | interfaces.wg = { 20 | listenPort = 51820; 21 | ips = ["192.168.254.${explorerNum}/32"]; 22 | privateKeyFile = "/etc/wireguard/private.key"; 23 | peers = [ 24 | # cardano-world explorer gateway 25 | # wg pubkey < <(sops -d ../encrypted/wg/explorer-private) 26 | { 27 | publicKey = "4DEOtdKOu8h284ZwjOsd/cKqSmuQnI+Jy2yiUPxG9B8="; 28 | allowedIPs = ["192.168.254.254/32"]; 29 | endpoint = "${config.cluster.awsExtNodes.explorer.privateIP}:51820"; 30 | persistentKeepalive = 30; 31 | } 32 | # cardano-world monitoring server 33 | # wg pubkey < <(sops -d ../encrypted/wg/monitoring-private) 34 | { 35 | publicKey = "nIxaHgQhzVfh1U/ZgwHdhcDczNJEbHEXWXVAo3EyOWE="; 36 | allowedIPs = ["192.168.254.100/32"]; 37 | endpoint = "monitoring-wg.${domain}:51820"; 38 | persistentKeepalive = 30; 39 | } 40 | ]; 41 | }; 42 | }; 43 | }; 44 | 45 | secrets.install.wg-private = { 46 | source = "${etcEncrypted}/wg/explorer-${explorerNum}-private"; 47 | target = "/etc/wireguard/private.key"; 48 | outputType = "binary"; 49 | extraPackages = [pkgs.wireguard-tools]; 50 | script = '' 51 | chmod 0400 /etc/wireguard/private.key 52 | wg pubkey < /etc/wireguard/private.key > /etc/wireguard/public.key 53 | ''; 54 | }; 55 | } 56 | -------------------------------------------------------------------------------- /docs/environments/private/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeSlotsCoeff": 5.0e-2, 3 | "epochLength": 7200, 4 | "genDelegs": { 5 | "04794bbb457731caa5299ad48baa5a17abca5d79b1b15ba4d0877d26": { 6 | "delegate": "71fb1cb541640cd6437e4e65955e9ac2c38e096d4bc70e08317403c3", 7 | "vrf": "77485eaf7d10b9bbfe9ee66fc5e02a0608093bffd18eccb8967db62b95e07673" 8 | }, 9 | "68755dfcd8f1dfc0f29d76884612dc1be07046da52e650465af3e490": { 10 | "delegate": "461317deb43187863ea9cd6c02dcb3bdd2b913f6aa27563e5c502bf8", 11 | "vrf": "88eb203d4d7e40dc28ce0577029b327c02d566ed19889267cc719ec57df0bc98" 12 | }, 13 | "aa4584a27e2555b46f012a236a0abda64e0a213f947d2bbacc964db1": { 14 | "delegate": "2dae19573bed7614c49d7d895cbcec58a264ac59e332e43fa3847cd9", 15 | "vrf": "c91228e01b04f9aede52bd7853b2b750907962a37f26cd3f705db6eccb483ff7" 16 | } 17 | }, 18 | "initialFunds": {}, 19 | "maxKESEvolutions": 62, 20 | "maxLovelaceSupply": 45000000000000000, 21 | "networkId": "Testnet", 22 | "networkMagic": 5, 23 | "protocolParams": { 24 | "a0": 0.3, 25 | "decentralisationParam": 1.0, 26 | "eMax": 18, 27 | "extraEntropy": { 28 | "tag": "NeutralNonce" 29 | }, 30 | "keyDeposit": 2000000, 31 | "maxBlockBodySize": 65536, 32 | "maxBlockHeaderSize": 1100, 33 | "maxTxSize": 16384, 34 | "minFeeA": 44, 35 | "minFeeB": 155381, 36 | "minPoolCost": 340000000, 37 | "minUTxOValue": 1000000, 38 | "nOpt": 150, 39 | "poolDeposit": 500000000, 40 | "protocolVersion": { 41 | "major": 6, 42 | "minor": 0 43 | }, 44 | "rho": 3.0e-3, 45 | "tau": 0.2 46 | }, 47 | "securityParam": 36, 48 | "slotLength": 1, 49 | "slotsPerKESPeriod": 129600, 50 | "staking": { 51 | "pools": {}, 52 | "stake": {} 53 | }, 54 | "systemStart": "2023-10-28T00:00:00Z", 55 | "updateQuorum": 3 56 | } -------------------------------------------------------------------------------- /docs/environments/sanchonet/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeSlotsCoeff": 5.0e-2, 3 | "epochLength": 86400, 4 | "genDelegs": { 5 | "c1ad22cabb342cbb83ce3859708232f4945ccb669e9b5f932cffc0ed": { 6 | "delegate": "405357b552c397e81f73dcb5a0da0828fe29610bd25197d86130df34", 7 | "vrf": "458215df6c07abc66e80082caa7a189dc2f4995ad4b4b5f09481a55d8d0692d2" 8 | }, 9 | "c264bca994a3a5deee5a1d9b92a3d7e9d6cbdb81f2f6989bb7f7b437": { 10 | "delegate": "d9d9d0f0e1f25c4af4d80cb2d62878b611d8b3a8e1ef548d01f246d7", 11 | "vrf": "624f1bf3b2f978e0c95644f26228b307d7acca7fc7eb3d88fb6f107e0aa1198c" 12 | }, 13 | "d4bf7eb45b72dffa5ac33d5c902fe409e4e611f2e9a52fb0d09784c3": { 14 | "delegate": "806eb0c17d9b0fe6d99acbabe7be76ef72bf9de96c5b58435e50837f", 15 | "vrf": "57e52289207a7128c29e0b7e96a02c731a961a5944329b363bed751ad8f377ee" 16 | } 17 | }, 18 | "initialFunds": {}, 19 | "maxKESEvolutions": 62, 20 | "maxLovelaceSupply": 45000000000000000, 21 | "networkId": "Testnet", 22 | "networkMagic": 4, 23 | "protocolParams": { 24 | "a0": 0.3, 25 | "decentralisationParam": 1.0, 26 | "eMax": 18, 27 | "extraEntropy": { 28 | "tag": "NeutralNonce" 29 | }, 30 | "keyDeposit": 2000000, 31 | "maxBlockBodySize": 65536, 32 | "maxBlockHeaderSize": 1100, 33 | "maxTxSize": 16384, 34 | "minFeeA": 44, 35 | "minFeeB": 155381, 36 | "minPoolCost": 340000000, 37 | "minUTxOValue": 1000000, 38 | "nOpt": 150, 39 | "poolDeposit": 500000000, 40 | "protocolVersion": { 41 | "major": 6, 42 | "minor": 0 43 | }, 44 | "rho": 3.0e-3, 45 | "tau": 0.2 46 | }, 47 | "securityParam": 432, 48 | "slotLength": 1, 49 | "slotsPerKESPeriod": 129600, 50 | "staking": { 51 | "pools": {}, 52 | "stake": {} 53 | }, 54 | "systemStart": "2023-06-15T00:30:00Z", 55 | "updateQuorum": 3 56 | } -------------------------------------------------------------------------------- /docs/environments/shelley-qa/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeSlotsCoeff": 5.0e-2, 3 | "epochLength": 7200, 4 | "genDelegs": { 5 | "3ed8dd8d9637c5fb64ef950add70d5482c19c52cac82bdd17a7ae42e": { 6 | "delegate": "451bbcfe22dc9c5b8cc4ad21c7b2815e021a2df52a1e43e7d77a9420", 7 | "vrf": "7db2d5fdd3ccdae264bb087bbd8f5bb3393e9fe9c3d61070072ca873bf6c9f86" 8 | }, 9 | "4db37fb1de328572e88c4be152afd49ad68d192725391a56c19f37a9": { 10 | "delegate": "2452a6adf035ca226e332aedc3af7a9cddec3b121223a9b7c26c471c", 11 | "vrf": "cd974709ece7fc6ef0a939f0c21a5c4ab49a82c74b8c0af301edabeea453d703" 12 | }, 13 | "7d5a43fd31277b955c75d381383c49fca5629649305175578341b4d6": { 14 | "delegate": "eac211a2828841be37031438fe2444a95374a1a6f3f59f040336e0f9", 15 | "vrf": "11c1c8427e2af2c71f8e43207a57a8890b4a2ad67b64d771ca251e499e5e36bc" 16 | } 17 | }, 18 | "initialFunds": {}, 19 | "maxKESEvolutions": 62, 20 | "maxLovelaceSupply": 45000000000000000, 21 | "networkId": "Testnet", 22 | "networkMagic": 3, 23 | "protocolParams": { 24 | "a0": 0.3, 25 | "decentralisationParam": 1.0, 26 | "eMax": 18, 27 | "extraEntropy": { 28 | "tag": "NeutralNonce" 29 | }, 30 | "keyDeposit": 2000000, 31 | "maxBlockBodySize": 65536, 32 | "maxBlockHeaderSize": 1100, 33 | "maxTxSize": 16384, 34 | "minFeeA": 44, 35 | "minFeeB": 155381, 36 | "minPoolCost": 340000000, 37 | "minUTxOValue": 1000000, 38 | "nOpt": 150, 39 | "poolDeposit": 500000000, 40 | "protocolVersion": { 41 | "major": 6, 42 | "minor": 0 43 | }, 44 | "rho": 3.0e-3, 45 | "tau": 0.2 46 | }, 47 | "securityParam": 36, 48 | "slotLength": 1, 49 | "slotsPerKESPeriod": 129600, 50 | "staking": { 51 | "pools": {}, 52 | "stake": {} 53 | }, 54 | "systemStart": "2023-07-13T00:00:00Z", 55 | "updateQuorum": 3 56 | } -------------------------------------------------------------------------------- /nix/metal/explorer/wireguard-gateway.nix: -------------------------------------------------------------------------------- 1 | name: environmentName: { 2 | self, 3 | pkgs, 4 | lib, 5 | config, 6 | etcEncrypted, 7 | ... 8 | }: let 9 | inherit (auxConfig.${environmentName}) explorerActiveBackends; 10 | inherit (config.cluster) domain; 11 | auxConfig = import ./aux-config.nix self.inputs; 12 | 13 | # Obtain the explorer name index number 14 | explorerNum = backendName: builtins.elemAt (lib.splitString "-" backendName) 1; 15 | in { 16 | networking = { 17 | # See the bitte profiles/multicloud/equinix.nix for equinix firewall handling 18 | firewall.allowedUDPPorts = lib.mkForce [51820]; 19 | wireguard = { 20 | enable = true; 21 | interfaces.wg = { 22 | listenPort = 51820; 23 | # There should be only 1 traefik gateway per explorer environment, so we can fix this ip 24 | ips = ["192.168.254.254/32"]; 25 | privateKeyFile = "/etc/wireguard/private.key"; 26 | peers = (map (backend: { 27 | inherit (backend) publicKey; 28 | allowedIPs = ["192.168.254.${explorerNum backend.name}/32"]; 29 | endpoint = "${config.cluster.awsExtNodes.${backend.name}.privateIP}:51820"; 30 | persistentKeepalive = 30; 31 | }) explorerActiveBackends) ++ [ 32 | # cardano-world monitoring server 33 | # wg pubkey < <(sops -d ../encrypted/wg/monitoring-private) 34 | { 35 | publicKey = "nIxaHgQhzVfh1U/ZgwHdhcDczNJEbHEXWXVAo3EyOWE="; 36 | allowedIPs = ["192.168.254.100/32"]; 37 | endpoint = "monitoring-wg.${domain}:51820"; 38 | persistentKeepalive = 30; 39 | } 40 | ]; 41 | }; 42 | }; 43 | }; 44 | 45 | secrets.install.wg-private = { 46 | source = "${etcEncrypted}/wg/${name}-private"; 47 | target = "/etc/wireguard/private.key"; 48 | outputType = "binary"; 49 | extraPackages = [pkgs.wireguard-tools]; 50 | script = '' 51 | chmod 0400 /etc/wireguard/private.key 52 | wg pubkey < /etc/wireguard/private.key > /etc/wireguard/public.key 53 | ''; 54 | }; 55 | } 56 | -------------------------------------------------------------------------------- /nix/metal/encrypted/explorer.json: -------------------------------------------------------------------------------- 1 | { 2 | "gaTrackingId": "ENC[AES256_GCM,data:g+1B7Fk2HiKaORXuEgoJ,iv:AzPg1hHuZq4AjZ+Wh+JuNlyce4A5T2ZgF3gs+8K/dkM=,tag:wVv9XZUnoN7Kg0BRqrbFSA==,type:str]", 3 | "poolsExcludeList": [ 4 | "ENC[AES256_GCM,data:4f4VkE0ZBO3Cl0aoT9YVxm5BoTxKRh/et/w7o80P/NutqihK4BB7CVi4WmKwU3ohM2fvBbc0lF8=,iv:m+f0G3PnQwWmOFSjjC16IwSnpBBKP+Q3ekRRbD/F/wU=,tag:EYvU7nvuxq15eNJ+g2HPUw==,type:str]" 5 | ], 6 | "relaysExcludeList": [ 7 | "ENC[AES256_GCM,data:+QQ8JTDEWytVPFH8OlRb,iv:tf+H74CF+jFEraHTpgymTHq6rcewpSAUvAjvjxpk6C4=,tag:sb/DuEf+N5PhZVhMb8HoJg==,type:str]" 8 | ], 9 | "smashAllowedOrigins": [ 10 | "ENC[AES256_GCM,data:XluKpeY1OlO/dTcbzr29VUajVKLCD+cD/UqRZpmh541wOatC1Q==,iv:9tNxWCp3XGS0QWcwQm2+RIFkz1/OV8MCFuI27IAlZfI=,tag:vdCXIy01H+GHyPvUqB9Kmg==,type:str]", 11 | "ENC[AES256_GCM,data:rpjZDLzsBjMPcvOGhu5IoLa7EX0w4TSQMTajgvX541+YIj6zwgn9z1s=,iv:Mu6o4YMquKJYgUsVrFrX6AIzwR5k1p8tHmTfJZBbE48=,tag:LqvhL0HTYjuwAqi5Dl+kcA==,type:str]" 12 | ], 13 | "smashApiKeys": { 14 | "Devops": "ENC[AES256_GCM,data:IVQsOKTYYPlLPxKRC+cOMNuu6mck8Fn99bCliFfmODI=,iv:bZ7I2iQqcjmtICYspGzWhmzpzybQht8EJvuRsGy68/I=,tag:p4k+X8rbjHxcKwGj8LuA5g==,type:str]" 15 | }, 16 | "sops": { 17 | "kms": [ 18 | { 19 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 20 | "created_at": "2023-02-06T18:57:41Z", 21 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgHX2lNUWjlKObUDeL4w4id6AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMIMfofF2Iyefh/wBuAgEQgDt1mPWE+zZnZH+SLs/eyITMdzBWW8F7nJ5EtXVvakXGCiNUXj1MG5CqPIkHysJAMt0iDvfeVO13hwoxXw==", 22 | "aws_profile": "" 23 | } 24 | ], 25 | "gcp_kms": null, 26 | "azure_kv": null, 27 | "hc_vault": null, 28 | "age": null, 29 | "lastmodified": "2023-02-08T20:16:02Z", 30 | "mac": "ENC[AES256_GCM,data:ZqgEjKccT4jKiDYC+KRDVF9GvLWBuLvizzWpjRFYRl5K3ya5U1JRv1dA1e3157fw9zgHrh9eQFd0RlBGdG92vg+1gbENoWsm0wvlHhoL02m7KHbYMhoKxQ49bVo2lpf/sy60jbkUBCk7KtAY+dQtFW/Q67MzLC/LocpuQ79tk34=,iv:n3HLQwI/8CuYrwJJQm72QAQIGepoM3P4oKJ/edlyyl8=,tag:p+pId83FTsK/w/TVf849MA==,type:str]", 31 | "pgp": null, 32 | "unencrypted_suffix": "_unencrypted", 33 | "version": "3.7.3" 34 | } 35 | } -------------------------------------------------------------------------------- /nix/cloud/kv/vault/patroni/infra.enc.yaml: -------------------------------------------------------------------------------- 1 | patroniApi: ENC[AES256_GCM,data:I7g+,iv:e0suo7A3MVnoGbTwSEMmsftWDayhfK/jSjt7A4HcpdQ=,tag:S3jzTOFmNIeEIHo4QzAGuw==,type:str] 2 | patroniApiPass: ENC[AES256_GCM,data:eKv92JDhNtwxPFr6b5rgEYqkO2BT4slSbqjG0K9Pxsg+C9Ci03ON3qOG5MZnsqOMCMTWPsoB5ESJDF+H5tH1ag==,iv:tFJi5TqmuciMHF6yf5sIZXzetks9vELqUu8jcfUhrp8=,tag:ekua0JvGOiYwuaCGDArzAA==,type:str] 3 | patroniRepl: ENC[AES256_GCM,data:vtOW9Q==,iv:tKJGKIBnj3q/DipiAo4q3Hd2kQQbloH5WcqP+lyoR2w=,tag:LXmuaLGF9B0S3Qf8JxRz4w==,type:str] 4 | patroniReplPass: ENC[AES256_GCM,data:lgdgEmXdQ9fDIYqJiITt46s+qZloqsv6RY6Z1zpXqw35JeviO4vD/CXllBF29vRIM5h1SswaNm7NLMi8Zi7F3A==,iv:nJr82rzIliOG3r9ZwxeZPFxTjFJvtvXLIMj8+Cmfjao=,tag:jZI4eyEvXdK3o9jnot01tQ==,type:str] 5 | patroniRewind: ENC[AES256_GCM,data:ca5XyiKO,iv:RYS5pUne8x66+kYwLIej4RhkZjxPN6ILe0SnS8PbfWw=,tag:lt4/jYrIGS2EePY9mSmZ5g==,type:str] 6 | patroniRewindPass: ENC[AES256_GCM,data:8PfY71huHSH34XDhy/a90oY0vaIrPBocy31UR6stHLPL1k5azio+KbqwoAPxc8K2Oh3PVlvAXlfMapHr6MZTFQ==,iv:vjbRtr5tjfNxmTBaXSz10h1frhzV7INePbbDnK7g/Xg=,tag:isQ9zEraCcR4a4MmLQRt7w==,type:str] 7 | patroniSuper: ENC[AES256_GCM,data:GQtg,iv:Lp7ocud/7WdR5rYkbnWJ+pYKhvIk6dnoSXNHV7z5ElI=,tag:hWDApGSjlgq1qkzbKY2FRQ==,type:str] 8 | patroniSuperPass: ENC[AES256_GCM,data:GfzSqdEPUCHt//wV0FTZYqACxRCMedOqpeloI1nC0c4fnuiM/G1hM8y2+aA3gzCLdBzUlyANOQm+0wcd02eagQ==,iv:RoJtPCF4S+WBVTLYAj7Y/T/KzgamV+yN0dCSkLtB9Kg=,tag:G2CWLodFoVzk2kI0mMrPJw==,type:str] 9 | sops: 10 | kms: [] 11 | gcp_kms: [] 12 | azure_kv: [] 13 | hc_vault: 14 | - vault_address: https://vault.world.dev.cardano.org 15 | engine_path: sops 16 | key_name: ops 17 | created_at: "2022-05-20T15:31:01Z" 18 | enc: vault:v1:x9H5y7GV5HeU5oUOZbnjJbpdzal/Gi7pOI373fNPv2m219ldoZPYpdufTs5AtltjVjAIK7wClLIcTtqb 19 | age: [] 20 | lastmodified: "2022-05-31T19:28:08Z" 21 | mac: ENC[AES256_GCM,data:9vbsSyIYyo+CUACwAylwh54VY/lSuy2qt0ElC6lWar8luKoPSfszyEiunjTTbuW8PsvjJOcgWkoNgphjzjLQXn7cbAJpegZv+OffSXm+evaHp4g3kacutcYcp7meHOMUw24aHwcfCV4q9uZMZ+GYKhGGtq/wjowMde4aeICSNFg=,iv:gtABJCHaFJP28+KUqeCU2ad1KHGIrxzwQgcc0ypM+BA=,tag:2vpilVFzci8TnocUVZwI8A==,type:str] 22 | pgp: [] 23 | unencrypted_suffix: _unencrypted 24 | version: 3.7.2 25 | -------------------------------------------------------------------------------- /nix/metal/explorer/cardano-postgres.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config, lib, ... }: 2 | let 3 | inherit (lib) mkIf mkEnableOption; 4 | cfg = config.services.cardano-postgres; 5 | in { 6 | options.services.cardano-postgres.enable = mkEnableOption "Cardano Postgres"; 7 | 8 | config = mkIf cfg.enable { 9 | services.postgresql = { 10 | enable = true; 11 | package = pkgs.postgresql_12; 12 | enableTCPIP = false; 13 | settings = { 14 | # Optimized for: 15 | # DB Version: 12 16 | # OS Type: linux 17 | # DB Type: mixed (DW and OLTP characteristics) 18 | # Total Memory (RAM): 112 GB 19 | # 256 GB m3.large.x86 20 | # - 64 graphql-engine 21 | # - 24 db-sync 22 | # - 20 node 23 | # - 20 zfs arc 24 | # - 16 misc 25 | # CPUs num: 50 26 | # 64 vCPU m3.large.x86 27 | # - 2 graphql-engine 28 | # - 2 db-sync 29 | # - 2 node 30 | # - 8 misc 31 | # Connections num: 2000 32 | # Data Storage: ssd 33 | # Suggested optimization for 34 | # other configurations can be 35 | # found at: 36 | # https://pgtune.leopard.in.ua/ 37 | max_connections = 2000; 38 | shared_buffers = "28GB"; 39 | effective_cache_size = "84GB"; 40 | maintenance_work_mem = "2GB"; 41 | checkpoint_completion_target = 0.9; 42 | wal_buffers = "16MB"; 43 | default_statistics_target = 100; 44 | random_page_cost = 1.1; 45 | effective_io_concurrency = 200; 46 | work_mem = "1835kB"; 47 | min_wal_size = "1GB"; 48 | max_wal_size = "4GB"; 49 | max_worker_processes = 50; 50 | max_parallel_workers_per_gather = 4; 51 | max_parallel_workers = 50; 52 | max_parallel_maintenance_workers = 4; 53 | # To reduce impact of vacuum on iowait (default is 2) 54 | autovacuum_vacuum_cost_delay = 20; 55 | 56 | # Uncomment for query analysis 57 | # During non-IO bound runtime, may impact performance up to ~10% 58 | shared_preload_libraries = "pg_stat_statements"; 59 | "pg_stat_statements.track" = "all"; 60 | }; 61 | }; 62 | }; 63 | } 64 | -------------------------------------------------------------------------------- /nix/cardano/nomadCharts/srv-metadata-varnish.nix: -------------------------------------------------------------------------------- 1 | { 2 | namespace, 3 | }: { 4 | address_mode = "auto"; 5 | check = [ 6 | { 7 | name = "ping"; 8 | address_mode = "host"; 9 | port = "varnish"; 10 | path = "/ping"; 11 | type = "http"; 12 | interval = "10s"; 13 | timeout = "5s"; 14 | } 15 | ]; 16 | name = "${namespace}-metadata-varnish"; 17 | port = "varnish"; 18 | tags = [ 19 | "\${NOMAD_ALLOC_ID}" 20 | "ingress" 21 | "traefik.enable=true" 22 | 23 | # Metadata get 24 | "traefik.http.routers.${namespace}-metadata.rule=Host(`metadata.world.dev.cardano.org`,`metadata.play.dev.cardano.org`) && PathPrefix(`/metadata`) && Method(`GET`,`OPTIONS`)" 25 | "traefik.http.routers.${namespace}-metadata.entrypoints=https" 26 | "traefik.http.routers.${namespace}-metadata.tls=true" 27 | "traefik.http.routers.${namespace}-metadata.tls.certresolver=acme" 28 | "traefik.http.routers.${namespace}-metadata.middlewares=${namespace}-metadata-cors-headers" 29 | 30 | # Metadata batch 31 | "traefik.http.routers.${namespace}-metadata-batch.rule=Host(`metadata.world.dev.cardano.org`,`metadata.play.dev.cardano.org`) && PathPrefix(`/metadata/query`) && Method(`POST`,`OPTIONS`)" 32 | "traefik.http.routers.${namespace}-metadata-batch.entrypoints=https" 33 | "traefik.http.routers.${namespace}-metadata-batch.tls=true" 34 | "traefik.http.routers.${namespace}-metadata-batch.tls.certresolver=acme" 35 | "traefik.http.routers.${namespace}-metadata.middlewares=${namespace}-metadata-cors-headers,${namespace}-metadata-ratelimit" 36 | 37 | # Middleware 38 | "traefik.http.middlewares.${namespace}-metadata-cors-headers.headers.addVaryHeader=true" 39 | "traefik.http.middlewares.${namespace}-metadata-cors-headers.headers.accessControlAllowMethods=GET,OPTIONS,POST" 40 | "traefik.http.middlewares.${namespace}-metadata-cors-headers.headers.accessControlAllowHeaders=User-Agent,X-Requested-With,Content-Type" 41 | 42 | "traefik.http.middlewares.${namespace}-metadata-ratelimit.ratelimit.average=10" 43 | "traefik.http.middlewares.${namespace}-metadata-ratelimit.ratelimit.burst=20" 44 | "traefik.http.middlewares.${namespace}-metadata-ratelimit.ratelimit.period=1" 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /nix/cloud/kv/vault/.sops.yaml: -------------------------------------------------------------------------------- 1 | creation_rules: 2 | # Dev 3 | - path_regex: cardano/preprod/* 4 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/dev" 5 | - path_regex: cardano/preview/* 6 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/dev" 7 | - path_regex: cardano/private/* 8 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/dev" 9 | - path_regex: cardano/sanchonet/* 10 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/dev" 11 | - path_regex: cardano/shelley-qa/* 12 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/dev" 13 | 14 | # Ops 15 | - path_regex: db-sync/mainnet* 16 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 17 | - path_regex: db-sync/preprod* 18 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 19 | - path_regex: db-sync/preview* 20 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 21 | - path_regex: db-sync/private* 22 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 23 | - path_regex: db-sync/sanchonet* 24 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 25 | - path_regex: db-sync/shelley-qa* 26 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 27 | - path_regex: faucet/preprod* 28 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 29 | - path_regex: faucet/preview* 30 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 31 | - path_regex: faucet/private* 32 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 33 | - path_regex: faucet/shelley-qa* 34 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 35 | - path_regex: faucet/sanchonet* 36 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 37 | - path_regex: patroni/infra* 38 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 39 | - path_regex: metadata/infra* 40 | hc_vault_transit_uri: "https://vault.world.dev.cardano.org/v1/sops/keys/ops" 41 | -------------------------------------------------------------------------------- /nix/metal/encrypted/vault.enc.json: -------------------------------------------------------------------------------- 1 | { 2 | "unseal_keys_b64": [], 3 | "unseal_keys_hex": [], 4 | "unseal_shares": "ENC[AES256_GCM,data:9A==,iv:ZZfGZktTz6pHx2QzT73pcD3pVsg6bmUh3GO9sJ9mluc=,tag:S6AbDzNP8QHRIc5fBnjkBQ==,type:float]", 5 | "unseal_threshold": "ENC[AES256_GCM,data:3A==,iv:tCjc5V/7uXtsolgfv/Sj83be1nFmc5pvLu4xWtOWAqM=,tag:N2fGwNf+C0pDi/GgnwGH3Q==,type:float]", 6 | "recovery_keys_b64": [ 7 | "ENC[AES256_GCM,data:ZwBE062H93CHAOdfk+SYM7iOnLhfTGuzlVuyPWqmYr1Sm/tSpBcAkI4Savw=,iv:SkW8TKVWfXgsdxRIXr+l1mqJfkFPMNwnSspHPGmFCd4=,tag:x8q5EQJFW80Lbaf/ySdmQQ==,type:str]" 8 | ], 9 | "recovery_keys_hex": [ 10 | "ENC[AES256_GCM,data:1qMZY+HGTWzJqodoBRZARnSfqf2U/TO0RYGymwqQ3udIj8CF0FwoFPX8VynPkeQ0jeQ1lpOtZ1/cW5oxo6ea5w==,iv:DNK9F2kPaoLbO/1OIhliipuXLpUeIdP7CfgmA2cxGho=,tag:x6Nqthv8W5RvuU6sQInzww==,type:str]" 11 | ], 12 | "recovery_keys_shares": "ENC[AES256_GCM,data:Eg==,iv:Dx+2yfh1jq+7fXUWyql7XsOHUihpFDdmi6y5043iHn8=,tag:aUoeX6LCnb9XujvbOUzlSg==,type:float]", 13 | "recovery_keys_threshold": "ENC[AES256_GCM,data:lw==,iv:dN2xRQAZEDrAOz5kDcMH6+X62fpMa18Tw7NPgL3NfCk=,tag:AvacfQfDhNzygrl9YuNB5g==,type:float]", 14 | "root_token": "ENC[AES256_GCM,data:srVoKGvXsjDTB9vBPtqpTAotAiQF7woL00A=,iv:v7FPdN4dIPOJYF3d4ThpB3S+8BXkJ0CcHkRIkRByEUY=,tag:gOv7WKfnLpugPdDkMsKgzA==,type:str]", 15 | "sops": { 16 | "kms": [ 17 | { 18 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 19 | "created_at": "2022-04-07T06:50:00Z", 20 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgG120k5rosdvOIZVa2R3dfJAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM6cF0iAmN8PFxwYL1AgEQgDs/4yry3FySrwMnU305VuxpBrDAVU2im+2wjVCo6HR4yOLgBjPcX15Bd5qrqKEFp9VL9y9hUSIfKiHt4Q==", 21 | "aws_profile": "" 22 | } 23 | ], 24 | "gcp_kms": null, 25 | "azure_kv": null, 26 | "hc_vault": null, 27 | "age": null, 28 | "lastmodified": "2022-04-07T06:50:08Z", 29 | "mac": "ENC[AES256_GCM,data:ZkyA1qLZt8zg/z/2AgE28koCQ4DPNg5Gn6hNeHGhluakv8QwvZi53l4EDR/sz+qpzOdESzR90j2eCFGjwL+MNX2tLHGWyik/vEyWnA+jtGQiT/AmKWGQd/nM9xKB0Vr9g5No1mwGxcHH/BQFK/6IY1yIWTwG+eIHxhbR0WnRjyk=,iv:uAKTeyY0RRNeP6aS40Md4vY7u107Pruu5tD5Ezr+Gj4=,tag:ejT0qP9K0PLaGsyAo42MLg==,type:str]", 30 | "pgp": null, 31 | "unencrypted_suffix": "_unencrypted", 32 | "version": "3.7.1" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /scripts/iptables-cleanup-fn.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Source this file to use the iptables analysis/cleanup functions. 4 | 5 | 6 | # Iptables reported allocs being less than Nomad reported allocs is generally not a problem; 7 | # it just indicates iptables isn't needed for those jobs. 8 | # A problem is indicated when iptables allocs are higher than Nomad reported allocs for a client. 9 | eval_client_class_iptables() { 10 | CLASS="$1" 11 | CLIENTS=$(bitte info --json \ 12 | | jq ".nodes[] \ 13 | | select(.name | startswith(\"client\")) \ 14 | | select(.nomad_client.NodeClass == \"$CLASS\")" \ 15 | ) 16 | for CLIENT in $(jq -r .priv_ip <<< "$CLIENTS"); do 17 | echo -n "Evaluating: $CLIENT" 18 | ALLOCS=$(jq -r "select(.priv_ip == \"$CLIENT\") \ 19 | | .nomad_client.allocs \ 20 | | map(select(.ClientStatus == \"running\")) \ 21 | | length" <<< "$CLIENTS" \ 22 | ) 23 | IPT=$(bitte ssh "$CLIENT" -- 'iptables-save | grep -Ec "\-A POSTROUTING.*nomad"'); 24 | if [ "$ALLOCS" != "$IPT" ]; then 25 | echo " ... Nomad reported allocs ($ALLOCS) don't match iptables rules allocs ($IPT)" 26 | else 27 | echo " ... ok" 28 | fi 29 | done 30 | } 31 | 32 | clean_remote_iptables() { 33 | REMOTE="$1" 34 | TABLE=$(bitte ssh "$REMOTE" \ 35 | -- iptables-save \ 36 | | grep -E '\-A POSTROUTING.*nomad' \ 37 | | sed -n -E 's|-A POSTROUTING -s ([^/]+).* id: \\"([^\\]+).* -j (.*$)|\2 \1 \3|p' \ 38 | ) 39 | readarray -t ROWS <<< "$TABLE" 40 | 41 | # Iterate over iptables declared nomad allocs 42 | for ROW in "${ROWS[@]}"; do 43 | # shellcheck disable=SC2206 44 | ARR=($ROW) 45 | ID=${ARR[0]} 46 | IP=${ARR[1]} 47 | CNI=${ARR[2]} 48 | CNI_DN="CNI-DN-${CNI:4:21}" 49 | MATCH="$ID|$IP|$CNI|$CNI_DN" 50 | 51 | # See if an iptables alloc actually exists; if not purge it 52 | if ! curl -sf -H "X-Nomad-Token: $NOMAD_TOKEN" "$NOMAD_ADDR/v1/allocation/$ID" &> /dev/null; then 53 | read -p "Allocation $ID does not exist -- do you wish to clean up the iptables? " -n 1 -r 54 | if [[ $REPLY =~ ^[Yy]$ ]]; then 55 | bitte ssh "$REMOTE" \ 56 | -- bash -c "iptables-save \ 57 | | grep -E \"$MATCH\" \ 58 | | grep -v -E '^:CNI' \ 59 | | sed -E 's|^-A|-D|g' \ 60 | | xargs -d '\n' -I{} bash -c \"iptables -t filter {} &> /dev/null || iptables -t nat {} &> /dev/null\" 61 | iptables -t nat -X \"$CNI\" 62 | iptables -t nat -X \"$CNI_DN\"" 63 | fi 64 | fi 65 | done 66 | } 67 | -------------------------------------------------------------------------------- /nix/automation/nixago.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) nixpkgs data-merge; 6 | inherit (inputs.std) std; 7 | in { 8 | treefmt = std.nixago.treefmt { 9 | configData = { 10 | formatter.prettier = { 11 | excludes = [ 12 | "*-genesis.json" 13 | "*.enc.json" 14 | "*.enc.yaml" 15 | ]; 16 | }; 17 | formatter.haskell = { 18 | command = "ormolu"; 19 | options = [ 20 | "--ghc-opt" 21 | "-XBangPatterns" 22 | "--ghc-opt" 23 | "-XPatternSynonyms" 24 | "--ghc-opt" 25 | "-XTypeApplications" 26 | "--mode" 27 | "inplace" 28 | "--check-idempotence" 29 | ]; 30 | includes = ["*.hs"]; 31 | }; 32 | }; 33 | packages = [nixpkgs.ormolu]; 34 | }; 35 | editorconfig = std.nixago.editorconfig { 36 | configData = { 37 | "*.hs" = { 38 | indent_style = "space"; 39 | indent_size = 2; 40 | trim_trailing_whitespace = "true"; 41 | insert_final_newline = "true"; 42 | charset = "utf-8"; 43 | end_of_line = "lf"; 44 | }; 45 | 46 | "Makefile" = { 47 | indent_style = "tab"; 48 | }; 49 | "*-genesis.json" = { 50 | end_of_line = "unset"; 51 | insert_final_newline = "unset"; 52 | trim_trailing_whitespace = "unset"; 53 | charset = "unset"; 54 | indent_style = "unset"; 55 | indent_size = "unset"; 56 | }; 57 | "nix/metal/encrypted/*" = { 58 | end_of_line = "unset"; 59 | insert_final_newline = "unset"; 60 | trim_trailing_whitespace = "unset"; 61 | charset = "unset"; 62 | indent_style = "unset"; 63 | indent_size = "unset"; 64 | }; 65 | "{secrets/**,**.enc,**.enc.*}" = { 66 | end_of_line = "unset"; 67 | insert_final_newline = "unset"; 68 | trim_trailing_whitespace = "unset"; 69 | charset = "unset"; 70 | indent_style = "unset"; 71 | indent_size = "unset"; 72 | }; 73 | }; 74 | }; 75 | mdbook = std.nixago.mdbook { 76 | packages = [nixpkgs.mdbook-mermaid]; 77 | configData = { 78 | book.autors = ["The Cardano Authors"]; 79 | book.title = "The Cardano Operations Book"; 80 | output.html = { 81 | git-repository-url = "https://github.com/input-output-hk/cardano-world"; 82 | git-repository-icon = "fa-github"; 83 | edit-url-template = "https://github.com/input-output-hk/cardano-world/edit/master/src/{path}"; 84 | }; 85 | }; 86 | }; 87 | } 88 | -------------------------------------------------------------------------------- /docs/environments/mainnet/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeSlotsCoeff": 0.05, 3 | "protocolParams": { 4 | "protocolVersion": { 5 | "minor": 0, 6 | "major": 2 7 | }, 8 | "decentralisationParam": 1, 9 | "eMax": 18, 10 | "extraEntropy": { 11 | "tag": "NeutralNonce" 12 | }, 13 | "maxTxSize": 16384, 14 | "maxBlockBodySize": 65536, 15 | "maxBlockHeaderSize": 1100, 16 | "minFeeA": 44, 17 | "minFeeB": 155381, 18 | "minUTxOValue": 1000000, 19 | "poolDeposit": 500000000, 20 | "minPoolCost": 340000000, 21 | "keyDeposit": 2000000, 22 | "nOpt": 150, 23 | "rho": 0.003, 24 | "tau": 0.20, 25 | "a0": 0.3 26 | }, 27 | "genDelegs": { 28 | "ad5463153dc3d24b9ff133e46136028bdc1edbb897f5a7cf1b37950c": { 29 | "delegate": "d9e5c76ad5ee778960804094a389f0b546b5c2b140a62f8ec43ea54d", 30 | "vrf": "64fa87e8b29a5b7bfbd6795677e3e878c505bc4a3649485d366b50abadec92d7" 31 | }, 32 | "b9547b8a57656539a8d9bc42c008e38d9c8bd9c8adbb1e73ad529497": { 33 | "delegate": "855d6fc1e54274e331e34478eeac8d060b0b90c1f9e8a2b01167c048", 34 | "vrf": "66d5167a1f426bd1adcc8bbf4b88c280d38c148d135cb41e3f5a39f948ad7fcc" 35 | }, 36 | "60baee25cbc90047e83fd01e1e57dc0b06d3d0cb150d0ab40bbfead1": { 37 | "delegate": "7f72a1826ae3b279782ab2bc582d0d2958de65bd86b2c4f82d8ba956", 38 | "vrf": "c0546d9aa5740afd569d3c2d9c412595cd60822bb6d9a4e8ce6c43d12bd0f674" 39 | }, 40 | "f7b341c14cd58fca4195a9b278cce1ef402dc0e06deb77e543cd1757": { 41 | "delegate": "69ae12f9e45c0c9122356c8e624b1fbbed6c22a2e3b4358cf0cb5011", 42 | "vrf": "6394a632af51a32768a6f12dac3485d9c0712d0b54e3f389f355385762a478f2" 43 | }, 44 | "162f94554ac8c225383a2248c245659eda870eaa82d0ef25fc7dcd82": { 45 | "delegate": "4485708022839a7b9b8b639a939c85ec0ed6999b5b6dc651b03c43f6", 46 | "vrf": "aba81e764b71006c515986bf7b37a72fbb5554f78e6775f08e384dbd572a4b32" 47 | }, 48 | "2075a095b3c844a29c24317a94a643ab8e22d54a3a3a72a420260af6": { 49 | "delegate": "6535db26347283990a252313a7903a45e3526ec25ddba381c071b25b", 50 | "vrf": "fcaca997b8105bd860876348fc2c6e68b13607f9bbd23515cd2193b555d267af" 51 | }, 52 | "268cfc0b89e910ead22e0ade91493d8212f53f3e2164b2e4bef0819b": { 53 | "delegate": "1d4f2e1fda43070d71bb22a5522f86943c7c18aeb4fa47a362c27e23", 54 | "vrf": "63ef48bc5355f3e7973100c371d6a095251c80ceb40559f4750aa7014a6fb6db" 55 | } 56 | }, 57 | "updateQuorum": 5, 58 | "networkId": "Mainnet", 59 | "initialFunds": {}, 60 | "maxLovelaceSupply": 45000000000000000, 61 | "networkMagic": 764824073, 62 | "epochLength": 432000, 63 | "systemStart": "2017-09-23T21:44:51Z", 64 | "slotsPerKESPeriod": 129600, 65 | "slotLength": 1, 66 | "maxKESEvolutions": 62, 67 | "securityParam": 2160 68 | } 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Cardano Logo 3 |

4 | 5 |

6 | Welcome to the Cardano World Repository 7 |
8 |

9 | 10 | Cardano is a decentralized third-generation proof-of-stake blockchain platform and home to the ada cryptocurrency. 11 | It is the first blockchain platform to evolve out of a scientific philosophy and a research-first driven approach. 12 | 13 | # Cardano World Repository 14 | 15 | This repository is a work-in-progress effort to bundle all Cardano 16 | related development & documentation in a single "portal"-repository. 17 | 18 | The target audience are people who work with Cardano on a daily basis 19 | or just started exploring. 20 | 21 | ## Things you'll find here: 22 | 23 | ### Source Code 24 | 25 | _How is Cardano implemented? → [`./src`][src]._ 26 | 27 | A growing number of source projects will be merged soon. 28 | 29 | ### Building & Packaging 30 | 31 | _Is Cardano built and packaged reproducibly? → Ofc._ 😎 32 | 33 | _Where? → [`./nix/cardano`][build]._ 34 | 35 | ### Operations 36 | 37 | _How is Cardano operated @ IOG? → [`./nix/cloud`][cloud]._ 38 | 39 | _Do you have automation in place? → Sure. See: [`./nix/automation`][automation]._ 40 | 41 | ### Documentation 42 | 43 | _Where can I find the documentation? → [`./docs`][docs]._ 44 | 45 | _No, I mean rendered? → [The Cardano Book][book]._ 46 | 47 | The documentation is structured around these axes: 48 | 49 | | | For Study | For Work | 50 | | ---------------- | ----------- | ------------- | 51 | | **The Practice** | Tutorials | How-To Guides | 52 | | **The Theory** | Explanation | Reference | 53 | 54 | ### Licenses 55 | 56 | _What licenses are used? → [`./.reuse/dep5`][licensing]._ 57 | 58 | _And the usual copies? → [`./LICENSES`][licenses]._ 59 | 60 | ## Releases 61 | 62 | You may find releases on the [GitHub Release Page][releases] of this repository. 63 | 64 | -- 65 | 66 | [src]: https://github.com/input-output-hk/cardano-world/tree/master/src 67 | [docs]: https://github.com/input-output-hk/cardano-world/tree/master/docs 68 | [build]: https://github.com/input-output-hk/cardano-world/tree/master/nix/cardano 69 | [cloud]: https://github.com/input-output-hk/cardano-world/tree/master/nix/cloud 70 | [automation]: https://github.com/input-output-hk/cardano-world/tree/master/nix/automation 71 | [book]: https://book.world.dev.cardano.org 72 | [releases]: https://github.com/input-output-hk/cardano-world/releases 73 | [licensing]: https://github.com/input-output-hk/cardano-world/blob/master/.reuse/dep5 74 | [licenses]: https://github.com/input-output-hk/cardano-world/tree/master/LICENSES 75 | -------------------------------------------------------------------------------- /nix/cardano/prepare-mono-repo/cabal.diff: -------------------------------------------------------------------------------- 1 | diff --git a/src/cardano-tracer/cardano-tracer.cabal b/src/cardano-tracer/cardano-tracer.cabal 2 | index 4483f3fbbf..66cd35a42a 100644 3 | --- a/src/cardano-tracer/cardano-tracer.cabal 4 | +++ b/src/cardano-tracer/cardano-tracer.cabal 5 | @@ -124,7 +124,7 @@ library demo-forwarder-lib 6 | , trace-dispatcher 7 | , trace-forward 8 | 9 | -executable demo-forwarder 10 | +executable cardano-tracer-demo-forwarder 11 | import: base, project-config 12 | 13 | hs-source-dirs: demo/ssh 14 | @@ -153,7 +153,7 @@ library demo-acceptor-lib 15 | , text 16 | , trace-forward 17 | 18 | -executable demo-acceptor 19 | +executable cardano-tracer-demo-acceptor 20 | import: base, project-config 21 | 22 | hs-source-dirs: demo 23 | diff --git a/src/ekg-forward/ekg-forward.cabal b/src/ekg-forward/ekg-forward.cabal 24 | index 2f2c525dc8..4cbfab9047 100644 25 | --- a/src/ekg-forward/ekg-forward.cabal 26 | +++ b/src/ekg-forward/ekg-forward.cabal 27 | @@ -73,7 +73,7 @@ library 28 | , typed-protocols-cborg 29 | , unordered-containers 30 | 31 | -executable demo-forwarder 32 | +executable ekg-forward-demo-forwarder 33 | hs-source-dirs: demo 34 | main-is: forwarder.hs 35 | build-depends: base 36 | @@ -89,7 +89,7 @@ executable demo-forwarder 37 | -rtsopts 38 | -with-rtsopts=-T 39 | 40 | -executable demo-acceptor 41 | +executable ekg-forward-demo-acceptor 42 | hs-source-dirs: demo 43 | main-is: acceptor.hs 44 | build-depends: base 45 | diff --git a/src/network-mux/network-mux.cabal b/src/network-mux/network-mux.cabal 46 | index d1e0e5202c..8a18a74e9a 100644 47 | --- a/src/network-mux/network-mux.cabal 48 | +++ b/src/network-mux/network-mux.cabal 49 | @@ -21,8 +21,7 @@ flag asserts 50 | Flag ipv6 51 | Description: Enable IPv6 test cases 52 | Manual: True 53 | - -- Default to False since travis lacks IPv6 support 54 | - Default: False 55 | + Default: True 56 | 57 | Flag tracetcpinfo 58 | Description: Enable costly Linux only tracing of the kernel's tcpinfo 59 | diff --git a/ouroboros-network/ouroboros-network.cabal b/ouroboros-network/ouroboros-network.cabal 60 | index 256bf9f6f4..9450293d99 100644 61 | --- a/src/ouroboros-network/ouroboros-network.cabal 62 | +++ b/src/ouroboros-network/ouroboros-network.cabal 63 | @@ -33,8 +33,7 @@ flag asserts 64 | Flag ipv6 65 | Description: Enable IPv6 test cases 66 | Manual: True 67 | - -- Default to False since travis lacks IPv6 support 68 | - Default: False 69 | + Default: True 70 | 71 | flag cddl 72 | Description: Enable CDDL based tests of the CBOR encoding 73 | -------------------------------------------------------------------------------- /nix/cardano/hydraJobs.nix: -------------------------------------------------------------------------------- 1 | { inputs 2 | , cell 3 | , 4 | }: 5 | let 6 | inherit (inputs) nixpkgs cells; 7 | inherit (nixpkgs) lib; 8 | inherit (nixpkgs.stdenv) hostPlatform; 9 | inherit (cells.automation.jobs) mkHydraRequiredJob; 10 | inherit (cell.packages) project nodeProject ogmiosProject; 11 | baseJobs = { 12 | node = { 13 | inherit (nodeProject) exes checks benchmarks release; 14 | profiled = lib.genAttrs ([ "locli" ] ++ lib.optionals (!hostPlatform.isDarwin) [ "cardano-node" "tx-generator" ]) (n: 15 | nodeProject.exes.${n}.passthru.profiled 16 | ); 17 | internal = { 18 | inherit (nodeProject) roots plan-nix; 19 | }; 20 | }; 21 | ogmios = { 22 | inherit (ogmiosProject) exes; 23 | internal = { 24 | inherit (ogmiosProject) roots plan-nix; 25 | }; 26 | }; 27 | }; 28 | jobs = { 29 | linux = lib.optionalAttrs hostPlatform.isLinux { 30 | x86 = lib.optionalAttrs hostPlatform.isx86_64 { 31 | native = baseJobs; 32 | musl = 33 | { 34 | node = 35 | let 36 | muslProject = nodeProject.projectCross.musl64; 37 | in 38 | { 39 | cardano-node-linux = muslProject.release; 40 | internal = { inherit (muslProject) roots; }; 41 | }; 42 | }; 43 | windows = 44 | { 45 | node = 46 | let windowsProject = nodeProject.projectCross.mingwW64; 47 | in 48 | { 49 | inherit (windowsProject) checks benchmarks; 50 | cardano-node-win64 = windowsProject.release; 51 | internal = { inherit (windowsProject) roots; }; 52 | }; 53 | }; 54 | }; 55 | arm = lib.optionalAttrs hostPlatform.isAarch64 { 56 | world = { 57 | inherit (project) exes; 58 | internal = { 59 | inherit (project) roots plan-nix; 60 | }; 61 | }; 62 | node = { 63 | inherit (nodeProject) exes; 64 | internal = { 65 | inherit (nodeProject) roots plan-nix; 66 | }; 67 | }; 68 | ogmios = { 69 | inherit (ogmiosProject) exes; 70 | internal = { 71 | inherit (ogmiosProject) roots plan-nix; 72 | }; 73 | }; 74 | }; 75 | }; 76 | macos = lib.optionalAttrs hostPlatform.isDarwin { 77 | x86 = lib.optionalAttrs hostPlatform.isx86_64 (baseJobs // { 78 | cardano-node-macos = nodeProject.release; 79 | }); 80 | arm = lib.optionalAttrs hostPlatform.isAarch64 (baseJobs // { 81 | cardano-node-macos = nodeProject.release; 82 | }); 83 | }; 84 | }; 85 | nonRequiredPaths = map lib.hasPrefix [ ]; 86 | required = mkHydraRequiredJob nonRequiredPaths jobs; 87 | in 88 | jobs // { 89 | inherit required; 90 | } 91 | -------------------------------------------------------------------------------- /docs/explain/packaging-principles.md: -------------------------------------------------------------------------------- 1 | # Packaging Principles 2 | 3 | All Cardano software is packaged according to the following principles. 4 | 5 | - Reproducibility 6 | - Uncompromising GitOps 7 | - The 4 Layers of Packaging 8 | 9 | ## Reproducibility 10 | 11 | All Cardano software published via this repository is built in a _reproducible_ 12 | manner. That means, given a specific checkout of this repository, anyone will 13 | be able with time and knowledge to reproduce byte-equivalent artifacts compared 14 | to the ones that we publish as releases. 15 | 16 | This reproducibility is such that it percolates the entire build stack and 17 | up to the most fundamental bootstrapping of the compiler toolchain. 18 | 19 | Reproducability produces high-integrity build artifacts and is the only route 20 | to sensible software supply chain auditing. → 21 | We build Cardano with the same rigor as we write it. 22 | 23 | #### Additional Resources 24 | 25 | - If this is new to you, see: [https://reproducible-builds.org/][reproducible] 26 | 27 | - And for even more mind-blow, see: [https://bootstrappable.org/][bootstrappable] 28 | 29 | - Make sure to also read up the legendary [Ken Thompson's "Reflections on Trusting Trust"][trusting-trust]. 30 | 31 | ## Uncompromising GitOps 32 | 33 | Building on the previous principle, all our build instructions are _code_. That means 34 | with a simple checkout, a single system dependency on [`nix`][nix] and simple 35 | `nix` commands, you can do one or all of the following things (and more): 36 | 37 | - Build a binary (and also publish it) 38 | - Build an entrypoint 39 | - Build an OCI-Image (and also publish it) 40 | - Build the scheduler spec (and also deploy it) 41 | 42 | ## The 4 Layer of Packaging 43 | 44 | Based on the previous principles, to get a runnable shipped, we look at 4 layers of packaging: 45 | 46 | - The binary packaging ([`nix/cardano/packages/default.nix`][packages]) 47 | - The entrypoint packaging ([`nix/cardano/entrypoints.nix`][entrypoints]) 48 | - The OCI image packaging ([`nix/cardano/oci-images.nix`][images]) 49 | - The scheduler packaging ([`nix/cardano/nomadJob/default.nix`][jobs]) 50 | 51 | You can consume any of those artifacts according to your deployment scenario, but usually 52 | using our published OCI-images ("docker") might be a good start. 53 | 54 | --- 55 | 56 | [nix]: https://nixos.org 57 | [trusting-trust]: http://users.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf 58 | [packages]: https://github.com/input-output-hk/cardano-world/tree/master/nix/cardano/packages/default.nix 59 | [entrypoints]: https://github.com/input-output-hk/cardano-world/tree/master/nix/cardano/entrypoints.nix 60 | [images]: https://github.com/input-output-hk/cardano-world/tree/master/nix/cardano/oci-images.nix 61 | [jobs]: https://github.com/input-output-hk/cardano-world/tree/master/nix/cardano/nomadJob/default.nix 62 | [bootstrappable]: https://bootstrappable.org/ 63 | [reproducible]: https://reproducible-builds.org/ 64 | -------------------------------------------------------------------------------- /docs/environments/preview/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeSlotsCoeff": 0.05, 3 | "epochLength": 86400, 4 | "genDelegs": { 5 | "12b0f443d02861948a0fce9541916b014e8402984c7b83ad70a834ce": { 6 | "delegate": "7c54a168c731f2f44ced620f3cca7c2bd90731cab223d5167aa994e6", 7 | "vrf": "62d546a35e1be66a2b06e29558ef33f4222f1c466adbb59b52d800964d4e60ec" 8 | }, 9 | "3df542796a64e399b60c74acfbdb5afa1e114532fa36b46d6368ef3a": { 10 | "delegate": "c44bc2f3cc7e98c0f227aa399e4035c33c0d775a0985875fff488e20", 11 | "vrf": "4f9d334decadff6eba258b2df8ae1f02580a2628bce47ae7d957e1acd3f42a3c" 12 | }, 13 | "93fd5083ff20e7ab5570948831730073143bea5a5d5539852ed45889": { 14 | "delegate": "82a02922f10105566b70366b07c758c8134fa91b3d8ae697dfa5e8e0", 15 | "vrf": "8a57e94a9b4c65ec575f35d41edb1df399fa30fdf10775389f5d1ef670ca3f9f" 16 | }, 17 | "a86cab3ea72eabb2e8aafbbf4abbd2ba5bdfd04eea26a39b126a78e4": { 18 | "delegate": "10257f6d3bae913514bdc96c9170b3166bf6838cca95736b0e418426", 19 | "vrf": "1b54aad6b013145a0fc74bb5c2aa368ebaf3999e88637d78e09706d0cc29874a" 20 | }, 21 | "b799804a28885bd49c0e1b99d8b3b26de0fac17a5cf651ecf0c872f0": { 22 | "delegate": "ebe606e22d932d51be2c1ce87e7d7e4c9a7d1f7df4a5535c29e23d22", 23 | "vrf": "b3fc06a1f8ee69ff23185d9af453503be8b15b2652e1f9fb7c3ded6797a2d6f9" 24 | }, 25 | "d125812d6ab973a2c152a0525b7fd32d36ff13555a427966a9cac9b1": { 26 | "delegate": "e302198135fb5b00bfe0b9b5623426f7cf03179ab7ba75f945d5b79b", 27 | "vrf": "b45ca2ed95f92248fa0322ce1fc9f815a5a5aa2f21f1adc2c42c4dccfc7ba631" 28 | }, 29 | "ef27651990a26449a40767d5e06cdef1670a3f3ff4b951d385b51787": { 30 | "delegate": "0e0b11e80d958732e587585d30978d683a061831d1b753878f549d05", 31 | "vrf": "b860ec844f6cd476c4fabb4aa1ca72d5c74d82f3835aed3c9515a35b6e048719" 32 | } 33 | }, 34 | "initialFunds": {}, 35 | "maxKESEvolutions": 62, 36 | "maxLovelaceSupply": 45000000000000000, 37 | "networkId": "Testnet", 38 | "networkMagic": 2, 39 | "protocolParams": { 40 | "protocolVersion": { 41 | "minor": 0, 42 | "major": 6 43 | }, 44 | "decentralisationParam": 1, 45 | "eMax": 18, 46 | "extraEntropy": { 47 | "tag": "NeutralNonce" 48 | }, 49 | "maxTxSize": 16384, 50 | "maxBlockBodySize": 65536, 51 | "maxBlockHeaderSize": 1100, 52 | "minFeeA": 44, 53 | "minFeeB": 155381, 54 | "minUTxOValue": 1000000, 55 | "poolDeposit": 500000000, 56 | "minPoolCost": 340000000, 57 | "keyDeposit": 2000000, 58 | "nOpt": 150, 59 | "rho": 0.003, 60 | "tau": 0.20, 61 | "a0": 0.3 62 | }, 63 | "securityParam": 432, 64 | "slotLength": 1, 65 | "slotsPerKESPeriod": 129600, 66 | "systemStart": "2022-10-25T00:00:00Z", 67 | "updateQuorum": 5 68 | } 69 | -------------------------------------------------------------------------------- /docs/environments/private/byron-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "avvmDistr": {}, 3 | "blockVersionData": { 4 | "heavyDelThd": "300000000000", 5 | "maxBlockSize": "2000000", 6 | "maxHeaderSize": "2000000", 7 | "maxProposalSize": "700", 8 | "maxTxSize": "4096", 9 | "mpcThd": "20000000000000", 10 | "scriptVersion": 0, 11 | "slotDuration": "20000", 12 | "softforkRule": { 13 | "initThd": "900000000000000", 14 | "minThd": "600000000000000", 15 | "thdDecrement": "50000000000000" 16 | }, 17 | "txFeePolicy": { 18 | "multiplier": "43946000000", 19 | "summand": "155381000000000" 20 | }, 21 | "unlockStakeEpoch": "18446744073709551615", 22 | "updateImplicit": "10000", 23 | "updateProposalThd": "100000000000000", 24 | "updateVoteThd": "1000000000000" 25 | }, 26 | "bootStakeholders": { 27 | "073f07abb66448e8032aff8851c5b553dc2dfa29882755306cacd3be": 1, 28 | "53f2ed0a77615dcae37d2345bcc5569f99f5812eeaf22b6363170874": 1, 29 | "cd38fa9c37e822ce8a06a638e87e729bfe5f3d253aa06541a21b5deb": 1 30 | }, 31 | "heavyDelegation": { 32 | "073f07abb66448e8032aff8851c5b553dc2dfa29882755306cacd3be": { 33 | "cert": "ad1b10810de30e03e9d2efe717bce907424fcd8b055d4448c80ffbe3fcf0e72be1142de80c70b2f8a7c515243f8d57629ecb5fe97612c1f2574d6a37f1bf0803", 34 | "delegatePk": "KdhBCxYFDjVvnLkqNGtTW804/wkjoMw/3Pin3+tOFetfC5tn2/0sGQelXHUxpgk+NPkc5rUFkbOY6aHt3DnsCw==", 35 | "issuerPk": "aBLUpcNVKiVnzNGvzjAHPxptjvDOCrhRxUawv6xQxGoHLGGyAF4yx48fxZuCapc5RK8HAvegVFAut6U8EMeugA==", 36 | "omega": 0 37 | }, 38 | "53f2ed0a77615dcae37d2345bcc5569f99f5812eeaf22b6363170874": { 39 | "cert": "a6644a78c5811e1409345f2e8bfefa82c7609d1a466e1d826f10a30c506066341e28820681748c19fbfafe2fd105073f2238dab944fc8835429d307865180001", 40 | "delegatePk": "Zx6yYqxewWbMLGqmKI9rDJltpoMJLfyDfW+sjg3VpvUsRRt2qaew/mRiqccv+uXL5yJTOFwhX+U/ZV5oAdgobQ==", 41 | "issuerPk": "arH0DguKbim3VfSIfLUapY6k0X8w8ktshJ+Tdlx4VvHtAMQPQd5A+uK+x879KGnNmgZg5X6lBCOEpcdoFZzAfg==", 42 | "omega": 0 43 | }, 44 | "cd38fa9c37e822ce8a06a638e87e729bfe5f3d253aa06541a21b5deb": { 45 | "cert": "c7dbe147fb7b5e3a9a76a3e2e7131b94436f49f0a53562c7f8aa9b74ef0b519011c28954de1947965235c21acb19bcb0fd1080d5e5e55f1c2bc784d17b996109", 46 | "delegatePk": "MH+7EkeOdJRdGPN2+DyrWTnofmbWLGBiKwkCg+BVYo4w5GdobrAUnR8waOpJzliMFDrc2YzR0u6gwSokbyQS9w==", 47 | "issuerPk": "WXRVPXKp7Qy9RMGnVOMrMrMf9NWDNUt78m8TsXUQNcgAkVtQNTYpvtnqgZdZ+tzFRyhiTi8Oh2k7QC0IPniGcQ==", 48 | "omega": 0 49 | } 50 | }, 51 | "nonAvvmBalances": { 52 | "FHnt4NL7yPXhGz8Zi1JWrZysMyFWTnjJoyU2XJAyBpeNVspmmXi2nAkEEWJnr7U": "0", 53 | "FHnt4NL7yPXqVH37cxfDpCtiEwTYxKxE86rYyBSuacaawe27wcgzt8zPFhZkKdC": "0", 54 | "FHnt4NL7yPXw1jz57n2a8VnQbfQgXHumSLkjeAjQtei6bQpjJ1B9F9VG6xXJMQH": "0", 55 | "FHnt4NL7yPXxowmhCYh7Vz1aJbRCbLK6SfYUX7y1r5mCEh1kdqgAn26euF7SW3y": "30000000000000000" 56 | }, 57 | "protocolConsts": { 58 | "k": 36, 59 | "protocolMagic": 5 60 | }, 61 | "startTime": 1698451200 62 | } 63 | -------------------------------------------------------------------------------- /docs/environments/sanchonet/byron-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "avvmDistr": {}, 3 | "blockVersionData": { 4 | "heavyDelThd": "300000000000", 5 | "maxBlockSize": "2000000", 6 | "maxHeaderSize": "2000000", 7 | "maxProposalSize": "700", 8 | "maxTxSize": "4096", 9 | "mpcThd": "20000000000000", 10 | "scriptVersion": 0, 11 | "slotDuration": "20000", 12 | "softforkRule": { 13 | "initThd": "900000000000000", 14 | "minThd": "600000000000000", 15 | "thdDecrement": "50000000000000" 16 | }, 17 | "txFeePolicy": { 18 | "multiplier": "43946000000", 19 | "summand": "155381000000000" 20 | }, 21 | "unlockStakeEpoch": "18446744073709551615", 22 | "updateImplicit": "10000", 23 | "updateProposalThd": "100000000000000", 24 | "updateVoteThd": "1000000000000" 25 | }, 26 | "bootStakeholders": { 27 | "318488dc356f6034104804b2cb6a2dcc055202491386fb0d5af7c3ba": 1, 28 | "3a3c2ffaf066c8f211a1bdfd844f767ac453b1d94915e725c5867467": 1, 29 | "3ae8eabb4e0626cea0ba38d8303d59514dae9c307d93bad3d259e4a9": 1 30 | }, 31 | "heavyDelegation": { 32 | "318488dc356f6034104804b2cb6a2dcc055202491386fb0d5af7c3ba": { 33 | "cert": "b80e06679023284236df3464dc6aab3f56f23cb721d5943c59632ac77004f76ae415b6d291606c7194509e1fefa0c8341eed269bd0e0e1433302b00912a4230c", 34 | "delegatePk": "9ELoyHN4GVtXrFzAJZApAVjrhwftqEFVoDXl9ebtTwpe/lG4b5ZkgH3DqwHE1hNJFRsnYs4zYzMmdbnoR7lfUA==", 35 | "issuerPk": "MHFL9SqIV6KuXSAvp08jHBRtHwNsDJMsCxbmXLorSbfLAORg7waqVL8NEaKU3Lb0FBIX5sHVC21i1M/c0jrnlA==", 36 | "omega": 0 37 | }, 38 | "3a3c2ffaf066c8f211a1bdfd844f767ac453b1d94915e725c5867467": { 39 | "cert": "ce91b8e35b67de2236fa79b353d1c4ebd97ad4b4cc89056a1acfc217ece8e91fbffc4bf44604a96a1064c9997f6cd39b81284aadfac752056eafc6b5996a6509", 40 | "delegatePk": "Grpf6iTqd9aWc3QWvfthNv2l8Pp0X2tKpoIoPn0+Dy1+ow60UTu9i1j4KPjp1uzrnM4JoUcmkCGF507fPagO8w==", 41 | "issuerPk": "1FPA7qSOPVDlNZoQAuoB2dnm+tKI5td6+BO5sJ2rswVxuS6S6sjBFVfVz/VXfKTcEt/AKyffgzWXAtPCnhC1jw==", 42 | "omega": 0 43 | }, 44 | "3ae8eabb4e0626cea0ba38d8303d59514dae9c307d93bad3d259e4a9": { 45 | "cert": "908dd25262598050d60cb24928a7059fea3726a1dd7764645edab654d3b4e37ba69acd4841454f70f0f643305ede0ef66dc0ea9747a2387da05d2af77963f30a", 46 | "delegatePk": "1zYduiReianx6HJHgQqtira7XY6M/Ol4tFj/O7TzTLcNfgazJm8pq5y6HAANwl91iL1pDZuIgFjzI+2i1Z6y2Q==", 47 | "issuerPk": "Pgj3IyTJDyxr+t5fcMuM3aPtyNCxOo4T9sr78BNbgWBGwlTGo0P6UtzNLyqloLsH8V6Lv6kYMdWELAiEyfCpkw==", 48 | "omega": 0 49 | } 50 | }, 51 | "nonAvvmBalances": { 52 | "FHnt4NL7yPXqn7xha3WB99wYLxAc1FhceD3D1pQWaCthk9RYB46aGb6Tbq2KxV5": "0", 53 | "FHnt4NL7yPXwj8m191s48v1RZtQqA2sVHpamzStuXTuAnzYUSR6hRPqhYmW3MY4": "0", 54 | "FHnt4NL7yPXzVZ5xexcb7rWqCYWuFU7y6Pp4tLTiv6txhDcpQ2m7AFGMirsi1F1": "30000000000000000", 55 | "FHnt4NL7yPY27r794z4UiYJ3RwezucDRLX94Pzy6mYPNUNWboB71S9xUm2WEDrv": "0" 56 | }, 57 | "protocolConsts": { 58 | "k": 432, 59 | "protocolMagic": 4 60 | }, 61 | "startTime": 1686789000 62 | } 63 | -------------------------------------------------------------------------------- /docs/environments/shelley-qa/byron-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "avvmDistr": {}, 3 | "blockVersionData": { 4 | "heavyDelThd": "300000000000", 5 | "maxBlockSize": "2000000", 6 | "maxHeaderSize": "2000000", 7 | "maxProposalSize": "700", 8 | "maxTxSize": "4096", 9 | "mpcThd": "20000000000000", 10 | "scriptVersion": 0, 11 | "slotDuration": "20000", 12 | "softforkRule": { 13 | "initThd": "900000000000000", 14 | "minThd": "600000000000000", 15 | "thdDecrement": "50000000000000" 16 | }, 17 | "txFeePolicy": { 18 | "multiplier": "43946000000", 19 | "summand": "155381000000000" 20 | }, 21 | "unlockStakeEpoch": "18446744073709551615", 22 | "updateImplicit": "10000", 23 | "updateProposalThd": "100000000000000", 24 | "updateVoteThd": "1000000000000" 25 | }, 26 | "bootStakeholders": { 27 | "50edbd4a0f6f58387fcb1643457ec100b22b312a74a995a67c52003b": 1, 28 | "79ee950420bb30d0460f4c468b6a638267b40ecbd17cdd4b009d0de5": 1, 29 | "f9519425faad1097d31f34bd16f8e9bf22308d66da0556df22174625": 1 30 | }, 31 | "heavyDelegation": { 32 | "50edbd4a0f6f58387fcb1643457ec100b22b312a74a995a67c52003b": { 33 | "cert": "3f117cc145405bf95919af619efd92cfb360435911c66421e48e1a0f1ac0accd87c25e9cd31579dadab44051a6d504e3c4bd91be2e8fdf468d946d81cd154809", 34 | "delegatePk": "n3ZSsfCwTs5u1wf2dc6FbgijVbNsMeYhDsL56Q9ixm/mmlAM6baH/xTZKQ56cOS2AXF4Hu4pv0lWP0ojk8E5+w==", 35 | "issuerPk": "Vtg7ptYWEoY8+2HmqA7QhB3UfmfeGWZHAy9LThmNMyzVS76vQw1jz7vNaDJX10OmDMFkiL3UweyddKQZZ+j6gg==", 36 | "omega": 0 37 | }, 38 | "79ee950420bb30d0460f4c468b6a638267b40ecbd17cdd4b009d0de5": { 39 | "cert": "b8d74865d1837857803c9b618be8253897bc10e50b45b3993c0f5c13c0b1173835bf3e96fbf04cccbc94a12c5786023ede287ba825f9c193d84a8151f0911f09", 40 | "delegatePk": "g+h1Ncr8O11CqVYNEuRcHk+ExC7DFJmwYwR8MdVFZP3aLFCLzuR/Q5WdueQaHhlQnLFH11uxrWlUfFf+2zLKGg==", 41 | "issuerPk": "j/a0OEzGIazhtHfxrjLsCqeiX22SPoXunjyxPVXQod9hxJJ4Z+st9nzwnIaNlHZKIDj/h5KfgS8vG6il9EEdqg==", 42 | "omega": 0 43 | }, 44 | "f9519425faad1097d31f34bd16f8e9bf22308d66da0556df22174625": { 45 | "cert": "3202b810145c291035318729207ef279ce520bbb5190bf406757a215613cad780f6534fa2ff2e48269915ee39397912579a026ff8741319c1bd70696834b9505", 46 | "delegatePk": "Av1BL28n7Cw7VjC5YfYICAAfpDLownzsV2eKurrYh3XgB51yqqzfNr1rxkH6gcn6b3t0NcU1KvyCZFPN1Arvtg==", 47 | "issuerPk": "ri35xUj10Jn+ZwwEa1vx9f9L+7i6leIno4dxssO1ECovrRtEynU//8eFRoPlz1wR4ZCMSfBiskQDtZqUpTaZ6w==", 48 | "omega": 0 49 | } 50 | }, 51 | "nonAvvmBalances": { 52 | "FHnt4NL7yPXvkoejcLdesSW6e7XQUC5yyVnfW8FYW4QTH2VHtmU3FRMHonLHmPj": "0", 53 | "FHnt4NL7yPY3yKGAzSFJJCxJBbZaRQmDb34LRDvLkjRSeRsBnF6BLNfGd1evRCB": "0", 54 | "FHnt4NL7yPYA4GPM9yrmzdtMdrmqyAgqhKT9GWzpMEeeAXM4F6uikvsY8dzHp8o": "30000000000000000", 55 | "FHnt4NL7yPYCoPxaPPLdxR7ybBnuEASwZjqjj8qpkDZUDSCMXi3265EygJeT5VC": "0" 56 | }, 57 | "protocolConsts": { 58 | "k": 36, 59 | "protocolMagic": 3 60 | }, 61 | "startTime": 1689206400 62 | } 63 | -------------------------------------------------------------------------------- /scripts/dbsync-pool-perf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | # Required env vars provided automatically by direnv shell 5 | [ -z "${NOMAD_ADDR:-}" ] && { echo "The env var NOMAD_ADDR needs to be set and is normally provided by the direnv environment"; exit 1; } 6 | [ -z "${NOMAD_TOKEN:-}" ] && { echo "The env var NOMAD_TOKEN needs to be set and is normally provided by the direnv environment"; exit 1; } 7 | 8 | NS="infra" 9 | JOB="database" 10 | TASK="patroni" 11 | SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) 12 | SQL_FILE="$SCRIPT_DIR/dbsync-pool-perf.sql" 13 | 14 | PROMPT_CHECK() { 15 | MSG="$1" 16 | echo 17 | read -p "$MSG" -n 1 -r 18 | echo 19 | 20 | [[ "${REPLY:-n}" =~ ^[Yy]$ ]] && return 0 21 | return 1 22 | } 23 | 24 | INPUT() { 25 | MSG="$1" 26 | read -p "$MSG" -r 27 | echo "$REPLY" 28 | } 29 | 30 | DB_NS=$(INPUT "Which nomad namespace should be used for the dbsync pool analysis?: ") 31 | echo 32 | 33 | if ! [[ " preview preprod " =~ .*\ $DB_NS\ .* ]]; then 34 | echo "The nomad namespace for dbsync pool analysis must be one of:" 35 | echo " preview" 36 | echo " preprod" 37 | exit 1 38 | fi 39 | 40 | # Get random patroni allocation ID in namespace NS (patroni leader is not required) 41 | ALLOC=$( 42 | curl \ 43 | --fail \ 44 | --silent \ 45 | --location \ 46 | --Header "X-Nomad-Token: $NOMAD_TOKEN" \ 47 | "$NOMAD_ADDR/v1/job/$JOB/allocations?namespace=$NS" \ 48 | | jq -e -r 'map(.ID)[0]' 49 | ) 50 | echo "Random patroni allocation to be queried: $ALLOC" 51 | 52 | # Command setup 53 | EXEC="nomad exec -namespace $NS -task $TASK $ALLOC /bin/bash -c" 54 | PATRONI_LIST="/nix/store/*-patroni-*/bin/patronictl list" 55 | SQL=$(cat "$SQL_FILE") 56 | PLACE_SQL_FILE=$(echo -ne "/nix/store/*-coreutils-*/bin/cat << 'EOF' > /local/dbsync-pool-perf.sql\n$SQL\nEOF") 57 | RUN_QUERY=$(echo -n "/nix/store/*-postgresql-*/bin/psql -h /alloc -U dba -d ${DB_NS}_dbsync -x -P pager=off -f /local/dbsync-pool-perf.sql") 58 | 59 | echo "Patroni cluster status is:" 60 | $EXEC "$PATRONI_LIST" 61 | PROMPT_CHECK "Do you wish to proceed with the current status? [y/n] " || exit 0 62 | echo 63 | 64 | echo "Placing sql file in allocation..." 65 | $EXEC "$PLACE_SQL_FILE" 66 | 67 | echo "Running query..." 68 | QUERY=$($EXEC "$RUN_QUERY") 69 | echo 70 | 71 | echo "Query output:" 72 | echo "$QUERY" | tail -n +2 73 | echo 74 | 75 | echo "JSON for database namespace $DB_NS is:" 76 | JSON=$(grep -oP '^faucet_pool_summary_json[[:space:]]+\| \K{.*$' <<< "$QUERY" | jq .) 77 | echo "$JSON" 78 | echo 79 | 80 | echo "Faucet pools to de-delegate are:" 81 | jq '.faucet_to_dedelegate' <<< "$JSON" 82 | echo 83 | 84 | echo "The string of indexes of faucet pools to de-delegate from the JSON above are:" 85 | jq '.faucet_to_dedelegate | to_entries | map(.key) | join(" ")' <<< "$JSON" 86 | echo 87 | 88 | MAX_SHIFT=$(grep -oP '^faucet_pool_to_dedelegate_shift_pct[[:space:]]+\| \K.*$' <<< "$QUERY") 89 | echo "The maximum difference de-delegation of all these pools will make in chain density is: $MAX_SHIFT%" 90 | 91 | exit 92 | -------------------------------------------------------------------------------- /docs/environments/preprod/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "activeSlotsCoeff": 0.05, 3 | "epochLength": 432000, 4 | "genDelegs": { 5 | "637f2e950b0fd8f8e3e811c5fbeb19e411e7a2bf37272b84b29c1a0b": { 6 | "delegate": "aae9293510344ddd636364c2673e34e03e79e3eefa8dbaa70e326f7d", 7 | "vrf": "227116365af2ed943f1a8b5e6557bfaa34996f1578eec667a5e2b361c51e4ce7" 8 | }, 9 | "8a4b77c4f534f8b8cc6f269e5ebb7ba77fa63a476e50e05e66d7051c": { 10 | "delegate": "d15422b2e8b60e500a82a8f4ceaa98b04e55a0171d1125f6c58f8758", 11 | "vrf": "0ada6c25d62db5e1e35d3df727635afa943b9e8a123ab83785e2281605b09ce2" 12 | }, 13 | "b00470cd193d67aac47c373602fccd4195aad3002c169b5570de1126": { 14 | "delegate": "b3b539e9e7ed1b32fbf778bf2ebf0a6b9f980eac90ac86623d11881a", 15 | "vrf": "0ff0ce9b820376e51c03b27877cd08f8ba40318f1a9f85a3db0b60dd03f71a7a" 16 | }, 17 | "b260ffdb6eba541fcf18601923457307647dce807851b9d19da133ab": { 18 | "delegate": "7c64eb868b4ef566391a321c85323f41d2b95480d7ce56ad2abcb022", 19 | "vrf": "7fb22abd39d550c9a022ec8104648a26240a9ff9c88b8b89a6e20d393c03098e" 20 | }, 21 | "ced1599fd821a39593e00592e5292bdc1437ae0f7af388ef5257344a": { 22 | "delegate": "de7ca985023cf892f4de7f5f1d0a7181668884752d9ebb9e96c95059", 23 | "vrf": "c301b7fc4d1b57fb60841bcec5e3d2db89602e5285801e522fce3790987b1124" 24 | }, 25 | "dd2a7d71a05bed11db61555ba4c658cb1ce06c8024193d064f2a66ae": { 26 | "delegate": "1e113c218899ee7807f4028071d0e108fc790dade9fd1a0d0b0701ee", 27 | "vrf": "faf2702aa4893c877c622ab22dfeaf1d0c8aab98b837fe2bf667314f0d043822" 28 | }, 29 | "f3b9e74f7d0f24d2314ea5dfbca94b65b2059d1ff94d97436b82d5b4": { 30 | "delegate": "fd637b08cc379ef7b99c83b416458fcda8a01a606041779331008fb9", 31 | "vrf": "37f2ea7c843a688159ddc2c38a2f997ab465150164a9136dca69564714b73268" 32 | } 33 | }, 34 | "initialFunds": {}, 35 | "maxKESEvolutions": 62, 36 | "maxLovelaceSupply": 45000000000000000, 37 | "networkId": "Testnet", 38 | "networkMagic": 1, 39 | "protocolParams": { 40 | "protocolVersion": { 41 | "minor": 0, 42 | "major": 2 43 | }, 44 | "decentralisationParam": 1, 45 | "eMax": 18, 46 | "extraEntropy": { 47 | "tag": "NeutralNonce" 48 | }, 49 | "maxTxSize": 16384, 50 | "maxBlockBodySize": 65536, 51 | "maxBlockHeaderSize": 1100, 52 | "minFeeA": 44, 53 | "minFeeB": 155381, 54 | "minUTxOValue": 1000000, 55 | "poolDeposit": 500000000, 56 | "minPoolCost": 340000000, 57 | "keyDeposit": 2000000, 58 | "nOpt": 150, 59 | "rho": 0.003, 60 | "tau": 0.20, 61 | "a0": 0.3 62 | }, 63 | "securityParam": 2160, 64 | "slotLength": 1, 65 | "slotsPerKESPeriod": 129600, 66 | "staking": { 67 | "pools": {}, 68 | "stake": {} 69 | }, 70 | "systemStart": "2022-06-01T00:00:00Z", 71 | "updateQuorum": 5 72 | } 73 | -------------------------------------------------------------------------------- /docs/environments/mainnet/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "mainnet", 5 | "NodeConfigFile": "config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresNoMagic", 8 | "defaultBackends": [ 9 | "KatipBK" 10 | ], 11 | "defaultScribes": [ 12 | [ 13 | "StdoutSK", 14 | "stdout" 15 | ] 16 | ], 17 | "minSeverity": "Info", 18 | "options": { 19 | "cfokey": { 20 | "value": "Release-1.0.0" 21 | }, 22 | "mapBackends": {}, 23 | "mapSeverity": { 24 | "db-sync-node": "Info", 25 | "db-sync-node.Mux": "Error", 26 | "db-sync-node.Subscription": "Error" 27 | }, 28 | "mapSubtrace": { 29 | "#ekgview": { 30 | "contents": [ 31 | [ 32 | { 33 | "contents": "cardano.epoch-validation.benchmark", 34 | "tag": "Contains" 35 | }, 36 | [ 37 | { 38 | "contents": ".monoclock.basic.", 39 | "tag": "Contains" 40 | } 41 | ] 42 | ], 43 | [ 44 | { 45 | "contents": "cardano.epoch-validation.benchmark", 46 | "tag": "Contains" 47 | }, 48 | [ 49 | { 50 | "contents": "diff.RTS.cpuNs.timed.", 51 | "tag": "Contains" 52 | } 53 | ] 54 | ], 55 | [ 56 | { 57 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 58 | "tag": "StartsWith" 59 | }, 60 | [ 61 | { 62 | "contents": "diff.RTS.gcNum.timed.", 63 | "tag": "Contains" 64 | } 65 | ] 66 | ] 67 | ], 68 | "subtrace": "FilterTrace" 69 | }, 70 | "#messagecounters.aggregation": { 71 | "subtrace": "NoTrace" 72 | }, 73 | "#messagecounters.ekgview": { 74 | "subtrace": "NoTrace" 75 | }, 76 | "#messagecounters.katip": { 77 | "subtrace": "NoTrace" 78 | }, 79 | "#messagecounters.monitoring": { 80 | "subtrace": "NoTrace" 81 | }, 82 | "#messagecounters.switchboard": { 83 | "subtrace": "NoTrace" 84 | }, 85 | "benchmark": { 86 | "contents": [ 87 | "GhcRtsStats", 88 | "MonotonicClock" 89 | ], 90 | "subtrace": "ObservableTrace" 91 | }, 92 | "cardano.epoch-validation.utxo-stats": { 93 | "subtrace": "NoTrace" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "AggregationBK", 104 | "KatipBK" 105 | ], 106 | "setupScribes": [ 107 | { 108 | "scFormat": "ScText", 109 | "scKind": "StdoutSK", 110 | "scName": "stdout", 111 | "scRotation": null 112 | } 113 | ] 114 | } 115 | -------------------------------------------------------------------------------- /docs/environments/preprod/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "preprod", 5 | "NodeConfigFile": "config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "defaultBackends": [ 9 | "KatipBK" 10 | ], 11 | "defaultScribes": [ 12 | [ 13 | "StdoutSK", 14 | "stdout" 15 | ] 16 | ], 17 | "minSeverity": "Info", 18 | "options": { 19 | "cfokey": { 20 | "value": "Release-1.0.0" 21 | }, 22 | "mapBackends": {}, 23 | "mapSeverity": { 24 | "db-sync-node": "Info", 25 | "db-sync-node.Mux": "Error", 26 | "db-sync-node.Subscription": "Error" 27 | }, 28 | "mapSubtrace": { 29 | "#ekgview": { 30 | "contents": [ 31 | [ 32 | { 33 | "contents": "cardano.epoch-validation.benchmark", 34 | "tag": "Contains" 35 | }, 36 | [ 37 | { 38 | "contents": ".monoclock.basic.", 39 | "tag": "Contains" 40 | } 41 | ] 42 | ], 43 | [ 44 | { 45 | "contents": "cardano.epoch-validation.benchmark", 46 | "tag": "Contains" 47 | }, 48 | [ 49 | { 50 | "contents": "diff.RTS.cpuNs.timed.", 51 | "tag": "Contains" 52 | } 53 | ] 54 | ], 55 | [ 56 | { 57 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 58 | "tag": "StartsWith" 59 | }, 60 | [ 61 | { 62 | "contents": "diff.RTS.gcNum.timed.", 63 | "tag": "Contains" 64 | } 65 | ] 66 | ] 67 | ], 68 | "subtrace": "FilterTrace" 69 | }, 70 | "#messagecounters.aggregation": { 71 | "subtrace": "NoTrace" 72 | }, 73 | "#messagecounters.ekgview": { 74 | "subtrace": "NoTrace" 75 | }, 76 | "#messagecounters.katip": { 77 | "subtrace": "NoTrace" 78 | }, 79 | "#messagecounters.monitoring": { 80 | "subtrace": "NoTrace" 81 | }, 82 | "#messagecounters.switchboard": { 83 | "subtrace": "NoTrace" 84 | }, 85 | "benchmark": { 86 | "contents": [ 87 | "GhcRtsStats", 88 | "MonotonicClock" 89 | ], 90 | "subtrace": "ObservableTrace" 91 | }, 92 | "cardano.epoch-validation.utxo-stats": { 93 | "subtrace": "NoTrace" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "AggregationBK", 104 | "KatipBK" 105 | ], 106 | "setupScribes": [ 107 | { 108 | "scFormat": "ScText", 109 | "scKind": "StdoutSK", 110 | "scName": "stdout", 111 | "scRotation": null 112 | } 113 | ] 114 | } 115 | -------------------------------------------------------------------------------- /docs/environments/preview/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "preview", 5 | "NodeConfigFile": "config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "defaultBackends": [ 9 | "KatipBK" 10 | ], 11 | "defaultScribes": [ 12 | [ 13 | "StdoutSK", 14 | "stdout" 15 | ] 16 | ], 17 | "minSeverity": "Info", 18 | "options": { 19 | "cfokey": { 20 | "value": "Release-1.0.0" 21 | }, 22 | "mapBackends": {}, 23 | "mapSeverity": { 24 | "db-sync-node": "Info", 25 | "db-sync-node.Mux": "Error", 26 | "db-sync-node.Subscription": "Error" 27 | }, 28 | "mapSubtrace": { 29 | "#ekgview": { 30 | "contents": [ 31 | [ 32 | { 33 | "contents": "cardano.epoch-validation.benchmark", 34 | "tag": "Contains" 35 | }, 36 | [ 37 | { 38 | "contents": ".monoclock.basic.", 39 | "tag": "Contains" 40 | } 41 | ] 42 | ], 43 | [ 44 | { 45 | "contents": "cardano.epoch-validation.benchmark", 46 | "tag": "Contains" 47 | }, 48 | [ 49 | { 50 | "contents": "diff.RTS.cpuNs.timed.", 51 | "tag": "Contains" 52 | } 53 | ] 54 | ], 55 | [ 56 | { 57 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 58 | "tag": "StartsWith" 59 | }, 60 | [ 61 | { 62 | "contents": "diff.RTS.gcNum.timed.", 63 | "tag": "Contains" 64 | } 65 | ] 66 | ] 67 | ], 68 | "subtrace": "FilterTrace" 69 | }, 70 | "#messagecounters.aggregation": { 71 | "subtrace": "NoTrace" 72 | }, 73 | "#messagecounters.ekgview": { 74 | "subtrace": "NoTrace" 75 | }, 76 | "#messagecounters.katip": { 77 | "subtrace": "NoTrace" 78 | }, 79 | "#messagecounters.monitoring": { 80 | "subtrace": "NoTrace" 81 | }, 82 | "#messagecounters.switchboard": { 83 | "subtrace": "NoTrace" 84 | }, 85 | "benchmark": { 86 | "contents": [ 87 | "GhcRtsStats", 88 | "MonotonicClock" 89 | ], 90 | "subtrace": "ObservableTrace" 91 | }, 92 | "cardano.epoch-validation.utxo-stats": { 93 | "subtrace": "NoTrace" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "AggregationBK", 104 | "KatipBK" 105 | ], 106 | "setupScribes": [ 107 | { 108 | "scFormat": "ScText", 109 | "scKind": "StdoutSK", 110 | "scName": "stdout", 111 | "scRotation": null 112 | } 113 | ] 114 | } 115 | -------------------------------------------------------------------------------- /docs/environments/private/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "private", 5 | "NodeConfigFile": "config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "defaultBackends": [ 9 | "KatipBK" 10 | ], 11 | "defaultScribes": [ 12 | [ 13 | "StdoutSK", 14 | "stdout" 15 | ] 16 | ], 17 | "minSeverity": "Info", 18 | "options": { 19 | "cfokey": { 20 | "value": "Release-1.0.0" 21 | }, 22 | "mapBackends": {}, 23 | "mapSeverity": { 24 | "db-sync-node": "Info", 25 | "db-sync-node.Mux": "Error", 26 | "db-sync-node.Subscription": "Error" 27 | }, 28 | "mapSubtrace": { 29 | "#ekgview": { 30 | "contents": [ 31 | [ 32 | { 33 | "contents": "cardano.epoch-validation.benchmark", 34 | "tag": "Contains" 35 | }, 36 | [ 37 | { 38 | "contents": ".monoclock.basic.", 39 | "tag": "Contains" 40 | } 41 | ] 42 | ], 43 | [ 44 | { 45 | "contents": "cardano.epoch-validation.benchmark", 46 | "tag": "Contains" 47 | }, 48 | [ 49 | { 50 | "contents": "diff.RTS.cpuNs.timed.", 51 | "tag": "Contains" 52 | } 53 | ] 54 | ], 55 | [ 56 | { 57 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 58 | "tag": "StartsWith" 59 | }, 60 | [ 61 | { 62 | "contents": "diff.RTS.gcNum.timed.", 63 | "tag": "Contains" 64 | } 65 | ] 66 | ] 67 | ], 68 | "subtrace": "FilterTrace" 69 | }, 70 | "#messagecounters.aggregation": { 71 | "subtrace": "NoTrace" 72 | }, 73 | "#messagecounters.ekgview": { 74 | "subtrace": "NoTrace" 75 | }, 76 | "#messagecounters.katip": { 77 | "subtrace": "NoTrace" 78 | }, 79 | "#messagecounters.monitoring": { 80 | "subtrace": "NoTrace" 81 | }, 82 | "#messagecounters.switchboard": { 83 | "subtrace": "NoTrace" 84 | }, 85 | "benchmark": { 86 | "contents": [ 87 | "GhcRtsStats", 88 | "MonotonicClock" 89 | ], 90 | "subtrace": "ObservableTrace" 91 | }, 92 | "cardano.epoch-validation.utxo-stats": { 93 | "subtrace": "NoTrace" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "AggregationBK", 104 | "KatipBK" 105 | ], 106 | "setupScribes": [ 107 | { 108 | "scFormat": "ScText", 109 | "scKind": "StdoutSK", 110 | "scName": "stdout", 111 | "scRotation": null 112 | } 113 | ] 114 | } 115 | -------------------------------------------------------------------------------- /docs/environments/sanchonet/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "sanchonet", 5 | "NodeConfigFile": "config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "defaultBackends": [ 9 | "KatipBK" 10 | ], 11 | "defaultScribes": [ 12 | [ 13 | "StdoutSK", 14 | "stdout" 15 | ] 16 | ], 17 | "minSeverity": "Info", 18 | "options": { 19 | "cfokey": { 20 | "value": "Release-1.0.0" 21 | }, 22 | "mapBackends": {}, 23 | "mapSeverity": { 24 | "db-sync-node": "Info", 25 | "db-sync-node.Mux": "Error", 26 | "db-sync-node.Subscription": "Error" 27 | }, 28 | "mapSubtrace": { 29 | "#ekgview": { 30 | "contents": [ 31 | [ 32 | { 33 | "contents": "cardano.epoch-validation.benchmark", 34 | "tag": "Contains" 35 | }, 36 | [ 37 | { 38 | "contents": ".monoclock.basic.", 39 | "tag": "Contains" 40 | } 41 | ] 42 | ], 43 | [ 44 | { 45 | "contents": "cardano.epoch-validation.benchmark", 46 | "tag": "Contains" 47 | }, 48 | [ 49 | { 50 | "contents": "diff.RTS.cpuNs.timed.", 51 | "tag": "Contains" 52 | } 53 | ] 54 | ], 55 | [ 56 | { 57 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 58 | "tag": "StartsWith" 59 | }, 60 | [ 61 | { 62 | "contents": "diff.RTS.gcNum.timed.", 63 | "tag": "Contains" 64 | } 65 | ] 66 | ] 67 | ], 68 | "subtrace": "FilterTrace" 69 | }, 70 | "#messagecounters.aggregation": { 71 | "subtrace": "NoTrace" 72 | }, 73 | "#messagecounters.ekgview": { 74 | "subtrace": "NoTrace" 75 | }, 76 | "#messagecounters.katip": { 77 | "subtrace": "NoTrace" 78 | }, 79 | "#messagecounters.monitoring": { 80 | "subtrace": "NoTrace" 81 | }, 82 | "#messagecounters.switchboard": { 83 | "subtrace": "NoTrace" 84 | }, 85 | "benchmark": { 86 | "contents": [ 87 | "GhcRtsStats", 88 | "MonotonicClock" 89 | ], 90 | "subtrace": "ObservableTrace" 91 | }, 92 | "cardano.epoch-validation.utxo-stats": { 93 | "subtrace": "NoTrace" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "AggregationBK", 104 | "KatipBK" 105 | ], 106 | "setupScribes": [ 107 | { 108 | "scFormat": "ScText", 109 | "scKind": "StdoutSK", 110 | "scName": "stdout", 111 | "scRotation": null 112 | } 113 | ] 114 | } 115 | -------------------------------------------------------------------------------- /docs/environments/shelley-qa/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "shelley_qa", 5 | "NodeConfigFile": "config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "defaultBackends": [ 9 | "KatipBK" 10 | ], 11 | "defaultScribes": [ 12 | [ 13 | "StdoutSK", 14 | "stdout" 15 | ] 16 | ], 17 | "minSeverity": "Info", 18 | "options": { 19 | "cfokey": { 20 | "value": "Release-1.0.0" 21 | }, 22 | "mapBackends": {}, 23 | "mapSeverity": { 24 | "db-sync-node": "Info", 25 | "db-sync-node.Mux": "Error", 26 | "db-sync-node.Subscription": "Error" 27 | }, 28 | "mapSubtrace": { 29 | "#ekgview": { 30 | "contents": [ 31 | [ 32 | { 33 | "contents": "cardano.epoch-validation.benchmark", 34 | "tag": "Contains" 35 | }, 36 | [ 37 | { 38 | "contents": ".monoclock.basic.", 39 | "tag": "Contains" 40 | } 41 | ] 42 | ], 43 | [ 44 | { 45 | "contents": "cardano.epoch-validation.benchmark", 46 | "tag": "Contains" 47 | }, 48 | [ 49 | { 50 | "contents": "diff.RTS.cpuNs.timed.", 51 | "tag": "Contains" 52 | } 53 | ] 54 | ], 55 | [ 56 | { 57 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 58 | "tag": "StartsWith" 59 | }, 60 | [ 61 | { 62 | "contents": "diff.RTS.gcNum.timed.", 63 | "tag": "Contains" 64 | } 65 | ] 66 | ] 67 | ], 68 | "subtrace": "FilterTrace" 69 | }, 70 | "#messagecounters.aggregation": { 71 | "subtrace": "NoTrace" 72 | }, 73 | "#messagecounters.ekgview": { 74 | "subtrace": "NoTrace" 75 | }, 76 | "#messagecounters.katip": { 77 | "subtrace": "NoTrace" 78 | }, 79 | "#messagecounters.monitoring": { 80 | "subtrace": "NoTrace" 81 | }, 82 | "#messagecounters.switchboard": { 83 | "subtrace": "NoTrace" 84 | }, 85 | "benchmark": { 86 | "contents": [ 87 | "GhcRtsStats", 88 | "MonotonicClock" 89 | ], 90 | "subtrace": "ObservableTrace" 91 | }, 92 | "cardano.epoch-validation.utxo-stats": { 93 | "subtrace": "NoTrace" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "AggregationBK", 104 | "KatipBK" 105 | ], 106 | "setupScribes": [ 107 | { 108 | "scFormat": "ScText", 109 | "scKind": "StdoutSK", 110 | "scName": "stdout", 111 | "scRotation": null 112 | } 113 | ] 114 | } 115 | -------------------------------------------------------------------------------- /docs/environments/mainnet/submit-api-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "GenesisHash": "5f20df933584822601f9e3f8c024eb5eb252fe8cefb24d1317dc3d432e940ebb", 5 | "PrometheusPort": 8080, 6 | "RequiresNetworkMagic": "RequiresNoMagic", 7 | "defaultBackends": [ 8 | "KatipBK" 9 | ], 10 | "defaultScribes": [ 11 | [ 12 | "StdoutSK", 13 | "stdout" 14 | ] 15 | ], 16 | "minSeverity": "Info", 17 | "options": { 18 | "cfokey": { 19 | "value": "Release-1.0.0" 20 | }, 21 | "mapBackends": {}, 22 | "mapSeverity": { 23 | "db-sync-node": "Info", 24 | "db-sync-node.Mux": "Error", 25 | "db-sync-node.Subscription": "Error" 26 | }, 27 | "mapSubtrace": { 28 | "#ekgview": { 29 | "contents": [ 30 | [ 31 | { 32 | "contents": "cardano.epoch-validation.benchmark", 33 | "tag": "Contains" 34 | }, 35 | [ 36 | { 37 | "contents": ".monoclock.basic.", 38 | "tag": "Contains" 39 | } 40 | ] 41 | ], 42 | [ 43 | { 44 | "contents": "cardano.epoch-validation.benchmark", 45 | "tag": "Contains" 46 | }, 47 | [ 48 | { 49 | "contents": "diff.RTS.cpuNs.timed.", 50 | "tag": "Contains" 51 | } 52 | ] 53 | ], 54 | [ 55 | { 56 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 57 | "tag": "StartsWith" 58 | }, 59 | [ 60 | { 61 | "contents": "diff.RTS.gcNum.timed.", 62 | "tag": "Contains" 63 | } 64 | ] 65 | ] 66 | ], 67 | "subtrace": "FilterTrace" 68 | }, 69 | "#messagecounters.aggregation": { 70 | "subtrace": "NoTrace" 71 | }, 72 | "#messagecounters.ekgview": { 73 | "subtrace": "NoTrace" 74 | }, 75 | "#messagecounters.katip": { 76 | "subtrace": "NoTrace" 77 | }, 78 | "#messagecounters.monitoring": { 79 | "subtrace": "NoTrace" 80 | }, 81 | "#messagecounters.switchboard": { 82 | "subtrace": "NoTrace" 83 | }, 84 | "benchmark": { 85 | "contents": [ 86 | "GhcRtsStats", 87 | "MonotonicClock" 88 | ], 89 | "subtrace": "ObservableTrace" 90 | }, 91 | "cardano.epoch-validation.utxo-stats": { 92 | "subtrace": "NoTrace" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "AggregationBK", 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | -------------------------------------------------------------------------------- /docs/environments/preprod/submit-api-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "GenesisHash": "d4b8de7a11d929a323373cbab6c1a9bdc931beffff11db111cf9d57356ee1937", 5 | "PrometheusPort": 8080, 6 | "RequiresNetworkMagic": "RequiresMagic", 7 | "defaultBackends": [ 8 | "KatipBK" 9 | ], 10 | "defaultScribes": [ 11 | [ 12 | "StdoutSK", 13 | "stdout" 14 | ] 15 | ], 16 | "minSeverity": "Info", 17 | "options": { 18 | "cfokey": { 19 | "value": "Release-1.0.0" 20 | }, 21 | "mapBackends": {}, 22 | "mapSeverity": { 23 | "db-sync-node": "Info", 24 | "db-sync-node.Mux": "Error", 25 | "db-sync-node.Subscription": "Error" 26 | }, 27 | "mapSubtrace": { 28 | "#ekgview": { 29 | "contents": [ 30 | [ 31 | { 32 | "contents": "cardano.epoch-validation.benchmark", 33 | "tag": "Contains" 34 | }, 35 | [ 36 | { 37 | "contents": ".monoclock.basic.", 38 | "tag": "Contains" 39 | } 40 | ] 41 | ], 42 | [ 43 | { 44 | "contents": "cardano.epoch-validation.benchmark", 45 | "tag": "Contains" 46 | }, 47 | [ 48 | { 49 | "contents": "diff.RTS.cpuNs.timed.", 50 | "tag": "Contains" 51 | } 52 | ] 53 | ], 54 | [ 55 | { 56 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 57 | "tag": "StartsWith" 58 | }, 59 | [ 60 | { 61 | "contents": "diff.RTS.gcNum.timed.", 62 | "tag": "Contains" 63 | } 64 | ] 65 | ] 66 | ], 67 | "subtrace": "FilterTrace" 68 | }, 69 | "#messagecounters.aggregation": { 70 | "subtrace": "NoTrace" 71 | }, 72 | "#messagecounters.ekgview": { 73 | "subtrace": "NoTrace" 74 | }, 75 | "#messagecounters.katip": { 76 | "subtrace": "NoTrace" 77 | }, 78 | "#messagecounters.monitoring": { 79 | "subtrace": "NoTrace" 80 | }, 81 | "#messagecounters.switchboard": { 82 | "subtrace": "NoTrace" 83 | }, 84 | "benchmark": { 85 | "contents": [ 86 | "GhcRtsStats", 87 | "MonotonicClock" 88 | ], 89 | "subtrace": "ObservableTrace" 90 | }, 91 | "cardano.epoch-validation.utxo-stats": { 92 | "subtrace": "NoTrace" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "AggregationBK", 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | -------------------------------------------------------------------------------- /docs/environments/preview/submit-api-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "GenesisHash": "83de1d7302569ad56cf9139a41e2e11346d4cb4a31c00142557b6ab3fa550761", 5 | "PrometheusPort": 8080, 6 | "RequiresNetworkMagic": "RequiresMagic", 7 | "defaultBackends": [ 8 | "KatipBK" 9 | ], 10 | "defaultScribes": [ 11 | [ 12 | "StdoutSK", 13 | "stdout" 14 | ] 15 | ], 16 | "minSeverity": "Info", 17 | "options": { 18 | "cfokey": { 19 | "value": "Release-1.0.0" 20 | }, 21 | "mapBackends": {}, 22 | "mapSeverity": { 23 | "db-sync-node": "Info", 24 | "db-sync-node.Mux": "Error", 25 | "db-sync-node.Subscription": "Error" 26 | }, 27 | "mapSubtrace": { 28 | "#ekgview": { 29 | "contents": [ 30 | [ 31 | { 32 | "contents": "cardano.epoch-validation.benchmark", 33 | "tag": "Contains" 34 | }, 35 | [ 36 | { 37 | "contents": ".monoclock.basic.", 38 | "tag": "Contains" 39 | } 40 | ] 41 | ], 42 | [ 43 | { 44 | "contents": "cardano.epoch-validation.benchmark", 45 | "tag": "Contains" 46 | }, 47 | [ 48 | { 49 | "contents": "diff.RTS.cpuNs.timed.", 50 | "tag": "Contains" 51 | } 52 | ] 53 | ], 54 | [ 55 | { 56 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 57 | "tag": "StartsWith" 58 | }, 59 | [ 60 | { 61 | "contents": "diff.RTS.gcNum.timed.", 62 | "tag": "Contains" 63 | } 64 | ] 65 | ] 66 | ], 67 | "subtrace": "FilterTrace" 68 | }, 69 | "#messagecounters.aggregation": { 70 | "subtrace": "NoTrace" 71 | }, 72 | "#messagecounters.ekgview": { 73 | "subtrace": "NoTrace" 74 | }, 75 | "#messagecounters.katip": { 76 | "subtrace": "NoTrace" 77 | }, 78 | "#messagecounters.monitoring": { 79 | "subtrace": "NoTrace" 80 | }, 81 | "#messagecounters.switchboard": { 82 | "subtrace": "NoTrace" 83 | }, 84 | "benchmark": { 85 | "contents": [ 86 | "GhcRtsStats", 87 | "MonotonicClock" 88 | ], 89 | "subtrace": "ObservableTrace" 90 | }, 91 | "cardano.epoch-validation.utxo-stats": { 92 | "subtrace": "NoTrace" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "AggregationBK", 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | -------------------------------------------------------------------------------- /docs/environments/private/submit-api-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "GenesisHash": "1c49093e43757a7f5d55791ee8682d2681e7a291b10dadc663ac1889b3f16984", 5 | "PrometheusPort": 8080, 6 | "RequiresNetworkMagic": "RequiresMagic", 7 | "defaultBackends": [ 8 | "KatipBK" 9 | ], 10 | "defaultScribes": [ 11 | [ 12 | "StdoutSK", 13 | "stdout" 14 | ] 15 | ], 16 | "minSeverity": "Info", 17 | "options": { 18 | "cfokey": { 19 | "value": "Release-1.0.0" 20 | }, 21 | "mapBackends": {}, 22 | "mapSeverity": { 23 | "db-sync-node": "Info", 24 | "db-sync-node.Mux": "Error", 25 | "db-sync-node.Subscription": "Error" 26 | }, 27 | "mapSubtrace": { 28 | "#ekgview": { 29 | "contents": [ 30 | [ 31 | { 32 | "contents": "cardano.epoch-validation.benchmark", 33 | "tag": "Contains" 34 | }, 35 | [ 36 | { 37 | "contents": ".monoclock.basic.", 38 | "tag": "Contains" 39 | } 40 | ] 41 | ], 42 | [ 43 | { 44 | "contents": "cardano.epoch-validation.benchmark", 45 | "tag": "Contains" 46 | }, 47 | [ 48 | { 49 | "contents": "diff.RTS.cpuNs.timed.", 50 | "tag": "Contains" 51 | } 52 | ] 53 | ], 54 | [ 55 | { 56 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 57 | "tag": "StartsWith" 58 | }, 59 | [ 60 | { 61 | "contents": "diff.RTS.gcNum.timed.", 62 | "tag": "Contains" 63 | } 64 | ] 65 | ] 66 | ], 67 | "subtrace": "FilterTrace" 68 | }, 69 | "#messagecounters.aggregation": { 70 | "subtrace": "NoTrace" 71 | }, 72 | "#messagecounters.ekgview": { 73 | "subtrace": "NoTrace" 74 | }, 75 | "#messagecounters.katip": { 76 | "subtrace": "NoTrace" 77 | }, 78 | "#messagecounters.monitoring": { 79 | "subtrace": "NoTrace" 80 | }, 81 | "#messagecounters.switchboard": { 82 | "subtrace": "NoTrace" 83 | }, 84 | "benchmark": { 85 | "contents": [ 86 | "GhcRtsStats", 87 | "MonotonicClock" 88 | ], 89 | "subtrace": "ObservableTrace" 90 | }, 91 | "cardano.epoch-validation.utxo-stats": { 92 | "subtrace": "NoTrace" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "AggregationBK", 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | -------------------------------------------------------------------------------- /docs/environments/sanchonet/submit-api-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "GenesisHash": "785eb88427e136378a15b0a152a8bfbeec7a611529ccda29c43a1e60ffb48eaa", 5 | "PrometheusPort": 8080, 6 | "RequiresNetworkMagic": "RequiresMagic", 7 | "defaultBackends": [ 8 | "KatipBK" 9 | ], 10 | "defaultScribes": [ 11 | [ 12 | "StdoutSK", 13 | "stdout" 14 | ] 15 | ], 16 | "minSeverity": "Info", 17 | "options": { 18 | "cfokey": { 19 | "value": "Release-1.0.0" 20 | }, 21 | "mapBackends": {}, 22 | "mapSeverity": { 23 | "db-sync-node": "Info", 24 | "db-sync-node.Mux": "Error", 25 | "db-sync-node.Subscription": "Error" 26 | }, 27 | "mapSubtrace": { 28 | "#ekgview": { 29 | "contents": [ 30 | [ 31 | { 32 | "contents": "cardano.epoch-validation.benchmark", 33 | "tag": "Contains" 34 | }, 35 | [ 36 | { 37 | "contents": ".monoclock.basic.", 38 | "tag": "Contains" 39 | } 40 | ] 41 | ], 42 | [ 43 | { 44 | "contents": "cardano.epoch-validation.benchmark", 45 | "tag": "Contains" 46 | }, 47 | [ 48 | { 49 | "contents": "diff.RTS.cpuNs.timed.", 50 | "tag": "Contains" 51 | } 52 | ] 53 | ], 54 | [ 55 | { 56 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 57 | "tag": "StartsWith" 58 | }, 59 | [ 60 | { 61 | "contents": "diff.RTS.gcNum.timed.", 62 | "tag": "Contains" 63 | } 64 | ] 65 | ] 66 | ], 67 | "subtrace": "FilterTrace" 68 | }, 69 | "#messagecounters.aggregation": { 70 | "subtrace": "NoTrace" 71 | }, 72 | "#messagecounters.ekgview": { 73 | "subtrace": "NoTrace" 74 | }, 75 | "#messagecounters.katip": { 76 | "subtrace": "NoTrace" 77 | }, 78 | "#messagecounters.monitoring": { 79 | "subtrace": "NoTrace" 80 | }, 81 | "#messagecounters.switchboard": { 82 | "subtrace": "NoTrace" 83 | }, 84 | "benchmark": { 85 | "contents": [ 86 | "GhcRtsStats", 87 | "MonotonicClock" 88 | ], 89 | "subtrace": "ObservableTrace" 90 | }, 91 | "cardano.epoch-validation.utxo-stats": { 92 | "subtrace": "NoTrace" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "AggregationBK", 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | -------------------------------------------------------------------------------- /docs/environments/shelley-qa/submit-api-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "GenesisHash": "273cd12237b98d02f108c9c50063d29a8d1d7f32e9a75ade7cd48e08b3070258", 5 | "PrometheusPort": 8080, 6 | "RequiresNetworkMagic": "RequiresMagic", 7 | "defaultBackends": [ 8 | "KatipBK" 9 | ], 10 | "defaultScribes": [ 11 | [ 12 | "StdoutSK", 13 | "stdout" 14 | ] 15 | ], 16 | "minSeverity": "Info", 17 | "options": { 18 | "cfokey": { 19 | "value": "Release-1.0.0" 20 | }, 21 | "mapBackends": {}, 22 | "mapSeverity": { 23 | "db-sync-node": "Info", 24 | "db-sync-node.Mux": "Error", 25 | "db-sync-node.Subscription": "Error" 26 | }, 27 | "mapSubtrace": { 28 | "#ekgview": { 29 | "contents": [ 30 | [ 31 | { 32 | "contents": "cardano.epoch-validation.benchmark", 33 | "tag": "Contains" 34 | }, 35 | [ 36 | { 37 | "contents": ".monoclock.basic.", 38 | "tag": "Contains" 39 | } 40 | ] 41 | ], 42 | [ 43 | { 44 | "contents": "cardano.epoch-validation.benchmark", 45 | "tag": "Contains" 46 | }, 47 | [ 48 | { 49 | "contents": "diff.RTS.cpuNs.timed.", 50 | "tag": "Contains" 51 | } 52 | ] 53 | ], 54 | [ 55 | { 56 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 57 | "tag": "StartsWith" 58 | }, 59 | [ 60 | { 61 | "contents": "diff.RTS.gcNum.timed.", 62 | "tag": "Contains" 63 | } 64 | ] 65 | ] 66 | ], 67 | "subtrace": "FilterTrace" 68 | }, 69 | "#messagecounters.aggregation": { 70 | "subtrace": "NoTrace" 71 | }, 72 | "#messagecounters.ekgview": { 73 | "subtrace": "NoTrace" 74 | }, 75 | "#messagecounters.katip": { 76 | "subtrace": "NoTrace" 77 | }, 78 | "#messagecounters.monitoring": { 79 | "subtrace": "NoTrace" 80 | }, 81 | "#messagecounters.switchboard": { 82 | "subtrace": "NoTrace" 83 | }, 84 | "benchmark": { 85 | "contents": [ 86 | "GhcRtsStats", 87 | "MonotonicClock" 88 | ], 89 | "subtrace": "ObservableTrace" 90 | }, 91 | "cardano.epoch-validation.utxo-stats": { 92 | "subtrace": "NoTrace" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "AggregationBK", 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | -------------------------------------------------------------------------------- /nix/docs/nomadCharts.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (cell) oci-images; 6 | # OCI-Image Namer 7 | ociNamer = oci: builtins.unsafeDiscardStringContext "${oci.imageName}:${oci.imageTag}"; 8 | in { 9 | documentation = { 10 | jobname ? "documentation", 11 | namespace, 12 | datacenters ? ["eu-central-1" "eu-west-1" "us-east-2"], 13 | domain, 14 | nodeClass, 15 | scaling, 16 | }: let 17 | id = jobname; 18 | type = "service"; 19 | priority = 50; 20 | in { 21 | job.${id} = { 22 | inherit namespace datacenters id type priority; 23 | # ---------- 24 | # Scheduling 25 | # ---------- 26 | constraint = [ 27 | { 28 | attribute = "\${node.class}"; 29 | operator = "="; 30 | value = "${nodeClass}"; 31 | } 32 | ]; 33 | spread = [ 34 | { 35 | attribute = "\${node.datacenter}"; 36 | weight = "100"; 37 | } 38 | ]; 39 | # ---------- 40 | # Update 41 | # ---------- 42 | update.health_check = "task_states"; 43 | update.healthy_deadline = "5m0s"; 44 | update.max_parallel = 1; 45 | update.min_healthy_time = "10s"; 46 | update.progress_deadline = "10m0s"; 47 | update.stagger = "30s"; 48 | # ---------- 49 | # Migrate 50 | # ---------- 51 | migrate.health_check = "checks"; 52 | migrate.healthy_deadline = "8m20s"; 53 | migrate.max_parallel = 1; 54 | migrate.min_healthy_time = "10s"; 55 | # ---------- 56 | # Reschedule 57 | # ---------- 58 | reschedule.delay = "30s"; 59 | reschedule.delay_function = "exponential"; 60 | reschedule.max_delay = "1h0m0s"; 61 | reschedule.unlimited = true; 62 | # ---------- 63 | # Task Groups 64 | # ---------- 65 | group.public = { 66 | count = scaling; 67 | network = { 68 | dns = {servers = ["172.17.0.1"];}; 69 | mode = "bridge"; 70 | port.http = {to = 8080;}; 71 | }; 72 | service = [ 73 | { 74 | name = "public-documentation"; 75 | port = "http"; 76 | tags = [ 77 | "ingress" 78 | "traefik.enable=true" 79 | "traefik.http.routers.public-documentation.rule=Host(`book.world.dev.cardano.org`) && PathPrefix(`/`)" 80 | "traefik.http.routers.public-documentation.entrypoints=https" 81 | "traefik.http.routers.public-documentation.tls=true" 82 | "traefik.http.routers.public-documentation.tls.certresolver=acme" 83 | ]; 84 | check = [ 85 | { 86 | type = "tcp"; 87 | port = "http"; 88 | interval = "10s"; 89 | timeout = "2s"; 90 | } 91 | ]; 92 | } 93 | ]; 94 | task.static-page = { 95 | config.image = ociNamer oci-images.public-documentation; 96 | driver = "docker"; 97 | }; 98 | }; 99 | }; 100 | }; 101 | } 102 | -------------------------------------------------------------------------------- /nix/metal/encrypted/ca.json: -------------------------------------------------------------------------------- 1 | { 2 | "cert": "ENC[AES256_GCM,data:+xbfe/qP5APIxj8/5EH4HyGiEvY0Ixtp9Jg1jEJSWcpNZ9wd9B7AzQRy2WT2FJpOM45z+pzilqmYNb8qJXDJiOtKHuU608cvDkWDTbnzP8w/67abLURUffx1ljoWOv89NYbPPWTW7vrRIaaIhq4NiqoNCzpf98bzw8D1k6W+hryTfpF5qRrERI3LJx8FV/3/C1Y1H0dl9XIzmCEUAR3wdeugWFmQuo5WolobsyWg/WBURnqUYi6fQSWP/5gg2vUlENcr8DKATWPWNJA6gQ5ny26wrdmd88JDiKmKGlZWkbkZY/mvcc92oN6LlAfgIxSzsRH/WcRAWaGPEndRsytUWu/ENRAOG/HUjV4/+13DTuGGtCnyBgPeJvGtaBnFPIlaVqu2aDvMyP9LYA4VY3ia4ACYa7yvy/pOZ2yKOB8uAhwRp04wMMuRbbzw/jDvejlnfVfVAW/Sl766zWVAkaxlViXYH+NBgQTha5r1ISEnmhV6Zn+ETM024RWH5ObIsUfyG0xxboQWNNs324+Wrf7kpdprvED1N6XxU60NMGdgRYp6RU6HZp2VFiutc/WLQYUKhu/W+0iHhnJ7IrttKQbHdXZFpIZ8jaeGiiN/X9kKdKZM1MteCgScNqzAcF0PvJxCjx+BRTInW4PuVvl/Fez6Z8rYDkITHIQaQZDTu0ZzL7QQ+OPhdd3/XSttMuXj5KZ0ykWthSs0edUnogwQ68swUBmhdRzt8gmS1jgrmyqXfMgAmpkdOJ9rlqQXNg3WupI+yZhJE6m2OGYji3+cip4KkyMai+rXo8HqxaihwOsTh7Hug8aGxJrd8IMWRGeeHKnfTqwql9GnfUfTYsvqjCh6EUMsHALu5E0iz9pX4rAQCrg7dv3z8qKldA==,iv:5aMMfhUIajkpLiHMoDdUEo6NyL/LgsfUrxYQBo/aic0=,tag:us0aGF5sJCkiktQhosTIYg==,type:str]", 3 | "csr": "ENC[AES256_GCM,data:oNiChnUJ8a9mGVEAckSoAj2mLS7zq9R23Fc144GZadMWKu1Zju4qx/E9ePF14AfKwiv6irXSnJcDaLx2s72SuIQGpHkYWRPVR+n45nwQ4DHWdNEMMb77XVtOBlEEDhuT1SZfoJ+9uaBzANwclaUn8HpTyjjYpy9B8DKjIJggwwFTvbOeGKVcK8kO/j85src5Etpu4n8ASXzlI7e8P6xi4Z3ycYeN6Qzy90hSdtESgDGqlPnTJCIfGUJB3iN6iX6MvrzJE9iJgv0mWbqIR45aiwlGrBobH/4lTd1hiHiNUOdVXp5f9ldY1Ukxqx0Zxhjv8yChiC+iE59UhdLNNBL4Z6huJCpuqi4QwvSmVyZz66yqkI4wXUc5WrBKJQ8xCpEUG3oiSO5lSXQ7cFB6IPunA7kZYiQhwHyC3e4ywPfTV3UKmjj7UFDHpLm67DQ4EmMdTg5zEF+H+HnOrM0VGIbTBbHgZ4QiOIALPWRqgVMMYsuo5/2/PMFkdtac0IrrBo0JMSQHE7A4yGYdymkbibD7rKIU+bnmPXyuS4s95yls8dseWmiZm0gCFXpL0+HCQcDzkLsqJLKDlebKiw0SOc46orDgaAIqSG7rroMHAg==,iv:GCfCG36kAUU3al7DsmKgUfpXJxs2AoZJSt5+pQni8YU=,tag:a41mVNpilOk5kuSOI6LsiQ==,type:str]", 4 | "key": "ENC[AES256_GCM,data:nxTqBoRTI5QjdhvPo072hG8nKsClak2zRkZDmCleN5ZLxc4ivkoFkP7wfquy2Xg08NljLVNK+hPJ46WrJBI7nsaqF0h+7bXL880YlNEMRlzFjHE1sTEJEX/4ZyIdy9mfLHL/68rzGDvnrY3bkdlVsiJ9rWbkDAHszKrGycjj6hQubLiI+cTf1UplGAf+6fKQ+7PpenvxunZE1Inamk0JDGp8+K2m/x1ErDspyACw08BMI54mfatIJuaniBTv3JNKlbA1YJYT66aZH/dwDtiKPmieikAa23htPU10FEKG/1D4HkU=,iv:gsayGHAQdAtTf9fUyKcH5wPiZMBpFmHodg9oyo0T054=,tag:slCX4IMW725e5pfArO3E0w==,type:str]", 5 | "sops": { 6 | "kms": [ 7 | { 8 | "arn": "arn:aws:kms:eu-central-1:052443713844:key/c1d7a205-5d3d-4ca7-8842-9f7fb2ccc847", 9 | "created_at": "2022-04-07T05:12:20Z", 10 | "enc": "AQICAHjXAo0MmHBo9Ef23uY+WgKmgXNZSxccZLpmGM+ubT+6GgGbmZW4xAYu4PMS3Sx1N9JkAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMgAxmY0gahhkSAI/mAgEQgDskfSO5MPKNmjPWeSKIwV6q7foDY1VVQTM9eOmfYjJShXLR+PDPuNZmZBb+UjeMZYcrJ0sNOJw5uBU9IQ==", 11 | "aws_profile": "" 12 | } 13 | ], 14 | "gcp_kms": null, 15 | "azure_kv": null, 16 | "hc_vault": null, 17 | "age": null, 18 | "lastmodified": "2022-04-07T05:12:20Z", 19 | "mac": "ENC[AES256_GCM,data:ETvx/zgTnFMTSeL/Z3LGxXQqe6mCVrMbSrTglSBAzQBQGmj9TJP0JRMRF9URbD3/3ofWrCG8DXO6aK7UPP6o3avKv1w5PEqlPtX4O8czk1CBYD0+Zhgtlv4tKGXu3xjjieXbonpwM99fgPqW01NRlrDelMdFeMWU9BB9a4VZDyc=,iv:sTw7N48R6GydZWxHFyiY3mO/u64n89vvdNw2nhu56V0=,tag:D4MfeJmHjOxwxu8JLC12Lg==,type:str]", 20 | "pgp": null, 21 | "unencrypted_suffix": "_unencrypted", 22 | "version": "3.7.1" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /nix/metal/explorer/aux-config.nix: -------------------------------------------------------------------------------- 1 | inputs: 2 | let 3 | inherit (inputs.nixpkgs) lib; 4 | default = { 5 | explorerAliases = []; 6 | 7 | cardanoExplorerGwPrometheusExporterPort = 12699; 8 | explorerActiveBackends = []; 9 | explorerRosettaActiveBackends = []; 10 | 11 | smashDelistedPools = []; 12 | }; 13 | in 14 | { 15 | mainnet = lib.recursiveUpdate default { 16 | explorerHostName = "explorer.cardano.org"; 17 | explorerAliases = ["explorer.cardano-mainnet.iohk.io"]; 18 | 19 | # WG_PUBKEY: wg pubkey < <(sops -d nix/metal/encrypted/wg/$AWS_EXT_NODES_NODENAME-private) 20 | # Attr struct: {name = $AWS_EXT_NODES_NODENAME; publicKey = $WG_PUBKEY;} 21 | explorerActiveBackends = [ 22 | # {name = "explorer-1"; publicKey = "81yzO/clOEPyRiBXNfVIEQqdcr/QrnA5fhIEJym3MxI="; wgIp = "192.168.254.1";} 23 | # {name = "explorer-2"; publicKey = "qs1gZ5UY+u00byONElCW7bZ37Kxt6+pr865cN+bhBnI="; wgIp = "192.168.254.2";} 24 | ]; 25 | 26 | explorerRosettaActiveBackends = [ 27 | # "explorer-1" 28 | # "explorer-2" 29 | ]; 30 | 31 | smashHostName = "smash.cardano-mainnet.iohk.io"; 32 | 33 | # Mainnet auxillary configuration parameters 34 | smashDelistedPools = [ 35 | "00a6461d1561987241f41c34d42c5c5830a11510d3007a32d33f007e" 36 | "b6f665ef4d02abc5ce551f3565ada97d870d603c724ba791c7975a6b" 37 | "413b0496a93ff4ef5d7436828e9764d37778d74d60a62451cfbed057" 38 | "ce2e5bbae0caa514670d63cfdad3123a5d32cf7c37df87add5a0f75f" 39 | "2b830258888a09e846b63474c642ad4e18aecd08dafb1f2a4d653e80" 40 | "027a08f49ad5ece08e3a1575fb9cd8e8d7cf3b7815807a20b1a715f1" 41 | "4eb1fac09251f8af19ad6b7e06b71cbad09dbe896b481e4670fe565d" 42 | "bf44d3187cbdd8874dca1f714a6107beea642753228490bc02c8e038" 43 | "00429f0a3e8c48d644a9b45babd09b86c367efe745a35b31f10e859f" 44 | "8bc067247b8a85500d40d7bb78afd4de6a5fed2cfcc82c9b9c2fa8a2" 45 | "e7e18f2050fa307fc9405f1d517760e894f8fbdf41a9b1b280571b38" 46 | "27f4e3c309659f824026893b811dd6e70332881867cb2cba4974191c" 47 | "c73186434c6fc6676bd67304d34518fc6fd7d5eaddaf78641b1e7dcf" 48 | "2064da38531dad327135edd98003032cefa059c4c8c50c2b0440c63d" 49 | "d9df218f8099261e019bdd304b9a40228070ce61272af835ea13d161" 50 | "d7d56e1703630780176cf944a77b7829b4ba97888fa9a32468011985" 51 | "82e5cb6e4b443c36b087e6218a5629291585d35083ce2cb625506e1f" 52 | "0e76c44520b9d7f2e211eccd82de49350288368802c7aaa72a13c3fa" 53 | "d471e981d54a7f60496f9239d2d706db7a71df8517025f478c112e3e" 54 | "f537b3a5ac2ecdc854a535a15f7732632375a0bf2af17dccbe5b422d" 55 | "033fa1cdc17193fa3d549e795591999621e749fd7ef48f7380468d14" 56 | "47e694d52e08b1a65636c07911e7dd4282afbc555bccfda22c3c52f0" 57 | "8e2f5c1e8ca0f70f00a9b17de911af716678f9e2b653728f356c7ef6" 58 | "57ff19460990690bc6a2edfae4dbaaa56ce2fedbcec9b37334d33a1c" 59 | "2d6765748cc86efe862f5abeb0c0271f91d368d300123ecedc078ef2" 60 | "58b5c7e14957e2f32e988440b0e353ff939dc1597f5c8a4674b53d47" 61 | "93932f14ee3117ba4ac119f9f7722f1143d02760cd5328955804ea36" 62 | "40efc97d08315ff9be5898f24af5b8b120669b43027662c3499dd785" 63 | "ae8dbaaa4ebfdba74618653a619d28d58232638ac83ccb5d66edee36" 64 | "78e07590b2a28ca0e90602fb9319e11770b516ec34387c663ebda287" 65 | "718268428577002a004ef37ef62933c21d82e41cd7816da381716291" 66 | ]; 67 | }; 68 | } 69 | -------------------------------------------------------------------------------- /docs/environments/mainnet/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "alonzo-genesis.json", 3 | "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874", 4 | "ApplicationName": "cardano-sl", 5 | "ApplicationVersion": 1, 6 | "ByronGenesisFile": "byron-genesis.json", 7 | "ByronGenesisHash": "5f20df933584822601f9e3f8c024eb5eb252fe8cefb24d1317dc3d432e940ebb", 8 | "ConwayGenesisFile": "conway-genesis.json", 9 | "ConwayGenesisHash": "f28f1c1280ea0d32f8cd3143e268650d6c1a8e221522ce4a7d20d62fc09783e1", 10 | "LastKnownBlockVersion-Alt": 0, 11 | "LastKnownBlockVersion-Major": 3, 12 | "LastKnownBlockVersion-Minor": 0, 13 | "MaxKnownMajorProtocolVersion": 2, 14 | "Protocol": "Cardano", 15 | "RequiresNetworkMagic": "RequiresNoMagic", 16 | "ShelleyGenesisFile": "shelley-genesis.json", 17 | "ShelleyGenesisHash": "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81", 18 | "TraceAcceptPolicy": true, 19 | "TraceBlockFetchClient": false, 20 | "TraceBlockFetchDecisions": false, 21 | "TraceBlockFetchProtocol": false, 22 | "TraceBlockFetchProtocolSerialised": false, 23 | "TraceBlockFetchServer": false, 24 | "TraceChainDb": true, 25 | "TraceChainSyncBlockServer": false, 26 | "TraceChainSyncClient": false, 27 | "TraceChainSyncHeaderServer": false, 28 | "TraceChainSyncProtocol": false, 29 | "TraceConnectionManager": true, 30 | "TraceDNSResolver": true, 31 | "TraceDNSSubscription": true, 32 | "TraceDiffusionInitialization": true, 33 | "TraceErrorPolicy": true, 34 | "TraceForge": true, 35 | "TraceHandshake": false, 36 | "TraceInboundGovernor": true, 37 | "TraceIpSubscription": true, 38 | "TraceLedgerPeers": true, 39 | "TraceLocalChainSyncProtocol": false, 40 | "TraceLocalErrorPolicy": true, 41 | "TraceLocalHandshake": false, 42 | "TraceLocalRootPeers": true, 43 | "TraceLocalTxSubmissionProtocol": false, 44 | "TraceLocalTxSubmissionServer": false, 45 | "TraceMempool": false, 46 | "TraceMux": false, 47 | "TracePeerSelection": true, 48 | "TracePeerSelectionActions": true, 49 | "TracePublicRootPeers": true, 50 | "TraceServer": true, 51 | "TraceTxInbound": false, 52 | "TraceTxOutbound": false, 53 | "TraceTxSubmissionProtocol": false, 54 | "TracingVerbosity": "NormalVerbosity", 55 | "TurnOnLogMetrics": true, 56 | "TurnOnLogging": true, 57 | "defaultBackends": [ 58 | "KatipBK" 59 | ], 60 | "defaultScribes": [ 61 | [ 62 | "StdoutSK", 63 | "stdout" 64 | ] 65 | ], 66 | "hasEKG": 12788, 67 | "hasPrometheus": [ 68 | "127.0.0.1", 69 | 12798 70 | ], 71 | "minSeverity": "Info", 72 | "options": { 73 | "mapBackends": { 74 | "cardano.node.metrics": [ 75 | "EKGViewBK" 76 | ], 77 | "cardano.node.resources": [ 78 | "EKGViewBK" 79 | ] 80 | }, 81 | "mapSubtrace": { 82 | "cardano.node.metrics": { 83 | "subtrace": "Neutral" 84 | } 85 | } 86 | }, 87 | "rotation": { 88 | "rpKeepFilesNum": 10, 89 | "rpLogLimitBytes": 5000000, 90 | "rpMaxAgeHours": 24 91 | }, 92 | "setupBackends": [ 93 | "KatipBK" 94 | ], 95 | "setupScribes": [ 96 | { 97 | "scFormat": "ScText", 98 | "scKind": "StdoutSK", 99 | "scName": "stdout", 100 | "scRotation": null 101 | } 102 | ] 103 | } 104 | -------------------------------------------------------------------------------- /nix/automation/devshells.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | cell, 4 | }: let 5 | inherit (inputs) capsules bitte-cells bitte deploy-rs nixpkgs; 6 | inherit (inputs.std) std; 7 | inherit (inputs.std.lib) dev; 8 | inherit (inputs.cells) cardano; 9 | 10 | # FIXME: this is a work around just to get access 11 | # to 'awsAutoScalingGroups' 12 | # TODO: std ize bitte properly to make this interface nicer 13 | bitte' = inputs.bitte.lib.mkBitteStack { 14 | inherit inputs; 15 | inherit (inputs) self; 16 | domain = "world.dev.cardano.org"; 17 | bitteProfile = inputs.cells.metal.bitteProfile.default; 18 | hydrationProfile = inputs.cells.cloud.hydrationProfiles.default; 19 | deploySshKey = "not-a-key"; 20 | }; 21 | 22 | cardanoWorld = { 23 | extraModulesPath, 24 | pkgs, 25 | ... 26 | }: { 27 | name = nixpkgs.lib.mkForce "Cardano World"; 28 | imports = [ 29 | std.devshellProfiles.default 30 | bitte.devshellModule 31 | ]; 32 | bitte = { 33 | domain = "world.dev.cardano.org"; 34 | cluster = "cardano"; 35 | namespace = "preview"; 36 | provider = "AWS"; 37 | cert = null; 38 | aws_profile = "cardano"; 39 | aws_region = "eu-central-1"; 40 | aws_autoscaling_groups = 41 | bitte'.clusters.cardano._proto.config.cluster.awsAutoScalingGroups; 42 | }; 43 | }; 44 | 45 | # To ensure the hashistack bins in use on cli are version matched to deployed binary versions. 46 | # Otherwise, the default devshell-capsules are not necessarily version consistent with what is deployed across all clusters. 47 | # Utilized where capsules.cloud is included in the devshell. 48 | commands = [ 49 | {category = "hashibins"; package = nixpkgs.lib.hiPrio bitte.legacyPackages.x86_64-linux.consul;} 50 | {category = "hashibins"; package = nixpkgs.lib.hiPrio bitte.legacyPackages.x86_64-linux.nomad;} 51 | {category = "hashibins"; package = nixpkgs.lib.hiPrio bitte.legacyPackages.x86_64-linux.vault-bin;} 52 | ]; 53 | in { 54 | dev = dev.mkShell { 55 | inherit commands; 56 | imports = [ 57 | cardanoWorld 58 | capsules.base 59 | capsules.cloud 60 | capsules.integrations 61 | inputs.cells.cardano.devshellProfiles.dev 62 | inputs.cells.cardano.devshellProfiles.world 63 | ]; 64 | }; 65 | devops = dev.mkShell { 66 | inherit commands; 67 | imports = [ 68 | cardanoWorld 69 | capsules.base 70 | capsules.cloud 71 | capsules.integrations 72 | inputs.cells.cardano.devshellProfiles.world 73 | ]; 74 | }; 75 | ops = dev.mkShell { 76 | imports = [ 77 | cardanoWorld 78 | capsules.base 79 | capsules.cloud 80 | capsules.metal 81 | capsules.integrations 82 | capsules.tools 83 | bitte-cells.patroni.devshellProfiles.default 84 | inputs.cells.cardano.devshellProfiles.world 85 | ]; 86 | commands = commands ++ [ 87 | {category = "metal"; package = deploy-rs.defaultPackage;} 88 | ]; 89 | }; 90 | monorepo = dev.mkShell { 91 | imports = [ 92 | cardanoWorld 93 | inputs.cells.cardano.devshellProfiles.monorepo 94 | ]; 95 | }; 96 | minimal = dev.mkShell { 97 | imports = [ 98 | cardanoWorld 99 | inputs.cells.cardano.devshellProfiles.minimal 100 | ]; 101 | }; 102 | } 103 | -------------------------------------------------------------------------------- /nix/cloud/kv/consul/cardano/mainnet.json: -------------------------------------------------------------------------------- 1 | { 2 | "nodeConfig": { 3 | "AlonzoGenesisFile": "alonzo-genesis.json", 4 | "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874", 5 | "ApplicationName": "cardano-sl", 6 | "ApplicationVersion": 1, 7 | "ByronGenesisFile": "byron-genesis.json", 8 | "ByronGenesisHash": "5f20df933584822601f9e3f8c024eb5eb252fe8cefb24d1317dc3d432e940ebb", 9 | "LastKnownBlockVersion-Alt": 0, 10 | "LastKnownBlockVersion-Major": 3, 11 | "LastKnownBlockVersion-Minor": 0, 12 | "MaxKnownMajorProtocolVersion": 2, 13 | "Protocol": "Cardano", 14 | "RequiresNetworkMagic": "RequiresNoMagic", 15 | "ShelleyGenesisFile": "shelley-genesis.json", 16 | "ShelleyGenesisHash": "1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81", 17 | "TraceAcceptPolicy": true, 18 | "TraceBlockFetchClient": false, 19 | "TraceBlockFetchDecisions": false, 20 | "TraceBlockFetchProtocol": false, 21 | "TraceBlockFetchProtocolSerialised": false, 22 | "TraceBlockFetchServer": false, 23 | "TraceChainDb": true, 24 | "TraceChainSyncBlockServer": false, 25 | "TraceChainSyncClient": false, 26 | "TraceChainSyncHeaderServer": false, 27 | "TraceChainSyncProtocol": false, 28 | "TraceConnectionManager": true, 29 | "TraceDNSResolver": true, 30 | "TraceDNSSubscription": true, 31 | "TraceDiffusionInitialization": true, 32 | "TraceErrorPolicy": true, 33 | "TraceForge": true, 34 | "TraceHandshake": false, 35 | "TraceInboundGovernor": true, 36 | "TraceIpSubscription": true, 37 | "TraceLedgerPeers": true, 38 | "TraceLocalChainSyncProtocol": false, 39 | "TraceLocalErrorPolicy": true, 40 | "TraceLocalHandshake": false, 41 | "TraceLocalRootPeers": true, 42 | "TraceLocalTxSubmissionProtocol": false, 43 | "TraceLocalTxSubmissionServer": false, 44 | "TraceMempool": true, 45 | "TraceMux": false, 46 | "TracePeerSelection": true, 47 | "TracePeerSelectionActions": true, 48 | "TracePublicRootPeers": true, 49 | "TraceServer": true, 50 | "TraceTxInbound": false, 51 | "TraceTxOutbound": false, 52 | "TraceTxSubmissionProtocol": false, 53 | "TracingVerbosity": "NormalVerbosity", 54 | "TurnOnLogMetrics": true, 55 | "TurnOnLogging": true, 56 | "defaultBackends": [ 57 | "KatipBK" 58 | ], 59 | "defaultScribes": [ 60 | [ 61 | "StdoutSK", 62 | "stdout" 63 | ] 64 | ], 65 | "hasEKG": 12788, 66 | "hasPrometheus": [ 67 | "127.0.0.1", 68 | 12798 69 | ], 70 | "minSeverity": "Info", 71 | "options": { 72 | "mapBackends": { 73 | "cardano.node.metrics": [ 74 | "EKGViewBK" 75 | ], 76 | "cardano.node.resources": [ 77 | "EKGViewBK" 78 | ] 79 | }, 80 | "mapSubtrace": { 81 | "cardano.node.metrics": { 82 | "subtrace": "Neutral" 83 | } 84 | } 85 | }, 86 | "rotation": { 87 | "rpKeepFilesNum": 10, 88 | "rpLogLimitBytes": 5000000, 89 | "rpMaxAgeHours": 24 90 | }, 91 | "setupBackends": [ 92 | "KatipBK" 93 | ], 94 | "setupScribes": [ 95 | { 96 | "scFormat": "ScText", 97 | "scKind": "StdoutSK", 98 | "scName": "stdout", 99 | "scRotation": null 100 | } 101 | ] 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /docs/environments/preprod/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "alonzo-genesis.json", 3 | "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874", 4 | "ApplicationName": "cardano-sl", 5 | "ApplicationVersion": 0, 6 | "ByronGenesisFile": "byron-genesis.json", 7 | "ByronGenesisHash": "d4b8de7a11d929a323373cbab6c1a9bdc931beffff11db111cf9d57356ee1937", 8 | "ConwayGenesisFile": "conway-genesis.json", 9 | "ConwayGenesisHash": "f28f1c1280ea0d32f8cd3143e268650d6c1a8e221522ce4a7d20d62fc09783e1", 10 | "EnableP2P": true, 11 | "LastKnownBlockVersion-Alt": 0, 12 | "LastKnownBlockVersion-Major": 2, 13 | "LastKnownBlockVersion-Minor": 0, 14 | "Protocol": "Cardano", 15 | "RequiresNetworkMagic": "RequiresMagic", 16 | "ShelleyGenesisFile": "shelley-genesis.json", 17 | "ShelleyGenesisHash": "162d29c4e1cf6b8a84f2d692e67a3ac6bc7851bc3e6e4afe64d15778bed8bd86", 18 | "TargetNumberOfActivePeers": 20, 19 | "TargetNumberOfEstablishedPeers": 50, 20 | "TargetNumberOfKnownPeers": 100, 21 | "TargetNumberOfRootPeers": 100, 22 | "TraceAcceptPolicy": true, 23 | "TraceBlockFetchClient": false, 24 | "TraceBlockFetchDecisions": false, 25 | "TraceBlockFetchProtocol": false, 26 | "TraceBlockFetchProtocolSerialised": false, 27 | "TraceBlockFetchServer": false, 28 | "TraceChainDb": true, 29 | "TraceChainSyncBlockServer": false, 30 | "TraceChainSyncClient": false, 31 | "TraceChainSyncHeaderServer": false, 32 | "TraceChainSyncProtocol": false, 33 | "TraceConnectionManager": true, 34 | "TraceDNSResolver": true, 35 | "TraceDNSSubscription": true, 36 | "TraceDiffusionInitialization": true, 37 | "TraceErrorPolicy": true, 38 | "TraceForge": true, 39 | "TraceHandshake": false, 40 | "TraceInboundGovernor": true, 41 | "TraceIpSubscription": true, 42 | "TraceLedgerPeers": true, 43 | "TraceLocalChainSyncProtocol": false, 44 | "TraceLocalErrorPolicy": true, 45 | "TraceLocalHandshake": false, 46 | "TraceLocalRootPeers": true, 47 | "TraceLocalTxSubmissionProtocol": false, 48 | "TraceLocalTxSubmissionServer": false, 49 | "TraceMempool": true, 50 | "TraceMux": false, 51 | "TracePeerSelection": true, 52 | "TracePeerSelectionActions": true, 53 | "TracePublicRootPeers": true, 54 | "TraceServer": true, 55 | "TraceTxInbound": false, 56 | "TraceTxOutbound": false, 57 | "TraceTxSubmissionProtocol": false, 58 | "TracingVerbosity": "NormalVerbosity", 59 | "TurnOnLogMetrics": true, 60 | "TurnOnLogging": true, 61 | "defaultBackends": [ 62 | "KatipBK" 63 | ], 64 | "defaultScribes": [ 65 | [ 66 | "StdoutSK", 67 | "stdout" 68 | ] 69 | ], 70 | "hasEKG": 12788, 71 | "hasPrometheus": [ 72 | "127.0.0.1", 73 | 12798 74 | ], 75 | "minSeverity": "Info", 76 | "options": { 77 | "mapBackends": { 78 | "cardano.node.metrics": [ 79 | "EKGViewBK" 80 | ], 81 | "cardano.node.resources": [ 82 | "EKGViewBK" 83 | ] 84 | }, 85 | "mapSubtrace": { 86 | "cardano.node.metrics": { 87 | "subtrace": "Neutral" 88 | } 89 | } 90 | }, 91 | "rotation": { 92 | "rpKeepFilesNum": 10, 93 | "rpLogLimitBytes": 5000000, 94 | "rpMaxAgeHours": 24 95 | }, 96 | "setupBackends": [ 97 | "KatipBK" 98 | ], 99 | "setupScribes": [ 100 | { 101 | "scFormat": "ScText", 102 | "scKind": "StdoutSK", 103 | "scName": "stdout", 104 | "scRotation": null 105 | } 106 | ] 107 | } 108 | -------------------------------------------------------------------------------- /docs/environments/private/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "alonzo-genesis.json", 3 | "AlonzoGenesisHash": "8bedcaea62107d8a79ed5293b0027b3f8706a4bc2422f33380cb1fd01c6fa6ec", 4 | "ByronGenesisFile": "byron-genesis.json", 5 | "ByronGenesisHash": "1c49093e43757a7f5d55791ee8682d2681e7a291b10dadc663ac1889b3f16984", 6 | "ConwayGenesisFile": "conway-genesis.json", 7 | "ConwayGenesisHash": "89dd23dc6a020afa0c7521fe52fe14e38d494129933a3604154a3acfa4ac16e4", 8 | "EnableP2P": true, 9 | "ExperimentalHardForksEnabled": true, 10 | "ExperimentalProtocolsEnabled": true, 11 | "LastKnownBlockVersion-Alt": 0, 12 | "LastKnownBlockVersion-Major": 3, 13 | "LastKnownBlockVersion-Minor": 1, 14 | "Protocol": "Cardano", 15 | "RequiresNetworkMagic": "RequiresMagic", 16 | "ShelleyGenesisFile": "shelley-genesis.json", 17 | "ShelleyGenesisHash": "136177de30fc5d431cc80f5789089486c13629e589dd705aa4254f765a84582b", 18 | "TargetNumberOfActivePeers": 20, 19 | "TargetNumberOfEstablishedPeers": 50, 20 | "TargetNumberOfKnownPeers": 100, 21 | "TargetNumberOfRootPeers": 100, 22 | "TestAllegraHardForkAtEpoch": 0, 23 | "TestAlonzoHardForkAtEpoch": 0, 24 | "TestMaryHardForkAtEpoch": 0, 25 | "TestShelleyHardForkAtEpoch": 0, 26 | "TraceAcceptPolicy": true, 27 | "TraceBlockFetchClient": false, 28 | "TraceBlockFetchDecisions": false, 29 | "TraceBlockFetchProtocol": false, 30 | "TraceBlockFetchProtocolSerialised": false, 31 | "TraceBlockFetchServer": false, 32 | "TraceChainDb": true, 33 | "TraceChainSyncBlockServer": false, 34 | "TraceChainSyncClient": false, 35 | "TraceChainSyncHeaderServer": false, 36 | "TraceChainSyncProtocol": false, 37 | "TraceConnectionManager": true, 38 | "TraceDNSResolver": true, 39 | "TraceDNSSubscription": true, 40 | "TraceDiffusionInitialization": true, 41 | "TraceErrorPolicy": true, 42 | "TraceForge": true, 43 | "TraceHandshake": true, 44 | "TraceInboundGovernor": true, 45 | "TraceIpSubscription": true, 46 | "TraceLedgerPeers": true, 47 | "TraceLocalChainSyncProtocol": false, 48 | "TraceLocalConnectionManager": true, 49 | "TraceLocalErrorPolicy": true, 50 | "TraceLocalHandshake": true, 51 | "TraceLocalRootPeers": true, 52 | "TraceLocalTxSubmissionProtocol": false, 53 | "TraceLocalTxSubmissionServer": false, 54 | "TraceMempool": true, 55 | "TraceMux": false, 56 | "TracePeerSelection": true, 57 | "TracePeerSelectionActions": true, 58 | "TracePublicRootPeers": true, 59 | "TraceServer": true, 60 | "TraceTxInbound": false, 61 | "TraceTxOutbound": false, 62 | "TraceTxSubmissionProtocol": false, 63 | "TracingVerbosity": "NormalVerbosity", 64 | "TurnOnLogMetrics": true, 65 | "TurnOnLogging": true, 66 | "defaultBackends": [ 67 | "KatipBK" 68 | ], 69 | "defaultScribes": [ 70 | [ 71 | "StdoutSK", 72 | "stdout" 73 | ] 74 | ], 75 | "hasEKG": 12788, 76 | "hasPrometheus": [ 77 | "127.0.0.1", 78 | 12798 79 | ], 80 | "minSeverity": "Info", 81 | "options": { 82 | "mapBackends": { 83 | "cardano.node.metrics": [ 84 | "EKGViewBK" 85 | ], 86 | "cardano.node.resources": [ 87 | "EKGViewBK" 88 | ] 89 | }, 90 | "mapSubtrace": { 91 | "cardano.node.metrics": { 92 | "subtrace": "Neutral" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "KatipBK" 103 | ], 104 | "setupScribes": [ 105 | { 106 | "scFormat": "ScText", 107 | "scKind": "StdoutSK", 108 | "scName": "stdout", 109 | "scRotation": null 110 | } 111 | ] 112 | } 113 | -------------------------------------------------------------------------------- /docs/environments/sanchonet/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "alonzo-genesis.json", 3 | "AlonzoGenesisHash": "8bedcaea62107d8a79ed5293b0027b3f8706a4bc2422f33380cb1fd01c6fa6ec", 4 | "ByronGenesisFile": "byron-genesis.json", 5 | "ByronGenesisHash": "785eb88427e136378a15b0a152a8bfbeec7a611529ccda29c43a1e60ffb48eaa", 6 | "ConwayGenesisFile": "conway-genesis.json", 7 | "ConwayGenesisHash": "89dd23dc6a020afa0c7521fe52fe14e38d494129933a3604154a3acfa4ac16e4", 8 | "EnableP2P": true, 9 | "ExperimentalHardForksEnabled": true, 10 | "ExperimentalProtocolsEnabled": true, 11 | "LastKnownBlockVersion-Alt": 0, 12 | "LastKnownBlockVersion-Major": 3, 13 | "LastKnownBlockVersion-Minor": 1, 14 | "Protocol": "Cardano", 15 | "RequiresNetworkMagic": "RequiresMagic", 16 | "ShelleyGenesisFile": "shelley-genesis.json", 17 | "ShelleyGenesisHash": "f94457ec45a0c6773057a529533cf7ccf746cb44dabd56ae970e1dbfb55bfdb2", 18 | "TargetNumberOfActivePeers": 20, 19 | "TargetNumberOfEstablishedPeers": 50, 20 | "TargetNumberOfKnownPeers": 100, 21 | "TargetNumberOfRootPeers": 100, 22 | "TestAllegraHardForkAtEpoch": 0, 23 | "TestAlonzoHardForkAtEpoch": 0, 24 | "TestMaryHardForkAtEpoch": 0, 25 | "TestShelleyHardForkAtEpoch": 0, 26 | "TraceAcceptPolicy": true, 27 | "TraceBlockFetchClient": false, 28 | "TraceBlockFetchDecisions": false, 29 | "TraceBlockFetchProtocol": false, 30 | "TraceBlockFetchProtocolSerialised": false, 31 | "TraceBlockFetchServer": false, 32 | "TraceChainDb": true, 33 | "TraceChainSyncBlockServer": false, 34 | "TraceChainSyncClient": false, 35 | "TraceChainSyncHeaderServer": false, 36 | "TraceChainSyncProtocol": false, 37 | "TraceConnectionManager": true, 38 | "TraceDNSResolver": true, 39 | "TraceDNSSubscription": true, 40 | "TraceDiffusionInitialization": true, 41 | "TraceErrorPolicy": true, 42 | "TraceForge": true, 43 | "TraceHandshake": true, 44 | "TraceInboundGovernor": true, 45 | "TraceIpSubscription": true, 46 | "TraceLedgerPeers": true, 47 | "TraceLocalChainSyncProtocol": false, 48 | "TraceLocalConnectionManager": true, 49 | "TraceLocalErrorPolicy": true, 50 | "TraceLocalHandshake": true, 51 | "TraceLocalRootPeers": true, 52 | "TraceLocalTxSubmissionProtocol": false, 53 | "TraceLocalTxSubmissionServer": false, 54 | "TraceMempool": true, 55 | "TraceMux": false, 56 | "TracePeerSelection": true, 57 | "TracePeerSelectionActions": true, 58 | "TracePublicRootPeers": true, 59 | "TraceServer": true, 60 | "TraceTxInbound": false, 61 | "TraceTxOutbound": false, 62 | "TraceTxSubmissionProtocol": false, 63 | "TracingVerbosity": "NormalVerbosity", 64 | "TurnOnLogMetrics": true, 65 | "TurnOnLogging": true, 66 | "defaultBackends": [ 67 | "KatipBK" 68 | ], 69 | "defaultScribes": [ 70 | [ 71 | "StdoutSK", 72 | "stdout" 73 | ] 74 | ], 75 | "hasEKG": 12788, 76 | "hasPrometheus": [ 77 | "127.0.0.1", 78 | 12798 79 | ], 80 | "minSeverity": "Info", 81 | "options": { 82 | "mapBackends": { 83 | "cardano.node.metrics": [ 84 | "EKGViewBK" 85 | ], 86 | "cardano.node.resources": [ 87 | "EKGViewBK" 88 | ] 89 | }, 90 | "mapSubtrace": { 91 | "cardano.node.metrics": { 92 | "subtrace": "Neutral" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "KatipBK" 103 | ], 104 | "setupScribes": [ 105 | { 106 | "scFormat": "ScText", 107 | "scKind": "StdoutSK", 108 | "scName": "stdout", 109 | "scRotation": null 110 | } 111 | ] 112 | } 113 | -------------------------------------------------------------------------------- /docs/environments/shelley-qa/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "alonzo-genesis.json", 3 | "AlonzoGenesisHash": "8bedcaea62107d8a79ed5293b0027b3f8706a4bc2422f33380cb1fd01c6fa6ec", 4 | "ByronGenesisFile": "byron-genesis.json", 5 | "ByronGenesisHash": "273cd12237b98d02f108c9c50063d29a8d1d7f32e9a75ade7cd48e08b3070258", 6 | "ConwayGenesisFile": "conway-genesis.json", 7 | "ConwayGenesisHash": "89dd23dc6a020afa0c7521fe52fe14e38d494129933a3604154a3acfa4ac16e4", 8 | "EnableP2P": true, 9 | "ExperimentalHardForksEnabled": true, 10 | "ExperimentalProtocolsEnabled": true, 11 | "LastKnownBlockVersion-Alt": 0, 12 | "LastKnownBlockVersion-Major": 3, 13 | "LastKnownBlockVersion-Minor": 1, 14 | "Protocol": "Cardano", 15 | "RequiresNetworkMagic": "RequiresMagic", 16 | "ShelleyGenesisFile": "shelley-genesis.json", 17 | "ShelleyGenesisHash": "73a9f6bdb0aa97f5e63190a6f14a702bd64a21f2bec831cbfc28f6037128b952", 18 | "TargetNumberOfActivePeers": 20, 19 | "TargetNumberOfEstablishedPeers": 50, 20 | "TargetNumberOfKnownPeers": 100, 21 | "TargetNumberOfRootPeers": 100, 22 | "TestAllegraHardForkAtEpoch": 0, 23 | "TestAlonzoHardForkAtEpoch": 0, 24 | "TestMaryHardForkAtEpoch": 0, 25 | "TestShelleyHardForkAtEpoch": 0, 26 | "TraceAcceptPolicy": true, 27 | "TraceBlockFetchClient": false, 28 | "TraceBlockFetchDecisions": false, 29 | "TraceBlockFetchProtocol": false, 30 | "TraceBlockFetchProtocolSerialised": false, 31 | "TraceBlockFetchServer": false, 32 | "TraceChainDb": true, 33 | "TraceChainSyncBlockServer": false, 34 | "TraceChainSyncClient": false, 35 | "TraceChainSyncHeaderServer": false, 36 | "TraceChainSyncProtocol": false, 37 | "TraceConnectionManager": true, 38 | "TraceDNSResolver": true, 39 | "TraceDNSSubscription": true, 40 | "TraceDiffusionInitialization": true, 41 | "TraceErrorPolicy": true, 42 | "TraceForge": true, 43 | "TraceHandshake": true, 44 | "TraceInboundGovernor": true, 45 | "TraceIpSubscription": true, 46 | "TraceLedgerPeers": true, 47 | "TraceLocalChainSyncProtocol": false, 48 | "TraceLocalConnectionManager": true, 49 | "TraceLocalErrorPolicy": true, 50 | "TraceLocalHandshake": true, 51 | "TraceLocalRootPeers": true, 52 | "TraceLocalTxSubmissionProtocol": false, 53 | "TraceLocalTxSubmissionServer": false, 54 | "TraceMempool": true, 55 | "TraceMux": false, 56 | "TracePeerSelection": true, 57 | "TracePeerSelectionActions": true, 58 | "TracePublicRootPeers": true, 59 | "TraceServer": true, 60 | "TraceTxInbound": false, 61 | "TraceTxOutbound": false, 62 | "TraceTxSubmissionProtocol": false, 63 | "TracingVerbosity": "NormalVerbosity", 64 | "TurnOnLogMetrics": true, 65 | "TurnOnLogging": true, 66 | "defaultBackends": [ 67 | "KatipBK" 68 | ], 69 | "defaultScribes": [ 70 | [ 71 | "StdoutSK", 72 | "stdout" 73 | ] 74 | ], 75 | "hasEKG": 12788, 76 | "hasPrometheus": [ 77 | "127.0.0.1", 78 | 12798 79 | ], 80 | "minSeverity": "Debug", 81 | "options": { 82 | "mapBackends": { 83 | "cardano.node.metrics": [ 84 | "EKGViewBK" 85 | ], 86 | "cardano.node.resources": [ 87 | "EKGViewBK" 88 | ] 89 | }, 90 | "mapSubtrace": { 91 | "cardano.node.metrics": { 92 | "subtrace": "Neutral" 93 | } 94 | } 95 | }, 96 | "rotation": { 97 | "rpKeepFilesNum": 10, 98 | "rpLogLimitBytes": 5000000, 99 | "rpMaxAgeHours": 24 100 | }, 101 | "setupBackends": [ 102 | "KatipBK" 103 | ], 104 | "setupScribes": [ 105 | { 106 | "scFormat": "ScText", 107 | "scKind": "StdoutSK", 108 | "scName": "stdout", 109 | "scRotation": null 110 | } 111 | ] 112 | } 113 | -------------------------------------------------------------------------------- /docs/environments/preview/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "alonzo-genesis.json", 3 | "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874", 4 | "ApplicationName": "cardano-sl", 5 | "ApplicationVersion": 0, 6 | "ByronGenesisFile": "byron-genesis.json", 7 | "ByronGenesisHash": "83de1d7302569ad56cf9139a41e2e11346d4cb4a31c00142557b6ab3fa550761", 8 | "ConwayGenesisFile": "conway-genesis.json", 9 | "ConwayGenesisHash": "f28f1c1280ea0d32f8cd3143e268650d6c1a8e221522ce4a7d20d62fc09783e1", 10 | "EnableP2P": true, 11 | "ExperimentalHardForksEnabled": false, 12 | "ExperimentalProtocolsEnabled": false, 13 | "LastKnownBlockVersion-Alt": 0, 14 | "LastKnownBlockVersion-Major": 3, 15 | "LastKnownBlockVersion-Minor": 1, 16 | "Protocol": "Cardano", 17 | "RequiresNetworkMagic": "RequiresMagic", 18 | "ShelleyGenesisFile": "shelley-genesis.json", 19 | "ShelleyGenesisHash": "363498d1024f84bb39d3fa9593ce391483cb40d479b87233f868d6e57c3a400d", 20 | "TargetNumberOfActivePeers": 20, 21 | "TargetNumberOfEstablishedPeers": 50, 22 | "TargetNumberOfKnownPeers": 100, 23 | "TargetNumberOfRootPeers": 100, 24 | "TestAllegraHardForkAtEpoch": 0, 25 | "TestAlonzoHardForkAtEpoch": 0, 26 | "TestMaryHardForkAtEpoch": 0, 27 | "TestShelleyHardForkAtEpoch": 0, 28 | "TraceAcceptPolicy": true, 29 | "TraceBlockFetchClient": false, 30 | "TraceBlockFetchDecisions": false, 31 | "TraceBlockFetchProtocol": false, 32 | "TraceBlockFetchProtocolSerialised": false, 33 | "TraceBlockFetchServer": false, 34 | "TraceChainDb": true, 35 | "TraceChainSyncBlockServer": false, 36 | "TraceChainSyncClient": false, 37 | "TraceChainSyncHeaderServer": false, 38 | "TraceChainSyncProtocol": false, 39 | "TraceConnectionManager": true, 40 | "TraceDNSResolver": true, 41 | "TraceDNSSubscription": true, 42 | "TraceDiffusionInitialization": true, 43 | "TraceErrorPolicy": true, 44 | "TraceForge": true, 45 | "TraceHandshake": false, 46 | "TraceInboundGovernor": true, 47 | "TraceIpSubscription": true, 48 | "TraceLedgerPeers": true, 49 | "TraceLocalChainSyncProtocol": false, 50 | "TraceLocalErrorPolicy": true, 51 | "TraceLocalHandshake": false, 52 | "TraceLocalRootPeers": true, 53 | "TraceLocalTxSubmissionProtocol": false, 54 | "TraceLocalTxSubmissionServer": false, 55 | "TraceMempool": true, 56 | "TraceMux": false, 57 | "TracePeerSelection": true, 58 | "TracePeerSelectionActions": true, 59 | "TracePublicRootPeers": true, 60 | "TraceServer": true, 61 | "TraceTxInbound": false, 62 | "TraceTxOutbound": false, 63 | "TraceTxSubmissionProtocol": false, 64 | "TracingVerbosity": "NormalVerbosity", 65 | "TurnOnLogMetrics": true, 66 | "TurnOnLogging": true, 67 | "defaultBackends": [ 68 | "KatipBK" 69 | ], 70 | "defaultScribes": [ 71 | [ 72 | "StdoutSK", 73 | "stdout" 74 | ] 75 | ], 76 | "hasEKG": 12788, 77 | "hasPrometheus": [ 78 | "127.0.0.1", 79 | 12798 80 | ], 81 | "minSeverity": "Info", 82 | "options": { 83 | "mapBackends": { 84 | "cardano.node.metrics": [ 85 | "EKGViewBK" 86 | ], 87 | "cardano.node.resources": [ 88 | "EKGViewBK" 89 | ] 90 | }, 91 | "mapSubtrace": { 92 | "cardano.node.metrics": { 93 | "subtrace": "Neutral" 94 | } 95 | } 96 | }, 97 | "rotation": { 98 | "rpKeepFilesNum": 10, 99 | "rpLogLimitBytes": 5000000, 100 | "rpMaxAgeHours": 24 101 | }, 102 | "setupBackends": [ 103 | "KatipBK" 104 | ], 105 | "setupScribes": [ 106 | { 107 | "scFormat": "ScText", 108 | "scKind": "StdoutSK", 109 | "scName": "stdout", 110 | "scRotation": null 111 | } 112 | ] 113 | } 114 | --------------------------------------------------------------------------------