back to home

arkade-os / arkd

Ark Server implementation that powers Arkade

158 stars
56 forks
100 issues
GoMakefileShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing arkade-os/arkd in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/arkade-os/arkd)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

arkd > **⚠️ IMPORTANT DISCLAIMER: ALPHA SOFTWARE** > is currently in alpha stage. This software is experimental and under active development. > **DO NOT ATTEMPT TO USE IN PRODUCTION**. Use at your own risk. What is arkd? is the server implementation of Arkade instance that builds on top of the Ark protocol, a Bitcoin scaling solution that enables fast, low-cost off-chain transactions while maintaining Bitcoin's security guarantees. As an Arkade Operator, the server: • Creates and manages Batch Outputs through on-chain Bitcoin transactions • Facilitates off-chain transactions between users • Provides liquidity for commitment transactions (on-chain settlements that finalize each batch) The Operator's role is designed with strict boundaries that ensure users always maintain control over their funds. This architecture allows for efficient transaction batching while preserving the trustless nature of Bitcoin. Supported Networks and Wallets supports the following Bitcoin network: • regtest • testnet3 • signet • mutinynet • mainnet and makes use of arkd-wallet, an on-chain wallet based on NBXplorer, as liquidity provider and optionally also as signer. Usage Documentation In this documentation, you'll learn how to install and use , a Bitcoin server for off-chain Bitcoin transactions. Installing from GitHub Releases • Download the latest binary from the GitHub Releases page • Make the binary executable: • Move the binary to a directory in your PATH (optional): Configuration Options The server can be configured using environment variables. | Environment Variable | Description | Default | |-------------------------------------|---------------------------------------------------------------------------------|--------------------------------| | | Directory to store data | App data directory | | | Port (public) to listen on | | | | Admin port (private) to listen on, fallback to service port if 0 | | | | Logging level (0-6, where 6 is trace) | (info) | | | How long a batch session lasts (in seconds) before timing out once it started | | | | Database type (postgres, sqlite, badger) | | | | Postgres connection url if is set to | - | | | Event database type (postgres, badger) | | | | Event database url if is set to | - | | | Toggles database creation when it does not exist | | | | Transaction builder type (covenantless) | | | | Cache service type (redis, inmemory) | | | | Redis db connection url if is set to | - | | | Maximum number of retries for Redis write operations in case of conflicts | - | | | VTXO tree expiry in seconds | (7 days) | | | Unilateral exit delay in seconds | (24 hours) | | | Boarding exit delay in seconds | (3 months) | | | Esplora API URL | | | | The arkd wallet address to connect to in the form | - | | | The signer address to connect to in the form | value of | | | Disable macaroon authentication | | | | Disable TLS | | | | Wallet unlocker type (env, file) to enable auto-unlock | - | | | Path to unlocker file | - | | | Wallet unlocker password | - | | | Maximum number of participants per round | | | | Minimum number of participants per round | | | | The maximum allowed amount for boarding or collaborative exit | (unset) | | | The minimum allowed amount for boarding or collaborative exit | (dust) | | | The maximum allowed amount for vtxos | (unset) | | | The minimum allowed amount for vtxos | (dust) | | | Ban duration in seconds | (5 minutes) | | | Number of crimes to trigger a ban | | | | Scheduler type (gocron, block) | | | | Checkpoint exit delay in seconds | (24 hours) | | | Extra IP addresses for TLS (comma-separated) | - | | | Extra domains for TLS (comma-separated) | - | | | Note URI prefix | - | | | Scheduled session start time (Unix timestamp) | - | | | Scheduled session end time (Unix timestamp) | - | | | Scheduled session period in minutes | - | | | Scheduled session duration in seconds | - | | | Min participants for scheduled sessions | - | | | Max participants for scheduled sessions | - | | | OpenTelemetry collector endpoint | - | | | OpenTelemetry push interval in seconds | | | | Allow CSV block type | | | | Heartbeat interval in seconds | | | | Enable round report service | | Provisioning Data Directory By default, stores all data in the following location: • Linux: • macOS: • Windows: You can specify a custom data directory using the environment variable. Connect to Bitcoin is the wallet used by as liquidity provider. It is based on NBXplorer and requires a running instance to connect to. You can check the example in the official repository, or our Docker Compose file, to see how to start one. To connect to your running NBXplorer instance use this environment variable: Configure signer can be used also as signer. The configuration can be done either via env vars or via API. To enable 's signer mode use this environment variable: Connect to wallet To connect to use this environment variable: Connect to signer By default, makes use of the provided also as signer, but you can customize its url either via environment variable or via API. Connect to custom signer To connect to a custom signer use this environment variable: Setup arkd • Start the wallet: • Start arkd: • Create a new wallet: Or restore from mnemonic: • Only if you didn't configure either the wallet as signer, or a custom signer, you must load the signer before unlocking the wallet, or will fail to start: Remember, if you use this command, you must use it at every restart unless you export the required environment variable(s). • Unlock the wallet: • Generate a funding address: • Fund the on-chain address with BTC and wait for at least 2 confirmations. • Check your wallet balance: • Withdraw funds from your wallet: For a complete list of available commands and options: Repository Structure • : Ark Protocol Buffer API specification. • : collection of reusable packages and services. • : collection of data structures and functions reusable by arkd and sdk. • : bitcoin wall…