Setup L1X Development Environment

Check the Video version of the Setup

Link to the Videoarrow-up-right

Before you start using L1X SDE, make sure you have the following prerequisites installed on your system:

Note: The current version of L1X SDE is compatible with the following Host OS: Linux | MacOS | Windows (WSL2)

  • Rust and Cargo

  • ProtoBuff

    sudo apt-get install protobuf

  • Devbox

    • Devbox is required for using L1X SDE. You can find the installation guide: https://www.jetpack.io/devbox/docs/quickstart/arrow-up-right to set up Devbox.

    • To install Devbox, run the command below in your terminal:

      curl -fsSL https://get.jetpack.io/devbox | bash
    • Devbox also needs the Nix Package Manager. If your system doesn't have Nix installed, Devbox will automatically install it for you with the default settings for your operating system.

  • Docker Engine & docker-compose

    • Docker Engine & docker-compose is essential for running L1X SDE Local Devnet. You can follow the installation guide: https://docs.docker.com/engine/install/arrow-up-right to set up Docker Engine & docker-compose https://docs.docker.com/compose/install/arrow-up-right on your system.

    • Additionally, ensure that you can run the Docker daemon as a non-root user by adding user to Docker group.

      • Create a docker group if there isn’t one:

        sudo groupadd docker
      • Add your user to the docker group:

        sudo usermod -aG docker $USER
      • Log out and log back in so that your group membership is re-evaluated.

    • To verify Docker installation, run the command below in your terminal:

      $ docker run --rm hello-world

      If Docker is installed correctly, you should see a message confirming that the installation is working.

       Hello from Docker!
      
       This message shows that your installation appears to be working correctly ...
  • l1x-forge

    • l1x-forge is a smart SDE command-line utility that streamlines L1X smart contract development. You can install it using the command:

      cargo install --locked --git https://github.com/L1X-Foundation-VM/l1x-cargo-sde-tools
    • To upgrade the l1x sde binary, use this command:

      cargo install --locked --force --git https://github.com/L1X-Foundation-VM/l1x-cargo-sde-tools
    • The l1x-forge tool is installed to $CARGO_HOME/bin. Make sure to update your system's PATH environment settings:

      PATH=$CARGO_HOME/bin:$PATH

Step 1: Setting Up Your Environment

  • 1.1. Create an empty folder for this demonstration.

  • 1.2. Change your current directory to the newly created folder.

Step 2: Checking the L1X Tool

  • 2.1. Ensure that the l1x-forge tool is accessible from your command line. And run the following command to see usage instructions for the tool:

  • 2.2. Now, let's take a look at the official supported templates available. Run the following command:

Step 3: Creating Your Smart Contract Workspace

  • 3.1. Use the l1x-forge command to create a new project workspace. Here, we'll name it "demo01_ft" and use the template "l1x-ft":

  • 3.2. After executing the command, you'll see a message confirming the creation of the contract "demo01_ft":

  • 3.3 Reference workspace populated from the template:

Step 4: Understanding Configuration Files and Default Settings

In this section, we'll provide a quick and simple overview of the configuration files and their default values. These files are crucial for setting up your workspace effectively.

  • 4.1 devbox.json: The devbox.json file contains important configuration settings for your workspace and workflow script commands. Here are some key properties:

    Configuration
    Default
    Description

    L1X_CFG_CHAIN_TYPE

    beta_mainnet

    Specifies the chain type for deploying and working with the workspace contract. You can choose between beta_mainnet or local_devnet.

    L1X_CFG_TOOLS

    kevincoutinho007/l1x-toolkit:0.1

    Indicates the version of the Docker toolkit tested with the template. It's recommended to use the same version for this demonstration.

    L1X_CFG_ARTIFACTS

    ./l1x-artifacts

    Points to the directory where your L1X artifacts are stored.

    L1X_CFG_CONTRACT

    l1x_ft

    Specifies the name of the contract you'll be working with.

    L1X_CFG_DC_FILE

    ./devnet-services-dc.yml

    Refers to the location of the docker-compose configuration file for devnet services.

    L1X_CFG_CASSANDRA1_DATA

    ./l1x-conf/cassandra1_data

    Defines the directory for Cassandra 1 data.

    L1X_CFG_CASSANDRA2_DATA

    ./l1x-conf/cassandra2_data

    Specifies the directory for Cassandra 2 data.

    L1X_CFG_CASSANDRA_HOST

    127.0.0.1

    Specifies the Cassandra 1 Host Address.

    L1X_CFG_CASSANDRA_PORT

    9042

    Defines the Cassandra 1 Port ID.

  • 4.2 l1x-conf/l1x_chain_config.yaml: Inside the l1x-conf/l1x_chain_config.yaml file, you'll find L1X chain-specific properties, including JSON RPC endpoints. By default, the template is set to work with the Beta Mainnet using the setting "L1X_CFG_CHAIN_TYPE": "beta_mainnet". If you want to switch to a local development network, simply update this setting to "L1X_CFG_CHAIN_TYPE": "local_devnet".

These configuration files and default values are vital for configuring your workspace to match your specific requirements easily.

Step 5: Getting Started with the Devbox Shell

  • 5.1 Activating the Devbox Shell: To begin, you'll need to activate the Devbox shell. During the initial activation, Devbox will automatically install all the necessary packages for your workspace. Here's how to do it:

  • Choose the Chain Type: Begin by selecting the "L1X_CFG_CHAIN_TYPE": "local_devnet" option. Then, open a new terminal and activate the devbox shell:

  • Open your terminal and enter the following command:

  • 5.2 Package Installation: The system will ensure that all the required packages are installed. Here is a list of the packages that will be installed:

  • 5.3 Sanity Testing: To make sure that the template and default configurations work correctly on your system, you can perform the following sanity tests:

    • To check the latest block height from the live Beta Mainnet, use this command:

Next: Let's Deploy your First Contract

Last updated