Browse Source

Add usefull methods for reorg

feature/sql-semaphore1
Arnau B 4 years ago
parent
commit
c108739c24
7 changed files with 28 additions and 12 deletions
  1. +2
    -2
      common/exittree.go
  2. +1
    -2
      common/l1tx.go
  3. +1
    -2
      common/l2tx.go
  4. +1
    -1
      common/pooll2tx.go
  5. +16
    -1
      db/historydb/historydb.go
  6. +5
    -3
      db/historydb/migrations/001_init.sql
  7. +2
    -1
      db/l2db/migrations/001_init.sql

+ 2
- 2
common/exittree.go

@ -4,9 +4,9 @@ import (
"math/big"
)
type ExitTreeLeaf struct {
type ExitInfo struct {
AccountIdx Idx
MerkleProof []byte
Amount *big.Int
Balance *big.Int
Nullifier *big.Int
}

+ 1
- 2
common/l1tx.go

@ -22,8 +22,7 @@ type L1Tx struct {
Amount *big.Int `meddler:"amount,bigint"`
LoadAmount *big.Int `meddler:"load_amount,bigint"`
EthBlockNum uint64 `meddler:"eth_block_num"` // Ethereum Block Number in which this L1Tx was added to the queue
// Extra metadata, may be uninitialized
Type TxType `meddler:"-"` // optional, descrives which kind of tx it's
Type TxType `meddler:"tx_type"`
}
func (tx *L1Tx) Tx() *Tx {

+ 1
- 2
common/l2tx.go

@ -15,8 +15,7 @@ type L2Tx struct {
Amount *big.Int `meddler:"amount,bigint"`
Fee FeeSelector `meddler:"fee"`
Nonce Nonce `meddler:"nonce"`
// Extra metadata, may be uninitialized
Type TxType `meddler:"-"` // optional, descrives which kind of tx it's
Type TxType `meddler:"tx_type"`
}
func (tx *L2Tx) Tx() *Tx {

+ 1
- 1
common/pooll2tx.go

@ -62,8 +62,8 @@ type PoolL2Tx struct {
RqNonce uint64 `meddler:"rq_nonce,zeroisnull"` // effective 48 bits used
AbsoluteFee float64 `meddler:"absolute_fee,zeroisnull"`
AbsoluteFeeUpdate time.Time `meddler:"absolute_fee_update,utctimez"`
Type TxType `meddler:"tx_type"`
// Extra metadata, may be uninitialized
Type TxType `meddler:"-"` // optional, descrives which kind of tx it's
RqTxCompressedData []byte `meddler:"-"` // 253 bits, optional for atomic txs
}

+ 16
- 1
db/historydb/historydb.go

@ -54,7 +54,12 @@ func (hdb *HistoryDB) addBlocks(blocks []common.Block) error {
)
}
// GetBlocks retrrieve blocks from the DB
// GetBlock retrieve a block from the DB, given a block number
func (hdb *HistoryDB) GetBlock(blockNum uint64) (*common.Block, error) {
return nil, nil
}
// GetBlocks retrieve blocks from the DB, given a range of block numbers defined by from and to
func (hdb *HistoryDB) GetBlocks(from, to uint64) ([]*common.Block, error) {
var blocks []*common.Block
err := meddler.QueryAll(
@ -65,6 +70,16 @@ func (hdb *HistoryDB) GetBlocks(from, to uint64) ([]*common.Block, error) {
return blocks, err
}
// GetLastBlock retrieve the block with the highest block number from the DB
func (hdb *HistoryDB) GetLastBlock() (*common.Block, error) {
return nil, nil
}
// GetLastBatchNum returns the BatchNum of the latest forged batch
func (hdb *HistoryDB) GetLastBatchNum() (*common.BatchNum, error) {
return nil, nil
}
// Reorg deletes all the information that was added into the DB after the lastValidBlock
// WARNING: this is a draaft of the function, useful at the moment for tests
func (hdb *HistoryDB) Reorg(lastValidBlock uint64) error {

+ 5
- 3
db/historydb/migrations/001_init.sql

@ -30,7 +30,7 @@ CREATE TABLE exit_tree (
batch_num BIGINT REFERENCES batch (batch_num) ON DELETE CASCADE,
account_idx BIGINT,
merkle_proof BYTEA NOT NULL,
amount NUMERIC NOT NULL,
balance NUMERIC NOT NULL,
nullifier BYTEA NOT NULL,
PRIMARY KEY (batch_num, account_idx)
);
@ -72,7 +72,8 @@ CREATE TABLE l1tx (
token_id INT NOT NULL REFERENCES token (token_id),
amount NUMERIC NOT NULL,
load_amount BYTEA NOT NULL,
eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE
eth_block_num BIGINT NOT NULL REFERENCES block (eth_block_num) ON DELETE CASCADE,
tx_type VARCHAR(40) NOT NULL
);
CREATE TABLE l2tx (
@ -83,7 +84,8 @@ CREATE TABLE l2tx (
to_idx BIGINT NOT NULL,
amount NUMERIC NOT NULL,
fee INT NOT NULL,
nonce BIGINT NOT NULL
nonce BIGINT NOT NULL,
tx_type VARCHAR(40) NOT NULL
);
CREATE TABLE account (

+ 2
- 1
db/l2db/migrations/001_init.sql

@ -22,7 +22,8 @@ CREATE TABLE tx_pool (
signature BYTEA NOT NULL,
timestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL,
absolute_fee NUMERIC,
absolute_fee_update TIMESTAMP WITHOUT TIME ZONE
absolute_fee_update TIMESTAMP WITHOUT TIME ZONE,
tx_type VARCHAR(40) NOT NULL
);
CREATE TABLE account_creation_auth (

Loading…
Cancel
Save