diff --git a/crates/classgroup/build.rs b/crates/classgroup/build.rs index a05d3bb..7476338 100644 --- a/crates/classgroup/build.rs +++ b/crates/classgroup/build.rs @@ -12,7 +12,6 @@ fn main() { let target = env::var("TARGET").expect("cargo should have set this"); if target == "aarch64-apple-darwin" { println!("cargo:rustc-link-search=/opt/homebrew/Cellar/gmp/6.3.0/lib"); - println!("cargo:rustc-link-search=/opt/homebrew/Cellar/flint/3.1.3-p1/lib"); println!("cargo:rustc-link-search=/opt/homebrew/Cellar/mpfr/4.2.1/lib"); } else if target == "aarch64-unknown-linux-gnu" { println!("cargo:rustc-link-search=/usr/lib/aarch64-linux-gnu/"); @@ -25,11 +24,10 @@ fn main() { cc::Build::new() .cpp(true) .file("src/vdf.cpp") + .static_flag(true) .flag("-I/opt/homebrew/Cellar/gmp/6.3.0/include") - .flag("-I/opt/homebrew/Cellar/flint/3.1.3-p1/include") .flag("-I/opt/homebrew/Cellar/mpfr/4.2.1/include") .flag("-L/opt/homebrew/Cellar/gmp/6.3.0/lib") - .flag("-L/opt/homebrew/Cellar/flint/3.1.3-p1/lib") .flag("-L/opt/homebrew/Cellar/mpfr/4.2.1/lib") .flag("-lgmp") .flag("-lflint") diff --git a/node/main.go b/node/main.go index 02082bd..2f12c8b 100644 --- a/node/main.go +++ b/node/main.go @@ -198,134 +198,93 @@ func main() { fmt.Println("Performing proof tree tests...") fmt.Println("\nTree Insertion") - sets := []int{1000, 10000, 100000, 1000000, 10000000, 100000000} + sets := []int{1000, 10000, 100000, 1000000, 10000000} + if memory.TotalMemory() > 64*1024*1024*1024 { + sets = append(sets, 100000000) + } for _, set := range sets { - for i := 1; i <= maxProcs; i *= 2 { - fmt.Println("Total Parallelism:", i) - var total atomic.Int64 - wg := sync.WaitGroup{} - wg.Add(i) - for j := 0; j < i; j++ { - go func() { - defer wg.Done() - vecTree := &qcrypto.VectorCommitmentTree{} - for k := 0; k < set; k++ { - d := make([]byte, 32) - rand.Read(d) - start := time.Now() - err := vecTree.Insert(d, d) - total.Add(int64(time.Since(start))) - if err != nil { - panic(err) - } - } - }() + var total atomic.Int64 + vecTree := &qcrypto.VectorCommitmentTree{} + for k := 0; k < set; k++ { + d := make([]byte, 32) + rand.Read(d) + start := time.Now() + err := vecTree.Insert(d, d) + total.Add(int64(time.Since(start))) + if err != nil { + panic(err) } - wg.Wait() - fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(set)/time.Duration(i)) } + fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(set)) } fmt.Println("\nTree Deletion") for _, set := range sets { - for i := 1; i <= maxProcs; i *= 2 { - fmt.Println("Total Parallelism:", i) - var total atomic.Int64 - wg := sync.WaitGroup{} - wg.Add(i) - for j := 0; j < i; j++ { - go func() { - defer wg.Done() - vecTree := &qcrypto.VectorCommitmentTree{} - data := make([][]byte, set) - for k := 0; k < set; k++ { - d := make([]byte, 32) - rand.Read(d) - data[k] = d - err := vecTree.Insert(d, d) - if err != nil { - panic(err) - } - } - for k := 0; k < set; k++ { - start := time.Now() - err := vecTree.Delete(data[k]) - total.Add(int64(time.Since(start))) - if err != nil { - panic(err) - } - } - }() + var total atomic.Int64 + vecTree := &qcrypto.VectorCommitmentTree{} + data := make([][]byte, set) + for k := 0; k < set; k++ { + d := make([]byte, 32) + rand.Read(d) + data[k] = d + err := vecTree.Insert(d, d) + if err != nil { + panic(err) } - wg.Wait() - fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(set)/time.Duration(i)) } + for k := 0; k < set; k++ { + start := time.Now() + err := vecTree.Delete(data[k]) + total.Add(int64(time.Since(start))) + if err != nil { + panic(err) + } + } + fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(set)) } fmt.Println("\nTree Commit") for _, set := range sets { - for i := 1; i <= maxProcs; i *= 2 { - fmt.Println("Total Parallelism:", i) - var total atomic.Int64 - wg := sync.WaitGroup{} - wg.Add(i) - for j := 0; j < i; j++ { - go func() { - defer wg.Done() - vecTree := &qcrypto.VectorCommitmentTree{} - data := make([][]byte, set) - for k := 0; k < set; k++ { - d := make([]byte, 32) - rand.Read(d) - data[k] = d - err := vecTree.Insert(d, d) - if err != nil { - panic(err) - } - } - - start := time.Now() - vecTree.Commit() - total.Add(int64(time.Since(start))) - }() + var total atomic.Int64 + vecTree := &qcrypto.VectorCommitmentTree{} + data := make([][]byte, set) + for k := 0; k < set; k++ { + d := make([]byte, 32) + rand.Read(d) + data[k] = d + err := vecTree.Insert(d, d) + if err != nil { + panic(err) } - wg.Wait() - fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(i)) } + + start := time.Now() + vecTree.Commit() + total.Add(int64(time.Since(start))) + fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())) } fmt.Println("\nTree Proof") for _, set := range sets { - for i := 1; i <= maxProcs; i *= 2 { - fmt.Println("Total Parallelism:", i) - var total atomic.Int64 - wg := sync.WaitGroup{} - wg.Add(i) - for j := 0; j < i; j++ { - go func() { - defer wg.Done() - vecTree := &qcrypto.VectorCommitmentTree{} - data := make([][]byte, set) - for k := 0; k < set; k++ { - d := make([]byte, 32) - rand.Read(d) - data[k] = d - err := vecTree.Insert(d, d) - if err != nil { - panic(err) - } - } - vecTree.Commit() - for k := 0; k < set; k++ { - start := time.Now() - vecTree.Prove(data[k]) - total.Add(int64(time.Since(start))) - } - }() + var total atomic.Int64 + vecTree := &qcrypto.VectorCommitmentTree{} + data := make([][]byte, set) + for k := 0; k < set; k++ { + d := make([]byte, 32) + rand.Read(d) + data[k] = d + err := vecTree.Insert(d, d) + if err != nil { + panic(err) } - wg.Wait() - fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(set)/time.Duration(i)) } + vecTree.Commit() + for k := 0; k < set; k++ { + start := time.Now() + vecTree.Prove(data[k]) + total.Add(int64(time.Since(start))) + } + fmt.Println("Size: ", set, "Op Speed: ", time.Duration(total.Load())/time.Duration(set)) } fmt.Println("\nVDF Prove")