This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| WITH double_entry_book AS ( | |
| -- debits | |
| SELECT | |
| array_to_string(inputs.addresses, ",") as address | |
| , inputs.type | |
| , -inputs.value as value | |
| FROM `crypto-etl-bitcoin-prod.bitcoin_blockchain.inputs` as inputs | |
| UNION ALL |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| WITH | |
| input_metrics AS ( | |
| SELECT | |
| ARRAY_TO_STRING(inputs.addresses,',') AS address, | |
| SUM(inputs.value) as value, | |
| COUNT(inputs.value) as cnt, | |
| AVG(inputs.value) as mean, | |
| STDDEV(inputs.value) as std_dev | |
| FROM `crypto-etl-ethereum-dev.bitcoin_blockchain.transactions` AS transactions JOIN UNNEST(transactions.inputs) AS inputs | |
| GROUP BY 1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| WITH output_stats AS ( | |
| SELECT | |
| ARRAY_TO_STRING(outputs.addresses,',') AS output_address | |
| , block_timestamp AS output_block_time | |
| , DATE(EXTRACT(YEAR FROM block_timestamp), EXTRACT(MONTH FROM block_timestamp), 1) as output_block_month | |
| , LAG(block_timestamp) OVER (PARTITION BY ARRAY_TO_STRING(outputs.addresses,',') ORDER BY block_timestamp) AS output_prev_block_time | |
| , value | |
| , transaction_hash | |
| FROM `crypto-etl-ethereum-dev.bitcoin_blockchain.outputs` AS outputs | |
| ), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| WITH miner_addresses AS ( | |
| SELECT | |
| ARRAY_TO_STRING(outputs.addresses,',') AS miner | |
| FROM | |
| `crypto-etl-ethereum-dev.bitcoin_blockchain.blocks` AS blocks, | |
| `crypto-etl-ethereum-dev.bitcoin_blockchain.transactions` AS transactions JOIN UNNEST(outputs) AS outputs | |
| WHERE blocks.hash = transactions.block_hash | |
| AND is_coinbase IS TRUE | |
| AND ( FALSE | |
| -- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| WITH miner_addresses AS ( | |
| SELECT | |
| ARRAY_TO_STRING(outputs.addresses,',') AS miner | |
| FROM | |
| `crypto-etl-ethereum-dev.bitcoin_blockchain.blocks` AS blocks, | |
| `crypto-etl-ethereum-dev.bitcoin_blockchain.transactions` AS transactions JOIN UNNEST(outputs) AS outputs | |
| WHERE blocks.hash = transactions.block_hash | |
| AND is_coinbase IS TRUE | |
| AND ( FALSE | |
| -- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| CREATE INDEX ON :Block(height); | |
| CREATE INDEX ON :Transaction(hash); | |
| CREATE INDEX ON :Output(tx_hash, output_index); | |
| CREATE INDEX ON :Address(address_string); | |
| LOAD CSV WITH HEADERS FROM "http://storage.googleapis.com/bitcoin-neo4j-etl/blocks.csv" AS row | |
| MERGE (b:Block {height: toInt(row.number)}) | |
| ON CREATE SET | |
| b.hash = row.hash, | |
| b.size = toInt(row.size), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| cat transactions.json | jq -cr 'del(.inputs, .outputs)' > txns.json | |
| cat transactions.json | jq -cr '{hash: .hash, outputs: .outputs[]} | {hash: .hash, index: .outputs.index, addresses: .outputs.addresses, required_signatures: .outputs.required_signatures, type: .outputs.type, value: .outputs.value}' > outputs.json | |
| cat transactions.json | jq -cr '{hash: .hash, outputs: .outputs[]} | {hash: .hash, index: .outputs.index, addresses: .outputs.addresses[]}' > outputs_addresses.json | |
| cat transactions.json | jq -cr '{hash: .hash, inputs: .inputs[]} | { hash: .hash, index: .inputs.index, spent_transaction_hash: .inputs.spent_transaction_hash, spent_output_index: .inputs.spent_output_index }' > inputs.json |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 1. Cross validate number of blocks | |
| i)BQ | |
| SELECT | |
| COUNT(*) AS num_blocks | |
| FROM | |
| `bigquery-public-data.crypto_bitcoin.blocks` AS blocks | |
| WHERE | |
| blocks.number <= 300 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ################################################################################ | |
| 1. Find number of addresses sending funds to an address | |
| ################################################################################ | |
| SELECT | |
| COUNT(DISTINCT ARRAY_TO_STRING(inputs.addresses, '')) AS addresses | |
| , MIN(block_timestamp) as start_date | |
| FROM `bigquery-public-data.crypto_bitcoin.transactions` AS txns | |
| , UNNEST(txns.outputs) AS outputs | |
| , UNNEST(txns.inputs) AS inputs |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| WITH shared_inputs AS ( | |
| SELECT | |
| ARRAY_TO_STRING(inputs.addresses, '') AS address | |
| FROM `bigquery-public-data.crypto_bitcoin.transactions` AS txns | |
| , UNNEST(txns.inputs) AS inputs | |
| WHERE txns.hash IN | |
| ( | |
| SELECT | |
| txns.hash as tx_hash | |
| FROM `bigquery-public-data.crypto_bitcoin.transactions` AS txns |
OlderNewer