/solidity-bls

verify bls multisignature in evm

Primary LanguageJavaScriptMIT LicenseMIT

solidity-bls

Note: This repository is a WIP and will be updated frequently in the coming weeks. This is probably completely broken, please don't use this in production!


This is a library for verifying BLS signatures over bn128 in Solidity. Almost all of the code here is taken from BjornvdLaan's work and the work on ZoKrates available here.

TODO

  • Add real testing
  • See if there are any obvious optimizations
  • Add support for verification of signatures with different messages

Testing

We use Truffle for testing.

$ truffle test
Compiling ./contracts/BLS.sol...
Compiling ./contracts/BLSTest.sol...
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/Pairing.sol...


  Contract: BLS
    ✓ should verify a valid signature (302ms)
    ✓ should not verify a invalid signature (59ms)
    ✓ should not verify a invalid message (291ms)

Gas Cost

The cost of verifying a signature is currently ~365,000 gas.