文档章节

区块链(Blockchain)简单介绍

程序员狗蛋
 程序员狗蛋
发布于 02/23 14:08
字数 3995
阅读 3927
收藏 85
点赞 3
评论 9

区块链(Blockchain)简单介绍

[TOC]

概要

​ 此项目旨在了解区块链,包括概念、原理及了解可供学习及使用的开源项目平台。此文是整合诸多前辈们的文章而来,特此声明,参考的文章链接在本文末尾。

区块链概念及原理

  • 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。

  • 区块链本质上是一种去中心化的分布式数据库。任何人只要架设自己的服务器,接入区块链网络,都可以成为这个庞大网络的一个节点。(下图引用的原文链接在文章最下方的文章中)

    区块链网络结构图

  • 区块链本质是数据库,存储的基本单元为“区块(Block)”,一个区块分为两大部分:

    1. 区块头

      区块头里面存储着区块的头信息,包含上一个区块的哈希值(PreHash),本区块体的哈希值(Hash),以及时间戳(Timestamp)等等。

    2. 区块体

      • 区块体存储着这个区块的详细数据(Data),这个数据包含若干行记录,可以是交易信息,也可以是其他某种信息。
  • 区块链就是由许许多多的区块所组成的链式结构

    • MD5是典型的哈希算法,可以把一串任意长度的明文转化成一串固定长度(128bit)的字符串,这个字符串就是哈希值。而区块链中,采用的是一种更为复杂的哈希算法,叫做SHA256。最新的数据信息经过一系列复杂的计算,最终会通过这个哈希算法转化成长度为256bit的哈希值字符串,也就是区块头当中的Hash。
    • 区块与Hash是一一对应的,Hash可以当做是区块的唯一标识。不同的区块之间依靠Hash和PreHash来关联。每一个区块的PreHash和前一个区块的Hash值是相等的。

  • 挖矿 就是计算最新数据的哈希值,生成新区块的过程。

    • 计算最新Hash值的过程并不是简单的一次运算,而是需要海量的尝试性计算。例如:Hash = SHA-256(最后一个区块的Hash + 新区块基本信息 + 交易记录信息 + 随机数) ,这里关键的计算难点在于随机数的生成。猥琐的区块链发明者为了增大Hash的计算难度,要求Hash结构前72bit必须都是0,这个几率太小。
    • 由于(最后一个区块的Hash + 新区块基本信息 + 交易记录信息)是固定的,所以能否获得符合要求的Hash,完全取决于随机数的值。挖矿者必须经过海量计算,反复生成随机数进行“撞大运”一般的尝试,才有可能得到正确的Hash,从而挖矿成功。同时,区块头内还包含着一个动态的难度系数,当全世界的硬件计算能力越来越快的时候,区块链的难度系数也会水涨船高,使得全网平均每10分钟才能产生出一个新区块。

区块链的应用

  • 区块链最著名的应用就是[比特币]
    • 比特币(BitCoin) 的概念最初由中本聪于2008年提出,而后根据这一思路设计发布了开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。什么是P2P网络呢?传统的货币都是由中央银行统一发行,所有的个人储蓄由银行统一管理,这是典型的中心化系统。而比特币则是部署在一个全世界众多对等节点组成的去中心化网络之上。每一个节点都有资格对这种数字货币进行记录和发行。
    • 基于比特币底层的数据存储,正是基于了区块链技术。比特币的每一笔交易,都对应了区块体数据中的一行,交易记录的每一行都包含时间戳、交易明细、数字签名。
    • 比特币协议规定:挖到新区块的矿工将获得奖励,从2008年起是50个比特币,然后每4年减半,目前2018年是12.5个比特币。流通中新增的比特币都是这样诞生的。

区块链的优劣

  • 优势:
    • 去中心化
      • 区块链不依赖于某个中心节点,整个系统的数据由全网所有对等节点共同维护,都可以进行数据的存储和检验。这样一来,除非攻击者黑掉全网半数以上的节点,否则整个系统是不会遭到破坏的。
    • 信息不可篡改
      • 区块内的数据是无法篡改的,一旦数据遭到篡改哪怕一点点,整个区块对应的哈希值就会随之改变,不再是一个有效的哈希值,后面链接的区块也会随之断裂。
  • 劣势:
    • 过度消耗能源
      • 想要生成一个新的区块,必须要大量服务器资源进行大量无谓的尝试性计算,严重耗费电能。
    • 信息的网络延迟
      • 以比特币为例,任何一笔交易数据都需要同步到其它所有节点,同步过程中难免会受到网络传输延时的影响,带来较长的耗时。

