You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

516 lines
17 KiB

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