链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。

wikipedia 给出的定义为:

A blockchain —originally, block chain —is a distributed database that maintains a continuously-growing list of data records hardened against tampering and revision. It consists of data structure blocks—which hold exclusively data in initial blockchain implementations, and both data and programs in some of the more recent implementations—with each block holding batches of individual transactions and the results of any blockchain executables. Each block contains a timestamp and information linking it to a previous block.

最早区块链技术出现在比特币项目。作为比特币背后的分布式记账平台,区块链在无集中式监管的情况下,稳定运行了近八年时间,支持了海量的交易记录,并未出现严重的漏洞。

注:比特币历史上唯一已知的漏洞事件曾导致比特币的恶意增发,但问题很快被发现并修正,相关非法交易被撤销。

公认的最早关于区块链的描述性文献是中本聪所撰写的 比特币:一种点对点的电子现金系统,但该文献重点在于讨论比特币系统,实际上并没有明确提出区块链的定义和概念。在其中,区块链被描述为用于记录比特币交易的账目历史。

图 1.2.3.1 - 古老的账本

记账技术历史悠久,现代复式记账系统(Double Entry Bookkeeping)是由意大利数学家卢卡·帕西奥利,1494 年在《Summa de arithmetica, geometrica, proportioni et proportionalità》一书中最早制定。复式记账法将对账验证功能引入记账过程,提升了记账的可靠性。从这个角度来看,区块链是首个自带对账功能的数字记账技术实现。

更广泛意义地看,区块链属于一种去中心化的记录技术。参与到系统上的节点,可能不属于同一组织,彼此互不信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。

跟传统的数据库技术相比,其特点应该包括:

维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;
去中心化,或者说多中心化,无集中的控制,实现上尽量分布式;
可以通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。
更进一步的,还可以将智能合约跟区块链结合到一起,让其提供除了交易功能外更灵活的合约功能,执行更为复杂的操作(实际上,比特币区块链已经支持简单的脚本计算)。这样扩展之后的区块链,已经超越了单纯数据记录的功能了,实际上带有点“普适计算”的意味了。

从技术特点上,可以看到现在区块链技术的三种典型应用场景:

定位

功能

智能合约

一致性

权限

类型

性能

代表

公信的数字货币

记账功能

不带有或较弱

PoW

公有链

较低

比特币

公信的交易处理

智能合约

图灵完备

PoW、PoS

公有链

受限

以太坊

带权限的交易处理

商业处理

多种语言,图灵完备

多种,可插拔

支持

联盟链

可扩展

Hyperledger

基本原理
区块链的基本原理理解起来并不难。基本概念包括:

交易:对账本状态的改变,如添加一条记录;
区块:记录一段时间内发生的交易和状态,是对当前账本状态的一次共识;
链:由一个个区块按照发生顺序串联而成,是状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,每次生成区块就是参与者对于其中包括的所有交易改变状态的结果确认。

图 1.2.3.2 - 区块链示例

在实现上,首先假设存在一个分布式的数据记录本(这方面的技术相对成熟),这个记录本只允许添加、不允许删除。其结构是一个线性的链表,由一个个“区块”串联组成,这也是其名字“区块链”的来源。新的数据要加入,必须放到一个新的区块中来加入。而这个块(以及块里的交易)是否合法,可以通过一些手段快速检验出来。维护节点都可以提议一个新的区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。

具体以比特币为例来看如何使用了区块链技术?客户端发起一项交易后,会广播到网络中并等待确认。网络中的节点会将一些等待确认的交易记录打包在一起(此外还要包括此前区块的哈希值等信息),组成一个候选区块。然后,试图找到一个 nonce 串放到区块里,使得候选区块的 hash 结果满足一定条件(比如小于某个值)。一旦算出来这个区块在格式上就合法了,就可以进行全网广播。大家拿到提案区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,被添加到链上。当然,在实现上还会有很多的细节。

比特币的这种基于算力的共识机制被称为 Proof of Work(PoW)。目前,要让 hash 结果满足一定条件并无已知的启发式算法,只能进行暴力尝试。尝试的次数越多,算出来的概率越大。通过调节对 hash 结果的限制,比特币网络控制约 10 分钟平均算出来一个合法区块。算出来的节点将得到区块中所有交易的管理费和协议固定发放的奖励费(目前是 12.5 比特币,每四年减半)。也即俗称的挖矿。

很自然会有人问,能否进行恶意操作来破坏整个区块链系统或者获取非法利益。比如不承认别人的结果,拒绝别人的交易等。实际上,因为系统中存在大量的用户,而且用户默认都只承认他看到的最长的链。只要不超过一半(概率意义上越少肯定越难)的用户协商,最终最长的链将很大概率上是合法的链,而且随着时间增加,这个概率会越大。例如,经过 6 个块后,即便有一半的节点联合起来想颠覆被确认的结果,其概率将为 ,即低于

的可能性。

注:熟悉 Git 的人,应该会赞叹两者在设计上的异曲同工之妙。

分类
根据参与者的不同,可以分为公开(Public)链、联盟(Consortium)链和私有(Private)链。

公开链,顾名思义,任何人都可以参与使用和维护,典型的如比特币区块链,信息是完全公开的。

如果引入许可机制,包括私有链和联盟链两种。

私有链,则是集中管理者进行限制,只能得到内部少数人可以使用,信息不公开。

