Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

aesir

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aesir

Command line interface used for generating local Lightning test environment

  • 0.4.9
  • PyPI
  • Socket score

Maintainers
1

Aesir

Bitcoin-only LN Docker License: MIT Top Languages Size Last commit

Aesir banner

Prerequisites

  • python (3.8+)
  • pip
  • docker

Getting started

You can use aesir simply by installing via pip on your Terminal.

pip install aesir

And then you can begin deploying local cluster as such:

aesir deploy

The initial deployment may take some time at pulling required images from their respective repositories. Results may look as such:

$ pip install aesir
> ...
> Installing collected packages: aesir
> Successfully installed aesir-0.4.3
$ aesir deploy
> Deploy specified local cluster:            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01
> Generate addresses:                        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
> Mine initial capital for parties:          ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00

You will have docker containers running in the backend, ready to be interfaced by your local environment applications you are developing.

Begin local mining

In order to properly test many functionalities, you will need to send mining commands to local setup. You can achieve completely local and running environment with the following command:

Demonstration

Cluster types

Currently there are two supported cluster-types in this project. Specified by flags, --duo (default), or --cat, --ohm, --uno with the following set-up:

TypeDescription
catCustomized aesir-bitcoind-cat node that has OP_CAT enabled for experiments
duoContains two LND nodes named aesir-ping and aesir-pong unified by
one single aesir-bitcoind service.
ohmOnly has aesir-bitcoind without any Lightning nodes.
unoOnly has one LND node named aesir-lnd connected to aesir-bitcoind.

Peripheral containers

This project also helps you setup peripheral services to make development process easier, too. For example, if you want to deploy a duo-cluster with attached postgres database, run the following:

$ aesir deploy --with-postgres
> ...
$ aesir mine
> ╭───── containers ─────╮┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓
> │ aesir-postgres       │┃ Name          ┃ Nodekey      ┃ Channels  ┃ Peers  ┃ Height ┃ Synced? ┃
> │ aesir-pong           │┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩
> │ aesir-ping           ││ aesir-pong    │ 3da33d3eb12  │ 2         │ 1      │ 216    │    true │
> │ aesir-bitcoind       ││               │ deacf4e1a64  │           │        │        │         │
> │ ...                  ││ ...           │ ...          │ ...       │ ...    │ ...    │ ...     │

Or run an uno-cluster with both attached postgres database and redis solid store cache like this:

$ aesir deploy --uno --with-postgres --with-redis
> ...
$ aesir mine
> ╭───── containers ─────╮┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓
> │ aesir-postgres       │┃ Name          ┃ Nodekey      ┃ Channels  ┃ Peers  ┃ Height ┃ Synced? ┃
> │ aesir-redis          │┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩
> │ aesir-lnd            ││ aesir-lnd     │ c0ae6b158d0  │ 0         │ 0      │ 202    │    true │
> │ aesir-bitcoind       ││               │ 4194459b8f3  │           │        │        │         │
> │ ...                  ││ ...           │ ...          │ ...       │ ...    │ ...    │ ...     │

Cleanup

Use the following command to clean up active aesir-* containers:

aesir clean

🚧 This will resets the current test state, so use with care. Example below:

$ aesir clean
> Remove active containers:                  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:01

Change-logs

  • 0.3.1 Add aesir-cashu-mint & aesir-lnd-krub image setups and deployments w/ shared volumes
  • 0.3.2 Define classifiers on pyproject.toml for PyPI metadata
  • 0.3.3 Drop black and use ruff formatter and linter
  • 0.3.4 Simplify deployment workflows and
  • 0.3.5 Restructure project so that when installed, src folder will not be created
  • 0.3.6 Breakdown "setup" command into "build" and "pull"
  • 0.3.7 Lightning cluster now with ord
  • 0.3.8 Rename "ord" to "ord-server" to avoid confusion with cli
  • 0.3.9 Remove intermediate containers
  • 0.4.0 Resist electricity with "ohm" mode
  • 0.4.1 Remove Ordinals' spiked ball
  • 0.4.2 Disable bitcoind prune mode
  • 0.4.3 Implement dashboard walkthrough using blessed
  • 0.4.4 Add cat cluster in deployment and --bitcoind-cat flag for customized build
  • 0.4.5 The Yggdrasil update where docker build logs are chunked for display
  • 0.4.6 Create default wallet if no lnd containers
  • 0.4.7 (reverted) Remove unittesting from image build process
  • 0.4.8 Follow Productivity Notes for bitcoind-cat; Fix progress bar overlap.

Roadmap

  • Simplify schema.yml and embed commands to service definitions
  • De-couple from polarlightning images and build from aesir definitions
  • Remove deprecated section
  • Write click tests.
  • Add aesir-tesla-ball peripheral service using tesla-ball
  • Use joblib to speed up deployment with parallelization.
  • Create and add some type of ordapi peripheral service.

Contributions

Set up local environment

The following guide walks through setting up your local working environment using pyenv as Python version manager and uv as Python package manager. If you do not have pyenv installed, run the following command.

Install using Homebrew (Darwin)
brew install pyenv --head
Install using standalone installer (Darwin and Linux)
curl https://pyenv.run | bash

If you do not have uv installed, run the following command.

Install using Homebrew (Darwin)
brew install uv
Install using standalone installer (Darwin and Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh

Once you have pyenv Python version manager installed, you can install any version of Python above version 3.9 for this project. The following commands help you set up and activate a Python virtual environment where uv can download project dependencies from the PyPI open-sourced registry defined under pyproject.toml file.

Set up environment and synchroniz project dependencies
pyenv shell 3.11.9
uv venv  --python-preference system
source .venv/bin/activate
uv sync --dev

Known issues

You may run into this setback when first running this project. This is a docker-py issue widely known as of October 2022.

docker.errors.DockerException:
  Error while fetching server API version: (
    'Connection aborted.', FileNotFoundError(
      2, 'No such file or directory'
    )
  )

See the following issue for Mac OSX troubleshooting. docker from_env and pull is broken on mac Recommended fix is to run the following command:

sudo ln -s "$HOME/.docker/run/docker.sock" /var/run/docker.sock

License

This project is licensed under the terms of the MIT license.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc