当前位置: 首页 > news >正文

区块链的前世今生

就如云计算当前被人们所熟知一样,区块链将会是未来十年改变世界的技术浪潮和革命。

零、问题引入——拜占庭将军问题

分布式系统通信安全问题

拜占庭的一些将军出发攻打敌军。他们每个人手握一支军队(方便起见设为数量相等),分布在不同的地方扎营,彼此地位平等(即不存在相互命令)。现在的战况为:只有进攻敌人的将军数达到一定数量,才能战胜敌军,不然会战败。但是,由于每个将军都分布在不同的地方,通信只能靠传令兵,极为不方便。于是,每一位将军很自然地都会想这样一个问题:我如何信任传令兵发来的消息?如果他所在将军是叛徒,告诉我明天上午九点会有五位将军发动进攻,加上我六位,打赢妥妥的。结果明天上午我发动进攻时,发现只有我一个,那不是凉凉了,军队打光了要变光杆司令了。如果无法达成共识,即让所有参与进攻的将军都相信明天上午九点会有足够战胜敌人的将军发起进攻,那进攻将难以组织。

此问题反应了分布式系统的核心问题:在一个去中心化的分布式系统中,在没有大家都信任的一个中心的情况下,每个节点该如何信任其他节点发布的信息?信任(或者说共识)该如何达成?

一、引子

你或许听说过比特币一种争议不断的数字货币,比特币的最大特点是去中心化(Decentralize),使用比特币人们无需借助银行就能完成支付。

最近几个月来金融巨头和科技巨头们突然 开始关注比特币背后的技术,并且把这种技术用在了非货币领域,比如股票交易选举投票等等。R3区块链联盟于2015年9月成立,到现在有四十多家世界级银行,如花旗银行,瑞士信贷,丹麦银行、德意志银行、摩根大通、高盛、汇丰银行等,今年6月中国平安也加入了这个联盟并成为中国的第一家加入该联盟的中国公司。最近IBM、微软和华为等等非金融的大型科技企业和公司也积极投入人力进行相关研究。

这种技术就叫做区块链(Block Chain),一种实时记录全部交易去中心化公开数据库,在区块链上进行支付时全网计算机共同查询区块链数据,共同验证这笔支付交易是否有效。确认支付后将写入区块链并产生一条不可篡改记录。

二、比特币的起源

2008年正好是全球经济金融危机最严重的时候,金融危机在美国达到高潮并向全世界蔓延。

2008年底,中本聪发表了一个关于他研究的电子现金系统的九页白皮书,2009年初,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了比特币的第一个区块——创世区块(Genesis Block),并将当天泰晤士报头版一则关于救助银行的新闻标题写入创世区块,这也代表着比特币诞生了。

从此比特币开始运行,并且无人能够阻挡她前进的步伐,下图是比特币从诞生以来的价格波动情况:

比特币的运行主要依赖在其系统中的节点,当前节点和交易最频繁的区域主要分布在美国、欧洲和中国,如下图:

三、白话 比特币应用的区块链技术1.0


可以把区块链想象成一个比特币的公共账本,这个账本的特点:
1、存放在互联网的各个比特币节点上,每个节点都有一份完整的备份。
2、里面记录着自比特币诞生以来的所有比特币转账交易。
3、账本是分区块存储的,每一块包含一部分交易记录。每一个区块都会记录着前一区块的标识,形成一个链状结构,因而称为区块链。
4、当你要发起一笔比特币交易的时候只需把交易信息广播到网络中,矿工(形象的说法)把你的交易信息记录成一个新的区块连到区块链上,交易就完成了。

几个问题帮助进一步理解:

1、如你只有1个币,而你却发起了一笔转2个币的交易怎么办?

回答: 这个问题很好解决,因为区块链上记录了所有的比特币交易记录,只需要回溯所有的和你账户相关的历史交易就能知道你这个账户上到底有多少余额,余额不对矿工是会拒绝记录你的交易。

2、如何保证你的账户不被冒名顶替

回答: 这问题也很好解决,用数字签名技术就好了。每个比特币账户都有公钥和私钥。你发起交易的时候用私钥对交易信息签名,矿工收到信息后用公钥检查一下签名就行。

3、那么多矿工,如何决定该由哪个矿工生成下一个区块?

