区块链是一种新型去中心化协议,能安全地存储比特币交易或其它数据,信息不可伪造和篡改,可以自动执行智能合约,无需任何中心化机构的审核。交易既可以是比特币这样的数字货币,也可以是债权、股权、版权等数字资产,区块链技术解决了拜占庭将军问题,大大降低了现实经济的信任成本与会计成本,重新定义了互联网时代的产权制度。

目录

在ETH网络上发布代币智能合约

区块的基本结构

去中心化与点对点网络

数据的不可修改性

共识机制

双重花费和拜占庭将军问题

隐私保护

全文小结


在ETH网络上发布代币智能合约

以太坊官方开发文档:首页 | ethereum.org/zh/
以太坊小游戏代码学习:#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies

区块的基本结构

区块的结构并不复杂,包含了一些字段,整体上看一个区块的结构类似于双向链表中的节点。可以先直观的感受比特币系统中第505156个区块的头信息。

  这些字段相当一部分可以通过字面意思来理解,对于较为重要的字段进行一一列举。

  • Number Of Transactions:此区块中所包含的交易数量,网页下方显示了846个交易的详细信息,也称为区块体
  • Difficulty:难度系数,为了控制区块产生的速度,难度系数代表当前区块产生的难度
  • Version:区块链的版本
  • Nonce:工作量,在当前难度系数下计算了1683386125次才生成了此区块
  • Hash:此区块的Hash签名,唯一且不可更改
  • Previous Block:前一个区块的Hash签名,有且只有一个
  • Next Block(s):后一个区块的Hash签名,可以有多个(区块链存在分叉的情况)
  • Merkle Root:默克尔树根,默克尔树是存储交易签名的数据结构,在Git中也有应用

  这些关键字段的正确维护是区块链实现的基础,也是区块链去中心化,解决双花和拜占庭将军问题的基本结构。有了关键的数据结构,还需要相辅相成的规则和算法才能运行起来。理清楚整个流程之后再回过头看区块结构就能一目了然了。

  通过结构的观察可以得出结论:

  • 一个区块写入后Hash唯一且不可更改,除非把整个区块链中所有区块的Hash,Previous Block,Next Block(s)全部做相应更改
  • 一个区块的内容更改后Hash随之更改

去中心化与点对点网络

去中心化是区块链的核心思想,这也是与其他分布式产品的最大区别,去中心化保证了公平性和安全性。点对点网络就是在去中心化的框架下的互联网,类比现实社会,当今的社会制度就是中心化的,国家的中心是政府,金融系统的中心是央行。假如政府腐败、央行作弊,那么整个社会就无公平可言,所有的数据也是不可信任的。也许去中心化也是人类社会制度发展的终极目标。只要拥有一台电脑就能加入点对点网络成为一个节点,每个节点都能拥有整个区块链的信息(目前达到了上百GB),而且在不断的更新和同步。每一个区块的写入都会广播到整个网络。点对点网络中每个点拥有相同的权利和义务,都是对等的,以CPU作为算力单位每个点都可以参与投票、计算和打包数据,也拥有同步区块信息的权利。

数据的不可修改性

 在区块的基本结构中得出了区块内容一旦写入则不可修改的结论。原因非常容易理解,首先一个区块的通过Hash=SHA256(区块头)得出,因此每个区块的Hash都是唯一的。并且区块头中包含Merkle Root字段,区块体中的交易数据存储在默克尔树的叶子节点中,因此Merkle Root可以看做是此区块体中所有交易数据的唯一签名。基于以上事实,不管是对交易数据的修改还是对区块元信息的修改都会导致区块的Hash字段改变,由于除了第一个个最后一个区块外所有节点同时具有Previous Block,Next Block(s)字段,会引起连锁反应。修改一个区块数据的代价是要修改区块链中所有区块的Hash、Previous Block,Next Block(s)字段为相应值。如果不是同时拥有全网一半以上的算力是不可能做到的。因此可以说区块数据一旦写入区块链就是永久写入不可修改。这也保证了数据的安全性和可信任度。

