Skip to content

Bitcoin provenance

Ashish Gehani edited this page Jan 12, 2021 · 3 revisions

Data model

The description below explains how the Bitcoin blockchain is represented in the W3C PROV framework.

The data model allows rapid graph traversal of paths between arbitrary pairs of transactions, computation of the lineage of a payment, derivation of all transitive payees, identification of all payments associated with a Bitcoin address, and a suite of other analyses.


Blocks

Each Bitcoin block is represented by an Activity vertex. All the transactions that are part of the block are connected to it via WasInformedBy edges. Successive blocks are also connected via WasInformedBy edges.

PROV element Annotation Key Annotation Value's semantics
Activity
blockHash Identifier of the block
blockHeight Number of earlier blocks
blockChainwork Cumulative hashing to compute blockchain
blockConfirmations Count of later blocks
blockDifficulty Complexity of mining, explained here

Transactions

Each Bitcoin transaction is represented by an Activity vertex. All the input payments that are part of the transaction are connected to it via Used edges. All output payments that are part of the transaction are connected to it via WasGeneratedBy edges.

PROV element Annotation Key Annotation Value's semantics
Activity
transactionHash Identifier of the transaction
transactionLocktime Earliest time transaction is valid, explained here
transactionCoinbase Used to claim mining reward, explained here
Used
transactionValue Input payment amount
WasGeneratedBy
transactionValue Output payment amount

Payments

Each Bitcoin payment is represented by an Entity vertex. It is connected to a Bitcoin address via a WasAttributedTo edge.

PROV element Annotation Key Annotation Value's semantics
Entity
transactionHash Transaction in which the payment was an input or output
transactionIndex Which of the transaction's payments this is (with the count starting from 0)

Addresses

Each Bitcoin address is represented by an Agent vertex.

PROV element Annotation Key Annotation Value's semantics
Agent
address Payer's or payee's Bitcoin address, explained here
Clone this wiki locally