回答:中本聪设计了一个数学问题,这个数学问题会耗费大量的计算机cpu时间才能得出答案,同时每一次得出的答案都会作为下一次计算的初始条件进行技术。全世界的矿工一起来计算这个问题,谁先得出答案,他就可以用这个答案生成一个新的区块,再广播到网络中。

仔细思考下这个体系,你会发现它几乎无懈可击。首先你不能凭空造出比特币,只能挖矿获得;其次你无法伪造交易,无法控制不属于你的账户。一旦交易被确认,几乎无法取消。这里说“几乎”,是因为有“51%攻击”的存在。51%攻击条件非常苛刻,这里就不扩展开讲。

其实在区块链1.0时代,也就是比特币运用的区块链技术中已经包含了智能合约的概念,可以说智能合约的引入,使得区块链技术进化为驱动世界的力量


直到2010年,人们才发现了比特币的内置脚本系统,有人在bitcointalk上发帖表示了惊讶和不解:“比特币的脚本让我有点紧张,这过于复杂了,而复杂是安全的天敌”。此君不是别人,正是后来成为中本聪继任者的Gavin Andresen。

中本聪是如此回复他的:我希望比特币在0.1版就能拥有稳定的架构,未来不需要再做底层改变。在过去几年设计比特币的过程中,我发现只有使用脚本系统才能完成我希望支持的各种复杂交易类型——担保交易、连带合同、第三方仲裁、多方签名等等。放在今天,也许中本聪会直接说:“比特币需要脚本,有了脚本,就有了智能合约”。

这篇帖子短短9条,却可以堪称区块链技术发展史上的一次重要对话。你会发现8楼有人问“比特币的脚本系统是不是意味着用户可以发行自定义资产?”。此人ID是bytemaster,后来其创立了可以发行用户自定义资产的比特股。

四、区块链1.0 特征与不足

2008年全球金融危机期间中本聪(Satoshi Nakamoto)撰写的论文《Bitcoin:A peer-to-peer electroniccash system》(《比特币:一种点对点的电子现金系统》)
基础技术工具,如P2P(Peer-to-Peer)、分布式存储、非对称性加密等早已存在,他提出的是一个集成性的、系统性的、可供实践的解决方案

去中心化

由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

开放性

系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

自治性

区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

信息不可篡改

一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

匿名性

由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方自己产生信任,对信用的累积非常有帮助。

不足:

支撑智能合约的脚本系统不完善,导致其应用在非金融领域十分困难,数学计算已经吞噬了全网80%的算力,每个区块的大小只有1M,能够记录的信息非常有限


在比特币系统成功运行多年后,2014年前后,部分金融机构开始意识到,作为比特币运行的底层支撑技术——区块 链,实际上是一种极其巧妙的分布式共享账本技术,对金融乃至各行各业带来的潜在影响甚至可能不亚于复式记账法的发明。对区块链的初步认识来自2014年10月大英图书馆的一次技术讨论会。在这次会议中,人们对比特币的现状和未来以及区块链在金融等领域的应用前景进行了深入的探讨。自此,区块链技术开始在全球崭露头角。可以把2015年称为世界区块链元年,因为在这一年经济领域关注到了它。划时代的标志是《华尔街日报》刊文称区块链是最近500年以来在金融领域最重要的突破,而《经济学人》杂志在封面**《信任的机器》**一文中介绍区块链为创造信任的机器。文章指出,区块链并非仅仅是一项加密技术或者数字货币,在信息不对称、不确定的环境下,它还可以建立满足经济活动赖以发生、发展的“信任”生态体系。作为比特币底层技术的“链”,其价值远大于比特币本身。区块链可以让人们在没有中央权威机构监督的情况下,对彼此协作建立起信心。区块链是一种共享账本技术,实现了在分布式商业网络里多方参与的双边交易中的去中介化。简单来说,它是一台创造信任的机器。
进入2016年,业界开始大规模认识到区块链技术的重要价值,并通过智能合约技术将其用于数字货币以外的分布式应用领域。世界经济论坛甚至预测,到2025年,世界GDP的10%都将存储在区块链上或者应用区块链技术。

五、区块链2.0诞生

以太坊的出现,使得智能合约能力被自由释放。以太坊在比特币区块链的基础上进行了重大改进:1、完善脚本系统,使智能合约能够应用在各种非金融领域,这点非常重要;2、平衡账目实现更加精细的账目控制;3、底层协议保持简单。

