Skip to main content
Version: Canary 🚧

08 TigerGraph Schema for Bitcoin

Vertex Definitions​

  1. Block

Represents a block in the blockchain.([Graph Database & Analytics][1])

CREATE VERTEX Block (
PRIMARY_ID hash STRING,
number UINT,
version UINT,
timestamp DATETIME,
nonce STRING,
bits STRING,
merkle_root STRING,
size UINT,
stripped_size UINT,
weight UINT,
transaction_count UINT
)
  1. Transaction

Represents a Bitcoin transaction.

CREATE VERTEX Transaction (
PRIMARY_ID hash STRING,
version UINT,
lock_time UINT,
size UINT,
virtual_size UINT,
input_count UINT,
output_count UINT,
input_value DOUBLE,
output_value DOUBLE,
fee DOUBLE,
is_coinbase BOOL
)
  1. Output

Represents an output from a transaction.

CREATE VERTEX Output (
PRIMARY_ID transaction_hash_index STRING, -- e.g., "txhash_0"
transaction_hash STRING,
index UINT,
value DOUBLE,
script_asm STRING,
script_hex STRING,
required_signatures UINT,
type STRING
)
  1. Address

Represents a Bitcoin address.([TigerGraph Documentation][2])

CREATE VERTEX Address (
PRIMARY_ID address STRING
)

Edge Definitions​

TigerGraph Edge Definitions with Relationship Comments

  1. txn_block
-- A Transaction is included in a Block
-- A Block contains a Transaction
CREATE DIRECTED EDGE txn_block (
FROM Transaction,
TO Block
) WITH REVERSE_EDGE="block_txn"
  1. txn_output
-- A Transaction generates an Output
-- An Output is generated by a Transaction
CREATE DIRECTED EDGE txn_output (
FROM Transaction,
TO Output
) WITH REVERSE_EDGE="output_txn"
  1. input_txn
-- An Output is used as an input by a Transaction (i.e., spent)
-- A Transaction consumes an Output as input
CREATE DIRECTED EDGE input_txn (
FROM Output,
TO Transaction
) WITH REVERSE_EDGE="txn_input"
  1. output_address
-- An Output is locked to an Address (via locking script)
-- An Address controls or owns the Output
CREATE DIRECTED EDGE output_address (
FROM Output,
TO Address
) WITH REVERSE_EDGE="address_output"
  1. block_chain
-- A Block links to the next Block in the blockchain
-- A Block follows the previous Block
CREATE DIRECTED EDGE block_chain (
FROM Block,
TO Block
) WITH REVERSE_EDGE="reverse_chain"

Graph Declaration​

CREATE GRAPH BitcoinGraph (
Block,
Transaction,
Output,
Address,
txn_block,
txn_output,
input_txn,
output_address,
block_chain
)