转载自简书ceido:https://www.jianshu.com/u/fcdf49ef65bb

(1)区块链前世今生

密码朋克(Cypherpunk):是一个邮件组,里面有许多大牛。

区块链不是单一的技术,而是一系列技术的集合。

简单的提一下为什么叫区块链:因为比特币系统里的数据是用一个个区块存储的,然后通过hash的方式将一个一个区块连接,形成一个区块的链条,所以叫做区块链。

(2)区块链前景:
1. 应用场景:
  • 资产:数字资产发行、支付(跨境支付)、交易、结算
  • 记账:股权交易、供应链金融、商业积分
  • 不可篡改:溯源、众筹、医疗证明、存在性证明
  • 点对点:共享经济、物联网
  • 隐私:匿名交易
2. 人才缺口巨大
(3)比特币是什么

比特币是数字货币。

货币的定义:凯恩斯《货币论》中讲到:货币是可以承载价值的一般等价物。

历史上的货币:贵金属、银票、法币等

贵金属作为货币因为本身带有价值。银票与法币就实物而言,它们本身是一张纸,没有太大的价值。因为有国家背书,它的价值来源于法律效力与人们约定而成的信任。

同样的,进一步想想,一串数字可以作为货币吗?当人们给予其一定的信任,使其产生了价值,就像当做一颗宝石一样认可它。那么一串数字也可以作为货币,我们称这样的货币为数字货币,也叫虚拟货币。

比特币就是这样一种数字货币。那么问题来了,比特币的信任是从何而来的呢,它为什么值钱?

1.财产只受自己控制:

在现实生活中,财产除了受自己控制外,还受银行的控制,比如银行认为你的财产来路不明,可以冻结你的财产。但是在比特币系统里,你的比特币只受你的私钥控制。

2.无通胀

不会因为银行发行更多的钞票而贬值。举个例子:比如你现在有100元,而全世界的总资产为1000元。那你是相当有钱了。但是如果央行再发行个1000元,那你的100元相当于贬值了一半(物以稀为贵嘛)。

而比特币的总量是固定的:2100万。比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生。去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值

3.没有假钞

任何作弊的支付,都无法得到比特币网络中其他矿工的确认。这样就无法完成支付。

4.流通性

比特币是点到点的直接到账,免去了许多中间环节。

(4)去中心化

刚才说到比特币是一种数字货币,同时也是一个去中心化记账系统。要想了解去中心化,首先先看看中心化是怎样的:

image.png

在中心化的系统里,通常有个中央的服务器,来存储所有的数据,可以理解为就是一个数据库。

而去中心化的系统,数据不再是存储在一个服务器,而是存储于比特币网络的每一个节点里。

image.png

如果把每一个节点比作一个电脑的话,记账的数据会存储在每一个人的电脑里面。

那么会引发一些问题,如果两天电脑的记账数据不一致,那么将以谁的为准呢?这就涉及到比特币的原理,原理部分包含4个小节

(5)比特币原理
1.账本如何验证?
image.png

比如现在有这么一个账本,张三想搞点小手段,偷偷的把自己余额改为了300:

image.png

那么网络中就会出现一些假数据,如何确认张三修改了数据是假的数据呢?这就是比特币账本如何验证的问题。

image.png

这也是一个方法,但是如果每次验证都与千百万量的账本数据核对,这个效率是非常低下,实际上是不可行的。

那么比特币的做法是怎样的呢?首先我们要先了解一下Hash函数:

image.png

image.png

大家做开发的时候,对MD5都很熟悉了,MD5就是一个Hash函数。MD5可以用于校验下载文件是否出错:如果文件的数据有错误,那么文件的hash值就会和网站提供的正确的hash值不一样。这样就可以确定我们下载的文件是否出错。

同样的道理可以用在比特币账本校验中,对一个账本hash之后,就可以得到一个hash值,用这个hash值代替账本原始数据来对比,这样效率会高很多。

image.png

这样的hash值与其他数据保存下来,就形成了一个区块(也叫打包、记账、挖矿):

image.png

而且我们将序号、时间戳、Hash值称为区块的头部

假如这时候来了第二个账本:

image.png

image.png

注意:在对第二个账本进行Hash时,会传入第一个账本的Hash值,和第二个账本的原始数据一起进行Hash(就是通过这种方式将块与块相连接!)。如果hash值结果是正确的,就说明传入的hash值也是正确的。这样再将第二个账本的hash传入第三个账本,这样一直传递下去,产生第四个块,第五个块,第N个块...:

通过这样的方式将区块连接起来,就形成了区块链。每个节点核对信息的时候,只需要核对最后一个区块的信息是否正确,如果最后一个区块的hash是正确的话,那么说明整个区块链的账本都是正确的,由此完成高效的验证。

2.账户所有权问题?

怎么确定一个比特币是属于谁的?首先还是看看现实中操作:平时我们在刷卡的时候,会需要两样东西:银行卡和银行卡密码。如果银行卡与密码与系统存储的结果对上了,就可以消费了。如果你的银行卡和密码都给盗了,盗贼使用你的卡进行消费。我们还可以通过银行和警察叔叔的协助,确定是盗贼使用了你的卡。

