Prerequisites

Setup Instructions

  1. Clone the Abstract node repository and navigate to external-node/:

    git clone https://github.com/Abstract-Foundation/abstract-node
    cd abstract-node/external-node
    

Running an Abstract Node Locally

Starting the Node

  • For a Mainnet instance [Coming Soon]:

    docker-compose --file mainnet-external-node.yml up -d
    
  • For a Testnet instance:

    docker-compose --file testnet-external-node.yml up -d
    

Reading Logs

Change <container name> to external-node-external-node-1

docker logs -f --tail 100 <container name>

Alternatives <container name> : external-node-prometheus-1 , external-node-postgres-1 , external-node-grafana-1

Resetting the Node State

  • For a Mainnet instance:

    docker-compose --file mainnet-external-node.yml down --volumes
    
  • For a Testnet instance:

    docker-compose --file testnet-external-node.yml down --volumes
    

Monitoring Node Status

Access the local Grafana dashboard to see the node status after recovery: Local Grafana Dashboard.

API Access

  • HTTP JSON-RPC API: Port 3060
  • WebSocket API: Port 3061

Important Notes

  • Initial Recovery: The node will recover from genesis (until we set up a snapshot) on its first run, which may take up to a while. During this period, the API server will not serve any requests.
  • Historical Data: For access to historical transaction data, consider recovery from DB dumps. Refer to the Advanced Setup section for more details.
  • DB Dump: For nodes that operate from a DB dump, which allows starting an Abstract node with a full historical transactions history, refer to the documentation on running from DB dumps at 03_running.md.

System Requirements

The following are minimal requirements:

  • CPU: A relatively modern CPU is recommended.
  • RAM: 32 GB
  • Storage:
    • Testnet Nodes: 30 GB
    • Mainnet Nodes: 300 GB, with the state growing about 1TB per month.
  • Network: 100 Mbps connection (1 Gbps+ recommended)

Advanced Setup

For additional configurations like monitoring, backups, recovery from DB dump or snapshot, and custom PostgreSQL settings, please refer to the ansible-en-role repository.