申明:本系列文章皆是关于《区块链开发指南》一书的摘选与总结,希望能够普及区块链技术,推动区块链行业的健康发展。

2008年底,中本聪在他的论文中提出一个点对点电子支付系统的构想,并于2009年实现了比特币系统的原型。这个系统可以使地球上的任何人通过互联网以极致的效率进行货币的交换和价值的传递,无需任何第三方机构。而比特币也没有发明任何新的技术或者算法,其中涉及的技术如POW、公钥系统、数字签名等都是已经成熟的技术。神奇的是,中本聪通过对这几项技术的组合解决了无需可信第三方的数字资产所有权问题。从广义上来讲,这些技术和思想的集合也就是今天我们讨论的区块链。

区块链究竟是什么?

狭义的说,区块链就是比特币的底层技术;不过经过七年的发展,区块链已经不再“依附于”比特币,而是独立地发展成为了一种革命性技术,比特币则是区块链最成功的应用。从技术层面来看,区块链是一个基于共识机制、去中心化的公开数据库。共识机制是指在分布式系统中保证数据一致性的算法;去中心化是指参与区块链所有的节点都是权利对等的,所有人都可以平等的参与区块链网络;公开数据库是指所有人都可以在任何时候查看区块链上保存的数据信息。基于以上特性,可以总结出:区块链由许多对等的节点组成,通过共识算法保证区块数据和交易数据的一致性,从而形成一个统一的分布式账本。

从价值层面来看,区块链是一个价值互联网,用于传递价值。目前的互联网仅用来传递消息,但是还不能用来可靠的传递价值;而区块链却可以用来在世界范围内自由传递价值,并且还能够保证不被双花、不被冒用。从这个角度说,区块链是记录价值、传递消息和价值本身转移的一个可信账本。

从区块链的发展路线来看,创新点主要集中在共识机制、智能合约、隐私安全和可扩展性上。

共识机制(Consensus)

中本聪在提出工作量证明(POW)机制作为比特币的共识算法之后,有一部分人认为这个算法过于消耗资源,于是就有了Sunny King设计的股权证明(POS)机制,后续又发展到Bitshares改进的股份授权证明(DPOS),并衍生出了更多的类POS机制。从公有链的角度来看,共识算法就是公平和效率孰轻孰重的决策,关键在于如何从社会学、从人性化的角度去设计奖励机制。而另一个领域,金融机构的关注点在于效率、不可篡改性以及对应用的支持,由于不需要链上的代币作为奖励,因而PBFT、PAXOS、RAFT等传统的分布式一致性算法成为首选。由此区块链也就分为了两种:公有链和联盟链。公有链任何人都可以参与决策、查看交易信息等;而联盟链则设置了访问权限,用户也大多是机构或者公司,需要区块链契合自身的业务模式。

智能合约(Smart Contract)

对智能合约的探索是出于对比特币中低效的脚本系统的不满,该脚本使用的是非图灵完备的堆栈语言(FORTH),并且只能实现有限的功能。一些智能合约研究者一直追求在区块链上运行强大的机器语言,让每个用户都能见证其运行的过程和结果,实现“程序即规则”(Code is Law)的智能环境。从图灵完备的以太坊EVM、超级帐本ChainCode到Chain平台的ChainCore,研究者的目标是在有限的存储空间中设计一个完备合约语言和高效的底层虚拟机,甚至将传统开发语言(c++、java等)移植到区块链上。

隐私安全(Privacy)

区块链中的个人隐私保护是强需求,特别是金融机构要使用的区块链,保护客户隐私是基本的合规条件;但同时还不能产生绝对的隐私,必须要让监管者知道交易内容。公有链中,ZCASH使用了零知识证明来隐藏交易双方在区块链中的信息;门罗币(Monero)使用了环签名和隐蔽地址技术来保护交易接收者的身份以及避免交易追踪。联盟链中则主要采用数字证书来认证用户,隔绝一切非相关用户的访问。在增强隐私保护的同时必然要牺牲系统的性能,而用户的隐私又是必须的,所以这两者之间的平衡也是值得关注的问题。

可扩展性(Scalability)

区块链上的数据膨胀问题是一直以来备受关注的问题,可扩展性要解决的是如何尽可能高效的存储不可篡改的区块链数据,目前主要有一下两种方案:

  • 从交易层把部分交易迁移到子区块链上运行,即侧链、闪电网络。
  • 从减少存储上着手,对原始数据进行裁剪分片,研究更安全的轻量级客户端,只存储少量数据也能正常工作。

