# How the following pairing equality be verified in Ethereum Smart contracts?

I have found available precompiled contracts in solidity. For example, this answer enter link description here points out a precompiled contract that can verify BLS signature. However, looking at the given code in the answer, I found that the bilinear pairings are based on elliptic curves.

My Question, by looking in the image attached, a smart contract is required to verify pairing equality given in step (5), Could someone suggest a way or even an existing available precompiled contract so I can call it with the given arguments so it can verify step (5)? Note that, I wrote the protocol follow and attached an image since it is not allowed to write math equations here.

• `Is this doable in solidity?` - Is this doable in any other programming language? The answer is Yes of course, so please post your general programmatic solution in your language of choice (or even pseudo code would do), and then users here will be able to assist you with porting it to the Ethereum ecosystem (and to Solidity in particular). Otherwise, it seems like you are asking the whole lot to be done for you. Jun 12 '19 at 4:34
• @goodvibration I edit my question. Jun 12 '19 at 4:42
• It doesn't change my comment. The fact is that you need to explain how this problem is solved in general (again - provide a programmatic solution or pseudo code). After that, we can help you with porting this solution to Solidity. If you don't know how this problem is solved in general, then I suggest that you start with finding the answer to that. You might want to look for help on stackoverflow.com or math.stackexchange.com. This question in its present form doesn't look like something specific to Ethereum. Jun 12 '19 at 4:44
• @HebaMohsen Does this answer ethereum.stackexchange.com/a/51433 helps?
– Ismael
Jun 12 '19 at 5:27
• @Ismael I have been reading the answer, but I wonder if the pairing in my question is the same one used in etherum. if u look function verifyBLSTest() at gist.github.com/BjornvdLaan/ca6dd4e3993e1ef392f363ec27fe74c4 , is the pairing type in the picture above is the one used in soldity as I think that each point is (x, y) >> elliptic curve. `function verifyBLSTest() returns (bool) { bytes memory message = hex"7b0.. G1Point memory signature = G1Point(11., 63...); G2Point memory v = G2Point([185........., 57..], [38.., 67..] }` Jun 12 '19 at 7:19