|
|
package zkproof
import ( "context" "encoding/json" "fmt" "io/ioutil" "os" "testing" "time"
"github.com/hermeznetwork/hermez-node/db/statedb" "github.com/hermeznetwork/hermez-node/prover" "github.com/hermeznetwork/hermez-node/test/txsets" "github.com/hermeznetwork/hermez-node/txprocessor" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" )
var proofServerURL string
const pollInterval = 200 * time.Millisecond
func TestMain(m *testing.M) { exitVal := 0 proofServerURL = os.Getenv("PROOF_SERVER_URL") if proofServerURL != "" { exitVal = m.Run() } os.Exit(exitVal) }
const MaxTx = 376 const NLevels = 32 const MaxL1Tx = 256 const MaxFeeTx = 64 const ChainID uint16 = 1
func TestZKInputs5(t *testing.T) { dir, err := ioutil.TempDir("", "tmpdb") require.NoError(t, err) defer assert.Nil(t, os.RemoveAll(dir))
sdb, err := statedb.NewStateDB(dir, 128, statedb.TypeBatchBuilder, NLevels) require.NoError(t, err)
_, coordIdxs, l1UserTxs, l1CoordTxs, l2Txs := txsets.GenerateTxsZKInputs5(t, ChainID)
config := txprocessor.Config{ NLevels: uint32(NLevels), MaxTx: MaxTx, MaxL1Tx: MaxL1Tx, MaxFeeTx: MaxFeeTx, ChainID: ChainID, } tp := txprocessor.NewTxProcessor(sdb, config)
// skip first batch to do the test with BatchNum=1
_, err = tp.ProcessTxs(nil, nil, nil, nil) require.NoError(t, err)
ptOut, err := tp.ProcessTxs(coordIdxs, l1UserTxs, l1CoordTxs, l2Txs) require.NoError(t, err)
// Store zkinputs json for debugging purposes
zkInputsJSON, err := json.Marshal(ptOut.ZKInputs) require.NoError(t, err) err = ioutil.WriteFile("/tmp/dbgZKInputs.json", zkInputsJSON, 0640) //nolint:gosec
require.NoError(t, err)
proofServerClient := prover.NewProofServerClient(proofServerURL, pollInterval) err = proofServerClient.WaitReady(context.Background()) require.NoError(t, err) err = proofServerClient.CalculateProof(context.Background(), ptOut.ZKInputs) require.NoError(t, err) proof, pubInputs, err := proofServerClient.GetProof(context.Background()) require.NoError(t, err) fmt.Printf("proof: %#v\n", proof) fmt.Printf("pubInputs: %#v\n", pubInputs) }
|