区块链的系统探索之路:椭圆曲线之有限域

本文介绍了区块链技术中的核心概念,包括椭圆曲线加密和有限域的数学原理。通过费曼学习法,作者详细阐述了椭圆曲线在加解密中的作用,如公钥和私钥的生成,并展示了如何在Python中实现有限域的加法、乘法、指数和除法运算。文章强调了有限域在保证运算闭合性方面的重要性,并提供了代码示例来辅助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一种有效的学习方法叫费曼学习法。它的做法是把你学到的东西系统性的讲述出来,如果别人通过你的描述也能理解其中内容,这说明你对所学知识有了一定程度的掌握。目前我正在系统性的研究区块链技术,因此想借助费曼学习法,把我掌握的信息系统性的输出,一来能帮助自己更好的理解消化知识,另一方面也希望能帮助对这方面有兴趣的同学。当然区块链的技术信息汗牛充栋,相比与其他资料,我觉得我的优势在于能体会初学者的难处,因为我自己就是初学者。

在我看来区块链技术的两大基础在于加解密和分布式。因此系统性的掌握区块链就需要系统性的掌握这两块。首先我们从加解密这块入手,其中这块中最基础的就是椭圆曲线。
在这里插入图片描述
从上面图形可以看到,椭圆曲线其实就是一个最高指数为3的多项式,这里需要注意的是多项式的计算要基于除法求余的基础,也就是它的计算方式如下:

y ^ 2 mod p = x^3 + a*x + b mod p

对于区块链而言他需要专门指定公式中a, b , p 这个几个参数。因此它也有一个专有名字叫secp256k1,我们看看几个参数的具体数值:

p = 2 ^ 256 - 2 ^32 - 2 ^ 9 - 2 ^ 8 - 2 ^ 7 - 2 ^ 6 - 2 ^ 4 - 1
a = 0
b = 7

在运用中,x只取整数,我们使用代码看看椭圆曲线的例子;

def is_on_blockchain_curve(point):
    '''
    p = 2 ^ 256 - 2 ^32 - 2 ^ 9 - 2 ^ 8 - 2 ^ 7 - 2 ^ 6 - 2 ^ 4 - 1
    a = 0
    b = 7
    该函数判断给定的点是否在椭圆曲线上, 其中point包含两个数值(x,y)
    '''
    p = 2 ** 256 - 2 ** 32 - 2 ** 9 - 2 ** 8 - 2 ** 7 - 2 ** 6 - 2 ** 4 - 1
    return (point[1] ** 2) % p == (point[0] ** 3 + 7) % p

p = (55066263022277343669578718895168534326250603453777594175500187360389116729240,
     32670510020758816978083085130507043184471273380659243275938904335757337482424)

print(f"is point p on curve: {
     
     is_on_blockchain_curve(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值