mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-07 10:12:19 +00:00
14dbc2b74d
* Add blst third party dep * initial build * add init * blst passing tests * add feature flag * blst and herumi for spec tests * maybe this works for mac * Actually set feature flag * Add stub for VerifyMultipleSignatures for blst * verifyCompressed * use correct cores sizes * aggregate public keys * add multi-sig verification * encode not hash * revert back * go mod tidy * update blst to latest commit * add batch decompress * fix * add test * gofmt * update blst * go mod tidy * remove kubesec, fix * mod tidy * disable some remote cache * disable some remote cache * disable some remote cache * disable some remote cache * Switch to -D__ADX__ * update * tidy * fix build * Make blst for only linux,amd64 * gofmt * lint * lint * gazelle * fix build tag * more stub methods * shift adx instructions to x86 * fix arm64 * Revert "fix arm64" This reverts commit 4d34ac21b7509a1b385374e3039efecfcab614c1. * add one more in * Revert "Revert "fix arm64"" This reverts commit 1c8ae24ad16ff9811590f1058b9d98c90b63251a. * try darwin now * Revert "try darwin now" This reverts commit 6f884714b8e14a7a803b72157672b6e942047f37. * Add sha256 * remove TODO * checkpoint * finally builds * fix up * add tag * try again * explicit disabling * remove * select properly * fix * better * make CI happy too * Update .bazelrc * Update .bazelrc * fix tests * revert back * Update shared/bls/blst/public_key.go Co-authored-by: Victor Farazdagi <simple.square@gmail.com> * Update shared/bls/blst/public_key.go Co-authored-by: Victor Farazdagi <simple.square@gmail.com> * clean up tests * more clean up * clean up * add * Update shared/bls/blst/signature.go * Update shared/bls/blst/signature.go * Update .buildkite-bazelrc Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com> * try again * remove go tag * revert change * gaz * gazelle ignore Co-authored-by: nisdas <nishdas93@gmail.com> Co-authored-by: Victor Farazdagi <simple.square@gmail.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
92 lines
1.8 KiB
Go
92 lines
1.8 KiB
Go
// +build linux,amd64 linux,arm64
|
|
|
|
package blst_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/herumi/bls-eth-go-binary/bls"
|
|
"github.com/prysmaticlabs/prysm/shared/bls/herumi"
|
|
"github.com/prysmaticlabs/prysm/shared/bls/iface"
|
|
"github.com/prysmaticlabs/prysm/shared/hashutil"
|
|
)
|
|
|
|
func BenchmarkPairing(b *testing.B) {
|
|
if err := bls.Init(bls.BLS12_381); err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
if err := bls.SetETHmode(bls.EthModeDraft07); err != nil {
|
|
panic(err)
|
|
}
|
|
newGt := &bls.GT{}
|
|
newG1 := &bls.G1{}
|
|
newG2 := &bls.G2{}
|
|
|
|
newGt.SetInt64(10)
|
|
hash := hashutil.Hash([]byte{})
|
|
err := newG1.HashAndMapTo(hash[:])
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
err = newG2.HashAndMapTo(hash[:])
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
|
|
b.ResetTimer()
|
|
b.ReportAllocs()
|
|
for i := 0; i < b.N; i++ {
|
|
bls.Pairing(newGt, newG1, newG2)
|
|
}
|
|
|
|
}
|
|
func BenchmarkSignature_Verify(b *testing.B) {
|
|
sk := herumi.RandKey()
|
|
|
|
msg := []byte("Some msg")
|
|
sig := sk.Sign(msg)
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
if !sig.Verify(sk.PublicKey(), msg) {
|
|
b.Fatal("could not verify sig")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkSignature_AggregateVerify(b *testing.B) {
|
|
sigN := 128 // MAX_ATTESTATIONS per block.
|
|
|
|
var pks []iface.PublicKey
|
|
var sigs []iface.Signature
|
|
var msgs [][32]byte
|
|
for i := 0; i < sigN; i++ {
|
|
msg := [32]byte{'s', 'i', 'g', 'n', 'e', 'd', byte(i)}
|
|
sk := herumi.RandKey()
|
|
sig := sk.Sign(msg[:])
|
|
pks = append(pks, sk.PublicKey())
|
|
sigs = append(sigs, sig)
|
|
msgs = append(msgs, msg)
|
|
}
|
|
aggregated := herumi.Aggregate(sigs)
|
|
|
|
b.ResetTimer()
|
|
b.ReportAllocs()
|
|
for i := 0; i < b.N; i++ {
|
|
if !aggregated.AggregateVerify(pks, msgs) {
|
|
b.Fatal("could not verify aggregate sig")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkSecretKey_Marshal(b *testing.B) {
|
|
key := herumi.RandKey()
|
|
d := key.Marshal()
|
|
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
_, err := herumi.SecretKeyFromBytes(d)
|
|
_ = err
|
|
}
|
|
}
|