Skip to content

Latest commit

 

History

History
74 lines (47 loc) · 4.58 KB

runtime.md

File metadata and controls

74 lines (47 loc) · 4.58 KB

CTL's Runtime Dependencies

In order to run CTL's Contract effects, several services are required. These can be accessed through a ContractEnv value that holds websocket connections, information about server hosts/ports, and other requisite information. Which services are required depends on which backend you are using.

The choice is either Ogmios+Kupo+cardano-node (a.k.a. "CTL backend") or Blockfrost.

Our nix environment includes CTL backend services, but for now Blockfrost can be only used externally (either by connecting the public SaaS or the run-your-own version. The self-hosted version still requires Ogmios for some of the endpoints).

Table of Contents

CTL Backend

Info in this section only applies to CTL backend services.

The services that are currently required are:

  • Ogmios
    • You must use Ogmios v5.2.0 or greater with CTL
    • Ogmios itself requires a running Cardano node, so you may also need to deploy a node. Node v1.34.0 or greater is recommended
    • You can also use our fork which has improved Nix integration
  • Kupo
    • Required to query UTxOs and resolve inline datums and reference scripts
    • You must use Kupo v2.2.0 or greater with CTL
    • Like Ogmios, Kupo requires a running Cardano node

To start all of them for tests, run npm run start-runtime.

Using NixOS module

CTL's dependencies can be configured and started via NixOS modules. See nix/test-nixos-configuration.nix for example.

Using CTL's runtime overlay

CTL's overlays.runtime (contained in runtime.nix) provides some mechanisms for conveniently launching all runtime services using Arion (itself a wrapper around docker-compose). To use this, you must have docker installed, the docker deamon running and you must have a setup based on Nix flakes (recommended as well for using CTL as a dependency for Purescript projects).

The project template flake uses the runtime overlay to launch all of the required services.

For launching services for developing CTL itself, see our documentation on development.

Changing network configurations

CTL supports using networks other than the public preview testnet to provide different development environments.

To choose a different network, you must specify an alternative way of getting the network configuration. The cardano-configurations repo provides configs for mainnet, preprod and a few other networks. The network.name parameter of buildCtlRuntime determines which of the network config directories is chosen.

You can also specify your own fork of cardano-configurations like this:

inputs.cardano-transaction-lib.inputs.cardano-configurations.follows = "...";

When changing networks, make sure that network.magic is correctly synchronized with value in config (see protocolConsts.protocolMagic in byron.json).

Blockfrost Backend

See here for the documentation.

Wallet requirements

In order to run most Contract actions in the browser, you must use one of the supported wallets. The following steps must be taken to ensure that you can run CTL contracts:

  1. Make sure that your wallet is running on the testnet (some wallets can be configured via a toggle in the settings menu, other provide a separate extension)
  2. Fund the wallet using the Testnet Faucet
  3. Make sure that you have set collateral for the wallet, which wallets reserve apart from other UTxOs