主流区块链技术平台(供参考)

区块链平台主要包括:比特币、以太坊、Hyperledger Fabric、Sawtooth Lake、R3 Corda、Chain、BigchainDB。开发者可以根据这些开源项目学习、使用区块链做应用。

比特币

  • 比特币作为区块链的第一个也是目前为止最成功、最重要的样板工程,已经上线运行了八年多,本身没有发生任何严重的安全和运维事故,其稳定与强悍堪称当代软件系统典范。
  • 比特币Bitcoin Core是一个代码质量高、文档良好的开源软件,从学习区块链原理、掌握核心技术的角度来说,Bitcoin Core是最佳切入点,能够学到原汁原味的区块链技术。
  • Bitcoin Core使用C++写的,而且用了一些C++11和Boost库机制。还可以对接繁荣的比特币技术社区。
  • 比特币作为一个典型的区块链1.0系统,是不是支撑其他类型区块链应用的最佳技术平台,存在争议。另外,也不是所有人都有能力和必要精通区块链底层技术,所以对于基于冲到区块链领域做事的人来说,可以直截了当的学习目标是以太坊和Hyperledger Fabric。
  • 可供参考链接:https://bitcoin.org/en/bitcoin-core/

以太坊

  • 在以太坊上面用Solidity进行的智能合约开发是切入区块链开发最简单的方式,没有之一。
  • 以太坊的理想非常宏大,由于配备了强大的图灵完备的智能合约虚拟机,因此可以成为一切区块链项目的母平台,是驮住整个区块链世界的大乌龟。在以太坊上开发一个类似比特币的加密货币,是一个不折不扣的小目标。一般有经验的开发者在文档指导下,半天到一天即可入门。问题在于,入门以后又如何?靠写Solidity是否就可以包打天下?这是大大存疑的。我们也可以反过来说,如果以太坊+Solidity是区块链的终极解决方案,那么怎么还会出现那么多区块链技术门派呢?特别是,以太坊似乎并没有给现实世界中巨型的中心化组织们留下一条活路,这种彻底不妥协的革命态度有可能也成为以太坊推广的障碍。
  • 当前以太坊项目的开发进展并不顺利。一个比较突出的问题是项目过多,力量分散,导致项目质量参差不齐。但尽管如此,跟其他区块链2.0平台相比,以太坊提供的开发环境是最简单最完善的。初学区块链的人绝对有必要学习以太坊,从而对区块链和智能合约建立起一个最“正宗”的认识。
  • 可供参考链接:https://www.ethereum.org/

Hyperledger Fabric

  • 主流区块链技术平台的第三支就是Fabric,它是Hyperledger的第一个也是最知名的孵化项目。
  • Fabric最早来自IBM的Open Blockchain项目,到2015年11月,IBM将当时已经开发完成的44,000行Go语言代码交给Linux基金会,并入Hyperledger项目之中。在2016年3月一次黑客马拉松中,Blockstream和DAH两家公司将各自的代码并入Open Blockchain,随后改名为Fabric。到目前为止,Fabric与Intel提供的Sawtooth Lake并列为Hyperledger的一级孵化项目,但前者得到的关注远超后者。
  • 从技术角度来说,Fabric思路不错,重点是满足企业商用的需求,比如解决交易量问题。众所周知,比特币最大的短板是它每秒钟7个交易的上限,完全无法满足现实需要。而Fabric目标是实现每秒钟10万交易,这个量接近刚刚过去的双十一交易量瞬时峰值,完全可以满足正常条件下的行业级应用。Fabric用Go语言开发,也提供多种语言的API。特别值得一提的是,Fabric比较充分地运用了容器技术,比如其智能合约就运行在容器当中。这也是Go语言带给Fabric的一项福利,因为Go语言静态编译部署的特征很适合开发容器中的程序。
  • Fabric还有一些特点,比如其membership服务可以设置节点准入审查,这是典型的联盟链特征。再比如其共识算法是可定制的。Fabric自带PBFT共识算法实现,但是PBFT的算法效率是O(n²),其中n是节点数量。因此PBFT用在节点数量受限的联盟链里是没有问题的,但用在公有链里效率过低。
  • Fabric的短板是体系较为复杂,虽有文档,但缺少经验的开发者学习起来障碍比较大。然而由于其定位清楚,迎合了不少企业的心态,所以已经有多家机构在基于Fabric秘密研发行业内的联盟链项目。
  • 可供参考链接:https://cn.hyperledger.org/