【区块链开发指南】序言相关推荐

  1. 《区块链开发指南》一一导读

    前 言 Preface 比特币于2009年诞生,在很长一段时间内,人们只知比特币,不知区块链.从2015年开始,区块链像狂风一样席卷全球,倍受金融界和科技界的关注:2015年年底,区块链技术逐渐得到国 ...

  2. 003《区块链开发指南》一一1.2 区块和区块链 转

    摘要:             本节书摘来自华章计算机<区块链开发指南>一书中的第1章,第1.2节,作者:申屠青春 主编 宋 波 张 鹏 汪晓明 季宙栋 左川民 编著更多章节内容可以访问云 ...

  3. 区块链开发指南_区块链开发权威指南

    区块链开发指南 by Haseeb Qureshi 由Haseeb Qureshi 区块链开发权威指南 (The authoritative guide to blockchain developme ...

  4. 【翻译】How To Become A Blockchain Developer: Crash Course! 区块链开发指南!

    为什么80%的码农都做不了架构师?>>>    In this guide, we are going to map out your journey for becoming a ...

  5. aelf区块链开发指南(一) | 如何将以太坊合约转为aelf合约?

    2021年12月12日,aelf元宇宙黑客马拉松正式开启,为帮助更多的开发者快速加入aelf生态,开发更多创新项目,aelf特别开放黑客马拉松开发指南系列课程. 在本期aelf区块链开发指南中,ael ...

  6. 区块链开发指南_区块链开发完全指南

    区块链将是技术的发展方向. 我认为未来将围绕区块链一新兴技术构建,这绝不是什么牵强附会.区块链最初被设计成一种公共的,无权限的技术,后来引入了另一种区块链,每种区块链都有自己独特的用例集.公共/无权限 ...

  7. 区块链开发指南_区块链钱包开发

    开发钱包之前,我们需要有以下的预备知识. 第一,什么是钱包,以及相关的分类. 本文站在开发者的角度,给读者讲解下怎么样和钱包进行交互,以及如何开发一个钱包. 我们怎么样理解钱包呢?简单讲它是连接区块链 ...

  8. 区块链开发指南_区块链软件开发详解

    开发业务层区块链应用 Hyperledger fabric目前支持java,nodejs,go和python语言的sdk,供用户选择用不同的语言开发上层应用,使用相应的sdk调用部署在区块链上的链码. ...

  9. 《区块链开发指南》一一第1章 区块链基础

    第1章 区块链基础 区块链究竟是什么?狭义地说,区块链就是比特币的底层技术:不过,经过7年的发展,区块链已经不再"依附于"比特币,而是独立地发展成为了一种革命性的技术,比特币则是区 ...

  10. 【区块链开发指南】区块链基础之区块和交易

    在区块链网络当中,所有的数据都以区块的形式记录在各个节点上.而每个区块又以单独的文件保存在节点本地磁盘上,在比特币(Linux系统)中所有的区块信息都保存在~/.bitcoin/blocks/目录下面 ...

最新文章

  1. python的这几个小功能,你都会用了吗?
  2. 机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD)
  3. Lock/Unlock Account - Active Directory
  4. 在网页中使用for (flask框架)
  5. mongodb 按配置文件mongodb.conf启动
  6. 使用kuberbuilder创建工程示例
  7. Beaglebone Black USB联机
  8. 如何用原型体现你的专业度?
  9. 源码编译打包_Atlas 2.1.0 实践(1)—— 编译Atlas
  10. 西门子for循环例子_理解JavaScript中的循环缺陷和迭代协议
  11. static 和 visibility hidden 的区别
  12. 剑指 Offer II 108. 单词演变
  13. linux 线程同步与互斥:互斥锁 多线程访问共享资源时,使用互斥锁进行控制
  14. windows编程_WIN32_WINNT, _WIN32_IE,WINVER,_WIN32_WINDOWS(版本)的定义与取值
  15. 盘点时间管理方面的一些方法及工具
  16. 重庆市打造集感知、分析、指挥“五位一体”的智慧城管系统
  17. 操作系统 | Linux基础教程
  18. 网络安全状况分析报告-2019年5月
  19. 怎样才能成为一名合格的数据分析师?
  20. 网页版Instagram如何发照片

热门文章

  1. 淘宝客返利网的实现方法
  2. 中国新药研发方向与国外存在较大差异
  3. 移动硬盘打不开提示格式化怎么办?
  4. appstore ip地址
  5. 【渝粤教育】电大中专学前教育学_1作业 题库
  6. 共享打印机显示计算机权限,Win7共享打印机无法访问:您没有权限访问怎么办?
  7. php分页类 seo,laravel 分页seo浅谈
  8. Magicodes.IE在.NET Core中通过请求头导出多种格式文件
  9. redis集群scan_RedisCluster的scan命令
  10. 【verbs】ibv_get_device_name()|ibv_get_device_list()