区块链技术入门——核心概念与原理
区块链的前世今生
密码朋克(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打包过程。在比特币的设计中,完成记账是可以获得一定比特币奖励的,所以大家将记账形象的叫做——挖矿,这个奖励其实就是比特币发行的过程。
记账规则:
- 一段时间内只有一人可以记账成功(通常是10分钟)
- 通过解决密码学难题(工作量证明)竞争获得唯一记账权
- 其他节点则只复制结果
如果只是上述的 hash打包过程,那么每个人都可以轻松完成,而要保证一段时间内只能有一个人记账成功,就必须要故意大大提高计算的难度。
比特币规定这个计算结果要满足以若干个0开头的要求。
这时在计算hash时,就要引入一个随机数变量,不断的去改变随机数,每个都可以得到一个新的hash值,直到找一个符合以若干个0开头的hash值。我们现在的电脑要找出4个0开头的hash,一般需要1、2分钟的时间。
比特币因为现在很多人参与挖矿,算力很强大,所以将挖矿的难度设为以18个0开头。第一找到这个hash的,就可以获得唯一记帐权,这个交易记录集得到的途径:
收集广播中还没有被记录账本的交易,然后交易的有效性验证,(挖矿成功的情况下)添加一笔给自己转账的交易(挖矿奖励)
区块Hash值是16进制字符串,得到18个0的,理论上需要16的18次方次哈希运算。
18个0的计算量是非常巨大的,要非常强大的设备与消耗巨大的电力
所以现在已经没有独立的矿工进行挖矿了,因为几十年也可能挖不出一个。
因此矿工结合起来变成一个矿池,如果挖掘到比特币,按照算力来分成。
而且随着越来越多的人投入挖矿,那么计算难度必然又将加大。成本也将越来越高。最终这样作用下去,成本甚至是接近收益的。
四、共识机制
问题:如果两个节点同时(规定时间段内)完成工作量证明,使用谁的区块?
为什么要遵守协议:节点工作量只有在其他的节点认同的情况下,其是有效的。
节点独立选择出累计工作量最大(/最长)的区块链,再以此区块链通过不断挖矿来继续延长该区块链,共识机制就是来保证此要求
由于网络的原因,出现以下情况:
- 有些节点收到#3458A
- 有些先收到#3458B
- 还有些同时收到#3458A和#3458B。
先收到#3458A(或B)区块的节点,以#3458A(或B)为父链,继续挖矿,但是总会收到#3458B(或A),则将3458B(或A)作为备用链,待下一工作量证明优先由哪一方完成,则这一方的区块链为累计工作量最大(最长的链 ),舍弃短链。
注意:节点有可能先收到#3479B,随后才收到#3458B,则先将前者作为孤块放入孤块池中,待收到其父块后再接收。
入门核心概念与原理 就到这告一段落
精彩内容,请关注微信公众号:大众学python
区块链技术入门——核心概念与原理相关推荐
- 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理
区块链的过去与未来 密码朋克( Cypherpunk ) 维基解密的创始人阿桑奇 BT下载的作者的布莱姆-科恩 WWW的发明者蒂姆伯纳斯-李 区块链前世今生 戴伟发明了B-money,强调点对点交易和 ...
- 区块链技术的核心是解决生产关系的问题
人类社会经历了三次大的技术革命. 第一次技术革命以蒸汽机的发明为主要标志: 第二次技术革命以电气化为主要标志: 第三次技术革命以微电子技术的发展和应用为主要标志. 也可以笼统地分为两个阶段:工业化和信 ...
- 区块链技术六大核心算法,读懂六大核心算法就变成区块链专家
区块链技术六大核心算法,读懂六大核心算法就变成区块链专家 近日,在加密货币经历"混乱时期"后,区块链再次火爆起来,受到了各方的极大关注与重视,成为资本市场和各领域关注的焦点,就连朋 ...
- 区块链技术入门,涉及哪些编程语言?
作者:Fickr Sung孫啟誠 链接:https://www.zhihu.com/question/46729645/answer/259780518 区块链学习更多的是去理解这种去中心化的思想和去 ...
- 深入浅出区块链 #1 入门基础概念辨析
由公开资料搜集整理和加工形成,仅用于笔记整理,如有侵权联系删除. 区块链理论概述 什么是区块链? Blockchain 是什么?:正在兴起的交易服务平台:使用密码学算法防篡改的账簿:共享帐簿 (Sha ...
- 区块链技术入门 | 区块链开发技术栈
如果你想要从事区块链行业,那么当前区块链技术开发划分必然值得一看. 大概我所了解的在区块链开发的分为区块链底层开发.区块链Dapp开发.区块链生态开发这三类. 如果想要从事与区块链底层开发,需要做以下 ...
- 区块链以及区块链技术入门详解
转载自:http://blog.csdn.net/u012562943/article/details/60779241 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...
- 区块链以及区块链技术入门详解(1)
区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的.从经济学的角度来看,这种容错能力很强的点对点网 ...
- 区块链相关技术学习总结——区块链以及区块链技术入门详解
转载自:http://blog.csdn.net/u012562943/article/details/60779241 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念.从技术角度来看,这 ...
最新文章
- 5、Power Map—实例:填充地图
- MySQL服务端的登录和退出
- php16进制密钥签名对接支付,简单理解rsa的加密和签名-PHP实现
- ArcGISEngine二次开发(2):地图制图
- photoshop 插件_Photoshop的光度模式
- php元换成万元,1000元怎么换算成万元(元怎么换成万元)
- 微信开放平台网站应用配置
- ZeroC ICE之Hello World java客户端
- sql server 2008服务无法启动的原因和解决办法
- 解决Maven Not Authorized问题
- 技术入股创业一年,家庭收入变成负5万
- java 中vo、po、dto、bo、pojo、entity、mode如何区分
- word如何首页和目录不编辑页码
- Java编写生成的验证码
- cuDNN: efficient Primitives for Deep Learning 论文阅读笔记
- 网络状态码302和303的区别究竟是啥?面试官最满意这种回答
- 【论文笔记之 MDF】Multidelay Block Frequency Domain Adaptive Filter
- 一个CPP程序猿的第一篇博客
- REC代码及命令执行漏洞
- 解析C语言中数据在内存中的存储
热门文章
- note5 android7 快充,国行三星note5安卓7.0降级6.0刷机包
- 加好友饥荒服务器没有响应,饥荒TGP版常见问题解决方法 打不开礼包领不了怎么办...
- rockchip 设置JTAG FUC 无效 成普通io口
- 基于Python多元线性回归模型
- 用PDMReader工具生成数据库设计文档(转载)
- 极客网络编程学习性能篇
- 米OV三者结盟,只为抗衡华为Share3.0一碰传,预计8月底联盟上线
- Redis进阶——发布订阅详解
- 解决safari浏览器 100vh 问题
- 私域流量如何裂变?四大营销模式你必须了解