小众门派

上述区块链开发的三大主流平台,从活跃度、受关注和参与人数来说,远远超过其他平台。但俗话说莫欺少年穷,一些眼下还默默无闻的平台也不容忽视。

  • Sawtooth Lake:

    • Hyperledger的另一个一级孵化项目Sawtooth Lake是Intel开发的区块链平台,是一个有想法的区块链项目,设计十分精心。它以数字金融资产管理为目标,整体架构清晰,模块化程度高,因此可定制能力也强。概念上独创了“交易族(transaction family)”概念,而且还支持PoET和Quorum两种共识机制。当节点数量很多(公有链环境)时,使用第6代Intel Core CPU所提供的SGX扩展功能提供一种称为时间流逝证明(PoET)的机制来形成共识,这种机制与比特币所采用的PoW同属“抽彩票”式的共识算法,但杜绝了通过ASIC专用硬件“作弊”的可能性,排除了比特币出现的算力过于集中的隐患,可靠性由Intel CPU硬件来保障,是公有链系统里很有价值的一个共识机制。另一方面,当节点数量少且受控时,Sawtooth Lake可以采用Quorum共识机制,这是由Ripple提出并验证的共识机制,非常适合于联盟链场景,这样Sawtooth Lake就摇身一变成为很好用的联盟链了。

    • Sawtooth Lake采用Python开发,并提供了Java SDK。由于这两种语言的流行度,实际上它应该有很大的潜在开发者人群。事实上,R3 CEV曾经测试过Sawtooth Lake并进行了成功的证券交易实验。当前它主要的问题是受关注度不足,不知Intel是否有足够的耐心和毅力坚持到底。如果Intel战略更明确一些,支持力度更大一些,我建议大家可以对它投以更多的关注。

    • 可供参考链接:https://sawtooth.hyperledger.org/docs/core/releases/latest/index.html

  • Corda:

    • 是一个备受关注的分布式账本项目。 R3是由数十家银行和金融机构支持的区块链企业,融资上亿美元,号称汇集了一票高手,潜心研究符合金融行业需求的分布式账本系统。Corda是R3分布式账本系统中的核心,也正式开源。
    • Corda采用JetBrain原创的小众语言Kotlin开发,对Java世界敞开大门,这是令人点赞的。此外,Corda更重要的特色是其与现有世界里大银行、大型中心机构的全面妥协、全面合作的姿态,这与以太坊革命无罪、造反有理的形象形成鲜明对比。Corda在设计中有多项独特考虑,就是为了对接现有的业务规则。比如在其他几乎所有区块链平台里,每一个交易对于各节点来说都是可见的,可见才能验证,能验证才谈得上共识,所以交易的全网可见性是顺理成章的。但是现实世界里金融机构之间的交易,只有交易相关方才能看到交易详情,工行与建行的一笔交易,绝无必要让招行看到。为了对接这个现实,Corda设计了与众不同的机制,牺牲了交易验证的全局可见性,确保只有交易相关方才能看到和验证交易本身。可是另一方面,银行业务是被重度监管的业务,不能因为你用了区块链系统,就把洋洋洒洒的巴塞尔协议晾在一边,监管机构的职能如何体现?这是其他区块链系统里考虑不多的。而Corda设计了独特的Notary和Oracle节点,为监管体系进入留下了空间。仔细品味,这些都是给现实世界当中的大机构预留的美差。这些设计上的考虑,无疑大大增强了Corda被现有大型金融机构采纳的机会。不过这一切看上去很美好,但目前Corda的实现基本上是个花架子,设想的种种,不少处于TODO状态。
    • 参考链接:https://www.corda.net/zh-hant/
  • 另外两个值得点名的区块链门派分别是Chain和BigchainDB。前者跟Visa有合作,后者是一个基于RethinkDB开发的分布式账本,两者各有各的思路和特色,也拿到了为数可观的投资,不排除未来能有大的发展。

