├── .github ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ ├── docker_bin.yml │ ├── lint.yml │ ├── mithril-latest.yml │ └── premerge.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── .nojekyll ├── Appendix │ ├── RecoverByronWallet.md │ ├── monitoring.md │ └── postgres.md ├── Build │ ├── dbsync.md │ ├── grest-changelog.md │ ├── grest.md │ ├── node-cli.md │ ├── offchain-metadata-tools.md │ └── wallet.md ├── Mithril │ └── mithril-overview.md ├── Scripts │ ├── blockperf.md │ ├── cncli.md │ ├── cntools-changelog.md │ ├── cntools-common.md │ ├── cntools.md │ ├── env.md │ ├── gliveview.md │ ├── itnrewards.md │ ├── itnwitness.md │ ├── logmonitor.md │ ├── mithril-client.md │ ├── mithril-relay.md │ ├── mithril-signer.md │ ├── sendalerts.md │ └── topologyupdater.md ├── basics.md ├── build.md ├── catalystf11.md ├── contributors.md ├── docker │ ├── build.md │ ├── docker.md │ ├── imgs │ │ ├── cncli.png │ │ ├── cntools.png │ │ ├── container_splashscreen.png │ │ ├── gLiveView.png │ │ └── gLiveView_peers.png │ ├── run.md │ ├── security.md │ └── tips.md ├── grest-meets.md ├── index.md ├── overrides │ ├── custom.css │ ├── favicon.png │ └── guildicon.png ├── sidebar.md └── upgrade.md ├── files ├── configs │ ├── guild │ │ ├── alonzo-genesis.json │ │ ├── byron-genesis.json │ │ ├── config.json │ │ ├── conway-genesis.json │ │ ├── db-sync-config.json │ │ ├── shelley-genesis.json │ │ └── topology.json │ ├── mainnet │ │ ├── alonzo-genesis.json │ │ ├── byron-genesis.json │ │ ├── config.json │ │ ├── conway-genesis.json │ │ ├── db-sync-config.json │ │ ├── shelley-genesis.json │ │ └── topology.json │ ├── preprod │ │ ├── alonzo-genesis.json │ │ ├── byron-genesis.json │ │ ├── config.json │ │ ├── conway-genesis.json │ │ ├── db-sync-config.json │ │ ├── shelley-genesis.json │ │ └── topology.json │ ├── preview │ │ ├── alonzo-genesis.json │ │ ├── byron-genesis.json │ │ ├── config.json │ │ ├── conway-genesis.json │ │ ├── db-sync-config.json │ │ ├── shelley-genesis.json │ │ └── topology.json │ └── sanchonet │ │ ├── alonzo-genesis.json │ │ ├── byron-genesis.json │ │ ├── config.json │ │ ├── conway-genesis.json │ │ ├── db-sync-config.json │ │ ├── shelley-genesis.json │ │ └── topology.json ├── docker │ └── node │ │ ├── addons │ │ ├── banner.txt │ │ ├── block_watcher.sh │ │ ├── crontab │ │ ├── entrypoint.sh │ │ ├── healthcheck.sh │ │ ├── ip2loc.sh │ │ ├── promtail │ │ └── promtail.yml │ │ ├── dockerfile_bin │ │ └── release-versions │ │ ├── cardano-cli-latest.txt │ │ ├── cardano-node-latest.txt │ │ └── mithril-latest.txt ├── node-deps.json └── tests │ └── pre-merge │ ├── debian-cabal.containerfile │ ├── debian-guild-deploy.sh.containerfile │ ├── rockylinux-cabal.containerfile │ ├── rockylinux-guild-deploy.sh.containerfile │ ├── ubuntu-cabal.containerfile │ └── ubuntu-guild-deploy.sh.containerfile ├── guild.svg ├── guild_horizontal.png ├── guild_vertical.png └── scripts ├── cnode-helper-scripts ├── blockPerf.sh ├── cabal-build-all.sh ├── cncli.sh ├── cnode.sh ├── cntools.library ├── cntools.sh ├── dbsync.sh ├── deploy-as-systemd.sh ├── env ├── gLiveView.sh ├── guild-deploy.sh ├── logMonitor.sh ├── mithril-client.sh ├── mithril-relay.sh ├── mithril-signer.sh ├── mithril.library ├── ogmios.sh ├── setup_mon.sh ├── submitapi.sh └── topologyUpdater.sh └── grest-helper-scripts ├── checkstatus.sh ├── getmetrics.sh ├── grest-poll.sh └── setup-grest.sh /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Version:** 27 | - OS: [e.g. CentOS 8] 28 | - Product version: [e.g. CNTools 5.0.1] 29 | - Cardano Node version: [e.g. output of `cardano-node version`] 30 | - Network you're connecting to: [output of `jq -r .systemStart $CNODE_HOME/files/genesis.json`] 31 | 32 | **Additional context** 33 | Add any other context about the problem here. 34 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: SH Linter 2 | 3 | on: 4 | # push: 5 | # branches: [ '*' ] 6 | # branches: [ master,alpha ] 7 | pull_request: 8 | branches: [ '*' ] 9 | 10 | jobs: 11 | shlint: 12 | name: Shellcheck 13 | runs-on: ubuntu-latest 14 | steps: 15 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 16 | - uses: actions/checkout@v4 17 | - name: SH Lint Check 18 | uses: ludeeus/action-shellcheck@master 19 | env: 20 | SHELLCHECK_OPTS: -e SC2089 -e SC2090 -e SC2034 21 | with: 22 | scandir: "./scripts" 23 | severity: "warning" 24 | additional_files: "./scripts/cnode-helper-scripts/env, ./scripts/cnode-helper-scripts/cntools.library, ./scripts/cnode-helper-scripts/mithril.library" 25 | jsonlint: 26 | name: JSON and YAML Check 27 | runs-on: ubuntu-latest 28 | steps: 29 | - uses: actions/checkout@v4 30 | - name: JSON/YAML Validate 31 | uses: GrantBirki/json-yaml-validate@v3.2.1 -------------------------------------------------------------------------------- /.github/workflows/mithril-latest.yml: -------------------------------------------------------------------------------- 1 | name: Get latest Mithril release version 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: '0 0 * * *' 6 | jobs: 7 | get-version: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | with: 12 | token: ${{ secrets.REPO_SCOPED_TOKEN }} 13 | fetch-depth: 0 14 | ref: alpha 15 | - name: Fetch Mithril release version 16 | run: | 17 | curl -sL https://api.github.com/repos/input-output-hk/mithril/releases/latest | jq -r '.tag_name' > files/docker/node/release-versions/mithril-latest.txt 18 | - name: Assigns release version 19 | run: | 20 | VERSION=$(cat ./files/docker/node/release-versions/mithril-latest.txt) 21 | - name: Source mithril.library and check upgrade safety 22 | run: | 23 | set -e 24 | . scripts/cnode-helper-scripts/mithril.library workflow 25 | check_mithril_upgrade_safe 26 | echo "MITHRIL_UPGRADE_SAFE=$MITHRIL_UPGRADE_SAFE" >> $GITHUB_ENV 27 | - name: Check for modified files 28 | id: git-check 29 | run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true") 30 | - name: Commit latest release version 31 | if: steps.git-check.outputs.modified == 'true' && env.MITHRIL_UPGRADE_SAFE == 'Y' 32 | run: | 33 | git config --global user.name ${{ secrets.REPO_SCOPED_USER }} 34 | git config --global user.email ${{ secrets.REPO_SCOPED_EMAIL }} 35 | git commit -am "New mithril release version ${VERSION}" 36 | git push -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | book 2 | *.swp 3 | *.bkp 4 | .DS_Store 5 | files/docker/smash/ 6 | .env 7 | files/docker/grest/config/postgres/crontab 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Cardano Community 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Guild Operators' Repository 2 | A place for SPOs to contribute together to the Cardano Ecosystem. 3 | 4 | ## Documentation / Guides 5 | * [Stake Pool Operator](https://cardano-community.github.io/guild-operators) site contains instructions for using various guild tools which simplify various stake-ops (setting up, managing and monitoring pools) for pool operators. Note that the guides are present to help you simplify your tasks - but as an entity responsible for creating blocks on a financial platform, we expect the pre-requisite skillsets before entering the portal: 6 | - Learn about working with architecture, setup and essentials (sysops); 7 | - Understand how to secure your server (secops); 8 | - Be comfortable with working with cardano-cli , and have worked on preview/preprod/guild networks for pool operations without use of wrapper scripts - as an education exercise; 9 | - Read the documentation and disclaimers. The guide and tools only aim to simplify your tasks, it will not try to do everything for you - neither scope best practices. 10 | - We recommend anyone using these instructions to use offline workflow, and *NEVER* have their wallet keys and pool keys to be made available to online servers, as supported by the tools. 11 | 12 | * [Community Support FAQ](https://cardano-community.github.io/support-faq) & how-to guides for use within Cardano ecosystem. This documentation/FAQ contains topics such as Cardano wallets, blockchain explorers, and selecting a pool for delegation to name a few. 13 | 14 | * [Concepts](https://cardano-community.github.io/concepts) is place holder where we can accumulate educative articles explaining basic essentials of blockchain. 15 | 16 | ## Support 17 | The Telegram announcement & support channel is used to announce new releases and changes to the code base. This is also the place to ask general questions regarding the Guild Operators documentation and scripts. 18 | [Telegram Announcement & Support channel](https://t.me/CardanoKoios/9759) 19 | 20 | To report **bugs** and **issues** with scripts and documentation please open a [GitHub Issue](https://github.com/cardano-community/guild-operators/issues/new/choose). 21 | **Feature requests** are best opened as a [discussion thread](https://github.com/cardano-community/guild-operators/discussions/new). 22 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/Appendix/RecoverByronWallet.md: -------------------------------------------------------------------------------- 1 | # Unofficial Instructions for recovering your Byron Era funds on the new Incentivized Shelley Testnet 2 | 3 | 4 | ## 1. Grab and install Haskell 5 | ``` 6 | curl -sSL https://get.haskellstack.org/ | sh 7 | ``` 8 | 9 | ## 2. Get the wallet 10 | 11 | note: you must build from source as of today as there are changes that just got into master you need 12 | ``` 13 | git clone https://github.com/cardano-foundation/cardano-wallet.git 14 | ``` 15 | 16 | ## 3. Go into the wallet directory 17 | ``` 18 | cd cardano-wallet 19 | ``` 20 | 21 | ## 4. Build the wallet 22 | ``` 23 | stack build --test --no-run-tests 24 | ``` 25 | If it fails there are a few reasons we have found: 26 | - The cardano build instructions reference a few things that may be missing. Check those. 27 | - or maybe one of these would help: 28 | 29 | #### Libssl: 30 | ``` 31 | sudo apt install libssl-dev 32 | ``` 33 | 34 | #### Sqlite : 35 | ``` 36 | sudo apt-get install sqlite3 libsqlite3-dev 37 | ``` 38 | 39 | #### gmp: 40 | ``` 41 | sudo apt-get install libgmp3-dev 42 | ``` 43 | 44 | #### systemd dev: 45 | ``` 46 | sudo apt install libsystemd-dev 47 | ``` 48 | 49 | get coffee... It takes awhile 50 | 51 | ## 5. When its done, install executables to your path 52 | ``` 53 | stack install 54 | ``` 55 | 56 | ## 6. Test to make sure cardano-wallet-jormungandr works fine. 57 | Generate your new mnemonics you will need below. Note that this generates 15 words as opposed to your byron era mnemnomics which were only 12 words. 58 | 59 | ``` 60 | cardano-wallet-jormungandr mnemonic generate 61 | ``` 62 | 63 | ## 7. Launch the wallet as a service. 64 | you can either open another terminal window or use screen or something. anyway, wherever you run this next command you won't be able to use anymore for a terminal until you stop the wallet 65 | 66 | change --node-port 3001 to wherever you have your jormungandr rest interface running. for me it was 5001.. so 67 | 68 | change --port 3002 to wherever you want to access the wallet interface at. If you have other things running avoid those ports. for most, 3002 should be free 69 | 70 | just to future proof these instructions. genesis should be whatever genesis you are on. 71 | 72 | ``` 73 | cardano-wallet-jormungandr serve --node-port 3001 --port 3002 --genesis-block-hash e03547a7effaf05021b40dd762d5c4cf944b991144f1ad507ef792ae54603197 74 | ``` 75 | ## 8. Restore your byron wallet: 76 | 77 | --->in another window 78 | 79 | replace foo, foo, foo with all your mnemnomics from the byron wallet you are restoring 80 | 81 | Also, if you put your wallet on a different port than 3002, fix that too 82 | 83 | ``` 84 | curl -X POST -H "Content-Type: application/json" -d '{ "name": "legacy_wallet", "mnemonic_sentence": ["foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo"], "passphrase": "areallylongpassword"}' http://localhost:3002/v2/byron-wallets 85 | 86 | ``` 87 | Thats going to spit out some information about a wallet it creates, you should see the value of your wallet - hopefully its not zero. And you need the wallet ID for the next step 88 | 89 | ## 9. Create your shelley wallet: 90 | Remember all those mnemnomics you made above.. put them here instead of all the foo's. 91 | 92 | ``` 93 | curl -X POST -H "Content-Type: application/json" -d '{ "name": "pool_wallet", "mnemonic_sentence": ["foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo","foo"], "passphrase": "areallylongpasswordagain"}' http://localhost:3002/v2/wallets 94 | ``` 95 | Important thing to get is the wallet id from this command 96 | 97 | ## 10. Migrate your funds 98 | Now you are ready to migrate your wallet. replace the `````` and `````` with the values you got above 99 | 100 | ``` 101 | curl -X POST -H "Content-Type: application/json" -d '{"passphrase": "areallylongpassword"}' http://localhost:3002/v2/byron-wallets//migrations/ 102 | ``` 103 | 104 | ## 11. Congratulations. your funds are now in your new wallet. 105 | From here we recommend you send them to a new address entirely owned and created by jcli or whatever method you have been using for the testnet process. 106 | 107 | This technically may not be required. But a lot of us did it and we know it works for setting up pools and stuff. 108 | 109 | send a small amount first just to make sure you are in control of the transaction and don't send your funds to la la land. 110 | 111 | If you want to send to another address use the command below, but replace the address that you want to send it to, the amount, and your `````` 112 | ``` 113 | curl -X POST -H "Content-Type: application/json" -d '{"payments": [ { "address": "
"", "amount": { "quantity": 83333330000000, "unit": "lovelace" } } ], "passphrase": "areallylongpasswordagain"}' http://localhost:3002/v2/wallets//transactions 114 | ``` 115 | 116 | 117 | -------------------------------------------------------------------------------- /docs/Appendix/monitoring.md: -------------------------------------------------------------------------------- 1 | > Ensure the [Pre-Requisites](../basics.md#pre-requisites) are in place before you proceed. 2 | 3 | This is an easy-to-use script to automate setting up of monitoring tools. Tasks automates the following tasks: 4 | - Installs Prometheus, Node Exporter and Grafana Servers for your respective Linux architecture. 5 | - Configure Prometheus to connect to cardano node and node exporter jobs. 6 | - Provisions the installed prometheus server to be automatically available as data source in Grafana. 7 | - Provisions two of the common grafana dashboards used to monitor `cardano-node` by [SkyLight](https://oqulent.com/skylight-pool/) and IOHK to be readily consumed from Grafana. 8 | - Deploy `prometheus`,`node_exporter` and `grafana-server` as systemd service on Linux. 9 | - Start and enable those services. 10 | 11 | Note that securing prometheus/grafana servers via TLS encryption and other security best practices are out of scope for this document, and its mainly aimed to help you get started with monitoring without much fuss. 12 | 13 | !> Ensure that you've opened the firewall port for grafana server (default used in this script is 5000) 14 | 15 | #### Download setup_mon.sh {docsify-ignore} 16 | 17 | If you have run `guild-deploy.sh`, you can skip this step. To download monitoring script, you can execute the commands below: 18 | ``` bash 19 | cd $CNODE_HOME/scripts 20 | wget https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/setup_mon.sh 21 | chmod 750 setup_mon.sh 22 | ``` 23 | 24 | #### Customise any Environment Variables 25 | 26 | The default selection may not always be usable for everyone. You can customise further environment variable settings by opening in editor (eg: `vi setup_mon.sh` ), and updating variables below to your liking: 27 | 28 | ``` bash 29 | #!/usr/bin/env bash 30 | # shellcheck disable=SC2209,SC2164 31 | 32 | ###################################################################### 33 | #### Environment Variables 34 | ###################################################################### 35 | CNODE_IP=127.0.0.1 36 | CNODE_PORT=12798 37 | GRAFANA_HOST=0.0.0.0 38 | GRAFANA_PORT=5000 39 | PROJ_PATH=/opt/cardano/monitoring 40 | PROM_HOST=127.0.0.1 41 | PROM_PORT=9090 42 | NEXP_PORT=$(( PROM_PORT + 1 )) 43 | ```` 44 | 45 | #### Set up Monitoring 46 | 47 | Execute setup_mon.sh with full path to destination folder you want to setup monitoring in. If you're following guild folder structure, you do not need to specify `-d`. Read the usage comments below before you run the actual script. 48 | 49 | Note that to deploy services as systemd, the script expect sudo access is available to the user running the script. 50 | 51 | ``` bash 52 | cd $CNODE_HOME/scripts 53 | # To check Usage parameters: 54 | # ./setup_mon.sh -h 55 | #Usage: setup_mon.sh [-d directory] [-h hostname] [-p port] 56 | #Setup monitoring using Prometheus and Grafana for Cardano Node 57 | #-d directory Directory where you'd like to deploy the packages for prometheus , node exporter and grafana 58 | #-i IP/hostname IPv4 address or a FQDN/DNS name where your cardano-node (relay) is running (check for hasPrometheus in config.json; eg: 127.0.0.1 if same machine as cardano-node) 59 | #-p port Port at which your cardano-node is exporting stats (check for hasPrometheus in config.json; eg: 12798) 60 | ./setup_mon.sh 61 | # 62 | # Downloading prometheus v2.18.1... 63 | # Downloading grafana v7.0.0... 64 | # Downloading exporter v0.18.1... 65 | # Downloading grafana dashboard(s)... 66 | # - SKYLight Monitoring Dashboard 67 | # - IOHK Monitoring Dashboard 68 | # 69 | # NOTE: Could not create directory as rdlrt, attempting sudo .. 70 | # NOTE: No worries, sudo worked !! Moving on .. 71 | # Configuring components 72 | # Registering Prometheus as datasource in Grafana.. 73 | # Creating service files as root.. 74 | # 75 | # ===================================================== 76 | # Installation is completed 77 | # ===================================================== 78 | # 79 | # - Prometheus (default): http://127.0.0.1:9090/metrics 80 | # Node metrics: http://127.0.0.1:12798 81 | # Node exp metrics: http://127.0.0.1:9091 82 | # - Grafana (default): http://0.0.0.0:5000 83 | # 84 | # 85 | # You need to do the following to configure grafana: 86 | # 0. The services should already be started, verify if you can login to grafana, and prometheus. If using 127.0.0.1 as IP, you can check via curl 87 | # 1. Login to grafana as admin/admin (http://0.0.0.0:5000) 88 | # 2. Add "prometheus" (all lowercase) datasource (http://127.0.0.1:9090) 89 | # 3. Create a new dashboard by importing dashboards (left plus sign). 90 | # - Sometimes, the individual panel's "prometheus" datasource needs to be refreshed. 91 | # 92 | # Enjoy... 93 | # 94 | # Cleaning up... 95 | 96 | ``` 97 | 98 | #### View Dashboards 99 | 100 | You should now be able to Login to grafana dashboard, using the public IP of your server, at port 5000. 101 | The initial credentials to login would be *admin/admin*, and you will be asked to update your password upon first login. 102 | Once logged on, you should be able to go to `Manage > Dashboards` and select the dashboard you'd like to view. Note that if you've just started the server, you might see graphs as empty, as initial interval for dashboards is 12 hours. You can change it to 5 minutes by looking at top right section of the page. 103 | 104 | Thanks to [Pal Dorogi](https://github.com/ilap) for the original setup instructions used for modifying. 105 | -------------------------------------------------------------------------------- /docs/Build/offchain-metadata-tools.md: -------------------------------------------------------------------------------- 1 | !!! important 2 | 3 | - An average pool operator may not require offline-metadata-tools at all. Please verify if it is required for your use as mentioned [here](../build.md#components) 4 | - Ensure the [Pre-Requisites](../basics.md#pre-requisites) are in place before you proceed. 5 | 6 | In the Cardano multi-asset era, this project helps you create and submit metadata describing your assets, storing them off-chain. 7 | 8 | ### Download pre-built binaries 9 | 10 | Go to [input-output-hk/offchain-metadata-tools](https://github.com/input-output-hk/offchain-metadata-tools#pre-built-binaries) to download the binaries and place in a directory specified by `PATH`, e.g. `$HOME/.local/bin/`. 11 | 12 | ### Build Instructions 13 | 14 | An alternative to pre-built binaries - instructions describe how to build the `token-metadata-creator` tool but the offchain-metadata-tools repository contains other tools as well. Build the ones needed for your installation. 15 | 16 | #### Clone the repository 17 | 18 | Execute the below to clone the offchain-metadata-tools repository to $HOME/git folder on your system: 19 | 20 | ``` bash 21 | cd ~/git 22 | git clone https://github.com/input-output-hk/offchain-metadata-tools.git 23 | cd offchain-metadata-tools/token-metadata-creator 24 | ``` 25 | 26 | #### Build token-metadata-creator 27 | 28 | You can use the instructions below to build `token-metadata-creator`, same steps can be executed in future to update the binaries (replacing appropriate tag) as well. 29 | 30 | ``` bash 31 | git fetch --tags --all 32 | git pull 33 | # Replace master with appropriate tag if you'd like to avoid compiling against master 34 | git checkout master 35 | $CNODE_HOME/scripts/cabal-build-all.sh 36 | ``` 37 | The above would copy the binaries into `~/.local/bin` folder. 38 | 39 | ### Verify 40 | 41 | Verify that the tool is executable from anywhere by running: 42 | 43 | ``` bash 44 | token-metadata-creator -h 45 | ``` 46 | -------------------------------------------------------------------------------- /docs/Build/wallet.md: -------------------------------------------------------------------------------- 1 | !> - An average pool operator may not require `cardano-wallet` at all. Please verify if it is required for your use as mentioned [here](../build.md#components). 2 | 3 | > Ensure the [Pre-Requisites](../basics.md#pre-requisites) are in place before you proceed. 4 | 5 | #### Build Instructions {docsify-ignore} 6 | 7 | Follow instructions below for building the cardano-wallet binary: 8 | 9 | ##### Clone the repository 10 | 11 | Execute the below to clone the `cardano-wallet` repository to `$HOME/git` folder on your system: 12 | 13 | ``` bash 14 | cd ~/git 15 | git clone https://github.com/cardano-foundation/cardano-wallet 16 | cd cardano-wallet 17 | ``` 18 | 19 | ##### Build Cardano Wallet 20 | 21 | You can use the instructions below to build the latest release of [cardano-wallet](https://github.com/cardano-foundation/cardano-wallet). 22 | 23 | !> - Note that the latest release of `cardano-wallet` may not work with the latest release of `cardano-node`. Please check the compatibility of each `cardano-wallet` release yourself in the official docs, e.g. https://github.com/cardano-foundation/cardano-wallet/releases/latest. 24 | 25 | ``` bash 26 | git fetch --tags --all 27 | git pull 28 | # Replace tag against checkout if you do not want to build the latest released version 29 | git checkout $(curl -s https://api.github.com/repos/cardano-foundation/cardano-wallet/releases/latest | jq -r .tag_name) 30 | $CNODE_HOME/scripts/cabal-build-all.sh 31 | ``` 32 | 33 | The above would copy the binaries into `~/.local/bin` folder. 34 | 35 | ##### Start the wallet 36 | 37 | You can run the below to connect to a `cardano-node` instance that is expected to be already running and the wallet will start syncing. 38 | ```bash 39 | cardano-wallet serve / 40 | --node-socket $CNODE_HOME/sockets/node.socket / 41 | --mainnet / # if using the testnet flag you also need to specify the testnet shelley-genesis.json file 42 | --database $CNODE_HOME/priv/wallet 43 | ``` 44 | 45 | ##### Verify the wallet is handling requests 46 | ```bash 47 | cardano-wallet network information 48 | ``` 49 | Expected output should be similar to the following 50 | ```json 51 | Ok. 52 | { 53 | "network_tip": { 54 | "time": "2021-06-01T17:31:05Z", 55 | "epoch_number": 269, 56 | "absolute_slot_number": 31002374, 57 | "slot_number": 157574 58 | }, 59 | "node_era": "mary", 60 | "node_tip": { 61 | "height": { 62 | "quantity": 5795127, 63 | "unit": "block" 64 | }, 65 | "time": "2021-06-01T17:31:00Z", 66 | "epoch_number": 269, 67 | "absolute_slot_number": 31002369, 68 | "slot_number": 157569 69 | }, 70 | "sync_progress": { 71 | "status": "ready" 72 | }, 73 | "next_epoch": { 74 | "epoch_start_time": "2021-06-04T21:44:51Z", 75 | "epoch_number": 270 76 | } 77 | } 78 | 79 | ``` 80 | ##### Creating/Restoring Wallet 81 | 82 | If you're creating a new wallet, you'd first want to generate a mnemonic for use (see below): 83 | 84 | ```bash 85 | cardano-wallet recovery-phrase generate 86 | # false brother typical saddle settle phrase foster sauce ask sunset firm gate service render burger 87 | ``` 88 | You can use the above mnemonic to then restore a wallet as per below: 89 | ```bash 90 | cardano-wallet wallet create from-recovery-phrase MyWalletName 91 | 92 | ``` 93 | ##### Expected output: 94 | ```text 95 | Please enter a 15–24 word recovery phrase: false brother typical saddle settle phrase foster sauce ask sunset firm gate service render burger 96 | (Enter a blank line if you do not wish to use a second factor.) 97 | Please enter a 9–12 word second factor: 98 | Please enter a passphrase: ********** 99 | Enter the passphrase a second time: ********** 100 | Ok. 101 | { 102 | ... 103 | } 104 | ``` 105 | -------------------------------------------------------------------------------- /docs/Scripts/blockperf.md: -------------------------------------------------------------------------------- 1 | !!! info "Reminder !!" 2 | Ensure the [Pre-Requisites](../basics.md#pre-requisites) are in place before you proceed. 3 | 4 | `blockPerf.sh` is a script to monitor the network propagation of new blocks as seen by the local cardano-node. 5 | 6 | #### Block propagation traces 7 | Although blockPerf can also run on the block producer, it makes the most sense to run it on the upstream relays. There it waits for each new block announced to the relay over the network by its remote peers. 8 | 9 | It looks for the delay times that result 10 | 11 | - from the theoretical slot time of the block generator 12 | - until the block *header* was offered to the local node 13 | - the node *requested* the block 14 | - the node *downloaded* the block 15 | - the node has *verified and adopted* the block 16 | 17 | You can view this data locally as a console stream, or run it as a systemd service in background. 18 | 19 | BlockPerf also sends this data to the TopologyUpdater server, so that there is a possibility to compare this data (similar to sendtip to pooltool). As a contributing operator you get the possibility to see how your own relays compare to other nodes regarding receive quality, delay times and thus performance. 20 | 21 | There is no connection or constraint between the TopologyUpdater Relay subscription and the BlockPerf analysis. BlockPerf is even designed to work outside the cnTools suite. 22 | 23 | The results of these data are a good basis to make optimizations and to evaluate which changes were useful or might by required to improve the performance compared to other relay nodes. 24 | 25 | #### Installation 26 | The script is best run as a background process. This can be accomplished in many ways but the preferred method is to run it as a systemd service. A terminal multiplexer like tmux or screen could also be used but not covered here. 27 | 28 | #### Run as service 29 | 30 | Use the `deploy-as-systemd.sh` script to create a systemd unit file. 31 | In this setup the script is started in "service" mode. Error/Warn level log output is handled by journald. `journalctl -f -u cnode-tu-blockperf.service` can be used to check service output (follow mode). 32 | 33 | Outside the cnTools environment call `blockPerf.sh -d` to install it as a systemd service. 34 | 35 | #### Console view 36 | If you run blockPerf local in the console (`scripts/blockPerf.sh`) , immediately after the appearance of a new block it shows where it came from, how many slots away from the previous block it was, and how many milliseconds the individual steps took. 37 | 38 | ``` 39 | Block:.... 6860534 40 | Slot..... 52833850 (+59s) 41 | ......... 2022-02-09 09:49:01 42 | Header... 2022-02-09 09:49:02,780 (+1780 ms) 43 | Request.. 2022-02-09 09:49:02,780 (+0 ms) 44 | Block.... 2022-02-09 09:49:02,830 (+50 ms) 45 | Adopted.. 2022-02-09 09:49:02,900 (+70 ms) 46 | Size..... 79976 bytes 47 | delay.... 1.819971868 sec 48 | From..... 104.xxx.xxx.61:3001 49 | 50 | Block:.... 6860535 51 | Slot..... 52833857 (+7s) 52 | ......... 2022-02-09 09:49:08 53 | Header... 2022-02-09 09:49:08,960 (+960 ms) 54 | Request.. 2022-02-09 09:49:08,970 (+10 ms) 55 | Block.... 2022-02-09 09:49:09,020 (+50 ms) 56 | Adopted.. 2022-02-09 09:49:09,090 (+70 ms) 57 | Size..... 64950 bytes 58 | delay.... 1.028341023 sec 59 | From..... 34.xxx.xxx.15:4001 60 | 61 | ``` 62 | 63 | 64 | 65 | #### Collaborative web view 66 | 67 | A further aim of the blockPerf project is to use the data that individual nodes send to the central TopologyUpdater database to produce graphical visualisations and evaluations that provide the participating node operators with useful insights into their performance compared to all others. 68 | 69 | ![Core](https://raw.githubusercontent.com/cardano-community/guild-operators/images/blockperf_commonview.png 'Gantt diagramm: different Nodes block propagation times') -------------------------------------------------------------------------------- /docs/Scripts/itnrewards.md: -------------------------------------------------------------------------------- 1 | #### Concept 2 | 3 | To claim rewards earned during the Incentivized TestNet the private and public keys from ITN must be converted to Shelley stake keys. A script called `itnRewards.sh` has been created to guide you through the process of converting the keys and to create a CNTools compatible wallet from were the rewards can be withdrawn. 4 | 5 | ```mermaid 6 | graph TB 7 | A(["itnRewards.sh"]) 8 | A --x B(["ITN Owner skey (ed25519[e]_sk).."]) --x D(["cardano-cli shelley key
convert-itn-key .."]) 9 | A --x C(["ITN Owner vkey (ed25519_pk).."]) --x D 10 | D --x E(["Stake skey/vkey"]) --x L 11 | A --x F(["cardano-cli shelley .."]) 12 | F --x G(["Payment skey/vkey/addr"]) --x L 13 | F --x H(["Reward addr"]) --x L 14 | F --x I(["Base addr"]) --x L 15 | L[CNTools Wallet] 16 | ; 17 | ``` 18 | 19 | #### Steps 20 | 21 | - If the secret key used for `jcli` account in ITN was ed25519_sk (not extended), you can run the `itnRewards.sh` script providing the name for the CNTools wallet and ITN owner _public_/_secret_ keys that were used to register your pool as below. 22 | ``` bash 23 | cd $CNODE_HOME/scripts 24 | ./itnRewards.sh MyITNWallet ~/jormu/account/priv/owner.sk ~/jormu/account/priv/owner.pk 25 | ``` 26 | - Start CNTools and verify that the correct balance is shown in the wallet reward address 27 | - Fund base address of the wallet with enough funds to pay the withdraw tx fee 28 | - Use `FUNDS >> WITHDRAW` to move rewards to the base address of wallet 29 | - You can now spend/move funds as you see fit 30 | -------------------------------------------------------------------------------- /docs/Scripts/itnwitness.md: -------------------------------------------------------------------------------- 1 | !!! info "Disclaimer" 2 | Currently this is to protect the existing pools from the ITN who already have a delegator base against spoofing - to avoid scammers building on results of ITN from known pools. There would be a solution in the future for Mainnet nodes too - but it doesn't apply to those in its current form. 3 | 4 | 5 | #### Concept 6 | 7 | Due to the expected ticker spoofing attack for pools that were famous during ITN, some of the community members have proposed an interim solution to verify the legitimacy of a pool for delegators. You can check the high-level workflow below: 8 | 9 | ```mermaid 10 | graph TB 11 | A("ITN Owner skey (ed25519/ed25519e) ..") --x C(["jcli key sign .."]) 12 | B("Haskell Pool ID (pool.id) ..") --x C 13 | C --x D("Signature key, (pool.sig) ..") 14 | E("ITN Owner vkey (ed25519_pk) ..") --x F("Extended Metadata JSON (poolmeta_extended.json) ..") 15 | D --x F 16 | F --x G("Pool Meta JSON (poolmeta.json) ..") 17 | ; 18 | ``` 19 | 20 | #### Steps 21 | The actual implementation is pretty straightforward, we will keep it brisk - as we assume ones participating are fairly familiar with `jcli` usage. 22 | 23 | - You need to use your owner keys that were used to register your pool, and it should match the owner _public_ key you presented on [official cardano-foundation github](https://github.com/cardano-foundation/incentivized-testnet-stakepool-registry) while registering metadata. 24 | - Store your pool ID in a file (eg: `mainnet_pool.id`) 25 | - Sign the file using your owner secret key from ITN (eg: `owner_skey`) as per below: 26 | ``` bash 27 | jcli key sign --secret-key ~/jormu/account/priv/owner.sk $CNODE_HOME/priv/pool/TEST/pool.id --output mainnet_pool.sig 28 | cat mainnet_pool.sig 29 | # ed25519_sig1sn32v3z...d72rg7rc6gs 30 | ``` 31 | - Add this signature and owner _public_ key to the extended pool JSON , so that it looks like below: 32 | ``` json 33 | { 34 | "itn": { 35 | "owner": "ed25519_pk1...", 36 | "witness": "ed25519_sig1..." 37 | } 38 | } 39 | ``` 40 | - Host this signature file online at a URL with raw contents easily accessible on the internet (eg: https://my.pool.com/extended-metadata.json) 41 | - When you register/modify a pool using CNTools, use the above mentioned URL to add to your pool metadata. 42 | 43 | If the process is approved to appear for wallets, we may consider providing easier alternatives. If any queries about the process, or any additions please create a git issue/PR against [guild repository](https://github.com/cardano-community/guild-operators/issues) - to capture common queries and update instructions/help text where appropriate. 44 | 45 | #### Sample output of JSON files generated 46 | 47 | - Metadata JSON used for registering pool (one that will be hosted URL used to define pool, eg: https://hosting.site/poolmeta.json) 48 | ``` json 49 | { 50 | "name":"Test", 51 | "ticker":"TEST", 52 | "description":"For demo purposes only", 53 | "homepage":"https://hosting.site", 54 | "nonce":"1595816423", 55 | "extended":"https://hosting.site/poolmeta_extended.json" 56 | } 57 | ``` 58 | 59 | - Extended Metadata JSON used for hosting additional metadata (hosted at URL referred in `extended` field above, thus - eg : https://hosting.site/poolmeta_extended.json) 60 | 61 | ``` json 62 | { 63 | "itn": { 64 | "owner": "ed25519_pk1...", 65 | "witness": "ed25519_sig1..." 66 | } 67 | } 68 | ``` 69 | -------------------------------------------------------------------------------- /docs/Scripts/logmonitor.md: -------------------------------------------------------------------------------- 1 | !!! info "Reminder !!" 2 | Ensure the [Pre-Requisites](../basics.md#pre-requisites) are in place before you proceed. 3 | 4 | `logMonitor.sh` is a general purpose JSON log monitoring script for traces created by `cardano-node`. Currently, it looks for traces related to leader slots and block creation but other uses could be added in the future. 5 | 6 | ##### Block traces 7 | For the core node (block producer) the `logMonitor.sh` script can be run to monitor the JSON log file created by `cardano-node` for traces related to leader slots and block creation. 8 | 9 | For optimal coverage, it's best run together with [CNCLI](../Scripts/cncli.md) scripts as they provide different functionalities. Together, they create a complete picture of blocks assigned, created, validated or invalidated due to node issues. 10 | 11 | ##### Installation 12 | The script is best run as a background process. This can be accomplished in many ways but the preferred method is to run it as a systemd service. A terminal multiplexer like tmux or screen could also be used but not covered here. 13 | 14 | Use the `deploy-as-systemd.sh` script to create a systemd unit file (deployed together with [CNCLI](../Scripts/cncli.md)). 15 | Log output is handled by journald. `journalctl -f -u cnode-logmonitor.service` can be used to check service output (follow mode). Other logging configurations are not covered here. 16 | 17 | ##### View Blocklog 18 | Best viewed in CNTools or gLiveView. See [CNCLI](../Scripts/cncli.md) for example output. 19 | -------------------------------------------------------------------------------- /docs/Scripts/mithril-client.md: -------------------------------------------------------------------------------- 1 | `mithril-client.sh` is a script to manage the Mithril client, a tool used to set up the Mithril client environment and manage downloading Mithril snapshots and stake distributions. The main features include: 2 | 3 | - **environment** - Creates a new `mithril.env` file with all the necessary environment variables for the Mithril client. 4 | - **cardano-db** - Download, list all or show a specific available Mithril snapshot. 5 | - **stake-distribution** - Download or list available Mithril stake distributions. 6 | - **-u** - Skip script update check. 7 | 8 | ## Usage 9 | 10 | ```bash 11 | Usage: mithril-client.sh [-u] [] 12 | A script to run Cardano Mithril Client 13 | 14 | -u Skip script update check overriding UPDATE_CHECK value in env (must be first argument to script) 15 | 16 | Commands: 17 | environment Manage mithril environment file 18 | setup Setup mithril environment file 19 | override Override default variable in the mithril environment file 20 | update Update mithril environment file 21 | cardano-db Interact with Cardano DB 22 | download Download Cardano DB from Mithril snapshot (Full) 23 | skip-ancillary Download Cardano DB from Mithril snapshot (Immutable DB only) 24 | snapshot Interact with Mithril snapshots 25 | list List available Mithril snapshots 26 | json List availble Mithril snapshots in JSON format 27 | show Show details of a Mithril snapshot 28 | json Show details of a Mithril snapshot in JSON format 29 | stake-distribution Interact with Mithril stake distributions 30 | download Download latest stake distribution 31 | list List available stake distributions 32 | json Output latest Mithril snapshot in JSON format 33 | 34 | ``` 35 | 36 | ## Preparing a Relay or Block Producer Node 37 | 38 | To prepare a relay or block producer node, you should follow these steps: 39 | 40 | 1. **Create the Mithril environment file:** Run the script with the `environment setup` command. This will create a new `mithril.env` file with all the necessary environment variables for the Mithril client. 41 | 42 | ```bash 43 | ./mithril-client.sh environment setup 44 | ``` 45 | 46 | 2. **Download the latest Mithril snapshot:** Once the environment file is set up, you can download the latest Mithril snapshot by running the script with the `snapshot download` command. This snapshot contains the latest state of the Cardano blockchain db from a Mithril Aggregator. 47 | 48 | ```bash 49 | ./mithril-client.sh cardano-db download 50 | ``` 51 | 52 | 3. **Download the Mithril snapshot without the ledger state (skip-ancillary):** This option downloads only the immutable db files. The ledger state will be computed from the genesis block when the Cardano node starts, which results in a longer bootstrap time. 53 | 54 | ```bash 55 | ./mithril-client.sh cardano-db download skip-ancillary 56 | 57 | ## Investigating Available Snapshots 58 | 59 | You can investigate the available snapshots by using the `snapshot list` and `snapshot show` commands: 60 | 61 | - **List all available Mithril snapshots:** You can list all available Mithril snapshots by running the script with the `snapshot list` command. Add `json` at the end to get the output in JSON format. 62 | 63 | ```bash 64 | ./mithril-client.sh cardano-db snapshot list 65 | ./mithril-client.sh cardano-db snapshot list json 66 | ``` 67 | 68 | - **Show details of a specific Mithril snapshot:** You can show details of a specific Mithril snapshot by running the script with the `snapshot show ` command, where `` is the digest of the snapshot. Add `json` at the end to get the output in JSON format. 69 | 70 | ```bash 71 | ./mithril-client.sh cardano-db snapshot show 72 | ./mithril-client.sh cardano-db snapshot show json 73 | ``` 74 | 75 | ## Managing Stake Distributions 76 | 77 | You can manage stake distributions by using the `stake-distribution download` and `stake-distribution list` commands: 78 | 79 | - **Download the latest Mithril stake distribution:** You can download the latest Mithril stake distribution by running the script with the `stake-distribution download` command. 80 | 81 | ```bash 82 | ./mithril-client.sh stake-distribution download 83 | ``` 84 | 85 | - **List all available Mithril stake distributions:** You can list all available Mithril stake distributions by running the script with the `stake-distribution list` command. Add `json` at the end to get the output in JSON format. 86 | 87 | ```bash 88 | ./mithril-client.sh stake-distribution list 89 | ./mithril-client.sh stake-distribution list json 90 | ``` 91 | -------------------------------------------------------------------------------- /docs/Scripts/mithril-relay.md: -------------------------------------------------------------------------------- 1 | `mithril-relay.sh` is a bash script for deployment of Squid Mithril Relays and a Nginx 2 | loadbalancer. It provides functionalities such as: 3 | 4 | * Installing and configuring Squid as a relay for a Cardano Block Producer. 5 | * Installing and configuring Nginx as a load balancer for multiple Mithril Relays. 6 | 7 | ## Usage 8 | 9 | ```bash 10 | mithril-relay.sh [-d] [-l] [-u] [-h] 11 | A script to setup Cardano Mithril relays 12 | 13 | -d Install squid and configure as a relay 14 | -l Install nginx and configure as a load balancer 15 | -u Skip update check 16 | -s Stop relays 17 | -h Show this help text 18 | ``` 19 | 20 | # Description 21 | 22 | The `mithril-relay.sh` script is a bash script for managing the Mithril Relay Server. 23 | It provides functionalities such as installing and configuring Squid as a relay, installing and configuring Nginx as a load balancer. 24 | 25 | # Environment Variables 26 | 27 | The script uses the following environment variable: 28 | 29 | - `RELAY_LISTENING_PORT`: The port on which the relay server listens. 30 | 31 | # Execution 32 | 33 | The script parses command line options and performs the corresponding actions based on the options provided. If the `-d` option is provided, it installs Squid and configures it as a relay. If the `-l` option is provided, it installs Nginx and configures it as a load balancer. If no options are provided, it displays the usage message. -------------------------------------------------------------------------------- /docs/Scripts/mithril-signer.md: -------------------------------------------------------------------------------- 1 | `mithril-signer.sh` is a bash script for managing the Mithril Signer Server. It provides 2 | functionalities such as deploying the server as a systemd service and updating the 3 | environment file to contain variables specific to the Mithril Signer. 4 | 5 | ## Usage 6 | 7 | ```bash 8 | Usage: mithril-signer.sh [-d] [-D] [-e] [-k] [-r] [-s] [-u] [-h] 9 | A script to setup, run and verify Cardano Mithril Signer 10 | 11 | -d Deploy mithril-signer as a systemd service 12 | -D Run mithril-signer as a daemon 13 | -e Update mithril environment file 14 | -k Stop signer using SIGINT 15 | -r Verify signer registration 16 | -s Verify signer signature 17 | -u Skip update check 18 | -h Show this help text 19 | ``` 20 | 21 | # Description 22 | 23 | This script is a bash script for managing the Mithril Signer Server. It provides 24 | functionalities such as deploying the server as a systemd service, updating the 25 | environment file, and running the server. 26 | 27 | # Environment Variables 28 | 29 | The script uses several environment variables, some of which are: 30 | 31 | - `MITHRILBIN`: Path for mithril-signer binary, if not in `$PATH`. 32 | - `HOSTADDR`: Default Listen IP/Hostname for Mithril Signer Server. 33 | - `POOL_NAME`: The name of the pool. 34 | - `NETWORK_NAME`: The name of the network. 35 | 36 | # Execution 37 | 38 | The script parses command line options, sources the environment file, sets default 39 | values, and performs basic sanity checks. It then checks if the `-d` or `-u` options 40 | were specified and performs the corresponding actions. If no options were specified, it 41 | runs the Mithril Signer Server. 42 | -------------------------------------------------------------------------------- /docs/Scripts/sendalerts.md: -------------------------------------------------------------------------------- 1 | !> Ensure the [Pre-Requisites](../basics.md#pre-requisites) are in place before you proceed. 2 | 3 | This section describes the ways in which CNTools can send important messages to the operator. 4 | 5 | #### Telegram alerts 6 | 7 | If known but unwanted errors occur on your node, or if characteristic values indicate an unusual status , CNTools can send you Telegram alert messages. 8 | 9 | To do this, you first have to activate your own bot and link it to your own Telegram user. Here is an explanation of how this works: 10 | 11 | 1. Open Telegram and search for "*botfather*". 12 | 13 | 2. Write him your wish: `/newbot`. 14 | 15 | 3. Define a name for your bot, such as `cntools_[POOLNAME]_alerts`. 16 | 17 | 4. Botfather will confirm the creation of your bot by giving you the unique **bot access token**. Keep it safe and private. 18 | 19 | 5. Now send at least one direct message to your new bot. 20 | 21 | 6. Open this URL in your browser by using your own, just created bot access token: 22 | 23 | ``` 24 | https://api.telegram.org/bot/getUpdates 25 | ``` 26 | 27 | 7. the result is a JSON. Look for the value of `result.message.chat.id`. 28 | This **chat id** should be a large integer number. 29 | 30 | This is all you need to enable your Telegram alerts in the `scripts/env` file - uncomment and add the chat ID to the `TG_CHAT_ID` user variable in the `env` file: 31 | ``` 32 | ... 33 | TG_CHAT_ID="" 34 | ... 35 | ``` 36 | -------------------------------------------------------------------------------- /docs/build.md: -------------------------------------------------------------------------------- 1 | The documentation here uses instructions from [Intersect MBO repositories](https://github.com/intersectmbo) as foundation, with additional info which we can contribute to where appropriate. Note that not everyone needs to build each component. You can refer to [architecture](https://docs.cardano.org/explore-cardano/cardano-architecture) to understand and qualify which of the components built by IO you want to run. 2 | 3 | #### Components 4 | 5 | For most Pool Operators, simply building [cardano-node](Build/node-cli.md) should be enough. Use the below to decide whether you need other components: 6 | 7 | ``` mermaid 8 | graph TB 9 | A([Interact with HD Wallets
locally]) 10 | B([Explore blockchain
locally]) 11 | C([Easy pool-ops and
fund management]) 12 | D([Create Custom Assets]) 13 | E([Monitor node
using Terminal UI]) 14 | F([Sign/verify any data
using crypto keys]) 15 | N(Node) 16 | O(Ogmios) 17 | P(gRest/Koios) 18 | Q(DBSync) 19 | R(Wallet) 20 | S(CNTools) 21 | T(Tx Submit API) 22 | U(GraphQL) 23 | V(OfflineMetadataTools) 24 | X(gLiveView) 25 | Y(cardano-signer) 26 | Z[(PostgreSQL)] 27 | 28 | N --x C --x S 29 | N --x D --x S & V 30 | N --x E --x X 31 | N --x B 32 | B --x U --x Q 33 | B --x P --x Q 34 | P --x O 35 | P --x T 36 | F ---x Y 37 | N --x A --x R 38 | Q --x Z 39 | ``` 40 | 41 | !!! warning "Important" 42 | We strongly prefer use of gRest over GraphQL components due to performance, security, simplicity, control and most importantly - consistency benefits. Please refer to [official documentations](https://docs.cardano.org) if you're interested in `GraphQL` or `Cardano-Rest` components instead. 43 | 44 | !!! info "Note" 45 | The instructions are intentionally limited to stack/cabal** to avoid wait times/availability of nix/docker files on a rapidly developing codebase - this also helps us prevent managing multiple versions of instructions. 46 | 47 | #### Description for components built by community 48 | 49 | ##### CNTools 50 | 51 | A swiss army knife for pool operators, primarily built by [Ola](https://github.com/scitz0), to simplify typical operations regarding their wallet keys and pool management. You can read more about it [here](Scripts/cntools.md) 52 | 53 | ##### gLiveView 54 | 55 | A local node monitoring tool, primarily built by [Ola](https://github.com/scitz0), to use in addition to remote monitoring tools like Prometheus/Grafana, Zabbix or IOG's RTView. This is especially useful when moving to a systemd deployment - if you haven't done so already - as it offers an intuitive UI to monitor the node status. You can read more about it [here](Scripts/gliveview.md) 56 | 57 | ##### Topology Updater 58 | 59 | A temporary node-to-node discovery solution, run by [Markus](https://github.com/gufmar), that was started initially to bridge the gap created while awaiting completion of P2P on cardano network, but has since become an important lifeline to the network health - to allow everyone to activate their relay nodes without having to postpone and wait for manual topology completion requests. You can read more about it [here](Scripts/topologyupdater.md) 60 | 61 | ##### Koios/gRest 62 | 63 | A full-featured local query layer node to explore blockchain data (via dbsync) using standardised pre-built queries served via API as per standard from [Koios](https://koios.rest) - for which user can opt to participate in elastic query layer. You can read more about build steps [here](Build/grest.md) and reference API endpoints [here](https://api.koios.rest) 64 | 65 | ##### Ogmios 66 | 67 | A lightweight bridge interface for cardano-node. It offers a WebSockets API that enables local clients to speak Ouroboros' mini-protocols via JSON/RPC. You can read more about it [here](https://ogmios.dev) 68 | 69 | ##### CNCLI 70 | 71 | A CLI tool written in Rust by [Andrew Westberg](https://github.com/AndrewWestberg) for low-level communication with cardano-node. It is commonly used by SPOs to check their leader logs (integrates with CNTools as well as gLiveView) or to send their pool's health information to https://pooltool.io. You can read more about it [here](https://github.com/cardano-community/cncli) 72 | 73 | ##### Cardano Signer 74 | 75 | A tool written by [Martin](https://github.com/gitmachtl/) to sign/verify data (hex, text or binary) using cryptographic keys to generate data as per [CIP-8](https://cips.cardano.org/cips/cip8/) or [CIP-36](https://cips.cardano.org/cips/cip36/) standards. You can read more about it [here](https://github.com/gitmachtl/cardano-signer) 76 | -------------------------------------------------------------------------------- /docs/contributors.md: -------------------------------------------------------------------------------- 1 | Everyone is welcome to contribute to the guide, as well as the repository. Below is just a thank you to people who have been contributing consistently: 2 | 3 | [Adam](https://github.com/Crypto2099) 4 | [Chris](https://github.com/Straightpool) 5 | [Damjan](https://github.com/DamjanOstrelic) 6 | [Homer](https://github.com/bergr01) 7 | [Markus](https://github.com/gufmar) 8 | [OCG](https://github.com/oldcryptogeek) 9 | [Ola Ahlman](https://github.com/Scitz0) 10 | [Pal Dorogi](https://github.com/ilap) 11 | [Papacarp](https://github.com/papacarp) 12 | [PegasusPool](https://github.com/PegasusPool) 13 | [Psychomb](https://github.com/psychomb) 14 | [RdLrT](https://github.com/rdlrt) 15 | [RedOracle](https://github.com/RedOracle) 16 | [SmaugPool](https://github.com/SmaugPool) 17 | 18 | !!! cite "" 19 | To start contributing, simply hit the [github repository](https://github.com/cardano-community/guild-operators) and raise Issue/Pull Request 20 | -------------------------------------------------------------------------------- /docs/docker/build.md: -------------------------------------------------------------------------------- 1 | ### Intro 2 | 3 | 💡 Docker containers are the fastest way to run a Cardano node in both "Relay" and "Block-Producing" (Pool) mode. 4 | 5 | #### How to build 6 | 7 | ```bash 8 | docker build -t cardanocommunity/cardano-node:latest - < dockerfile_bin 9 | ``` 10 | 11 | 12 | #### For Windows Users 13 | 14 | With Powershell on Windows, you can run docker by typing the following command: 15 | 16 | ``` 17 | Get-Content dockerfile_bin | docker build -t guild-operators/cardano-node:latest - 18 | ``` 19 | 20 | #### See also 21 | 22 | [Docker Tips](../docker/tips.md) 23 | 24 | [Docker Official Docs](https://docs.docker.com/) 25 | -------------------------------------------------------------------------------- /docs/docker/docker.md: -------------------------------------------------------------------------------- 1 | 2 | Running your own Cardano node has never been so fast and easy. 3 | 4 | !!! info "" 5 | But first, a kind reminder to the [security aspects of running docker containers](../docker/security.md). 6 | 7 | ### External resources 8 | 9 | - [DockerHub Guild's images](https://hub.docker.com/u/cardanocommunity) 10 | - [YouTube Guild's Videos](https://www.youtube.com/channel/UC1eg3ljUWjIHeU0Vpqicj6A) 11 | 12 | ### 🔔 Built-in Cardano software 13 | 14 | - cardano-address 15 | - cardano-cli 16 | - cardano-hw-cli 17 | - cardano-node 18 | - cardano-submit-api 19 | - mithril-client 20 | - mithril-signer 21 | 22 | #### Mithril 23 | 24 | ### 🔔 Built-in tools 25 | 26 | - CNTools 27 | - gLiveView 28 | - CNCLI 29 | - Ogmios 30 | - Cardano Hardware CLI 31 | - Cardano Signer 32 | - Monitoring ready (with EKG and Prometheus) 33 | 34 | #### Docker Splash screen 35 | 36 | ![Docker Splash screen](./imgs/container_splashscreen.png) 37 | 38 | #### Cntools 39 | 40 | ![CNTools](./imgs/cntools.png) 41 | 42 | #### gLiveView 43 | 44 | ![gLiveView](./imgs/gLiveView.png) 45 | 46 | #### gLiveView Peers analyzer 47 | 48 | ![gLiveView](./imgs/gLiveView_peers.png) 49 | 50 | #### CNCLI 51 | 52 | ![CNCLI](./imgs/cncli.png) 53 | 54 | #### Guild Operators Docker strategy ( mainnet/ preview / preprod / guild) {: id="strategy"} 55 | 56 | Modular docker images based on Debian. 57 | 58 | Based on the Guild's work the Cardano Node image is built in a single stage: -> [dockerfile_bin](https://github.com/cardano-community/guild-operators/blob/master/files/docker/node/dockerfile_bin) 59 | 60 | - Uses `guild-deploy.sh` to: 61 | - Install the os prerequisites 62 | - Add the cardano software from release binaries 63 | - Add the guild's SPO tools and the node's configuration files. 64 | 65 | 66 | ### Additional docs 67 | 68 | If you prefer to build the images your own than you can check: 69 | 70 | - [Docker Build Documentation](../docker/build.md) 71 | - [Docker Tips](../docker/tips.md) 72 | 73 | ### Port mapping 74 | 75 | The dockerfiles are located in ./files/docker/ 76 | 77 | | Node Ports | Wallet Ports | Flavor | 78 | | ------------: | -------------: |:-------------:| 79 | | Node (6000) | Wallet (8090) | Debian | 80 | | Prometheus (12798)| Prometheus (12798) | | 81 | | EKG (12781) | | | 82 | -------------------------------------------------------------------------------- /docs/docker/imgs/cncli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/docker/imgs/cncli.png -------------------------------------------------------------------------------- /docs/docker/imgs/cntools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/docker/imgs/cntools.png -------------------------------------------------------------------------------- /docs/docker/imgs/container_splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/docker/imgs/container_splashscreen.png -------------------------------------------------------------------------------- /docs/docker/imgs/gLiveView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/docker/imgs/gLiveView.png -------------------------------------------------------------------------------- /docs/docker/imgs/gLiveView_peers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/docker/imgs/gLiveView_peers.png -------------------------------------------------------------------------------- /docs/docker/run.md: -------------------------------------------------------------------------------- 1 | ### OS Requirements 2 | 3 | - `docker-ce` installed - [Get Docker](https://docs.docker.com/get-docker/). 4 | 5 | === "Private mode" 6 | 7 | #### Use Cases 8 | 9 | - Pool Management 10 | - Wallet Management 11 | - Node testing 12 | 13 | ```bash 14 | docker run --init -dit 15 | --name 16 | --security-opt=no-new-privileges 17 | -e NETWORK=mainnet 18 | -v :/opt/cardano/cnode/priv 19 | -v :/opt/cardano/cnode/db 20 | cardanocommunity/cardano-node 21 | ``` 22 | 23 | === "Public mode" 24 | 25 | #### Use Cases: 26 | 27 | - Node Relay 28 | 29 | ```bash 30 | docker run --init -dit 31 | --name 32 | --security-opt=no-new-privileges 33 | -e NETWORK=mainnet 34 | -p 6000:6000 35 | -v :/opt/cardano/cnode/priv 36 | -v :/opt/cardano/cnode/db 37 | cardanocommunity/cardano-node 38 | ``` 39 | 40 | - Node Relay with custom permanent cfg by passing the env variable CONFIG 41 | (Mapping your configuration folder as below will allow you to retain configurations if you update or delete your container) 42 | 43 | ```bash 44 | docker run --init -dit 45 | --name 46 | --security-opt=no-new-privileges 47 | -e NETWORK=mainnet 48 | -e CONFIG=/opt/cardano/cnode/priv/.yml 49 | -p 6000:6000 50 | -v :/opt/cardano/cnode/priv 51 | -v :/opt/cardano/cnode/db 52 | cardanocommunity/cardano-node 53 | ``` 54 | 55 | 56 | !!! info "Note" 57 | 1) `--entrypoint=bash` # This option won't start the node's container but only the OS running (the node software wont actually start, you'll need to manually execute entrypoint.sh ), ready to get in (trough the command ``` docker exec -it < container name or hash > /bin/bash ```) and play/explore around with it in command line mode. 58 | 2) all guild tools env variable can be used to start a new container using custom values by using the "-e" option. 59 | 3) CPU and RAM and Shared Memory allocation option for the container can be used when you start the container (i.e. --shm-size or --memory or --cpus [official docker resource docs](https://docs.docker.com/config/containers/resource_constraints/)) 60 | 4) `--env MITHRIL_DOWNLOAD=Y` # This option will allow Mithril client to download the latest Mithril snapshot of the blockchain when the container starts and does not have a copy of the blockchain yet. This is useful when you want to start a new node from scratch and don't want to wait for the node to sync from the network. This option is not currently available for the guild network. 61 | 5) `--env ENTRYPOINT_PROCESS=mithril-signer.sh` # This option will allow the container to start the Mithril signer process instead of the node process. This is useful when you want to run a Mithril signer node and have the container setup the configuration files based on the NETWORK environment varaible. -------------------------------------------------------------------------------- /docs/docker/security.md: -------------------------------------------------------------------------------- 1 | 2 | ### Docker Security best practices 3 | 4 | #### Intro 5 | 6 | On the security front, Docker developers are faced with different types of security attacks such as: 7 | 8 | - Kernel exploits: Since the host’s kernel is shared in the container, a compromised container can attack the entire host. 9 | - Container breakouts: Caused when the user is able to escape the container namespace and interact with other processes on the host. 10 | - Denial-of-service attacks: Occur when some containers take up enough resources to hamper the functioning of other applications. 11 | - Poisoned images: Caused when an untrusted image is being run and a hacker is able to access application data and, potentially, the host itself. 12 | 13 | > Docker containers are now being exploited to covertly mine for cryptocurrency, marking a shift from ransomware to cryptocurrency malware. 14 | As with all things in security, also Docker security is a moving target — so it’s helpful to have access to up-to-date information, including experience-based best practices, for securing your containerized environments. 15 | 16 | #### Here below some key concepts: 17 | 18 | 1. Use a Third-Party Security Tool 19 | Docker allows you to use containers from untrusted public repositories, which increases the need to scrutinize whether the container was created securely and whether it is free of any corrupt or malicious files. For this, use a multi-purpose security tool that gives extensive dev-to-production security controls.(keep reading below) 20 | 21 | 2. Manage Vulnerability 22 | It is best to have a sound vulnerability management program that has multiple checks throughout the container lifecycle. Vulnerability management should incorporate quality gates to detect access issues and weaknesses for a potential exploit from dev-to-production environments. 23 | 24 | 3. Monitor and Audit Container Activity 25 | It is vital to monitor the container ecosystem and detect suspicious activity. Container monitoring activities provide real-time reports that can help you react promptly to a security breach. 26 | 27 | 4. Enable Docker Content Trust 28 | [Docker Content Trust]( )is a new feature incorporated into Docker 1.8. It is disabled by default, but once enabled, allows you to verify the integrity, authenticity, and publication date of all Docker images from the Docker Hub Registry. 29 | 30 | 5. Use Docker Bench for Security 31 | You should consider [Docker Bench for Security](https://github.com/docker/docker-bench-security) as your must-use script. Once the script is run, you will notice a lot of information regarding configuration best practices for deploying Docker containers that can be used to further secure your Docker server and containers. 32 | 33 | 6. Resource Utilization 34 | To reduce performance impacts and denial-of-service attacks, it is a good practice to implement limits on the system resources that the containers can consume. If, for example, a web server is compromised, it helps to limit the impact to the other processes that are running on a host. 35 | 36 | 7. RBAC 37 | RBAC is role-based access control. If you have multiple users accessing you enviroment, this is a must-have. It can be quite expensive to implement but [portainer](https://www.funkypenguin.co.nz/blog/docker-rbac-with-portainer/) makes it super easy. 38 | 39 | ### Security Docker best practices: 40 | 41 | #### The Guild Docker images are not using all the following tips due to functional purpose 42 | 43 | Guild tips: 44 | 45 | - **`NEVER NEVER NEVER expose Docker API publicly!!!`** (disabled by default) 46 | 47 | - Keep Docker Host Up-to-date 48 | - Reverse uptime: containers that are frequently shut down and replaced by new container are more difficult for hackers to attack. 49 | - Use a Firewall or Expose only the ports you need to be public. 50 | - Use a *`Reverse Proxy` 51 | - Do not Change **`Docker Socket Ownership` 52 | - Do not `Run Docker Containers as Root` 53 | - `Use Trusted Docker Images` 54 | - `Use Privileged Mode Carefully` (This is usually done by adding --privileged you can use `--security-opt=no-new-privileges` instead) 55 | 56 | Some more general tips: 57 | 58 | - Restrict container capabilities: `"--cap-drop ALL"` 59 | - [Use Docker Secrets](https://www.docker.com/blog/docker-secrets-management/) 60 | - Change DOCKER_OPTS to ***Respect IP Table Firewall 61 | - [Control Docker Resource Usage](https://docs.docker.com/config/containers/resource_constraints/) 62 | - [Rate Limit](https://docs.docker.com/docker-hub/download-rate-limit/): is quite common to mitigate brute force or denial of service attacks. 63 | - [Fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page): Fail2ban scans your log files and bans IP address that shows malicious intent 64 | - [Container Vulnerability Scanner](https://github.com/quay/clair) 65 | 66 | #### Notes: 67 | 68 | - *Nginx is a very good choice as load balancer and/or reverse proxy. 69 | - **By default the socket is owned by root user and docker group. 70 | - *** On Ubuntu/Debian based systems, edit /etc/default/docker and add the following line: ```DOCKER_OPTS= "--iptables=false"``` 71 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | 2 | This documentation site (rather the repository itself) is created by some of the well known and experienced community members and contains instructions/information about various guild tools which simplify various stake-ops (setting up, managing and monitoring pools) for operators. Note that the guides are present to help you simplify your tasks - but as an entity responsible for creating blocks on a financial platform, we expect some basic pre-requisite skill sets - at professional level - before entering the portal: 3 | 4 | - Learn about working with architecture, setup and essentials (SysOps); 5 | - Understand how to secure your server (SecOps); 6 | - Be comfortable with working with `cardano-cli`, and have worked on preview/preprod/guild networks for pool operations without use of wrapper scripts - as an education exercise; 7 | - Read the documentation and disclaimers. The guide and tools only aim to simplify your tasks, it will not try to do everything for you - neither scope best practices; 8 | - We recommend anyone using these instructions to use offline workflow, and **NEVER** have their wallet keys and pool keys to be made available to online servers, as supported by the tools. 9 | 10 | Everyone is welcome to contribute to the repository (via documentation, testing, code, videos, etc). Our aim is to work together and reduce confusion rather than hosting 100 versions of documentation - each marketing their pool in a way. 11 | 12 | #### Support {docsify-ignore} 13 | 14 | The [Telegram Support channel](https://t.me/CardanoKoios/9759) is used to announce new releases and changes to the code base. This is also the place to ask general questions regarding the documentation and scripts on this site. 15 | 16 | To report **bugs** and **issues** with scripts and documentation please open a [GitHub Issue](https://github.com/cardano-community/guild-operators/issues/new/choose). 17 | **Feature requests** are best opened as a [discussion thread](https://github.com/cardano-community/guild-operators/discussions/new). 18 | 19 | #### Getting Started {docsify-ignore} 20 | 21 | Use the sidebar to navigate through the topics. Note that the instructions assume the folder structure as per [here](basics.md#folder-structure). 22 | 23 | !!! question "" 24 | Again, Feedback/Contribution and ownership of tasks is *always welcome*. If you're interested in collaborating regularly, make a start - and you should be part of the guild already :smile:. 25 | -------------------------------------------------------------------------------- /docs/overrides/custom.css: -------------------------------------------------------------------------------- 1 | @media screen { 2 | [data-md-color-scheme="slate"] { 3 | --md-default-bg-color: hsla(var(--md-hue), 10%, 10%, 1); 4 | --md-code-bg-color: hsla(var(--md-hue), 10%, 15%, 1); 5 | --md-default-fg-color--light: hsla(var(--md-hue),75%,90%,0.82); 6 | --md-default-fg-color--lighter: hsla(var(--md-hue),75%,90%,0.62); 7 | --md-default-fg-color--lightest: hsla(var(--md-hue),75%,90%,0.12); 8 | } 9 | .md-grid { 10 | max-width: initial; 11 | } 12 | .md-typeset .admonition.info, 13 | .md-typeset details.info { 14 | border-color: rgb(43, 155, 70); 15 | } 16 | .md-typeset .info > .admonition-title, 17 | .md-typeset .info > summary { 18 | background-color: rgba(43, 155, 70, 0.1); 19 | border-color: rgb(43, 155, 70); 20 | } 21 | .md-typeset .info > .admonition-title::before, 22 | .md-typeset .info > summary::before { 23 | background-color: rgb(43, 155, 70); 24 | } 25 | .md-typeset { 26 | font-size: 0.7rem 27 | } 28 | -------------------------------------------------------------------------------- /docs/overrides/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/overrides/favicon.png -------------------------------------------------------------------------------- /docs/overrides/guildicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cardano-community/guild-operators/af4a69a28a313fae825fd3054904e96c9af8a0c3/docs/overrides/guildicon.png -------------------------------------------------------------------------------- /docs/sidebar.md: -------------------------------------------------------------------------------- 1 | # Tree 2 | - Home: index.md 3 | - Basics: basics.md 4 | - Build and Run: 5 | - Overview: build.md 6 | - Node & CLI: Build/node-cli.md 7 | - DBSync: Build/dbsync.md 8 | - Koios gRest: Build/grest.md 9 | - Offchain Metadata Tools: Build/offchain-metadata-tools.md 10 | - Scripts: 11 | - Common env: Scripts/env.md 12 | - BlockPerf: Scripts/blockperf.md 13 | - Koios SPO Tools: 14 | - CNTools: 15 | - Overview: Scripts/cntools.md 16 | - Common Tasks: Scripts/cntools-common.md 17 | - Changelog: Scripts/cntools-changelog.md 18 | - Log Monitor: Scripts/logmonitor.md 19 | - gLiveView: Scripts/gliveview.md 20 | - Topology Updater: Scripts/topologyupdater.md 21 | - CNCLI: Scripts/cncli.md 22 | - Mithril: 23 | - Overview: Mithril/mithril-overview.md 24 | - Client: Scripts/mithril-client.md 25 | - Signer: Scripts/mithril-signer.md 26 | - Relay: Scripts/mithril-relay.md 27 | - Docker: 28 | - Overview: docker/docker.md 29 | - Build: docker/build.md 30 | - Run: docker/run.md 31 | - Tips: docker/tips.md 32 | - Appendix: 33 | - Sample Postgres Setup: Appendix/postgres.md 34 | - GRest meet summaries: grest-meets.md 35 | - Contributors: contributors.md 36 | -------------------------------------------------------------------------------- /files/configs/guild/byron-genesis.json: -------------------------------------------------------------------------------- 1 | { "bootStakeholders": 2 | { "01c49b3ec989e7b609854c509bbac3f4efc53e285f99f5473e77d103": 1 } 3 | , "heavyDelegation": 4 | { "01c49b3ec989e7b609854c509bbac3f4efc53e285f99f5473e77d103": 5 | { "omega": 0 6 | , "issuerPk": 7 | "rtmqw5lbXkeUGigAiubY0rfwPmgz0/XBayym+ObVjvWKA0PXplLaPhqJPKX6R7zJGsf0QVv/NNN5KbSD7guong==" 8 | , "delegatePk": 9 | "PyJ6iqZMISBOaBat3pbqsudx0WVFy+K9Rub8cAU9HcPzGa1RNvrwDn2uMz+wHN+2mGtkXsIzx1bm5GKmjHpAvg==" 10 | , "cert": 11 | "65424abb53cb13ba232da9590f6159c61670afad8567df7b488a6da7b4f7ef15d5f703f309c782facea229d9af2d052f1ff46a33942193304546d8e3c9d36e07" 12 | } } 13 | , "startTime": 1639090522 14 | , "nonAvvmBalances": 15 | { "2657WMsDfac72QNMMmKxMCfp6rTWSZqkwznEFJ5vpKraTAVXTyjSqQ8MMUiPUMbpV": 16 | "45000000000000000" } 17 | , "blockVersionData": 18 | { "scriptVersion": 0 19 | , "slotDuration": "100" 20 | , "maxBlockSize": "641000" 21 | , "maxHeaderSize": "200000" 22 | , "maxTxSize": "4096" 23 | , "maxProposalSize": "700" 24 | , "mpcThd": "200000" 25 | , "heavyDelThd": "300000" 26 | , "updateVoteThd": "100000" 27 | , "updateProposalThd": "100000" 28 | , "updateImplicit": "10000" 29 | , "softforkRule": 30 | { "initThd": "900000" 31 | , "minThd": "600000" 32 | , "thdDecrement": "100000" 33 | } 34 | , "txFeePolicy": { "summand": "0" , "multiplier": "439460" } 35 | , "unlockStakeEpoch": "184467" 36 | } 37 | , "protocolConsts": { "k": 36 , "protocolMagic": 141 } 38 | , "avvmDistr": {} 39 | } -------------------------------------------------------------------------------- /files/configs/guild/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "/opt/cardano/cnode/files/alonzo-genesis.json", 3 | "ByronGenesisFile": "/opt/cardano/cnode/files/byron-genesis.json", 4 | "ConwayGenesisFile": "/opt/cardano/cnode/files/conway-genesis.json", 5 | "EnableP2P": true, 6 | "LastKnownBlockVersion-Alt": 0, 7 | "LastKnownBlockVersion-Major": 3, 8 | "LastKnownBlockVersion-Minor": 1, 9 | "MinNodeVersion": "10.1.4", 10 | "PeerSharing": true, 11 | "Protocol": "Cardano", 12 | "RequiresNetworkMagic": "RequiresMagic", 13 | "PBftSignatureThreshold": 1, 14 | "ShelleyGenesisFile": "/opt/cardano/cnode/files/shelley-genesis.json", 15 | "SnapshotInterval": 1800, 16 | "MempoolCapacityBytesOverride": 8388608, 17 | "EnableLogging": true, 18 | "EnableLogMetrics": false, 19 | "TargetNumberOfActivePeers": 10, 20 | "TargetNumberOfEstablishedPeers": 25, 21 | "TargetNumberOfKnownPeers": 50, 22 | "TargetNumberOfRootPeers": 25, 23 | "TraceAcceptPolicy": true, 24 | "TraceBlockFetchClient": true, 25 | "TraceBlockFetchDecisions": false, 26 | "TraceBlockFetchProtocol": false, 27 | "TraceBlockFetchProtocolSerialised": false, 28 | "TraceBlockFetchServer": false, 29 | "TraceChainDb": true, 30 | "TraceChainSyncBlockServer": false, 31 | "TraceChainSyncClient": true, 32 | "TraceChainSyncHeaderServer": false, 33 | "TraceChainSyncProtocol": false, 34 | "TraceConnectionManager": true, 35 | "TraceDNSResolver": true, 36 | "TraceDNSSubscription": true, 37 | "TraceDiffusionInitialization": true, 38 | "TraceErrorPolicy": true, 39 | "TraceForge": true, 40 | "TraceHandshake": true, 41 | "TraceInboundGovernor": true, 42 | "TraceIpSubscription": true, 43 | "TraceLedgerPeers": true, 44 | "TraceLocalChainSyncProtocol": false, 45 | "TraceLocalConnectionManager": true, 46 | "TraceLocalErrorPolicy": true, 47 | "TraceLocalHandshake": true, 48 | "TraceLocalRootPeers": true, 49 | "TraceLocalTxSubmissionProtocol": false, 50 | "TraceLocalTxSubmissionServer": false, 51 | "TraceMempool": true, 52 | "TraceMux": false, 53 | "TracePeerSelection": true, 54 | "TracePeerSelectionActions": true, 55 | "TracePublicRootPeers": true, 56 | "TraceServer": true, 57 | "TraceTxInbound": false, 58 | "TraceTxOutbound": false, 59 | "TraceTxSubmissionProtocol": false, 60 | "TracingVerbosity": "NormalVerbosity", 61 | "TurnOnLogMetrics": true, 62 | "TurnOnLogging": true, 63 | "defaultBackends": [ 64 | "KatipBK" 65 | ], 66 | "defaultScribes": [ 67 | [ 68 | "FileSK", 69 | "/opt/cardano/cnode/logs/node.json" 70 | ] 71 | ], 72 | "hasEKG": 17788, 73 | "hasPrometheus": [ 74 | "127.0.0.1", 75 | 17798 76 | ], 77 | "minSeverity": "Info", 78 | "options": { 79 | "mapBackends": { 80 | "cardano.node.metrics": [ 81 | "EKGViewBK" 82 | ], 83 | "cardano.node.resources": [ 84 | "EKGViewBK" 85 | ] 86 | }, 87 | "mapSubtrace": { 88 | "cardano.node.metrics": { 89 | "subtrace": "Neutral" 90 | } 91 | } 92 | }, 93 | "rotation": { 94 | "rpKeepFilesNum": 10, 95 | "rpLogLimitBytes": 50000000, 96 | "rpMaxAgeHours": 24 97 | }, 98 | "setupBackends": [ 99 | "KatipBK", 100 | "EKGViewBK" 101 | ], 102 | "setupScribes": [ 103 | { 104 | "scKind": "FileSK", 105 | "scName": "/opt/cardano/cnode/logs/node.json", 106 | "scFormat": "ScJson", 107 | "scRotation": null 108 | } 109 | ] 110 | } 111 | -------------------------------------------------------------------------------- /files/configs/guild/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "constitution": { 3 | "anchor": { 4 | "url": "ipfs://bafkreifnwj6zpu3ixa4siz2lndqybyc5wnnt3jkwyutci4e2tmbnj3xrdm", 5 | "dataHash": "ca41a91f399259bcefe57f9858e91f6d00e1a38d6d9c63d4052914ea7bd70cb2" 6 | }, 7 | "script": "fa24fb305126805cf2164c161d852a0e7330cf988f1fe558cf7d4a64" 8 | }, 9 | "committee": { 10 | "members": { 11 | "scriptHash-78c4c6a1b96b9a11ac52e26ac3839d58de4cb7af27b6d8b2a1b952a1": 1000 12 | }, 13 | "threshold": { 14 | "denominator": 3, 15 | "numerator": 2 16 | } 17 | }, 18 | "initialDReps": { 19 | "keyHash-8ef00cccf64b10b58ce21e0a677ff85bce8d0f62ed4b2bad1ce04ffe": { 20 | "delegators": [], 21 | "deposit": 2000000, 22 | "expiry": 1000 23 | } 24 | }, 25 | "poolVotingThresholds": { 26 | "committeeNoConfidence": 0.51, 27 | "committeeNormal": 0.51, 28 | "hardForkInitiation": 0.51, 29 | "motionNoConfidence": 0.51, 30 | "ppSecurityGroup": 0.51 31 | }, 32 | "dRepVotingThresholds": { 33 | "committeeNoConfidence": 0, 34 | "committeeNormal": 0, 35 | "hardForkInitiation": 0.51, 36 | "motionNoConfidence": 0.51, 37 | "ppEconomicGroup": 0.51, 38 | "ppGovGroup": 0.51, 39 | "ppNetworkGroup": 0.51, 40 | "ppTechnicalGroup": 0.51, 41 | "treasuryWithdrawal": 0.51, 42 | "updateToConstitution": 0 43 | }, 44 | "committeeMinSize": 0, 45 | "committeeMaxTermLength": 2000, 46 | "govActionLifetime": 10, 47 | "govActionDeposit": 1000000, 48 | "dRepDeposit": 2000000, 49 | "dRepActivity": 20, 50 | "minFeeRefScriptCostPerByte": 15, 51 | "plutusV3CostModel": [ 52 | 100788, 53 | 420, 54 | 1, 55 | 1, 56 | 1000, 57 | 173, 58 | 0, 59 | 1, 60 | 1000, 61 | 59957, 62 | 4, 63 | 1, 64 | 11183, 65 | 32, 66 | 201305, 67 | 8356, 68 | 4, 69 | 16000, 70 | 100, 71 | 16000, 72 | 100, 73 | 16000, 74 | 100, 75 | 16000, 76 | 100, 77 | 16000, 78 | 100, 79 | 16000, 80 | 100, 81 | 100, 82 | 100, 83 | 16000, 84 | 100, 85 | 94375, 86 | 32, 87 | 132994, 88 | 32, 89 | 61462, 90 | 4, 91 | 72010, 92 | 178, 93 | 0, 94 | 1, 95 | 22151, 96 | 32, 97 | 91189, 98 | 769, 99 | 4, 100 | 2, 101 | 85848, 102 | 123203, 103 | 7305, 104 | -900, 105 | 1716, 106 | 549, 107 | 57, 108 | 85848, 109 | 0, 110 | 1, 111 | 1, 112 | 1000, 113 | 42921, 114 | 4, 115 | 2, 116 | 24548, 117 | 29498, 118 | 38, 119 | 1, 120 | 898148, 121 | 27279, 122 | 1, 123 | 51775, 124 | 558, 125 | 1, 126 | 39184, 127 | 1000, 128 | 60594, 129 | 1, 130 | 141895, 131 | 32, 132 | 83150, 133 | 32, 134 | 15299, 135 | 32, 136 | 76049, 137 | 1, 138 | 13169, 139 | 4, 140 | 22100, 141 | 10, 142 | 28999, 143 | 74, 144 | 1, 145 | 28999, 146 | 74, 147 | 1, 148 | 43285, 149 | 552, 150 | 1, 151 | 44749, 152 | 541, 153 | 1, 154 | 33852, 155 | 32, 156 | 68246, 157 | 32, 158 | 72362, 159 | 32, 160 | 7243, 161 | 32, 162 | 7391, 163 | 32, 164 | 11546, 165 | 32, 166 | 85848, 167 | 123203, 168 | 7305, 169 | -900, 170 | 1716, 171 | 549, 172 | 57, 173 | 85848, 174 | 0, 175 | 1, 176 | 90434, 177 | 519, 178 | 0, 179 | 1, 180 | 74433, 181 | 32, 182 | 85848, 183 | 123203, 184 | 7305, 185 | -900, 186 | 1716, 187 | 549, 188 | 57, 189 | 85848, 190 | 0, 191 | 1, 192 | 1, 193 | 85848, 194 | 123203, 195 | 7305, 196 | -900, 197 | 1716, 198 | 549, 199 | 57, 200 | 85848, 201 | 0, 202 | 1, 203 | 955506, 204 | 213312, 205 | 0, 206 | 2, 207 | 270652, 208 | 22588, 209 | 4, 210 | 1457325, 211 | 64566, 212 | 4, 213 | 20467, 214 | 1, 215 | 4, 216 | 0, 217 | 141992, 218 | 32, 219 | 100788, 220 | 420, 221 | 1, 222 | 1, 223 | 81663, 224 | 32, 225 | 59498, 226 | 32, 227 | 20142, 228 | 32, 229 | 24588, 230 | 32, 231 | 20744, 232 | 32, 233 | 25933, 234 | 32, 235 | 24623, 236 | 32, 237 | 43053543, 238 | 10, 239 | 53384111, 240 | 14333, 241 | 10, 242 | 43574283, 243 | 26308, 244 | 10, 245 | 16000, 246 | 100, 247 | 16000, 248 | 100, 249 | 962335, 250 | 18, 251 | 2780678, 252 | 6, 253 | 442008, 254 | 1, 255 | 52538055, 256 | 3756, 257 | 18, 258 | 267929, 259 | 18, 260 | 76433006, 261 | 8868, 262 | 18, 263 | 52948122, 264 | 18, 265 | 1995836, 266 | 36, 267 | 3227919, 268 | 12, 269 | 901022, 270 | 1, 271 | 166917843, 272 | 4307, 273 | 36, 274 | 284546, 275 | 36, 276 | 158221314, 277 | 26549, 278 | 36, 279 | 74698472, 280 | 36, 281 | 333849714, 282 | 1, 283 | 254006273, 284 | 72, 285 | 2174038, 286 | 72, 287 | 2261318, 288 | 64571, 289 | 4, 290 | 207616, 291 | 8310, 292 | 4, 293 | 1293828, 294 | 28716, 295 | 63, 296 | 0, 297 | 1, 298 | 1006041, 299 | 43623, 300 | 251, 301 | 0, 302 | 1 303 | ] 304 | } 305 | -------------------------------------------------------------------------------- /files/configs/guild/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "guild", 5 | "NodeConfigFile": "/opt/cardano/cnode/files/config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "EnableFutureGenesis": true, 9 | "defaultBackends": [ 10 | "KatipBK" 11 | ], 12 | "defaultScribes": [ 13 | [ 14 | "FileSK", 15 | "/opt/cardano/cnode/logs/dbsync.json" 16 | ] 17 | ], 18 | "insert_options": { 19 | "tx_out": { 20 | "value": "consumed", 21 | "use_address_table": true 22 | }, 23 | "ledger": "enable", 24 | "shelley": { 25 | "enable": true 26 | }, 27 | "multi_asset": { 28 | "enable": true 29 | }, 30 | "metadata": { 31 | "enable": true 32 | }, 33 | "plutus": { 34 | "enable": true 35 | }, 36 | "governance": "enable", 37 | "json_type": "text", 38 | "offchain_pool_data": "enable", 39 | "pool_stat": "enable", 40 | "tx_cbor": "enable" 41 | }, 42 | "minSeverity": "Info", 43 | "options": { 44 | "cfokey": { 45 | "value": "Release-1.0.0" 46 | }, 47 | "mapBackends": {}, 48 | "mapSeverity": { 49 | "db-sync-node": "Info", 50 | "db-sync-node.Mux": "Error", 51 | "db-sync-node.Subscription": "Error" 52 | }, 53 | "mapSubtrace": { 54 | "#ekgview": { 55 | "contents": [ 56 | [ 57 | { 58 | "contents": "cardano.epoch-validation.benchmark", 59 | "tag": "Contains" 60 | }, 61 | [ 62 | { 63 | "contents": ".monoclock.basic.", 64 | "tag": "Contains" 65 | } 66 | ] 67 | ], 68 | [ 69 | { 70 | "contents": "cardano.epoch-validation.benchmark", 71 | "tag": "Contains" 72 | }, 73 | [ 74 | { 75 | "contents": "diff.RTS.cpuNs.timed.", 76 | "tag": "Contains" 77 | } 78 | ] 79 | ], 80 | [ 81 | { 82 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 83 | "tag": "StartsWith" 84 | }, 85 | [ 86 | { 87 | "contents": "diff.RTS.gcNum.timed.", 88 | "tag": "Contains" 89 | } 90 | ] 91 | ] 92 | ], 93 | "subtrace": "FilterTrace" 94 | }, 95 | "#messagecounters.aggregation": { 96 | "subtrace": "NoTrace" 97 | }, 98 | "#messagecounters.ekgview": { 99 | "subtrace": "NoTrace" 100 | }, 101 | "#messagecounters.katip": { 102 | "subtrace": "NoTrace" 103 | }, 104 | "#messagecounters.monitoring": { 105 | "subtrace": "NoTrace" 106 | }, 107 | "#messagecounters.switchboard": { 108 | "subtrace": "NoTrace" 109 | }, 110 | "benchmark": { 111 | "contents": [ 112 | "GhcRtsStats", 113 | "MonotonicClock" 114 | ], 115 | "subtrace": "ObservableTrace" 116 | }, 117 | "cardano.epoch-validation.utxo-stats": { 118 | "subtrace": "NoTrace" 119 | } 120 | } 121 | }, 122 | "rotation": { 123 | "rpKeepFilesNum": 10, 124 | "rpLogLimitBytes": 5000000, 125 | "rpMaxAgeHours": 24 126 | }, 127 | "setupBackends": [ 128 | "AggregationBK", 129 | "KatipBK" 130 | ], 131 | "setupScribes": [ 132 | { 133 | "scKind": "FileSK", 134 | "scName": "/opt/cardano/cnode/logs/dbsync.json", 135 | "scFormat": "ScJson", 136 | "scRotation": null 137 | } 138 | ] 139 | } 140 | -------------------------------------------------------------------------------- /files/configs/guild/shelley-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "maxLovelaceSupply": 45000000000000000, 3 | "securityParam": 36, 4 | "slotsPerKESPeriod": 129600, 5 | "updateQuorum": 1, 6 | "activeSlotsCoeff": 5.0e-2, 7 | "protocolParams": { 8 | "minUTxOValue": 1000000, 9 | "eMax": 18, 10 | "extraEntropy": { 11 | "tag": "NeutralNonce" 12 | }, 13 | "minFeeB": 1000, 14 | "tau": 0.1, 15 | "maxBlockBodySize": 65536, 16 | "minPoolCost": 340000000, 17 | "minFeeA": 1, 18 | "maxTxSize": 16384, 19 | "nOpt": 10, 20 | "maxBlockHeaderSize": 1100, 21 | "keyDeposit": 2000000, 22 | "protocolVersion": { 23 | "minor": 0, 24 | "major": 2 25 | }, 26 | "poolDeposit": 500000000, 27 | "a0": 0.3, 28 | "rho": 3.0e-4, 29 | "decentralisationParam": 0.8 30 | }, 31 | "networkMagic": 141, 32 | "initialFunds": {}, 33 | "maxKESEvolutions": 62, 34 | "networkId": "Testnet", 35 | "genDelegs": { 36 | "092d63dc21a01055bbf36b210ed9dcca2a824590a9ddb19852c2d870": { 37 | "delegate": "0413e4554e79863d993ac5cc20cedd2ac826b3eb072392b1bcfac3f2", 38 | "vrf": "a587721758dff7ae30dc64d2d3f874f9922749b9cecc168ff3c8a979a69fca77" 39 | } 40 | }, 41 | "slotLength": 1, 42 | "systemStart": "2021-12-09T22:55:22Z", 43 | "staking": { 44 | "pools": {}, 45 | "stake": {} 46 | }, 47 | "epochLength": 3600 48 | } -------------------------------------------------------------------------------- /files/configs/guild/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "localRoots": [ 3 | { 4 | "accessPoints": [ 5 | {"address": "127.0.0.1", "port": 6000, "description": "replace-this-with-BP"} 6 | ], 7 | "advertise": false, 8 | "trustable": true, 9 | "hotValency": 1 10 | }, 11 | { 12 | "accessPoints": [ 13 | {"address": "c.rdlrt.top" ,"port": 7001, "name": "rdlrt"}, 14 | {"address": "95.216.188.94" ,"port": 7000, "name": "homer"}, 15 | {"address": "relay1-test.ahlnet.nu" ,"port": 2103, "name": "ahl-1"}, 16 | {"address": "guild-relay.bluecheesestakehouse.com","port": 7000, "name": "westberg"}, 17 | {"address": "185.161.193.105" ,"port": 6011, "name": "clio-1"}, 18 | {"address": "relay-guild.adaplus.io" ,"port": 6000, "name": "adaplus"} 19 | ], 20 | "advertise": false, 21 | "trustable": false, 22 | "hotValency": 3, 23 | "warmValency": 5 24 | } 25 | ], 26 | "publicRoots": [ 27 | { 28 | "accessPoints": [], 29 | "advertise": false 30 | } 31 | ], 32 | "useLedgerAfterSlot": 67067585 33 | } 34 | -------------------------------------------------------------------------------- /files/configs/mainnet/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "/opt/cardano/cnode/files/alonzo-genesis.json", 3 | "ByronGenesisFile": "/opt/cardano/cnode/files/byron-genesis.json", 4 | "ConwayGenesisFile": "/opt/cardano/cnode/files/conway-genesis.json", 5 | "EnableP2P": true, 6 | "LastKnownBlockVersion-Alt": 0, 7 | "LastKnownBlockVersion-Major": 3, 8 | "LastKnownBlockVersion-Minor": 0, 9 | "MaxKnownMajorProtocolVersion": 2, 10 | "MinNodeVersion": "10.1.4", 11 | "PeerSharing": false, 12 | "Protocol": "Cardano", 13 | "RequiresNetworkMagic": "RequiresNoMagic", 14 | "ShelleyGenesisFile": "/opt/cardano/cnode/files/shelley-genesis.json", 15 | "SnapshotInterval": 86400, 16 | "MempoolCapacityBytesOverride": 67108864, 17 | "EnableLogging": true, 18 | "EnableLogMetrics": false, 19 | "TargetNumberOfActivePeers": 20, 20 | "TargetNumberOfEstablishedPeers": 50, 21 | "TargetNumberOfKnownPeers": 100, 22 | "TargetNumberOfRootPeers": 60, 23 | "TraceAcceptPolicy": true, 24 | "TraceBlockFetchClient": true, 25 | "TraceBlockFetchDecisions": false, 26 | "TraceBlockFetchProtocol": false, 27 | "TraceBlockFetchProtocolSerialised": false, 28 | "TraceBlockFetchServer": false, 29 | "TraceChainDb": true, 30 | "TraceChainSyncBlockServer": false, 31 | "TraceChainSyncClient": true, 32 | "TraceChainSyncHeaderServer": false, 33 | "TraceChainSyncProtocol": false, 34 | "TraceConnectionManager": true, 35 | "TraceDNSResolver": true, 36 | "TraceDNSSubscription": true, 37 | "TraceDiffusionInitialization": true, 38 | "TraceErrorPolicy": true, 39 | "TraceForge": true, 40 | "TraceHandshake": true, 41 | "TraceInboundGovernor": true, 42 | "TraceIpSubscription": true, 43 | "TraceLedgerPeers": true, 44 | "TraceLocalChainSyncProtocol": false, 45 | "TraceLocalConnectionManager": true, 46 | "TraceLocalErrorPolicy": true, 47 | "TraceLocalHandshake": true, 48 | "TraceLocalRootPeers": true, 49 | "TraceLocalTxSubmissionProtocol": false, 50 | "TraceLocalTxSubmissionServer": false, 51 | "TraceMempool": false, 52 | "TraceMux": false, 53 | "TracePeerSelection": true, 54 | "TracePeerSelectionActions": true, 55 | "TracePublicRootPeers": true, 56 | "TraceServer": true, 57 | "TraceTxInbound": false, 58 | "TraceTxOutbound": false, 59 | "TraceTxSubmissionProtocol": false, 60 | "TracingVerbosity": "NormalVerbosity", 61 | "TurnOnLogMetrics": true, 62 | "TurnOnLogging": true, 63 | "defaultBackends": [ 64 | "KatipBK" 65 | ], 66 | "defaultScribes": [ 67 | [ 68 | "FileSK", 69 | "/opt/cardano/cnode/logs/node.json" 70 | ] 71 | ], 72 | "hasEKG": 12788, 73 | "hasPrometheus": [ 74 | "127.0.0.1", 75 | 12798 76 | ], 77 | "minSeverity": "Info", 78 | "options": { 79 | "mapBackends": { 80 | "cardano.node.metrics": [ 81 | "EKGViewBK" 82 | ], 83 | "cardano.node.resources": [ 84 | "EKGViewBK" 85 | ] 86 | }, 87 | "mapSubtrace": { 88 | "cardano.node.metrics": { 89 | "subtrace": "Neutral" 90 | } 91 | } 92 | }, 93 | "rotation": { 94 | "rpKeepFilesNum": 10, 95 | "rpLogLimitBytes": 50000000, 96 | "rpMaxAgeHours": 24 97 | }, 98 | "setupBackends": [ 99 | "KatipBK", 100 | "EKGViewBK" 101 | ], 102 | "setupScribes": [ 103 | { 104 | "scKind": "FileSK", 105 | "scName": "/opt/cardano/cnode/logs/node.json", 106 | "scFormat": "ScJson", 107 | "scRotation": null 108 | } 109 | ] 110 | } 111 | -------------------------------------------------------------------------------- /files/configs/mainnet/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "committeeNormal": 0.51, 4 | "committeeNoConfidence": 0.51, 5 | "hardForkInitiation": 0.51, 6 | "motionNoConfidence": 0.51, 7 | "ppSecurityGroup": 0.51 8 | }, 9 | "dRepVotingThresholds": { 10 | "motionNoConfidence": 0.67, 11 | "committeeNormal": 0.67, 12 | "committeeNoConfidence": 0.6, 13 | "updateToConstitution": 0.75, 14 | "hardForkInitiation": 0.6, 15 | "ppNetworkGroup": 0.67, 16 | "ppEconomicGroup": 0.67, 17 | "ppTechnicalGroup": 0.67, 18 | "ppGovGroup": 0.75, 19 | "treasuryWithdrawal": 0.67 20 | }, 21 | "committeeMinSize": 7, 22 | "committeeMaxTermLength": 146, 23 | "govActionLifetime": 6, 24 | "govActionDeposit": 100000000000, 25 | "dRepDeposit": 500000000, 26 | "dRepActivity": 20, 27 | "minFeeRefScriptCostPerByte": 15, 28 | "plutusV3CostModel": [ 29 | 100788, 30 | 420, 31 | 1, 32 | 1, 33 | 1000, 34 | 173, 35 | 0, 36 | 1, 37 | 1000, 38 | 59957, 39 | 4, 40 | 1, 41 | 11183, 42 | 32, 43 | 201305, 44 | 8356, 45 | 4, 46 | 16000, 47 | 100, 48 | 16000, 49 | 100, 50 | 16000, 51 | 100, 52 | 16000, 53 | 100, 54 | 16000, 55 | 100, 56 | 16000, 57 | 100, 58 | 100, 59 | 100, 60 | 16000, 61 | 100, 62 | 94375, 63 | 32, 64 | 132994, 65 | 32, 66 | 61462, 67 | 4, 68 | 72010, 69 | 178, 70 | 0, 71 | 1, 72 | 22151, 73 | 32, 74 | 91189, 75 | 769, 76 | 4, 77 | 2, 78 | 85848, 79 | 123203, 80 | 7305, 81 | -900, 82 | 1716, 83 | 549, 84 | 57, 85 | 85848, 86 | 0, 87 | 1, 88 | 1, 89 | 1000, 90 | 42921, 91 | 4, 92 | 2, 93 | 24548, 94 | 29498, 95 | 38, 96 | 1, 97 | 898148, 98 | 27279, 99 | 1, 100 | 51775, 101 | 558, 102 | 1, 103 | 39184, 104 | 1000, 105 | 60594, 106 | 1, 107 | 141895, 108 | 32, 109 | 83150, 110 | 32, 111 | 15299, 112 | 32, 113 | 76049, 114 | 1, 115 | 13169, 116 | 4, 117 | 22100, 118 | 10, 119 | 28999, 120 | 74, 121 | 1, 122 | 28999, 123 | 74, 124 | 1, 125 | 43285, 126 | 552, 127 | 1, 128 | 44749, 129 | 541, 130 | 1, 131 | 33852, 132 | 32, 133 | 68246, 134 | 32, 135 | 72362, 136 | 32, 137 | 7243, 138 | 32, 139 | 7391, 140 | 32, 141 | 11546, 142 | 32, 143 | 85848, 144 | 123203, 145 | 7305, 146 | -900, 147 | 1716, 148 | 549, 149 | 57, 150 | 85848, 151 | 0, 152 | 1, 153 | 90434, 154 | 519, 155 | 0, 156 | 1, 157 | 74433, 158 | 32, 159 | 85848, 160 | 123203, 161 | 7305, 162 | -900, 163 | 1716, 164 | 549, 165 | 57, 166 | 85848, 167 | 0, 168 | 1, 169 | 1, 170 | 85848, 171 | 123203, 172 | 7305, 173 | -900, 174 | 1716, 175 | 549, 176 | 57, 177 | 85848, 178 | 0, 179 | 1, 180 | 955506, 181 | 213312, 182 | 0, 183 | 2, 184 | 270652, 185 | 22588, 186 | 4, 187 | 1457325, 188 | 64566, 189 | 4, 190 | 20467, 191 | 1, 192 | 4, 193 | 0, 194 | 141992, 195 | 32, 196 | 100788, 197 | 420, 198 | 1, 199 | 1, 200 | 81663, 201 | 32, 202 | 59498, 203 | 32, 204 | 20142, 205 | 32, 206 | 24588, 207 | 32, 208 | 20744, 209 | 32, 210 | 25933, 211 | 32, 212 | 24623, 213 | 32, 214 | 43053543, 215 | 10, 216 | 53384111, 217 | 14333, 218 | 10, 219 | 43574283, 220 | 26308, 221 | 10, 222 | 16000, 223 | 100, 224 | 16000, 225 | 100, 226 | 962335, 227 | 18, 228 | 2780678, 229 | 6, 230 | 442008, 231 | 1, 232 | 52538055, 233 | 3756, 234 | 18, 235 | 267929, 236 | 18, 237 | 76433006, 238 | 8868, 239 | 18, 240 | 52948122, 241 | 18, 242 | 1995836, 243 | 36, 244 | 3227919, 245 | 12, 246 | 901022, 247 | 1, 248 | 166917843, 249 | 4307, 250 | 36, 251 | 284546, 252 | 36, 253 | 158221314, 254 | 26549, 255 | 36, 256 | 74698472, 257 | 36, 258 | 333849714, 259 | 1, 260 | 254006273, 261 | 72, 262 | 2174038, 263 | 72, 264 | 2261318, 265 | 64571, 266 | 4, 267 | 207616, 268 | 8310, 269 | 4, 270 | 1293828, 271 | 28716, 272 | 63, 273 | 0, 274 | 1, 275 | 1006041, 276 | 43623, 277 | 251, 278 | 0, 279 | 1 280 | ], 281 | "constitution": { 282 | "anchor": { 283 | "dataHash": "ca41a91f399259bcefe57f9858e91f6d00e1a38d6d9c63d4052914ea7bd70cb2", 284 | "url": "ipfs://bafkreifnwj6zpu3ixa4siz2lndqybyc5wnnt3jkwyutci4e2tmbnj3xrdm" 285 | }, 286 | "script": "fa24fb305126805cf2164c161d852a0e7330cf988f1fe558cf7d4a64" 287 | }, 288 | "committee": { 289 | "members": { 290 | "scriptHash-df0e83bde65416dade5b1f97e7f115cc1ff999550ad968850783fe50": 580, 291 | "scriptHash-b6012034ba0a7e4afbbf2c7a1432f8824aee5299a48e38e41a952686": 580, 292 | "scriptHash-ce8b37a72b178a37bbd3236daa7b2c158c9d3604e7aa667e6c6004b7": 580, 293 | "scriptHash-f0dc2c00d92a45521267be2d5de1c485f6f9d14466d7e16062897cf7": 580, 294 | "scriptHash-349e55f83e9af24813e6cb368df6a80d38951b2a334dfcdf26815558": 580, 295 | "scriptHash-84aebcfd3e00d0f87af918fc4b5e00135f407e379893df7e7d392c6a": 580, 296 | "scriptHash-e8165b3328027ee0d74b1f07298cb092fd99aa7697a1436f5997f625": 580 297 | }, 298 | "threshold": { 299 | "numerator": 2, 300 | "denominator": 3 301 | } 302 | } 303 | } -------------------------------------------------------------------------------- /files/configs/mainnet/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "mainnet", 5 | "NodeConfigFile": "/opt/cardano/cnode/files/config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresNoMagic", 8 | "EnableFutureGenesis": true, 9 | "defaultBackends": [ 10 | "KatipBK" 11 | ], 12 | "defaultScribes": [ 13 | [ 14 | "FileSK", 15 | "/opt/cardano/cnode/logs/dbsync.json" 16 | ] 17 | ], 18 | "insert_options": { 19 | "tx_out": { 20 | "value": "consumed", 21 | "use_address_table": true 22 | }, 23 | "ledger": "enable", 24 | "shelley": { 25 | "enable": true 26 | }, 27 | "multi_asset": { 28 | "enable": true 29 | }, 30 | "metadata": { 31 | "enable": true 32 | }, 33 | "plutus": { 34 | "enable": true 35 | }, 36 | "governance": "enable", 37 | "json_type": "text", 38 | "offchain_pool_data": "enable", 39 | "pool_stat": "enable", 40 | "tx_cbor": "enable" 41 | }, 42 | "minSeverity": "Info", 43 | "options": { 44 | "cfokey": { 45 | "value": "Release-1.0.0" 46 | }, 47 | "mapBackends": {}, 48 | "mapSeverity": { 49 | "db-sync-node": "Info", 50 | "db-sync-node.Mux": "Error", 51 | "db-sync-node.Subscription": "Error" 52 | }, 53 | "mapSubtrace": { 54 | "#ekgview": { 55 | "contents": [ 56 | [ 57 | { 58 | "contents": "cardano.epoch-validation.benchmark", 59 | "tag": "Contains" 60 | }, 61 | [ 62 | { 63 | "contents": ".monoclock.basic.", 64 | "tag": "Contains" 65 | } 66 | ] 67 | ], 68 | [ 69 | { 70 | "contents": "cardano.epoch-validation.benchmark", 71 | "tag": "Contains" 72 | }, 73 | [ 74 | { 75 | "contents": "diff.RTS.cpuNs.timed.", 76 | "tag": "Contains" 77 | } 78 | ] 79 | ], 80 | [ 81 | { 82 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 83 | "tag": "StartsWith" 84 | }, 85 | [ 86 | { 87 | "contents": "diff.RTS.gcNum.timed.", 88 | "tag": "Contains" 89 | } 90 | ] 91 | ] 92 | ], 93 | "subtrace": "FilterTrace" 94 | }, 95 | "#messagecounters.aggregation": { 96 | "subtrace": "NoTrace" 97 | }, 98 | "#messagecounters.ekgview": { 99 | "subtrace": "NoTrace" 100 | }, 101 | "#messagecounters.katip": { 102 | "subtrace": "NoTrace" 103 | }, 104 | "#messagecounters.monitoring": { 105 | "subtrace": "NoTrace" 106 | }, 107 | "#messagecounters.switchboard": { 108 | "subtrace": "NoTrace" 109 | }, 110 | "benchmark": { 111 | "contents": [ 112 | "GhcRtsStats", 113 | "MonotonicClock" 114 | ], 115 | "subtrace": "ObservableTrace" 116 | }, 117 | "cardano.epoch-validation.utxo-stats": { 118 | "subtrace": "NoTrace" 119 | } 120 | } 121 | }, 122 | "rotation": { 123 | "rpKeepFilesNum": 10, 124 | "rpLogLimitBytes": 5000000, 125 | "rpMaxAgeHours": 24 126 | }, 127 | "setupBackends": [ 128 | "AggregationBK", 129 | "KatipBK" 130 | ], 131 | "setupScribes": [ 132 | { 133 | "scKind": "FileSK", 134 | "scName": "/opt/cardano/cnode/logs/dbsync.json", 135 | "scFormat": "ScJson", 136 | "scRotation": null 137 | } 138 | ] 139 | } 140 | -------------------------------------------------------------------------------- /files/configs/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 | -------------------------------------------------------------------------------- /files/configs/mainnet/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "bootstrapPeers": [ 3 | { 4 | "address": "backbone.cardano.iog.io", 5 | "port": 3001 6 | }, 7 | { 8 | "address": "backbone.mainnet.emurgornd.com", 9 | "port": 3001 10 | }, 11 | { 12 | "address": "backbone.mainnet.cardanofoundation.org", 13 | "port": 3001 14 | } 15 | ], 16 | "localRoots": [ 17 | { 18 | "accessPoints": [ 19 | {"address": "127.0.0.1", "port": 6000, "description": "replace-this-with-BP"}, 20 | {"address": "127.0.0.1", "port": 6001, "description": "replace-this-with-relay"} 21 | ], 22 | "advertise": false, 23 | "trustable": true, 24 | "hotValency": 2 25 | }, 26 | { 27 | "accessPoints": [ 28 | {"address": "208.118.69.126", "port": 3003, "pool": "PSB", "location": "NA/CA/Edmonton" }, 29 | {"address": "node-dus.poolunder.com", "port": 6900, "pool": "UNDR", "location": "EU/DE/Dusseldorf" }, 30 | {"address": "node-syd.poolunder.com", "port": 6900, "pool": "UNDR", "location": "OC/AU/Sydney" }, 31 | {"address": "148.72.153.168", "port": 16000, "pool": "AAA", "location": "NA/US/StLouis" }, 32 | {"address": "154.26.154.254", "port": 16000, "pool": "AAA", "location": "OC/AU" }, 33 | {"address": "relay1-pub.ahlnet.nu", "port": 2111, "pool": "AHL", "location": "EU/SE/Malmo" }, 34 | {"address": "relay2-pub.ahlnet.nu", "port": 2111, "pool": "AHL", "location": "EU/SE/Malmo" }, 35 | {"address": "relay1.clio.one", "port": 6010, "pool": "CLIO", "location": "EU/IT/Milan" }, 36 | {"address": "relay2.clio.one", "port": 6010, "pool": "CLIO", "location": "EU/IT/Bozlano" } 37 | ], 38 | "advertise": false, 39 | "trustable": false, 40 | "hotValency": 5, 41 | "warmValency": 9 42 | } 43 | ], 44 | "publicRoots": [ 45 | { 46 | "accessPoints": [], 47 | "advertise": false 48 | } 49 | ], 50 | "useLedgerAfterSlot": 128908821 51 | } 52 | -------------------------------------------------------------------------------- /files/configs/preprod/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "/opt/cardano/cnode/files/alonzo-genesis.json", 3 | "ByronGenesisFile": "/opt/cardano/cnode/files/byron-genesis.json", 4 | "ConwayGenesisFile": "/opt/cardano/cnode/files/conway-genesis.json", 5 | "EnableP2P": true, 6 | "LastKnownBlockVersion-Alt": 0, 7 | "LastKnownBlockVersion-Major": 2, 8 | "LastKnownBlockVersion-Minor": 0, 9 | "MinNodeVersion": "10.1.4", 10 | "PeerSharing": false, 11 | "Protocol": "Cardano", 12 | "RequiresNetworkMagic": "RequiresMagic", 13 | "ShelleyGenesisFile": "/opt/cardano/cnode/files/shelley-genesis.json", 14 | "SnapshotInterval": 86400, 15 | "MempoolCapacityBytesOverride": 8388608, 16 | "EnableLogging": true, 17 | "EnableLogMetrics": false, 18 | "TargetNumberOfActivePeers": 20, 19 | "TargetNumberOfEstablishedPeers": 50, 20 | "TargetNumberOfKnownPeers": 100, 21 | "TargetNumberOfRootPeers": 60, 22 | "TraceAcceptPolicy": true, 23 | "TraceBlockFetchClient": true, 24 | "TraceBlockFetchDecisions": false, 25 | "TraceBlockFetchProtocol": false, 26 | "TraceBlockFetchProtocolSerialised": false, 27 | "TraceBlockFetchServer": false, 28 | "TraceChainDb": true, 29 | "TraceChainSyncBlockServer": false, 30 | "TraceChainSyncClient": true, 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": true, 40 | "TraceInboundGovernor": true, 41 | "TraceIpSubscription": true, 42 | "TraceLedgerPeers": true, 43 | "TraceLocalChainSyncProtocol": false, 44 | "TraceLocalConnectionManager": true, 45 | "TraceLocalErrorPolicy": true, 46 | "TraceLocalHandshake": true, 47 | "TraceLocalRootPeers": true, 48 | "TraceLocalTxSubmissionProtocol": false, 49 | "TraceLocalTxSubmissionServer": false, 50 | "TraceMempool": true, 51 | "TraceMux": false, 52 | "TracePeerSelection": true, 53 | "TracePeerSelectionActions": true, 54 | "TracePublicRootPeers": true, 55 | "TraceServer": true, 56 | "TraceTxInbound": false, 57 | "TraceTxOutbound": false, 58 | "TraceTxSubmissionProtocol": false, 59 | "TracingVerbosity": "NormalVerbosity", 60 | "TurnOnLogMetrics": true, 61 | "TurnOnLogging": true, 62 | "defaultBackends": [ 63 | "KatipBK" 64 | ], 65 | "defaultScribes": [ 66 | [ 67 | "FileSK", 68 | "/opt/cardano/cnode/logs/node.json" 69 | ] 70 | ], 71 | "hasEKG": 12788, 72 | "hasPrometheus": [ 73 | "127.0.0.1", 74 | 12798 75 | ], 76 | "minSeverity": "Info", 77 | "options": { 78 | "mapBackends": { 79 | "cardano.node.metrics": [ 80 | "EKGViewBK" 81 | ], 82 | "cardano.node.resources": [ 83 | "EKGViewBK" 84 | ] 85 | }, 86 | "mapSubtrace": { 87 | "cardano.node.metrics": { 88 | "subtrace": "Neutral" 89 | } 90 | } 91 | }, 92 | "rotation": { 93 | "rpKeepFilesNum": 10, 94 | "rpLogLimitBytes": 50000000, 95 | "rpMaxAgeHours": 24 96 | }, 97 | "setupBackends": [ 98 | "KatipBK", 99 | "EKGViewBK" 100 | ], 101 | "setupScribes": [ 102 | { 103 | "scKind": "FileSK", 104 | "scName": "/opt/cardano/cnode/logs/node.json", 105 | "scFormat": "ScJson", 106 | "scRotation": null 107 | } 108 | ] 109 | } 110 | -------------------------------------------------------------------------------- /files/configs/preprod/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "committeeNormal": 0.51, 4 | "committeeNoConfidence": 0.51, 5 | "hardForkInitiation": 0.51, 6 | "motionNoConfidence": 0.51, 7 | "ppSecurityGroup": 0.51 8 | }, 9 | "dRepVotingThresholds": { 10 | "motionNoConfidence": 0.67, 11 | "committeeNormal": 0.67, 12 | "committeeNoConfidence": 0.6, 13 | "updateToConstitution": 0.75, 14 | "hardForkInitiation": 0.6, 15 | "ppNetworkGroup": 0.67, 16 | "ppEconomicGroup": 0.67, 17 | "ppTechnicalGroup": 0.67, 18 | "ppGovGroup": 0.75, 19 | "treasuryWithdrawal": 0.67 20 | }, 21 | "committeeMinSize": 7, 22 | "committeeMaxTermLength": 146, 23 | "govActionLifetime": 6, 24 | "govActionDeposit": 100000000000, 25 | "dRepDeposit": 500000000, 26 | "dRepActivity": 20, 27 | "minFeeRefScriptCostPerByte": 15, 28 | "plutusV3CostModel": [ 29 | 100788, 30 | 420, 31 | 1, 32 | 1, 33 | 1000, 34 | 173, 35 | 0, 36 | 1, 37 | 1000, 38 | 59957, 39 | 4, 40 | 1, 41 | 11183, 42 | 32, 43 | 201305, 44 | 8356, 45 | 4, 46 | 16000, 47 | 100, 48 | 16000, 49 | 100, 50 | 16000, 51 | 100, 52 | 16000, 53 | 100, 54 | 16000, 55 | 100, 56 | 16000, 57 | 100, 58 | 100, 59 | 100, 60 | 16000, 61 | 100, 62 | 94375, 63 | 32, 64 | 132994, 65 | 32, 66 | 61462, 67 | 4, 68 | 72010, 69 | 178, 70 | 0, 71 | 1, 72 | 22151, 73 | 32, 74 | 91189, 75 | 769, 76 | 4, 77 | 2, 78 | 85848, 79 | 123203, 80 | 7305, 81 | -900, 82 | 1716, 83 | 549, 84 | 57, 85 | 85848, 86 | 0, 87 | 1, 88 | 1, 89 | 1000, 90 | 42921, 91 | 4, 92 | 2, 93 | 24548, 94 | 29498, 95 | 38, 96 | 1, 97 | 898148, 98 | 27279, 99 | 1, 100 | 51775, 101 | 558, 102 | 1, 103 | 39184, 104 | 1000, 105 | 60594, 106 | 1, 107 | 141895, 108 | 32, 109 | 83150, 110 | 32, 111 | 15299, 112 | 32, 113 | 76049, 114 | 1, 115 | 13169, 116 | 4, 117 | 22100, 118 | 10, 119 | 28999, 120 | 74, 121 | 1, 122 | 28999, 123 | 74, 124 | 1, 125 | 43285, 126 | 552, 127 | 1, 128 | 44749, 129 | 541, 130 | 1, 131 | 33852, 132 | 32, 133 | 68246, 134 | 32, 135 | 72362, 136 | 32, 137 | 7243, 138 | 32, 139 | 7391, 140 | 32, 141 | 11546, 142 | 32, 143 | 85848, 144 | 123203, 145 | 7305, 146 | -900, 147 | 1716, 148 | 549, 149 | 57, 150 | 85848, 151 | 0, 152 | 1, 153 | 90434, 154 | 519, 155 | 0, 156 | 1, 157 | 74433, 158 | 32, 159 | 85848, 160 | 123203, 161 | 7305, 162 | -900, 163 | 1716, 164 | 549, 165 | 57, 166 | 85848, 167 | 0, 168 | 1, 169 | 1, 170 | 85848, 171 | 123203, 172 | 7305, 173 | -900, 174 | 1716, 175 | 549, 176 | 57, 177 | 85848, 178 | 0, 179 | 1, 180 | 955506, 181 | 213312, 182 | 0, 183 | 2, 184 | 270652, 185 | 22588, 186 | 4, 187 | 1457325, 188 | 64566, 189 | 4, 190 | 20467, 191 | 1, 192 | 4, 193 | 0, 194 | 141992, 195 | 32, 196 | 100788, 197 | 420, 198 | 1, 199 | 1, 200 | 81663, 201 | 32, 202 | 59498, 203 | 32, 204 | 20142, 205 | 32, 206 | 24588, 207 | 32, 208 | 20744, 209 | 32, 210 | 25933, 211 | 32, 212 | 24623, 213 | 32, 214 | 43053543, 215 | 10, 216 | 53384111, 217 | 14333, 218 | 10, 219 | 43574283, 220 | 26308, 221 | 10, 222 | 16000, 223 | 100, 224 | 16000, 225 | 100, 226 | 962335, 227 | 18, 228 | 2780678, 229 | 6, 230 | 442008, 231 | 1, 232 | 52538055, 233 | 3756, 234 | 18, 235 | 267929, 236 | 18, 237 | 76433006, 238 | 8868, 239 | 18, 240 | 52948122, 241 | 18, 242 | 1995836, 243 | 36, 244 | 3227919, 245 | 12, 246 | 901022, 247 | 1, 248 | 166917843, 249 | 4307, 250 | 36, 251 | 284546, 252 | 36, 253 | 158221314, 254 | 26549, 255 | 36, 256 | 74698472, 257 | 36, 258 | 333849714, 259 | 1, 260 | 254006273, 261 | 72, 262 | 2174038, 263 | 72, 264 | 2261318, 265 | 64571, 266 | 4, 267 | 207616, 268 | 8310, 269 | 4, 270 | 1293828, 271 | 28716, 272 | 63, 273 | 0, 274 | 1, 275 | 1006041, 276 | 43623, 277 | 251, 278 | 0, 279 | 1 280 | ], 281 | "constitution": { 282 | "anchor": { 283 | "dataHash": "ca41a91f399259bcefe57f9858e91f6d00e1a38d6d9c63d4052914ea7bd70cb2", 284 | "url": "ipfs://bafkreifnwj6zpu3ixa4siz2lndqybyc5wnnt3jkwyutci4e2tmbnj3xrdm" 285 | }, 286 | "script": "fa24fb305126805cf2164c161d852a0e7330cf988f1fe558cf7d4a64" 287 | }, 288 | "committee": { 289 | "members": { 290 | "scriptHash-a6a5e006fd4e8f51062dc431362369b2a43140abced8aa2ff2256d7b": 229, 291 | "scriptHash-6095e643ea6f1cccb6e463ec34349026b3a48621aac5d512655ab1bf": 229, 292 | "scriptHash-94c0de47e7ae32e3f7234ada5cf976506b68e3bb88c54dc53b4ba984": 229, 293 | "scriptHash-5098dfd0deba725fadd692198fc33ee959fbe7e6edf1b5a695e06e61": 229, 294 | "scriptHash-5a71f17f4ce4c1c0be053575d717ade6ad8a1d5453d02a65ce40d4b1": 229, 295 | "scriptHash-2f4a6c6f098e20ee4bfd5b39942c164575f8ceb348e754df5d0ec04f": 229, 296 | "scriptHash-94f51c795a6c11adb9c1e30f0b6def4230cbd0b8bc800098e2d2307b": 229 297 | }, 298 | "threshold": { 299 | "numerator": 2, 300 | "denominator": 3 301 | } 302 | } 303 | } -------------------------------------------------------------------------------- /files/configs/preprod/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "preprod", 5 | "NodeConfigFile": "/opt/cardano/cnode/files/config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "EnableFutureGenesis": true, 9 | "defaultBackends": [ 10 | "KatipBK" 11 | ], 12 | "defaultScribes": [ 13 | [ 14 | "FileSK", 15 | "/opt/cardano/cnode/logs/dbsync.json" 16 | ] 17 | ], 18 | "insert_options": { 19 | "tx_out": { 20 | "value": "consumed", 21 | "use_address_table": true 22 | }, 23 | "ledger": "enable", 24 | "shelley": { 25 | "enable": true 26 | }, 27 | "multi_asset": { 28 | "enable": true 29 | }, 30 | "metadata": { 31 | "enable": true 32 | }, 33 | "plutus": { 34 | "enable": true 35 | }, 36 | "governance": "enable", 37 | "json_type": "text", 38 | "offchain_pool_data": "enable", 39 | "pool_stat": "enable", 40 | "tx_cbor": "enable" 41 | }, 42 | "minSeverity": "Info", 43 | "options": { 44 | "cfokey": { 45 | "value": "Release-1.0.0" 46 | }, 47 | "mapBackends": {}, 48 | "mapSeverity": { 49 | "db-sync-node": "Info", 50 | "db-sync-node.Mux": "Error", 51 | "db-sync-node.Subscription": "Error" 52 | }, 53 | "mapSubtrace": { 54 | "#ekgview": { 55 | "contents": [ 56 | [ 57 | { 58 | "contents": "cardano.epoch-validation.benchmark", 59 | "tag": "Contains" 60 | }, 61 | [ 62 | { 63 | "contents": ".monoclock.basic.", 64 | "tag": "Contains" 65 | } 66 | ] 67 | ], 68 | [ 69 | { 70 | "contents": "cardano.epoch-validation.benchmark", 71 | "tag": "Contains" 72 | }, 73 | [ 74 | { 75 | "contents": "diff.RTS.cpuNs.timed.", 76 | "tag": "Contains" 77 | } 78 | ] 79 | ], 80 | [ 81 | { 82 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 83 | "tag": "StartsWith" 84 | }, 85 | [ 86 | { 87 | "contents": "diff.RTS.gcNum.timed.", 88 | "tag": "Contains" 89 | } 90 | ] 91 | ] 92 | ], 93 | "subtrace": "FilterTrace" 94 | }, 95 | "#messagecounters.aggregation": { 96 | "subtrace": "NoTrace" 97 | }, 98 | "#messagecounters.ekgview": { 99 | "subtrace": "NoTrace" 100 | }, 101 | "#messagecounters.katip": { 102 | "subtrace": "NoTrace" 103 | }, 104 | "#messagecounters.monitoring": { 105 | "subtrace": "NoTrace" 106 | }, 107 | "#messagecounters.switchboard": { 108 | "subtrace": "NoTrace" 109 | }, 110 | "benchmark": { 111 | "contents": [ 112 | "GhcRtsStats", 113 | "MonotonicClock" 114 | ], 115 | "subtrace": "ObservableTrace" 116 | }, 117 | "cardano.epoch-validation.utxo-stats": { 118 | "subtrace": "NoTrace" 119 | } 120 | } 121 | }, 122 | "rotation": { 123 | "rpKeepFilesNum": 10, 124 | "rpLogLimitBytes": 5000000, 125 | "rpMaxAgeHours": 24 126 | }, 127 | "setupBackends": [ 128 | "AggregationBK", 129 | "KatipBK" 130 | ], 131 | "setupScribes": [ 132 | { 133 | "scKind": "FileSK", 134 | "scName": "/opt/cardano/cnode/logs/dbsync.json", 135 | "scFormat": "ScJson", 136 | "scRotation": null 137 | } 138 | ] 139 | } 140 | -------------------------------------------------------------------------------- /files/configs/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 | -------------------------------------------------------------------------------- /files/configs/preprod/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "bootstrapPeers": [ 3 | { 4 | "address": "preprod-node.play.dev.cardano.org", 5 | "port": 3001 6 | } 7 | ], 8 | "localRoots": [ 9 | { 10 | "accessPoints": [ 11 | {"address": "127.0.0.1", "port": 6000, "description": "replace-this-with-BP"}, 12 | {"address": "127.0.0.1", "port": 6001, "description": "replace-this-with-relay"} 13 | ], 14 | "advertise": false, 15 | "trustable": true, 16 | "hotValency": 2 17 | }, 18 | { 19 | "accessPoints": [ 20 | {"address": "preprod-test.ahlnet.nu", "port": 2101, "pool": "AHL"}, 21 | {"address": "154.12.248.114", "port": 6000, "pool": "HOM1"}, 22 | {"address": "tn-preprod.psilobyte.io", "port": 4101, "pool": "PSBT"}, 23 | {"address": "c.rdlrt.top", "port": 18000, "pool": "RDLRT"} 24 | ], 25 | "advertise": false, 26 | "trustable": false, 27 | "hotValency": 2, 28 | "warmValency": 3 29 | } 30 | ], 31 | "publicRoots": [ 32 | { 33 | "accessPoints": [], 34 | "advertise": false 35 | } 36 | ], 37 | "useLedgerAfterSlot": 64454371 38 | } -------------------------------------------------------------------------------- /files/configs/preview/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "/opt/cardano/cnode/files/alonzo-genesis.json", 3 | "ByronGenesisFile": "/opt/cardano/cnode/files/byron-genesis.json", 4 | "ConwayGenesisFile": "/opt/cardano/cnode/files/conway-genesis.json", 5 | "EnableP2P": true, 6 | "ExperimentalHardForksEnabled": false, 7 | "ExperimentalProtocolsEnabled": false, 8 | "LastKnownBlockVersion-Alt": 0, 9 | "LastKnownBlockVersion-Major": 3, 10 | "LastKnownBlockVersion-Minor": 1, 11 | "MinNodeVersion": "10.1.4", 12 | "PeerSharing": false, 13 | "Protocol": "Cardano", 14 | "RequiresNetworkMagic": "RequiresMagic", 15 | "ShelleyGenesisFile": "/opt/cardano/cnode/files/shelley-genesis.json", 16 | "SnapshotInterval": 43200, 17 | "MempoolCapacityBytesOverride": 8388608, 18 | "EnableLogging": true, 19 | "EnableLogMetrics": false, 20 | "TargetNumberOfActivePeers": 20, 21 | "TargetNumberOfEstablishedPeers": 50, 22 | "TargetNumberOfKnownPeers": 100, 23 | "TargetNumberOfRootPeers": 60, 24 | "TestAllegraHardForkAtEpoch": 0, 25 | "TestAlonzoHardForkAtEpoch": 0, 26 | "TestMaryHardForkAtEpoch": 0, 27 | "TestShelleyHardForkAtEpoch": 0, 28 | "TraceAcceptPolicy": true, 29 | "TraceBlockFetchClient": true, 30 | "TraceBlockFetchDecisions": false, 31 | "TraceBlockFetchProtocol": false, 32 | "TraceBlockFetchProtocolSerialised": false, 33 | "TraceBlockFetchServer": false, 34 | "TraceChainDb": true, 35 | "TraceChainSyncBlockServer": false, 36 | "TraceChainSyncClient": true, 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": true, 46 | "TraceInboundGovernor": true, 47 | "TraceIpSubscription": true, 48 | "TraceLedgerPeers": true, 49 | "TraceLocalChainSyncProtocol": false, 50 | "TraceLocalConnectionManager": true, 51 | "TraceLocalErrorPolicy": true, 52 | "TraceLocalHandshake": true, 53 | "TraceLocalRootPeers": true, 54 | "TraceLocalTxSubmissionProtocol": false, 55 | "TraceLocalTxSubmissionServer": false, 56 | "TraceMempool": true, 57 | "TraceMux": false, 58 | "TracePeerSelection": true, 59 | "TracePeerSelectionActions": true, 60 | "TracePublicRootPeers": true, 61 | "TraceServer": true, 62 | "TraceTxInbound": false, 63 | "TraceTxOutbound": false, 64 | "TraceTxSubmissionProtocol": false, 65 | "TracingVerbosity": "NormalVerbosity", 66 | "TurnOnLogMetrics": true, 67 | "TurnOnLogging": true, 68 | "defaultBackends": [ 69 | "KatipBK" 70 | ], 71 | "defaultScribes": [ 72 | [ 73 | "FileSK", 74 | "/opt/cardano/cnode/logs/node.json" 75 | ] 76 | ], 77 | "hasEKG": 12788, 78 | "hasPrometheus": [ 79 | "127.0.0.1", 80 | 12798 81 | ], 82 | "minSeverity": "Info", 83 | "options": { 84 | "mapBackends": { 85 | "cardano.node.metrics": [ 86 | "EKGViewBK" 87 | ], 88 | "cardano.node.resources": [ 89 | "EKGViewBK" 90 | ] 91 | }, 92 | "mapSubtrace": { 93 | "cardano.node.metrics": { 94 | "subtrace": "Neutral" 95 | } 96 | } 97 | }, 98 | "rotation": { 99 | "rpKeepFilesNum": 10, 100 | "rpLogLimitBytes": 50000000, 101 | "rpMaxAgeHours": 24 102 | }, 103 | "setupBackends": [ 104 | "KatipBK", 105 | "EKGViewBK" 106 | ], 107 | "setupScribes": [ 108 | { 109 | "scKind": "FileSK", 110 | "scName": "/opt/cardano/cnode/logs/node.json", 111 | "scFormat": "ScJson", 112 | "scRotation": null 113 | } 114 | ] 115 | } 116 | -------------------------------------------------------------------------------- /files/configs/preview/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "committeeNormal": 0.51, 4 | "committeeNoConfidence": 0.51, 5 | "hardForkInitiation": 0.51, 6 | "motionNoConfidence": 0.51, 7 | "ppSecurityGroup": 0.51 8 | }, 9 | "dRepVotingThresholds": { 10 | "motionNoConfidence": 0.67, 11 | "committeeNormal": 0.67, 12 | "committeeNoConfidence": 0.6, 13 | "updateToConstitution": 0.75, 14 | "hardForkInitiation": 0.6, 15 | "ppNetworkGroup": 0.67, 16 | "ppEconomicGroup": 0.67, 17 | "ppTechnicalGroup": 0.67, 18 | "ppGovGroup": 0.75, 19 | "treasuryWithdrawal": 0.67 20 | }, 21 | "committeeMinSize": 0, 22 | "committeeMaxTermLength": 365, 23 | "govActionLifetime": 30, 24 | "govActionDeposit": 100000000000, 25 | "dRepDeposit": 500000000, 26 | "dRepActivity": 20, 27 | "minFeeRefScriptCostPerByte": 15, 28 | "plutusV3CostModel": [ 29 | 100788, 30 | 420, 31 | 1, 32 | 1, 33 | 1000, 34 | 173, 35 | 0, 36 | 1, 37 | 1000, 38 | 59957, 39 | 4, 40 | 1, 41 | 11183, 42 | 32, 43 | 201305, 44 | 8356, 45 | 4, 46 | 16000, 47 | 100, 48 | 16000, 49 | 100, 50 | 16000, 51 | 100, 52 | 16000, 53 | 100, 54 | 16000, 55 | 100, 56 | 16000, 57 | 100, 58 | 100, 59 | 100, 60 | 16000, 61 | 100, 62 | 94375, 63 | 32, 64 | 132994, 65 | 32, 66 | 61462, 67 | 4, 68 | 72010, 69 | 178, 70 | 0, 71 | 1, 72 | 22151, 73 | 32, 74 | 91189, 75 | 769, 76 | 4, 77 | 2, 78 | 85848, 79 | 123203, 80 | 7305, 81 | -900, 82 | 1716, 83 | 549, 84 | 57, 85 | 85848, 86 | 0, 87 | 1, 88 | 1, 89 | 1000, 90 | 42921, 91 | 4, 92 | 2, 93 | 24548, 94 | 29498, 95 | 38, 96 | 1, 97 | 898148, 98 | 27279, 99 | 1, 100 | 51775, 101 | 558, 102 | 1, 103 | 39184, 104 | 1000, 105 | 60594, 106 | 1, 107 | 141895, 108 | 32, 109 | 83150, 110 | 32, 111 | 15299, 112 | 32, 113 | 76049, 114 | 1, 115 | 13169, 116 | 4, 117 | 22100, 118 | 10, 119 | 28999, 120 | 74, 121 | 1, 122 | 28999, 123 | 74, 124 | 1, 125 | 43285, 126 | 552, 127 | 1, 128 | 44749, 129 | 541, 130 | 1, 131 | 33852, 132 | 32, 133 | 68246, 134 | 32, 135 | 72362, 136 | 32, 137 | 7243, 138 | 32, 139 | 7391, 140 | 32, 141 | 11546, 142 | 32, 143 | 85848, 144 | 123203, 145 | 7305, 146 | -900, 147 | 1716, 148 | 549, 149 | 57, 150 | 85848, 151 | 0, 152 | 1, 153 | 90434, 154 | 519, 155 | 0, 156 | 1, 157 | 74433, 158 | 32, 159 | 85848, 160 | 123203, 161 | 7305, 162 | -900, 163 | 1716, 164 | 549, 165 | 57, 166 | 85848, 167 | 0, 168 | 1, 169 | 1, 170 | 85848, 171 | 123203, 172 | 7305, 173 | -900, 174 | 1716, 175 | 549, 176 | 57, 177 | 85848, 178 | 0, 179 | 1, 180 | 955506, 181 | 213312, 182 | 0, 183 | 2, 184 | 270652, 185 | 22588, 186 | 4, 187 | 1457325, 188 | 64566, 189 | 4, 190 | 20467, 191 | 1, 192 | 4, 193 | 0, 194 | 141992, 195 | 32, 196 | 100788, 197 | 420, 198 | 1, 199 | 1, 200 | 81663, 201 | 32, 202 | 59498, 203 | 32, 204 | 20142, 205 | 32, 206 | 24588, 207 | 32, 208 | 20744, 209 | 32, 210 | 25933, 211 | 32, 212 | 24623, 213 | 32, 214 | 43053543, 215 | 10, 216 | 53384111, 217 | 14333, 218 | 10, 219 | 43574283, 220 | 26308, 221 | 10, 222 | 16000, 223 | 100, 224 | 16000, 225 | 100, 226 | 962335, 227 | 18, 228 | 2780678, 229 | 6, 230 | 442008, 231 | 1, 232 | 52538055, 233 | 3756, 234 | 18, 235 | 267929, 236 | 18, 237 | 76433006, 238 | 8868, 239 | 18, 240 | 52948122, 241 | 18, 242 | 1995836, 243 | 36, 244 | 3227919, 245 | 12, 246 | 901022, 247 | 1, 248 | 166917843, 249 | 4307, 250 | 36, 251 | 284546, 252 | 36, 253 | 158221314, 254 | 26549, 255 | 36, 256 | 74698472, 257 | 36, 258 | 333849714, 259 | 1, 260 | 254006273, 261 | 72, 262 | 2174038, 263 | 72, 264 | 2261318, 265 | 64571, 266 | 4, 267 | 207616, 268 | 8310, 269 | 4, 270 | 1293828, 271 | 28716, 272 | 63, 273 | 0, 274 | 1, 275 | 1006041, 276 | 43623, 277 | 251, 278 | 0, 279 | 1 280 | ], 281 | "constitution": { 282 | "anchor": { 283 | "dataHash": "ca41a91f399259bcefe57f9858e91f6d00e1a38d6d9c63d4052914ea7bd70cb2", 284 | "url": "ipfs://bafkreifnwj6zpu3ixa4siz2lndqybyc5wnnt3jkwyutci4e2tmbnj3xrdm" 285 | }, 286 | "script": "fa24fb305126805cf2164c161d852a0e7330cf988f1fe558cf7d4a64" 287 | }, 288 | "committee": { 289 | "members": { 290 | "scriptHash-ff9babf23fef3f54ec29132c07a8e23807d7b395b143ecd8ff79f4c7": 1000 291 | }, 292 | "threshold": { 293 | "numerator": 2, 294 | "denominator": 3 295 | } 296 | } 297 | } -------------------------------------------------------------------------------- /files/configs/preview/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "preview", 5 | "NodeConfigFile": "/opt/cardano/cnode/files/config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "EnableFutureGenesis": true, 9 | "defaultBackends": [ 10 | "KatipBK" 11 | ], 12 | "defaultScribes": [ 13 | [ 14 | "FileSK", 15 | "/opt/cardano/cnode/logs/dbsync.json" 16 | ] 17 | ], 18 | "insert_options": { 19 | "tx_out": { 20 | "value": "consumed", 21 | "use_address_table": true 22 | }, 23 | "ledger": "enable", 24 | "shelley": { 25 | "enable": true 26 | }, 27 | "multi_asset": { 28 | "enable": true 29 | }, 30 | "metadata": { 31 | "enable": true 32 | }, 33 | "plutus": { 34 | "enable": true 35 | }, 36 | "governance": "enable", 37 | "json_type": "text", 38 | "offchain_pool_data": "enable", 39 | "pool_stat": "enable", 40 | "tx_cbor": "enable" 41 | }, 42 | "minSeverity": "Info", 43 | "options": { 44 | "cfokey": { 45 | "value": "Release-1.0.0" 46 | }, 47 | "mapBackends": {}, 48 | "mapSeverity": { 49 | "db-sync-node": "Info", 50 | "db-sync-node.Mux": "Error", 51 | "db-sync-node.Subscription": "Error" 52 | }, 53 | "mapSubtrace": { 54 | "#ekgview": { 55 | "contents": [ 56 | [ 57 | { 58 | "contents": "cardano.epoch-validation.benchmark", 59 | "tag": "Contains" 60 | }, 61 | [ 62 | { 63 | "contents": ".monoclock.basic.", 64 | "tag": "Contains" 65 | } 66 | ] 67 | ], 68 | [ 69 | { 70 | "contents": "cardano.epoch-validation.benchmark", 71 | "tag": "Contains" 72 | }, 73 | [ 74 | { 75 | "contents": "diff.RTS.cpuNs.timed.", 76 | "tag": "Contains" 77 | } 78 | ] 79 | ], 80 | [ 81 | { 82 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 83 | "tag": "StartsWith" 84 | }, 85 | [ 86 | { 87 | "contents": "diff.RTS.gcNum.timed.", 88 | "tag": "Contains" 89 | } 90 | ] 91 | ] 92 | ], 93 | "subtrace": "FilterTrace" 94 | }, 95 | "#messagecounters.aggregation": { 96 | "subtrace": "NoTrace" 97 | }, 98 | "#messagecounters.ekgview": { 99 | "subtrace": "NoTrace" 100 | }, 101 | "#messagecounters.katip": { 102 | "subtrace": "NoTrace" 103 | }, 104 | "#messagecounters.monitoring": { 105 | "subtrace": "NoTrace" 106 | }, 107 | "#messagecounters.switchboard": { 108 | "subtrace": "NoTrace" 109 | }, 110 | "benchmark": { 111 | "contents": [ 112 | "GhcRtsStats", 113 | "MonotonicClock" 114 | ], 115 | "subtrace": "ObservableTrace" 116 | }, 117 | "cardano.epoch-validation.utxo-stats": { 118 | "subtrace": "NoTrace" 119 | } 120 | } 121 | }, 122 | "rotation": { 123 | "rpKeepFilesNum": 10, 124 | "rpLogLimitBytes": 5000000, 125 | "rpMaxAgeHours": 24 126 | }, 127 | "setupBackends": [ 128 | "AggregationBK", 129 | "KatipBK" 130 | ], 131 | "setupScribes": [ 132 | { 133 | "scKind": "FileSK", 134 | "scName": "/opt/cardano/cnode/logs/dbsync.json", 135 | "scFormat": "ScJson", 136 | "scRotation": null 137 | } 138 | ] 139 | } 140 | -------------------------------------------------------------------------------- /files/configs/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 | -------------------------------------------------------------------------------- /files/configs/preview/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "bootstrapPeers": [ 3 | { 4 | "address": "preview-node.play.dev.cardano.org", 5 | "port": 3001 6 | } 7 | ], 8 | "localRoots": [ 9 | { 10 | "accessPoints": [ 11 | {"address": "127.0.0.1", "port": 6000, "description": "replace-this-with-BP"}, 12 | {"address": "127.0.0.1", "port": 6001, "description": "replace-this-with-relay"} 13 | ], 14 | "advertise": false, 15 | "trustable": true, 16 | "hotValency": 2 17 | }, 18 | { 19 | "accessPoints": [ 20 | {"address": "preview-test.ahlnet.nu", "port": 2102, "pool": "AHL"}, 21 | {"address": "95.216.173.194", "port": 16000, "pool": "HOM1"}, 22 | {"address": "tn-preview.psilobyte.io", "port": 4201, "pool": "PSBT"}, 23 | {"address": "tn-preview2.psilobyte.io", "port": 4202, "pool": "PSBT"} 24 | ], 25 | "advertise": false, 26 | "trustable": false, 27 | "hotValency": 2, 28 | "warmValency": 3 29 | } 30 | ], 31 | "publicRoots": [ 32 | { 33 | "accessPoints": [], 34 | "advertise": false 35 | } 36 | ], 37 | "useLedgerAfterSlot": 53827185 38 | } -------------------------------------------------------------------------------- /files/configs/sanchonet/alonzo-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "collateralPercentage": 150, 3 | "costModels": { 4 | "PlutusV1": [ 5 | 197209, 6 | 0, 7 | 1, 8 | 1, 9 | 396231, 10 | 621, 11 | 0, 12 | 1, 13 | 150000, 14 | 1000, 15 | 0, 16 | 1, 17 | 150000, 18 | 32, 19 | 2477736, 20 | 29175, 21 | 4, 22 | 29773, 23 | 100, 24 | 29773, 25 | 100, 26 | 29773, 27 | 100, 28 | 29773, 29 | 100, 30 | 29773, 31 | 100, 32 | 29773, 33 | 100, 34 | 100, 35 | 100, 36 | 29773, 37 | 100, 38 | 150000, 39 | 32, 40 | 150000, 41 | 32, 42 | 150000, 43 | 32, 44 | 150000, 45 | 1000, 46 | 0, 47 | 1, 48 | 150000, 49 | 32, 50 | 150000, 51 | 1000, 52 | 0, 53 | 8, 54 | 148000, 55 | 425507, 56 | 118, 57 | 0, 58 | 1, 59 | 1, 60 | 150000, 61 | 1000, 62 | 0, 63 | 8, 64 | 150000, 65 | 112536, 66 | 247, 67 | 1, 68 | 150000, 69 | 10000, 70 | 1, 71 | 136542, 72 | 1326, 73 | 1, 74 | 1000, 75 | 150000, 76 | 1000, 77 | 1, 78 | 150000, 79 | 32, 80 | 150000, 81 | 32, 82 | 150000, 83 | 32, 84 | 1, 85 | 1, 86 | 150000, 87 | 1, 88 | 150000, 89 | 4, 90 | 103599, 91 | 248, 92 | 1, 93 | 103599, 94 | 248, 95 | 1, 96 | 145276, 97 | 1366, 98 | 1, 99 | 179690, 100 | 497, 101 | 1, 102 | 150000, 103 | 32, 104 | 150000, 105 | 32, 106 | 150000, 107 | 32, 108 | 150000, 109 | 32, 110 | 150000, 111 | 32, 112 | 150000, 113 | 32, 114 | 148000, 115 | 425507, 116 | 118, 117 | 0, 118 | 1, 119 | 1, 120 | 61516, 121 | 11218, 122 | 0, 123 | 1, 124 | 150000, 125 | 32, 126 | 148000, 127 | 425507, 128 | 118, 129 | 0, 130 | 1, 131 | 1, 132 | 148000, 133 | 425507, 134 | 118, 135 | 0, 136 | 1, 137 | 1, 138 | 2477736, 139 | 29175, 140 | 4, 141 | 0, 142 | 82363, 143 | 4, 144 | 150000, 145 | 5000, 146 | 0, 147 | 1, 148 | 150000, 149 | 32, 150 | 197209, 151 | 0, 152 | 1, 153 | 1, 154 | 150000, 155 | 32, 156 | 150000, 157 | 32, 158 | 150000, 159 | 32, 160 | 150000, 161 | 32, 162 | 150000, 163 | 32, 164 | 150000, 165 | 32, 166 | 150000, 167 | 32, 168 | 3345831, 169 | 1, 170 | 1 171 | ] 172 | }, 173 | "executionPrices": { 174 | "prMem": 5.77e-2, 175 | "prSteps": 7.21e-5 176 | }, 177 | "lovelacePerUTxOWord": 34482, 178 | "maxBlockExUnits": { 179 | "exUnitsMem": 50000000, 180 | "exUnitsSteps": 40000000000 181 | }, 182 | "maxCollateralInputs": 3, 183 | "maxTxExUnits": { 184 | "exUnitsMem": 10000000, 185 | "exUnitsSteps": 10000000000 186 | }, 187 | "maxValueSize": 5000 188 | } -------------------------------------------------------------------------------- /files/configs/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 | -------------------------------------------------------------------------------- /files/configs/sanchonet/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AlonzoGenesisFile": "/opt/cardano/cnode/files/alonzo-genesis.json", 3 | "ByronGenesisFile": "/opt/cardano/cnode/files/byron-genesis.json", 4 | "ConwayGenesisFile": "/opt/cardano/cnode/files/conway-genesis.json", 5 | "EnableP2P": true, 6 | "ExperimentalHardForksEnabled": true, 7 | "ExperimentalProtocolsEnabled": true, 8 | "LastKnownBlockVersion-Alt": 0, 9 | "LastKnownBlockVersion-Major": 3, 10 | "LastKnownBlockVersion-Minor": 1, 11 | "MinNodeVersion": "10.1.4", 12 | "PeerSharing": false, 13 | "Protocol": "Cardano", 14 | "RequiresNetworkMagic": "RequiresMagic", 15 | "ShelleyGenesisFile": "/opt/cardano/cnode/files/shelley-genesis.json", 16 | "SnapshotInterval": 43200, 17 | "MempoolCapacityBytesOverride": 8388608, 18 | "EnableLogging": true, 19 | "EnableLogMetrics": false, 20 | "TargetNumberOfActivePeers": 20, 21 | "TargetNumberOfEstablishedPeers": 50, 22 | "TargetNumberOfKnownPeers": 100, 23 | "TargetNumberOfRootPeers": 60, 24 | "TestAllegraHardForkAtEpoch": 0, 25 | "TestAlonzoHardForkAtEpoch": 0, 26 | "TestMaryHardForkAtEpoch": 0, 27 | "TestShelleyHardForkAtEpoch": 0, 28 | "TraceAcceptPolicy": true, 29 | "TraceBlockFetchClient": true, 30 | "TraceBlockFetchDecisions": false, 31 | "TraceBlockFetchProtocol": false, 32 | "TraceBlockFetchProtocolSerialised": false, 33 | "TraceBlockFetchServer": false, 34 | "TraceChainDb": true, 35 | "TraceChainSyncBlockServer": false, 36 | "TraceChainSyncClient": true, 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": true, 46 | "TraceInboundGovernor": true, 47 | "TraceIpSubscription": true, 48 | "TraceLedgerPeers": true, 49 | "TraceLocalChainSyncProtocol": false, 50 | "TraceLocalConnectionManager": true, 51 | "TraceLocalErrorPolicy": true, 52 | "TraceLocalHandshake": true, 53 | "TraceLocalRootPeers": true, 54 | "TraceLocalTxSubmissionProtocol": false, 55 | "TraceLocalTxSubmissionServer": false, 56 | "TraceMempool": true, 57 | "TraceMux": false, 58 | "TracePeerSelection": true, 59 | "TracePeerSelectionActions": true, 60 | "TracePublicRootPeers": true, 61 | "TraceServer": true, 62 | "TraceTxInbound": false, 63 | "TraceTxOutbound": false, 64 | "TraceTxSubmissionProtocol": false, 65 | "TracingVerbosity": "NormalVerbosity", 66 | "TurnOnLogMetrics": true, 67 | "TurnOnLogging": true, 68 | "defaultBackends": [ 69 | "KatipBK" 70 | ], 71 | "defaultScribes": [ 72 | [ 73 | "FileSK", 74 | "/opt/cardano/cnode/logs/node.json" 75 | ] 76 | ], 77 | "hasEKG": 12788, 78 | "hasPrometheus": [ 79 | "127.0.0.1", 80 | 12798 81 | ], 82 | "minSeverity": "Info", 83 | "options": { 84 | "mapBackends": { 85 | "cardano.node.metrics": [ 86 | "EKGViewBK" 87 | ], 88 | "cardano.node.resources": [ 89 | "EKGViewBK" 90 | ] 91 | }, 92 | "mapSubtrace": { 93 | "cardano.node.metrics": { 94 | "subtrace": "Neutral" 95 | } 96 | } 97 | }, 98 | "rotation": { 99 | "rpKeepFilesNum": 10, 100 | "rpLogLimitBytes": 50000000, 101 | "rpMaxAgeHours": 24 102 | }, 103 | "setupBackends": [ 104 | "KatipBK", 105 | "EKGViewBK" 106 | ], 107 | "setupScribes": [ 108 | { 109 | "scKind": "FileSK", 110 | "scName": "/opt/cardano/cnode/logs/node.json", 111 | "scFormat": "ScJson", 112 | "scRotation": null 113 | } 114 | ] 115 | } 116 | -------------------------------------------------------------------------------- /files/configs/sanchonet/conway-genesis.json: -------------------------------------------------------------------------------- 1 | { 2 | "poolVotingThresholds": { 3 | "committeeNormal": 0.51, 4 | "committeeNoConfidence": 0.51, 5 | "hardForkInitiation": 0.51, 6 | "motionNoConfidence": 0.51, 7 | "ppSecurityGroup": 0.51 8 | }, 9 | "dRepVotingThresholds": { 10 | "motionNoConfidence": 0.67, 11 | "committeeNormal": 0.67, 12 | "committeeNoConfidence": 0.6, 13 | "updateToConstitution": 0.75, 14 | "hardForkInitiation": 0.6, 15 | "ppNetworkGroup": 0.67, 16 | "ppEconomicGroup": 0.67, 17 | "ppTechnicalGroup": 0.67, 18 | "ppGovGroup": 0.75, 19 | "treasuryWithdrawal": 0.67 20 | }, 21 | "committeeMinSize": 0, 22 | "committeeMaxTermLength": 1000, 23 | "govActionLifetime": 60, 24 | "govActionDeposit": 100000000000, 25 | "dRepDeposit": 500000000, 26 | "dRepActivity": 20, 27 | "minFeeRefScriptCostPerByte": 15, 28 | "plutusV3CostModel": [ 29 | 100788, 30 | 420, 31 | 1, 32 | 1, 33 | 1000, 34 | 173, 35 | 0, 36 | 1, 37 | 1000, 38 | 59957, 39 | 4, 40 | 1, 41 | 11183, 42 | 32, 43 | 201305, 44 | 8356, 45 | 4, 46 | 16000, 47 | 100, 48 | 16000, 49 | 100, 50 | 16000, 51 | 100, 52 | 16000, 53 | 100, 54 | 16000, 55 | 100, 56 | 16000, 57 | 100, 58 | 100, 59 | 100, 60 | 16000, 61 | 100, 62 | 94375, 63 | 32, 64 | 132994, 65 | 32, 66 | 61462, 67 | 4, 68 | 72010, 69 | 178, 70 | 0, 71 | 1, 72 | 22151, 73 | 32, 74 | 91189, 75 | 769, 76 | 4, 77 | 2, 78 | 85848, 79 | 123203, 80 | 7305, 81 | -900, 82 | 1716, 83 | 549, 84 | 57, 85 | 85848, 86 | 0, 87 | 1, 88 | 1, 89 | 1000, 90 | 42921, 91 | 4, 92 | 2, 93 | 24548, 94 | 29498, 95 | 38, 96 | 1, 97 | 898148, 98 | 27279, 99 | 1, 100 | 51775, 101 | 558, 102 | 1, 103 | 39184, 104 | 1000, 105 | 60594, 106 | 1, 107 | 141895, 108 | 32, 109 | 83150, 110 | 32, 111 | 15299, 112 | 32, 113 | 76049, 114 | 1, 115 | 13169, 116 | 4, 117 | 22100, 118 | 10, 119 | 28999, 120 | 74, 121 | 1, 122 | 28999, 123 | 74, 124 | 1, 125 | 43285, 126 | 552, 127 | 1, 128 | 44749, 129 | 541, 130 | 1, 131 | 33852, 132 | 32, 133 | 68246, 134 | 32, 135 | 72362, 136 | 32, 137 | 7243, 138 | 32, 139 | 7391, 140 | 32, 141 | 11546, 142 | 32, 143 | 85848, 144 | 123203, 145 | 7305, 146 | -900, 147 | 1716, 148 | 549, 149 | 57, 150 | 85848, 151 | 0, 152 | 1, 153 | 90434, 154 | 519, 155 | 0, 156 | 1, 157 | 74433, 158 | 32, 159 | 85848, 160 | 123203, 161 | 7305, 162 | -900, 163 | 1716, 164 | 549, 165 | 57, 166 | 85848, 167 | 0, 168 | 1, 169 | 1, 170 | 85848, 171 | 123203, 172 | 7305, 173 | -900, 174 | 1716, 175 | 549, 176 | 57, 177 | 85848, 178 | 0, 179 | 1, 180 | 955506, 181 | 213312, 182 | 0, 183 | 2, 184 | 270652, 185 | 22588, 186 | 4, 187 | 1457325, 188 | 64566, 189 | 4, 190 | 20467, 191 | 1, 192 | 4, 193 | 0, 194 | 141992, 195 | 32, 196 | 100788, 197 | 420, 198 | 1, 199 | 1, 200 | 81663, 201 | 32, 202 | 59498, 203 | 32, 204 | 20142, 205 | 32, 206 | 24588, 207 | 32, 208 | 20744, 209 | 32, 210 | 25933, 211 | 32, 212 | 24623, 213 | 32, 214 | 43053543, 215 | 10, 216 | 53384111, 217 | 14333, 218 | 10, 219 | 43574283, 220 | 26308, 221 | 10, 222 | 16000, 223 | 100, 224 | 16000, 225 | 100, 226 | 962335, 227 | 18, 228 | 2780678, 229 | 6, 230 | 442008, 231 | 1, 232 | 52538055, 233 | 3756, 234 | 18, 235 | 267929, 236 | 18, 237 | 76433006, 238 | 8868, 239 | 18, 240 | 52948122, 241 | 18, 242 | 1995836, 243 | 36, 244 | 3227919, 245 | 12, 246 | 901022, 247 | 1, 248 | 166917843, 249 | 4307, 250 | 36, 251 | 284546, 252 | 36, 253 | 158221314, 254 | 26549, 255 | 36, 256 | 74698472, 257 | 36, 258 | 333849714, 259 | 1, 260 | 254006273, 261 | 72, 262 | 2174038, 263 | 72, 264 | 2261318, 265 | 64571, 266 | 4, 267 | 207616, 268 | 8310, 269 | 4, 270 | 1293828, 271 | 28716, 272 | 63, 273 | 0, 274 | 1, 275 | 1006041, 276 | 43623, 277 | 251, 278 | 0, 279 | 1 280 | ], 281 | "constitution": { 282 | "anchor": { 283 | "dataHash": "ca41a91f399259bcefe57f9858e91f6d00e1a38d6d9c63d4052914ea7bd70cb2", 284 | "url": "ipfs://bafkreifnwj6zpu3ixa4siz2lndqybyc5wnnt3jkwyutci4e2tmbnj3xrdm" 285 | }, 286 | "script": "fa24fb305126805cf2164c161d852a0e7330cf988f1fe558cf7d4a64" 287 | }, 288 | "committee": { 289 | "members": { 290 | "keyHash-77c0a65f9302bccab35b44adc1823cb66c88a66c97cf3de8236dd718": 1000 291 | }, 292 | "threshold": { 293 | "numerator": 2, 294 | "denominator": 3 295 | } 296 | } 297 | } -------------------------------------------------------------------------------- /files/configs/sanchonet/db-sync-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "EnableLogMetrics": false, 3 | "EnableLogging": true, 4 | "NetworkName": "sanchonet", 5 | "NodeConfigFile": "/opt/cardano/cnode/files/config.json", 6 | "PrometheusPort": 8080, 7 | "RequiresNetworkMagic": "RequiresMagic", 8 | "EnableFutureGenesis": false, 9 | "defaultBackends": [ 10 | "KatipBK" 11 | ], 12 | "defaultScribes": [ 13 | [ 14 | "FileSK", 15 | "/opt/cardano/cnode/logs/dbsync.json" 16 | ] 17 | ], 18 | "insert_options": { 19 | "tx_out": { 20 | "value": "consumed", 21 | "use_address_table": true 22 | }, 23 | "ledger": "enable", 24 | "shelley": { 25 | "enable": true 26 | }, 27 | "multi_asset": { 28 | "enable": true 29 | }, 30 | "metadata": { 31 | "enable": true 32 | }, 33 | "plutus": { 34 | "enable": true 35 | }, 36 | "governance": "enable", 37 | "json_type": "text", 38 | "offchain_pool_data": "enable", 39 | "pool_stat": "enable", 40 | "tx_cbor": "enable" 41 | }, 42 | "minSeverity": "Info", 43 | "options": { 44 | "cfokey": { 45 | "value": "Release-1.0.0" 46 | }, 47 | "mapBackends": {}, 48 | "mapSeverity": { 49 | "db-sync-node": "Info", 50 | "db-sync-node.Mux": "Error", 51 | "db-sync-node.Subscription": "Error" 52 | }, 53 | "mapSubtrace": { 54 | "#ekgview": { 55 | "contents": [ 56 | [ 57 | { 58 | "contents": "cardano.epoch-validation.benchmark", 59 | "tag": "Contains" 60 | }, 61 | [ 62 | { 63 | "contents": ".monoclock.basic.", 64 | "tag": "Contains" 65 | } 66 | ] 67 | ], 68 | [ 69 | { 70 | "contents": "cardano.epoch-validation.benchmark", 71 | "tag": "Contains" 72 | }, 73 | [ 74 | { 75 | "contents": "diff.RTS.cpuNs.timed.", 76 | "tag": "Contains" 77 | } 78 | ] 79 | ], 80 | [ 81 | { 82 | "contents": "#ekgview.#aggregation.cardano.epoch-validation.benchmark", 83 | "tag": "StartsWith" 84 | }, 85 | [ 86 | { 87 | "contents": "diff.RTS.gcNum.timed.", 88 | "tag": "Contains" 89 | } 90 | ] 91 | ] 92 | ], 93 | "subtrace": "FilterTrace" 94 | }, 95 | "#messagecounters.aggregation": { 96 | "subtrace": "NoTrace" 97 | }, 98 | "#messagecounters.ekgview": { 99 | "subtrace": "NoTrace" 100 | }, 101 | "#messagecounters.katip": { 102 | "subtrace": "NoTrace" 103 | }, 104 | "#messagecounters.monitoring": { 105 | "subtrace": "NoTrace" 106 | }, 107 | "#messagecounters.switchboard": { 108 | "subtrace": "NoTrace" 109 | }, 110 | "benchmark": { 111 | "contents": [ 112 | "GhcRtsStats", 113 | "MonotonicClock" 114 | ], 115 | "subtrace": "ObservableTrace" 116 | }, 117 | "cardano.epoch-validation.utxo-stats": { 118 | "subtrace": "NoTrace" 119 | } 120 | } 121 | }, 122 | "rotation": { 123 | "rpKeepFilesNum": 10, 124 | "rpLogLimitBytes": 5000000, 125 | "rpMaxAgeHours": 24 126 | }, 127 | "setupBackends": [ 128 | "AggregationBK", 129 | "KatipBK" 130 | ], 131 | "setupScribes": [ 132 | { 133 | "scKind": "FileSK", 134 | "scName": "/opt/cardano/cnode/logs/dbsync.json", 135 | "scFormat": "ScJson", 136 | "scRotation": null 137 | } 138 | ] 139 | } 140 | -------------------------------------------------------------------------------- /files/configs/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 | } -------------------------------------------------------------------------------- /files/configs/sanchonet/topology.json: -------------------------------------------------------------------------------- 1 | { 2 | "bootstrapPeers": [ 3 | { 4 | "address": "sanchonet-node.play.dev.cardano.org", 5 | "port": 3001 6 | } 7 | ], 8 | "localRoots": [ 9 | { 10 | "accessPoints": [], 11 | "advertise": false, 12 | "trustable": false, 13 | "hotValency": 1 14 | } 15 | ], 16 | "publicRoots": [ 17 | { 18 | "accessPoints": [], 19 | "advertise": false 20 | } 21 | ], 22 | "useLedgerAfterSlot": 33695977 23 | } -------------------------------------------------------------------------------- /files/docker/node/addons/banner.txt: -------------------------------------------------------------------------------- 1 | 2 | _____ _ __ __ ____ __ 3 | / ___/_ __(_) /__/ / / __ \___ ___ _______ _/ /____ _______ 4 | / (_ / // / / / _ / / /_/ / _ \/ -_) __/ _ `/ __/ _ \/ __(_-< 5 | \___/\_,_/_/_/\_,_/ \____/ .__/\__/_/ \_,_/\__/\___/_/ /___/ 6 | /_/ 7 | 8 | 9 | 10 | 11 | 12 | MENU 13 | Availbles tools: 14 | - cntools 15 | - gLiveView 16 | - cncli and cncli.sh 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /files/docker/node/addons/block_watcher.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # This script takes the first event identified as fisrt time block seen and stores it in a 5k file (/tmp/block_index.log) ready to be digested in our case by loki in grafana. 4 | # 5 | # This script was built with the intent to use the guild_operators work (including cntools) ready out of the box. 6 | # 7 | 8 | touch /tmp/block_list 9 | truncate -s 0 /tmp/block_list; 10 | truncate -s 0 /tmp/block_index.log; 11 | touch /tmp/block_index.idx 12 | touch /tmp/block_index.log 13 | truncate -s 0 /tmp/block_index.log; 14 | 15 | GREP=$(grep headerHash /opt/cardano/cnode/logs/node-0.json | jq .data.block.headerHash | uniq | grep -v null | cut -d "\"" -f 2 > /tmp/block_list) 16 | GREP2=$(grep TraceAdoptedBlock /opt/cardano/cnode/logs/node-0.json | jq .data.blockHash | sort | uniq | grep -v null | cut -d "\"" -f 2 >> /tmp/block_list) 17 | 18 | for i in $(cat /tmp/block_list); do 19 | grep $i /tmp/block_index.idx > /dev/null; QRESU=$?; 20 | if [[ $QRESU -gt 0 ]]; then 21 | BLOCK=$(cat /opt/cardano/cnode/logs/node-0.json | grep $i | head -n 1); 22 | BLOCK2=$(cat /opt/cardano/cnode/logs/node-0.json | grep TraceAdoptedBlock | grep $i | head -n 1); 23 | echo $BLOCK >> /tmp/block_index.log; 24 | echo $BLOCK >> /tmp/block_index.idx; 25 | if [ ! -z "$BLOCK2" ]; then 26 | echo $BLOCK2 >> /tmp/block_index.log; 27 | echo $BLOCK2 >> /tmp/block_index.idx; 28 | else 29 | echo "No TraceAdoptedBlock"; 30 | fi 31 | fi 32 | done 33 | 34 | tail -n 5000 /tmp/block_index.idx > /tmp/block_index.idx2 35 | mv /tmp/block_index.idx2 /tmp/block_index.idx 36 | -------------------------------------------------------------------------------- /files/docker/node/addons/crontab: -------------------------------------------------------------------------------- 1 | # Unlike any other crontab you don't have to run the `crontab' 2 | # command to install the new version when you edit this file 3 | # and files in /etc/cron.d. These files also have username fields, 4 | # that none of the other crontabs do. 5 | 6 | SHELL=/bin/bash 7 | PATH=/nix/var/nix/profiles/per-user/guild/profile/bin:/nix/var/nix/profiles/per-user/guild/profile/sbin:/opt/cardano/cnode/scripts:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin \ 8 | 9 | # Example of job definition: 10 | # .---------------- minute (0 - 59) 11 | # | .------------- hour (0 - 23) 12 | # | | .---------- day of month (1 - 31) 13 | # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 14 | # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 15 | # | | | | | 16 | # * * * * * user-name command to be executed 17 | #17 * * * * root cd / && run-parts --report /etc/cron.hourly 18 | #25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 19 | #47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 20 | #52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) 21 | 22 | #*/130 * * * * find /opt/cardano/cnode/logs/ -name "*.json" -type f -mtime +0 -type f -delete 23 | */35 * * * * history -c 24 | # Empty 25 | 26 | -------------------------------------------------------------------------------- /files/docker/node/addons/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | trap 'killall -s SIGINT cardano-node' SIGINT SIGTERM 4 | # "docker run --init" to enable the docker init proxy 5 | # To manually test: docker kill -s SIGTERM container 6 | 7 | head -n 8 ~/.scripts/banner.txt 8 | 9 | # shellcheck disable=SC1090 10 | . ~/.bashrc > /dev/null 2>&1 11 | 12 | [[ -z "${ENTRYPOINT_PROCESS}" ]] && export ENTRYPOINT_PROCESS=cnode.sh 13 | 14 | echo "NETWORK: $NETWORK $POOL_NAME $TOPOLOGY" 15 | echo "ENTRYPOINT_PROCESS: $ENTRYPOINT_PROCESS" 16 | 17 | [[ -z "${CNODE_HOME}" ]] && export CNODE_HOME=/opt/cardano/cnode 18 | [[ -z "${CNODE_PORT}" ]] && export CNODE_PORT=6000 19 | 20 | echo "NODE: $HOSTNAME - Port:$CNODE_PORT - $POOL_NAME"; 21 | cardano-node --version; 22 | 23 | if [[ "${ENABLE_BACKUP}" == "Y" ]] || [[ "${ENABLE_RESTORE}" == "Y" ]]; then 24 | [[ ! -d "${CNODE_HOME}"/backup/$NETWORK-db ]] && mkdir -p $CNODE_HOME/backup/$NETWORK-db 25 | dbsize=$(du -s $CNODE_HOME/db | awk '{print $1}') 26 | bksizedb=$(du -s $CNODE_HOME/backup/$NETWORK-db 2>/dev/null | awk '{print $1}') 27 | if [[ "${ENABLE_RESTORE}" == "Y" ]] && [[ "$dbsize" -lt "$bksizedb" ]]; then 28 | echo "Backup Started" 29 | cp -rf "${CNODE_HOME}"/backup/"${NETWORK}"-db/* "${CNODE_HOME}"/db 2>/dev/null 30 | echo "Backup Finished" 31 | fi 32 | 33 | if [[ "${ENABLE_BACKUP}" == "Y" ]] && [[ "$dbsize" -gt "$bksizedb" ]]; then 34 | echo "Restore Started" 35 | cp -rf "${CNODE_HOME}"/db/* "${CNODE_HOME}"/backup/"${NETWORK}"-db/ 2>/dev/null 36 | echo "Restore Finished" 37 | fi 38 | fi 39 | 40 | # Customisation 41 | customise () { 42 | find /opt/cardano/cnode/files -name "*config*.json" -print0 | xargs -0 sed -i 's/127.0.0.1/0.0.0.0/g' > /dev/null 2>&1 43 | grep -i ENABLE_CHATTR /opt/cardano/cnode/scripts/cntools.sh >/dev/null && sed -E -i 's/^#?ENABLE_CHATTR=(true|false)?/ENABLE_CHATTR=false/g' /opt/cardano/cnode/scripts/cntools.sh > /dev/null 2>&1 44 | grep -i ENABLE_DIALOG /opt/cardano/cnode/scripts/cntools.sh >/dev/null && sed -E -i 's/^#?ENABLE_DIALOG=(true|false)?/ENABLE_DIALOG=false/' /opt/cardano/cnode/scripts/cntools.sh > /dev/null 2>&1 45 | find /opt/cardano/cnode/files -name "*config*.json" -print0 | xargs -0 sed -i 's/\"hasEKG\": 12788,/\"hasEKG\": [\n \"0.0.0.0\",\n 12788\n],/g' > /dev/null 2>&1 46 | return 0 47 | } 48 | 49 | load_configs () { 50 | cp -rf /conf/"${NETWORK}"/* "$CNODE_HOME"/files/ 51 | } 52 | 53 | if [[ -n "${NETWORK}" ]] ; then 54 | if [[ "${UPDATE_CHECK}" == "Y" ]] ; then 55 | "$CNODE_HOME"/scripts/guild-deploy.sh -n "$NETWORK" -u -s f > /dev/null 2>&1 56 | else 57 | load_configs 58 | fi 59 | else 60 | echo "Please set a NETWORK environment variable to one of: mainnet / preview / preprod / guild-mainnet / guild" 61 | echo "mount a '$CNODE_HOME/priv/files' volume containing: mainnet-config.json, mainnet-shelley-genesis.json, mainnet-byron-genesis.json, and mainnet-topology.json " 62 | echo "for active nodes set POOL_DIR environment variable where op.cert, hot.skey and vrf.skey files reside. (usually under '${CNODE_HOME}/priv/pool/$POOL_NAME' ) " 63 | echo "or just set POOL_NAME environment variable (for default path). " 64 | fi 65 | 66 | customise \ 67 | && exec "$CNODE_HOME/scripts/$ENTRYPOINT_PROCESS" "$@" -------------------------------------------------------------------------------- /files/docker/node/addons/healthcheck.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source /opt/cardano/cnode/scripts/env 4 | 5 | CCLI=$(which cardano-cli) 6 | 7 | if [[ "$NETWORK" == "guild-mainnet" ]]; then NETWORK=mainnet; fi 8 | 9 | # For querying tip, the seperation of testnet-magic vs mainnet as argument is optional 10 | 11 | FIRST=$($CCLI query tip --testnet-magic ${NWMAGIC} | jq .block) 12 | 13 | if [[ "${ENABLE_KOIOS}" == "N" ]] || [[ -z "${KOIOS_API}" ]]; then 14 | # when KOIOS is not enabled or KOIOS_API is unset, use default behavior 15 | sleep 60; 16 | SECOND=$($CCLI query tip --testnet-magic ${NWMAGIC} | jq .block) 17 | if [[ "$FIRST" -ge "$SECOND" ]]; then 18 | echo "there is a problem" 19 | exit 1 20 | else 21 | echo "we're healthy - node: $FIRST -> node: $SECOND" 22 | fi 23 | else 24 | # else leverage koios and only require the node is on tip 25 | CURL=$(which curl) 26 | JQ=$(which jq) 27 | URL="${KOIOS_API}/tip" 28 | SECOND=$($CURL -s "${URL}" | $JQ '.[0].block_no') 29 | for (( CHECK=1; CHECK<=20; CHECK++ )); do 30 | if [[ "$FIRST" -eq "$SECOND" ]]; then 31 | echo "we're healthy - node: $FIRST == koios: $SECOND" 32 | exit 0 33 | elif [[ "$FIRST" -lt "$SECOND" ]]; then 34 | sleep 3 35 | FIRST=$($CCLI query tip --testnet-magic ${NWMAGIC} | jq .block) 36 | elif [[ "$FIRST" -gt "$SECOND" ]]; then 37 | sleep 3 38 | SECOND=$($CURL "${KOIOS_URL}" | $JQ '.[0].block_no') 39 | fi 40 | done 41 | echo "there is a problem" 42 | exit 1 43 | fi 44 | -------------------------------------------------------------------------------- /files/docker/node/addons/ip2loc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | export CNODE_HOME=/opt/cardano/cnode 4 | 5 | truncate -s 0 /tmp/ip2trace_out.log; 6 | truncate -s 0 /tmp/ip2trace_in.log; 7 | 8 | pHOST=$HOSTNAME 9 | pIP=$(ifconfig eth0 | grep inet | grep -v inet6 | awk '{print $2}') 10 | pPORT=$(ps ax | grep "cardano-node run" | grep -v grep |sed 's/[^ ].*port //' | awk '{print $1}') 11 | 12 | netstat -nt | grep tcp | grep EST | grep "$pIP:$pPORT" | awk '{ print $5 }' | cut -d ':' -f 1 | grep -v 172 > /tmp/iptrace_list_in.csv 13 | netstat -nt | grep tcp | grep EST | grep "$pIP:$pPORT" | awk '{ print $5 }' | cut -d ':' -f 1 | grep 172 > /tmp/iptrace_list_in_local.csv 14 | netstat -nt | grep tcp | grep EST | grep -v "$pIP:$pPORT" | awk '{ print $5 }' | cut -d ':' -f 1 | grep -v 172 > /tmp/iptrace_list_out.csv 15 | netstat -nt | grep tcp | grep EST | grep -v "$pIP:$pPORT" | awk '{ print $5 }' | cut -d ':' -f 1 | grep 172 > /tmp/iptrace_list_out_local.csv 16 | sleep 3 2>&1; 17 | 18 | /usr/local/bin/ip2location -list /tmp/iptrace_list_in.csv -t all > /tmp/ip2trace_list_in.plog 19 | sleep 2; 20 | /usr/local/bin/ip2location -list /tmp/iptrace_list_out.csv -t all > /tmp/ip2trace_list_out.plog 21 | 22 | 23 | LinesIN=$(cat /tmp/ip2trace_list_in.plog | wc -l) 24 | LinesOUT=$(cat /tmp/ip2trace_list_out.plog | wc -l) 25 | timestamp=$(date +%D) 26 | time=$(date +%T) 27 | for ((i=1;i<=$LinesIN;i++)); do ADD=$(sed -n "$i"p /tmp/ip2trace_list_in.plog); echo "timestamp=$timestamp,time=$time,pHOST=$pHOST,pIP=$pIP,pPORT=$pPORT,app=$ADD" | sed s/" country_long"/",country_long"/g | sed s/" "/"_"/g | sed s/","/" "/g | sed s/"\""/""/g >> /tmp/ip2trace_in.log; done 28 | for ((i=1;i<=$LinesOUT;i++)); do ADD=$(sed -n "$i"p /tmp/ip2trace_list_out.plog); echo "timestamp=$timestamp,time=$time,pHOST=$pHOST,pIP=$pIP,pPORT=$pPORT,app=$ADD" | sed s/" country_long"/",country_long"/g | sed s/" "/"_"/g | sed s/","/" "/g | sed s/"\""/""/g >> /tmp/ip2trace_out.log; done 29 | -------------------------------------------------------------------------------- /files/docker/node/addons/promtail: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | start() { 4 | echo "promtail starting!"; 5 | /usr/local/bin/promtail --client.external-labels=promtail=${HOSTNAME} -config.file /etc/promtail.yml & 6 | ps ax | grep promtail | grep -v defunct | grep -v grep 7 | } 8 | 9 | stop() { 10 | promtailPid=$(ps ax | grep promtail | grep -v defunct | grep -v grep | awk '{print $1}') 11 | sudo kill -9 $promtailPid; 12 | echo "promtail stopped!"; 13 | sleep 2; 14 | } 15 | 16 | case "$1" in 17 | start) 18 | start 19 | ;; 20 | stop) 21 | stop 22 | ;; 23 | restart) 24 | echo "promtail restarting!"; 25 | stop 26 | start 27 | ;; 28 | status) 29 | tail /tmp/positions.yaml 30 | ;; 31 | *) 32 | echo "Usage: $0 {start|stop|status|restart}" 33 | esac 34 | 35 | exit 0 36 | -------------------------------------------------------------------------------- /files/docker/node/addons/promtail.yml: -------------------------------------------------------------------------------- 1 | server: 2 | http_listen_address: 127.0.0.1 3 | http_listen_port: 9080 4 | grpc_listen_address: 127.0.0.1 5 | grpc_listen_port: 9095 6 | 7 | positions: 8 | filename: /tmp/positions.yaml 9 | 10 | clients: 11 | - url: http://172.13.0.26:3100/loki/api/v1/push 12 | 13 | scrape_configs: 14 | - job_name: iptrace 15 | static_configs: 16 | - targets: 17 | - localhost 18 | labels: 19 | job: iptrace 20 | __path__: /tmp/ip2trace_*.log 21 | pipeline_stages: 22 | - match: 23 | selector: '{job="iptrace"}' 24 | stages: 25 | - regex: 26 | expression: '^timestamp=(?P\w+/\w+/\w+)\stime=(?P