CREATE TABLE ksp_store_identity ( singleton SMALLINT PRIMARY KEY, network TEXT NOT NULL, CONSTRAINT ck_ksp_store_identity_singleton CHECK (singleton = 1), CONSTRAINT ck_ksp_store_identity_network CHECK ( octet_length(network) BETWEEN 1 AND 128 AND network ~ '^[A-Za-z0-9_.:-]+$' ) ); CREATE TABLE ksp_raw_transactions ( signature BYTEA PRIMARY KEY, slot NUMERIC(20, 0) NOT NULL, block_time_unix_millis BIGINT NULL, format_id TEXT NOT NULL, format_version BIGINT NOT NULL, content_hash BYTEA NOT NULL, payload BYTEA NULL, retention_state TEXT NOT NULL, CONSTRAINT ck_ksp_raw_transactions_signature CHECK (octet_length(signature) = 64), CONSTRAINT ck_ksp_raw_transactions_slot CHECK (slot BETWEEN 0 AND 18446744073709551615), CONSTRAINT ck_ksp_raw_transactions_block_time CHECK ( block_time_unix_millis IS NULL OR block_time_unix_millis BETWEEN 0 AND 253402300799999 ), CONSTRAINT ck_ksp_raw_transactions_format_id CHECK ( octet_length(format_id) BETWEEN 1 AND 128 AND format_id ~ '^[A-Za-z0-9_.:-]+$' ), CONSTRAINT ck_ksp_raw_transactions_format_version CHECK (format_version BETWEEN 1 AND 4294967295), CONSTRAINT ck_ksp_raw_transactions_content_hash CHECK (octet_length(content_hash) = 32), CONSTRAINT ck_ksp_raw_transactions_payload CHECK ( payload IS NULL OR octet_length(payload) BETWEEN 1 AND 16777216 ), CONSTRAINT ck_ksp_raw_transactions_retention_state CHECK (retention_state IN ('full', 'archived', 'purged')), CONSTRAINT ck_ksp_raw_transactions_payload_state CHECK ( (retention_state = 'full' AND payload IS NOT NULL) OR (retention_state IN ('archived', 'purged') AND payload IS NULL) ), CONSTRAINT ck_ksp_raw_transactions_purged_block_time CHECK ( retention_state <> 'purged' OR block_time_unix_millis IS NULL ) ); CREATE TABLE ksp_raw_transaction_observations ( observation_key BYTEA PRIMARY KEY, transaction_signature BYTEA NOT NULL REFERENCES ksp_raw_transactions(signature) ON DELETE RESTRICT, provider TEXT NOT NULL, protocol TEXT NOT NULL, acquisition_method TEXT NOT NULL, origin TEXT NOT NULL, received_at_unix_millis BIGINT NOT NULL, capture_session_id TEXT NULL, commitment TEXT NULL, endpoint_id TEXT NULL, filter_id TEXT NULL, observed_at_unix_millis BIGINT NULL, source_payload_hash BYTEA NULL, source_payload_size_bytes BIGINT NULL, CONSTRAINT ck_ksp_raw_transaction_observations_key CHECK (octet_length(observation_key) = 32), CONSTRAINT ck_ksp_raw_transaction_observations_signature CHECK (octet_length(transaction_signature) = 64), CONSTRAINT ck_ksp_raw_transaction_observations_provider CHECK ( octet_length(provider) BETWEEN 1 AND 128 AND provider ~ '^[A-Za-z0-9_.:-]+$' ), CONSTRAINT ck_ksp_raw_transaction_observations_protocol CHECK ( octet_length(protocol) BETWEEN 1 AND 128 AND protocol ~ '^[A-Za-z0-9_.:-]+$' ), CONSTRAINT ck_ksp_raw_transaction_observations_method CHECK ( octet_length(acquisition_method) BETWEEN 1 AND 128 AND acquisition_method ~ '^[A-Za-z0-9_.:-]+$' ), CONSTRAINT ck_ksp_raw_transaction_observations_origin CHECK (origin IN ('backfill', 'import', 'live', 'repair', 'replay')), CONSTRAINT ck_ksp_raw_transaction_observations_received_at CHECK (received_at_unix_millis BETWEEN 0 AND 253402300799999), CONSTRAINT ck_ksp_raw_transaction_observations_capture_session CHECK ( capture_session_id IS NULL OR ( octet_length(capture_session_id) BETWEEN 1 AND 128 AND capture_session_id ~ '^[A-Za-z0-9_.:-]+$' ) ), CONSTRAINT ck_ksp_raw_transaction_observations_commitment CHECK ( commitment IS NULL OR ( octet_length(commitment) BETWEEN 1 AND 128 AND commitment ~ '^[A-Za-z0-9_.:-]+$' ) ), CONSTRAINT ck_ksp_raw_transaction_observations_endpoint CHECK ( endpoint_id IS NULL OR ( octet_length(endpoint_id) BETWEEN 1 AND 128 AND endpoint_id ~ '^[A-Za-z0-9_.:-]+$' ) ), CONSTRAINT ck_ksp_raw_transaction_observations_filter CHECK ( filter_id IS NULL OR ( octet_length(filter_id) BETWEEN 1 AND 128 AND filter_id ~ '^[A-Za-z0-9_.:-]+$' ) ), CONSTRAINT ck_ksp_raw_transaction_observations_observed_at CHECK ( observed_at_unix_millis IS NULL OR observed_at_unix_millis BETWEEN 0 AND 253402300799999 ), CONSTRAINT ck_ksp_raw_transaction_observations_time_order CHECK ( observed_at_unix_millis IS NULL OR observed_at_unix_millis <= received_at_unix_millis ), CONSTRAINT ck_ksp_raw_transaction_observations_source_hash CHECK ( source_payload_hash IS NULL OR octet_length(source_payload_hash) = 32 ), CONSTRAINT ck_ksp_raw_transaction_observations_source_size CHECK ( source_payload_size_bytes IS NULL OR source_payload_size_bytes BETWEEN 0 AND 67108864 ) ); CREATE TABLE ksp_raw_transaction_archive_payloads ( signature BYTEA PRIMARY KEY REFERENCES ksp_raw_transactions(signature) ON DELETE RESTRICT, payload BYTEA NOT NULL, CONSTRAINT ck_ksp_raw_transaction_archive_payloads_signature CHECK (octet_length(signature) = 64), CONSTRAINT ck_ksp_raw_transaction_archive_payloads_payload CHECK (octet_length(payload) BETWEEN 1 AND 16777216) ); CREATE INDEX ix_ksp_raw_transactions_slot_signature ON ksp_raw_transactions (slot, signature) WHERE retention_state <> 'purged';