本文参考原文,链接如下,特此声明

如有不妥之处,欢迎批评指正,本人链接如下:

https://my.oschina.net/llzhang/blog

© 著作权归作者所有

共有 人打赏支持
程序员狗蛋
粉丝 9
博文 7
码字总数 14272
作品 0
海淀
程序员
加载中

评论(9)

程序员狗蛋
程序员狗蛋

引用来自“程序员狗蛋”的评论

引用来自“笔阁”的评论

谢谢楼主分享!推荐一个以太坊开发的入门教程给大家:

http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180315oschina

回复@笔阁 : 谢谢哦

引用来自“笔阁”的评论

你用区块链搞什么呢?
瞎搞 这搞搞 那搞搞
笔阁
笔阁

引用来自“程序员狗蛋”的评论

引用来自“笔阁”的评论

谢谢楼主分享!推荐一个以太坊开发的入门教程给大家:

http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180315oschina

回复@笔阁 : 谢谢哦
你用区块链搞什么呢?
程序员狗蛋
程序员狗蛋

引用来自“FansinZhao”的评论

Fabric容器化,还有Corda的接地气

回复@FansinZhao : :musical_note:
程序员狗蛋
程序员狗蛋

引用来自“笔阁”的评论

谢谢楼主分享!推荐一个以太坊开发的入门教程给大家:

http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180315oschina

回复@笔阁 : 谢谢哦
F
FansinZhao
Fabric容器化,还有Corda的接地气
2
2363830288

引用来自“凝小紫”的评论

正文图片不显示哦
2
2363830288

引用来自“凝小紫”的评论

正文图片不显示哦
程序员狗蛋
程序员狗蛋

引用来自“凝小紫”的评论

正文图片不显示哦
是不是在通过手机浏览器看的。我马上更新一图就可以了。
凝小紫
凝小紫
正文图片不显示哦
干货!区块链入门、进阶、行业专家观点!1000篇好文帮你破解区块链密码!(下篇)

随着区块链概念理论的不断成熟以及强劲技术的不断深耕,区块链已经成为投资圈中备受关注的热点,从区块链1.0时代落地数字货币比特币、莱特币等,打开了区块链通向新弯道的高速路口,到区块链...

山哥在这里 ⋅ 04/27 ⋅ 0

零基础学习区块链!去哪里学比较专业?

无论如何,区块链技术已经深深的进入到各个大公司的研究范围,随着更多的实力派企业投入这方面的研究,对区块链技术的人才需求会越来越大。随着市场需求的增大,区块链培训学校也随着市场产生...

qq5b07680ff309c ⋅ 06/01 ⋅ 0

演讲PPT:用Kubernetes实现Fabric区块链即服务的实践

题图摄于亚利桑那州大峡谷(Grand Canyon) 阅读导航 一、SACC2017大会演讲PPT分享: 用Kubernetes实现Fabric区块链即服务的实践 二、Blockchain on vSphere自动化部署Fabric工具介绍 上个周末...

q48s71bczbeylou9t0n ⋅ 2017/10/22 ⋅ 0

区块链入门指南(内附资料合集)

技术总是从狂热到幻灭然后逐渐开始发挥真正的效果,人工智能被抄热了,几乎每个人都听说这个词汇,可是又有多少人真正知道人工智能是什么呢? 比特币被炒火了,中本聪跑路了,诸多炒币者一夜...

fengycoder ⋅ 04/13 ⋅ 0

区块链宠物系统开发:你的游戏里宠物养成了吗?

养狗吸猫玩鸡仔,区块链游戏已经得到很多人的喜爱,并且速速占据新应用玩法的一席之地,成为吸金法宝。区块链作为新兴技术的网红选手。吸引了国内各大互联网科技巨头的入场,网易“招财猫”、...

球2954023423 ⋅ 05/23 ⋅ 0

区块链最全书单:必读这20本书

你还没搞懂什么是互联网,移动互联网起来了,你还没搞懂什么是移动互联网,人工智能起来了,你还没搞懂什么是人工智能,区块链起来了! 区块链,像互联网刚兴起时般惊世骇俗,它在以神一般的...

雪花又一年 ⋅ 04/16 ⋅ 0

blockchain in js (1) : 区块链基本原型

