arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
Add TokenID to L2Tx

L2Tx.TokenID is not on the data obtained by the Synchronizer from the
blockchain, but is set by the TxProcessor when processing the
transactions in the StateDB.
arnaucube root@arnaucube.com
Wed, 27 Jan 2021 12:40:09 +0100
commit

a899f43914938d2959c9c2a7b9d0b13a522341a6

parent

f3678e8cb8227137bea6e95098ad568ea1fddadf

5 files changed, 25 insertions(+), 13 deletions(-)

jump to
M common/l1tx.go → common/l1tx.go

@@ -205,6 +205,7 @@ return bi, nil

} // BytesDataAvailability encodes a L1Tx into []byte for the Data Availability +// [ fromIdx | toIdx | amountFloat16 | Fee ] func (tx *L1Tx) BytesDataAvailability(nLevels uint32) ([]byte, error) { idxLen := nLevels / 8 //nolint:gomnd
M common/l2tx.go → common/l2tx.go

@@ -10,16 +10,19 @@

// L2Tx is a struct that represents an already forged L2 tx type L2Tx struct { // Stored in DB: mandatory fileds - TxID TxID `meddler:"id"` - BatchNum BatchNum `meddler:"batch_num"` // batchNum in which this tx was forged. - Position int `meddler:"position"` - FromIdx Idx `meddler:"from_idx"` - ToIdx Idx `meddler:"to_idx"` - Amount *big.Int `meddler:"amount,bigint"` - Fee FeeSelector `meddler:"fee"` - Nonce Nonce `meddler:"nonce"` - Type TxType `meddler:"type"` - EthBlockNum int64 `meddler:"eth_block_num"` // Ethereum Block Number in which this L2Tx was added to the queue + TxID TxID `meddler:"id"` + BatchNum BatchNum `meddler:"batch_num"` // batchNum in which this tx was forged. + Position int `meddler:"position"` + FromIdx Idx `meddler:"from_idx"` + ToIdx Idx `meddler:"to_idx"` + // TokenID is filled by the TxProcessor + TokenID TokenID `meddler:"token_id"` + Amount *big.Int `meddler:"amount,bigint"` + Fee FeeSelector `meddler:"fee"` + // Nonce is filled by the TxProcessor + Nonce Nonce `meddler:"nonce"` + Type TxType `meddler:"type"` + EthBlockNum int64 `meddler:"eth_block_num"` // Ethereum Block Number in which this L2Tx was added to the queue } // NewL2Tx returns the given L2Tx with the TxId & Type parameters calculated

@@ -92,6 +95,7 @@ Type: tx.Type,

Position: tx.Position, FromIdx: tx.FromIdx, ToIdx: tx.ToIdx, + TokenID: tx.TokenID, Amount: tx.Amount, BatchNum: batchNum, EthBlockNum: tx.EthBlockNum,

@@ -107,6 +111,7 @@ return &PoolL2Tx{

TxID: tx.TxID, FromIdx: tx.FromIdx, ToIdx: tx.ToIdx, + TokenID: tx.TokenID, Amount: tx.Amount, Fee: tx.Fee, Nonce: tx.Nonce,

@@ -134,6 +139,7 @@ return txIDs

} // BytesDataAvailability encodes a L2Tx into []byte for the Data Availability +// [ fromIdx | toIdx | amountFloat16 | Fee ] func (tx L2Tx) BytesDataAvailability(nLevels uint32) ([]byte, error) { idxLen := nLevels / 8 //nolint:gomnd
M common/pooll2tx.go → common/pooll2tx.go

@@ -281,7 +281,8 @@ bi := new(big.Int).SetBytes(b[:])

return bi, nil } -// HashToSign returns the computed Poseidon hash from the *PoolL2Tx that will be signed by the sender. +// HashToSign returns the computed Poseidon hash from the *PoolL2Tx that will +// be signed by the sender. func (tx *PoolL2Tx) HashToSign(chainID uint16) (*big.Int, error) { toCompressedData, err := tx.TxCompressedData(chainID) if err != nil {

@@ -331,6 +332,7 @@ return L2Tx{

TxID: tx.TxID, FromIdx: tx.FromIdx, ToIdx: toIdx, + TokenID: tx.TokenID, Amount: tx.Amount, Fee: tx.Fee, Nonce: tx.Nonce,
M db/historydb/historydb.go → db/historydb/historydb.go

@@ -906,6 +906,7 @@ Position: l2txs[i].Position,

FromIdx: &l2txs[i].FromIdx, EffectiveFromIdx: &l2txs[i].FromIdx, ToIdx: l2txs[i].ToIdx, + TokenID: l2txs[i].TokenID, Amount: l2txs[i].Amount, AmountFloat: amountFloat, BatchNum: &l2txs[i].BatchNum,

@@ -1278,8 +1279,8 @@ var txs []*common.L2Tx

err := meddler.QueryAll( hdb.db, &txs, `SELECT tx.id, tx.batch_num, tx.position, - tx.from_idx, tx.to_idx, tx.amount, tx.fee, tx.nonce, - tx.type, tx.eth_block_num + tx.from_idx, tx.to_idx, tx.amount, tx.token_id, + tx.fee, tx.nonce, tx.type, tx.eth_block_num FROM tx WHERE is_l1 = FALSE ORDER BY item_id;`, ) return db.SlicePtrsToSlice(txs).([]common.L2Tx), tracerr.Wrap(err)
M test/til/txs.go → test/til/txs.go

@@ -818,6 +818,7 @@ // - blocks[].Rollup.Batch.L1CoordinatorTxs[].EffectiveFromIdx

// - blocks[].Rollup.Batch.L2Txs[].TxID // - blocks[].Rollup.Batch.L2Txs[].Position // - blocks[].Rollup.Batch.L2Txs[].Nonce +// - blocks[].Rollup.Batch.L2Txs[].TokenID // - blocks[].Rollup.Batch.ExitTree // - blocks[].Rollup.Batch.CreatedAccounts // - blocks[].Rollup.Batch.FeeIdxCoordinator

@@ -915,6 +916,7 @@ tx := &batch.L2Txs[k]

tx.Position = position position++ tx.Nonce = tc.extra.nonces[tx.FromIdx] + tx.TokenID = tc.accountsByIdx[int(tx.FromIdx)].TokenID tc.extra.nonces[tx.FromIdx]++ if err := tx.SetID(); err != nil { return tracerr.Wrap(err)