-- +migrate Up CREATE TABLE block ( eth_block_num BIGINT PRIMARY KEY, timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, hash BYTEA NOT NULL ); CREATE TABLE coordianator ( forger_addr BYTEA NOT NULL, eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE, withdraw_addr BYTEA NOT NULL, url VARCHAR(200) NOT NULL, PRIMARY KEY (forger_addr, eth_block_num) ); CREATE TABLE batch ( batch_num BIGINT PRIMARY KEY, eth_block_num BIGINT REFERENCES block (eth_block_num) ON DELETE CASCADE, forger_addr BYTEA NOT NULL, -- fake foreign key for coordinator fees_collected BYTEA NOT NULL, state_root BYTEA NOT NULL, num_accounts BIGINT NOT NULL, exit_root BYTEA NOT NULL, forge_l1_txs_num BIGINT, slot_num BIGINT NOT NULL ); CREATE TABLE exit_tree ( batch_num BIGINT REFERENCES batch (batch_num) ON DELETE CASCADE, account_idx BIGINT, merkle_proof BYTEA NOT NULL, balance NUMERIC NOT NULL, nullifier BYTEA NOT NULL, PRIMARY KEY (batch_num, account_idx) ); CREATE TABLE withdrawal ( batch_num BIGINT, account_idx BIGINT, eth_block_num BIGINT REFERENCES block (eth_block_num) ON DELETE CASCADE, FOREIGN KEY (batch_num, account_idx) REFERENCES exit_tree (batch_num, account_idx) ON DELETE CASCADE, PRIMARY KEY (batch_num, account_idx) ); CREATE TABLE bid ( slot_num BIGINT NOT NULL, bid_value BYTEA NOT NULL, -- (check if we can do a max(), if not add float for order purposes) eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE, forger_addr BYTEA NOT NULL, -- fake foreign key for coordinator PRIMARY KEY (slot_num, bid_value) ); CREATE TABLE token ( token_id INT PRIMARY KEY, eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE, eth_addr BYTEA UNIQUE NOT NULL, name VARCHAR(20) NOT NULL, symbol VARCHAR(10) NOT NULL, decimals INT NOT NULL ); CREATE TABLE l1tx ( tx_id BYTEA PRIMARY KEY, to_forge_l1_txs_num BIGINT NOT NULL, position INT NOT NULL, user_origin BOOLEAN NOT NULL, from_idx BIGINT NOT NULL, from_eth_addr BYTEA NOT NULL, from_bjj BYTEA NOT NULL, to_idx BIGINT NOT NULL, token_id INT NOT NULL REFERENCES token (token_id), amount NUMERIC NOT NULL, load_amount BYTEA NOT NULL, eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE, tx_type VARCHAR(40) NOT NULL ); CREATE TABLE l2tx ( tx_id BYTEA PRIMARY KEY, batch_num BIGINT NOT NULL REFERENCES batch (batch_num) ON DELETE CASCADE, position INT NOT NULL, from_idx BIGINT NOT NULL, to_idx BIGINT NOT NULL, amount NUMERIC NOT NULL, fee INT NOT NULL, nonce BIGINT NOT NULL, tx_type VARCHAR(40) NOT NULL ); CREATE TABLE account ( idx BIGINT PRIMARY KEY, token_id INT NOT NULL REFERENCES token (token_id), batch_num BIGINT NOT NULL REFERENCES batch (batch_num) ON DELETE CASCADE, bjj BYTEA NOT NULL, eth_addr BYTEA NOT NULL ); CREATE TABLE rollup_vars ( eth_block_num BIGINT PRIMARY KEY REFERENCES block (eth_block_num) ON DELETE CASCADE, forge_l1_timeout BYTEA NOT NULL, fee_l1_user_tx BYTEA NOT NULL, fee_add_token BYTEA NOT NULL, tokens_hez BYTEA NOT NULL, governance BYTEA NOT NULL ); CREATE TABLE consensus_vars ( eth_block_num BIGINT PRIMARY KEY REFERENCES block (eth_block_num) ON DELETE CASCADE, slot_deadline INT NOT NULL, close_auction_slots INT NOT NULL, open_auction_slots INT NOT NULL, min_bid_slots VARCHAR(200) NOT NULL, outbidding INT NOT NULL, donation_address BYTEA NOT NULL, governance_address BYTEA NOT NULL, allocation_ratio vARCHAR(200) ); -- +migrate Down DROP TABLE consensus_vars; DROP TABLE rollup_vars; DROP TABLE account; DROP TABLE l2tx; DROP TABLE l1tx; DROP TABLE token; DROP TABLE bid; DROP TABLE exit_tree; DROP TABLE batch; DROP TABLE coordianator; DROP TABLE block;