区块链的前世今生

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

比特币的底层技术:

点对点网络 时间戳 加密技术 工作量证明

可以应用到其他领域。
将这些技术提炼出来,就提出了区块链概念

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

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

应用场景:

资产:数字资产发行、支付(跨境支付)、交易、结算
记账:股权交易、供应链金融、商业积分
不可篡改:溯源、众筹、医疗证明、存在性证明
点对点:共享经济、物联网
隐私:匿名交易

比特币是什么?

比特币是数字货币,即虚拟货币(价值共识——信任),其总量是不变的,是两千一百万个,流通性好,全球无缝点到点流通直接到账

其信任从何而来?
1.财产只受自己控制
2.无通货膨胀
3.没有假钞
4.流通性好

去中心化记账系统

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

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

问题来了,如果一段时间存在节点的记账数据不一致,那么将以谁的为准呢?

这就涉及到比特币的原理

比特币的原理?

一、账本如何验证?

方案一,少数服从多数(每次验证都与千百万量的账本数据核对,这个效率是非常低下,实际上是不可行的。)

方案二,Hash函数(原始信息)=摘要信息

特点:1.同样的原始信息用同一个哈希函数总能得到同样的摘要信息
2.原始信息发生微小的变化都会导致摘要信息改变
3.摘要信息不可能推导出原始信息

对一个账本原始数据进行hash得到一个hash值,与序号、时间戳构成区块的头部,加上交易记录,就是一个区块,每10分钟更新,链接一个新区块,形成时间上的区块链。

注意:在对第二个账本进行Hash时,会传入第一个账本的Hash值,和第二个账本的原始数据一起进行Hash(就是通过这种方式将块与块相连接!)。
只要区块链中最后一个区块的hash值与其他用户储存账本均一致则是正确的,则账本是正确的

二、账户所有权问题?

现实生活中,银行账户和密码与银行存储系统匹配,就可以进行交易。如果你的银行卡和密码都给盗了,盗贼使用你的卡进行消费。我们还可以通过银行和警察叔叔的协助,确定是盗贼使用了你的卡。

但是,在比特币系统中,交易是点到点的,没有第三方

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

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

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

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

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

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

1.交易进行Hash得到交易摘要
2.用私钥对摘要进行签名

签名过程:

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

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

而最后接收到的节点又会以同样的方法进行广播,以致传递到所有节点。

验证过程:

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

签名和验证是个相反的运算,签名是个加密的过程,验证是个解密的过程而这个付款方地址就是公钥!

