区块链:1、基础技术

一、哈希运算(Hash Algorithm)

1、概念

哈希运算即散列算法。其功能就是可以将任意长度输入通过一定计算生成一个固定长度的字符串,输出的这个字符串即输入的哈希值

2、特性

(1)正向快速

正向即由输入计算输出的过程,对给定的数据可以快速的得到哈希值

(2)输入敏感

只要输入信息发生任何变化(即使是一个字符改变),都会造成哈希值翻天覆地的变化,并且完全无法比对。

(3)逆向困难

这一点是哈希算法安全性的基础,要求无法短时间内根据哈希值计算出原始信息。

(4)强抗碰撞性

不同输入很难可以产生相同哈希输出。(但是实际上由于输出位数有限,所以实际上有产生碰撞的情况,但是由于代价过大使得破解没有意义,付出远大于收益而可以检验了一个哈希算法的优秀性)

以上特性保证了区块链的不可篡改性。

3、用哈希构建默克尔树

(1)概念

默克尔树就是一种哈希树,其可以实现对改变内容的快速检测。区块链中默克尔树就是当前区块所有交易信息的一个哈希值。该哈希值是一个哈希二叉树。

(2)操作

首先对每笔交易计算哈希,然后进行两两分组,对这两个哈希值再计算得到一个新的哈希值,两个旧的哈希值就作为新哈希值的叶子节点,如果哈希值数量为单数,则对最后一哈希值再次计算哈希值即可;然后重复上述计算,直至最后只剩一个哈希值,作为默克尔树的根,最终形成一个二叉树的结构。

在区块链中,我们只需要保留对自己有用的交易信息,删除或者在其他设备备份其余交易信息。如果需要验证交易内容,只需验证默克尔树即可。若根哈希验证不通过,则验证两个叶子节点,再验证其中哈希验证不通过的节点的叶子节点,最终可以准确识别被篡改的交易。

二、数字签名

1、概念

数字签名也称作电子签名,是通过一定算法实现类似传统物理签名的效果。其是通过密码学领域相关算法对签名内容进行处理,获取一段用于表示签名的字符。

数字签名在ISO 7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造。”

区块链网络中包含大量的节点,不同节点的权限不同。区块链中的转账操作,必须要由转出方发起。区块链主要使用数字签名来实现权限控制,识别交易发起者的合法身份,防止恶意节点身份冒充。

2、原理

(1)私钥公钥

数字签名通常采用非对称加密算法.即每个节点需要一对私钥,公钥密钥对。签名时需要使用私钥。
私钥即只有本人可以拥有的密钥。对同一段数据的签名是完全不同的,类似物理签名的字迹。
数字签名一般作为额外信息附加在原消息中,以此证明消息发送者的身份。
公钥即所有人都可以获取的密钥,验签时需要使用公钥。因为公钥人人可以获取,所以所有节点均可以校验身份的合法性。

(2)签名流程

  • 发送方A对原始数据通过哈希算法计算数字摘要,使用非对称密钥对中的私钥对数字摘要进行加密,这个加密后的数据就是数字签名;
  • 数字签名与A的原始数据一起发送给验证签名的任何一方。

(3)验证流程

  • 签名的验证方,一定要持有发送方A的非对称密钥对的公钥;
  • 在接收到数字签名与A的原始数据后,首先使用公钥,对数字签名进行解密,得到原始摘要值;
  • 对A的原始数据通过同样的哈希算法计算摘要值,进而比对解密得到的摘要值,与重新计算的摘要值是否相同,如果相同则签名验证通过。

3、区块链中的使用

区块链网络中,每个节点都拥有一份公私钥对。节点发送交易时,先利用自己的私钥对交易内容进行签名,并将签名附加在交易中。其他节点收到广播消息后,首先对交易中附加的数字签名进行验证,完成消息完整性校验及消息发送者身份合法性校验后,该交易才会触发后续处理流程。

三、智能合约

1、概念

1995年,跨领域学者 Nick Szabo就提出了智能合约的概念,他对智能合约的定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”

智能合约是一种在满足一定条件时,就自动执行的计算机程序。例如自动售货机,就可以视为一个智能合约系统。客户需要选择商品,并完成支付,这两个条件都满足后售货机就会自动吐出货物。

2、原理

一个基于区块链的智能合约需要包括事务处理机制数据存储机制以及完备的状态机,用于接收和处理各种条件。

并且事务的触发、处理及数据保存都必须在链上进行。当满足触发条件后,智能合约即会根据预设逻辑,读取相应数据并进行计算,最后将计算结果永久保存在链式结构中。

参考文献

[1]华为区块链技术开发团队.区块链技术及应用.清华大学出版社