本质上比特币区块链网络事实上是一套分布式数据库,而以太坊则更进一步,可以把它看作是一个分布式计算机。区块链可以看作是计算机的内存,智能合约则是程序,而以太坊的矿工们则负责计算,担任CPU。人们必须为使用这个分布式计算机而付费。

智能合约本质上是 “合同” + “法院”,传统的纸质合同只是规定了合同的内容,而合同的强制执行依靠司法体系。而“智能合约+区块链”使得合同内容和金钱都以计算机代码的形式呈现,所以强制执行也被写入代码,而无需第三方。

本质上,因为区块链的链与链之间具有隐私、安全、共识、自治、价值共享的特性,所以在技术层面上解决了互联网上的价值传递问题。同时,区块链又具有底层开源改变业务规则创新业务多方共识等逻辑,因此区块链是未来整个IT架构和互联网转型的重要支撑
区块链2.0的重要标志就是被金融领域所接受并得到广泛应用形成的金融互联网让价值交换变得便捷、直接,节省时间、节省成本。目前区块链2.0在实际场景中的应用,有两个重要因素:资产数字化(上链过程)与智能合约。区块链2.0更关注智能合约(Smart Contract)所体现的业务价值。在区块链的背景下,智能合约当作是一种运行在区块链之上的通用计算模式,这样智能合约的内涵就不一定必须要和传统的合同概念相关联,反而可以是任何的计算机程序。智能合约实际上是通过高级编程语言把现实世界的业务逻辑在区块链上加以实现。智能合约通过在区块链上增加应 用功能拓展了其适用范围和生存空间,如此就可以通过区块链来描述众多实现当中的业务场景。

六、区块链2.0应用畅想

我们都知道,企业以及各种服务都是由统一的中央机构控制,想象一下可不可以不这样呢?可不可以由我们自己来操控呢?这就涉及到一个概念,被称为**“去中心化的应用程序”(Decentralized Application或简称“DAPP”)。这个概念是区块链社区提出的一个比较新奇的概念。在自动执行的智能合约的帮助下,人们可以将今天一切中心化的服务去中心化,享受更多的自主权**。

在某种程度上,比特币可以说是出现的第一个DAPP,因为它是完全开源的,为贡献者提供奖励回报,不受一个中央机构的控制,并使用区块链作为支撑技术。以太坊的去中心化区块链和其原生数字货币以太币可能是最广泛用于DAPP建设的工具,因为它的网络就是专门为建立DAPP而设计的。

举个例子,OpenBazaar(公开市场)是为网上点对点(P2P)交易创建的去中心化网络的开源项目。OpenBazaar平台上买卖双方使用比特币进行交易,没有费用,而且不会受到政府监管机构的审查。简单的说,它就是eBay和BitTorrent结合的产物。**OpenBazaar为电子商务提供了另一途径。它把权力归还到用户手中。OpenBazaar将卖家和买家直接联系在一起,不再需要中心化的第三方来连接买卖双方。**因为在交易中不存在第三方,所以不存在交易费用,没有人能够审查交易,而且公开个人信息的决定权在用户手中。

区块链2.0技术发展目标就是成为‘世界电脑’,这是一个让公共经济共识满足有状态的图灵完备虚拟机器抽象力量的平台,旨在让开发者不需要为每个新应用建立新的区块链,就可以通过区块链去中心化和安全性能轻松的创建应用程序。

·2014年—2016年是评估阶段。银行和其他金融基础设施中介机构对许可制的共享账本技术的效率、机会等进行评估;

·2016年—2018年对区块链进行概念原型验证测试。主要的测试目标是验证技术的可行性,将区块链技术和传统方式在性能、成本、速度、规模等方面进行对比;

·2017年—2020年预计基于区块链的共享架构开始出现;

·2021年—2025年在区块链技术证明有效的基础上,会有更多的金融资产转向区块链技术。

七、区块链应用场景总结及其进化

区块链诞生自中本聪的比特币,自2009年以来,出现了各种个样的类比特币的数字货币,都是基于公有区块链的。

数字货币的现状是百花齐放,列出一些常见的:bitcoin、litecoin、dogecoin、OKcoinetc,除了货币的应用之外,还有各种衍生应用,如比特股,彩色币,Ripple,Ethereum等等。

可以用区块链的一些领域可以是:


