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