arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/db/migrations/0001.sql
db/migrations/0001.sqlRaw
  1-- +migrate Up
  2
  3-- History
  4CREATE TABLE block (
  5    eth_block_num BIGINT PRIMARY KEY,
  6    timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL,
  7    hash BYTEA NOT NULL
  8);
  9
 10CREATE TABLE coordinator (
 11    bidder_addr BYTEA NOT NULL,
 12    forger_addr BYTEA NOT NULL,
 13    eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
 14    url VARCHAR(200) NOT NULL,
 15    PRIMARY KEY (bidder_addr, eth_block_num)
 16);
 17
 18CREATE TABLE batch (
 19    batch_num BIGINT PRIMARY KEY,
 20    eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
 21    forger_addr BYTEA NOT NULL, -- fake foreign key for coordinator
 22    fees_collected BYTEA NOT NULL,
 23    state_root BYTEA NOT NULL,
 24    num_accounts BIGINT NOT NULL,
 25    exit_root BYTEA NOT NULL,
 26    forge_l1_txs_num BIGINT,
 27    slot_num BIGINT NOT NULL,
 28    total_fees_usd NUMERIC
 29);
 30
 31CREATE TABLE exit_tree (
 32    batch_num BIGINT REFERENCES batch (batch_num) ON DELETE CASCADE,
 33    account_idx BIGINT,
 34    merkle_proof BYTEA NOT NULL,
 35    balance BYTEA NOT NULL,
 36    instant_withdrawn BIGINT REFERENCES batch (batch_num) ON DELETE SET NULL,
 37    delayed_withdraw_request BIGINT REFERENCES batch (batch_num) ON DELETE SET NULL,
 38    delayed_withdrawn BIGINT REFERENCES batch (batch_num) ON DELETE SET NULL,
 39    PRIMARY KEY (batch_num, account_idx)
 40);
 41
 42CREATE TABLE bid (
 43    slot_num BIGINT NOT NULL,
 44    bid_value BYTEA NOT NULL,
 45    eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
 46    bidder_addr BYTEA NOT NULL, -- fake foreign key for coordinator
 47    PRIMARY KEY (slot_num, bid_value)
 48);
 49
 50CREATE TABLE token (
 51    token_id INT PRIMARY KEY,
 52    eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
 53    eth_addr BYTEA UNIQUE NOT NULL,
 54    name VARCHAR(20) NOT NULL,
 55    symbol VARCHAR(10) NOT NULL,
 56    decimals INT NOT NULL,
 57    usd NUMERIC,
 58    usd_update TIMESTAMP
 59);
 60
 61-- +migrate StatementBegin
 62CREATE FUNCTION set_token_usd_update() 
 63    RETURNS TRIGGER 
 64AS 
 65$BODY$
 66BEGIN
 67    IF NEW."usd" IS NOT NULL AND NEW."usd_update" IS NULL THEN
 68        NEW."usd_update" = timezone('utc', now());
 69    END IF;
 70    RETURN NEW;
 71END;
 72$BODY$
 73LANGUAGE plpgsql;
 74-- +migrate StatementEnd
 75CREATE TRIGGER trigger_token_usd_update BEFORE UPDATE OR INSERT ON token
 76FOR EACH ROW EXECUTE PROCEDURE set_token_usd_update();
 77
 78CREATE TABLE tx (
 79    -- Generic TX
 80    is_l1 BOOLEAN NOT NULL,
 81    id BYTEA PRIMARY KEY,
 82    type VARCHAR(40) NOT NULL,
 83    position INT NOT NULL,
 84    from_idx BIGINT,
 85    to_idx BIGINT NOT NULL,
 86    amount BYTEA NOT NULL,
 87    amount_f NUMERIC NOT NULL,
 88    token_id INT NOT NULL REFERENCES token (token_id),
 89    amount_usd NUMERIC, -- Value of the amount in USD at the moment the tx was inserted in the DB
 90    batch_num BIGINT REFERENCES batch (batch_num) ON DELETE SET NULL, -- Can be NULL in the case of L1 txs that are on the queue but not forged yet.
 91    eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
 92    -- L1
 93    to_forge_l1_txs_num BIGINT,
 94    user_origin BOOLEAN,
 95    from_eth_addr BYTEA,
 96    from_bjj BYTEA,
 97    load_amount BYTEA,
 98    load_amount_f NUMERIC,
 99    load_amount_usd NUMERIC,
100    -- L2
101    fee INT,
102    fee_usd NUMERIC,
103    nonce BIGINT
104);
105
106CREATE INDEX tx_order ON tx (batch_num, position);
107
108-- +migrate StatementBegin
109CREATE FUNCTION fee_percentage(NUMERIC)
110    RETURNS NUMERIC 
111AS 
112$BODY$
113DECLARE perc NUMERIC;
114BEGIN
115    SELECT CASE 
116        WHEN $1 = 0 THEN 0
117        WHEN $1 = 1 THEN 3.162278e-24
118        WHEN $1 = 2 THEN 1.000000e-23
119        WHEN $1 = 3 THEN 3.162278e-23
120        WHEN $1 = 4 THEN 1.000000e-22
121        WHEN $1 = 5 THEN 3.162278e-22
122        WHEN $1 = 6 THEN 1.000000e-21
123        WHEN $1 = 7 THEN 3.162278e-21
124        WHEN $1 = 8 THEN 1.000000e-20
125        WHEN $1 = 9 THEN 3.162278e-20
126        WHEN $1 = 10 THEN 1.000000e-19
127        WHEN $1 = 11 THEN 3.162278e-19
128        WHEN $1 = 12 THEN 1.000000e-18
129        WHEN $1 = 13 THEN 3.162278e-18
130        WHEN $1 = 14 THEN 1.000000e-17
131        WHEN $1 = 15 THEN 3.162278e-17
132        WHEN $1 = 16 THEN 1.000000e-16
133        WHEN $1 = 17 THEN 3.162278e-16
134        WHEN $1 = 18 THEN 1.000000e-15
135        WHEN $1 = 19 THEN 3.162278e-15
136        WHEN $1 = 20 THEN 1.000000e-14
137        WHEN $1 = 21 THEN 3.162278e-14
138        WHEN $1 = 22 THEN 1.000000e-13
139        WHEN $1 = 23 THEN 3.162278e-13
140        WHEN $1 = 24 THEN 1.000000e-12
141        WHEN $1 = 25 THEN 3.162278e-12
142        WHEN $1 = 26 THEN 1.000000e-11
143        WHEN $1 = 27 THEN 3.162278e-11
144        WHEN $1 = 28 THEN 1.000000e-10
145        WHEN $1 = 29 THEN 3.162278e-10
146        WHEN $1 = 30 THEN 1.000000e-09
147        WHEN $1 = 31 THEN 3.162278e-09
148        WHEN $1 = 32 THEN 1.000000e-08
149        WHEN $1 = 33 THEN 1.100694e-08
150        WHEN $1 = 34 THEN 1.211528e-08
151        WHEN $1 = 35 THEN 1.333521e-08
152        WHEN $1 = 36 THEN 1.467799e-08
153        WHEN $1 = 37 THEN 1.615598e-08
154        WHEN $1 = 38 THEN 1.778279e-08
155        WHEN $1 = 39 THEN 1.957342e-08
156        WHEN $1 = 40 THEN 2.154435e-08
157        WHEN $1 = 41 THEN 2.371374e-08
158        WHEN $1 = 42 THEN 2.610157e-08
159        WHEN $1 = 43 THEN 2.872985e-08
160        WHEN $1 = 44 THEN 3.162278e-08
161        WHEN $1 = 45 THEN 3.480701e-08
162        WHEN $1 = 46 THEN 3.831187e-08
163        WHEN $1 = 47 THEN 4.216965e-08
164        WHEN $1 = 48 THEN 4.641589e-08
165        WHEN $1 = 49 THEN 5.108970e-08
166        WHEN $1 = 50 THEN 5.623413e-08
167        WHEN $1 = 51 THEN 6.189658e-08
168        WHEN $1 = 52 THEN 6.812921e-08
169        WHEN $1 = 53 THEN 7.498942e-08
170        WHEN $1 = 54 THEN 8.254042e-08
171        WHEN $1 = 55 THEN 9.085176e-08
172        WHEN $1 = 56 THEN 1.000000e-07
173        WHEN $1 = 57 THEN 1.100694e-07
174        WHEN $1 = 58 THEN 1.211528e-07
175        WHEN $1 = 59 THEN 1.333521e-07
176        WHEN $1 = 60 THEN 1.467799e-07
177        WHEN $1 = 61 THEN 1.615598e-07
178        WHEN $1 = 62 THEN 1.778279e-07
179        WHEN $1 = 63 THEN 1.957342e-07
180        WHEN $1 = 64 THEN 2.154435e-07
181        WHEN $1 = 65 THEN 2.371374e-07
182        WHEN $1 = 66 THEN 2.610157e-07
183        WHEN $1 = 67 THEN 2.872985e-07
184        WHEN $1 = 68 THEN 3.162278e-07
185        WHEN $1 = 69 THEN 3.480701e-07
186        WHEN $1 = 70 THEN 3.831187e-07
187        WHEN $1 = 71 THEN 4.216965e-07
188        WHEN $1 = 72 THEN 4.641589e-07
189        WHEN $1 = 73 THEN 5.108970e-07
190        WHEN $1 = 74 THEN 5.623413e-07
191        WHEN $1 = 75 THEN 6.189658e-07
192        WHEN $1 = 76 THEN 6.812921e-07
193        WHEN $1 = 77 THEN 7.498942e-07
194        WHEN $1 = 78 THEN 8.254042e-07
195        WHEN $1 = 79 THEN 9.085176e-07
196        WHEN $1 = 80 THEN 1.000000e-06
197        WHEN $1 = 81 THEN 1.100694e-06
198        WHEN $1 = 82 THEN 1.211528e-06
199        WHEN $1 = 83 THEN 1.333521e-06
200        WHEN $1 = 84 THEN 1.467799e-06
201        WHEN $1 = 85 THEN 1.615598e-06
202        WHEN $1 = 86 THEN 1.778279e-06
203        WHEN $1 = 87 THEN 1.957342e-06
204        WHEN $1 = 88 THEN 2.154435e-06
205        WHEN $1 = 89 THEN 2.371374e-06
206        WHEN $1 = 90 THEN 2.610157e-06
207        WHEN $1 = 91 THEN 2.872985e-06
208        WHEN $1 = 92 THEN 3.162278e-06
209        WHEN $1 = 93 THEN 3.480701e-06
210        WHEN $1 = 94 THEN 3.831187e-06
211        WHEN $1 = 95 THEN 4.216965e-06
212        WHEN $1 = 96 THEN 4.641589e-06
213        WHEN $1 = 97 THEN 5.108970e-06
214        WHEN $1 = 98 THEN 5.623413e-06
215        WHEN $1 = 99 THEN 6.189658e-06
216        WHEN $1 = 100 THEN 6.812921e-06
217        WHEN $1 = 101 THEN 7.498942e-06
218        WHEN $1 = 102 THEN 8.254042e-06
219        WHEN $1 = 103 THEN 9.085176e-06
220        WHEN $1 = 104 THEN 1.000000e-05
221        WHEN $1 = 105 THEN 1.100694e-05
222        WHEN $1 = 106 THEN 1.211528e-05
223        WHEN $1 = 107 THEN 1.333521e-05
224        WHEN $1 = 108 THEN 1.467799e-05
225        WHEN $1 = 109 THEN 1.615598e-05
226        WHEN $1 = 110 THEN 1.778279e-05
227        WHEN $1 = 111 THEN 1.957342e-05
228        WHEN $1 = 112 THEN 2.154435e-05
229        WHEN $1 = 113 THEN 2.371374e-05
230        WHEN $1 = 114 THEN 2.610157e-05
231        WHEN $1 = 115 THEN 2.872985e-05
232        WHEN $1 = 116 THEN 3.162278e-05
233        WHEN $1 = 117 THEN 3.480701e-05
234        WHEN $1 = 118 THEN 3.831187e-05
235        WHEN $1 = 119 THEN 4.216965e-05
236        WHEN $1 = 120 THEN 4.641589e-05
237        WHEN $1 = 121 THEN 5.108970e-05
238        WHEN $1 = 122 THEN 5.623413e-05
239        WHEN $1 = 123 THEN 6.189658e-05
240        WHEN $1 = 124 THEN 6.812921e-05
241        WHEN $1 = 125 THEN 7.498942e-05
242        WHEN $1 = 126 THEN 8.254042e-05
243        WHEN $1 = 127 THEN 9.085176e-05
244        WHEN $1 = 128 THEN 1.000000e-04
245        WHEN $1 = 129 THEN 1.100694e-04
246        WHEN $1 = 130 THEN 1.211528e-04
247        WHEN $1 = 131 THEN 1.333521e-04
248        WHEN $1 = 132 THEN 1.467799e-04
249        WHEN $1 = 133 THEN 1.615598e-04
250        WHEN $1 = 134 THEN 1.778279e-04
251        WHEN $1 = 135 THEN 1.957342e-04
252        WHEN $1 = 136 THEN 2.154435e-04
253        WHEN $1 = 137 THEN 2.371374e-04
254        WHEN $1 = 138 THEN 2.610157e-04
255        WHEN $1 = 139 THEN 2.872985e-04
256        WHEN $1 = 140 THEN 3.162278e-04
257        WHEN $1 = 141 THEN 3.480701e-04
258        WHEN $1 = 142 THEN 3.831187e-04
259        WHEN $1 = 143 THEN 4.216965e-04
260        WHEN $1 = 144 THEN 4.641589e-04
261        WHEN $1 = 145 THEN 5.108970e-04
262        WHEN $1 = 146 THEN 5.623413e-04
263        WHEN $1 = 147 THEN 6.189658e-04
264        WHEN $1 = 148 THEN 6.812921e-04
265        WHEN $1 = 149 THEN 7.498942e-04
266        WHEN $1 = 150 THEN 8.254042e-04
267        WHEN $1 = 151 THEN 9.085176e-04
268        WHEN $1 = 152 THEN 1.000000e-03
269        WHEN $1 = 153 THEN 1.100694e-03
270        WHEN $1 = 154 THEN 1.211528e-03
271        WHEN $1 = 155 THEN 1.333521e-03
272        WHEN $1 = 156 THEN 1.467799e-03
273        WHEN $1 = 157 THEN 1.615598e-03
274        WHEN $1 = 158 THEN 1.778279e-03
275        WHEN $1 = 159 THEN 1.957342e-03
276        WHEN $1 = 160 THEN 2.154435e-03
277        WHEN $1 = 161 THEN 2.371374e-03
278        WHEN $1 = 162 THEN 2.610157e-03
279        WHEN $1 = 163 THEN 2.872985e-03
280        WHEN $1 = 164 THEN 3.162278e-03
281        WHEN $1 = 165 THEN 3.480701e-03
282        WHEN $1 = 166 THEN 3.831187e-03
283        WHEN $1 = 167 THEN 4.216965e-03
284        WHEN $1 = 168 THEN 4.641589e-03
285        WHEN $1 = 169 THEN 5.108970e-03
286        WHEN $1 = 170 THEN 5.623413e-03
287        WHEN $1 = 171 THEN 6.189658e-03
288        WHEN $1 = 172 THEN 6.812921e-03
289        WHEN $1 = 173 THEN 7.498942e-03
290        WHEN $1 = 174 THEN 8.254042e-03
291        WHEN $1 = 175 THEN 9.085176e-03
292        WHEN $1 = 176 THEN 1.000000e-02
293        WHEN $1 = 177 THEN 1.100694e-02
294        WHEN $1 = 178 THEN 1.211528e-02
295        WHEN $1 = 179 THEN 1.333521e-02
296        WHEN $1 = 180 THEN 1.467799e-02
297        WHEN $1 = 181 THEN 1.615598e-02
298        WHEN $1 = 182 THEN 1.778279e-02
299        WHEN $1 = 183 THEN 1.957342e-02
300        WHEN $1 = 184 THEN 2.154435e-02
301        WHEN $1 = 185 THEN 2.371374e-02
302        WHEN $1 = 186 THEN 2.610157e-02
303        WHEN $1 = 187 THEN 2.872985e-02
304        WHEN $1 = 188 THEN 3.162278e-02
305        WHEN $1 = 189 THEN 3.480701e-02
306        WHEN $1 = 190 THEN 3.831187e-02
307        WHEN $1 = 191 THEN 4.216965e-02
308        WHEN $1 = 192 THEN 4.641589e-02
309        WHEN $1 = 193 THEN 5.108970e-02
310        WHEN $1 = 194 THEN 5.623413e-02
311        WHEN $1 = 195 THEN 6.189658e-02
312        WHEN $1 = 196 THEN 6.812921e-02
313        WHEN $1 = 197 THEN 7.498942e-02
314        WHEN $1 = 198 THEN 8.254042e-02
315        WHEN $1 = 199 THEN 9.085176e-02
316        WHEN $1 = 200 THEN 1.000000e-01
317        WHEN $1 = 201 THEN 1.100694e-01
318        WHEN $1 = 202 THEN 1.211528e-01
319        WHEN $1 = 203 THEN 1.333521e-01
320        WHEN $1 = 204 THEN 1.467799e-01
321        WHEN $1 = 205 THEN 1.615598e-01
322        WHEN $1 = 206 THEN 1.778279e-01
323        WHEN $1 = 207 THEN 1.957342e-01
324        WHEN $1 = 208 THEN 2.154435e-01
325        WHEN $1 = 209 THEN 2.371374e-01
326        WHEN $1 = 210 THEN 2.610157e-01
327        WHEN $1 = 211 THEN 2.872985e-01
328        WHEN $1 = 212 THEN 3.162278e-01
329        WHEN $1 = 213 THEN 3.480701e-01
330        WHEN $1 = 214 THEN 3.831187e-01
331        WHEN $1 = 215 THEN 4.216965e-01
332        WHEN $1 = 216 THEN 4.641589e-01
333        WHEN $1 = 217 THEN 5.108970e-01
334        WHEN $1 = 218 THEN 5.623413e-01
335        WHEN $1 = 219 THEN 6.189658e-01
336        WHEN $1 = 220 THEN 6.812921e-01
337        WHEN $1 = 221 THEN 7.498942e-01
338        WHEN $1 = 222 THEN 8.254042e-01
339        WHEN $1 = 223 THEN 9.085176e-01
340        WHEN $1 = 224 THEN 1.000000e+00
341        WHEN $1 = 225 THEN 1.000000e+01
342        WHEN $1 = 226 THEN 1.000000e+02
343        WHEN $1 = 227 THEN 1.000000e+03
344        WHEN $1 = 228 THEN 1.000000e+04
345        WHEN $1 = 229 THEN 1.000000e+05
346        WHEN $1 = 230 THEN 1.000000e+06
347        WHEN $1 = 231 THEN 1.000000e+07
348        WHEN $1 = 232 THEN 1.000000e+08
349        WHEN $1 = 233 THEN 1.000000e+09
350        WHEN $1 = 234 THEN 1.000000e+10
351        WHEN $1 = 235 THEN 1.000000e+11
352        WHEN $1 = 236 THEN 1.000000e+12
353        WHEN $1 = 237 THEN 1.000000e+13
354        WHEN $1 = 238 THEN 1.000000e+14
355        WHEN $1 = 239 THEN 1.000000e+15
356        WHEN $1 = 240 THEN 1.000000e+16
357        WHEN $1 = 241 THEN 1.000000e+17
358        WHEN $1 = 242 THEN 1.000000e+18
359        WHEN $1 = 243 THEN 1.000000e+19
360        WHEN $1 = 244 THEN 1.000000e+20
361        WHEN $1 = 245 THEN 1.000000e+21
362        WHEN $1 = 246 THEN 1.000000e+22
363        WHEN $1 = 247 THEN 1.000000e+23
364        WHEN $1 = 248 THEN 1.000000e+24
365        WHEN $1 = 249 THEN 1.000000e+25
366        WHEN $1 = 250 THEN 1.000000e+26
367        WHEN $1 = 251 THEN 1.000000e+27
368        WHEN $1 = 252 THEN 1.000000e+28
369        WHEN $1 = 253 THEN 1.000000e+29
370        WHEN $1 = 254 THEN 1.000000e+30
371        WHEN $1 = 255 THEN 1.000000e+31
372    END INTO perc;
373    RETURN perc;
374END;
375$BODY$
376LANGUAGE plpgsql;
377-- +migrate StatementEnd
378
379-- +migrate StatementBegin
380CREATE FUNCTION set_tx()
381    RETURNS TRIGGER 
382AS 
383$BODY$
384DECLARE token_value NUMERIC;
385BEGIN
386    -- Validate L1/L2 constrains
387    IF NEW.is_l1 AND (( -- L1 mandatory fields
388        NEW.user_origin IS NULL OR
389        NEW.from_eth_addr IS NULL OR
390        NEW.from_bjj IS NULL OR
391        NEW.load_amount IS NULL OR
392        NEW.load_amount_f IS NULL
393    ) OR (NOT NEW.user_origin AND NEW.batch_num IS NULL)) THEN -- If is Coordinator L1, must include batch_num
394        RAISE EXCEPTION 'Invalid L1 tx.';
395    ELSIF NOT NEW.is_l1 THEN
396        IF NEW.fee IS NULL THEN
397            NEW.fee = (SELECT 0);
398        END IF;
399        IF NEW.batch_num IS NULL OR NEW.nonce IS NULL THEN
400            RAISE EXCEPTION 'Invalid L2 tx.';
401        END IF;
402    END IF;
403    -- If is L2, add token_id
404    IF NOT NEW.is_l1 THEN
405        NEW."token_id" = (SELECT token_id FROM account WHERE idx = NEW."from_idx");
406    END IF;
407    -- Set value_usd
408    token_value = (SELECT usd / POWER(10, decimals) FROM token WHERE token_id = NEW.token_id);
409    NEW."amount_usd" = (SELECT token_value * NEW.amount_f);
410    NEW."load_amount_usd" = (SELECT token_value * NEW.load_amount_f);
411    IF NOT NEW.is_l1 THEN
412        NEW."fee_usd" = (SELECT NEW."amount_usd" * fee_percentage(NEW.fee::NUMERIC));
413    END IF;
414    RETURN NEW;
415END;
416$BODY$
417LANGUAGE plpgsql;
418-- +migrate StatementEnd
419CREATE TRIGGER trigger_set_tx BEFORE INSERT ON tx
420FOR EACH ROW EXECUTE PROCEDURE set_tx();
421
422-- +migrate StatementBegin
423CREATE FUNCTION forge_l1_user_txs() 
424    RETURNS TRIGGER 
425AS 
426$BODY$
427BEGIN
428    IF NEW.forge_l1_txs_num IS NOT NULL THEN
429        UPDATE tx 
430        SET batch_num = NEW.batch_num
431        WHERE user_origin AND NEW.forge_l1_txs_num = to_forge_l1_txs_num;
432    END IF;
433    RETURN NEW;
434END;
435$BODY$
436LANGUAGE plpgsql;
437-- +migrate StatementEnd
438CREATE TRIGGER trigger_forge_l1_txs AFTER INSERT ON batch
439FOR EACH ROW EXECUTE PROCEDURE forge_l1_user_txs();
440
441CREATE TABLE account (
442    idx BIGINT PRIMARY KEY,
443    token_id INT NOT NULL REFERENCES token (token_id) ON DELETE CASCADE,
444    batch_num BIGINT NOT NULL REFERENCES batch (batch_num) ON DELETE CASCADE,
445    bjj BYTEA NOT NULL,
446    eth_addr BYTEA NOT NULL
447);
448
449CREATE TABLE rollup_vars (
450    eth_block_num BIGINT PRIMARY KEY REFERENCES block (eth_block_num) ON DELETE CASCADE,
451    forge_l1_timeout BYTEA NOT NULL,
452    fee_l1_user_tx BYTEA NOT NULL,
453    fee_add_token BYTEA NOT NULL,
454    tokens_hez BYTEA NOT NULL,
455    governance BYTEA NOT NULL
456);
457
458CREATE TABLE consensus_vars (
459    eth_block_num BIGINT PRIMARY KEY REFERENCES block (eth_block_num) ON DELETE CASCADE,
460    slot_deadline INT NOT NULL,
461    close_auction_slots INT NOT NULL,
462    open_auction_slots INT NOT NULL,
463    min_bid_slots VARCHAR(200) NOT NULL,
464    outbidding INT NOT NULL,
465    donation_address BYTEA NOT NULL,
466    governance_address BYTEA NOT NULL,
467    allocation_ratio VARCHAR(200)
468);
469
470-- L2
471CREATE TABLE tx_pool (
472    tx_id BYTEA PRIMARY KEY,
473    from_idx BIGINT NOT NULL,
474    to_idx BIGINT,
475    to_eth_addr BYTEA,
476    to_bjj BYTEA,
477    token_id INT NOT NULL REFERENCES token (token_id) ON DELETE CASCADE,
478    amount BYTEA NOT NULL,
479    amount_f NUMERIC NOT NULL,
480    fee SMALLINT NOT NULL,
481    nonce BIGINT NOT NULL,
482    state CHAR(4) NOT NULL,
483    signature BYTEA NOT NULL,
484    timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL,
485    batch_num BIGINT,
486    rq_from_idx BIGINT,
487    rq_to_idx BIGINT,
488    rq_to_eth_addr BYTEA,
489    rq_to_bjj BYTEA,
490    rq_token_id INT,
491    rq_amount BYTEA,
492    rq_fee SMALLINT,
493    rq_nonce BIGINT,
494    tx_type VARCHAR(40) NOT NULL
495);
496
497CREATE TABLE account_creation_auth (
498    eth_addr BYTEA PRIMARY KEY,
499    bjj BYTEA NOT NULL,
500    signature BYTEA NOT NULL,
501    timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL
502);
503
504-- +migrate Down
505DROP TABLE account_creation_auth;
506DROP TABLE tx_pool;
507DROP TABLE consensus_vars;
508DROP TABLE rollup_vars;
509DROP TABLE account;
510DROP TABLE tx;
511DROP TABLE token;
512DROP TABLE bid;
513DROP TABLE exit_tree;
514DROP TABLE batch;
515DROP TABLE coordinator;
516DROP TABLE block;