Taproot Assets daemon · regtest, never reset · node snapshot

tapd Growth Bench

One load epoch runs on a schedule against a regtest network whose state is never wiped. The question is not how fast tapd is on a clean node, but what the same work costs once the asset store, the proof archive and the universe have real volume in them.

Load cases

Time to complete each case

Wall clock per case, measured separately. Because state is never reset, an upward slope is the cost of accumulated history rather than run-to-run noise.

Backend comparison

Universe server database: sqlite against postgres

uni-tapd and uni2-tapd are federation peers that both sync every asset, so they hold the same content under the same load and differ only in storage backend. Every epoch checks that by comparing their multiverse root hashes, which commit to the whole universe. Both figures come from tapd's own total_db_size, so they are measured the same way. Postgres carries a fixed multi-megabyte catalog baseline: read the slope, not the offset.

Backend comparison

Storage added per epoch

Marginal cost of one epoch's work on each backend. Flat means the cost per unit of work is holding; a rising line means each epoch is getting more expensive to store than the last.

By role

Minter and receiver database

alice-tapd always mints and bob-tapd always receives, because the send case requires a single minter. These two run different backends but do different jobs, so this is a per-role growth curve and not a backend comparison.

Memory · minter

alice-tapd memory

Resident set sampled once after the epoch's cases finish, so it is where memory settles rather than a peak during the run. The high water mark is memory.peak from the container's cgroup: it cannot be reset without root, so it only ever rises, and a mark that keeps climbing epoch after epoch is the leak signal. Split from the receiver because the two differ by roughly four times and would flatten each other on a shared scale.

Memory · receiver

bob-tapd memory

Same measurements on the receiving node, which does no minting and holds far fewer assets.

By role

Assets held

Cumulative asset count on the minter and the receiver.

Every epoch, as measured