草根站长
老司机 路子野 随时超车
简言之,哈希算法是将任意长度的字符串映射为较短的固定长度的字符串。比特币则是使用SHA-256摘要算法对任意长度的输入给出的是256bit的输出。那么,加密货币中哈希算法的应用有哪些?
加密哈希函数
数据结构
挖矿
加密哈希函数:
一个加密哈希函数有如下特性:
确定性 :无论在同一个哈希函数中解析多少次,输入同一个A总是能得到相同的输出h(A)。
高效运算 :计算哈希值的过程是高效的。
抗原像攻击(隐匿性) :对一个给定的输出结果h(A),想要逆推出输入A,在计算上是不可行的。
抗碰撞性(抗弱碰撞性) :对任何给定的A和B,找到满足B≠A且h(A)=h(B)的B,在计算上是不可行的。
细微变化影响 :任何输入端的细微变化都会对哈希函数的输出结果产生剧烈影响。
谜题友好性 :对任意给定的Hash码Y和输入值x而言,找到一个满足h(k|x)=Y的k值在计算上是不可行的。
加密哈希函数对区块链的安全性和挖矿有巨大的帮助。
数据结构:
有两种数据结构对于理解区块链非常重要:链表和哈希指针。
链表:链表是依次按顺序连接而成的数据区块,如下图所示:
在链表中的每个区块都通过一个指针指向另一个区块。
指针:指针是包含其他变量地址的变量。因此,正如其名,指针就是指向其他变量的变量。
哈希指针:哈希指针不仅有其他变量的地址,还有该变量中数据的哈希值。那么,这对区块链而言有何帮助呢?
区块链的构成如下图所示:
区块链本质上是一个链表,其中的每个新区块都包含一个哈希指针。指针指向前一区块及其含有的所有数据的哈希值。借此特性,区块链拥有了不可更改性(immutability)的伟大特质。
区块链如何实现其不可更改性?
假设在上面的图表中,有人尝试篡改1号区块中的数据。请记住加密哈希函数的一个重要特质是任何输入端的细微变化都会对哈希函数的输出结果产生剧烈影响。
那么,即便有人尝试对1号区块里的数据进行细微的改写,也会使得存储在2号区块里的1号区块的哈希值产生巨大的变化。接下来,这将导致2号区块的哈希值发生变化,进而影响存储在3号区块的哈希值。以此类推,最终整条区块链上的数据都会发生变化。这种通过冻结整条链条来修改数据的方式几乎是不可能做到的。正因如此,区块链被认定为是不可篡改的。
每个区块都有自己的梅克尔根(Merkle Root)。现在,正如你已知道的,每个区块里都包含多笔交易。如果将这些交易按线性存储,那么在所有交易中寻找一笔特定交易的过程会变得无比冗长。
而这就是我们使用梅克尔树的原因。
在梅克尔树中,所有个体交易通过哈希算法都能向上追溯至同一个根。这就使得搜索变得非常容易。因此,如果想要在区块里获取某一特定的数据,我们可以直接通过梅克尔树里的哈希值来进行搜索,而不用进行线性访问。
挖矿
加密谜题被用来挖掘新的区块,因此哈希算法仍然至关重要。其工作原理是调整难度值的设定。随后,一个被命名为“nonce”的随机字符串被添加到新区块的哈希值上,然后被再次哈希。接着,再来检验其是否低于已设定的难度值水平。如果低于,那么产生的新区块会被添加至链上,而负责挖矿的矿工就会获得奖励。如果没有低于,则矿工继续修改随即字符串“nouce”,直至低于难度值水平的值出现。
正如你所见,哈希算法是区块链和加密经济学中一个至关重要的部分。
哈希算法也被称为“散列”,是区块链的四大核心技术之一。是能前燃或计算出一个数字消息所对应的、长度固定的字符串(又称消息摘要)的算法。由于一段数据只有一个哈希值,所以哈希算法可以用于检验数据的完整性。在快速查找和加密算法的应用方面,哈希算法的使用非常普遍。在互联网时代,尽管人与人之间的距离更近了,但是信任问题却更严重了。 现存的第三方中介组织的技术架构都是私密而且中心化的,这种模式永远都无法从根本上解决互信以及价值转移的问题。因此,区块链技术将会利用去中心化的数据库架构完成数据交互信任背书,实现全球互信的一大跨步。在这一过 程中,哈希算法发挥了重要作用。散列算法是区块链中保段棚证交易信息不被篡改的单向密码机制。区块链通过散列算法对一个交易区块中的交易进行加密,并把信息压缩成由一串数字和字母慧伍组成的散列字符串。区块链的散列值能够唯一而准确地标识一个区块。在验证区块的真实性时,只需要简单计算出这个区块的散列值,如果没有变化就 意味着这个区块上的信息是没有被篡改过的。链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
1.1. 简介计算机行业从业者对哈希这个词应该非常熟悉,哈希能够实现数据从一个维度向另一个维度的映射,通常使用哈希函数实现这种映射。通常业界使用y = hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。区块链中哈希函数特性:函数参数为string类型;固定大小输出;计算高效;collision-free 即冲突概率小:x != y => hash(x) != hash(y)隐藏原始信息:例如区块链中各个节点之间对交易的验证只需要验证交易的信息熵,而不需要对原始信息进行比对,节点间不需要传输交易的原始数据只传输交易的哈希即可,常见算法有SHA系列和MD5等算法1.2. 哈希的用法哈希在区块链中用处广泛,其一我们称之为哈希指针(Hash Pointer)哈希指针是指该变量的值是通过实际数据计算出来的且指向实际的数据所在位置,即其既可以表示实际数据内容又可以表示实际数据的存储位置。下图为Hash Pointer的示意图HashPointer在区块链中主要有两处使用,第一个就是构建区块链数据结构。了解区块链的读者应该知道区块链数据结构由创世区块向后通过区块之间的指针进行连接,这个指针使用的就是图示的HashPointer.每个区块中都存储了前一个区块的HashPointer。这样的数据结构的好处在于后面区块可以查找前面所有区块中的信息且区块的HashPointer的计算包含了前面区块的信息从而一定程度上保证了区块链的不易篡改的特性。第二个用处在于构建Merkle Tree. Merkle Tree的各个节点使用HashPointer进行构建,关于区块链数据结构以耐简及MerkleTree的内容我们在后续文章中进行进一步介绍。哈希还在其他技术中有所应用例如:交易验证以及数字签名等等。2.加密算法2.1简述加密简单而言就是通过一种算法手段将对原始信息进行转换,信息的接收者能够通过秘钥对密文进行解密从而得到原文的过程。按照加密方和解密方秘钥相同与否可以将加密算法大致分为三种子类型:对称加密对称加密的加密解密方使用相同的秘钥,这种方式的好处在于加解密的速度快但是秘钥的安全分发比较困难,常见对称加密算法有DES,AES,...非对称加密非对称加密体系也称为公钥体系,加解密时加密方拥有公钥和私钥,加密方可以将公钥发送给其他相关方,私钥严格自己保留。例如银行的颁发给个人用户的私钥就存储在个人的U盾里;非对称加密中可以通过私钥加密,他人能够使用公昌简裤钥进行解密,反之亦然;非对称加密算法一般比较复杂执行时间相对对称加密较长;好处在于无秘钥分发问题。常见的其他非对称加密算法有RSA,ECC,区块链中主要使用ECC椭圆曲线算法。对称加密与非对称加密的结合这种方式将加密过程分为两个阶段,阶段咐野一使用非对称加密进行秘钥的分发使得对方安全地得到对称加密的秘钥,阶段二使用对称加密对原文进行加解密。2.2 数字签名数字签名又称之为公钥数字签名,是一种类似于写在纸上的物理签名。数字签名主要用于数据更改的签名者身份识别以及抗抵赖。数字签名包含三个重要特性:只有自己可以签署自己的数字签名,但是他人可以验证签名是否是你签发;数字签名需要和具体的数字文档绑定,就好比现实中你的签名应该和纸质媒介绑定;数字签名不可伪造;依赖非对称加密机制可以较容易实现上述三种特性。首先,需要生成个人的公私钥对:(sk, pk) := generateKeys(keysize),sk私钥用户自己保留,pk公钥可以分发给其他人其次,可以通过sk对一个具体的message进行签名:sig := sign(sk, message) 这样就得到了具体的签名sig最后,拥有该签名公钥的一方能够进行签名的验证:isValid := verify(pk, message, sig)在区块链体系中每一条数据交易都需要签名,在比特币的设计过程中直接将用户的公钥来表征用户的比特币地址。这样在用户发起转账等比特币交易时可以方便的进行用户交易的合法性验证。2.3 数字证书和认证中心2.3.1 数字证书(Digital Certificate)数字证书又称“数字身份证”、“网络身份证”是经认证中心授权颁发并经认证中心数字签名的包含公开秘钥拥有者及公开秘钥相关信息的电子文件,可以用来判别数字证书拥有者身份。数字证书包含:公钥、证书名称信息、签发机构对证书的数字签名以及匹配的私钥证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,签发此证书的CA仍保留此证书的副本,以备日后解 决可能引起的纠纷。2.3.2 认证中心(Certificate Authority)认证中心 一般简称CA, CA一般是一个公认可信的第三方机构,其作用主要是为每个用户颁发一个独一无二的包含名称和公钥的数字证书。2.4 常见加密算法的对比
哈希算法是什么?如何保证挖矿的公平性?哈希算法是一种只能加密,不能解密的密码学算法,可以将任意长度的信息转换成一段固定长度的字符串。这段字符串有两个特点:1、 就算输入值只改变一点,输出的哈希念李值也会天差地别。2、只有完全一样的输入值才能得到完全一样的输出值。3、输入值与输出值之间没有规律,所以不能通过输出值算出输入值。要想找到指定的输出值,只能采用枚举法:不断更换输入值,寻找满足条件的输出值。哈希算法保证了比特币挖矿不能逆向推导出结果。所以,仔亩迟矿工持续不断地进行运算,本质耐宴上是在暴力破解正确的输入值,谁最先找到谁就能获得比特币奖励。
版权声明:本文标题:什么是区块链哈希算法,什么是区块链技术内容由互联网整理发布,该文观点仅代表作者本人,转载请联系作者并注明出处:http://www.0792jiaju.com/post/1642.html,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。
发表评论