共识机制

 共识机制是区块链中最重要的特点,共识是指对区块数据的认同,也可以看做是投票。只有点对点网络中半数以上的都认为区块数据是真实可靠的才能达成共识。目前有几种主要的共识机制:工作量证明(PoW)、权益证明机制(PoS)、授权股权证明机制(DPOS)和拜占庭共识算法(PBFT)。其中工作量证明是比特币采用的机制。在比特币中工作量证明就是所谓的“挖矿”。

  由于每个节点都要去同步最新的区块链数据,所以区块产生的速度不能太快,不然大部分节点根本来不及同步。中本聪为此设计了难度系数调节机制,在区块结构中维护了Nonce和Difficulty两个字段,分别代表计算的次数和难度系数,区块产生设计速度是每10min产生一个,随着算力的提高,这个速度可能会加快,如果区块的产生速度大于设计速度那么下一个区块的难度系数就会增加。因此可以保证区块的产生时间间隔围绕在10min左右。所以在比特币中随着时间推移挖矿会越来越难。

  如果有两个区块同时加入区块链,那么区块链就会分叉。哪一个分支长度先达到6个就会把哪一个当做主干,确认交易,另一个分支就会被抛弃(选中大多数节点的共识)。因此确认一次交易的时间要1个小时左右。

双重花费和拜占庭将军问题

 双重花费是指把同一笔资产花费到两个不同的交易中,例如,节点A一共有1个比特币,节点A几乎同时提交了两个交易:向节点B支付1个比特币,向节点C支付一个比特币。在交易记录之前这两笔交易可能都是合法的,可能会有不同的节点将其记录到区块中,如果同时产生了两个区块,那么就按照工作量证明的共识机制来选择。区块链不通过第三方也可以解决双花问题。

  拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗?这就是著名的拜占庭将军问题。

  拜占庭将军问题再区块链中的描述应该是,在不知道具体的诚实节点的情况下怎么能够达到共识,在区块链中使用主流的共识机制(工作量证明(PoW)、权益证明机制(PoS)、授权股权证明机制(DPOS)和拜占庭共识算法(PBFT))就可以解决拜占庭将军问题。

隐私保护

由于在区块链中,所有节点都由全网唯一的SHA256签名代表,这个签名也不能被反向推出信息,因此即使签名在全网广播也不能得到某个节点的信息。基于这一点在所有交易中节点都相当于是匿名的,很好的保护了用户的隐私。但这也是编写勒索软件的黑客们常用的勒索支付方式。

