VRF benchmark

ED25519

r2ishiguro

draft-goldbe-vrf-00

  • pk/sk size: 32 bytes
  • proof size: 64 bytes
  • data: 200 bytes

Generate proof:

BenchmarkGenProof-4   	    1152	    926,084 ns/op	  166142 B/op	    1061 allocs/op

Verify proof:

BenchmarkVerifyProof-4   	    1050	   1,088,664 ns/op	  166,224 B/op	    1060 allocs/op

coniks

  • pk size: 32 bytes
  • sk size: 64 bytes
  • proof size: 96 bytes
  • data: 200 bytes

Generage proof:

BenchmarkProve-4   	     882	   1,416,164 ns/op	    2016 B/op	      16 allocs/op
func BenchmarkProve(b *testing.B) { sk, err := GenerateKey(nil) if err != nil { b.Fatal(err) } // prepare msg initialization() b.ResetTimer() for n := 0; n < b.N; n++ { sk.Prove(msg[:]) } }

Verify proof:

BenchmarkVerify-4   	     482	   2,238,798 ns/op	    1344 B/op	      11 allocs/op
func BenchmarkVerify(b *testing.B) { sk, err := GenerateKey(nil) if err != nil { b.Fatal(err) } // prepare msg initialization() aliceVRF := sk.Compute(msg[:]) _, aliceProof := sk.Prove(msg[:]) pk, _ := sk.Public() b.ResetTimer() for n := 0; n < b.N; n++ { pk.Verify(msg[:], aliceVRF, aliceProof) } }

algorand

  • pk size: 32 bytes
  • sk size: 64 bytes
  • proof size: 80 bytes
  • data: 200 bytes

Wolfgang

draft-irtf-cfrg-vrf-15

  • pk size: 32 bytes
  • sk size: 64 bytes
  • proof size: 80 bytes
  • data: 200 bytes

generate proof:

BenchmarkProve-4   	    4754	    264,297 ns/op	     705 B/op	       7 allocs/op

verify proof:

BenchmarkVerify-4   	    5338	    246,396 ns/op	    4081 B/op	      11 allocs/op