如何用Python可视化比特币公钥在椭圆曲线上的位置?
需求:用Python可视化secp256k1椭圆曲线及公钥点
背景与现有基础
我理解比特币的私钥是椭圆曲线上的一个标量,公钥是曲线上的点(对应x、y坐标),所以具备编程能力的人应该可以轻松实现可视化。我已经能绘制普通的离散点,示例代码如下:
import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True x = [3, 1, 2, 5] y = [5, 2, 4, 7] plt.plot(x, y, 'r*') plt.axis([0, 6, 0, 20]) for i, j in zip(x, y): plt.text(i, j+0.5, '({}, {})'.format(i, j)) plt.show()
目标需求
现在我需要针对比特币使用的secp256k1椭圆曲线,实现类似的可视化功能——在曲线上展示公钥对应的x、y坐标点。我的核心目标是通过可视化,直观找出两个前缀8位相同的比特币地址对应的公钥之间的关系。
我已经学习了标量乘法的相关内容,现在需要有人演示如何用Python在椭圆曲线上绘制公钥点。
参考代码
我找到了椭圆曲线基础绘图示例:
import numpy as np import matplotlib.pyplot as plt def main(): a = -1 b = 1 y, x = np.ogrid[-5:5:100j, -5:5:100j] plt.contour(x.ravel(), y.ravel(), pow(y, 2) - pow(x, 3) - x * a - b, [0]) plt.grid() plt.show() if __name__ == '__main__': main()
我正在学习Python,希望能实现类似下图的效果:
在绘制出的secp256k1曲线上展示两个公钥点。
内容的提问来源于stack exchange,提问作者terry franklin
相关产品推荐
相关产品推荐