基本介绍 区块链是诞生于21世纪的非常革命性的技术,并且还在发展成熟当中,而且其潜力依然没有被充分挖掘。本质上区块链只是一个去中心话的数据集。但是它的特殊之处在于它不是一个私有的数...

糖酱桑 ⋅ 04/23 ⋅ 0

工信部发布区块链白皮书 众安科技旗下众安链进展明显

6 月 15 日,工业和信息化部中国电子技术标准化研究院(简称“标准院”)发布《中国区块链技术和应用发展白皮书(2018)》(下称《白皮书》)。据白皮书显示,此前工信部标准院公布的首批开源...

木子 ⋅ 06/15 ⋅ 0

开创"掘金新时代" 斐讯天天链N1玩出新花样

  【IT168 导购】对于区块链,相信很多人今年来都听说过,但真正了解区块链的人想必是少之又少,提到区块链更多的人想到的是比特币。确实,目前如果说区块链领域活的最好的好像也就是以比特...

it168网站 ⋅ 05/08 ⋅ 0

华为云发布区块链白皮书并称不碰虚拟货币

  【IT168 评论】在2018华为分析师大会(HAS2018)期间,华为云BU总裁郑叶来在云专场发布《华为区块链白皮书》。该白皮书系统的介绍了区块链的兴起、核心技术及原理机制、国内外产业发展现状...

it168网站 ⋅ 04/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vim基础-编辑模式-命令模式

编辑模式:可以编辑修改文件。编辑模式下 按“esc”键返回一般模式。 按一次“Insert”键 (一般在键盘回格键右边)作用和“i”一样表示“插入”。按两次“Insert”键表示“替换”,作用为:...

ZHENG-JY ⋅ 12分钟前 ⋅ 0

MaxCompute读取分析OSS非结构化数据的实践经验总结

摘要: 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的。此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类...

阿里云云栖社区 ⋅ 17分钟前 ⋅ 0

Linux操作系统有何优势?Linux学习

  当今世界流行的操作系统有3大类,Linux、Mac OS和Windows操作系统,Linux操作系统因其开源、免费、跨平台、良好的界面等特性,深受广大程序员们的青睐!   Linux操作系统被广泛的应用于...

老男孩Linux培训 ⋅ 19分钟前 ⋅ 0

Spring Cloud Spring Boot mybatis分布式微服务云架构 开发Web应用

静态资源访问 在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。 默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static /pub...

itcloud ⋅ 23分钟前 ⋅ 0

6月19日任务 设置更改root密码、连接mysql、mysql常用命令

13.1 设置更改root密码 1. /usr/local/mysql/bin/mysql -uroot 设置环境变量 : export PATH=$PATH:/usr/local/mysql/bin/ 永久生效: vim /etc/profile 加入 export PATH=$PATH:/usr/local/m......

吕湘颖 ⋅ 24分钟前 ⋅ 0

MaxCompute读取分析OSS非结构化数据的实践经验总结

摘要: 本文背景 很多行业的信息系统中,例如金融行业的信息系统,相当多的数据交互工作是通过传统的文本文件进行交互的。此外,很多系统的业务日志和系统日志由于各种原因并没有进入ELK之类...

猫耳m ⋅ 26分钟前 ⋅ 0

Spring MVC controller,return重定向redirect:

@RequestMapping(value="/save",method=RequestMethod.POST)public String doSave(Course course) {log.debug("Info of Course");log.debug(ReflectionToStringBuilder.toStr......

颖伙虫 ⋅ 33分钟前 ⋅ 0

JavaSE——线程介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 线程: 介绍:管线程叫多任务处理,首先你得知道...

凯哥学堂 ⋅ 37分钟前 ⋅ 0

ORM——使用spring jpa data实现逻辑删除

前言 在业务中是忌讳物理删除数据的,数据的这个对于一个IT公司可以说是最核心的资产,如果删除直接就物理删除,无疑是对核心资产的不重视,可能扯的比较远,本文最主要是想通过spring jpa ...

alexzhu592 ⋅ 43分钟前 ⋅ 0

CDN caching

Incapsula应用感知CDN使用智能分析和频率分析来动态缓存内容,并最大限度地提高效率。确保可直接从RAM获取最常访问的资源,而不依赖于较慢的访问机制。 1、 静态内容缓存 Incapsula缓存静态内...

上树的熊 ⋅ 46分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部