tyjvazum / arb

◉ Arbitrary Protocols on top of Bitcoin (Bitcoin NFTs/Ordinals, BRC-20, & Bitcoin Identities/Usernames)
GNU General Public License v3.0
21 stars 1 forks source link

arb

arb is a command-line wallet, index, and explorer interface that implements the arb protocol, which enables arbitrary protocols on top of Bitcoin, such as Bitcoin NFTs/Ordinals & Bitcoin Identities/Usernames.

It is experimental software, should be considered a work-in-progress, and has no warranty. All features may not be fully implemented currently. See issues and LICENSE for more details.

Join the Gitter room to chat about the arb ecosystem.

Features

Default Protocols

bfs Protocol

bid Protocol

bnw Protocol

ord Protocol

Wallet

arb relies on Bitcoin Core for key management and transaction signing. This has a number of implications that you must understand in order to use arb wallet commands safely:

Installation

arb is written in Rust and can be built from source. Pre-built binaries are available on the releases page.

You can install the latest pre-built binary from the command line with:

curl --proto '=https' --tlsv1.2 -fsLS https://raw.githubusercontent.com/tyjvazum/arb/master/install.sh | bash -s

Once arb is installed, you should be able to run arb --version on the command line.

Building

On Debian and Ubuntu, arb requires libssl-dev when building from source:

sudo apt-get install libssl-dev

You'll also need Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

To build arb from source:

git clone https://github.com/tyjvazum/arb.git
cd arb
cargo build --release

The default location for the arb binary once built is ./target/release/arb.

arb requires rustc version 1.67.0 or later. Run rustc --version to ensure you have this version. Run rustup update to get the latest stable release.

Syncing

arb requires a synced bitcoind node with -txindex to build the index of satoshi locations. arb communicates with bitcoind via RPC.

If bitcoind is run locally by the same user, without additional configuration, arb should find it automatically by reading the .cookie file from bitcoind's datadir, and connecting using the default RPC port.

If bitcoind is not on mainnet, is not run by the same user, has a non-default datadir, or a non-default port, you'll need to pass additional flags to arb. See arb --help for details.

Logging

arb uses env_logger. Set the RUST_LOG environment variable in order to turn on logging. For example, run the server and show info-level log messages and above:

$ RUST_LOG=info cargo run server

Logo

The arb logo is ◉, which is the Unicode "Fisheye" character with Unicode codepoint U+25C9. Other representations include HTML (decimal) ◉, HTML (hex) &#x25C9, CSS-code \0025C9, and JavaScript code \u25C9. It should ideally be displayed using the font color #F7931A, but when that isn't possible (e.g., on social media posts), using the default character in a black or white font color is acceptable as a fallback logo.

A PNG version of the logo (logo-1000x1000.png), in font color #F7931A, has also been included for use where needed.

New Releases

Release commit messages use the following template:

Release x.y.z

- Bump version: x.y.z → x.y.z
- Update changelog
- Update dependencies
- Update database schema version

Acknowledgements

This repository is based on the great work done in ord: https://github.com/casey/ord