比特币源码下载比特币代码下载
各位老铁们好,相信很多人对比特币源码下载都不是特别的了解,因此呢,今天就来为大家分享下关于比特币源码下载以及比特币代码下载的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
比特币源代码如何修改可以变成一个新的虚拟币比特币源码研读一:椭圆曲线在比特币密码中的加密原理比特币能不能往一个离线生成的钱包存币关于比特币的几个问题的研究比特币源代码如何修改可以变成一个新的虚拟币不好意思
这个你修改不了
因为这个源代码记录了比特币的一路发展过程以及开采过程中遇到的问题以及开采难易程度
有开源代码才能挖矿所以没有一个人能更改的了
比特币源码研读一:椭圆曲线在比特币密码中的加密原理参加比特币源码研读班后首次写作,看到前辈black写的有关密钥,地址写的很好了,就选了他没有写的椭圆曲线,斗胆写这一篇。
在密码学上有两种加密方式,分别是对称密钥加密和非对称密钥加密。
对称加密:加密和解密使用的同样的密钥。
非对称加密:加密和解密是使用的不同的密钥。
二战中图灵破解德军的恩尼格码应该就是用的对称加密,因为他的加密和解密是同一个密钥。比特币的加密是非对称加密,而且用的是破解难度较大的椭圆曲线加密,简称ECC。
非对称加密的通用原理就是用一个难以解决的数学难题做到加密效果,比如RSA加密算法。RSA加密算法是用求解一个极大整数的因数的难题做到加密效果的。就是说两个极大数相乘,得到乘积很容易,但是反过来算数一个极大整数是由哪两个数乘积算出来的就非常困难。
下面简要介绍一下椭圆曲线加密算法ECC。
首先椭圆曲线的通式是这个样子的:
一般简化为这个样子:
()发公式必须吐槽一下,太麻烦了。)
其中
这样做就排除了带有奇点的椭圆曲线,可以理解为所有的点都有一条切线。
图像有几种,下面列举几个:[1]
椭圆曲线其实跟椭圆关系不大,也不像圆锥曲线那样,是有圆锥的物理模型为基础的。在计算椭圆曲线的周长时,需要用到椭圆积分,而椭圆曲线的简化通式:
,周长公式在变换后有一项是这样的:,平方之后两者基本一样。
我们大体了解了椭圆曲线,就会有一个疑问,这个东西怎么加密的呢?也就是说椭圆曲线是基于怎样的数学难题呢?在此之前还得了解一些最少必要知识:椭圆曲线加法,离散型椭圆曲线。
椭圆曲线加法
数学家门从普通的代数运算中,抽象出了加群(也叫阿贝尔群或交换群),使得在加群中,实数的算法和椭圆曲线的算法得到统一。
数学中的“群”是一个由我们定义了一种二元运算的集合,二元运算我们称之为“加法”,并用符号“+”来表示。为了让一个集合G成为群,必须定义加法运算并使之具有以下四个特性:
1.封闭性:如果a和b是集合G中的元素,那么(a+b)也是集合G中的元素。
2.结合律:(a+b)+c=a+(b+c);
3.存在单位元0,使得a+0=0+a=a;
4.每个元素都有逆元,即:对于任意a,存在b,使得a+b=0.
如果我们增加第5个条件:
5.交换律:a+b=b+a
那么,称这个群为阿贝尔群。[1]
运算法则:任意取椭圆曲线上两点P、Q(若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R。我们规定P+Q=R。(如图)[2]
特别的,当P和Q重合时,P+Q=P+P=2P,对于共线的三点,P,Q,R’有P+Q+R’=0∞.
这里的0∞不是实数意义的0,而是指的无穷远点(这里的无穷远点就不细说了,你可以理解为这个点非常遥远,遥远到两条平行线都在这一点相交了。具体介绍可以看参考文献[2])。
注意这里的R与R’之间的区别,P+Q=R,R并没有与P,Q共线,是R’与P,Q共线,不要搞错了。
法则详解:
这里的+不是实数中普通的加法,而是从普通加法中抽象出来的加法,他具备普通加法的一些性质,但具体的运算法则显然与普通加法不同。
根据这个法则,可以知道椭圆曲线无穷远点O∞与椭圆曲线上一点P的连线交于P’,过P’作y轴的平行线交于P,所以有无穷远点O∞+P=P。这样,无穷远点O∞的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点O∞称为零元。同时我们把P’称为P的负元(简称,负P;记作,-P)。(参见下图)
离散型椭圆曲线
上面给出的很好看的椭圆曲线是在实数域上的连续曲线,这个是不能用来加密的,原因我没有细究,但一定是连续曲线上的运算太简单。真正用于加密的椭圆曲线是离散型的。要想有一个离散型的椭圆曲线,先得有一个有限域。
域:在抽象代数中,域(Field)之一种可进行加、减、乘、除运算的代数结构。它是从普通实数的运算中抽像出来的。这一点与阿贝尔群很类似。只不过多了乘法,和与乘法相关的分配率。
域有如下性质[3]:
1.在加法和乘法上封闭,即域里的两个数相加或相乘的结果也在这个域中。
2.加法和乘法符合结合律,交换率,分配率。
3.存在加法单位,也可以叫做零元。即存在元素0,对于有限域内所有的元素a,有a+0=a。
4.存在乘法单位,也可以叫做单位元。即存在元素1,对于有限域内所有的元素a,有1*a=a。
5.存在加法逆元,即对于有限域中所有的元素a,都存在a+(-a)=0.
6.存在乘法逆元,即对于有限域中所有的元素a,都存在a*=0.
在掌握了这些知识后,我们将椭圆曲线离散化。我们给出一个有限域Fp,这个域只有有限个元素。Fp中只有p(p为素数)个元素0,1,2……p-2,p-1;
Fp的加法(a+b)法则是a+b≡c(modp);它的意思是同余,即(a+b)÷p的余数与c÷p的余数相同。
Fp的乘法(a×b)法则是a×b≡c(modp);
Fp的除法(a÷b)法则是a/b≡c(modp);即a×b∧-1≡c(modp);(也是一个0到p-1之间的整数,但满足b×b∧-1≡1(modp);
Fp的单位元是1,零元是0(这里的0就不是无穷远点了,而是真正的实数0)。
下面我们就试着把
这条曲线定义在Fp上:
选择两个满足下列条件的小于p(p为素数)的非负整数a、b,且a,b满足
则满足下列方程的所有点(x,y),再加上无穷远点O∞,构成一条椭圆曲线。
其中x,y属于0到p-1间的整数,并将这条椭圆曲线记为Ep(a,b)。
图是我手画的,大家凑合看哈。不得不说,p取7时,别看只有10个点,但计算量还是很大的。
Fp上的椭圆曲线同样有加法,法则如下:
1.无穷远点O∞是零元,有O∞+O∞=O∞,O∞+P=P
2.P(x,y)的负元是(x,-y),有P+(-P)=O∞
3.P(x1,y1),Q(x2,y2)的和R(x3,y3)有如下关系:
x3≡-x1-x2(modp)
y3≡k(x1-x3)-y1(modp)
其中若P=Q则k=(3+a)/2y1若P≠Q,则k=(y2-y1)/(x2-x1)
通过这些法则,就可以进行离散型椭圆曲线的计算。
例:根据我画的图,(1,1)中的点P(2,4),求2P。
解:把点带入公式k=(3*x∧2+a)/2y1
有(3*2∧2+1)/2*4=6(mod7).
(注意,有些小伙伴可能算出13/8,这是不对的,这里是模数算数,就像钟表一样,过了12点又回到1点,所以在模为7的世界里,13=6,8=1).
x=6*6-2-2=4(mod7)
y=6*(2-4)-4=2(mod7)
所以2P的坐标为(2,4)
那椭圆曲线上有什么难题呢?在模数足够大的情况下,上面这个计算过程的逆运算就足够难。
给出如下等式:
K=kG(其中K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数)不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。
这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(basepoint),k称为私钥,K称为公钥。
现在我们描述一个利用椭圆曲线进行加密通信的过程[2]:
1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。
2、用户A选择一个私钥k,并生成公钥K=kG。
3、用户A将Ep(a,b)和点K,G传给用户B。
4、用户B接到信息后,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。
5、用户B计算点C1=M+rK;C2=rG。
6、用户B将C1、C2传给用户A。
7、用户A接到信息后,计算C1-kC2,结果就是点M。因为
C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再对点M进行解码就可以得到明文。
整个过程如下图所示:
密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:
T=(p,a,b,G,n,h),p、a、b用来确定一条椭圆曲线,G为基点,n为点G的阶,h是椭圆曲线上所有点的个数m与n相除的整数部分
这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:
1、p当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
2、p≠n×h;
3、pt≠1(modn),1≤t<20;
4、4a3+27b2≠0(modp);
5、n为素数;
6、h≤4。
200位位的一个数字,那得多大?而且还是素数,所以这种方式是非常安全的。而且再一次交易中,区块被记录下来只有10分钟的时间,也就是说要想解决这个难题必须在10分钟以内。即便有技术能够在10分钟以内破解了现在这个难度的加密算法,比特币社区还可以予以反制,提高破解难度。所以比特币交易很安全,除非自己丢掉密钥,否则不存在被破解可能。
第一次写一个完全陌生的数学领域的知识,也许我有错误的地方,也许有没讲明白的地方,留言讨论吧。总之写完后对比特比系统的安全性表示很放心。
参考文献
[1]椭圆曲线密码学简介
[2]什么是椭圆曲线加密(ECC)
[3]域(数学)维基百科
区块链研习社源码研读班高若翔
比特币能不能往一个离线生成的钱包存币你好,你的问题中有几个关键点需要特别注意,我分别阐述如下:
你的描述中的"下载一个比特币钱包软件":这一步就值得小心谨慎,首先你的目的是离线制作比特币纸钱包,那么你要下载的其实是[比特币离线纸钱包制作工具],而且这些工具良莠不齐,甚至有的非常有风险,那么要选择怎样的[纸钱包制作工具]呢?一定是历经多年大家共同认可,且开源的(就是源代码都是完全开放的)的[安全的比特币离线纸钱包]制作工具才行,历经多年,则经历了时间的考验,关于这点可以百度搜索对比了解,建议搜索[安全的比特币离线纸钱包],多了解对比,要舍得花时间。
离线制作比特币离线纸钱包,要“拔掉网线”这是对的,这时的确你制作纸钱包的电脑就与整个互联网完全隔绝的,这正是离线的意义所在,这时你不用担心,因为比特币的钱包地址与私钥只是一个凭证,比特币并不是真正的要放进这个钱包里(这和现实中的钱包是完全不同的,可百度百科了解下),比特币属于哪个钱包地址,只是在比特币区块链网络上的的公共几本的记载而已,因此,你生成的比特币离线纸钱包是可以放心使用的,关键点在于你真正把比特币离线纸钱包的私钥地址抄写到了纸上,而且保证没有抄错,把公钥保存了下来,以便接收别人的比特币转账,那么这时,你生成的比特币离线纸钱包是完全会得到比特币网络的承认的。
你问题描述中提到“我用纸把公钥私钥记了下来,然后把电脑砸个稀巴烂,然后用用火烧掉主机屏幕”——这其实完全不用,只要你离线制作比特币离线纸钱包的过程中,拔掉了网线,也没有人可以偷看到你的屏幕,那么只要选择的是安全比特币离线纸钱包工具,得到的钱包就是安全的,当然最重要的是,你要把抄写有比特币离线纸钱包的私钥的纸条最好存放到防火防水的保险柜中。至于你用以生成比特币离线纸钱包的电脑,不用砸坏它,最多把硬盘销毁就可以了,前面搜索的安全比特币离线纸钱包教程中就有详细的说明后续处理要怎么做。
最后你提到的向自己离线生成的比特币纸钱包中转币的操作,这与向其它任何一个比特币地址转账没有任何不同,同步过程都是在整个比特币区块链网络中进行的,是需要等待,但是这是整个网络的确认过程。
希望我的回答能够帮助你,建议先充分学习了解后再操作。
关于比特币的几个问题的研究018年,区块链技术井喷式的发展,同1997年那会儿的互联网何其相像。笔者相信,区块链技术的发展,肯定会快过互联网。如果再不摄入点区块链方面的知识,也许你将落后一个时代。本文将回答关于比特币的几个问题。
问题一:比特币怎么诞生的?
2008年11月1日,一个自称中本聪(SatoshiNakamoto)的人在一个隐秘的密码学评论组(密码朋克)上贴出了一篇研讨微V-BQ尔无吧疤Y陈述,陈述了他对电子货币的新设想——比特币就此面世。
问题二:比特币如何生产?
比特币网络通过“挖矿”来生成新的比特币。所谓“挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的微V-BQ尔无吧疤Y一致性。比特币每10分钟产生一个区块,包含过去十分钟所有的交易信息。谁能算出数字,谁就获得记账权。获得记账权后,将向全网广播、存储。由谁获得记账权是不确定的,当然,你运算能力越强,获得记账权的几率越高。随后比特币网络会新生成一定量的比特币作为赏金,奖励获得记账权的人。
问题三:比特币的特点?
完全去处中心化,没有发行机构,也就不可能操纵发行数量。比特币不需要第三方机构,彼此信任的点对点交易。信任的建立不再基于大型机构,而是基于密码技术和代码。比特币可以在任意一台接入互联网的电脑上管理。不管身处何方,任何人都可以挖掘、购买、出售或收取比特币。操控比特币需要私钥,它可以被隔离保存在任何存储介质,除了用户自己之外无人可以获取。作为由A到B的支付手段,比特币没有繁琐的额度与手续限制,知道对方比特币地址就可以进行支付。
问题四:比特币能被仿造吗?
山寨者难以生存。由于比特币算法是完全开源的,谁都可以下载到源码,修改些参数,重新编译下,就能创造一种新的p2p货币。但这些山寨货币微V-BQ尔无吧疤Y很脆弱,极易遭到51%攻击。任何个人或组织,只要控制一种p2p货币网络51%的运算能力,就可以随意操纵交易、币值,这会对p2p货币构成毁灭性打击。很多山寨币,就是死在了这一环节上。而比特币网络已经足够健壮,想要控制比特币网络51%的运算力,所需要的cpu/gpu数量将是一个天文数字。
问题五:为什么比特币总量为2100万?
2009年比特币诞生的时候,每笔赏金是50个比特币。诞生10分钟后,第一批50个比特币生成了,而此时的货币总量就是50。随后比特币就以约每10分钟50个的速度增长。当总量达到1050万时(2100万的50%),赏金减半为25个。当总量达到1575万(新产出525万,即1050的50%)时,赏金再减半为12.5个。依此类推。根据其设计原理,比特币的总量会持续增长,直至100多年后达到2100万的那一天。但比特币货币微V-BQ尔无吧疤Y总量后期增长的速度会非常缓慢。简单来说,比特币产量每4年减半,目前每10分钟产生12.5个比特币。事实上,87.5%的比特币都将在头12年内被“挖”出来。而且,2100万也只是理论数据,现实中,由于初期比特币不受重视,不少比特币遗失。
问题六:比特币矿工有哪些收益?
首先是通过运算,获得记账权后,直接奖励比特币。但按照比特币规则,随着时间增长,奖励会越来越少。将来的收益,主要通过收取比特币交易产生的手续费。
问题七:为什么比特币不可修改?
举个例子,假如A和B进行交易,A需要付给B一百个比特币。但如果A想要赖账,只想付给B一个比特币。按照比特币的规则,他就必须要获得下一个10分钟微V-BQ尔无吧疤Y的记账权,才能修改;同样,他也必须要再获得下下个10分钟的记账权,以此类推。所以,修改是几乎不可能的。
问题八:比特币交易速率?
理论上讲,比特币交易速率是每秒7笔。实际上,比特币目前交易速度只有每秒一笔。
问题九:比特币为什么有如此强的生命力?
把比特币比作一个公司,那么他没有股东会、董事会、管理层,没有严厉的领导,没有HR,没有部门经理,没有员工,没有经营场地,没有收入。但比特币公司成功运行了9年时间,从没有出现任何问题,并且市值数千亿,网络的运行时依靠一套数学算法、激励机制和社区来进行管理和治理。
问题十:比特币面临的问题?
一是交易确认时间长。比特币钱包初次安装微V-BQ尔无吧疤Y时,会消耗大量时间下载历史交易数据块。而比特币交易时,为了确认数据准确性,会消耗一些时间,与p2p网络进行交互,得到全网确认后,交易才算完成。
二是大众对原理不理解,以及传统金融从业人员的抵制。懂原理的人,知道比特币无法人为操纵和控制。但大众并不理解,很多人甚至无法分清比特币和Q币的区别。“没有发行者”是比特币的优点,但在传统金融从业人员看来,“没有发行者”的货币毫无价值。
OK,关于比特币源码下载和比特币代码下载的内容到此结束了,希望对大家有所帮助。