比特币密码算法
『壹』 比特币块哈希是怎么算出来的
比特币所采用的哈希算法,在比特币系统中,需要大量地进行哈希函数运算。比特币系统是这样规定的:每隔十分钟,大家都需要计算哈希函数,计算的值必须符合我的规定。谁计算的快,谁才会获得作为奖励的比特币。
『贰』 比特币如何算出来的
要想了解bitcoin的技术原理,首先需要了解两个重要的密码技术: HASH码:将一个长字符串转换成固定长度的字符串,并且其转换不可逆,即不太可能从HASH码猜出原字符串。bitcoin协议里使用的主要是SHA256。
公钥体系:对应一个公钥和私钥,在应用中自己保留私钥,并公开公钥。当甲向乙传递信息时,可使用甲的私钥加密信息,乙可用甲的公钥进行解密,这样可确保第三方无法冒充甲发送信息;同时,甲向乙传递信息时,用乙的公钥加密后发给乙,乙再用自己的私钥进行解密,这样可确保第三者无法偷听两人之间的通信。最常见的公钥体系为RSA,但bitcoin协议里使用的是lliptic Curve Digital Signature Algorithm。 和现金、银行账户的区别? bitcoin为电子货币,单位为BTC。在这篇文章里也用来指代整个bitcoin系统。 和在银行开立账户一样,bitcoin里的对应概念为地址。每个人都可以有1个或若干个bitcoin地址,该地址用来付账和收钱。每个地址都是一串以1开头的字符串,比如我有两个bitcoin账户,和。一个bitcoin账户由一对公钥和私钥唯一确定,要保存账户,只需要保存好私钥文件即可。 和银行账户不一样的地方在于,银行会保存所有的交易记录和维护各个账户的账面余额,而bitcoin的交易记录则由整个P2P网络通过事先约定的协议共同维护。 我的账户地址里到底有多少钱? 虽然使用bitcoin的软件可以看到当前账户的余额,但和银行不一样,并没有一个地方维护每个地址的账面余额。它只能通过所有历史交易记录去实时推算账户余额。 我如何付账? 当我从地址A向对方的地址B付账时,付账额为e,此时双方将向各个网络节点公告交易信息,告诉地址A向地址B付账,付账额为e。为了防止有第三方伪造该交易信息,该交易信息将使用地址A的私钥进行加密,此时接受到该交易信息的网络节点可以使用地址A的公钥进行验证该交易信息的确由A发出。当然交易软件会帮我们做这些事情,我们只需要在软件中输入相关参数即可。 网络节点后收到交易信息后会做什么? 这个是整个bitcoin系统里最重要的部分,需要详细阐述。为了简单起见,这里只使用目前已经实现的bitcoin协议,在当前版本中,每个网络节点都会通过同步保存所有的交易信息。 历史上发生过的所有交易信息分为两类,一类为"验证过"的交易信息,即已经被验证过的交易信息,它保存在一连串的“blocks”里面。每个"block"的信息为前一个"bock"的ID(每个block的ID为该block的HASH码的HASH码)和新增的交易信息(参见一个实际的block)。另外一类指那些还"未验证"的交易信息,上面刚刚付账的交易信息就属于此类。 当一个网络节点接收到新的未验证的交易信息之后(可能不止一条),由于该节点保存了历史上所有的交易信息,它可以推算中在当时每个地址的账面余额,从而可以推算出该交易信息是否有效,即付款的账户里是否有足够余额。在剔除掉无效的交易信息后,它首先取出最后一个"block"的ID,然后将这些未验证的交易信息和该ID组合在一起,再加上一个验证码,形成一个新的“block”。 上面构建一个新的block需要大量的计算工作,因为它需要计算验证码,使得上面的组合成为一个block,即该block的HASH码的HASH码的前若干位为1。目前需要前13位为1(大致如此,不确定具体方式),此意味着如果通过枚举法生成block的话,平均枚举次数为16^13次。使用CPU资源生成block被称为“挖金矿”,因为生产该block将得到一定的奖励,该奖励信息已经被包含在这个block里面。 当一个网络节点生成一个新的block时,它将广播给其它的网络节点。但这个网络block并不一定会被网络接受,因为有可能有别的网络节点更早生产出了block,只有最早产生的那个block或者后续block最多的那个block有效,其余block不再作为下一个block的初始block。 对方如何确认支付成功? 当该笔支付信息分发到网络节点后,网络节点开始计算该交易是否有效(即账户余额是否足够支付),并试图生成包含该笔交易信息的blocks。当累计有6个blocks(1个直接blocks和5个后续blocks)包含该笔交易信息时,该交易信息被认为“验证过”,从而该交易被正式确认,对方可确认支付成功。 一个可能的问题为,我将地址A里面的余额都支付给地址B,同时又支付给地址C,如果只验证单比交易都是有效的。此时,我的作弊的方式为在真相大白之前产生6个仅包括B的block发给B,以及产生6个仅包含C的block发给C。由于我产生block所需要的CPU时间非常长,与全网络相比,我这样作弊成功的概率微乎其微。 网络节点生产block的动机是什么? 从上面描述可以看出,为了让交易信息有效,需要网络节点生成1个和5个后续block包含该交易信息,并且这样的block生成非常耗费CPU。那怎么样让其它网络节点尽快帮忙生产block呢?答案很简单,协议规定对生产出block的地址奖励BTC,以及交易双方承诺的手续费。目前生产出一个block的奖励为50BTC,未来每隔四年减半,比如2013年到2016年之间奖励为25BTC。 交易是匿名的吗? 是,也不是。所有BITCOIN的交易都是可见的,我们可以查到每个账户的所有交易记录,比如我的。但与银行货币体系不一样的地方在于,每个人的账户本身是匿名的,并且每个人可以开很多个账户。总的说来,所谓的匿名性没有宣称的那么好。 但bitcoin用来做黑市交易的还有一个好处,它无法冻结。即便警方追踪到了某个bitcoin地址,除非根据网络地址追踪到交易所使用的电脑,否则还是毫无办法。 如何保证bitcoin不贬值? 一般来说,在交易活动相当的情况下,货币的价值反比于货币的发行量。不像传统货币市场,央行可以决定货币发行量,bitcoin里没有一个中央的发行机构。只有通过生产block,才能获得一定数量的BTC货币。所以bitcoin货币新增量决定于: 1、生产block的速度:bitcoin的协议里规定了生产block的难度固定在平均2016个每两个星期,大约10分钟生产一个。CPU速度每18个月速度加倍的摩尔定律,并不会加快生产block的速度。 2、生产block的奖励数量:目前每生产一个block奖励50BTC,每四年减半,2013年开始奖励25BTC,2017年开始奖励额为12.5BTC。 综合上面两个因素,bitcoin货币发行速度并不由网络节点中任何单个节点所控制,其协议使得货币的存量是事先已知的,并且最高存量只有2100万BTC
『叁』 比特币到底是不是加密货币
比特币(Bitcoin)是一种由开源的P2P软件产生的电子货币,数字货币,是一种网络虚拟货币。比特币也被意译为“比特金”。简写:BTC。
『肆』 比特币算法原理
比特币算法主要有两种,分别是椭圆曲线数字签名算法和SHA256哈希算法。
椭圆曲线数字签名算法主要运用在比特币公钥和私钥的生成过程中,该算法是构成比特币系统的基石。SHA-256哈希算法主要是运用在比特币的工作量证明机制中。
比特币产生的原理是经过复杂的运算法产生的特解,挖矿就是寻找特解的过程。不过比特币的总数量只有2100万个,而且随着比特币不断被挖掘,越往后产生比特币的难度会增加,可能获得比特币的成本要比比特币本身的价格高。
比特币的区块由区块头及该区块所包含的交易列表组成,区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的散列值、32字节的 Merkle Root Hash、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数组成。拥有80字节固定长度的区块头,就是用于比特币工作量证明的输入字符串。不停的变更区块头中的随机数即 nonce 的数值,并对每次变更后的的区块头做双重 SHA256运算,将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。
比特币的本质其实是一堆复杂算法所生成的一组方程组的特解(该解具有唯一性)。比特币是世界上第一种分布式的虚拟货币,其没有特定的发行中心,比特币的网络由所有用户构成,因为没有中心的存在能够保证了数据的安全性。
『伍』 如何持有比特币
比特币是一种由开源的P2P软件产生的电子币,数字币,是一种网络虚拟资产。比特币也被意译为“比特金”。比特币基于一套密码编码、通过复杂算法产生。
那么要怎样才能持有比特币?大概有以下几种方法:
1、挖掘方法;
任何人都可以挖掘比特币,要挖掘比特币可以下载专用的比特币运算工具,然后注册各种合作网站,把注册来的用户名和密码填入计算程序中,再点击运算就正式开始。
2、购买方法;
国内外有很多网上的比特币交易机构,接受比特币与法定货币的兑换。其中Mt. Gox是最早及最具实力的比特币交易平台,2010年成立于日本。Bitstamp和BTC-e是另外两个国外较大的交易所。
国内也出现了大量的交易平台,比如BTCChina(比特币中国)成立于2011年6月,是第一家在中国境内运营的交易平台(中国最大),也是全球交易量前三的公司化运行平台。
『陆』 什么是区块链加密算法
这个是比特币的一个重要概念,比特币的底层技术区块链运用了很多优秀的加密算法来保证系统可靠性。具体的理解和操作可以去下载链派社区app,听一下里面讲师的课程,你就清楚了。
『柒』 谁能来说说比特币的密码学原理
密码算法维系着比特币的体系的运作、交易等环节
『捌』 比特币 哈希值
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的。
消息身份验证代码 (MAC) 哈希函数通常与数字签名一起用于对数据进行签名,而消息检测代码 (MDC) 哈希函数则用于数据完整性。
比特币全网的基本信息如下:
所有需要挖矿的数字货币都是存在哈希值的,例如莱特币、瑞泰币、狗狗币、微盟币、点点币、元宝币等等。
『玖』 区块链密码算法是怎样的
区块链作为新兴技术受到越来越广泛的关注,是一种传统技术在互联网时代下的新的应用,这其中包括分布式数据存储技术、共识机制和密码学等。随着各种区块链研究联盟的创建,相关研究得到了越来越多的资金和人员支持。区块链使用的Hash算法、零知识证明、环签名等密码算法:
Hash算法
哈希算法作为区块链基础技术,Hash函数的本质是将任意长度(有限)的一组数据映射到一组已定义长度的数据流中。若此函数同时满足:
(1)对任意输入的一组数据Hash值的计算都特别简单;
(2)想要找到2个不同的拥有相同Hash值的数据是计算困难的。
满足上述两条性质的Hash函数也被称为加密Hash函数,不引起矛盾的情况下,Hash函数通常指的是加密Hash函数。对于Hash函数,找到使得被称为一次碰撞。当前流行的Hash函数有MD5,SHA1,SHA2,SHA3。
比特币使用的是SHA256,大多区块链系统使用的都是SHA256算法。所以这里先介绍一下SHA256。
1、 SHA256算法步骤
STEP1:附加填充比特。对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。
STEP2:附加长度值。将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先)。
STEP3:初始化缓存。使用一个256-bit的缓存来存放该散列函数的中间及最终结果。
STEP4:处理512-bit(16个字)报文分组序列。该算法使用了六种基本逻辑函数,由64 步迭代运算组成。每步都以256-bit缓存值为输入,然后更新缓存内容。每步使用一个32-bit 常数值Kt和一个32-bit Wt。其中Wt是分组之后的报文,t=1,2,...,16 。
STEP5:所有的512-bit分组处理完毕后,对于SHA256算法最后一个分组产生的输出便是256-bit的报文。
2、环签名
2001年,Rivest, shamir和Tauman三位密码学家首次提出了环签名。是一种简化的群签名,只有环成员没有管理者,不需要环成员间的合作。环签名方案中签名者首先选定一个临时的签名者集合,集合中包括签名者。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的成员可能并不知道自己被包含在其中。
环签名方案由以下几部分构成:
(1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。
(2)签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。
(3)签名验证。验证者根据环签名和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。
环签名满足的性质:
(1)无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。
(2)正确性:签名必需能被所有其他人验证。
(3)不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。
3、环签名和群签名的比较
(1)匿名性。都是一种个体代表群体签名的体制,验证者能验证签名为群体中某个成员所签,但并不能知道为哪个成员,以达到签名者匿名的作用。
(2)可追踪性。群签名中,群管理员的存在保证了签名的可追踪性。群管理员可以撤销签名,揭露真正的签名者。环签名本身无法揭示签名者,除非签名者本身想暴露或者在签名中添加额外的信息。提出了一个可验证的环签名方案,方案中真实签名者希望验证者知道自己的身份,此时真实签名者可以通过透露自己掌握的秘密信息来证实自己的身份。
(3)管理系统。群签名由群管理员管理,环签名不需要管理,签名者只有选择一个可能的签名者集合,获得其公钥,然后公布这个集合即可,所有成员平等。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。