但是在比特币系统中:交易是点对点的,没有银行等第三方。

image.png

在比特币系统中,比特币账户是一个地址,谁能用这个地址进行交易,谁就拥有这个账户的所有权。

注意:地址和私钥是非对称的关系,私钥经过一系列Hash运算后得到地址。

image.png

由上可知,私钥和账户有着绝对确定的直接对应关系,而不能像银行卡那样再修改密码了。谁拥有了私钥,就相当于谁就拥有了这个账户,谁就可以用这个地址进行交易。所以私钥超重要,如果私钥泄露了,比特币就可能丢失。

所以所有权的问题就变成了在不泄露私钥的情况下,证明自己拥有某个地址的私钥。(也就是验证私钥的正确性就行了)。

(这里我是这样理解的:要想证明自己拥有私钥,就要得到别人的验证,一种方法就是:你直接把密码告诉别人,就好像你把银行密码直接告诉别人,然后说:“你看吧,这个是正确的密码,不信你输入看看,可以取款的,没骗你吧。”
当然,这是傻子才会做的事。有没有不告诉别人密码,然后又可以验证的方法呢?)

这里就用到了非对称加密技术(交易签名)

  • 交易进行hash得到交易摘要
  • 用私钥对摘要进行签名
签名过程:

首先是对原始交易信息进行hash,生成交易摘要,然后再用交易摘要和私钥进行一个签名运算。

image.png

在签名运算之后,该节点会在整个网络进行广播:广播内容为原始的交易信息(包含付款方地址)和签名信息。

image.png

而接收到的节点又会以同样的方法进行广播,以致传递到所有节点(就像洪泛法??)

验证过程:

用签名和付款方的地址进行一个验证的运算,如果结果是原始交易信息的摘要(hash值),那么说明这笔交易就是私钥所有者发出的,验证通过。这时候就会把交易的信息写入到账本。然后再次进行广播

image.png

可以看出,签名和验证是个相反的运算,签名是个加密的过程,验证是个解密的过程。我发现,原来这个付款方地址就是公钥嘛!!(视频后面也说了)这样就不用把私钥告诉别人,而是用公钥就可以验证私钥的正确性了。

               签名运算
交易摘要 + 私钥 ===> 签名验证运算
签名 + 付款方地址 ===> 交易摘要
image.png

视频后面补充了:关于隐私和安全,不打出来了。

3.为什么记账(挖矿)?

记账:Hash打包过程。在比特币的设计中,完成记账是可以获得一定比特币奖励的,所以大家将记账形象的叫做——挖矿,这个奖励其实就是比特币发行的过程。

规则:

  • 一段时间内只有一人可以记账成功(10分钟)
  • 通过解决密码学难题(即工作量证明)来竞争获得唯一的记账权
  • 其他节点只能复制记账结果了

之前说到,记账过程就是如下:

image.png

如果只是这样的运算,那么每个人都可以轻松完成,而要保证一段时间内只能有一个人记账成功,就必须要故意大大提高计算的难度。

比特币规定这个计算结果要满足以若干个0开头的要求。

image.png

这时在计算hash时,就要引入一个随机数变量,不断的去改变随机数,每个都可以得到一个新的hash值,直到找一个符合以若干个0开头的hash值。我们现在的电脑要找出4个0开头的hash,一般需要1、2分钟的时间。

比特币因为现在很多人参与挖矿,算力很强大,所以将挖矿的难度设为以18个0开头。第一找到这个hash的,就可以获得交易记录集,这个交易记录集就可以这样用:

  • 收集广播中还没有被记录账本的交易
  • 交易的有效性验证
  • 添加一笔给自己转账的交易(挖矿奖励)

这个交易记录集可以理解为通关奖励的宝箱,当然我们要的就是后面那个啦。

image.png

18个0的计算量是非常巨大的,要非常强大的设备与消耗巨大的电力(之前听说一些矿工跑到贵州等电费较低的地区挖矿,原来是这个原因,感觉这种故意要消耗巨大算力的设定很浪费啊,最终只有一人能挖到矿。机器没日没夜的跑,其他没能挖到的所有的投入都白费了,陪跑一样)。

所以现在已经没有独立的矿工进行挖矿了,因为几十年也可能挖不出一个。

而且随着越来越多的人投入挖矿,那么计算难度必然又将加大。成本也将越来越高。最终这样作用下去,成本甚至是接近收益的。

4.共识机制(这里听得不太清楚,有时间再补充了)

如果两个节点同时完成工作量证明,使用谁的区块?无仲裁机构裁决,而且都说用我的区块。

为什么要遵守协议:节点工作量只有在其他的节点认同其是有效的。

image.png

image.png

image.png

转载于:https://www.cnblogs.com/yawenw/p/10713637.html

