hermez-node/db/historydb/migrations/001_init.sql
db/historydb/migrations/001_init.sqlRaw
1-- +migrate Up
2CREATE TABLE block (
3 eth_block_num BIGINT PRIMARY KEY,
4 timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL,
5 hash BYTEA NOT NULL
6);
7
8CREATE TABLE coordianator (
9 forger_addr BYTEA NOT NULL,
10 eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
11 withdraw_addr BYTEA NOT NULL,
12 url VARCHAR(200) NOT NULL,
13 PRIMARY KEY (forger_addr, eth_block_num)
14);
15
16CREATE TABLE batch (
17 batch_num BIGINT PRIMARY KEY,
18 eth_block_num BIGINT REFERENCES block (eth_block_num) ON DELETE CASCADE,
19 forger_addr BYTEA NOT NULL, -- fake foreign key for coordinator
20 fees_collected BYTEA NOT NULL,
21 state_root BYTEA NOT NULL,
22 num_accounts BIGINT NOT NULL,
23 exit_root BYTEA NOT NULL,
24 forge_l1_txs_num BIGINT,
25 slot_num BIGINT NOT NULL
26);
27
28CREATE TABLE exit_tree (
29 batch_num BIGINT REFERENCES batch (batch_num) ON DELETE CASCADE,
30 account_idx BIGINT,
31 merkle_proof BYTEA NOT NULL,
32 balance NUMERIC NOT NULL,
33 nullifier BYTEA NOT NULL,
34 PRIMARY KEY (batch_num, account_idx)
35);
36
37CREATE TABLE withdrawal (
38 batch_num BIGINT,
39 account_idx BIGINT,
40 eth_block_num BIGINT REFERENCES block (eth_block_num) ON DELETE CASCADE,
41 FOREIGN KEY (batch_num, account_idx) REFERENCES exit_tree (batch_num, account_idx) ON DELETE CASCADE,
42 PRIMARY KEY (batch_num, account_idx)
43);
44
45CREATE TABLE bid (
46 slot_num BIGINT NOT NULL,
47 bid_value BYTEA NOT NULL, -- (check if we can do a max(), if not add float for order purposes)
48 eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
49 forger_addr BYTEA NOT NULL, -- fake foreign key for coordinator
50 PRIMARY KEY (slot_num, bid_value)
51);
52
53CREATE TABLE token (
54 token_id INT PRIMARY KEY,
55 eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
56 eth_addr BYTEA UNIQUE NOT NULL,
57 name VARCHAR(20) NOT NULL,
58 symbol VARCHAR(10) NOT NULL,
59 decimals INT NOT NULL
60);
61
62CREATE TABLE l1tx (
63 tx_id BYTEA PRIMARY KEY,
64 to_forge_l1_txs_num BIGINT NOT NULL,
65 position INT NOT NULL,
66 user_origin BOOLEAN NOT NULL,
67 from_idx BIGINT NOT NULL,
68 from_eth_addr BYTEA NOT NULL,
69 from_bjj BYTEA NOT NULL,
70 to_idx BIGINT NOT NULL,
71 token_id INT NOT NULL REFERENCES token (token_id),
72 amount NUMERIC NOT NULL,
73 load_amount BYTEA NOT NULL,
74 eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
75 tx_type VARCHAR(40) NOT NULL
76);
77
78CREATE TABLE l2tx (
79 tx_id BYTEA PRIMARY KEY,
80 batch_num BIGINT NOT NULL REFERENCES batch (batch_num) ON DELETE CASCADE,
81 position INT NOT NULL,
82 from_idx BIGINT NOT NULL,
83 to_idx BIGINT NOT NULL,
84 amount NUMERIC NOT NULL,
85 fee INT NOT NULL,
86 nonce BIGINT NOT NULL,
87 tx_type VARCHAR(40) NOT NULL
88);
89
90CREATE TABLE account (
91 idx BIGINT PRIMARY KEY,
92 token_id INT NOT NULL REFERENCES token (token_id),
93 batch_num BIGINT NOT NULL REFERENCES batch (batch_num) ON DELETE CASCADE,
94 bjj BYTEA NOT NULL,
95 eth_addr BYTEA NOT NULL
96);
97
98CREATE TABLE rollup_vars (
99 eth_block_num BIGINT PRIMARY KEY REFERENCES block (eth_block_num) ON DELETE CASCADE,
100 forge_l1_timeout BYTEA NOT NULL,
101 fee_l1_user_tx BYTEA NOT NULL,
102 fee_add_token BYTEA NOT NULL,
103 tokens_hez BYTEA NOT NULL,
104 governance BYTEA NOT NULL
105);
106
107CREATE TABLE consensus_vars (
108 eth_block_num BIGINT PRIMARY KEY REFERENCES block (eth_block_num) ON DELETE CASCADE,
109 slot_deadline INT NOT NULL,
110 close_auction_slots INT NOT NULL,
111 open_auction_slots INT NOT NULL,
112 min_bid_slots VARCHAR(200) NOT NULL,
113 outbidding INT NOT NULL,
114 donation_address BYTEA NOT NULL,
115 governance_address BYTEA NOT NULL,
116 allocation_ratio vARCHAR(200)
117);
118
119-- +migrate Down
120DROP TABLE consensus_vars;
121DROP TABLE rollup_vars;
122DROP TABLE account;
123DROP TABLE l2tx;
124DROP TABLE l1tx;
125DROP TABLE token;
126DROP TABLE bid;
127DROP TABLE exit_tree;
128DROP TABLE batch;
129DROP TABLE coordianator;
130DROP TABLE block;