联盟链则介于两者之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如银联组织。

目前来看,公开链将会更多的吸引社区和媒体的眼球,但更多的商业价值应该在联盟链和私有链上。

根据使用目的和场景的不同,又可以分为以数字货币为目的的货币链,以记录产权为目的的产权链,以众筹为目的的众筹链等。

区块链概况:什么是区块链相关推荐

  1. 不同类型的以太坊区块链及其部署:区块链类型:公有链,联盟链,私有链、安装部署以太坊。

    第三章 文章目录 第三章 一.区块链类型 1.公有链 2.联盟链 3.私有链 二.安装部署以太坊. 1. 安装 总结 一.区块链类型 根据区块链网络类型分类:私有链.联盟链.共有链. 1.公有链 主网 ...

  2. 都说区块链颠覆未来,区块链究竟能改变什么?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链,有时像个天使,有时像个魔鬼. 有人说它是金融泡沫,说他是彻底的庞氏骗局:有人说它能改变世界,有人认为区块链的可以 ...

  3. 区块链软件公司用区块链技能重塑科学出书社

    区块链软件公司用区块链技能重塑科学出书社 该行业现在的性质引发了影响研讨社区的几个问题:获取学术研讨的高成本.出书商而非作者具有版权.评定员缺少奖赏和认可,以及低质量期刊的众多.该行业面对的另一个主要 ...

  4. 区块链100讲:区块链中的随机数

    2019独角兽企业重金招聘Python工程师标准>>> 我们生活的环境充满了随机性.一直以来,运气,概率和命运这些概念都与随机性紧紧联系在一起.所有人类无法理解或无法预测的事物往往都 ...

  5. 【区块链与未来】区块链技术将重塑我们的世界

    [区块链与未来]区块链技术将重塑我们的世界 枯叶子 2016-09-13 17:28:25 浏览752 评论0 区块链技术 摘要: 本文是[区块链与未来]的第四篇,也是整个区块链学习的最后一篇,在本文 ...

  6. BC:带你温习并解读《腾讯区块链方案白皮书》—区块链的兴起和未来之路

    BC:带你温习并解读<腾讯区块链方案白皮书>-区块链的兴起和未来之路 目录 腾讯区块链方案白皮书-前言 区块链的兴起和未来之路 腾讯区块链方案白皮书-前言 区块链技术给数字经济时代带来了巨 ...

  7. 5分钟学会区块链 - 开发一条区块链 Develop BlockChain with Tendermint

    本文攻略:解惑区块链开发,学习 Tendermint,给自己造一条区块链 建议玩家等级:技术小白,学生党,初级码农 阅读此文先解锁技能: 一点点命令行基础 一点点 GO 基础:三天包学会 一点点区块链 ...

  8. 【区块链】GO语言区块链项目——超级账本

    区块链的应用:版权保护 区块链用于版权保护的方式: 把文章内容存在第三方数据库,用文章内容生成一个哈希,把哈希写入到区块链. 取数据的时候(需要溯源的时候),去区块链把哈希值取下来,然后用哈希寻址找到 ...

  9. 蚂蚁区块链正式升级为蚂蚁链:首次公布“日活”超1亿

    昨天,蚂蚁集团董事长井贤栋对外宣布,蚂蚁区块链正式升级为"蚂蚁链 ".据悉,蚂蚁集团从2015年开始布局区块链,坚信区块链只有与实体经济结合才能发挥最大价值 ,并持续付诸实践. 同 ...

最新文章

  1. jquery.cycle.js
  2. 对方不想和你说话 php,对方不想和你聊天的表现,遇到后赶紧放弃
  3. 系统架构面临的三大挑战,看 Kubernetes 监控如何解决?
  4. python pycharm 如何绘制类图 关系图 继承图 父子图?
  5. 怎样将WPS转换word格式?如何进行操作
  6. 太极计算机长沙,他设计了湖南最有尊严的建筑,诗意得让你想在里面加班
  7. 第94:受限玻尔兹曼机
  8. 互联网基础知识------OSI七层网络模型梗概
  9. 【BZOJ1406】【codevs2478】密码箱,数论练习
  10. kinect1+depthimage_to_laserscan
  11. 从计算机复试看中国教育——一个面试官的经历
  12. matlab进行道格拉斯筛选,柯布-道格拉斯(Cobb-Douglas)生产函数模型.doc
  13. 汽车零部件行业PLM解决方案
  14. 硬盘分区不够,怎么合并分区?
  15. LNK2001:无法解析的外部符号,LNK1120:一个无法解析的外部命令
  16. 解读周源站内信,双重上市后知乎怎么走?
  17. 有源晶振和无源晶振的比较
  18. 群签名和Go语言实现细节(BBS04--Short Group Signatures)
  19. subversion的配置与使用
  20. 分布式服务器框架之搭建C#+MongoDB+Redis初步

热门文章

  1. 复杂JSON参数传递后台处理方式
  2. android专栏目录
  3. JS删除数组指定下标并添加到数组开头
  4. MP实战系列(二)之集成swagger
  5. spring中@value注解需要注意
  6. 基于python的一个运维自动化的项目(进度更新)【已开源】
  7. Mac中将delete键定义为删除键
  8. Microsoft Web 平台安装程序 (Web PI) Microsoft Web Platform Installer
  9. 【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!...
  10. 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署