mirror of
https://github.com/romanz/electrs.git
synced 2024-11-19 09:54:09 +01:00
1.3 KiB
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).