总之,签名过程sign{(hash(原始交易信息【包括付款方地址(公钥)】)+私钥} = 签名信息
验证过程verify{签名信息+付款方地址(公钥)} == 交易摘要 True(是私钥所有者发出,写入本用户账本并广播)

BTC系统中没有银行机制,也就是没有除私钥外对BTC所有者进行验证的方法,只有你拥有使用该地址(账户)上的BTC的私钥,才可以证明这些BTC是你的。如果没有回收机制,会有一些BTC变成幽灵币,不再参与市场,只是维持BTC总数不变。…

三、为什么记账(挖矿)?

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

记账规则:

  1. 一段时间内只有一人可以记账成功(通常是10分钟)
  2. 通过解决密码学难题(工作量证明)竞争获得唯一记账权
  3. 其他节点则只复制结果

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

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

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

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

收集广播中还没有被记录账本的交易,然后交易的有效性验证,(挖矿成功的情况下)添加一笔给自己转账的交易(挖矿奖励)

区块Hash值是16进制字符串,得到18个0的,理论上需要16的18次方次哈希运算。

18个0的计算量是非常巨大的,要非常强大的设备与消耗巨大的电力

所以现在已经没有独立的矿工进行挖矿了,因为几十年也可能挖不出一个。
因此矿工结合起来变成一个矿池,如果挖掘到比特币,按照算力来分成。
而且随着越来越多的人投入挖矿,那么计算难度必然又将加大。成本也将越来越高。最终这样作用下去,成本甚至是接近收益的。

四、共识机制

问题:如果两个节点同时(规定时间段内)完成工作量证明,使用谁的区块?

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

节点独立选择出累计工作量最大(/最长)的区块链,再以此区块链通过不断挖矿来继续延长该区块链,共识机制就是来保证此要求

由于网络的原因,出现以下情况:

  1. 有些节点收到#3458A
  2. 有些先收到#3458B
  3. 还有些同时收到#3458A和#3458B。

先收到#3458A(或B)区块的节点,以#3458A(或B)为父链,继续挖矿,但是总会收到#3458B(或A),则将3458B(或A)作为备用链,待下一工作量证明优先由哪一方完成,则这一方的区块链为累计工作量最大(最长的链 ),舍弃短链。

注意:节点有可能先收到#3479B,随后才收到#3458B,则先将前者作为孤块放入孤块池中,待收到其父块后再接收。

入门核心概念与原理 就到这告一段落

精彩内容,请关注微信公众号:大众学python

区块链技术入门——核心概念与原理相关推荐

  1. 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理

    区块链的过去与未来 密码朋克( Cypherpunk ) 维基解密的创始人阿桑奇 BT下载的作者的布莱姆-科恩 WWW的发明者蒂姆伯纳斯-李 区块链前世今生 戴伟发明了B-money,强调点对点交易和 ...

  2. 区块链技术的核心是解决生产关系的问题

    人类社会经历了三次大的技术革命. 第一次技术革命以蒸汽机的发明为主要标志: 第二次技术革命以电气化为主要标志: 第三次技术革命以微电子技术的发展和应用为主要标志. 也可以笼统地分为两个阶段:工业化和信 ...

  3. 区块链技术六大核心算法,读懂六大核心算法就变成区块链专家

    区块链技术六大核心算法,读懂六大核心算法就变成区块链专家 近日,在加密货币经历"混乱时期"后,区块链再次火爆起来,受到了各方的极大关注与重视,成为资本市场和各领域关注的焦点,就连朋 ...

  4. 区块链技术入门,涉及哪些编程语言?

    作者:Fickr Sung孫啟誠 链接:https://www.zhihu.com/question/46729645/answer/259780518 区块链学习更多的是去理解这种去中心化的思想和去 ...

  5. 深入浅出区块链 #1 入门基础概念辨析

    由公开资料搜集整理和加工形成,仅用于笔记整理,如有侵权联系删除. 区块链理论概述 什么是区块链? Blockchain 是什么?:正在兴起的交易服务平台:使用密码学算法防篡改的账簿:共享帐簿 (Sha ...

  6. 区块链技术入门 | 区块链开发技术栈

    如果你想要从事区块链行业,那么当前区块链技术开发划分必然值得一看. 大概我所了解的在区块链开发的分为区块链底层开发.区块链Dapp开发.区块链生态开发这三类. 如果想要从事与区块链底层开发,需要做以下 ...

  7. 区块链以及区块链技术入门详解

    转载自:http://blog.csdn.net/u012562943/article/details/60779241 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...

  8. 区块链以及区块链技术入门详解(1)

    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的.从经济学的角度来看,这种容错能力很强的点对点网 ...

  9. 区块链相关技术学习总结——区块链以及区块链技术入门详解

    转载自:http://blog.csdn.net/u012562943/article/details/60779241 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...

最新文章

  1. 5、Power Map—实例:填充地图
  2. MySQL服务端的登录和退出
  3. php16进制密钥签名对接支付,简单理解rsa的加密和签名-PHP实现
  4. ArcGISEngine二次开发(2):地图制图
  5. photoshop 插件_Photoshop的光度模式
  6. php元换成万元,1000元怎么换算成万元(元怎么换成万元)
  7. 微信开放平台网站应用配置
  8. ZeroC ICE之Hello World java客户端
  9. sql server 2008服务无法启动的原因和解决办法
  10. 解决Maven Not Authorized问题
  11. 技术入股创业一年,家庭收入变成负5万
  12. java 中vo、po、dto、bo、pojo、entity、mode如何区分
  13. word如何首页和目录不编辑页码
  14. Java编写生成的验证码
  15. cuDNN: efficient Primitives for Deep Learning 论文阅读笔记
  16. 网络状态码302和303的区别究竟是啥?面试官最满意这种回答
  17. 【论文笔记之 MDF】Multidelay Block Frequency Domain Adaptive Filter
  18. 一个CPP程序猿的第一篇博客
  19. REC代码及命令执行漏洞
  20. 解析C语言中数据在内存中的存储

热门文章

  1. note5 android7 快充,国行三星note5安卓7.0降级6.0刷机包
  2. 加好友饥荒服务器没有响应,饥荒TGP版常见问题解决方法 打不开礼包领不了怎么办...
  3. rockchip 设置JTAG FUC 无效 成普通io口
  4. 基于Python多元线性回归模型
  5. 用PDMReader工具生成数据库设计文档(转载)
  6. 极客网络编程学习性能篇
  7. 米OV三者结盟,只为抗衡华为Share3.0一碰传,预计8月底联盟上线
  8. Redis进阶——发布订阅详解
  9. 解决safari浏览器 100vh 问题
  10. 私域流量如何裂变?四大营销模式你必须了解