有没有人尝试破解比特币的算法?
About
收录于专业瞎扯专栏系列
最近有群友说想要组建一个1000人团队来暴力破解比特币私钥。
于是我们就在群里面欢快的讨论了可能性:

计算可能性
我们先对碰撞比特币私钥进行概率分析。
先获取我们有多少的比特币地址(持币地址 - 比特币(BTC) - BTC.com 为全球区块链爱好者提供专业的数据与矿池服务),我们可以看见大概有1000万左右比特币地址的余额在0.001比特币以上。
而比特币的secp256k1的阶数正好近似于2^256的数目的(稍微低一点)。
那么我们平均需要扫描多少的地址才能有50%的概率出来一个地址呢?
根据生日攻击原理,这个数目就正好是一半,我们有1000个矿机。
这个数字看上去还是太大了一点,在以太坊挑战赛里面,56位以下的才能被破解,而这个达到了67位,也就是说目前还是很难破解的。
分布式算法
虽然破解的概率还是很小,我们还是要讨论一下如果要写分布式破解算法怎么写?
我们这个计算过程有以下特点:
1.只包含了三种运算:ECC运算,hash运算,数据查询运算。
其中这三种运算用到的芯片恰好还不一样。ECC用的是CPU或者FPGA等等,而hash运算存在专门ASIC矿机进行快速运算,数据查询运算主要需要一块大内存。( )
因为这三个机器的工作效率不同,且适合的机器也不同,因此我们采用如下的计划:
ECC矿机950台,hash矿机10台,40台查询矿机。
ECC计算出的公钥运送到hash矿机,矿机再输送到查询矿机。
进一步优化
软件优化
我们这里还有一些优化的空间。
小学二年级学过椭圆曲线算法遵循以下规律
.
因此对于每一个矿机我们可以对其分配一个240bit的地址,对于这个地址一次性挖取2^16个块。
这样对于一个XP只需要进行+P操作就可以了。
在hash矿机端还可以加上一个取secp256k1阶的负值
相当于对复杂度进行了mod2处理。
硬件优化
ECC专用芯片有很多,但是专门针对secp256k1曲线的矿机为0.(废话,只能用来比特币签名的矿机有什么用,比特币的TPS是7.小灵通都可以完成整个比特币网络的签名的计算量需求了)。
如果一定要头铁开发的话,可以采用以下方法:
预运算好 .
到时候,可以直接进行点加运算。
-------完--------
专业瞎扯专栏系列第一篇,欢迎大家关注