区块链:1、基础技术 哈希、数字签名、智能合约相关推荐

  1. 10本区块链热门图书(应用开发、智能合约等)免费送!

    欢迎访问网易云社区,了解更多网易技术产品运营经验. "互联网之后就是区块链时代,区块链是实现未来跟踪经济的关键技术."世界上真的存在 100% 去中心化的系统吗?区块链到底是什么? ...

  2. 区块链开发入门:基于以太坊智能合约构建 ICO DApp

    写给前端开发者的第一本区块链开发入门指南,通过从 0 到 1 实战开发一个 ICO DApp 项目(基于 V 神的 DAICO 设计思想),深入掌握区块链及以太坊技术. 为什么要选择区块链开发? 未来 ...

  3. GRE:区块链将引领传统保险走向风险智能合约的时代变革

    点击上方 "蓝色字" 可关注我们! 编辑:铅笔盒 北京时间3月28日,每月两次的行业盛会[ ICT创新创业"深度脑洞聚会"]在上海举行,目前已举办235期.历时 ...

  4. 区块链学习(8) EOS环境安装和智能合约部署实战(绝对干货!)

    硬件配置 操作系统要求 1. Amazon 2017.09 and higher 2. Centos 7 3. Fedora 25 and higher (Fedora 27 recommended) ...

  5. 【问链财经-区块链基础知识系列】 第二十二课 贸易金融区块链平台的技术机理与现实意义

    简介:贸易金融区块链平台的技术机理.模式.优势与现实意义都有哪些?对湾区贸易金融区块链平台的未来建设有何展望?本文将进行详述. 小微企业贡献了我国60%以上的GDP.50%以上的税收以及80%的城镇就 ...

  6. 《区块链原理与技术》学习笔记(六) — 区块链安全

    <区块链原理与技术>学习笔记 第六部分 四.区块链网络层 1. 网络层安全 1.1 分布式拒绝服务攻击(DDos) 1.2 延展性攻击 1.3 日蚀攻击 1.4 分割攻击 1.5 延迟攻击 ...

  7. 区块链基本原理及其技术实现 - 姜家志 | JTalk 第五期

    编者按:本文系比特大陆的姜家志讲师,在掘金技术社区主办的<给开发者的区块链技术指南 | JTalk 掘金线下活动第五期> 活动上的分享整理.掘金 JTalk 目前已举办5期,每期 JTal ...

  8. 区块链扩展性技术总结

    最近在做区块链的扩展性优化方面的研究学习,总结一下当前的主流区块链扩展性技术. 1 现状 区块链技术提高了数据的安全性与可靠性,但实际使用中存在可扩展性差的显著问题,出现了很多提升区块链扩展性的方案. ...

  9. 区块链主流开源技术体系介绍

    区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种.作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想 ...

  10. 密码学系列(三):区块链+密码学基础知识

    密码学系列(三):区块链+密码学基础知识 一.区块链的概念 区块链概述 区块链的特点 区块链变化 市场现状 二.区块链政策与标准 区块链的特点与发展 三.区块链的定义 区块链的价值 四.区块链开发语言 ...

最新文章

  1. 理解java和python类变量以及类的成员变量
  2. python strip()函数
  3. python输出数据到excel-python实现数据导出到excel的示例--普通格式
  4. 《JavaScript入门经典》学习笔记1
  5. 订单不断,我是这样做的
  6. C++关键字速查手册
  7. iphone开发我的新浪微博客户端-用户登录准备篇(1.1)
  8. js的eval代码快速解密
  9. 51Nod 1109 01组成的N的倍数
  10. 光纤跳线接口_一篇文章读懂光纤接头、尾纤、耦合器、终端盒的作用与接法!...
  11. 【程序源代码】微信小程序开发视频(2021年最新版本)
  12. 台式计算机有hdmi口,我的台式电脑没有hdmi接口怎么解决
  13. bzoj2101[Usaco2010 Dec]Treasure Chest 藏宝箱*
  14. 计算机专业 中职学校顶岗实习学校总结,中职学校顶岗实习论文(2)
  15. 在跑SC-LEGO-LOAM时报错[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloude
  16. PHPexcel 导出身份证处理
  17. 【Python】函数
  18. WPS office出现“xxx.docx中发现无法读取内容,是否恢复此文档中的内容......word在试图打开文件时遇到错误” 紧急解决方案 -- 小黑日常超细解决教程
  19. rails-redis hgetall与hGetall
  20. 2018年10大最佳SDN解决方案(迄今为止)

热门文章

  1. 基于PHP的自动化售货系统(简洁优雅)
  2. 成熟可量产变频器方案,变频器生产方案, 变频器源码
  3. 据说是世界上最健康的作息
  4. 一文搞懂什么是 PostCSS
  5. c语言程序设计武汉大学出版社答案,C语言程序设计 高建华+实验与习题 刘英 武汉大学出版社...
  6. css区分ie8/ie9/ie10/ie11 chrome firefox的代码
  7. 美国历任总统的演讲视频
  8. title: 010 - Hexo配置SEO优化
  9. Live-Android,让你在桌面系统下体验Android
  10. 将JS嵌入C++ ————Spidermonkey引擎的使用