github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/db/migrations/state/0001.sql (about)

     1  -- +migrate Down
     2  DROP SCHEMA IF EXISTS state CASCADE;
     3  
     4  -- +migrate Up
     5  CREATE SCHEMA state;
     6  
     7  CREATE TABLE state.block
     8  ( --L1 block
     9      block_num   BIGINT PRIMARY KEY,
    10      block_hash  VARCHAR                  NOT NULL,
    11      parent_hash VARCHAR,
    12      received_at TIMESTAMP WITH TIME ZONE NOT NULL
    13  );
    14  
    15  CREATE TABLE state.forced_batch
    16  (
    17      forced_batch_num BIGINT PRIMARY KEY,
    18      global_exit_root VARCHAR,
    19      timestamp        TIMESTAMP WITH TIME ZONE NOT NULL,
    20      raw_txs_data     VARCHAR,
    21      coinbase         VARCHAR,
    22      block_num        BIGINT NOT NULL REFERENCES state.block (block_num) ON DELETE CASCADE
    23  );
    24  
    25  CREATE TABLE state.batch
    26  ( --batch abstraction: will be created through trusted state
    27      batch_num        BIGINT PRIMARY KEY,
    28      global_exit_root VARCHAR,
    29      local_exit_root  VARCHAR,
    30      state_root       VARCHAR,
    31      acc_input_hash   VARCHAR,
    32      timestamp        TIMESTAMP WITH TIME ZONE,
    33      coinbase         VARCHAR,
    34      raw_txs_data     BYTEA,
    35      forced_batch_num BIGINT REFERENCES state.forced_batch(forced_batch_num)
    36  );
    37  
    38  CREATE TABLE state.virtual_batch
    39  ( --virtual state
    40      batch_num BIGINT PRIMARY KEY REFERENCES state.batch (batch_num) ON DELETE CASCADE,
    41      tx_hash   VARCHAR,
    42      coinbase  VARCHAR,
    43      block_num BIGINT NOT NULL REFERENCES state.block (block_num) ON DELETE CASCADE
    44  );
    45  
    46  CREATE TABLE state.verified_batch
    47  ( --consolidated state
    48      batch_num  BIGINT PRIMARY KEY REFERENCES state.virtual_batch (batch_num) ON DELETE CASCADE,
    49      tx_hash    VARCHAR,
    50      aggregator VARCHAR,
    51      state_root VARCHAR,
    52      block_num  BIGINT NOT NULL REFERENCES state.block (block_num) ON DELETE CASCADE,
    53      is_trusted BOOLEAN DEFAULT true
    54  );
    55  
    56  CREATE TABLE state.l2block
    57  (
    58      block_num   BIGINT PRIMARY KEY,
    59      block_hash  VARCHAR                  NOT NULL,
    60      header      jsonb,
    61      uncles      jsonb,
    62      parent_hash VARCHAR,
    63      state_root  VARCHAR,
    64      received_at TIMESTAMP WITH TIME ZONE NOT NULL,
    65      created_at  TIMESTAMP WITH TIME ZONE NOT NULL,
    66      batch_num   BIGINT                   NOT NULL REFERENCES state.batch (batch_num) ON DELETE CASCADE
    67  );
    68  
    69  CREATE TABLE state.transaction
    70  (
    71      hash         VARCHAR PRIMARY KEY,
    72      encoded      VARCHAR NOT NULL,
    73      decoded      jsonb,
    74      l2_block_num BIGINT  NOT NULL REFERENCES state.l2block (block_num) ON DELETE CASCADE
    75  );
    76  
    77  CREATE TABLE state.exit_root
    78  (
    79      id                   SERIAL PRIMARY KEY,
    80      block_num            BIGINT NOT NULL REFERENCES state.block (block_num) ON DELETE CASCADE,
    81      timestamp            TIMESTAMP WITH TIME ZONE NOT NULL,
    82      mainnet_exit_root    BYTEA,
    83      rollup_exit_root     BYTEA,
    84      global_exit_root     BYTEA
    85  );
    86  
    87  CREATE TABLE state.sync_info
    88  (
    89      last_batch_num_seen         BIGINT,
    90      last_batch_num_consolidated BIGINT,
    91      init_sync_batch             BIGINT
    92  );
    93  
    94  -- Insert default values into sync_info table
    95  INSERT INTO state.sync_info (last_batch_num_seen, last_batch_num_consolidated, init_sync_batch)
    96  VALUES (0, 0, 0);
    97  
    98  CREATE TABLE state.receipt
    99  (
   100      tx_hash             VARCHAR NOT NULL PRIMARY KEY REFERENCES state.transaction (hash) ON DELETE CASCADE,
   101      type                integer,
   102      post_state          BYTEA,
   103      status              BIGINT,
   104      cumulative_gas_used BIGINT,
   105      gas_used            BIGINT,
   106      block_num           BIGINT  NOT NULL REFERENCES state.l2block (block_num) ON DELETE CASCADE,
   107      tx_index            integer,
   108      contract_address    VARCHAR
   109  );
   110  
   111  CREATE TABLE state.log
   112  (
   113      tx_hash   VARCHAR NOT NULL REFERENCES state.transaction (hash) ON DELETE CASCADE,
   114      log_index integer,
   115      address   VARCHAR NOT NULL,
   116      data      VARCHAR,
   117      topic0    VARCHAR NOT NULL,
   118      topic1    VARCHAR,
   119      topic2    VARCHAR,
   120      topic3    VARCHAR,
   121      PRIMARY KEY (tx_hash, log_index)
   122  );
   123  
   124  CREATE TABLE state.proof
   125  (
   126      batch_num  BIGINT NOT NULL REFERENCES state.batch (batch_num) ON DELETE CASCADE,
   127      batch_num_final BIGINT NOT NULL REFERENCES state.batch (batch_num) ON DELETE CASCADE,
   128      proof VARCHAR,
   129      proof_id VARCHAR,
   130      input_prover VARCHAR,
   131      prover VARCHAR,
   132      generating BOOLEAN DEFAULT FALSE,
   133      PRIMARY KEY (batch_num, batch_num_final)    
   134  );
   135  
   136  CREATE TABLE IF NOT EXISTS state.sequences
   137  ( --Allowed Verifications
   138      from_batch_num BIGINT REFERENCES state.batch (batch_num) ON DELETE CASCADE,
   139      to_batch_num   BIGINT REFERENCES state.batch (batch_num) ON DELETE CASCADE
   140  );
   141  
   142  CREATE TABLE state.monitored_txs
   143  (
   144      owner      VARCHAR NOT NULL,
   145      id         VARCHAR NOT NULL,
   146      from_addr  VARCHAR NOT NULL,
   147      to_addr    VARCHAR,
   148      nonce      DECIMAL(78, 0) NOT NULL,
   149      value      DECIMAL(78, 0),
   150      data       VARCHAR,
   151      gas        DECIMAL(78, 0) NOT NULL,
   152      gas_price  DECIMAL(78, 0) NOT NULL,
   153      status     VARCHAR NOT NULL,
   154      history    VARCHAR[],
   155      block_num  BIGINT,
   156      created_at TIMESTAMP WITH TIME ZONE NOT NULL,
   157      updated_at TIMESTAMP WITH TIME ZONE NOT NULL,
   158      PRIMARY KEY (owner, id)
   159  );
   160  
   161  CREATE TABLE state.debug
   162  (
   163      error_type  VARCHAR,
   164      timestamp timestamp,
   165      payload VARCHAR  
   166  );