testnet-ops/nitro-bridge-setup
2024-09-09 17:22:37 +05:30
..
templates/specs Pass contract addresses as strings in vars files 2024-09-09 17:22:37 +05:30
.gitignore Keep separate gitignore files 2024-09-09 11:51:29 +05:30
bridge-vars.example.yml Rename vars files 2024-09-09 15:58:54 +05:30
README.md Update READMEs with remote host setup 2024-09-09 17:22:05 +05:30
run-nitro-bridge.yml Add ansible playbook to setup and run Nitro bridge (#4) 2024-09-09 06:11:31 +00:00
setup-vars.yml Add README steps to run nitro nodes on remote machine 2024-09-09 11:51:29 +05:30

nitro-bridge-setup

Setup Ansible

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

Setup and Run Nitro Bridge on Local Host

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

  • Copy the bridge-vars.example.yml vars file:

    cp bridge-vars.example.yml bridge-vars.yml
    
  • Edit bridge-vars.yml with the required values:

    # L1 WS endpoint
    nitro_l1_chain_url: ""
    
    # L2 WS endpoint
    nitro_l2_chain_url: ""
    
    # Private key for the bridge's nitro address
    nitro_sc_pk: ""
    
    # Private key for a funded account on L1
    # This account should have tokens for funding Nitro channels
    nitro_chain_pk: ""
    
    # L2 RPC endpoint
    optimism_url: ""
    
    # Private key for a funded account on L2 to use for contracts deployment on L2
    # Use the same account for L1 and L2 deployments
    optimism_deployer_pk: ""
    
    # Custom L2 token to be deployed
    token_name: "LaconicNetworkToken"
    token_symbol: "LNT"
    intial_token_supply: "129600"
    
    # Addresses of the deployed nitro contracts
    na_address: ""
    vpa_address: ""
    ca_address: ""
    
    # Address of deployed custom L1 token
    l1_asset_address: ""
    
  • To setup and run nitro bridge locally, execute the run-nitro-bridge.yml Ansible playbook:

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

    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 run-nitro-bridge.yml --extra-vars='{"target_host" : "localhost", "skip_container_build": true}' -kK --user $USER
    

Setup and Run Nitro Bridge 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 bridge-vars.yml file as described in the Local Setup section.

  • Execute the run-nitro-bridge.yml Ansible playbook for remote deployment:

    LANG=en_US.utf8 ansible-playbook -i hosts.ini run-nitro-bridge.yml --extra-vars='{ "target_host": "nitro_host"}' -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 run-nitro-bridge.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 bridge-deployment is created:

    • Check logs for deployments:

      # Check the bridge deployment logs, ensure that the node is running
      laconic-so deployment --dir bridge-deployment logs nitro-bridge -f
      

Get Contract Addresses

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

    • Get addresses of L2 nitro contracts:

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