区块链技术核心概念与原理讲解-Tiny熊相关推荐

  1. 区块链笔记 - 《区块链技术核心概念与原理讲解》

    说明:笔记内容来源于慕课网<区块链技术核心概念与原理讲解>视频课程.如有侵权,请联系删除. 目录 1.区块链前世今生 2.区块链前景 3.比特币是什么 4.比特币原理 4.1 账本如何验证 ...

  2. 区块链技术核心概念与原理

    第一章 区块链技术入门 1.1区块链前世今生 1.1.1 密码朋克(Cypherpunk) 邮件组: 密码 数学 计算机技术 等 wiki解密创始人: 阿桑奇 BT下载作者     : 布莱姆-科恩 ...

  3. 区块链入门与去中心化应用实战 之一 第3章 区块链技术核心原理实现

    第3章 区块链技术核心原理实现 建立项目,确定区块结构 实现区块类结构-添加交易 实现创建区块 实现工作量证明 添加节点通信功能 交易接口实现 挖矿接口实现 实现注册节点 实现共识机制

  4. 区块链技术研究综述:原理、进展与应用

    来源:区块链技术研究综述:原理.进展与应用     期刊:通信学报. #blockchain 相当于对区块链先进行一个系统的了解吧 区块链的层次化技术结构. #未解决的问题 上述文 献虽 然归纳得较为 ...

  5. 区块链学习 | 区块链的核心概念

    想要学习区块链的相关知识,区块链的核心概念--区块.哈希算法.公钥和私钥.时间戳等是必须要弄懂的.区块链由多个相连的区块构成,所以我们先从了解区块的概念开始! 一.区块 区块的结构图 先看上面的区块的 ...

  6. BlockChain:区块链技术基础概念综合理解——个人总结

    BlockChain:区块链技术基础概念综合理解--个人总结 目录 区块链的进阶与意义 1.区块链技术的进阶 2.区块链技术三大意义-传递价值.建立可信用环境.提高效率和降低成本 1.传递价值 2.建 ...

  7. BlockChain:区块链技术周边概念(Relevant Concepts of BlockChain)简介、入门、使用之详细攻略

    BlockChain:区块链技术周边概念(Relevant Concepts of BlockChain)简介.入门.使用之详细攻略 目录 设计思路 Relevant Concepts of Bloc ...

  8. 区块链技术的概念及作用

    区块链的概念 区块链(blockchain)是一种分布式数据库. 区块链的作用 区块链降低了经济系统运行的不确定性.区块链在交易中实现的功能包括: 1.身份管理 区块链可以管理市场行为人的身份,在用户 ...

  9. 区块链 技术 基本概念

    1.区块链 区块链(Blockchain)最早在 2008 年被提出,本质上是一 个去中心化的分布式账本(Distributed Ledger)技术. 交易(Transaction):指使区块链分布式 ...

最新文章

  1. 【翻译】Oracle不同版本之间Export Import的兼容性矩阵
  2. 七大排序算法的个人总结(三)
  3. linux nfs 多个ip,Linux – NFS (IPv6)
  4. 【渝粤教育】电大中专新媒体营销实务 (13)作业 题库
  5. 走进中国移动(宁夏)数据中心,感受不一样的运营商情怀
  6. 没事研究下C#虚拟光驱,有所收获!
  7. (计算机组成原理)第二章数据的表示和运算-第二节8:数据的存储和排列
  8. 关于c语言循环的格式,关于for循环的格式
  9. vue 项目中当访问路由不存在的时候默认访问404页面
  10. 关于printk显示问题(转)
  11. 别让小小的“短信验证码”毁了用户体验
  12. 5分钟快速了解微信小程序如何获取收货地址,耶稣也拦不住,我说的!!!
  13. Orcad allegro 安装补丁
  14. php u8t canonical,php – configure:error:utf8_mime2text()具有新的签名,但U8T_CANONICAL缺少...
  15. Photoshop---PS2017软件安装与破解
  16. java graphics2d renderinghints_java - Graphics2D错误 - 堆栈内存溢出
  17. 鱼鹰软件签约知名创意活动公司HOFO公关
  18. Python文本分析-常用中文停用词表(Chinese Stop Words)
  19. 无线标准802.11ac 和 802.11ax到底有什么区别?哪个更快?
  20. html 卡片布局 怎么,卡片式格局(CardLayout)

热门文章

  1. 【点阵液晶编程连载三/B】点阵LCD 的驱动与显控
  2. 去百度/阿里/腾讯…做测试的,都是什么样的人?
  3. 图解后缀表达式的计算过程
  4. 上海地图全图可放大_好书·推荐丨第一次将近代上海行号与地图合并在路图中,你知道是哪本书吗?...
  5. linux中权限的介绍,Linux文件权限的入门介绍
  6. python tkinter库四则运算_python tkinter 编写心理学试验程序干扰任务之四则运算 psychopy...
  7. 【Kafka】kafka方式消息不丢失的一些参数设置
  8. 【FLink】Flink exactly once 每次都是产生一个新的生产者吗?
  9. 75-100-020-测试-MySQL 单表优化案例
  10. 【Nacos】Nacos MySQL 配置后无法登录 愚蠢的问题