COTI V2 Documentation
  • Welcome
  • Networks
    • Faucet
    • Contracts Addresses
    • Adding the COTI Network to Metamask
  • How COTI Works
    • Introduction
      • EVM Introduction
      • Conceptual Overview
      • Use Cases and Applications
      • COTI Architecture
    • Advanced Topics
      • Garbled Circuits
      • AES Keys
      • Precompiles
      • Whitepaper
      • COTI vs others
  • Build on COTI
    • Core Concepts
      • Account Onboarding Procedure
      • Private Data Types
      • Supported Operations on Private Data Types
    • Quickstart
    • Guides
      • Basic Private Smart Contract
      • Account Onboard
      • Sending a Transaction with Encrypted Inputs
      • Resolving a Transaction's Encrypted Outputs
      • Writing a Private Smart Contract
      • Dos and Don'ts
        • Proper Use of Types
        • No Constant/Immutable Secret Types
        • No Public Contract Variables
      • Best Practices
        • Careful Onboarding
        • Careful Decrypting
        • Don't loop over an array without an index
        • Check Overflow
    • Tools
      • TypeScript SDK
      • Ethers.js
      • Python SDK
      • Web3.py
      • Contracts Library
        • MPC Core
        • Data Privacy Framework
        • Tokens
          • Private ERC20
          • Private ERC721
        • Onboard
      • Hardhat
      • Remix Plugin
      • COTI MetaMask Snap
      • Developer Sandbox
  • Running a COTI Node
    • COTI Node Ecosystem Litepaper
  • COTI Bridge
    • Swap COTI V1 Funds to COTI V2
  • Support and Community
    • Glossary
    • Telegram
    • Discord
    • GitHub
    • X
    • YouTube
  • COTI Builders Program
Powered by GitBook
On this page
  • What is a COTI Node?
  • Why Run a Node?
  • Requirements
  • Recommended minimum hosted configuration
  • Recommended optimal hosted configuration
  • Setting up Your Node Environment
  • Installation Steps
  • Restarting Your Node
  • Node Configuration
  • Verifying Node Functionality
  • Incentives
  • Maintenance & Monitoring
  • Troubleshooting
  • FAQ
  • Next Steps

Was this helpful?

Edit on GitHub

Running a COTI Node

PreviousDeveloper SandboxNextCOTI Node Ecosystem Litepaper

Last updated 1 month ago

Was this helpful?

Running a node helps secure and decentralize the COTI network and support the overall ecosystem. While there are some similarities to other L2 networks, COTI’s architecture has its own nuances and requirements that we’ll cover here.

What is a COTI Node?

In the COTI network, Full Nodes are decentralized, lean clients that play a critical role in maintaining the network’s security, scalability, and overall functionality. Anyone is able to run a Full Node to support the network and optionally gain rewards.

Running a COTI full node, downloads a copy of the COTI blockchain and verifies the validity of every block. Unlike validator nodes in Ethereum, COTI full nodes do not actively participate in consensus nor in block proposal, as that is the job of the COTI sequencer (see )


Why Run a Node?

Running a COTI Node offers several benefits:

  • Network Participation: Contribute to the decentralization and robustness of the network.

  • Community Support: Strengthen the ecosystem and help drive adoption of COTI’s technology.

  • Rewards & Incentives: Earn fees for processing and confirming transactions (licensed nodes only).


Requirements

COTI Full Node software is provided as a docker image.

Disclaimer: Successfully operating, troubleshooting, and maintaining a node requires technical proficiency. Familiarity with tools such as Linux, Docker, and Git is assumed. Users not familiar with this technology stack should consider assigning their license to an existing node operator to minimize their technical requirements.

Software

  • Operating System: the following operating systems have been certified to run the node software:

    • Ubuntu 24.04.x (see )

  • Docker: version 28.0.1

  • Docker-Compose: version 2.29.1

Hardware

The following hardware specs are required to run a COTI full node:

Specification
Minimum
Recommended
Professional

vCPUs

2

4

8

Memory (GiB)

8

16

64

Storage

100 GB

200 GB

500 GB

In addition to the above hardware, a reliable, high-bandwidth internet connection is recommended.

Recommended minimum hosted configuration

  • AWS: m7a.Large (2 vCPUs, 8GB memory)

  • OVH: b2-15 (4 vCPUs, 15GB memory)

Disclaimer: The above configuration has been certified on Testnet; higher transaction volumes on Mainnet may require increased specifications.

Recommended optimal hosted configuration

  • AWS: r5n.2xlarge (8 vCPUs, 64GB memory)

  • OVH: r2-120 (8 vCPUs, 120GB memory)

