# What is the BLS signature scheme?

## posted last month

BLS is a digital signature scheme being standardized.

Its basis is quite similar to other signature schemes, it has a key generation with a generator $P2$:

The signature is a bit weird though, you pretend the hashed message is the generator (using a `hash_to_G1`

function you hash the message into a point on a curve) and you do what you usually do in a key generation: you make it a public key with your private key

Verification is even weirder, you use a bilinear pairing to verify that indeed, `pairing([secret_key]hashed_msg, P2) = pairing([secret_key]P2, hashed_msg)`

.

This weird signing/verifying process allows for pretty cool stuff. You can compress (aggregate) signatures of the same msg in a single signature!

To do that, simply add all the signatures together! Easy peasy right?

Can you verify such a compressed signature? Yes you can.

Simply compress the public key, the same way you compressed the signature. And verify the `sig_compressed`

with the `public_key_compressed`

. Elegant :)

But what if the different signatures are on different messages? Well, just add them together as well.

The process to verify that is a bit more complicated. This time you multiply a bunch of `pairing([secret_key]P2, hashed_msg)`

together, and you verify that it is equal to another pairing made out of the compressed signature. Pairings are magical!