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.

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