1
0
mirror of https://github.com/romanz/electrs.git synced 2024-11-19 09:54:09 +01:00
electrs/doc/schema.md
2018-08-01 13:41:27 +03:00

1.3 KiB

Index Schema

The index is stored at a single RocksDB database using the following schema:

Transaction outputs' index

Allows efficiently finding all funding transactions for a specific address:

Code Script Hash Prefix Funding TxID Prefix
b'O' SHA256(script)[:8] txid[:8]

Transaction inputs' index

Allows efficiently finding spending transaction of a specific output:

Code Funding TxID Prefix Funding Output Index Spending TxID Prefix
b'I' txid[:8] uint16 txid[:8]

Full Transaction IDs

In order to save storage space, we store the full transaction IDs once, and use their 8-byte prefixes for the indexes above.

Code Transaction ID Confirmed height
b'T' txid (32 bytes) uint32

Note that this mapping allows us to use getrawtransaction RPC to retrieve actual transaction data from without -txindex enabled (by explicitly specifying the blockhash).