比特币和以太坊网络中的交易数据通过一种称为椭圆曲线数字签名算法(ECDSA)所产生的签名来进行验证,这种算法主要运用的是椭圆曲线和有限域。
签署交易和验证交易的过程是截然不同的。我们使用一个被称为私钥(private key)的工具来签署交易,而使用另一个被称为公钥(public key)的工具来验证交易。私钥是在创建钱包的过程中随机生成的。公钥是基于有限域上的椭圆曲线乘法利用私钥导出的,也就是说椭圆曲线数字签名算法(ECDSA)就是用来产生公钥的算法。只有签署交易的人才知道私钥,而公钥可以被任何想要验证交易的人(即矿工)获取。
椭圆曲线主要包含以下参数:一个方程式(an equation),一个素数模(a prime modulo)和一个具有素数阶的基点(a base point with a prime order)。椭圆曲线的方程为 y²=x³+ ax + b。(备注:素数也称质数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数,如2、3、5、7、11等都是质数)
在比特币,以太坊,BKX,EOS,Litecoin和许多其他加密货币中,其使用的椭圆曲线为secp256k1,该曲线方程的形式为y²=x³+ 7 mod p。secp256k1曲线的素数模是2²⁵⁶–2³²–2⁹–2⁸–2⁷–2⁶–2⁴–1(或十六进制形式的FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F)。因为这个结果本质上是一个大素数,因此我们称之为素数模。
实数域上的椭圆曲线如下所示: