| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 密码算法在比特币中的应用 -> 正文阅读 |
|
[区块链]密码算法在比特币中的应用 |
比特币系统为了保证其安全性,用到了很多算法,包括各种加密算法以及共识算法,理解这些算法对于理解比特币的原理是至关重要的。首先理解一下比特币与区块链的关系。 1 比特币与区块链的关系1.1 比特币怎么来的?2008年,中本聪发表论文《比特币 :一种点对点的电子现金系统》。论文描述了
用的技术就是区块链。也就是说,比特币是世界上第一种“去中心化”的数字货币,为了发明它,中本聪搞出了一种新技术,他把它命名为“区块链”。因此,区块链是伴随着比特币产生的一种新技术。 通俗地说,比特币是产品,是一种具体的数字货币,而区块链是相对通用的技术。 打个比方,瓦特发明了蒸汽机,他也发明了一整套相关的技术。但技术不是产品本身,别人用他的技术,也能做出相似的蒸汽机。 1.2 什么是区块链?区块链是一种软件技术。说得简单点,就是“分散存储”和“档案全留”。也就是说,比特币的所有交易信息,在网上都有保留,而且是重复存储在成千上万台计算机上。 比如,A把比特币卖给了B,这条交易记录不是存储在一台计算机上,而是存储在网上尽量多的计算机上,至少几百台以上。而且,这些比特币过去所有的交易记录,也全都保留在网上。 这种分散存储和信息保留,让人极难篡改。因为如果想篡改交易记录,就得改成千上万台机器上的数据,这几乎是不可能的。迄今为止,还没有发生过篡改现象。因此,从实际应用角度来说,比特币是不可篡改和不可伪造的。加上它本身具有一定的成本和稀缺性,因此具有一定的信用。因此,比特币具有货币的特征。 2 比特币的特点总结以下,比特币具有如下特点:
3 比特币的密码学原理首先要明白比特币是如何获取的。获取方式通常有以下3种:
3.1 比特币原理?比特币是一个分布式的点对点网络系统
3.2 比特币地址?
3.3 比特币地址的生成过程
由以上过程可以得到,?比特币系统为了保证其安全性,用到了很多算法,包括各种加密算法以及共识算法 3.4 比特币的主要技术
4 几个主要算法技术的介绍4.1 Hash算法4.1.1 Hash的概念Hash对于任何一个从事计算机软件开发的同行应该是在熟悉不过了。Hash算法是指将任意长度的一串明文映射为一段长度较短的(通常长度也是固定的)二进制串,并且对于不同的明文,很难映射得到相同的hash串。平时在开发过程中用的比较多的MD5来检验文件就是hash的最常见的应用:用某种hash算法对文件生成hash值(数字摘要),一旦之后文件发生了改变,重新计算将得到不同的摘要值,从而认为文件发生了变化。 一个好的hash算法需要具备的特点:
4.1.2 常见的hash算法常见的hash算法:
目前MD5和SHA1已经被破解,通常推荐使用SHA-256或更安全的算法。 4.2 加解密算法比特币作为一种加密货币,其中少不了加解密算法。 4.2.1 加解密的过程? ?加解密过程描述起来很简单:加密就是将明文和秘钥,通过加密算法生成密文。 解密是加密的反过程:密文和秘钥通过解密算法,还原出明文。 根据加密和解密过程中是否使用相同的秘钥,加密算法又可以分为对称加密和非对称加密算法:
两种加密方式各有有缺点,实践中有时会将二者结合起来使用。 ? 注意:理论上不存在绝对安全的算法,所以在实际的项目中,如果对安全性要求较高,最好不要使用自己设计的加密算法,很多情况下即使不公开加密算法,系统也很容易被破解,明智的做法是使用已经经过长期验证和论证的算法。 4.2.2 对称加密算法对称加密算法即加密和解密使用相同的秘钥。其优点是效率和加密强度高,但缺点是参与方需要提前持有秘钥,一旦有人将秘钥泄漏,就会有安全风险。 从实现方式上,对称加密算法又可以分为分组密码和序列密码。
分组密码应用较为广泛,有一些大家耳熟能详的经典算法:DES,3DES,AES。
4.2.3 非对称加密算法非对称加密算法是指加密和解密使用不同的秘钥,分别称为公钥和私钥。私钥一般通过随机数算法来生成,公钥通常通过私钥生成。公钥谁都可以看到,私钥不能泄露,只有自己持有。 非对称加密的优点是公私钥分开,缺点是效率低,强度也比对称加密低。 安全性方面,非对称加密的安全性需要数学问题来保障,常见的有大质数因子分解,椭圆曲线,离散对数等数学难题。 常见的非对称加密算法:
一些非常重要的概念:
4.3 数字签名数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称与数字摘要技术的应用。本部分参考原文链接 4.4 共识算法?区块链是一种去中心化的分布式账本系统,可以用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。区块链系统与传统中心化系统相比,具有公开透明、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方。 由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此,区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。 在区块链这样的分布式账本系统中,保障整个系统的安全性和适应性十分重要,这也是共识算法出现的根本原因。 那么,区块链中常见的共识算法都有哪些呢? 1、POW:Proof of Work,工作量证明 POW是比特币在Block的生成过程中使用的一种共识算法,也可以说是最原始的区块链共识算法了。POW工作量证明,简单地理解就是,通过一份证明来确认做过一定量的工作。 在比特币系统中,得到合理的Block Hash需要经过大量尝试计算。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算。 这种工作量证明的形式,在我们日常生活中也十分常见。比如驾照,能拿到驾照,说明你已经进行过为期几个月甚至几年的练车和考试;再比如现在很火的吃鸡和王者荣耀游戏中的K/D(Kill/Death)和胜率,分值越高证明你越厉害,同时也说明你进行了大量的游戏练习和技巧学习。 2、POS:Proof of Stake,权益证明 由于POW机制存在消耗算力巨大、交易确认时间较长,挖矿活动集中容易形成中心化等缺点,便演进出了POS权益证明。POS简单来说,就是一个根据持有数字货币数量和时间来分配相应利息的制度,类似平时我们在银行中存款。 基于权益证明共识的区块链系统中,参与者的角色是验证者Validator,只需要投资系统的数字货币并在特定时间内验证自己是否为下一区块创造者,即可完成下一区块的创建。下一区块创造者是以某种确定的方式来选择,验证者被选中为下一区块创造者的概率与其所拥有的系统中数字货币的数量成正比例,即拥有300个币的验证者被选中的概率是拥有100个币验证者的3倍。 在POS模式下,有一个名词叫币龄,每个币每天产生1币龄。比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000。这个时候,如果你验证了一个POS区块,你的币龄就会被清空为0,同时从区块中获得相对应的数字货币利息。 这下就很有意思了,持币有利息。并且由于POS是在一个有限的空间里完成,不是像POW那样在无限空间里寻找,因此无需大量能源消耗。 3、DPOS:Delegated Proof of Stake,授权权益证明 DPOS最早出现在比特股中,又称受托人机制,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 。我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利完全相等。 从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心数字货币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。 DPOS通过其选择区块生产者和验证节点质量的算法确保了安全性,同时消除了交易需要等待一定数量区块被非信任节点验证的时间消耗。通过减少确认的要求,DPOS算法大大提高了交易的速度。通过信任少量的诚信节点,可以去除区块签名过程中不必要的步骤。 4、PBFT:Practical Byzantine FaultTolerance,实用拜占庭容错 PBFT意为实用拜占庭容错算法,该算法由Miguel Castro (卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。 PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。 将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。 5、RAFT,一致性共识算法 RAFT算法包含三种角色,分别是:跟随者(follower),候选人(candidate)和领导者(leader)。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色可以随着时间和条件的变化而互相转换。 RAFT算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。RAFT算法支持最大的容错故障节点是(N-1)/2,其中N为集群中总的节点数量。 上述是目前主要的区块链共识算法,当然还有其他算法,比如POET:Proof of Elapsed Time流逝时间量证明,Ripple Consensus瑞波共识机制等。 每种算法,各有千秋,在特定环境下和时间段上被采用都有各自的考虑和意义。对不同的区块链应用场景而言,适合的算法即为最好的算法。??????原文链接 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:12:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |