区块链中的HASH算法

news/2024/7/3 3:19:39

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

区块链笔记-Hash算法
区块链技术是一系列技术的结合,建立新的技术架构,hash算法是很重要的一块,如果理解不当的地方请指点更正。
Hash算法将任意长度的二进制值映射成为固定长度并且较短的二进制值,这个就成为哈希值。其是一段数据唯一且紧凑的数值表示形式。找到同一值的不同的输入,在计算机上是不可能的,数据的哈希值可以检验数据的完整性,一般用于快速查找和加密算法。
Hash算法是一种单向的加密,一个明文加密称密文,不可推逆,只有加密过程没有解密过程。目前常用的hash算法由MD5。SHA系列算法。

解释到这里,可能会联想到,hash算法中key在计算后如果出现了同一位置,冲突的产生,这里简单说下几种冲突处理。
1.拉链法:这种方法可以完全避免冲突,将所有关键字为同义词的结点链接在同一个单链表中。
2.多哈希法:设计两种以上的hash函数,避免冲突。
3.开放地址法:开放地址法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1),其中,m为哈希表的表长。di 是产生冲突的时候的增量序列。如果di值可能为1,2,3,…m-1,称线性探测再散列。如果di取1,则每次冲突之后,向后移动1个位置.如果di取值可能为1,-1,4,-4,9,-9,16,-16,…kk,-kk(k<=m/2),称二次探测再散列。如果di取值可能为伪随机数列。称伪随机探测再散列。

结合区块链,在区块链中很多地方都用到了hash函数:
1.区块链中节点的地址、公钥、私钥的计算。以地址为例:公钥经过一次SHA256计算,再进行一次RIPEMD160计算,得到一个公钥哈希(20字节\160比特),添加版本信息,再来两次SHA256运算、取前4比特字节,放到哈希公钥加版本信息后,再经过base58编码,最终得到地址。
2.merkle tree:是数据结构中的一种树结构,可以是二叉树,也可以是多叉树,他和数据结构中树的特点几乎一致,和普通树不同的是:merkle tree上的叶节点存放hash计算后的hash值,非叶节点是其对应的子节点串联的字符串的hash值。用于区块头和SPV认证中。
3.比特币中的挖矿,工作量证明(pow),计算的其实就是一个nonce,当这个随机数和其他散列过的数据合并时,产生一个比规定目标小(target)值。挖矿也可以理解一种快速不可逆的计算。SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET。
4.比特币中的bloom filter布隆过滤器,布隆过滤器基于hash函数的快速查找。解决了客户端检索的问题,原理是Bloom filter可以快速判断出某检索值一定不存在于某个指定的集合,从而可以过滤掉大量无关数据,减少客户端不必要的下载量。

简单介绍了HASH算法和区块链中用到的HASH算法,区块链是多个技术的结合,会出现一种新的技术结构,Hash算法和加密技术为区块链的自证信用和安全控制提供了基础。

那么今天就讲到这,也许有不对的地方,希望链客社区的大神可以指点迷津,让我的技术得到提高,感谢。


http://lihuaxi.xjx100.cn/news/238820.html

相关文章

memcached部署

第1章 memcached 1 memcached前言 1.1 memcached诞生的原因 2003年诞生了memcached Web1.0 2005以前 企业提供内容为主。 Web2.02005-2012 企业只提供平台&#xff0c;用户参与上传下载内容。 memcached 内存缓存软件&#xff0c;内存比磁盘快。 传统场景中&#xff0c;多数…

如何从JavaScript中的给定数字中形成最小的数字

by Prashant Yadav通过Prashant Yadav 如何从JavaScript中的给定数字中形成最小的数字 (How to form the smallest possible number from a given number in JavaScript) In this tutorial, we will implement an algorithm to form the smallest possible number with ES6.在…

ansible组件-playbook学习笔记

playbook的基础组件 name 定义playbook或者task的名称 hosts 用于指定要执行指定任务的主机 user 用于指定远程主机上的执行任务的用户 task 任务列表 vars 定义变量 vars_files 定义变量文件 notify 任务执行结果如果是发生更改的则触发定义在handler的任务 handlers 用于当前…

2018湖湘杯海选复赛Writeup

2018湖湘杯Writeup0x01 签到题0x02 MISC Flow0x03 WEB Code Check0x04 WEB Readflag0x05 WEB XmeO0x06 Reverse Replace0x07 MISC Disk0x08 Crypto Common Crypto0x09 Reverse HighwayHash640x10 Web Mynot0x01 签到题 关注合天智汇公众号&#xff0c;回复hxb2018得到flag。0x…

区块链技术简介

想知道更多区块链技术知识&#xff0c;请百度【链客区块链技术问答社区】链客&#xff0c;有问必答&#xff01;&#xff01;我最近看区块链简单介绍的时候会发现有的人就说其有良好的隐私性&#xff0c;但也有人说保护隐私性上有缺陷&#xff0c;今天就简单的对区块链的隐私做…

DELL RAID卡管理工具 MegaRAID Storage Manager(偏重RAID常用管理命令)

前言&#xff1a; 业务生产中大部分服务器RAID控制器使用的LSI产品&#xff0c;例如服务器&#xff1a;DELL、IBM、HP、浪潮、联想、华为。本文主要针对行业主流服务器DELL系列RAID卡管理&#xff0c;借住LSI产品管理软件MegaRAID Storage Manager &#xff08;以下简称MSM&…

矩阵专职_新的篇章开始了-我将以专职技术作家的身份加入RunCloud

矩阵专职If you used to submit (or read) articles on the freeCodeCamp Medium publication, there is a chance that your article may have been edited by me (or by another member of the team of volunteer editors).如果您以前曾经在freeCodeCamp Medium出版物上提交(…

vue:虚拟dom的实现

Vitual DOM是一种虚拟dom技术&#xff0c;本质上是基于javascript实现的&#xff0c;相对于dom对象&#xff0c;javascript对象更简单&#xff0c;处理速度更快&#xff0c;dom树的结构&#xff0c;属性信息都可以很容易的用javascript对象来表示&#xff1a; let element{tagN…