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    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;