testnet-ops/nitro-contracts-setup
2024-09-09 17:44:59 +05:30
..
templates/specs Pass user when running ansible playbook 2024-09-09 17:44:59 +05:30
.gitignore Add README steps to deploy nitro contracts on remote machine 2024-09-09 11:51:29 +05:30
contract-vars.example.yml Pass user when running ansible playbook 2024-09-09 17:44:59 +05:30
deploy-contracts.yml Add ansible playbook to setup and run Nitro bridge (#4) 2024-09-09 06:11:31 +00:00
README.md Pass user when running ansible playbook 2024-09-09 17:44:59 +05:30
setup-vars.yml Pass contract addresses as strings in vars files 2024-09-09 17:22:37 +05:30

nitro-contracts-setup

Setup Ansible

To get started, follow the installation guide to setup ansible on your machine

Deploy Nitro Contracts on Local Host

The following commands have to be executed in the nitro-contracts-setup directory:

  • Copy the contract-vars-example.yml vars file

    cp contract-vars-example.yml contract-vars.yml
    
  • Edit contract-vars.yml and fill in the following values

    # L1 RPC endpoint
    geth_url: ""
    
    # L1 chain ID
    geth_chain_id: ""
    
    # Private key for a funded account on L1 to use for contracts deployment on L1
    geth_deployer_pk: ""
    
    # Custom L1 token to be deployed
    token_name: "LaconicNetworkToken"
    token_symbol: "LNT"
    initial_token_supply: "129600"
    
  • To deploy nitro contracts locally, execute the deploy-contracts.yml Ansible playbook:

    LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{ "target_host": "localhost"}' --user $USER -kK
    

    NOTE: By default, deployments are created in an out directory. To change this location, update the nitro_directory variable in the setup-vars.yml file

  • For skipping container build, set "skip_container_build" : true in the --extra-vars parameter:

    LANG=en_US.utf8 ansible-playbook deploy-contracts.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' --user $USER -kK
    

Deploy Nitro Contracts on Remote Host

To run the playbook on a remote host:

  • Create a new hosts.ini file:

    cp ../hosts.example.ini hosts.ini
    
  • Edit the hosts.ini file to run the playbook on a remote machine:

    [<deployment_host>]
    <host_name> ansible_host=<target_ip> ansible_user=<ssh_user> ansible_ssh_common_args='-o ForwardAgent=yes'
    
    • Replace <deployment_host> with nitro_host
    • Replace <host_name> with the alias of your choice
    • Replace <target_ip> with the IP address or hostname of the target machine
    • Replace <ssh_user> with the SSH username (e.g., dev, ubuntu)
  • Verify that you are able to connect to the host using the following command

    ansible all -m ping -i hosts.ini -k
    
    # Expected output:
    
    # <host_name> | SUCCESS => {
    #  "ansible_facts": {
    #      "discovered_interpreter_python": "/usr/bin/python3.10"
    #  },
    #  "changed": false,
    #  "ping": "pong"
    # }
    
  • Copy and edit the contract-vars.yml file as described in the local setup section

  • Execute the deploy-contracts.yml Ansible playbook for remote deployment:

    LANG=en_US.utf8 ansible-playbook -i hosts.ini deploy-contracts.yml --extra-vars='{ "target_host": "nitro_host"}'  --user $USER -kK
    
  • For skipping container build, run with "skip_container_build" : true in the --extra-vars parameter:

    LANG=en_US.utf8 ansible-playbook -i hosts.ini deploy-contracts.yml --extra-vars='{ "target_host": "nitro_host", "skip_container_build": true }' --user $USER -kK
    

Check Deployment Status

  • Run the following command in the directory where the nitro-contracts-deployment is created:

    • Check logs for deployments:

      # Check the L2 nitro contract deployment logs
      laconic-so deployment --dir nitro-contracts-deployment logs l2-nitro-contracts -f
      

Get Contract Addresses

  • Run the following commands in the directory where the deployments are created:

    • Get addresses of L1 nitro contracts:

      laconic-so deployment --dir nitro-contracts-deployment exec nitro-contracts "cat /app/deployment/nitro-addresses.json"