Files
scroll/roller/prover/prover_test.go
Lawliet-Chan 5390ec93b4 refactor(zkp): Zk test automation (#589)
Co-authored-by: xinran chen <lawliet@xinran-m1x.local>
Co-authored-by: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com>
2023-06-29 09:23:58 +08:00

66 lines
1.4 KiB
Go

//go:build ffi
package prover_test
import (
"encoding/json"
"flag"
"io"
"os"
"path/filepath"
"testing"
"github.com/scroll-tech/go-ethereum/core/types"
"github.com/stretchr/testify/assert"
"scroll-tech/roller/config"
"scroll-tech/roller/prover"
)
var (
paramsPath = flag.String("params", "/assets/test_params", "params dir")
seedPath = flag.String("seed", "/assets/test_seed", "seed path")
tracesPath = flag.String("traces", "/assets/traces", "traces dir")
proofDumpPath = flag.String("dump", "/assets/agg_proof", "the path proofs dump to")
)
func TestFFI(t *testing.T) {
as := assert.New(t)
cfg := &config.ProverConfig{
ParamsPath: *paramsPath,
SeedPath: *seedPath,
}
prover, err := prover.NewProver(cfg)
as.NoError(err)
files, err := os.ReadDir(*tracesPath)
as.NoError(err)
traces := make([]*types.BlockTrace, 0)
for _, file := range files {
var (
f *os.File
byt []byte
)
f, err = os.Open(filepath.Join(*tracesPath, file.Name()))
as.NoError(err)
byt, err = io.ReadAll(f)
as.NoError(err)
trace := &types.BlockTrace{}
as.NoError(json.Unmarshal(byt, trace))
traces = append(traces, trace)
}
proof, err := prover.Prove("test", traces)
as.NoError(err)
t.Log("prove success")
// dump the proof
os.RemoveAll(*proofDumpPath)
proofByt, err := json.Marshal(proof)
as.NoError(err)
proofFile, err := os.Create(*proofDumpPath)
as.NoError(err)
_, err = proofFile.Write(proofByt)
as.NoError(err)
}