当前位置: 首页 > article >正文

golang 实现bitcoin core: bitcoin 椭圆曲线的“生成元”设置

让我们看看bitcoin 是如何依赖椭圆曲线来进行加密,特别是在生成钱包的公钥、私钥签名和验证交易合法性时的使用,步骤如下:

设置 a = 0 和 b = 7,以固定其椭圆曲线为 y² = x³ + 7。
为有限域指定一个巨大的质数 p,p = 2²⁵⁶ - 2³² - 977。
从曲线上选择一个点作为生成点 G,该点的 x 坐标为 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,y 坐标为 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8。
通过不断将 G 乘以整数来生成一个群,直到它转化为单位点,n 值使得 n * G 是单位点,其值为: 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141。

注意,p 非常接近 2²⁵⁶,这意味着 G 的 x 和 y 坐标可以由 256 位整数表示,而 64 位整数远远不够用于比特币的计算,因此我们使用 big.Int 来处理。可以在 (1, n) 范围内选择一个数字 k 作为私钥,并计算 k*G 作为公钥。在接下来的部分中,我们将看到如何使用公钥生成钱包地址。

首先,让我们通过代码检查点 G 是否真的位于 y²


http://www.kler.cn/a/391309.html

相关文章:

  • JS 实现SSE通讯和了解SSE通讯
  • 实时渲染技术如何助力3D虚拟展厅?
  • 【计算机网络】Socket编程接口
  • Qt 实现文件监控程序
  • aws(学习笔记第十二课) 使用AWS的RDS-MySQL
  • Tomcat与Nginx之全面比较
  • 计算机网络:运输层 —— TCP/IP运输层中的两个重要协议
  • 基于Ubuntu2410脚本搭建OpenStack-D版
  • SSE与WebSocket与MQTT
  • STM32WB55RG开发(3)----生成 BLE 程序连接手机APP
  • Linux开发讲课49--- Linux 启动过程分析
  • 刘铁猛C#入门 024 类的声明,继承和访问控制
  • 微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践
  • Nebula NGQL语言的使用 一
  • LabVIEW 实现 find_nearest_neighbors 功能(二维平面上的最近邻查找)
  • vue-h5:在h5中实现相机拍照加上身份证人相框和国徽框
  • 智能科技赋能金融决策:中阳科技的数据分析解决方案
  • [免费]SpringBoot+Vue3校园宿舍管理系统(优质版)【论文+源码+SQL脚本】
  • vue3 富文本组件(MDEditor)在拖拽组件(vuedraggable)点击功能失效问题
  • Python 操作 Neo4J,Python 库 Py2Neo
  • (三)【 Python最牛 -Basemap】使用Basemap进行地图可视化
  • 项目管理人员的自我评估与职业目标设定
  • Knife4j调试全局对象参数自动化
  • A算法详解(go实现)
  • 【服务器】本地安装X11 服务器-Windows
  • 【学习】【HTML】HTML、XML、XHTML