我们可以把区块链的发展类比互联网本身的发展,未来会在internet上形成一个比如叫做finance-internet的东西,而这个东西就是基于区块链。

区块链的进化方式和阶段:

▪ 区块链1.0——数字货币

▪ 区块链2.0——数字资产与智能合约

▪ 区块链3.0——DAO、DAC(区块链自洽组织、区块链自洽公司)–>区块链大社会(科学,医疗,教育etc。区块链+人工智能)。

区块链3.0要把区块链的应用范围拓展到各行各业支持广义的资产交互和登记,进入万物互联,设备民主的“区块链+”时代。
互联网使得全球之间的互动越来越紧密,伴随而来的是巨大的信任鸿沟,未来将进入到需要真正的强信任背书的大数据时代。通过使用区块链技术,任何人都没有能力也没有必要去质疑数据的质量和真实性。区块链技术具有全新的理念和逻辑结构,并且它每天还在发展变化过程中,因此,随着区块链能够为信任提供价值的场景改变,它自身也将进入不同的阶段。或许未来的某一天,区块链可能还将迈进更新的阶段。


国内平台

腾讯区块链基础框架

华为云区块链服务逻辑框架


优化业务流程、降低运营成本、提升协同效率
面向大众消费者的区块链应用需要做到公开、透明、可审计,既可以部署在无边界的公有链,也可以部署在应用生态内多中心节点共同维护的区块链;面向企业内部或多个企业间的商业区块链场景,则可将区块链的维护节点和可见性限制在联盟内部,并用智能合约重点解决联盟成员间的信任或信息不对等问题,以提高经济活动效率。






关于能源浪费问题

关于这个问题:区块链大量算力资源的白白浪费的问题是很明显的
有一个疑问,如果是建立在PoW机制下确实需要,但是除了proof of works,好像还要别的?如PoS、DPoS机制,这个需要浪费大量算力么

比特币挖矿网络中,74%的电力都来自可再生能源
可再生能源(Renewable Energy)是指风能、太阳能、水能、生物质能、地热能、海洋能等非化石能源,是取之不尽、用之不竭的能源,是相对于会穷尽的不可再生能源的一种能源,对环境无害或危害极小,而且资源分布广泛,适宜就地开发利用。~

Reference

  1. https://blog.csdn.net/owndiandian/article/details/53486361
  2. https://blog.csdn.net/xiaohuanglv/article/details/89033529
  3. https://blog.csdn.net/fuyipingwml1976124/article/details/103471407
  4. 【推荐】 一文读懂~国内外区块链发展现状、趋势和政策
  5. 关于区块链入门学习的一些思考

相关文章:

  • 关于新科学与领导力
  • 工具及其对商业社会的影响思考
  • 区块链的意义和应用现状
  • 从文交所陨落史,看NFT艺术市场前景
  • NFT艺术首登佳士得拍场:数字艺术终于“破圈”?
  • 音乐NFT
  • 安全多方计算 # 个人笔记
  • 区块链为何对安全多方计算如此热情?
  • 解读加密艺术 CRYPTO NFT ART
  • [Ubuntu] 运行.AppImage格式文件
  • python发送post请求
  • [CTF]php is_numeric绕过
  • Django 接收并解析POST请求参数
  • 肖飒:NFT与版权保护的N个问题
  • 使用MetaMask连接到币安智能链(BSC)
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【知识碎片】第三方登录弹窗效果
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Akka系列(七):Actor持久化之Akka persistence
  • C++类中的特殊成员函数
  • Consul Config 使用Git做版本控制的实现
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Java|序列化异常StreamCorruptedException的解决方法
  • LeetCode29.两数相除 JavaScript
  • Spring Cloud Feign的两种使用姿势
  • web标准化(下)
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 程序员该如何有效的找工作?
  • 和 || 运算
  • 记一次删除Git记录中的大文件的过程
  • 通过npm或yarn自动生成vue组件
  • 用element的upload组件实现多图片上传和压缩
  • 阿里云API、SDK和CLI应用实践方案
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 我们雇佣了一只大猴子...
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (11)MSP430F5529 定时器B
  • (2022 CVPR) Unbiased Teacher v2
  • (AngularJS)Angular 控制器之间通信初探
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (办公)springboot配置aop处理请求.
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)视频码率,帧率和分辨率的联系与区别
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core Swagger 过滤部分Api
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @AliasFor注解
  • @GlobalLock注解作用与原理解析