Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop and re-create genesis_info_view #689

Merged
merged 1 commit into from
Nov 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions tapdb/sqlc/migrations/000002_assets.up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,7 @@ CREATE TABLE IF NOT EXISTS asset_seedlings (
CREATE VIEW genesis_info_view AS
SELECT
gen_asset_id, asset_id, asset_tag, assets_meta.meta_data_hash meta_hash,
output_index, asset_type, genesis_points.prev_out prev_out,
chain_txns.txid anchor_txid, block_height
output_index, asset_type, genesis_points.prev_out prev_out, block_height
GeorgeTsagk marked this conversation as resolved.
Show resolved Hide resolved
FROM genesis_assets
-- We do a LEFT JOIN here, as not every asset has a set of
-- metadata that matches the asset.
Expand Down
2 changes: 2 additions & 0 deletions tapdb/sqlc/migrations/000012_anchor_txid.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- This file is empty on purpose. There is nothing to roll back for this
-- migration.
39 changes: 39 additions & 0 deletions tapdb/sqlc/migrations/000012_anchor_txid.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
DROP VIEW IF EXISTS key_group_info_view;
DROP VIEW IF EXISTS genesis_info_view;

-- This view is used to fetch the base asset information from disk based on
-- the raw key of the batch that will ultimately create this set of assets.
-- To do so, we'll need to traverse a few tables to join the set of assets
-- with the genesis points, then with the batches that reference this
-- points, to the internal key that reference the batch, then restricted
-- for internal keys that match our main batch key.
CREATE VIEW genesis_info_view AS
SELECT
gen_asset_id, asset_id, asset_tag, assets_meta.meta_data_hash meta_hash,
output_index, asset_type, genesis_points.prev_out prev_out,
chain_txns.txid anchor_txid, block_height
FROM genesis_assets
-- We do a LEFT JOIN here, as not every asset has a set of
-- metadata that matches the asset.
LEFT JOIN assets_meta
ON genesis_assets.meta_data_id = assets_meta.meta_id
JOIN genesis_points
ON genesis_assets.genesis_point_id = genesis_points.genesis_id
LEFT JOIN chain_txns
ON genesis_points.anchor_tx_id = chain_txns.txn_id;

-- This view is used to perform a series of joins that allow us to extract
-- the group key information, as well as the group sigs for the series of
-- assets we care about. We obtain only the assets found in the batch
-- above, with the WHERE query at the bottom.
CREATE VIEW key_group_info_view AS
SELECT
witness_id, gen_asset_id, witness_stack, tapscript_root,
tweaked_group_key, raw_key, key_index, key_family,
substr(tweaked_group_key, 2) AS x_only_group_key
FROM asset_group_witnesses wit
JOIN asset_groups groups
ON wit.group_key_id = groups.group_id
JOIN internal_keys keys
ON keys.key_id = groups.internal_key_id
WHERE wit.gen_asset_id IN (SELECT gen_asset_id FROM genesis_info_view);