mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 03:16:45 +01:00
Parametrize ChainID
This commit is contained in:
@@ -76,6 +76,7 @@ type StateDB struct {
|
||||
db *pebble.PebbleStorage
|
||||
mt *merkletree.MerkleTree
|
||||
typ TypeStateDB
|
||||
chainID uint16
|
||||
// idx holds the current Idx that the BatchBuilder is using
|
||||
idx common.Idx
|
||||
zki *common.ZKInputs
|
||||
@@ -88,7 +89,7 @@ type StateDB struct {
|
||||
|
||||
// NewStateDB creates a new StateDB, allowing to use an in-memory or in-disk
|
||||
// storage
|
||||
func NewStateDB(path string, typ TypeStateDB, nLevels int) (*StateDB, error) {
|
||||
func NewStateDB(path string, typ TypeStateDB, nLevels int, chainID uint16) (*StateDB, error) {
|
||||
var sto *pebble.PebbleStorage
|
||||
var err error
|
||||
sto, err = pebble.NewPebbleStorage(path+PathCurrent, false)
|
||||
@@ -108,10 +109,11 @@ func NewStateDB(path string, typ TypeStateDB, nLevels int) (*StateDB, error) {
|
||||
}
|
||||
|
||||
sdb := &StateDB{
|
||||
path: path,
|
||||
db: sto,
|
||||
mt: mt,
|
||||
typ: typ,
|
||||
path: path,
|
||||
db: sto,
|
||||
mt: mt,
|
||||
typ: typ,
|
||||
chainID: chainID,
|
||||
}
|
||||
|
||||
// load currentBatch
|
||||
@@ -521,7 +523,7 @@ type LocalStateDB struct {
|
||||
// NewLocalStateDB returns a new LocalStateDB connected to the given
|
||||
// synchronizerDB
|
||||
func NewLocalStateDB(path string, synchronizerDB *StateDB, typ TypeStateDB, nLevels int) (*LocalStateDB, error) {
|
||||
s, err := NewStateDB(path, typ, nLevels)
|
||||
s, err := NewStateDB(path, typ, nLevels, synchronizerDB.chainID)
|
||||
if err != nil {
|
||||
return nil, tracerr.Wrap(err)
|
||||
}
|
||||
|
||||
@@ -45,7 +45,8 @@ func TestNewStateDBIntermediateState(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// test values
|
||||
@@ -67,7 +68,7 @@ func TestNewStateDBIntermediateState(t *testing.T) {
|
||||
|
||||
// call NewStateDB which should get the db at the last checkpoint state
|
||||
// executing a Reset (discarding the last 'testkey0'&'testvalue0' data)
|
||||
sdb, err = NewStateDB(dir, TypeTxSelector, 0)
|
||||
sdb, err = NewStateDB(dir, TypeTxSelector, 0, chainID)
|
||||
assert.NoError(t, err)
|
||||
v, err = sdb.db.Get(k0)
|
||||
assert.NotNil(t, err)
|
||||
@@ -109,7 +110,7 @@ func TestNewStateDBIntermediateState(t *testing.T) {
|
||||
|
||||
// call NewStateDB which should get the db at the last checkpoint state
|
||||
// executing a Reset (discarding the last 'testkey1'&'testvalue1' data)
|
||||
sdb, err = NewStateDB(dir, TypeTxSelector, 0)
|
||||
sdb, err = NewStateDB(dir, TypeTxSelector, 0, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
v, err = sdb.db.Get(k0)
|
||||
@@ -127,7 +128,8 @@ func TestStateDBWithoutMT(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// create test accounts
|
||||
@@ -181,7 +183,8 @@ func TestStateDBWithMT(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// create test accounts
|
||||
@@ -233,7 +236,8 @@ func TestCheckpoints(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// create test accounts
|
||||
@@ -350,7 +354,8 @@ func TestStateDBGetAccounts(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "tmpdb")
|
||||
require.NoError(t, err)
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// create test accounts
|
||||
@@ -397,7 +402,8 @@ func TestCheckAccountsTreeTestVectors(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32, chainID)
|
||||
require.NoError(t, err)
|
||||
|
||||
ay0 := new(big.Int).Sub(new(big.Int).Exp(big.NewInt(2), big.NewInt(253), nil), big.NewInt(1))
|
||||
|
||||
@@ -93,7 +93,7 @@ func (s *StateDB) ProcessTxs(ptc ProcessTxsConfig, coordIdxs []common.Idx, l1use
|
||||
exits := make([]processedExit, nTx)
|
||||
|
||||
if s.typ == TypeBatchBuilder {
|
||||
s.zki = common.NewZKInputs(ptc.MaxTx, ptc.MaxL1Tx, ptc.MaxTx, ptc.MaxFeeTx, ptc.NLevels, s.currentBatch.BigInt())
|
||||
s.zki = common.NewZKInputs(s.chainID, ptc.MaxTx, ptc.MaxL1Tx, ptc.MaxTx, ptc.MaxFeeTx, ptc.NLevels, s.currentBatch.BigInt())
|
||||
s.zki.OldLastIdx = s.idx.BigInt()
|
||||
s.zki.OldStateRoot = s.mt.Root().BigInt()
|
||||
s.zki.Metadata.NewLastIdxRaw = s.idx
|
||||
@@ -544,7 +544,7 @@ func (s *StateDB) ProcessL2Tx(coordIdxsMap map[common.TokenID]common.Idx, collec
|
||||
// ZKInputs
|
||||
if s.zki != nil {
|
||||
// Txs
|
||||
s.zki.TxCompressedData[s.i], err = tx.TxCompressedData()
|
||||
s.zki.TxCompressedData[s.i], err = tx.TxCompressedData(s.chainID)
|
||||
if err != nil {
|
||||
return nil, nil, false, tracerr.Wrap(err)
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ func TestComputeEffectiveAmounts(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
set := `
|
||||
@@ -42,7 +43,7 @@ func TestComputeEffectiveAmounts(t *testing.T) {
|
||||
> batchL1
|
||||
> block
|
||||
`
|
||||
tc := til.NewContext(common.RollupConstMaxL1UserTx)
|
||||
tc := til.NewContext(chainID, common.RollupConstMaxL1UserTx)
|
||||
blocks, err := tc.GenerateBlocks(set)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -201,11 +202,12 @@ func TestProcessTxsBalances(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// generate test transactions from test.SetBlockchain0 code
|
||||
tc := til.NewContext(common.RollupConstMaxL1UserTx)
|
||||
tc := til.NewContext(chainID, common.RollupConstMaxL1UserTx)
|
||||
blocks, err := tc.GenerateBlocks(til.SetBlockchainMinimumFlow0)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -333,11 +335,12 @@ func TestProcessTxsSynchronizer(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeSynchronizer, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// generate test transactions from test.SetBlockchain0 code
|
||||
tc := til.NewContext(common.RollupConstMaxL1UserTx)
|
||||
tc := til.NewContext(0, common.RollupConstMaxL1UserTx)
|
||||
blocks, err := tc.GenerateBlocks(til.SetBlockchain0)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -461,11 +464,12 @@ func TestProcessTxsBatchBuilder(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// generate test transactions from test.SetBlockchain0 code
|
||||
tc := til.NewContext(common.RollupConstMaxL1UserTx)
|
||||
tc := til.NewContext(0, common.RollupConstMaxL1UserTx)
|
||||
blocks, err := tc.GenerateBlocks(til.SetBlockchain0)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -549,7 +553,8 @@ func TestProcessTxsRootTestVectors(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -597,8 +602,8 @@ func TestCreateAccountDepositMaxValue(t *testing.T) {
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
users := generateJsUsers(t)
|
||||
|
||||
@@ -20,7 +20,8 @@ func TestGetIdx(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.NoError(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeTxSelector, 0, chainID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
var sk babyjub.PrivateKey
|
||||
|
||||
@@ -65,8 +65,8 @@ func generateJsUsers(t *testing.T) []til.User {
|
||||
return users
|
||||
}
|
||||
|
||||
func signL2Tx(t *testing.T, user til.User, l2Tx common.PoolL2Tx) common.PoolL2Tx {
|
||||
toSign, err := l2Tx.HashToSign()
|
||||
func signL2Tx(t *testing.T, chainID uint16, user til.User, l2Tx common.PoolL2Tx) common.PoolL2Tx {
|
||||
toSign, err := l2Tx.HashToSign(chainID)
|
||||
require.NoError(t, err)
|
||||
sig := user.BJJ.SignPoseidon(toSign)
|
||||
l2Tx.Signature = sig.Compress()
|
||||
@@ -78,7 +78,8 @@ func TestZKInputsHashTestVector0(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -152,7 +153,8 @@ func TestZKInputsHashTestVector1(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, 32, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -251,7 +253,8 @@ func TestZKInputsEmpty(t *testing.T) {
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
ptc := ProcessTxsConfig{
|
||||
@@ -330,7 +333,7 @@ func TestZKInputsEmpty(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
toSign, err := l2Txs[0].HashToSign()
|
||||
toSign, err := l2Txs[0].HashToSign(sdb.chainID)
|
||||
require.Nil(t, err)
|
||||
sig := users[0].BJJ.SignPoseidon(toSign)
|
||||
l2Txs[0].Signature = sig.Compress()
|
||||
@@ -399,8 +402,8 @@ func TestZKInputs0(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -431,7 +434,7 @@ func TestZKInputs0(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
toSign, err := l2Txs[0].HashToSign()
|
||||
toSign, err := l2Txs[0].HashToSign(sdb.chainID)
|
||||
require.NoError(t, err)
|
||||
sig := users[0].BJJ.SignPoseidon(toSign)
|
||||
l2Txs[0].Signature = sig.Compress()
|
||||
@@ -487,8 +490,8 @@ func TestZKInputs1(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -530,7 +533,7 @@ func TestZKInputs1(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
toSign, err := l2Txs[0].HashToSign()
|
||||
toSign, err := l2Txs[0].HashToSign(sdb.chainID)
|
||||
require.NoError(t, err)
|
||||
sig := users[0].BJJ.SignPoseidon(toSign)
|
||||
l2Txs[0].Signature = sig.Compress()
|
||||
@@ -594,8 +597,8 @@ func TestZKInputs2(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -668,8 +671,8 @@ func TestZKInputs2(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
l2Txs[0] = signL2Tx(t, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, users[0], l2Txs[1])
|
||||
l2Txs[0] = signL2Tx(t, sdb.chainID, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, sdb.chainID, users[0], l2Txs[1])
|
||||
|
||||
ptc := ProcessTxsConfig{
|
||||
NLevels: uint32(nLevels),
|
||||
@@ -738,8 +741,8 @@ func TestZKInputs3(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -812,8 +815,8 @@ func TestZKInputs3(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
l2Txs[0] = signL2Tx(t, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, users[0], l2Txs[1])
|
||||
l2Txs[0] = signL2Tx(t, sdb.chainID, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, sdb.chainID, users[0], l2Txs[1])
|
||||
|
||||
ptc := ProcessTxsConfig{
|
||||
NLevels: uint32(nLevels),
|
||||
@@ -882,8 +885,8 @@ func TestZKInputs4(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -966,8 +969,8 @@ func TestZKInputs4(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
l2Txs[0] = signL2Tx(t, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, users[0], l2Txs[1])
|
||||
l2Txs[0] = signL2Tx(t, sdb.chainID, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, sdb.chainID, users[0], l2Txs[1])
|
||||
|
||||
ptc := ProcessTxsConfig{
|
||||
NLevels: uint32(nLevels),
|
||||
@@ -1036,8 +1039,8 @@ func TestZKInputs5(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// same values than in the js test
|
||||
@@ -1098,8 +1101,8 @@ func TestZKInputs5(t *testing.T) {
|
||||
Type: common.TxTypeExit,
|
||||
},
|
||||
}
|
||||
l2Txs[0] = signL2Tx(t, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, users[0], l2Txs[1])
|
||||
l2Txs[0] = signL2Tx(t, sdb.chainID, users[0], l2Txs[0])
|
||||
l2Txs[1] = signL2Tx(t, sdb.chainID, users[0], l2Txs[1])
|
||||
|
||||
ptc := ProcessTxsConfig{
|
||||
NLevels: uint32(nLevels),
|
||||
@@ -1160,8 +1163,8 @@ func TestZKInputs6(t *testing.T) {
|
||||
defer assert.Nil(t, os.RemoveAll(dir))
|
||||
|
||||
nLevels := 16
|
||||
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels)
|
||||
chainID := uint16(0)
|
||||
sdb, err := NewStateDB(dir, TypeBatchBuilder, nLevels, chainID)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// Coordinator Idx where to send the fees
|
||||
@@ -1174,7 +1177,7 @@ func TestZKInputs6(t *testing.T) {
|
||||
MaxFeeTx: 4,
|
||||
}
|
||||
|
||||
tc := til.NewContext(common.RollupConstMaxL1UserTx)
|
||||
tc := til.NewContext(0, common.RollupConstMaxL1UserTx)
|
||||
blocks, err := tc.GenerateBlocks(til.SetBlockchainMinimumFlow0)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user