# Bria The bridge from your applications to the bitcoin network. Bria enables transaction batching and UTXO management providing the liquidity of on-chain UTXOs to multiple consumers.
Table of Contents - [Key features](#key-features) - [Developing](#developing) - [Dependencies](#dependencies) - [Nix package manager](#nix-package-manager) - [direnv \>= 2.30.0](#direnv--2300) - [Docker](#docker) - [Demo walkthrough](#demo-walkthrough) - [Testing](#testing) - [Running tests](#running-tests) - [End-to-end tests](#end-to-end-tests) - [Local daemon for E2E tests and exploration](#local-daemon-for-e2e-tests-and-exploration) - [License](#license)
## Key features - multi account / multi wallet / multi queue - you can configure multiple wallets scoped to an account - signing via multiple supported remote signers including feeding PSBTs manually - transaction batching via configurable payout queues (check the demo for details) - cloud ready - intended for use as part of a distributed system - designed to be horizontally scalable - support for idempotent operations via external IDs - embed and update external metadata on addresses and payouts to reference external data - globally ordered event sequence can be streamed to achieve guaranteed eventual consistency - advanced accounting via an embedded ledger - internal use of double sided bookkeeping - database dump of ledger conforms with accounting best practices - great for accountants / auditors to know exactly what is going on - secure by design - extensive automated testing (unit + integration in rust, end-to-end using BATS) - all sensitive credentials (like remote signer config) encrypted at rest to prevent db leaks comprimising funds ## Developing ### Dependencies #### Nix package manager * recommended install method using https://github.com/DeterminateSystems/nix-installer ``` curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install ``` #### direnv >= 2.30.0 * recommended install method from https://direnv.net/docs/installation.html: ``` curl -sfL https://direnv.net/install.sh | bash echo "eval \"\$(direnv hook bash)\"" >> ~/.bashrc source ~/.bashrc ``` #### Docker * choose the install method for your system https://docs.docker.com/desktop/ ### Demo walkthrough For a step-by-step guide on how to get started with the demo, see the [demo walkthrough](docs/demo.md). ### Testing To run commands in the [Nix](https://github.com/DeterminateSystems/nix-installer) environment, there are two primary methods: 1. **Using `direnv`:** If `direnv` is installed and hooked into your shell, simply `cd` into the repository. Nix will automatically bootstrap the environment for you using the flake. On the first run, you'll need to execute `direnv allow` to load the environment configuration. 2. **Manual entry:** Alternatively, you can manually enter the environment by executing `nix develop`. You can also run a specific command directly with `nix develop --command `, or use the environment as you prefer. #### Running tests - to run the tests, use the following command: ```bash make reset-deps next-watch ``` #### End-to-end tests - for bash-based end-to-end tests, we use [bats](https://bats-core.readthedocs.io/en/stable/) as a test runner. To execute these tests, run: ```bash make e2e ``` #### Local daemon for E2E tests and exploration - if your end-to-end tests stall, or if you simply wish to inspect the state or experiment locally, you can start the local daemon with: ```bash make local-daemon ``` - once the daemon is up, you can run CLI commands against it. For example: ```bash cargo run --bin bria help ``` ## License [Mozilla Public License 2.0](LICENSE)