# --- !Ups CREATE TABLE blocks( blockhash VARCHAR(64) NOT NULL, previous_blockhash VARCHAR(64) NULL, next_blockhash VARCHAR(64) NULL, merkle_root VARCHAR(64) NULL, tpos_contract VARCHAR(64) NULL, size INT NOT NULL, height INT NOT NULL, version INT NOT NULL, time BIGINT NOT NULL, median_time BIGINT NOT NULL, nonce INT NOT NULL, bits VARCHAR(50) NOT NULL, chainwork VARCHAR(80) NOT NULL, difficulty DECIMAL(30, 20), -- constraints CONSTRAINT blocks_blockhash_pk PRIMARY KEY (blockhash), CONSTRAINT blocks_blockhash_format CHECK (blockhash ~ '^[a-f0-9]{64}$'), CONSTRAINT blocks_previous_blockhash_format CHECK (previous_blockhash ~ '^[a-f0-9]{64}$'), CONSTRAINT blocks_next_blockhash_format CHECK (next_blockhash ~ '^[a-f0-9]{64}$'), CONSTRAINT blocks_tpos_contract_format CHECK (tpos_contract ~ '^[a-f0-9]{64}$') ); CREATE INDEX blocks_height_index ON blocks USING BTREE (height); CREATE INDEX blocks_time_index ON blocks USING BTREE (time); # --- !Downs DROP TABLE blocks;