postgres schema and tables for btc
This commit is contained in:
parent
9018e551ba
commit
5094b975fc
5
db/migrations/00040_create_btc_schema.sql
Normal file
5
db/migrations/00040_create_btc_schema.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
-- +goose Up
|
||||||
|
CREATE SCHEMA btc;
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
DROP SCHEMA btc;
|
15
db/migrations/00041_create_btc_header_cids_table.sql
Normal file
15
db/migrations/00041_create_btc_header_cids_table.sql
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
-- +goose Up
|
||||||
|
CREATE TABLE btc.header_cids (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
block_number BIGINT NOT NULL,
|
||||||
|
block_hash VARCHAR(66) NOT NULL,
|
||||||
|
parent_hash VARCHAR(66) NOT NULL,
|
||||||
|
cid TEXT NOT NULL,
|
||||||
|
version INTEGER NOT NULL,
|
||||||
|
timestamp INTEGER NOT NULL,
|
||||||
|
bits INTEGER NOT NULL,
|
||||||
|
UNIQUE (block_number, block_hash)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
DROP TABLE btc.header_cids;
|
14
db/migrations/00042_create_btc_transaction_cids_table.sql
Normal file
14
db/migrations/00042_create_btc_transaction_cids_table.sql
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-- +goose Up
|
||||||
|
CREATE TABLE btc.transaction_cids (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
header_id INTEGER NOT NULL REFERENCES btc.header_cids (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
index INTEGER NOT NULL,
|
||||||
|
tx_hash VARCHAR(66) NOT NULL,
|
||||||
|
cid TEXT NOT NULL,
|
||||||
|
has_witness BOOL NOT NULL,
|
||||||
|
witness_hash VARCHAR(66),
|
||||||
|
UNIQUE (header_id, tx_hash)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
DROP TABLE btc.transaction_cids;
|
15
db/migrations/00043_create_btc_tx_inputs_table.sql
Normal file
15
db/migrations/00043_create_btc_tx_inputs_table.sql
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
-- +goose Up
|
||||||
|
CREATE TABLE btc.tx_inputs (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
tx_id INTEGER NOT NULL REFERENCES btc.transaction_cids (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
index INTEGER NOT NULL,
|
||||||
|
tx_witness BYTEA[],
|
||||||
|
sequence INTEGER NOT NULL,
|
||||||
|
script BYTEA NOT NULL,
|
||||||
|
outpoint_hash VARCHAR(66) NOT NULL,
|
||||||
|
outpoint_index INTEGER NOT NULL,
|
||||||
|
UNIQUE (tx_id, index)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
DROP TABLE btc.tx_inputs;
|
12
db/migrations/00044_create_btc_tx_outputs_table.sql
Normal file
12
db/migrations/00044_create_btc_tx_outputs_table.sql
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-- +goose Up
|
||||||
|
CREATE TABLE btc.tx_outputs (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
tx_id INTEGER NOT NULL REFERENCES btc.transaction_cids (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
||||||
|
index INTEGER NOT NULL,
|
||||||
|
value INTEGER NOT NULL,
|
||||||
|
script BYTEA NOT NULL,
|
||||||
|
UNIQUE (tx_id, index)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- +goose Down
|
||||||
|
DROP TABLE btc.tx_outputs;
|
256
db/schema.sql
256
db/schema.sql
@ -32,6 +32,146 @@ CREATE SCHEMA eth;
|
|||||||
|
|
||||||
SET default_tablespace = '';
|
SET default_tablespace = '';
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids; Type: TABLE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE btc.header_cids (
|
||||||
|
id integer NOT NULL,
|
||||||
|
block_number bigint NOT NULL,
|
||||||
|
block_hash character varying(66) NOT NULL,
|
||||||
|
parent_hash character varying(66) NOT NULL,
|
||||||
|
cid text NOT NULL,
|
||||||
|
version integer NOT NULL,
|
||||||
|
"timestamp" integer NOT NULL,
|
||||||
|
bits integer NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids_id_seq; Type: SEQUENCE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SEQUENCE btc.header_cids_id_seq
|
||||||
|
AS integer
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids_id_seq; Type: SEQUENCE OWNED BY; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER SEQUENCE btc.header_cids_id_seq OWNED BY btc.header_cids.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids; Type: TABLE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE btc.transaction_cids (
|
||||||
|
id integer NOT NULL,
|
||||||
|
header_id integer NOT NULL,
|
||||||
|
index integer NOT NULL,
|
||||||
|
tx_hash character varying(66) NOT NULL,
|
||||||
|
cid text NOT NULL,
|
||||||
|
has_witness boolean NOT NULL,
|
||||||
|
witness_hash character varying(66)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids_id_seq; Type: SEQUENCE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SEQUENCE btc.transaction_cids_id_seq
|
||||||
|
AS integer
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids_id_seq; Type: SEQUENCE OWNED BY; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER SEQUENCE btc.transaction_cids_id_seq OWNED BY btc.transaction_cids.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs; Type: TABLE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE btc.tx_inputs (
|
||||||
|
id integer NOT NULL,
|
||||||
|
tx_id integer NOT NULL,
|
||||||
|
index integer NOT NULL,
|
||||||
|
tx_witness bytea[],
|
||||||
|
sequence integer NOT NULL,
|
||||||
|
script bytea NOT NULL,
|
||||||
|
outpoint_hash character varying(66) NOT NULL,
|
||||||
|
outpoint_index integer NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs_id_seq; Type: SEQUENCE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SEQUENCE btc.tx_inputs_id_seq
|
||||||
|
AS integer
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs_id_seq; Type: SEQUENCE OWNED BY; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER SEQUENCE btc.tx_inputs_id_seq OWNED BY btc.tx_inputs.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs; Type: TABLE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE btc.tx_outputs (
|
||||||
|
id integer NOT NULL,
|
||||||
|
tx_id integer NOT NULL,
|
||||||
|
index integer NOT NULL,
|
||||||
|
value integer NOT NULL,
|
||||||
|
script bytea NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs_id_seq; Type: SEQUENCE; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE SEQUENCE btc.tx_outputs_id_seq
|
||||||
|
AS integer
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs_id_seq; Type: SEQUENCE OWNED BY; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER SEQUENCE btc.tx_outputs_id_seq OWNED BY btc.tx_outputs.id;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: header_cids; Type: TABLE; Schema: eth; Owner: -
|
-- Name: header_cids; Type: TABLE; Schema: eth; Owner: -
|
||||||
--
|
--
|
||||||
@ -923,6 +1063,34 @@ CREATE SEQUENCE public.watched_logs_id_seq
|
|||||||
ALTER SEQUENCE public.watched_logs_id_seq OWNED BY public.watched_logs.id;
|
ALTER SEQUENCE public.watched_logs_id_seq OWNED BY public.watched_logs.id;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids id; Type: DEFAULT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.header_cids ALTER COLUMN id SET DEFAULT nextval('btc.header_cids_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids id; Type: DEFAULT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.transaction_cids ALTER COLUMN id SET DEFAULT nextval('btc.transaction_cids_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs id; Type: DEFAULT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_inputs ALTER COLUMN id SET DEFAULT nextval('btc.tx_inputs_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs id; Type: DEFAULT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_outputs ALTER COLUMN id SET DEFAULT nextval('btc.tx_outputs_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: header_cids id; Type: DEFAULT; Schema: eth; Owner: -
|
-- Name: header_cids id; Type: DEFAULT; Schema: eth; Owner: -
|
||||||
--
|
--
|
||||||
@ -1091,6 +1259,70 @@ ALTER TABLE ONLY public.watched_contracts ALTER COLUMN contract_id SET DEFAULT n
|
|||||||
ALTER TABLE ONLY public.watched_logs ALTER COLUMN id SET DEFAULT nextval('public.watched_logs_id_seq'::regclass);
|
ALTER TABLE ONLY public.watched_logs ALTER COLUMN id SET DEFAULT nextval('public.watched_logs_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids header_cids_block_number_block_hash_key; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.header_cids
|
||||||
|
ADD CONSTRAINT header_cids_block_number_block_hash_key UNIQUE (block_number, block_hash);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: header_cids header_cids_pkey; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.header_cids
|
||||||
|
ADD CONSTRAINT header_cids_pkey PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids transaction_cids_header_id_tx_hash_key; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.transaction_cids
|
||||||
|
ADD CONSTRAINT transaction_cids_header_id_tx_hash_key UNIQUE (header_id, tx_hash);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids transaction_cids_pkey; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.transaction_cids
|
||||||
|
ADD CONSTRAINT transaction_cids_pkey PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs tx_inputs_pkey; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_inputs
|
||||||
|
ADD CONSTRAINT tx_inputs_pkey PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs tx_inputs_tx_id_index_key; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_inputs
|
||||||
|
ADD CONSTRAINT tx_inputs_tx_id_index_key UNIQUE (tx_id, index);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs tx_outputs_pkey; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_outputs
|
||||||
|
ADD CONSTRAINT tx_outputs_pkey PRIMARY KEY (id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs tx_outputs_tx_id_index_key; Type: CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_outputs
|
||||||
|
ADD CONSTRAINT tx_outputs_tx_id_index_key UNIQUE (tx_id, index);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: header_cids header_cids_block_number_block_hash_key; Type: CONSTRAINT; Schema: eth; Owner: -
|
-- Name: header_cids header_cids_block_number_block_hash_key; Type: CONSTRAINT; Schema: eth; Owner: -
|
||||||
--
|
--
|
||||||
@ -1504,6 +1736,30 @@ CREATE INDEX tx_from_index ON public.full_sync_transactions USING btree (tx_from
|
|||||||
CREATE INDEX tx_to_index ON public.full_sync_transactions USING btree (tx_to);
|
CREATE INDEX tx_to_index ON public.full_sync_transactions USING btree (tx_to);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: transaction_cids transaction_cids_header_id_fkey; Type: FK CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.transaction_cids
|
||||||
|
ADD CONSTRAINT transaction_cids_header_id_fkey FOREIGN KEY (header_id) REFERENCES btc.header_cids(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_inputs tx_inputs_tx_id_fkey; Type: FK CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_inputs
|
||||||
|
ADD CONSTRAINT tx_inputs_tx_id_fkey FOREIGN KEY (tx_id) REFERENCES btc.transaction_cids(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: tx_outputs tx_outputs_tx_id_fkey; Type: FK CONSTRAINT; Schema: btc; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
ALTER TABLE ONLY btc.tx_outputs
|
||||||
|
ADD CONSTRAINT tx_outputs_tx_id_fkey FOREIGN KEY (tx_id) REFERENCES btc.transaction_cids(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: receipt_cids receipt_cids_tx_id_fkey; Type: FK CONSTRAINT; Schema: eth; Owner: -
|
-- Name: receipt_cids receipt_cids_tx_id_fkey; Type: FK CONSTRAINT; Schema: eth; Owner: -
|
||||||
--
|
--
|
||||||
|
@ -16,15 +16,19 @@
|
|||||||
|
|
||||||
package btc
|
package btc
|
||||||
|
|
||||||
|
// HeaderModel is the db model for btc.header_cids table
|
||||||
type HeaderModel struct {
|
type HeaderModel struct {
|
||||||
ID int64 `db:"id"`
|
ID int64 `db:"id"`
|
||||||
BlockNumber string `db:"block_number"`
|
BlockNumber string `db:"block_number"`
|
||||||
BlockHash string `db:"block_hash"`
|
BlockHash string `db:"block_hash"`
|
||||||
ParentHash string `db:"parent_hash"`
|
ParentHash string `db:"parent_hash"`
|
||||||
CID string `db:"cid"`
|
CID string `db:"cid"`
|
||||||
// TotalDifficulty string `db:"td"` Not sure we can support this unless we modify btcd
|
Version int64 `db:"version"`
|
||||||
|
Timestamp int64 `db:"timestamp"`
|
||||||
|
Bits int64 `db:"bits"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TxModel is the db model for btc.transaction_cids table
|
||||||
type TxModel struct {
|
type TxModel struct {
|
||||||
ID int64 `db:"id"`
|
ID int64 `db:"id"`
|
||||||
HeaderID int64 `db:"header_id"`
|
HeaderID int64 `db:"header_id"`
|
||||||
@ -33,6 +37,25 @@ type TxModel struct {
|
|||||||
CID string `db:"cid"`
|
CID string `db:"cid"`
|
||||||
HasWitness bool `db:"has_witness"`
|
HasWitness bool `db:"has_witness"`
|
||||||
WitnessHash string `db:"witness_hash"`
|
WitnessHash string `db:"witness_hash"`
|
||||||
//Dst string `db:"dst"`
|
}
|
||||||
//Src string `db:"src"`
|
|
||||||
|
// TxInput is the db model for btc.tx_inputs table
|
||||||
|
type TxInput struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
TxID int64 `db:"tx_id"`
|
||||||
|
Index int64 `db:"index"`
|
||||||
|
TxWitness [][]byte `db:"tx_witness"`
|
||||||
|
Sequence int64 `db:"sequence"`
|
||||||
|
SignatureScript []byte `db:"script"`
|
||||||
|
PreviousOutPointHash []byte `db:"outpoint_hash"`
|
||||||
|
PreviousOutPointIndex int64 `db:"outpoint_index"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TxOutput is the db model for btc.tx_outputs table
|
||||||
|
type TxOutput struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
TxID int64 `db:"tx_id"`
|
||||||
|
Index int64 `db:"index"`
|
||||||
|
Value int64 `db:"value"`
|
||||||
|
PkScript []byte `db:"script"`
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user