Network

  • Open Ports: You need to open the following ports in your firewall or cloud environment to allow inbound connections:

    • 8545 - Allowing RPC requests to flow in

    • 8546 - Allowing WebSocket connection to flow in

    • 7400 - Allowing peer-to-peer connection

  • Static IP: Required to ensure stable RPC access, enabling continuous health monitoring.


Setting up Your Node Environment

COTI full nodes are run using docker. Docker provides a way for everyone to run battle-tested, reliable images, known to work with the network.

Prerequisites

  1. Git

  1. Docker

  1. Docker Compose

Installation Steps

The following recommended steps reflect best practices but should be performed carefully, as they may significantly impact the operating system.

  1. Recommended steps:

    1. Set host name (where <name>is your chosen node name)

      sudo hostnamectl set-hostname <name>-full-node

    2. Update package lists

      sudo apt update
      sudo apt upgrade

    3. Reboot system

      sudo reboot

    4. Update OS

      sudo do-release-upgrade

  2. Configure Docker

    • Add your user to the docker group:

      sudo usermod -aG docker $( whoami )

    • Logout and re-login

      logout

  3. Clone the COTI Full Node project

    git clone https://github.com/coti-io/coti-full-node.git

  4. Start Your Node

    1. Navigate to the newly created "coti-full-node" directory

      cd coti-full-node

    2. Execute node start script

      ./start_coti-full-node.sh

    3. Once the docker-compose has started the node, liveliness check will be executed

      ./liveness_coti-full-node.sh

      Output example:

      Initial block number: 208539
      Check 1: Block number is 208540
      Block number has progressed. Node is syncing.

If liveliness check passed locally it means that your node is syncing with the other nodes in the network.

  1. To Check Node Logs

    docker logs -f coti-full-node

Restarting Your Node

To restart your node follow these steps:

  1. Stop your node

    ./stop_coti-full-node.sh

  2. Start your node

    ./start_coti-full-node.sh

Node Configuration

If you are running a node without a license, no further configuration of the node is required. Simply ensure you are connected to the network.

Verifying Node Functionality

Metrics monitoring is not available yet for Testnet .

  • Node availability is crucial for the smooth operation of the network. To evaluate node availability, COTI leverages a monitoring platform that publishes this data. A node is considered available if it successfully responds to the eth_blockNumber request. Using this request ensures the node is actively synchronized with the network and functioning correctly.

Incentives

The economic structure of COTI nodes is designed to incentivize active participation and ensure the long-term sustainability of the network.

Licensed Full Nodes that maintain a minimum uptime of 98% are eligible to receive Validation Rewards, which are distributed every 103-hour Period (epoch). This uptime requirement underscores the importance of reliability and consistent performance within the network.

For more information on incentives, visit the "Node Economy" section of the COTI Node Ecosystem Litepaper.

Maintenance & Monitoring

  1. Regular Updates: Keep your node software updated to the latest version. This ensures you receive security patches and new features.

  2. Resource Usage: Monitor CPU, RAM, and disk space to ensure uninterrupted operation.

  3. Uptime: Use a process manager (like systemd) or Docker auto-restart policies to keep your node running if it crashes unexpectedly.

Troubleshooting

Common Issues:

  • Peer Connection Errors: Ensure your ports are open and your firewall allows inbound connections.

  • High Resource Usage: Upgrade your hardware or adjust configuration settings to reduce overhead.

Where to Get Help:

FAQ

  1. How many nodes can I run?

    1. There’s no set limit, but each node requires its own resources. Running multiple nodes can help decentralize the network but comes with higher operational costs.

  2. Can I run a node on a VPS or cloud platform?

    1. Absolutely. Just ensure the service meets the hardware, OS, and networking requirements.

  3. Do I earn more rewards by running a more powerful node?

    1. Generally, consistently high uptime can lead to more consistent rewards, however, the only measure to qualify for rewards is uptime.

  4. Is it mandatory to purchase a node license to run a node?

    1. No. A node license simply allows you to earn rewards for helping decentralize the network, however, it is not necessary to run a COTI node.

Next Steps

Congratulations on setting up your COTI Node! By running a node, you’re contributing to the security and decentralization of the COTI network.

The following related sections may provide helpful information:

  • COTI Node Ecosystem Litepaper

See

See

See

Metrics: Visit to track performance and status.

COTI Architecture
Linux Requirements for Docker
uptime.coti.io
COTI Discord
COTI Support
git-scm.com/book/en/v2/Getting-Started-Installing-Git
docs.docker.com/engine/install/ubuntu
docs.docker.com/compose/install/standalone