- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 secp256k1雅可比坐标加重射影坐标点的点加计算
本文主要对secp256k1的有个雅可比加重射影坐标的点加关系进行描述,为后来读代码者起到一点点的启发作用。网上有很多有个雅可比加重射影坐标的点加公式,可很多公式与实际使用在BTC代码库的程序不一致,这与椭圆曲线的系数选取及其坐标优化有关,看对于学习代码的人来说,需要找到符合代码中要求的公式却相对困难,希望此文能帮到一些人。
2024-06-27 17:07:15
158
原创 wNAF标量乘算法介绍
椭圆曲线标量乘法是椭圆曲线密码系统中最关键(也是消耗资源和能量最多)的步骤,是椭圆曲线上一个点P与一个随机的整数k的乘积,即𝑄=𝑘𝑃=𝑃+𝑃+⋯+𝑃.因此通常做法是将k进行转换以减少其中点加次数,如二进制、NAF、wNAF等标量乘算法这些算法比可以较大降低计算的次数。今天主要介绍wNAF,wNAF是一种NAF的w进制表示形式,这里的w指的是占二进制位数,比如w=1表示1位:0b1,w=2表示2位:0b11,w=3表示3位:0b111,w=4表示4位:0B1111等等依次类推。
2024-06-19 14:11:17
823
原创 NAF算法介绍
最近研究SECP256K1曲线的相关运算时,在做ECDSA的验证时,需要计算aG + bP,其中a/b是标量,G/P是点,为了加速nP的运算,函数库中使用了w-NAF的算法,有些不甚理解,仔细研究了该算法的具体原理,并根据根据自己的理解进行如下的分析,w-NAF算法的核心就是NAF算法了。NAF算法的全称为非邻接形式(Non-Adjacent Form)表达。其核心思想是把标量b进行拆分,拆分为多项式表达式(1):b =,其中,n为最低位到最高位之间长度,在解释NAF之前先看b值转化为2进制表述法。
2024-06-17 15:40:09
442
原创 椭圆曲线群几个基本概念
所以一般来说,我们会选择一条椭圆曲线,计算它的阶数N,选择一个较大的除数作为子群阶数n,最终找到一个合适的基点。一个简单的想法就是,我们尝试把0到p-1的所有整数x代入方程,然后对于每个x都找到所有满足方程的解,这样我们就找到了曲线上所有的点。“循环子群”是元素循环重复的子群,循环群中的每个元素都可以写成是一个基本元素的倍数,就像我们在前面的例子中展示的那样。取椭圆曲线上任意一点P,所有P的倍数构成的集合是”定义在Fp上的椭圆曲线群“的一个循环子群。在有限域上定义的椭圆曲线包含的点的数量是有限的。
2023-10-02 15:37:22
887
1
原创 欧拉函数定义
φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))…..(1-1/p(n)) 其中p(1),p(2)…若m,n互质,φ(mn)=(m-1)(n-1)=φ(m)φ(n)。当n=p 且 a与素数p互质(即:gcd(a,p)=1)则上式有: a^(p-1)=1 mod n (恒等于)此公式即。若N是质数p的k次幂(即N=p^k),φ(n)=p^k-p^(k-1)=(p-1)p^(k-1)。若N是质数p(即N=p), φ(n)= φ(p)=p-p^(k-1)=p-1。
2023-09-18 22:47:58
142
原创 BTC基于脚本公钥交易的签名过程
现在假设有一个地址S_ADD_001,该地址收到了两笔转账,一笔交易ID为TX001,金额0.4BTC,另一笔交易ID为TX002,金额1.1BTC,这两笔收入都是在其交易Output的第0条,也就是Index=0。现在需要用私钥,对该交易进行签名,因为有2个Input,所以需要进行签名2次,每个签名的原理是一样的,以第一个Input例来说明。显然这个副本与第一个签名时的数据【数据位置不同,同时可能锁定脚本可能不同】是不一样的,所以签名结果也不一样。3.复制该交易T对象,并在复制副本中将该Input的。
2023-09-15 18:50:23
376
原创 mining.notify数据简略说明
parse_method{"id":null,"method":"mining.notify","params":["B8ogsfZUm", //任务号"ce76aec7db69ea684be8b0633043d3cca3cbfa22000a15220000000000000000",//前一个块的hash值,小端字节"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff64038f
2020-05-31 21:05:54
590
原创 CSS入门知识
1、CSS定义:CSS是层叠样式表的缩写(Cascading Style Sheets),其主要作用是解决如何显示HTML元素。2、CSS分类:A、浏览器缺省设置B、外部样式表C、内部样式表D、内联样式表3、CSS语法CSS规则主要由两部分组成:选择器与一条或多条声明selector {declaration1; declaration2; ... declarat...
2020-03-12 23:31:39
74
原创 BTC找零处理方式
一、coinbase交易结构每个区块的第一个交易叫做coinbase交易,它的结构如下:字节长度 字段 说明 4 交易版本号 明确这笔交易参照的规则 1-9 输入计数器 包含的交易输入数量 不定 交易输入 一个或多个交易输入 1-9 输出计数器 包含的交易输出数量 不定 交易输出 一个或多个交易输出...
2020-02-09 22:41:58
1532
1
原创 授权(mining.authorize)与 auth_stratum函数
一、授权(mining.authorize)命令 矿机收到矿池的订阅响应消息后,接着向矿池发送授权消息,消息内容如下: {"id":2,"method":"mining.authorize","params":["zsc.1","x"]} params包含两部分,第一部分是矿工名,第二部分是矿工密码(随意)。 矿池收到矿机的授权消息后,先对矿工名进行验证,矿工名的第一部分(“...
2020-01-12 23:16:51
1126
原创 mining.subscribe与initiate_stratum函数
一、mining.subscribe请求过程矿机启动后,先和矿池建立TCP连接,然后向矿池发送订阅消息,消息内容如下: {"id":1,"method":"mining.subscribe","params":[]}矿池收到矿机的订阅消息后,响应消息内容如下: {"id":1,"result":[[["mining.set_difficulty","01000000"],["m...
2020-01-12 23:04:35
2008
原创 转,go: github.com/go-xorm/core@v0.6.3: parsing go.mod: unexpected module path "xorm.io/core"
go: github.com/go-xorm/core@v0.6.3: parsing go.mod: unexpected module path "xorm.io/core"在go mod 中增加了这个的话,会报这个错误replace github.com/go-xorm/core v0.6.3 => xorm.io/core v0.6.3go: xorm.io/core@v...
2019-12-07 22:20:41
2971
原创 大小端规则
数据值:0X1234abcd小端:值 12 34 ab cd 地址 FF FE FD FC 大端:值 cd ab 34 12 地址 FF FE FD FC 在stratum协议中,版本号为00000002,采用小端编码方式。...
2019-11-24 20:25:36
270
原创 随记:iris/hero的依赖注入
package mainimport "github.com/kataras/iris"import "github.com/kataras/iris/hero"func main() {app := iris.Default() //1. 根据路径参数进行注入,{to:string},与func hello(to st...
2019-11-24 16:31:46
799
原创 挖矿中几个关键指标
utility:accepted/dev_runtime * 60,表示1分钟内被矿池接受的NONCE平均数Elapsed:表示矿机开启至今的秒数GH/S(RT):实时算力GH/S(avg):平均算力Local Work:本地使用的work数,通常本地work的变化有两部分,一部分是通过nonce2的改变生成,一部分通过时间的微调产生Work Utility:等于 total_diff1...
2019-11-23 17:13:19
2063
android开发串口,修改串口为非阻塞模式
2018-08-21
Vc Socket网络通讯编程,服务器端与客户端
2018-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人