76 lines
2.6 KiB
SQL
76 lines
2.6 KiB
SQL
CREATE TABLE validator
|
|
(
|
|
consensus_address TEXT NOT NULL PRIMARY KEY, /* Validator consensus address */
|
|
consensus_pubkey TEXT NOT NULL UNIQUE /* Validator consensus public key */
|
|
);
|
|
|
|
CREATE TABLE pre_commit
|
|
(
|
|
validator_address TEXT NOT NULL REFERENCES validator (consensus_address),
|
|
height BIGINT NOT NULL,
|
|
timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL,
|
|
voting_power BIGINT NOT NULL,
|
|
proposer_priority BIGINT NOT NULL,
|
|
UNIQUE (validator_address, timestamp)
|
|
);
|
|
CREATE INDEX pre_commit_validator_address_index ON pre_commit (validator_address);
|
|
CREATE INDEX pre_commit_height_index ON pre_commit (height);
|
|
|
|
CREATE TABLE block
|
|
(
|
|
height BIGINT UNIQUE PRIMARY KEY,
|
|
hash TEXT NOT NULL UNIQUE,
|
|
num_txs INTEGER DEFAULT 0,
|
|
total_gas BIGINT DEFAULT 0,
|
|
proposer_address TEXT REFERENCES validator (consensus_address),
|
|
timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL
|
|
);
|
|
CREATE INDEX block_height_index ON block (height);
|
|
CREATE INDEX block_hash_index ON block (hash);
|
|
CREATE INDEX block_proposer_address_index ON block (proposer_address);
|
|
|
|
-- no JSONB in sqlite (yet) : )
|
|
CREATE TABLE "transaction"
|
|
(
|
|
hash TEXT UNIQUE NOT NULL,
|
|
height BIGINT NOT NULL REFERENCES block (height),
|
|
"index" INTEGER NOT NULL,
|
|
success BOOLEAN NOT NULL,
|
|
|
|
/* Body */
|
|
num_messages INTEGER NOT NULL,
|
|
-- messages JSONB NOT NULL,-- DEFAULT '[]'::JSONB,
|
|
memo TEXT,
|
|
-- signatures TEXT[] NOT NULL,
|
|
|
|
/* AuthInfo */
|
|
-- signer_infos JSONB NOT NULL,-- DEFAULT '[]'::JSONB,
|
|
-- fee JSONB NOT NULL,-- DEFAULT '{}'::JSONB,
|
|
|
|
/* Tx response */
|
|
gas_wanted BIGINT DEFAULT 0,
|
|
gas_used BIGINT DEFAULT 0,
|
|
raw_log TEXT
|
|
-- logs JSONB
|
|
);
|
|
CREATE INDEX transaction_hash_index ON "transaction" (hash);
|
|
CREATE INDEX transaction_height_index ON "transaction" (height);
|
|
|
|
CREATE TABLE message
|
|
(
|
|
transaction_hash TEXT NOT NULL REFERENCES "transaction" (hash),
|
|
"index" BIGINT NOT NULL,
|
|
type TEXT NOT NULL,
|
|
-- value JSONB NOT NULL,
|
|
-- involved_accounts_addresses TEXT[] NOT NULL,
|
|
|
|
height BIGINT NOT NULL,
|
|
CONSTRAINT unique_message_per_tx UNIQUE (transaction_hash, "index")
|
|
);
|
|
CREATE INDEX message_transaction_hash_index ON message (transaction_hash);
|
|
CREATE INDEX message_type_index ON message (type);
|
|
|
|
CREATE TABLE pruning
|
|
(
|
|
last_pruned_height BIGINT NOT NULL
|
|
); |