双线性配对(Bilinear Pairing)是一个函数,通常表示为 e(P, Q),它接收来自两个不同椭圆曲线群 G1 和 G2 的两个点(P 和 Q),并输出第三个群 中的一个元素。这个函数在零知识证明中非常关键,因为它允许在不揭示原始数字的情况下,验证加密值之间的乘法关系。 简单来说,可以将双线性配对视为一个特殊的“黑盒”函数。 你可以输入两个加密的数字(椭圆曲线点),它输出一个结果,这个结果的运算方式(幂运算)对应于原始未加密数字的乘法运算。 这使得我们可以在加密数据上执行乘法验证,这是许多高级加密协议(如 ZK-SNARKs)的基石。
核心特性
双线性(Bilinearity)
这个性质意味着函数 e 对于它的两个输入都是线性的。具体来说,对于任意属于有限域的标量 a 和 b,以及群中的点 P 和 Q,以下等式成立: 这个特性非常强大,因为它允许我们将点上的标量乘法(如 aP)转换成配对输出结果的幂运算(^ab)。 换句话说,我们可以验证加密值(椭圆曲线点)的离散对数之间的乘法关系。
非退化性(Non-degeneracy)
这个性质确保配对函数不会将所有输入都映射到GT群的单位元。只要 P 和 Q 不是它们各自群的单位元,那么 e(P, Q) 也不会是 GT 群的单位元。这保证了配对的输出是有意义的。
Solidity上的ecPairing
Solidity上有一个预编译的智能合约,地址为0x08。其输入为 输出为,也就是说当的结果为单位元时,输出1;否则输出0