/ord

👁‍🗨 Rare and exotic sats

Primary LanguageRustCreative Commons Zero v1.0 UniversalCC0-1.0

ord

ord is an index, block explorer, and command-line wallet. It is experimental software with no warranty. See LICENSE for more details.

Ordinal theory imbues satoshis with numismatic value, allowing them to be collected and traded as curios.

Ordinal numbers are serial numbers for satoshis, assigned in the order in which they are mined, and preserved across transactions.

See the docs for documentation and guides.

See the BIP for a technical description of the assignment and transfer algorithm.

See the project board for currently prioritized issues.

See milestones to get a sense of where the project is and where it's going.

Join the Discord server to chat with fellow ordinal degenerates.

Tune in to the Twitch stream to watch us work on this project!

Wallet

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

  • Bitcoin Core is not aware of inscriptions and does not perform sat control. Using bitcoin-cli commands and RPC calls with ord wallets may lead to loss of inscriptions.

  • ord wallet commands automatically load the ord wallet given by the --wallet option, which defaults to 'ord'. Keep in mind that after running an ord wallet command, an ord wallet may be loaded.

  • Because ord has access to your Bitcoin Core wallets, ord should not be used with wallets that contain a material amount of funds. Keep ordinal and cardinal wallets segregated.

Pre-alpha wallet migration

Alpha ord wallets are not compatible with wallets created by previous versions of ord. To migrate, use ord wallet send from the old wallet to send sats and inscriptions to addresses generated by the new wallet with ord wallet receive.

Installation

ord 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://ordinals.com/install.sh | bash -s

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

Building

On Debian and Ubuntu, ord 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 ord from source:

git clone https://github.com/casey/ord.git
cd ord
cargo build --release

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

ord 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

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

If bitcoind is run locally by the same user, without additional configuration, ord 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 ord. See ord --help for details.

Logging

ord 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

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