@ -5,17 +5,14 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
"math/big"
"os"
"strconv"
"testing"
ethCommon "github.com/ethereum/go-ethereum/common"
"github.com/hermeznetwork/hermez-node/common"
"github.com/hermeznetwork/hermez-node/db/statedb"
"github.com/hermeznetwork/hermez-node/log"
"github.com/hermeznetwork/hermez-node/test/til"
"github.com/iden3/go-iden3-crypto/babyjub "
"github.com/hermeznetwork/hermez-node/test/txsets "
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -39,41 +36,6 @@ func printZKInputs(t *testing.T, zki *common.ZKInputs) {
fmt . Println ( "" )
}
func generateJsUsers ( t * testing . T ) [ ] til . User {
// same values than in the js test
// skJsHex is equivalent to the 0000...000i js private key in commonjs
skJsHex := [ ] string { "7eb258e61862aae75c6c1d1f7efae5006ffc9e4d5596a6ff95f3df4ea209ea7f" , "c005700f76f4b4cec710805c21595688648524df0a9d467afae537b7a7118819" , "b373d14c67fb2a517bf4ac831c93341eec8e1b38dbc14e7d725b292a7cf84707" , "2064b68d04a7aaae0ac3b36bf6f1850b380f1423be94a506c531940bd4a48b76" }
addrHex := [ ] string { "0x7e5f4552091a69125d5dfcb7b8c2659029395bdf" , "0x2b5ad5c4795c026514f8317c7a215e218dccd6cf" , "0x6813eb9362372eef6200f3b1dbc3f819671cba69" , "0x1eff47bc3a10a45d4b230b5d10e37751fe6aa718" }
var users [ ] til . User
for i := 0 ; i < len ( skJsHex ) ; i ++ {
skJs , err := hex . DecodeString ( skJsHex [ i ] )
require . NoError ( t , err )
var sk babyjub . PrivateKey
copy ( sk [ : ] , skJs )
// bjj := sk.Public()
user := til . User {
Name : strconv . Itoa ( i ) ,
BJJ : & sk ,
Addr : ethCommon . HexToAddress ( addrHex [ i ] ) ,
}
users = append ( users , user )
}
assert . Equal ( t , "d746824f7d0ac5044a573f51b278acb56d823bec39551d1d7bf7378b68a1b021" , users [ 0 ] . BJJ . Public ( ) . String ( ) )
assert . Equal ( t , "4d05c307400c65795f02db96b1b81c60386fd53e947d9d3f749f3d99b1853909" , users [ 1 ] . BJJ . Public ( ) . String ( ) )
assert . Equal ( t , "38ffa002724562eb2a952a2503e206248962406cf16392ff32759b6f2a41fe11" , users [ 2 ] . BJJ . Public ( ) . String ( ) )
assert . Equal ( t , "c719e6401190be7fa7fbfcd3448fe2755233c01575341a3b09edadf5454f760b" , users [ 3 ] . BJJ . Public ( ) . String ( ) )
return users
}
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 ( )
return l2Tx
}
func TestZKInputsHashTestVector0 ( t * testing . T ) {
dir , err := ioutil . TempDir ( "" , "tmpdb" )
require . NoError ( t , err )
@ -82,34 +44,9 @@ func TestZKInputsHashTestVector0(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , 32 )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 256 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputsHash0 ( t , chainID )
config := Config {
NLevels : 32 ,
MaxFeeTx : 8 ,
@ -119,7 +56,7 @@ func TestZKInputsHashTestVector0(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
ptOut , err := tp . ProcessTxs ( nil , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -156,45 +93,9 @@ func TestZKInputsHashTestVector1(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , 32 )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 257 ,
ToIdx : 256 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 137 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputsHash1 ( t , chainID )
config := Config {
NLevels : 32 ,
MaxFeeTx : 8 ,
@ -204,7 +105,7 @@ func TestZKInputsHashTestVector1(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
ptOut , err := tp . ProcessTxs ( nil , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -299,40 +200,9 @@ func TestZKInputsEmpty(t *testing.T) {
// so that the state tree is not empty (same transactions as
// TestZKInputs0)
// same values than in the js test
users := generateJsUsers ( t )
l1UserTxs = [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
}
l2Txs = [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 256 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 0 ,
Type : common . TxTypeTransfer ,
} ,
}
toSign , err := l2Txs [ 0 ] . HashToSign ( tp . config . ChainID )
require . NoError ( t , err )
sig := users [ 0 ] . BJJ . SignPoseidon ( toSign )
l2Txs [ 0 ] . Signature = sig . Compress ( )
_ , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs = txsets . GenerateTxsZKInputs0 ( t , chainID )
ptOut , err = tp . ProcessTxs ( nil , l1UserTxs , nil , l2Txs )
ptOut , err = tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
rootNonZero := sdb . MT . Root ( )
@ -399,39 +269,8 @@ func TestZKInputs0(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , nLevels )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 256 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 0 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
toSign , err := l2Txs [ 0 ] . HashToSign ( chainID )
require . NoError ( t , err )
sig := users [ 0 ] . BJJ . SignPoseidon ( toSign )
l2Txs [ 0 ] . Signature = sig . Compress ( )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputs0 ( t , chainID )
config := Config {
NLevels : uint32 ( nLevels ) ,
@ -442,7 +281,7 @@ func TestZKInputs0(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
ptOut , err := tp . ProcessTxs ( nil , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -486,50 +325,8 @@ func TestZKInputs1(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , nLevels )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 256 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
toSign , err := l2Txs [ 0 ] . HashToSign ( chainID )
require . NoError ( t , err )
sig := users [ 0 ] . BJJ . SignPoseidon ( toSign )
l2Txs [ 0 ] . Signature = sig . Compress ( )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputs1 ( t , chainID )
config := Config {
NLevels : uint32 ( nLevels ) ,
@ -540,8 +337,7 @@ func TestZKInputs1(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
coordIdxs := [ ] common . Idx { 257 }
ptOut , err := tp . ProcessTxs ( coordIdxs , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -592,79 +388,8 @@ func TestZKInputs2(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , nLevels )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 2 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 2 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 3 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 3 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 258 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
{
FromIdx : 256 ,
ToIdx : 259 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 1 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
l2Txs [ 0 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 0 ] )
l2Txs [ 1 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 1 ] )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputs2 ( t , chainID )
config := Config {
NLevels : uint32 ( nLevels ) ,
@ -675,8 +400,7 @@ func TestZKInputs2(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
coordIdxs := [ ] common . Idx { 257 }
ptOut , err := tp . ProcessTxs ( coordIdxs , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -735,79 +459,8 @@ func TestZKInputs3(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , nLevels )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 2 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 2 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 1000 ) ,
TokenID : 1 ,
FromBJJ : users [ 3 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 3 ] . Addr ,
ToIdx : 258 ,
Type : common . TxTypeCreateAccountDepositTransfer ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 258 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
{
FromIdx : 256 ,
ToIdx : 259 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 1 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
l2Txs [ 0 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 0 ] )
l2Txs [ 1 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 1 ] )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputs3 ( t , chainID )
config := Config {
NLevels : uint32 ( nLevels ) ,
@ -818,8 +471,7 @@ func TestZKInputs3(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
coordIdxs := [ ] common . Idx { 257 }
ptOut , err := tp . ProcessTxs ( coordIdxs , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -878,89 +530,8 @@ func TestZKInputs4(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , nLevels )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 2 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 2 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 1000 ) ,
TokenID : 1 ,
FromBJJ : users [ 3 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 3 ] . Addr ,
ToIdx : 258 ,
Type : common . TxTypeCreateAccountDepositTransfer ,
UserOrigin : true ,
} ,
{
FromIdx : 258 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 1000 ) ,
TokenID : 1 ,
FromEthAddr : users [ 2 ] . Addr ,
ToIdx : 259 ,
Type : common . TxTypeDepositTransfer ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 258 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
{
FromIdx : 256 ,
ToIdx : 259 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 1 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
}
chainID := uint16 ( 0 )
l2Txs [ 0 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 0 ] )
l2Txs [ 1 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 1 ] )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputs4 ( t , chainID )
config := Config {
NLevels : uint32 ( nLevels ) ,
@ -971,8 +542,7 @@ func TestZKInputs4(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
coordIdxs := [ ] common . Idx { 257 }
ptOut , err := tp . ProcessTxs ( coordIdxs , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
// check expected account keys values from tx inputs
@ -1031,68 +601,8 @@ func TestZKInputs5(t *testing.T) {
sdb , err := statedb . NewStateDB ( dir , 128 , statedb . TypeBatchBuilder , nLevels )
require . NoError ( t , err )
// same values than in the js test
users := generateJsUsers ( t )
l1Txs := [ ] common . L1Tx {
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 0 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 0 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 0 ,
DepositAmount : big . NewInt ( 16000000 ) ,
Amount : big . NewInt ( 0 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 0 ,
Type : common . TxTypeCreateAccountDeposit ,
UserOrigin : true ,
} ,
{
FromIdx : 257 ,
DepositAmount : big . NewInt ( 0 ) ,
Amount : big . NewInt ( 1000 ) ,
TokenID : 1 ,
FromBJJ : users [ 1 ] . BJJ . Public ( ) . Compress ( ) ,
FromEthAddr : users [ 1 ] . Addr ,
ToIdx : 1 ,
Type : common . TxTypeForceExit ,
UserOrigin : true ,
} ,
}
l2Txs := [ ] common . PoolL2Tx {
{
FromIdx : 256 ,
ToIdx : 257 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 0 ,
Fee : 126 ,
Type : common . TxTypeTransfer ,
} ,
{
FromIdx : 256 ,
ToIdx : 1 ,
TokenID : 1 ,
Amount : big . NewInt ( 1000 ) ,
Nonce : 1 ,
Fee : 126 ,
Type : common . TxTypeExit ,
} ,
}
chainID := uint16 ( 0 )
l2Txs [ 0 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 0 ] )
l2Txs [ 1 ] = signL2Tx ( t , chainID , users [ 0 ] , l2Txs [ 1 ] )
users , coordIdxs , l1UserTxs , l1CoordTxs , l2Txs := txsets . GenerateTxsZKInputs5 ( t , chainID )
config := Config {
NLevels : uint32 ( nLevels ) ,
@ -1103,8 +613,7 @@ func TestZKInputs5(t *testing.T) {
}
tp := NewTxProcessor ( sdb , config )
coordIdxs := [ ] common . Idx { 257 }
ptOut , err := tp . ProcessTxs ( coordIdxs , l1Txs , nil , l2Txs )
ptOut , err := tp . ProcessTxs ( coordIdxs , l1UserTxs , l1CoordTxs , l2Txs )
require . NoError ( t , err )
assert . Equal ( t , "9004936174112171168716185012590576631374182232656264130522697453639057968430" , sdb . MT . Root ( ) . BigInt ( ) . String ( ) )
@ -1145,7 +654,7 @@ func TestZKInputs5(t *testing.T) {
// TestZKInputs6:
// Tests ZKInputs generated by the batches generated by
// til .SetBlockchainMinimumFlow0
// txsets .SetBlockchainMinimumFlow0
func TestZKInputs6 ( t * testing . T ) {
dir , err := ioutil . TempDir ( "" , "tmpdb" )
require . NoError ( t , err )
@ -1166,7 +675,7 @@ func TestZKInputs6(t *testing.T) {
tp := NewTxProcessor ( sdb , config )
tc := til . NewContext ( 0 , common . RollupConstMaxL1UserTx )
blocks , err := tc . GenerateBlocks ( til . SetBlockchainMinimumFlow0 )
blocks , err := tc . GenerateBlocks ( txsets . SetBlockchainMinimumFlow0 )
require . NoError ( t , err )
// restart nonces of TilContext, as will be set by generating directly