Stream Ordinal Activities to an API
Ordhook is a tool that helps you find ordinal activities from the Bitcoin chain. Think of it like a detective that can find and track these activities for you. Once it finds these activities, it can be used to help build your own database. This guide will show you how to use Ordhook to stream these activities.
Configure Ordhook
This section walks you through streaming ordinal activities. To post the ordinal activity, you'll need to configure bitcoind. Refer to Setting up a bitcoin node to understand the steps to configure Bitcoind.
NOTE Ordhook is applicable to the Bitcoin chain only.
Once the Bitcoin node is configured, you can use the following command in your terminal to create a configuration for Ordhook.
ordhook config new --mainnet
You will see a success message "Created file Ordhook.toml" in your terminal.
The generated Ordhook.toml
file looks like this:
[storage]
working_dir = "ordhook"
# The Http Api allows you to register / deregister
# dynamically predicates.
# Disable by default.
#
# [http_api]
# http_port = 20456
# database_uri = "redis://localhost:6379/"
[network]
mode = "mainnet"
bitcoind_rpc_url = "http://0.0.0.0:8332"
bitcoind_rpc_username = "devnet"
bitcoind_rpc_password = "devnet"
# Bitcoin block events can be received by Chainhook
# either through a Bitcoin node's ZeroMQ interface,
# or through the Stacks node. Zmq is being
# used by default:
bitcoind_zmq_url = "tcp://0.0.0.0:18543"
# but stacks can also be used:
# stacks_node_rpc_url = "http://0.0.0.0:20443"
[limits]
max_number_of_bitcoin_predicates = 100
max_number_of_concurrent_bitcoin_scans = 100
max_number_of_processing_threads = 16
bitcoin_concurrent_http_requests_max = 16
max_caching_memory_size_mb = 32000
# Disable the following section if the state
# must be built locally
[bootstrap]
download_url = "https://archive.hiro.so/mainnet/ordhook/mainnet-ordhook-sqlite-latest"
[logs]
ordinals_internals = true
chainhook_internals = true
Observe that the bitcoind configured fields will appear in the Ordhook.toml
file. Now, ensure that these fields are configured with the right values and URLs, as shown below:
bitcoind_rpc_url = "http://0.0.0.0:8332"
bitcoind_rpc_username = "devnet"
bitcoind_rpc_password = "devnet"
bitcoind_zmq_url = "tcp://0.0.0.0:18543"
Post ordinal activity to an external endpoint
After adjusting the Ordhook.toml
settings to make them match the bitcoind configuration, the following command can be run to scan blocks and post events to a local server.
ordhook scan blocks 767430 767753 --post-to=http://localhost:3000/api/events --config-path=./Ordhook.toml
The above command uses Ordhook to stream and then post ordinal activities to http://localhost:3000/api/events
where you can build out your own database or custom views.