基于以上对区块链的理解,可以得出结论,区块链技术是去中心化的,区块的结构特点可以很好的保证数据的安全和节点之间的公平性,也可以利用共识机制来解决双花和拜占庭将军等类似问题,比特币的发展也体现出了对区块链价值的认同。但为了实现这些特点,也付出了不小的时间和空间成本:每个节点都需要实时同步整个区块链信息(目前已经达到上百GB);每个区块的容量有限;平均每10min才能生成一个区块,每小时才能确认一次交易,交易处理速度目前来看是远远不够的。

  到目前为止区块链的应用场景非常有限,在目前的技术水平下成熟的尝试还局限在金融货币领域。判断区块链是否能运用到某一个领域只需要判断三点即可:不需要管理中心,不要求数据的实时性,付出的成本小于收益。现在看来区块链带来的改变虽然不足以和人工智能相提并论,但区块链的思想非常值得去研究和参考。

  从技术的角度看,任何一个新技术都不是凭空产生的,一定是在已有的技术基础上加以改进和创新得来的。区块链也不例外,如果你对分布式计算(分布式事务,Paxos算法等)和密码学(对称加密,非对称加密,数字签名)稍微有一些了解的话研究区块链时就会非常轻松,区块链和Git的实现也有一些相似的地方(比如都使用了默克尔树

全文小结

基于以上对区块链的理解,可以得出结论,区块链技术是去中心化的,区块的结构特点可以很好的保证数据的安全和节点之间的公平性,也可以利用共识机制来解决双花和拜占庭将军等类似问题,比特币的发展也体现出了对区块链价值的认同。但为了实现这些特点,也付出了不小的时间和空间成本:每个节点都需要实时同步整个区块链信息(目前已经达到上百GB);每个区块的容量有限;平均每10min才能生成一个区块,每小时才能确认一次交易,交易处理速度目前来看是远远不够的。

  到目前为止区块链的应用场景非常有限,在目前的技术水平下成熟的尝试还局限在金融货币领域。判断区块链是否能运用到某一个领域只需要判断三点即可:不需要管理中心,不要求数据的实时性,付出的成本小于收益。现在看来区块链带来的改变虽然不足以和人工智能相提并论,但区块链的思想非常值得去研究和参考。

  从技术的角度看,任何一个新技术都不是凭空产生的,一定是在已有的技术基础上加以改进和创新得来的。区块链也不例外,如果你对分布式计算(分布式事务,Paxos算法等)和密码学(对称加密,非对称加密,数字签名)稍微有一些了解的话研究区块链时就会非常轻松,区块链和Git的实现也有一些相似的地方(比如都使用了默克尔树)。

引用别人的文章,其目的是用以说明自己的观点 如有侵权随时删除

5分钟看懂区块链-区块链技术最最最好使用技巧相关推荐

  1. 智能网联技术 英文_五分钟看懂通用V2V智能网联技术

    随着汽车科技的不断发展,汽车也变得越来越智能了.一系列的辅助驾驶系统.主动安全系统的涌现为驾驶者驾驶车辆提供了安全保障.人与车的互动我们是司空见惯了,而如今出现一种新型V2V通讯技术能够让相互靠近的汽 ...

  2. 量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法

    原标题:漫画 | 10分钟看懂量子比特.量子计算和量子算法 请做好准备,即将进入烧脑模式! 宏观世界的生活经验很多都是表象.比如,你可能认为世界的运行是确定的.可预测的:一个物体不可能同时处于两个相互 ...

  3. java和python的web自动化有什么区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  4. python和java一样吗-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  5. 图像拾取点_10分钟看懂Photoshop 照片修饰(用“消失点”滤镜编辑照片)

    "消失点"滤镜具有特殊的功能,它可以在包含透视平面(如建筑物侧面或热和矩形对象)的图像中进行透视校正.在应用诸如绘画.仿制.拷贝或粘贴,以及变换等编辑操作时,Photoshop可以 ...

  6. 怎么看到方法内引用方法的注释_网页内文字无法复制怎么办?一分钟看懂这些方法,让你随意复制...

    网页内文字无法复制怎么办?一分钟看懂这些方法,让你随意复制 现在的生活中,无论你是一名上班族还是学生或者什么职业,遇到不会的问题,总是需要上网查资料,找到某些好用的资料,却因为某些原因需要付费才能复制 ...

  7. 三相逆变器双pi控制器参数如何调节_一分钟看懂维也纳三相整流器

    欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 1105621549 高可靠新能源行业顶尖自媒体 在这里有电力电子.新能源干货.行业发展趋势分析.最新产品介绍.众多技术达人与您分享经验,欢 ...

  8. 一分钟看懂mysql_冬天发财树“最怕”它,遇上就烂根,一分钟看懂就能养好

    冬天发财树"最怕"它,遇上就烂根,一分钟看懂就能养好 在平时养殖一些花花草草的时候,经常会遇到植物烂根黄叶的情况,有些花友把花卉盆栽买回家没有多久,植株已经出现了烂根.黄叶,最后剩 ...

  9. python和java的区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  10. 危骆邦油邦快讯|一分钟看懂山东地炼成品油报价

        昨日山东地炼汽柴油价格以下调为主,汽油主流跌幅在80-160元/吨,柴油主流跌幅在70-120元/吨.预计今日山东地炼汽柴油价格继续稳中下调,累计调价幅度或在20元/吨-100元/吨. 昨天7 ...

最新文章

  1. g++报错解决:error: ‘setw’ is not a member of ‘std’
  2. NUC1312 Sum【水题+数学题】
  3. python处理数据的优势-Python的优势及应用领域
  4. 牛客小白月赛16练习
  5. python 股票自动交易从零开始_Python股票自动交易从零开始
  6. 你不知道的 Chrome DevTools 玩法
  7. ICLR 2020 | Bengio 一作论文:因果机制、元学习与模型泛化如何产生关联?
  8. Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第5回(错不了专辑)
  9. 无意间发现我的博客园的年龄有11年了
  10. 第26条:优先考虑泛型
  11. 快速入门学习数字图像处理(冈萨雷斯第三版)
  12. 网上十大经典黑客软件大曝光(转)
  13. 搭建单节点ELK日志收集
  14. 苹果手机怎么设置新的id
  15. python爬虫爬取链家二手房信息
  16. 微信二维码没有扫描id
  17. linux下安装python3出现无configure_Linux下安装Python3.9.0
  18. instanceof有什么作用
  19. Spring 框架远程代码执行漏洞(CVE-2022-22965)
  20. 最详细的开源监控系统对比分析!建议收藏

热门文章

  1. 【第十届“泰迪杯”数据挖掘挑战赛】B题:电力系统负荷预测分析 31页省一等奖论文及代码
  2. matlab 保存色图,如何在matlab中制作“色图”图?
  3. centos 安装惠普打印机驱动
  4. 百度api智能识别图片
  5. [转载]互联网Offer选择恐惧症
  6. AES128加密解密
  7. git 文件夹不显示红色图标和绿色图标的问题
  8. asp.net的日历
  9. 计算机科学与技术毕业要掌握,2020版计算机科学与技术专业(卓越工程师)培养目标与毕业要求...
  10. 电脑端(PC)按键精灵——2.键盘命令和鼠标命令