imtoken官方下载钱包|什么是区块链技术的底层
imtoken官方下载钱包|什么是区块链技术的底层
区块链的底层是什么? - 腾讯云开发者社区-腾讯云
底层是什么? - 腾讯云开发者社区-腾讯云腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册区块链的底层是什么?文章来源:企鹅号 - GPO金融圈很多人也许听说过比特币,也听说过“区块链是比特币的底层技术”,但并不清楚区块链的底层是什么。那么,区块链的底层到底是什么呢?在解开这个谜题之前,我们先来看看互联网大佬们都是怎么说的。斯坦福大学终身教授张首晟认为:“区块链中,底层是数学,中层是法律,上层是经济行为。”张首晟他在《区块链世界是怎样的》一文中写到:“人类最容易达到共识的是数学。用数学作为信任的机制,是最自然的做法。真正的区块链时代,就是使得我们相互间的信任建筑在数学的基础上。因为数学的形态是最最精准的,在精准的意义下,也是最易达到共识的。在区块链时代,最根本的经济行为,就是信任的机制,建立在数学之上。”在3点钟无眠区块链群中,蔡文胜说:“区块链的底层架构是数学逻辑,中层思想是哲学思考,最高层是神学信仰。”蔡文胜而快的打车创始人陈伟星则认为:“区块链叫分布式账本技术,就是个记账工具。人类的协作需要记账,但自发扩展的秩序,会出现各种数学手段来形成动态的共识。我觉得和神学没什么关系。”陈伟星答案似乎已经呼之欲出了,区块链的底层居然是数学?何解?莫急,听ETM君慢慢道来。区块链的底层为何是数学?对区块链技术有所了解的人都知道,支持区块链的重要底层加密技术是创新的不对称加密算法。现在应用最广泛的不对称加密算法是基于椭圆曲线的加密算法,其核心就是来自于代数几何中椭圆曲线上的算术理论。在区块链中,基于非对称加密算法,每个用户都有一对密钥——公钥和私钥。用户要进行交易,就必须用私钥对原数据进行签名,只有对应的公钥才能验证签名串与原数据是匹配的。同时,用公钥加密的原数据,只有对应的私钥才能解开,这样就使得原数据在网络中传播不被窃取,保护隐私。这一举措,实际上完成了一个人类历史上从未完成的壮举:过去,人们之间进行交易必须依赖基于血液、乡邻或第三方来建立信任,开展交易,但在区块链世界中,却以数学的方式为人们建立了新的不可动摇的信任通道。应该说,区块链的共识机制以及个人数据、数字资产等安全问题,都与数学紧密相关。换言之,当我们谈论区块链的一些特质,比如不可篡改、安全、机器信任等时,谈论的其实都是区块链的数学特性。此外,诸如跨链交易、资产互换、零知识证明等,也同样与数学紧密联系。En-Tan-Mo甚至将数学引入其投票制度中的权益调节模型、去中心化体系中的动态价格形成等,极有代表性的呈现出了区块链与数学间的这种依存关系。这种依存关系,一方面使人们在区块链中获得了基于数学的信任感,另一方面,也引发了一个更深层的思考:我们未来的文明,是否将以数字为基石呢?“万物皆数”公元前六世纪,当希腊群岛的哲学家们面对事物无情的形成与消逝时,终于忍不住问:事物的实际是什么呢?我们如何解释事物中的变化过程?换言之,究竟哪种“物质”构成了万事万物?米利都学派的泰勒斯认为是水,阿拉克西米尼认为是气。毕达哥拉斯学派却独树一帜,认为事物是由数构成的,即著名的“万物皆数”。泰勒斯这种观点认为, 1是最神圣的数字。1生2,2生诸数,数生点,点生线,线生面,面生体,体生万物。首先生出水、火、气、土四大元素, 四大元素又转化出天、地、人及万事万物。这一观点被后人嘲为“荒唐可笑”,但事实上,其背后却是一整套的哲学观念,即形式的概念。在他们看来,形式意味着限定,而数代表了限定(形式)在无限定者(质料)上的运用。数学的重要性,关系到的是哲学中形式或“理念”的问题。两千多年后,我们回头审视以数学为底层技术的区块链,不正是尝试以限定(形式)在无限定者(质料)上的运用么?《道德经》说,一生二,二生三,三生万物。数学家莱布尼茨也曾用二进制来解释阴阳问题,如果我们重新回到两千多年前的哲学问题,是否可以真的斩钉截铁的说:世界不是数构成的呢?如果,在过去的两千多年里,这个答案是否定的,那么,随着信息科学的崛起,随着数字化的无孔不入,随着区块链的步步推进,我们还能毫不迟疑吗?从这个意义上说,以区块链为根基衍生出的一系列哲学问题,竟是引人遐思了。我们的世界,或许还有另一副面孔。发表于: 2018-10-112018-10-11 16:32:26原文链接:https://kuaibao.qq.com/s/20181011A1AU3T00?refer=cp_1026腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。如有侵权,请联系 cloudcommunity@tencent.com 删除。mysql的explain的底层原理是什么呢?UIWebView底层个人中心在哪什么叫区块链经济什么是区块链应用0分享分享快讯到朋友圈分享快讯到 QQ分享快讯到微博复制快讯链接到剪贴板上一篇:百万TPS不可信?测量区块链性能的工具Hyperledger Caliper下一篇:做好数据可视化表达,到底该怎么选图表?相关快讯解密区块链(一):初识区块链2018-01-26黎曼猜想与区块链并没有直接联系!区块链算法安全依然健壮!2018-10-20区块链是什么?漫画教你会2018-01-27区块链扩容是什么?第六十一课2018-07-28小白课:区块链中的常见加密技术2018-07-04扒一扒区块链的底层技术2018-10-20区块链关键词解读:非对称加密对医疗健康应用的意义2018-02-24比特币和区块链的诞生靠的是什么?2018-12-10区块链加密技术,非对称加密是什么?2018-07-11技术解读区块链密码学的起源,了解多链与非对称加密2018-07-12区块链技术原理(下)2018-09-08区块链之史上最详细的区块链技术架构分析2018-10-22区块链讲坛2018-04-06区块链与身份认证(上)2018-04-07区块链基本技术与开源项目汇总2018-02-09虾说区块链-音频-22018-02-14区块链词典,你想知道的都在这里(中)2018-04-07区块链核心技术之非对称加密2018-03-27区块链“知识点”课堂(六)2018-04-04区块链行业应用报告2018-07-18扫码添加站长 进交流群领取专属 10元无门槛券私享最新 技术干货社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号1101080202028一文弄懂区块链技术原理 - 知乎
一文弄懂区块链技术原理 - 知乎首发于kay的世界切换模式写文章登录/注册一文弄懂区块链技术原理kkay前言近期由于工作需要,于是对区块链相关技术展开了大量的研究和学习.本文将以开发者的角度,对整个区块链行业技术的发展做一次全面的总结和归纳.文章宗旨是为了帮助大家理解区块链技术出现的目的、能够解决什么问题还有数字货币的意义与价值.另外文章后半部分会探讨一下区块链快速发展的今天,开发者群体能做哪些事情.如今市面上新型的数字货币如雨后春笋层出不穷,其中以诈骗圈钱为目的空气币也不少.只有深入了解了数字货币的底层逻辑,才能看清楚它想要达到的目的,谨防上当受骗.区块链技术有一次听外行的朋友提问:"如果区块链技术成熟了,那是不是就可以帮我们国家快速研发出芯片了".这样的发问让人觉得天真可爱,很多朋友由于对区块链的本质缺乏基本的认知,误以为它是一颗灵丹妙药,似乎任何问题在它面前都不值一提.区块链技术不是什么事情都能做,它出现的目的是为了解决人或机构间的信任问题,让互联网的通信数据和网络交流变得真实.为了更好的理解区块链的本质,我们拿同样火热的技术人工智能举例.人工智能解决的是单一客体生产力的问题,通过使用人工智能相关技术,客体便拥有了更强大的能力,以前很多不能做的事情通过人工智能现在就能做到了.比如自动驾驶小汽车、天气预测.无论是能够自动驾驶的小汽车还是预测天气的系统,它们都需要与其他系统进行数据通信.区块链要解决的问题就是让客体与客体之间的信息交流变得真实而又可信.有的朋友会提出疑问,真实的信息交流有那么重要吗?它并没有解决什么重大难题啊,需要花费巨大的人力与财力研究吗?从现实层面来讲,尤其在某些领域,数据的真实性非常重要.假设某跨国集团以全民投票的方式推选公司新一任CEO,由于公司规模庞大,旗下员工多达几十万,那如果保证投票数据一定真实可靠不会被被暗箱操作呢?目前而言,没有万无一失的方式.但如果将投票流程颁布到区块链上进行,那么就能确保数据是真实而又可靠的.因为区块链方案从技术层面直接隔离了数据的可篡改性.每个人的投票记录都是公开而又可追溯的,并且一旦存进了区块链就无法修改.投票只是区块链技术应用方向之一,像国家历史、居民征信记录、药品溯源这类数据都是出现过一次就不能被篡改,另外在尤其关键的金融领域,所有人的转账记录都应该是可以追溯且不能修改的,如果金融体系都无法确保金融数据的绝对可信任,那发展互联网金融毫无意义.区块链原理从上面例子看出,区块链通俗而言就是存储数据的,但它和平常数据库相比有以下三大特点.数据是公开透明的数据的历史记录是可以追溯的数据是不能篡改的区块链到底采用了什么样的架构才具备上述三大特点呢?点击放大上图.图片包含一条按顺序排列的方块,每个方块内存储了数据记录的集合,方块与方块之间首尾相连形成一条长链,方块称之为区块,整条由区块连接而成的链条便称之为区块链.第一个区块通常由区块链的开发者创造,称之为创世区块.假设区块链目前只有一个创世区块,后面的区块依次命名为区块1、区块2、区块3等.此时张三给李四投了一票,这条数据记录就会在节点网络中广播,区块1接收到这条消息把这条记录存到区块1内,过一会儿王五也给李四投了一票,这条记录也会被区块1存起来.随着投票记录越来越多,区块1也不断往内存,直到到快存满的时候,区块1被打包封装成一个完整的区块,这时候区块链上就有了两个完整的区块,创世区块和区块1.在区块1打包完成后,又会在区块1后面创建一个的空的区块2,区块2的头部指向区块1的哈希索引.其中这个安排谁打包封装的过程在数字货币领域被称之为挖矿.上面提到了两个专业术语节点网络和哈希索引,它们代表什么意思呢?在解答上面问题之前,我们先弄清楚区块链的存储机制.区块链既然是用来存数据的,那么它到底存在了哪个地方呢?众所周知,当下所有的互联网应用数据都存在了数据库服务器里,比如微信的聊天记录存在了微信的服务器,微博的实时新闻存在了微博的服务器.这些数据都属于企业的私有财产,被企业完全掌控,它想删就能删,它想查就能查,它想改就能改(当然实际并不会那么去做),数据完全被互联网公司集中掌控,这就是所谓的中心化.中心化有什么弊端呢?数据并非公开透明,操作权限完全由互联网公司掌控.某某明星闹了绯闻,微博的服务器就会因为访问量过大出现宕机,导致微博应用程序打不开.如果服务器仅仅出现宕机还算轻微,倘若出现自然灾害比如地震、火灾导致服务器全部损害,那么积累多年的数据将毁于一旦.区块链技术的普及将会彻底打破中心化的格局,预示着未来一个全新的时代—web3.0的降临.web3.0的目标是达成数据的去中心化,打破由互联网巨头企业垄断的困局,实现人人参与数据的生产和使用,以及管理和监督.区块链是怎么样实现去中心化的目标呢?我们还是以上面投票的案例举例.跨国集团为了实现投票工作的公平、公正与公开,于是采纳了技术员张三的建议,决定将整个投票工作搬到区块链上执行.张三技术团队替公司开发了一款客户端程序,用于提供给全体员工投票.王五是公司一名普通员工,他积极响应公司号召,在电脑上下载安装完客户端程序,找到了心仪的目标李四,按下确定键为他投了一票.此时王五选择李四这一条记录就会发送到区块链上存储起来,成千上万的员工也会像王五一样在客户端上发起投票.无数的投票记录就会不断往区块里面添加,一个区块装满了就立马打包封装继续往下一个区块添加,最后一根长长的区块链便由此形成了.现在回到上面的问题,这根长长的区块链到底存储在了哪里?答案可能让你吃惊,假设公司有10万人,那么这10万名员工每个人的电脑都会存一份这根长长的区块链数据.有的朋友可能会发问,同一份数据在10万人的电脑上都存一遍,这不是浪费资源吗?事实的确如此,可正是由于每个人都存了一份备份,那么每个人都直接成为了数据的维护和管理者,那么这些数据的命运将由所有人共同决定,这便是区块链实现去中心化的核心逻辑.我们再次回到上面提出的疑问,节点网络是什么?哈希索引是什么?成千上万的员工像王五一样安装了客户端程序,那么每一位员工的电脑就是区块链上的节点,所有节点形成的网络的就是节点网络.每个节点都存储了一份完备的区块链数据,而客户端程序在后台悄悄的将所有节点进行了联通,使节点与节点之间能够广播消息、同步数据.哈希索引又是什么呢?回忆一遍上面介绍区块链架构的图片,每个区块都存储了一系列消息记录的集合.实际上每一条消息记录添加到区块中时,都会通过加密算法为这条记录生成一串唯一的哈希值(也可以称之为哈希索引).哈希值是什么呢?它就类似于身份证号,是这条数据的唯一标识,在计算机中就是一条长长的由字母数字以及符号随机组合的长串.倘若有人把王五选择李四这条记录改成王五选择牛二,那么这条数据的哈希值就会立马发生改变.不光每条记录会生成一个哈希值,每一个区块都会依据区块内所包含的内容生成一条唯一的哈希值与之对应.李四的竞选对手牛二一看选票形势对自己非常的不利,心里就泛起了阵阵涟漪.牛二突然想起了他远方表舅家的寡妇娘嫁给了村头卖烧饼的李二狗他爹.李二狗毕业的时候,托牛二在张三技术团队找了份工作,只可惜二狗工作多年才疏学浅,年纪轻轻就秃了头.牛二赶紧联系上二狗,希望他利用技术手段篡改一下区块链上的数据,扭转目前竞选不利的局势,并在电话的结尾承诺将自己多年嫁不出去的女儿介绍给他,二狗欣然答应.二狗亢奋不已,买了两箱可乐熬了三个通宵终于把自己电脑上存放的区块链数据篡改完了,可等到与其他节点进行数据同步的时候,神奇的一幕出现,其他节点通过算法验证,发现二狗这台电脑的数据做过篡改,不予承认.其他节点是怎么做到的呢?二狗把区块链上存放的某条记录王五选择李四改成王五选择牛二,那么这条数据的哈希值就会发生改变,并且这个区块的哈希值也会随之改变.还记得之前提到的吗?每一个区块的头部都会链接上一个区块的哈希值,现在上一个区块因为数据篡改导致哈希值发生改变,导致后面的区块无法通过算法的验证.上面案例可以看出,区块链通过密码学的手段杜绝了数据被篡改的可能性,让所有的数据记录变得真实可信.即便如此,很多朋友的脑海里依旧存在误解,区块链就是数字货币,区块链就是为了圈钱融资割韭菜.区块链和数字货币狭义上理解,区块链是一种去中心化存储数据的技术,它的目标是实现web3.0,跟数字货币没有任何关系.数字货币是使用区块链技术开发出来的具体实现.比如跨国集团使用区块链技术开发了一款投票系统,日本人中本聪他就想使用区块链技术开发一款数字货币.那为什么只要提及区块链就和数字货币分不开呢?这是因为区块链的三大特征公开透明、记录可追溯以及不可篡改性太适合做货币了,如果区块链技术能应用于金融领域,那数字货币的信用体系就能获得大众的认可.很多朋友可能不太清楚,现实社会中很多领域已经应用了区块链技术,但是并没有发行数字货币.比如我们接下来讲解的私有链和联盟链.区块链按照类型划分为三种:公有链、私有链以及联盟链.目前市场十分火爆的比特币、以太坊构建的区块链都属于公有链.凡是公有链,那就意味着所有人都可以参与其中获取信息、发起交易等.私有链并不是对所有人开放,加入私有链首先要得到相关组织或者个人的授权才行.比如上面介绍的投票系统,它就需要构建一条私有链,只有本公司的员工才能参与投票.联盟链也属于私有链的类型,一般大型平台机构之间通常会构建联盟链来存储一些关键数据,比如国家银行、事业机关单位会在联盟链上投资资金研发.私有链和联盟链的相关应用开发,就不需要数字货币的参与.比如投票系统,核心目的就是为了完成公正公平的竞选,刻意创造数字货币没有任何意义.数字货币底层原理数字货币是区块链技术的具体应用,但同时它们又推动了区块链技术的发展.本节将选择比特币、以太坊以及Filecoin作为素材讲解数字货币的使命和意义,以及它们的运行机制和对区块链行业形成的影响.比特币不知何时,谈起区块链就不得不提比特币,足以可见比特币在数字货币中所处的地位.比特币的使命就是为了构建一个所有人都参与维护的超级账本.那什么是超级账本呢?张三、李四、王五、牛二四人流落孤岛.张三身强力壮擅长捕鱼,李四温润孱弱干些缝缝补补,王五名牌大学建筑系高材生会盖棚子.牛二啥体力活都不会干,但有颗经商的头脑.为了物尽其用人尽其才,牛二把大伙召集起来想了个法子.首先给所有商品定价,一条鱼10元,盖一个棚子100元,缝一件野人套装50元.一天张三请王五盖个棚子,牛二记下一笔张三转给王五100元.张三又从李四买件野人套装,牛二记下一笔张三转给李四50元.王五和李四也要吃食物,分别都从张三那里买了条鱼.牛二记下两笔王五转给张三10元和李四转给张三10元.通过牛二手中的账本我们就可以得出张三余额为-130元,张三欠王五90元,张三欠李四40元.理论上来将,只要这个账本一直记录下去,每个人的余额和交易情况都可以计算出来,即使大家之间并没有使用现金交易,但账本上记录的余额依旧可以让人与人之间的经济交易一直进行下去,这个账本和银行的作用很像.荒岛四人组所有的交易记录都被牛二一人掌控,这就是中心化的账本,如果牛二想做假账,其他人也很难察觉.比特币构建出来的区块链就相当于牛二手中的账本,不过这个电子账本由所有人共同维护,不被任何个体单独掌控,交易记录一旦记上了区块链,那就再也不能被篡改了.除此之外比特币不能赊账,如果发起一笔交易张三转给李四100元,那说明张三的余额至少是大于100元的,这笔交易才算合法.日常贸易让每个人的账户余额处于动态变化中,余额的多少需要根据账本的交易记录计算得出,随着交易数量不断增加,牛二天天算这个得累死.人计算起来不仅慢而且容易出错,但计算机算帐可是强项,要不然也不会称之为计算机.随着孤岛的互联网技术不断发展,荒岛四人组赶时髦废弃了原来的中心化账本,决定以后用比特币交易.张三想请王五建个城堡逗闺女,王五拉足马力加班加点用了一个月建成了,张三打开手机app给王五的钱包转了100比特币,那么这笔记录就被记在了区块链上,交易完成.同理王五想从张三那里买头海龟送媳妇上班,等到快递上门后,王五打开手机app给张三转了50比特币确认收货,这笔交易也算完成了.而牛二最惨,自从账本上了区块链,他再也不能偷偷捞两把赚点外快了.以上介绍的都是比特币的作用与意义,那到底什么是挖矿呢?比特币和挖矿之间是什么关系呢?挖矿的机制和原理比特币官方有一个客户端程序,电脑一旦下载安装客户端运行起来,这台电脑就成为了一个节点.应用程序初次启动,它就会与节点网络进行信息同步,把某个节点的上的区块链信息下载保存在本地电脑,这样本机就备份了一份区块链数据.比特币的目标是建立一个超级账本,它里面包含一个钱包的功能,主要用于执行交易转账.钱包其实是私钥、地址和区块链数据的管理工具.地址相当于银行账号,有的数字货币会叫作公钥,别人要转账给你,就把比特币转给你的地址,它长什么样子呢?类似这种2NLscuT3dBeUAdo39JgmnsEDh3Syt3TUq8.私钥相当于银行密码,如果你想转钱给别人,就需要通过私钥来转账.另外私钥是万万不能泄露的,否则别人会把你的比特币全部转走.区块链数据就是区块链上存储的交易记录,张三的客户端程序扫描了电脑上的区块链数据,找到所有与自己相关的交易记录并计算出了账户余额.张三发现余额还有2个比特币,它想全部转给李四.张三付出2个币,李四收到2个币这条交易记录使用张三的私钥经过加密算法生成一个哈希值,即该条交易记录的电子签名.交易记录和电子签名会一同被应用程序广播到节点网络中去,某个节点监听到了这条广播,它们取出交易记录和电子签名,并通过张三的公钥解密计算,以此来确定该条交易记录是不是张三发起的,其次判断整个过程中有没有被篡改.经过验证这条交易记录是合法的,节点又会将该条交易记录广播到其他所有的节点都收到,然后节点自己在本地搜一遍区块链,看张三的帐号里有没有足够的钱,有的话这条交易就成立了,准备放进区块存起来.其他收到广播的节点也会照此操作,最终所有节点电脑上的区块都新增了这一条交易记录.还记得上一节提到过,当区块到了快存不下去的时候,这个区块就会被打包封装成一个完整的区块.那谁负责这个打包封装呢?比特币官方就规定如果哪个节点愿意做这个苦活累活,我就奖它比特币节点网络有这么多的节点,它们都争着抢着想来干这个差事.比特币官方就犯难了,这到底选谁来做呢?比特币官方最后设计了一个POW算法,用来决定哪个节点封装打包区块.这类以抽选节点做打包员的算法统称为共识算法,POW属于共识算法的一种,另外比较有代表性的算法有POS算法和PoST 算法.POW算法(Proof of Work,工作量证明).计算量越大,就越有大概率被抽中POS算法(Proof of Stake,权益证明).根据资产的多少分配获取抽中的概率节点参与了共识算法的竞猜,它就被称之为矿工,它努力赢得打包员的资格所付出的努力称之为挖矿.如果某个矿工被共识算法抽中了,它就拥有了打包封装的资格,我们就可以称之为出块或者爆块了.矿工一旦出块了,它就可以得到官网赠与的比特币奖励.比特币使用的POW算法对显卡的依赖非常强,因此比特币火热时期,市面上的高端显卡一卡难求,硬件厂商乘坐着数字货币的东风大赚一笔.现在我们来看一下,矿工张三出块这段过程的底层逻辑是如何实现的.矿工张三的区块装满了5000条交易信息后,再加上一条福利信息张三得到2个币和前一个区块的验证码以及一个随机数.关键的步骤来了,此时其他矿工也和张三一样做了相似的操作,他们接下来要一决雌雄争夺出块权.张三的电脑首先计算这个新区块的验证码,用哈希算法不停的算,本来瞬间就能算好,但是要求这个验证码必须小于区块内的随机值(难度值),值如果不够小,就把随机数改一改,再算一次.还不行再改随机数,再算继续算.经过这样上亿亿次的计算,终于找到了附合条件的验证码加到这个新区快上,至此这个包就算打包好了.张三把新区块广播到网络上,其它矿工会验证一下这个区块的所有交易信息,并着重验证一下这个区块算出的验证码,都没问题就承认这个块了,从此区块链就长长了一块,然后处理一下自己本地的交易信息池,把那些已记录的清除掉,更新上张三广播的区块,在区块链的末尾再增加一个新的空快,准备下一轮出块权争夺.我们从上面这个过程可以看出,谁能赢得出块权,起决于谁能把类似一道很难的数学题先算出来.有的人可能会问,要是两个人同时算出来怎么办,比特币官方解释已经从采用某种机制隔离了这种可能性的发生.但我们不禁提出质疑,比特币吸纳了全网最高的算力,结果这些算力仅仅只是作用于区块链自身的数据计算和全链条的稳定,并没有对社会做出什么实际贡献,实在是浪费电.以太坊以太坊本身不是数字货币,它是一个数字平台.以太坊使用的数字货币称之为以太币.很多朋友可能提出疑问,以太坊是不是和比特币一样又搞出一种数字货币?以太坊的出现对区块链的发展具有革命性的意义,它不仅拥有数字货币的能力,而且还有了更进一步的突破.狭义上理解, 以太坊 = 比特币 + 智能合约.智能合约是什么呢?智能合约是运行在以太坊虚拟机(EVM)上的,本质上是一段脚本代码,部署在以太坊的区块链里.我们可以简单理解,以太坊是一个庞大的数字平台,平台对所有开发者开放了自定义智能合约的能力.智能合约此时就相当于运行在以太坊上的后端代码,这部分可以由开发者来编写,这样作为开发者的我们就能基于以太坊开发一些日常生活当中的应用.智能合约的编写使用Solidity语言,它和JavaScript很像,它拥有操作区块链上的数据的能力.这和我们当下主流的BS(浏览器-服务器)架构很类似,浏览器访问智能合约对开放的接口,智能合约接受到请求就去操作区块链上的数据.BS架构模式下数据都是存放在数据库里,后端代码接受到前端请求操作数据库里的数据.而现在变成了智能合约接受前端请求操作区块链上的数据.由于数据存放的容器从数据库变成了区块链,因此基于以太坊开发的应用就是去中心化的应用程序了.当然智能合约目前还没有传统后端编程语言这么强大,很多功能比如上传下载、对外发起http请求它本身并不支持,需要调用其他程序实现.我们目前就可以利用以太坊开发一些应用程序,比如投票系统、众筹软件等.因此依靠以太坊生态开发的应用程序如雨后春笋般涌现.网络上充斥着很多三分钟发布一款数字货币、十分钟发布属于你自己的虚拟货币这类消息.实际上这类文章传授的便是在以太坊智能合约上用代码开发一个电子钱包功能,它发行的货币属于代币(ICO),代币与比特币以及以太币有着本质的区别.代币不一定就是不好的,比如说腾讯公司会对外发行qq币,qq币就属于一种代币.用户通过qq币可以购买腾讯旗下的游戏皮肤或装备,但是qq币是不能用于其他公司交易.腾讯公司旗下业务众多,代币的发行可以更好的支持自身产品与服务的销售.但有的人什么实体产业都没有,就利用智能合约开发一款电子钱包,货币数量随它的代码编写任意分发,随后大肆鼓吹欺骗群众购买他们的货币,让很多无辜百姓上当受骗.比特币、以太币它们都有官方客户端程序,而这些客户端程序包含了节点同步、挖矿、区块链操作、消息广播以及各种算法校验等功能模块,这些代码实现了一条底链具备的所有能力,因此开发这类客户端需要很强的技术实力和专业背景.当然也不乏无法分子做一个假的客户端程序,外观界面有模有样的运行,内部其实是一个空壳,用以哄骗普通群众.其次社会上也会存在一些不良资本家,他们会出资组建一支实力完备的技术团队,但目的却是开发一款不会带来任何实际价值的数字货币,商家鼓动媒体公关渲染造势,吸引广大民众投入资本,最后风头一过损失最大的还是普通民众,这些恶劣的行径给社会带来了不良影响.回到主题,以太坊的智能合约能让程序员开发各种各样的应用程序,但如果应用程序的数据非常庞大,比如像抖音、微博,它们包含了大量的图片、视频资源,这些体积庞大的数据存在哪里呢?IPFS我们在讲比特币转账过程已经提到,区块链上每新增一条记录,所有区块链上的节点最后都会同步新增,这就意味着每一条消息记录都应该尽可能保持轻量.试想一下,节点网络之间时时刻刻都在进行着成百上千条交易,如果每一条交易记录的数据量都十分庞大,最后所有节点并发同步将会造成整条区块链的崩溃.依托以太坊开发的应用程序想在区块链上存一个视频,这样的需求该如何实现呢?IPFS相关技术可以有效解决区块链存储大数据的难题.IPFS(星际文件系统)是一种网络传输协议.它的出现时为了替换现有的HTTP协议,使得Web更快、更安全、更开放.IPFS本身而言与区块链没有必然的联系,但它可以设计成与区块链相互协同工作.IPFS社区基于IPFS协议开发了一款客户端应用程序,此时这个IPFS客户端可以看做成一个去中心化的百度网盘.用户往IPFS网络上存储一个文件,应用程序返回一串哈希值,这串哈希值就是该文件的唯一凭证.下一次凭借这串哈希值又可以从IPFS网络上把文件下载到本地.以太坊上的应用程序就可以借助IPFS的能力,将所有数据量大的资源文件都存在IPFS网络上,文件返回的哈希值数据量很小,这些哈希值就可以代替文件存储在以太坊的区块链上.IPFS底层是如何存储数据内容的呢?用户往IPFS网络上传一段视频,视频将自动分割成若干片段,每个片段大小可能为几百k,这个视频可能被分割成20个片段,也可能是30个片段.分割完之后,这些视频碎片会随机分发到网络上的各个节点存储起来.节点就是安装了客户端接入IPFS网络上的计算机.视频被分割成那么多片段,那视频打开和下载岂不是会很麻烦吗?这一点完全不用担心,上传到IPFS网络的文件首先被分割成若干片段,文件整体通过算法加密生成一串唯一的哈希值--文件索引.每个小片段也都通过加密算法生成了唯一的哈希值,然后将小片段的哈希值按照文件原有的次序排成哈希列表,这份文件中除了视频的片段、哈希值列表和文件索引,还包含一个内容摘要,当用户想要下载视频的时候,只需要搜索这份文件的索引,就可以顺利打开或者下载视频.IPFS的行为模式和电驴资源分享很像.但是它存在致命的弱点,比如视频上传到IPFS网络,视频碎片分发到不同节点存储,可一旦那些节点关机了,那岂不是视频资源就无法下载了.Filecoin的出现能解决上述问题,Filecoin是使用IPFS传输协议构建的数字货币,俗称文件币.狭义上理解,Filecoin = 比特币 + IPFS.Filecoin能解决IPFS的两大难题.Filecoin通过挖矿的奖励机制促使更多的节点一直保持在线状态.Filecoin会将上传的文件碎片在不同节点上多做备份,保证40%的节点出现问题时还能保持文件的完整性,真正做到数据永不丢失.Filecoin的目的就是为了构建一块用于存储大型文件数据的区块链网络,它的出现对于区块链行业的发展有着革命性的意义.区块链应用的开发上面对几款主流的数字货币都做了详细的介绍,读者看到这里想必已经对整个区块链行业的状况有了基本的认知.接下来我想谈一谈面对迅猛发展的区块链技术,作为IT领域的从业者,我们能做些什么?基于以太坊的智能合约,软件团队开发一些DApp(去中心化应用)服务于公司业务.DApp的开发门槛并不高,很多web开发者通过短期的学习便可上手. 模仿以太坊,软件团队从头研发一条公有链对外提供收费服务.与以太坊相比,企业应该突出自家区块链的的优势.比如降低开发的门槛,增强智能合约的能力,提供部署运维监控方面的支持. 模仿以太坊,软件团队从头研发一条联盟链对国家银行、政府机关或大型商户提供服务.联盟链的发展对社会生活能产生很多积极的影响,也是国家投资重点研究的对象之一. 超级矿机的研发和销售. 普通服务器安装强化后的硬件和客户端软件就变成了超级矿机. 那如何强化呢? 硬件团队通过实际测试获取最佳硬件配置,达到算力的最优值. 软件团队通过优化客户端应用程序的底层算法,架构和业务以及系统驱动,达到提升算力和封装速度的目标.另外优化后的客户端应用程序也可以单独销售. 企业对外提供超级矿机的托管服务.开发者需要基于矿机群开发部署运维脚本和监控程序. 企业通过数字货币官方开放的rpc接口开发周边应用.比如网页或者小程序方便客户查看自己的收益情况. 结尾很多开发工程师原来在公司主要做页面、开发App等,后来转型成为了区块链技术人员.原来那些项目的程序、应用都是中心化的,那么如何把那些中心化的思想理念转变成去中心化的,这需要很多技术人员去了解和思考.另外很多区块链项目都在githup上开源了,代码也是公开的,比如比特币和以太坊.通过源代码理解它们的运营机制,学习怎么去写去中心化的应用和设计原理,然后参与到去中心化项目当中.发布于 2021-07-20 22:46区块链技术数字货币区块链价值赞同 15610 条评论分享喜欢收藏申请转载文章被以下专栏收录kay的世界更自
区块链是什么,如何简单易懂地介绍区块链? - 知乎
区块链是什么,如何简单易懂地介绍区块链? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册生活调查类问题货币金融区块链(Blockchain)区块链是什么,如何简单易懂地介绍区块链?关注者44,304被浏览13,196,494关注问题写回答邀请回答好问题 21156 条评论分享1,509 个回答默认排序maxdeath信息论博士,区块链博士后 关注更新在20191025之后,说一些新的关于区块链的发展:1,区块链的应用。首先先说央行数字货币——央行数字货币的技术其实早就成熟了,都用不到区块链,因为区块链的目的是去中心化,而央行数字货币用不到这个。当然,采用区块链的央行数字货币技术也早就有了(参见RSCoin),这里面可能会在某些环节采用区块链技术去中心化——例如货币的发行仍旧是中心化的,但是流转中的管理和验证可以通过区块链技术去中心化到其他银行。同时,据我所知,官方早就有一个数字货币研究所在研究这个很久了。我在很早就写过,从大势上,货币的数字化是必然的,但这和比特币是两码事,看起来可能会更像支付宝。然后,现在facebook来了一出libra(请参见我关于libra的文章https://zhuanlan.zhihu.com/p/69941436),我觉得从很大程度上推动了这次区块链的新闻,也推动了央行数字货币的推出。libra本身只代表facebook的野心,目前来看,他们的野心很有可能不会成功,但是也许是这种野心和指明的技术方向让国家产生了紧迫感——因为就算现在libra的所有成员都退出得差不多了,libra本身也前途未卜,但是万一类似的框架被搭起来又吸引了其他的重量级成员加入,那么国家在这上面就失去了主导权。因此,根据最近的新闻,央行的数字货币应该已经非常接近了。但这点,并不足以突然让“区块链”成为国家战略,这里说的区块链,一定是包含数字货币之外的其他应用的。区块链最引人遐想的应用,无疑是以“以太坊”为代表的,用区块链来做一个“全球计算机”,然后,用“智能合约”来编写在这台全球计算机上运行的软件(又被称为Dapp,即去中心化应用)。简单来说,这个全球计算机的好处在于,你可以把一切想要“去掉中间商赚差价”的事情,全都搬到这上面来做,而不需要依赖于某个大企业作为可信中心,例如银行或者互联网巨头。关于这个问题,可参见这篇https://zhuanlan.zhihu.com/p/28930323然而,这种全球计算机的设想在这两年间暴露出了非常多的问题,让人看不到短期的解决希望。于是,从这次区块链的新闻中透露出来的应用方向,“不可篡改”这个区块链的特点,以及它在存证、溯源、防伪、征信等方面的作用。这个,是目前在落地上做的最成熟,也是能够实打实地看出来区块链对比于传统中心化系统优势的应用。2,区块链技术这次战略中最主要提出的,是“要掌握区块链核心技术”,那么区块链的核心技术是什么呢?区块链相关技术有很多方面,我可以把它大致分成4类:1),共识算法;2),隐私保护技术和相应密码学技术;3),智能合约相关技术;4),面向应用相关技术。其中,前三者可以认为是底层,后两者是上层。1),其中,共识算法是区块链最核心,也是整个技术发展和学术界最热衷的领域:大量的公链项目都追求共识算法的创新,同时,大量的研究者也投身于这个领域,然而,大多在国外(我之前主要研究方向也是这个领域)。这点其实并不意外——众所周知,国内很少人愿意搞基础理论研究。但是共识算法中的涵盖面非常广,其中有一个概念非常重要——有许可和无许可,有许可共识算法要求所有参与节点的身份已知,主要采用类BFT算法。而无许可共识算法则允许任何节点只要达到某些条件就能进入,无需事先在任何系统中注册身份,而POW和后来衍生出的POS以及其他许多POx类算法都在此列。前者,多用于联盟链,而后者多用于公有链。其中,两者发展至今日,在速度和延迟上的差异已经不大了,归根结底的差别就是前面说的有无许可的差别。而无许可共识算法由于无许可的特性,又引出了一个很重要的概念叫“激励机制”,比如比特币的挖矿,于是,又衍生出了“货币”。于是,就又衍生出许多非常有趣的方向,例如:ASIC矿机,链上治理,加密经济学等等。以上,哪些方向可能会被认为是这次战略中的“核心技术”呢?我个人更看好许可共识算法的相关技术,而且,这类共识算法也可能布上支付宝的道路,会摒弃很多意识形态方面的需求,追求速度更快,规模更大,使用更方便,更标准化。而非许可类的共识算法,则面临着更高的风险——首先,对于“币”这个事的政策并不明确;其次,在之前所说的应用方向上,公有链相对于联盟链并没有显著的优势。2),其实区块链技术本身采用的密码学技术并不高深也不复杂,无非是哈希函数和数字签名这两个非常经典和简单的密码学工具而已。然而,由于区块链技术和密码学天生的契合性(大部分早期研究区块链的学者都来自于密码学领域),同时,由于“加密货币”这个词,即:cryptocurrency,(注:在英文中,这个词被用来指代所有类似于比特币之类的货币,而不是中文领域中常用的“数字货币”),导致大部分人都认为密码学天生和区块链是联系到一起的。实际上,区块链技术本身并用不到特别先进的密码学工具(当然,一些新的共识算法中采用了一些新的密码学工具)。但是,其中最重要的密码学挑战,是隐私保护技术,而其中,可能会用到的,包括零知识证明,同态加密等目前还在发展之中的密码学工具。这点,其实并不是区块链本身的需求,但又和区块链紧紧联系在一起——原因,还得说回之前区块链的性质和区块链的应用上:首先,区块链最大的特点是所有上链的数据必须通过所有节点的验证,然而,如果区块链得到了大规模应用,这就代表了所有的节点都会获取所有的数据。好吧,我们现在不信任中心,有很大的一部分原因是中心获取了我们所有的数据,而现在倒好,用了区块链去中心之后,所有人都可以获取我们所有的数据了。因此,如何在能够保证隐私的同时还可以享受区块链带来的去中心化优势呢?这需要所有节点能够在不知道数据内容的情况下,还能够对数据的有效性进行验证,例如:在不知道你是谁,具体有多少钱,你想要支出多少钱的情况下,验证你确实有一笔钱可以来完成这笔支出……这听起来像是天方夜谭,然而,实际上我们有一种密码学工具可以实现它——叫做零知识证明。然而,目前零知识证明尽管一直在发展,但是目前仍存在很大的局限性,这种局限性是效率——我们有了一些高效的证明方式,例如:我们可以很快地证明某个未知的数比另一个已知数大,或者我们可以证明某个未知的值来自于某个集合。然而,这些高效的零知识证明,还不足以覆盖区块链的所有应用。因此,可想而知,这些新加密技术,尽管不是区块链技术中的必须品,却是区块链技术能够得到广泛应用的必需品,所以一定是“核心技术”中的一部分。3),智能合约相关的技术,实际上包括语言,包括编译……这些,实际上相当于是当我们已经有了区块链作为底层之后,如何使用它的问题。在这上面目前还没有一个非常明确的方向,因为,其实目前在尝试的思路有几种:i,以太坊式的,高度自由的图灵完备的系统。然而问题是,写程序太容易出错了,而且出错的代价太大。ii,Hyperledger-fabric式的,高度模块化的系统,然而,极度复杂,复杂到想要采用HF的公司,要么放弃,要么花钱请IBM的人帮他们做。iii,Libra式的,专注于某项应用的系统,例如libra的move语言就明白地说了,我们不追求图灵完备,我们的目标是做一个更方便于实现各种金融场景的语言——这可能是个趋势,但是还没有经过足够的检验。这些方向,在目前的尝试还很少。大部分区块链项目仍旧采用以太坊式的系统,或者加以改进。然而,我认为这一点很有可能成为“区块链的核心技术”中最重要的部分——因为一旦区块链上升到了国家战略的高度,那么势必会诞生大量的需求、场景和用户,于是才会有充分的尝试和实现的平台。由此,可能会衍生出一个最适合区块链的语言和开发工具,而这个,会如同OS一样,成为一个新的世界范围内的标准。而从目前来看,在其他的区块链项目都在挣扎着寻求落地的时候,可能只有中国有这样的土壤能够诞生出这样的标准。这大概就是把区块链作为国家战略的原因。4),应用相关的技术。其实在区块链应用方面最大的技术难点并不在技术上。例如:区块链存证,如果我们做一条联盟链将相关各方作为共识节点然后把证据上链,那么,这个证据就是无法篡改的了。这道理大家都懂,然而问题在于:谁来做这个事呢?证据怎么数字化?怎么运行区块链?给出数据我的好处在哪里?最重要的是,谁掏钱?区块链目前落地最大的难点,在于其相比传统的中心化方案,除了在存证,溯源方面的一些场景下,找不到明显的优势,也就找不到可行的商业模式。于是,也就很难通过市场的方式推行出去,近两年币市的低迷已经证明了这一点。然而,这一切都会在国家的支持下产生变化,于是,就如同中国互联网产业从模仿学习国外到开始向外输出抖音一样,中国希望能在区块链领域,能够激发出更多的尝试和场景。于是,在这些场景中,我们会积累相关的经验、技术和商业模式,从而将这种模式在出口到国外去,而这点,也会是区块链核心技术中非常重要的部分。——————————————————————————————首先要搞清一个问题——比特币是区块链,但是区块链并不是比特币。于是,在区块链的这个问题回答里,提到“矿工”,“挖矿”,“最长链”,“分叉”等等词的,其实都不准确。写一点上个月讲课的内容——个人觉得大部分的回答,包括google搜出来的或者wiki的,都不能很好地解释区块链是个什么东西。因为讲比特币的人很多,懂比特币的人也很多,但是具体到区块链,现在并没有一个很清楚的定义说什么是区块链,基本上所有的介绍里都是这样的:比特币——〉区块链是比特币的底层技术。或者比特币——〉比特币是一种区块链。具体到什么是区块链的问题,目前没有看到很好的定义和介绍,更多的是大而化之地讲区块链的意义在哪里的空泛文章,要不然就是一水的矿工和挖矿。所以我来从纯理论角度说一下我个人对区块链的定义:1,区块链是一个放在非安全环境中的分布式数据库(系统)。2,区块链采用密码学的方法来保证已有数据不可能被篡改。3,区块链采用共识算法来对于新增数据达成共识。具有以上三个性质的系统,就是区块链。1,区块链是一个放在非安全环境中的分布式数据库(系统)。这里的要点有两个:(1)分布式,(2)非安全环境。首先,这是一个分布式的,去中心化的系统。所以,有一个中心服务器或者节点的,不是区块链。节点都是安全的,无恶意的,那这不是区块链。同理,从应用的角度讲,如果你的应用必须要使用中心节点(例如要用超级计算机做深度学习)或者没必要考虑节点不安全的情况(例如某个安全的工厂里的传感器),那么并不需要考虑区块链技术。至于后面的词“数据库”,目前大部分成熟的区块链都是数据库,例如比特币就是一个分布式账本,而账本其实就是数据。然后,根据数据的格式,又可以分三种——1,数据是完全不相关的,只是达成的共识,没有有效无效之分;2,数据有某些逻辑结构,例如账本中,一笔交易实际上除了金额,还有输入和输出,连接到之前的交易,这些数据需要通过逻辑验证(例如交易中,节点需要验证输入的交易是否有效);3,数据拥有图灵完备的逻辑,而验证的时候需要通过节点使用算力运算,每笔交易可以有不同的输出和状态,每个节点要做的不仅仅是验证交易的真实性和输入的正确性,还要根据交易里的逻辑读入数值,进行验算然后再验证结果。比特币的系统就是第二种,又叫分布式账本;以太坊是第三种。第三种可以支持智能合约。用比特币举例的话,1,它是一个完全去中心化的系统,2,它放在一个非安全的环境,它并不要求所有使用比特币的人都没有恶意。2,区块链采用密码学的方法来保证已有数据不可能被篡改。这个是误解最多的部分,因为很多人一提到区块链就只觉得是这个。诚然,这部分很重要,而且确实区块链也因此得名,但这只是区块链的定义的一部分。这个部分的两个核心要点是:(1)密码学哈希函数,(2)非对称加密。两个都是密码学的基础概念,网上都有非常清晰的定义,我只简单说下:(密码学)哈希函数:一个函数Y=H(X),有如下性质:1,有X可以很容易算出Y;2,有Y不可能算出X;3,有Y不可能找到另一个X'使得H(X')=Y;3.5,如果X和X'相差很小,H(X)和H(X')则完全不相关。这东西主要用于验证信息完整性——在一个信息后面放上这个信息的哈希值,这个值很小,例如256bit,而且计算方便。收到信息之后收信人再算一遍哈希值,对比两者就知道这条信息是否被篡改过了。如果被篡改过,哪怕只有一bit,整个哈希值也会截然不同。而根据哈希函数的性质,没有人能够伪造出另一个消息具有同样的哈希值,也就是说篡改过的数据完全不可能通过哈希校验。非对称加密:这东西很好理解——对称加密就是有个密钥,可以理解成保险箱钥匙,你把消息加密变成密文,没有人能看懂这是啥,然后同一把钥匙解密成原来的消息。非对称加密就是有两把钥匙,一把叫公钥,一把叫私钥,用其中一把加密的话,只能用另一把解密,反之亦然。另一个重要的性质是,给你密文,明文和其中一把钥匙,你还是解不出来另一把钥匙是啥。原理基本上是基于一些困难数学问题,例如因数分解和离散对数,常用的有RSA,Diffie-Hellman和ECC(椭圆曲线),比特币用的是椭圆曲线。非对称加密除了和对称加密一样用于信息加密之外,还有另一个用途,就是身份验证。因为通常情况我们假设一对公私钥,公钥是公开的,而私钥只有本人有,于是一个人如果有对应的私钥,我们就可以认定他是本人。其中一个重要的应用就是数字签名——某个消息后面,发信人对这个消息做哈希运算,然后用私钥加密。接着收信人首先对消息进行哈希运算,接着用相应的公钥解密数字签名,再对比两个哈希值,如果相同,就代表这个消息是本人发出的而且没有被篡改过。以上是基础知识,至于区块链怎么实现的,很简单:交易(数据)写在区块里。第一个区块叫创世区块,写啥都行。从第二个区块开始,每个区块的第一部分有前一区块的哈希值。此外,区块里的每一笔交易(数据),都有发起人的数字签名来保证真实性和合法性。于是,先前区块里的任何数据都不可被篡改,原因见上。到这为止有人可能会问:为什么要弄个链啊?直接所有数据加个哈希值不就行了?因为——这个数据库并不是静止的啊。数据库的数据是会增加的,而每次增加的数据,就是一个区块,于是这些生成时间不同的区块,就以这种形式链在一起了。至于如何增加区块,就涉及到第三个部分——共识算法。3,区块链采用共识算法来对于新增数据达成共识。共识算法的目的,就是让所有节点对于新增区块达成共识,也就是说,所有人都要认可新增的区块。对于有中心的系统,这事很简单,中心说什么大家同意就好了,但是放到去中心化系统里,尤其是当有些节点有恶意的时候,这东西非常复杂,计算机科学里有个相应的问题,叫做“拜占庭将军问题”或者“拜占庭容错”(BFT)。有很多用Lamport给出的那个例子来讲BFT的东西,我在这里换一个角度。Lamport大神当年提出这个问题的时候在斯坦福研究中心给NASA做项目,他提出这个问题的原因并不是考虑类似比特币的应用场景(整个互联网成千上万个用户),而是考虑特殊背景下的一个简单的系统——航天飞机的控制系统。如果有航空背景的同学可能知道,飞机有三套独立的控制系统,为什么呢?因为任何系统都不可能完全不出故障,就算飞机控制系统的故障率已经极低了,还是有飞到一半这东西坏了的可能。于是我们可以弄两套独立的系统,同时坏掉的几率就会大大降低。可是两套独立的系统还是不足以容下一个系统的错误——一架飞机迎面飞来,两套系统一个说要躲,一个说不躲,那到底是躲还是不躲呢?所以我们需要三台独立的系统,这样,如果有一个系统有故障了,还有两台能正常工作,能少数服从多数给出正确的结果。学过纠错码的同学对这个应该不陌生,这个系统的输出之间的汉明间距是3,所以可以纠正一位的错误。然而,对于航天飞机,在冷战的背景下,万一某个系统不是坏掉了,而是被敌人控制了呢?三套系统还够吗?答案是否定的,因为不同于单纯只是坏掉的节点,恶意节点可以做一些别的事来阻止整个系统达成共识。这个部分略复杂要讲的话要单开一帖,所以我们只说最简单的情况(无签名同步系统)。我们管三个系统叫ABC,正常工作流程是三个人每次得出结果就互相告诉一下,然后每个人选多数人同意的结果。这是个没有中央节点的分布式系统,也就是说三人不能聚在一起开个会啥的,仨人只能两两通信。这个时候,假设C有恶意,它的目标是破坏这个系统。于是,假设正确的读数是1,A和B都得出了1这个结果,这个时候C这个小婊砸告诉A说“我的结果是0,B也觉得是0”,同时打个电话跟B说“哎我觉得是0,A也这么说”,于是A和B就懵逼了。假设你是A,你听到了两个不同版本的B的答案,B说自己选了1,C说B选了0,可是A这个时候没法知道B和C谁才是那个骗了自己的小婊砸,因为如果B真的告诉A选了1然后告诉C是0,他听到的结果和现在是一模一样的。于是结论是,拜占庭容错,也就是需要容下一个恶意系统而非错误系统,需要4个独立系统。(当然,签名可以解决这个问题,但是这只是同步系统的情况,在异步系统里这问题会变得更加复杂,原因是正常节点的回答有延迟,而恶意节点可以不回复,所以,正常节点一方面要等另一个节点的回复,但是它又不知道对方会不会回复因为对方有可能会有恶意,而在收到回复之前,它完全没法判断对方是正常节点还是恶意节点,这个问题叫异步BFT,也是BFT的最复杂的情况,这里不再做更多的解释,下文提到的BFT算法,其实都是异步BFT的算法)Lamport提出这个问题之后,有无数的算法被提出来,统称BFT(拜占庭容错)算法,其中最有代表性的叫PBFT,然后由于最近区块链的热度,无数针对区块链应用场景优化过的BFT算法也涌现出来,但是一个重要的问题是,所有目前的BFT算法,都只能应用在小型网络里。原因很简单——因为BFT这个问题是设计给类似于航天飞机控制系统这样的场景的,早期的算法考虑的也主要是这种场景。PBFT论文里考虑的就是一个5个节点的系统。就算算上新提出的BFT算法,也最多应用在不超过100个节点的网络里。这个问题被搁置了很久,直到比特币的诞生——中本聪从某种意义上简化了这个问题,在比特币中,同样是共识问题,中本聪引入了一个重要的假设——奖励,他之所以能这样做的原因是,他考虑的是一个数字货币,也就是说共识这个东西是有价值的。于是在这样的系统上,他提出了工作证明机制。所有挖矿,矿工,最长链,分叉等等等等,都可以归结为一句话:说话是要有代价的,说真话是有好处的,说假话是要扣钱的……这就是目前两类共识算法的核心区别:BFT共识模型:恶意节点可以干任何事。比特币共识模型:模型中有公认的“价值”,每个节点说话都需要一定代价,诚实节点会受到奖励,而恶意节点由于只付出代价而收不到奖励,变相受到了惩罚。也就是说,BFT共识模型其实涵盖了比特币共识模型的场景,比特币共识其实放宽了BFT共识模型的限制。比特币共识对于BFT的优势在于,由于给恶意节点的能力做了限制,恶意节点所能造成的破坏大大降低了,尤其是对于异步系统——BFT共识里恶意节点可以一直拒绝相应而诚实节点还需要一直等它(因为不知道它是不是恶意的),而对于比特币共识,随你便,你不响应就没有奖励可拿。于是,比特币共识算法可以应用于成千上万个节点,而且,任何人随时都可以加入,不需要预先在网络里注册自己的身份(而BFT算法里,网络中节点的数量和身份都必须是已知的)。但比特币共识的缺陷在于,首先,得有个有价值的东西,也就是说放在比特币里这东西还行,以太坊的话现在可能也凑合,但是其他数字货币嘛……BFT共识有个严格的限定,就是恶意节点不能超过总数的1/3,然而其实比特币共识没有这样的限制,唯一的限制就是假定大部分节点都是理性的,是逐利的,也就是会采用最佳的策略来赚取最大的价值。所以,严格来说,自私挖矿这种行为在比特币共识里是允许的,而多数攻击,其实也算不上一种攻击,因为这些都没有突破比特币共识的框架——如果这个价值无限大,比特币共识是非常可靠的。然而这并不是事实,因为并不是每个虚拟货币都和比特币一样值钱,而在价值不高的情况下,比特币共识的前提就站不住脚了——当损失可能是几千上万块钱的时候,假定每个人都是理性的是合理,但是如果损失就几分钱这个假设就相当扯淡了,事实上也发生过一个比特币矿池跑到另一个货币恶意挖矿搞垮对手的情况。此外,比特币共识是最长链共识,也就是说最长链-->大多数-->理性,于是分叉是允许的。于是导致了一些附带的问题,例如,如果网络有延迟,你怎么知道你手里那条链是整个网络里当前的最长链呢?于是,如果需要传输的数据多,那么延迟加大。延迟加大,那么越多的人手里的链并不是全网络的最长链。于是,全网络的最长链,就没法代表大多数。这就打破了比特币共识的根本,这也是为什么比特币区块频率是10分钟一块的原因。比特币目前有个著名的7币交易每秒的上限,而现在扩容闹得很厉害,以太坊的交易格式不同,也用了新的工作证明,想要改成权益证明,但这些都不本质。真正本质的是,在目前的网络条件下,如果适用全网的话,比特币共识的交易量基本上超不过100笔交易每秒这个量级。上面这几段有可能太深了,简单来说,BFT共识和比特币共识的区别可以这么理解:BFT共识:来,大家开个会讨论一下集思广益啊,讨论出大家都满意的结果为止。问题:开会的效率大家都懂,人越多越不容易出结果。只能用于少数节点,用于上千个节点的话……大家想象一下一天开一次人大的场景。比特币共识:你的诗念得不错,组织已经决定了,今天就你来当领导了,做得好有奖,做不好扣钱。问题:奖励几千块钱还好,奖励几分钱谁好好干?而区块链也就因此被分成了泾渭分明的两类,很多人都听过什么公有链私有链联盟链,但是,如果你们以为这是根据应用区分的就大错特错,其实,这两种区块链最本质的区别,还是因为共识模型或者说算法不同——BFT算法没法应用于大量节点,所以用BFT算法的就没法做公有链。而比特币共识得有个价值体系,这东西去做私有链联盟链就很不靠谱,因为一个单纯逐利的人的假设还算靠谱,但是如果对象是公司的话,公司的利益就太复杂了,不能简单认为他们只追逐区块链上那点价值。1,公有链,以比特币,以太坊和所有虚拟货币为代表,都采用比特币共识,共识算法基本上都采用工作证明机制,也就是挖矿那些,这种机制其他回答里已经讲得够清楚了,就略过。工作证明一切都好,除了费电……费多少电呢?差不多和一个百万人级别的城市那么多。此外以太坊的创始人特别喜欢权益证明,似乎很快要小范围投入使用(100个区块里一个用权益证明)。但是目前为止,大家对这东西的可靠性还持观望态度。2,私有链和联盟链。以IBM的hyperledger-fabric,以及一大堆其他的类似于tendermint,甚至R3 corda和ripple为代表,都用BFT共识。其实这方面的应用已经很多了,问题是,1,目前基本上所有应用给人的感觉都还是为了做区块链而区块链,真的觉得这东西好到不可或缺的应用还基本没有。2,由于为了区块链而区块链,其实很多场景的安全性和可靠性还值得怀疑,这点经常被被公有链的支持者诟病。嘛,以上就是个人定义的区块链了,顺带概述一下现在区块链领域的发展。之所以写这个帖子,就是因为发现明明是问区块链的问题,所有人都在讲比特币,都在讲挖矿,都在讲工作证明……工作证明不能说过时,也的确是现在公有链唯一可靠的共识算法,但是这东西确实是业界除了比特币死忠之外谁都不想要的东西好吗……编辑于 2019-10-28 14:29赞同 4825251 条评论分享收藏喜欢收起盗盗狂热追随者... 关注友情提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果让你觉得困惑,可以在评论下方留言或者私信我一起探讨。最后,也是受限于自己知识结构的不完整,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。另外,作为一篇科普性文章,大家可以随意转载,注明这篇文章的出处和作者即可,无需再单独私信询问。---首先不要把区块链想的过于高深,他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器节点的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的节点,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。 上图中,高亮的点就是区块链系统中分布在全球各地的一个个节点;而这些节点可以简单理解为一台服务器服务器集群为了更简单的阐述那篇文章所构建的世界观,文中所讨论的节点全部粗暴的理解为官方参考实现节点,即最标准的一种节点类型,这些节点不仅可以参与挖矿共识、还可以数据存储和数据点对点传递;不涉及其他复杂的节点类型。关于节点的分类,可以阅读我的专栏文章《区块链节点与钱包的分类、边际和使命,看这篇文章就足够了》# 问题的由来我们反复提到区块链是一个去中心化的系统,确实,「去中心化」在区块链世界里面是一个很重要的概念,很多模型(比如账本的维护、货币的发行、时间戳的设计、网络的维护、节点间的竞争等等等等)的设计都依赖于这个中心思想,那到底什么是去中心化呢?在解释真正去中心化之前,我们还是先简单了解下什么是中心化吧。中心化?回忆一下你在网上购买一本书的流程:第一步,你下单并把钱打给支付宝;第二步,支付宝收款后通知卖家可以发货了;第三步,卖家收到支付宝通知之后给你发货;第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;第五步,支付宝收到通知,把款项打给卖家。流程结束。你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。你一定会摆出一个巨大的问号脸 ⊙.⊙?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!假如说,支付宝程序发生重大BUG,导致一段时间内的转账记录全部丢失,或者更彻底一点,支付宝的服务器被ISIS恐怖组织的一个导弹全部炸毁了。而我刚刚转出去的100元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。上述就是中心化最大的弊端——过分依赖中心和权威,也就意味着逐渐丧失自己的话语权。去中心化?那么去中心化的形态是什么样子呢?还是拿刚才那个例子继续,我们构建一个极简的去中心化的交易系统,看看我们是如何在网络上从不认识的卖家手里买到一本书的。第一步,你下单并把钱打给卖家;第二步,你将这条转账信息记录在自己账本上;第三步,你将这条转账信息广播出去;第四步,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;第五步,卖家发货,同时将发货的事实记录在自己的账本上;第六步,卖家把这条事实记录广播出去;第七步,你和支付宝收到这条事实记录,在自己的账本上分别记录;第八步,你收到书籍。至此,交易流程走完。刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,对不起卖家的账本还存在,我的账本还存在;这些都是这笔交易真实发生的铁证。当然,在这套极简的交易系统中,你已经发现了诸多漏洞和不理解,比如说三方当中有一个是坏人,他故意记录了对他更有利的转账信息怎么办;又比如说消息在传递过程中被黑客篡改了怎么办等等等等。这在以往的计算机概论或者计算机网络书本上中可能都有提及到——“类两军”和“拜占庭将军”问题。这里就不打算赘述,因为暂时跟主线不相关,感兴趣的同学可以去Google或者百度一下,你只需要知道,在我们下面即将展开讲到的区块链系统中,通过巧妙的设计,足以解决上述存在的BUG。既然话已说到这份上,相信了解一点技术、特别是有运维背景的同学大概能够从极简交易系统中窥视到了更多区块链的一些影子——分布式存储,通过多地备份,制造数据冗余让所有人都有能力都去维护共同一份数据库让所有人都有能力彼此监督维护数据库的行为在我看来,你猜测的基本上没错。其实这些就是区块链技术最核心的东西,外人看起来高大上、深不可测,但探究其根本发现就是这么简单和淳朴。当然,这里面肯定会有很多很多很多细枝末节的技术需要重构。如果你差不多认同上面的观点,那我们应该基本上可以达成共识,分布式部署肯定是构建去中心化网络理所当然的解决方向——通过P2P协议将全世界所有节点计算机彼此相互连接,形成一张密密麻麻的网络;以巧妙的机制,通过节点之间的交易数据同步来保证全球计算机节点的数据共享和一致。哈哈,说的轻巧,“交易数据这么重要的东西,在一个完全不信任的P2P网络节点中以一种错综复杂的方式传递,数据的一致性和安全性谁来保证,如果说互相监督,他们到底怎么做到?”好了,不卖关子了,下面让我们围绕这个最最最最直接的问题开始进入到真正区块链的世界,抽丝剥茧看看它到底是如何一步一步形成的,又是如何一步一步稳定运转。# 从全球节点到交易数据这张图的制作的意义为的是帮助你在宏观上先快速理解区块链中所涉及到的相关名词以及他们的层级关系。同时,文章的知识结构和设计思路也大抵上也会按照:首先,将区块作为最小单位体,讲述极简区块链系统是如何运转的;接着,进入到比区块更小单位体——交易记录,理解区块链是如何处理数据的;最后,将所有知识点柔和在一起,重回到区块和区块链,完整讲述整个工作流程。希望你在这个引导和结构下有一个比较好的阅读体验。Let's go~# 区块,混沌世界的起源既然已经达成共识,所以,我们事先构建好了一个去中心化的P2P网络;同时,为了让读者朋友们听起来更轻松,我先粗暴的规定在这个极简的区块链系统里,每十分钟有且仅产生一笔交易。故事继续,在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块(你可以将区块想象为一个盒子),这个区块里放着一些数字货币以及一张小纸条,小纸条上记录了这十分钟内产生的那唯一一笔交易信息,比如说——“小A转账给了小B100元”;当然,这段信息肯定是被加密处理过的,为的就是保证只有小A和小B(通过他们手上的钥匙)才有能力解读里面真正的内容。这个神奇的区块被创造出来之后,很快被埋在了地底下,至于埋在哪里?没有一个人知道,所以需要所有计算机节点一起参与进来掘地三尺后才有可能找到(找到一个有效的工作量证明)。显然,这是一件工作量巨大、成果随机的事件。但是呢,对于计算机节点来说,一旦从地底下挖出这个区块,他将获得区块内价值不菲的数字货币,以及“小A转账给了小B100元”过程中小A所支付的小费。同时,对于这个节点来说,也只有他才有权利真正记录小纸条里的内容,这是一份荣耀,而其他节点相当于只能使用它的复制品,一个已经没有数字货币加持的副本。当然这个神奇的区块还有一些其他很特别的地方,后面我们会再细细聊。为了更好的描述,我们将计算机节点从地底下挖出区块的过程叫做「挖矿」,刚才说了,这是一件工作量巨大、运气成分较多、但收益丰厚的事儿。过了一会儿,来自中国上海浦东新区张衡路上的一个节点突然跳出来很兴奋的说:“ 我挖到区块了!里面的小纸条都是有效的!奖励归我!” 。虽然此刻张衡路节点已经拿到了数字货币,但对于其他计算机节点来说,因为这里面还涉及到其他一些利益瓜葛,他们不会选择默认相信张衡路节点所说的话;基于陌生节点彼此不信任的原则,他们拿过张衡路节点所谓挖到的区块(副本),开始校验区块内的小纸条信息是否真实有效等等。在区块链世界里,节点们正是通过校验小纸条信息的准确性,或间接或直接判断成功挖出区块的节点是否撒谎。(如何定义小纸条信息真实有效,后面会讲解,这里暂不做赘述)。在校验过程中,各个节点们会直接通过下面两个行为表达自己对张衡路节点的认同(准确无误)和态度:停止已经进行了一半甚至99.99%的挖矿进程;将张衡路节点成功挖出的区块(副本)追加到自己区块链的末尾。你可以稍微有点困惑:停止可能已经执行了99.99%的挖矿行为,那之前99.99%的工作不是就白做了嘛?!然后,区块链的末尾又是个什么鬼东西?对于第一个困惑。我想说,你说的一点没错,但是没办法,现实就是这么残酷,即便工作做了99.99%,那也得放弃,这99.99%的工作劳苦几乎可以视为无用功,绝对的伤财劳众。第二个困惑,区块链和区块链的末尾是什么鬼?这里因为事先并没有讲清楚,但是你可以简单想象一下:区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能事先已经执行了N次“从别人手上拿过区块 -> 校验小纸条有效性”的流程,肯定在自己的节点上早已经存放了N个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状。没错,这个链条,就是你一直以来认为的那个区块链。如果你还是不能够理解,没关系,文章后面还会有很多次机会深入研究。# 走进区块内,探索消息的本质上面我们构建了一个最简单的区块链世界的模型,相信大多数同学都已经轻松掌握了。但是别骄傲也别着急,这还只是一些皮毛中的皮毛,坐好,下面我们准备开车了。前面我们说到“大概每十分钟会凭空产生一个神奇的区块,这个区块里放了一张小纸条,上面记录了这十分钟内产生的这唯一一笔交易信息”。显然,十分钟内产生的交易肯定远不止一条,可能是上万条,这上万条数据在区块链世界是如何组织和处理的呢?另外,为什么在纸条上记录的只是某一次的交易信息,而不是某一个人的余额?余额好像更符合我们现实世界的理解才对。既然存在这样那样的疑问。现在我们就把视线暂时从“区块”、“区块链”这些看起来似乎较大实体的物质中移开,进入到区块内更微观的世界里一探究竟,看看小纸条到底是怎么一回事,它的产生以及它终其一生的使命:发起交易的时候,发起人会收到一张小纸条,他需要将交易记录比如说“盗盗转账给张三40元”写在纸上。说来也神奇,当写完的那一刹那,在小纸条的背面会自动将这段交易记录格式化成至少包含了“输入值”和“输出值”这两个重要字段;“输入值”用于记录数字货币的有效来源,“输出值”记录着数字货币发往的对象。刚刚创建的小纸条立马被标记成为“未确认”的小纸条。从地下成功挖出区块并最终连接到区块链里的小纸条一开始会被标记为“有效”。若这条有效的小纸条作为其他交易的输入值被使用,那么,这个有效的小纸条很快会被标记为“无效”。因为各种原因,区块从链上断开、丢弃,曾经这个区块内被标记为“有效”的小纸条会被重新标记为“未确认”。区块链里面没有账户余额的概念,你真正拥有的数字资产实际上是一段交易信息;通过简单的加减法运算获知你数字钱包里的余额。上面的1、2、3仅仅作为结论一开始强行灌输给你的知识点,其中有几个描述可能会有点绕,让你觉得云里雾里,没有关系,因为我们立刻、马上就开始会细说里面的细枝末节。上图,是区块内,盗盗在一张小纸条上记录下的交易信息,后被格式化的呈现上图就是从无数打包进区块内的小纸条中,抽取出来的一张,以及它最终被格式化后的缩影。单看右侧的图可能很容易产生误会,虽然看起来有多行,但实际上就是“盗盗转账给张三40个比特币”这一条交易数据另外的一种呈现形态。因为区块链世界里面这么规定,每一条交易记录,必须有能力追溯到交易发起者 发起这笔交易、其中所涉及金额的上一笔全部交易信息;即这笔钱从何而来的问题。这其实很容易理解,在去中心化的网络中,通过建立交易链、和通过交易链上的可溯源性间接保证数据安全和有效。我们继续看,在区块链世界里,我们是如何仅通过“盗盗转账给张三40个比特币” 这条交易信息完成转账流程的。其实跟现实中你在路边买一个包子的流程大抵上相同。第一步:判断是否有足够的余额完成交易这里我们再一次重申,在比特币的区块链世界里是没有余额的概念(以太坊的底层区块链有余额概念),余额是通过简单数字的加减最终获得,你拥有所谓的数字货币实际上是因为你拥一条交易记录,即 “盗盗转账给张三40个比特币”!这里,我们还是拿这条记录说事:追溯“输出值”是“盗盗”相关的全部有效交易记录作为,对有效交易中的数字进行简单求和,判断是否大于等于40,如果确实大于等于,则将这些有效的交易记录合并形成一条新的交易记录(如下图)。如果小于40,其实可以不需要再继续往下探讨。就上图的例子,我们追溯到曾经转账给盗盗的有效交易记录有“小A转账给盗盗10 btc”、“小B转账给盗盗20 btc”、“小C转账给盗盗 25 btc”,我们需要将这三条交易记录合并成一条更复杂描述的交易记录,即 “( 小A转账给盗盗10 btc + 小B转账给盗盗20 btc + 小C转账给盗盗 25 btc ) 转账给张三40 btc ”第二步:判断是否需要找零对追溯到的有效交易数字求和,如果发现大于需要支付的金额,需要将多出的数字重新支付给自己,相当于找零。对应生成了一条全新的交易记录(如下图)。就上图例子来说,我们最后合并成的交易记录 “( 小A转账给盗盗10 btc + 小B转账给盗盗20 btc + 小C转账给盗盗 25 btc + 盗盗转账给盗盗15 btc ) 转账给张三40 btc ” 事实上等同于“盗盗转账给张三40 btc”。其中“盗盗转账给盗盗15 btc”就可以理解找零。第三步:发出去,让全球节点认同和备份小纸条这条内部重新处理过的复杂交易记录被塞进区块,埋到地下,等待节点挖出来,一旦区块被挖矿成功,并且该区块最终被连在了区块链的主链上。张三将最终拥有了这条交易记录,而先前的“小A转账给盗盗10 btc” 、“小B转账给盗盗20 btc” 、“小C转账给盗盗25 btc”都将被视为已经使用过的交易记录——从此被贴上“无效”的标签,意味着这些交易记录将永远不会再被追溯到。我们最后一次重申,只是希望让你加深印象:拥有数字货币=拥有交易记录!通过设计巧妙的精巧密码学保证数据安全记录着交易信息的小纸条借助区块这个载体,在分布式的网络中以不同的轨迹错综复杂的传递,我们前面说了,你真正拥有的数字资产实际上是一段交易信息,而不是你常规意义上理解的货币。所以这个过程就需要重点解决两个问题:接受到的这条交易记录在传输过程没有被其他人所篡改接受到的这条交易记录确实是由发起交易的人所创造在这里,我们需要事先引入两个知识点,可能稍微有点难消化,但都是计算机领域较为成熟的和基础的概念。第一个知识点:SHA256()函数。你只需要知道,任意长度的字符串、甚至文件体本身经过SHA256函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,SHA256() 函数给出的输出结果都将发生翻天覆地的改变。注意,SHA256()函数是公开的,任何人都能使用。上图,仅仅一个小数点的变化,输出的结果已经翻天覆地第二个知识点:非对称加密。你也只需要了解,任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。有了这些知识点的加持,上面两个问题开始变得有解。下面我们来看下内部是如何扭转和工作的吧,这里拿“小A 转账给了小B 100元钱” 举例: 第一步:小A会先用SHA256函数对自己的小纸条进行处理,得到一个固定长度的字符串,这个字符串就等价于这张小纸条。第二步:小A使用只有自己知道的那一把私钥,对上面固定长度的字符串进行再加密,生成一份名叫数字签名的字符串,这份数字签名能够充分证明是基于这张小纸条的。你可以这么理解,在现实中,你需要对某一份合同的签署,万一有人拿你曾经在其他地方留下的签名复制粘贴过来怎么办?!最好的办法,就是在你每一次签名的时候,故意在字迹当中留下一些同这份合同存在某种信息关联的小细节,通过对小细节的观察可以知道这个签名有没有被移花接木。步骤一和步骤二的结合就是为了生成这样一份有且仅针对这条小纸条有效的签名。第三步:小A将「明文的小纸条」、刚刚加密成功的「数字签名」,以及自己那把可以公布于众的「公钥」打包一起发给小B。第四步:当小B收这三样东西,首先会将明文的小纸条进行SHA256()处理,得到一个字符串,我们将其命名为“字符串2”。然后,小B使用小A公布的公钥,对发过来的数字签名进行解密,得到另外一个“字符串1”。通过比对“字符串1”和“字符串2”的一致性,便可充分证明:小B接受到的小纸条就是小A发出来的小纸条,这张小纸条在中途没有被其他人所篡改;且这张小纸条确实是由小A所编辑。可以看得出来,加解密的过程几乎是一环套一环,中途任何环节被篡改,结果都是大相径庭。借助这一连串的机制,其实已经能够很好的在公开、匿名、彼此不信任的分布式网络环境中解决数字交易过程中可能遇到的很多问题。这个环节可能确实有点难理解,现在,我需要你停下来,静下心,花上几分钟闭目慢慢回味其中设计精湛的地方。掌握了这部分知识以后,我们在这里回答一下前面没有解释清楚的问题,「节点对区块的检验」检验的到底是什么?实际上就是:检验区块内的交易记录签名是否准确(是否被篡改)检验区块内的交易记录输入值是否“有效”(是否使用过)检验区块内的交易记录输入值的数字之和是否大于等于输出值的数字…# 重回“区块”和“区块链”的世界好了,对小纸条和交易记录的研究我们点到为止,其实信息量已经是巨大的了,让我们合上盖子,重回较大的实体、继续聊聊“区块”和“区块链”的话题。还记得,咱们在一开始讲到关于区块的特征吗?区块创造后被埋在地下,需要经过节点们马不停蹄的挖采、而且是凭运气的挖采才有可能获得——不仅仅如此,事实上他还有其他很多神奇的地方,比如说:凭空产生的区块在刚刚创建的时候会形成一股强大的黑洞效应,它会尝试将这段时间全世界各个节点上产生的所有小纸条(交易记录)统统吸进来;在合上区块盖子之前,同时会在区块内放上一些数字货币以及其他一些东西。区块拥有一个唯一的ID,但它只会在这个区块被节点成功从地下挖出来之后创建。这个ID至少会跟「区块内所有小纸条的集合」、「即将与之相连的上一个区块ID」以及「挖矿节点的运气值」等因素相关。既然前面我们已经简单了解了“SHA256()函数”这个东西,这里不妨透露给大家:“区块ID = SHA256(‘区块内所有小纸条的集合’+’即将与之相连的上一个区块ID’+‘挖矿节点的运气值’+’…’)” ;基于先前掌握的知识,然后你应该知道区块内任意一张小纸条的信息稍微做改动、或者节点挖矿运气好一点坏一点等等,当前区块的ID都会 “ biu~ ”的发生改变。基于上述1、2点,如果阅读足够仔细的同学可能会有些头大。在文章开头为了更好的描述,我在设计简化区块链系统的时候故意模棱两可了几个概念,这也许已经误导到了部分同学。这里不得不停下来和你一起修正下之前在你大脑中已经构建的区块链世界观。我们前面讲道,“在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块”。如何正确去理解这句话呢?——拥有上帝之眼的你,可以这么拆解问题、看待问题:同一个周期内,全网并不是产生唯一的一个区块等待挖掘;每个节点事实上都在周期性的创造区块和挖出区块;只是在某一个节点的视野里,它不能感知到另外一个节点上区块的产生。为何这里要特别强调“在某一个节点的视野里”,就是因为我们刚刚讲到,从区块的视角来说,区块的凭空产生,是基于即将与之相连的上一个区块ID;而从节点的视角来看,区块的凭空产生是基于当前节点区块链末尾的那个区块ID产生的。全网会尽力控制在一个周期内只有一个节点能够成功挖出区块,但是不能够完全避免多个节点同时挖出区块的可能性;如何尽力控制?比如说,当大伙挖矿的热情高涨、工作效率提高,区块会被埋在更深更广的地方等。简而言之,通过提高工作难度,来维持这个平衡。另外,值得注意的:产生区块、挖出区块、校验区块,他们的时间周期近乎相同。对于想从技术角度更加深入理解“区块”、“挖矿”本质的同学们,你们可以移步至我的专栏《探索比特币“挖矿”和“区块”的数学本质》,其中涉及到一些比较复杂的数学和技术细节,相信阅读完那部分内容之后,你对区块链会有更加透彻的认知。当然,对于绝大多数的吃瓜群众,看完那边内容可能会让你更加困惑,如果你不是十分的喜欢追根究底的话,我建议你还是直接选择跳过那块吧。至少在我看来,即便少了那部分内容,也不影响我们去理解区块链的魅力。分叉现在,我们终于对“区块”这个概念有了更全面的认识,文章开头讲的故事就可以继续展开来絮叨絮叨:假如几乎同一时间,「中国上海浦东新区张衡路」上的节点和「美国纽约曼哈顿第五大道」上的节点异口同声喊出来:“我挖到区块了!里面的小纸条都是有效的!奖励归我!”。其他节点也几乎同时参与了对这两个区块的校验,结果发现这俩都没毛病,各节点也开始犯困,因为在他们的视野里他们并不清楚最后哪一个区块应该会被主链接纳。算了!都连在自己区块链尾巴上吧,这时尴尬了,区块链硬生生的被分叉了!产生分叉你肯定在想,那还得了,这种情况继续下去,每个节点的区块以及他们整理维护的小纸条都将变得不一样,这已经严重违背了区块链世界里第一大最基本原则——所有节点共同维护同一份数据。所以,为了解决这个问题,区块链世界引入了一条新的规则——拥有最多区块的支链将是真正被认可有价值的,较短的支链将会被直接Kill掉。我们大伙都知道挖矿的过程存在巨大的工作量(如果没有任何难度,把区块扔在人群中,必然同一时间发现区块的节点数量将大大增加,也就会产生无数的支链,通过这个例子,你大概也就能够明白,比特币的区块链世界为什么需要设置工作难度了吧),并且在计算机的硅基世界里,不可能出现所谓 “同时” 的概念,哪怕纳秒的差别,那也总是会有先后顺序。所以理论上,“分叉”的这种僵局很快会在下一个区块被挖掘出来(以及校验区块)的时候被打破,实在不行下下个,或者下下下个……总之机制可以让整个分叉的区块链世界迅速稳定下来。“分叉”这种僵局在确认下一个区块(以及校验小纸条)的时候被打破,从而整个区块链世界迅速稳定下来就上图而言,所有基于张衡路节点挖矿获得的区块以及后续区块的那条分支被视为有价值,最终会全部保留了下来;其他节点会统一效仿那个拥有更长分支链的节点所做的决策。另外,值得一提的是,同一时间,较短分支上的区块会立即丢弃,而里面的小纸条也会随之释放出来,被重新标记上“未确认”。“双花”与“51%攻击”你可能已经开始困惑或者有点兴奋,末尾几个区块的排序在修复过程中,因为时间差肯定会产生一些模棱两可的地方,这往往会给数据安全埋下一颗雷。一个最简单的假设——我记录的一张小纸条很不巧地被归在了一条较短的支链上,这条支链在竞争过程中理所当然输掉了比赛,区块被丢弃、小纸条被无情的贴上“未确认”的标签。在等待下次区块重新确认的过程中,这个时间差内,我,好像、似乎可以做点什么坏事 ԅ(¯﹃¯ԅ) ,就比如说“双花”(双花,花两次,双重支付的意思)你脑海中也许很快浮过的这样的构想,可不可能通过下面这种方法触发双花问题的产生,从而让我不劳而获:假设有一个名叫X-Man的坏家伙,他控制了一个计算机节点,这个节点拥有比地球上任何一个节点算力都强大的计算机集群。首先,X-Man事先创造了一条独立的(不去广而告之)、含有比较多区块的链条。其中一个区块里放着“X-Man转账给X-Man 1000元”的纸条。接着,X-Man跟张三购买了一部手机,他在小纸条上记录下“X-Man转账给张三1000元”。张三已经比一般的卖家谨慎了,他在这条信息被三次确认后(即三个区块被真实挖出、校验和连接)才将手机给了X-Man。按照我们之前的理解,这条交易记录已经板上钉钉永远无法被串改。X-Man拿到手机之后,按下机房的开关,试图将先前已经创造的区块链条连接在自己这个节点区块链的末尾。大功告成,X-Man拥有了一条更长的区块链条,那些较短、存放着“X-Man转账给张三1000元”的区块链,以及在区块链世界里那则真实转账行为被一同成功销毁。(???)事实真的如此吗?在这里我可以很负责任的说,too young too simple,区块链世界规则的制定远比我们想象的要健全很多,还记得我们之前讲的“区块的ID至少会跟区块内所有小纸条的集合、即将与之相连的上一个区块ID、当前产生区块的时间戳以及挖矿节点的运气值等因素相关”。 在这里,正是因为打算连接到主链的过程中,主链会立马意识到,那条事先准备的链子(的第一个区块)的时间戳存在异常,不属于当前区块链世界里线性增长的时间戳,于是马上意识到这个事先准备的链子(的第一个区块)是无效的,需要重新计算。 在区块链的世界,重新计算的行为等同于把自己(节点)置身于同一个起跑线,跟世界上其他所有的节点一同竞争挖矿。你会说,我拥有更强大的计算能力,但是对不起,跟你竞争的对象并不是第五大道、南京西路、香榭丽舍大道上的某一个节点,而是全球所有算力的集合,在这个集合中,你拥有的算力永远都只是一个很小的子集。所以,根据区块链算力民主、少数服从多数的基本原则,这个构想将永远不会成立。除非....你控制着全球51%的算力,这也就是区块链世界里另外一个著名的概念,叫做“51%攻击”,但这也仅仅是一个理论值,在真实世界里这样的攻击我个人觉得是很难发动起来的,这里面就牵涉到很多经济、哲学甚至政治的因素。举个最简单的例子:X-Man为了回滚刚刚发生的一笔交易记录,成功发起了51%攻击,这意味着很快整个区块链系统将会崩盘,因为这次攻击已经严重伤害到人们对这套系统的信任,接着比特币开始暴跌至几乎一文不值;但是这个拥有51%算力的X-Man原本完完全全可以通过挖矿的方式获取更多收益,购买无数的iPhone手机。那他不是脑袋不是坏了还能是啥?对51%攻击话题感兴趣的同学可以阅读这篇文章《什么是比特币51%攻击?》。至此,我觉得区块链最基础、最核心的知识已经全部讲完了(除了挖矿内部实现原理,作为一个遗憾留在这里,有时间会完善掉),相信你已经对它有了一个宏观的认识。另外,由于这篇文章采用了适当抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,欢迎大家来纠错。另外,也是受限于自己知识结构的缺失,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。--问答部分去中心化的系统中,到底是谁在发行货币?是无限量发行吗?比特币的货币是通过挖矿(工作量证明)来发行的,总数量是通过程序写死了2100万个,而第一笔区块奖励也是硬编码写死的。矿工挖出一个区块所获得的奖励,每隔21万个区块将减少一半,按照平均10分钟挖出一个区块的执行效率,也就就说差不多每四年会锐减一次。2009年1月起每个区块奖励50个比特币,2012年11月减半为每个区块25个比特币,2016年7月减半为12.5个比特币。基于这个规则,到2140年,所有比特币(20,999,999,980)将全部发行完毕,之后不会再有新的比特币产生。矿工节点的收益除了挖出区块以外还有哪些?矿工节点的收益主要由两部分组成:1)挖出新区块的奖励;2)挖出新区块内所含交易的交易费。但就目前来说,一个区块内的交易费大概只占到矿工总收入的0.5%甚至更少,大部分收益主要还是来自于挖矿所得的比特币奖励。然而,随着挖矿奖励的递减,以及每个区块中包含的交易数量增加,交易费在矿工收益中所占的比重将会逐渐增加。在2140年之后,所有的矿工收益将完全由交易费构成。是不是只有成为节点才能进行交易?、钱包、尤其是轻钱包是不是也可以挖矿?这个问题是读者问出的,可能之前也有同学提出过类似的问题,但是没有引起我足够的重视,后来发现其实我也把概念混淆了。我一并去查阅了相关资料,对节点和钱包有一些更完整的理解和定义。详细请阅读我的专栏文章《区块链节点与钱包的分类、边际和使命,看这篇文章就足够了》参考中心化与去中心化 https://www.douban.com/note/624421270/图说区块链 https://book.douban.com/subject/27084306/区块链是什么,如何简单易懂地介绍区块链? https://www.zhihu.com/question/37290469 什么是比特币51%攻击? http://8btc.com/article-1949-1.html区块链与新经济:数字货币2.0时代 https://book.douban.com/subject/26804497/詳解比特幣原理和運行機制 https://www.youtube.com/watch?v=P4seQcP77H4区块链是什么:从技术架构到哲学核心 https://v.qq.com/x/page/x0518nuh2z7_0.html区块链核心算法解析 https://book.douban.com/subject/27081206/深入理解比特幣的安全性及程式交易安全性與相關的密碼學原理 https://www.youtube.com/watch?v=3w1Tg3B_oKQ 深度了解区块链——拜占庭将军问题深入探讨 https://wallstreetcn.com/articles/338061精通比特币-挖矿与共识 http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter08.html编辑于 2022-08-16 09:47赞同 6846554 条评论分享收藏喜欢
区块链是什么,如何简单易懂地介绍区块链? - 知乎
区块链是什么,如何简单易懂地介绍区块链? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册生活调查类问题货币金融区块链(Blockchain)区块链是什么,如何简单易懂地介绍区块链?关注者44,304被浏览13,196,494关注问题写回答邀请回答好问题 21156 条评论分享1,509 个回答默认排序maxdeath信息论博士,区块链博士后 关注更新在20191025之后,说一些新的关于区块链的发展:1,区块链的应用。首先先说央行数字货币——央行数字货币的技术其实早就成熟了,都用不到区块链,因为区块链的目的是去中心化,而央行数字货币用不到这个。当然,采用区块链的央行数字货币技术也早就有了(参见RSCoin),这里面可能会在某些环节采用区块链技术去中心化——例如货币的发行仍旧是中心化的,但是流转中的管理和验证可以通过区块链技术去中心化到其他银行。同时,据我所知,官方早就有一个数字货币研究所在研究这个很久了。我在很早就写过,从大势上,货币的数字化是必然的,但这和比特币是两码事,看起来可能会更像支付宝。然后,现在facebook来了一出libra(请参见我关于libra的文章https://zhuanlan.zhihu.com/p/69941436),我觉得从很大程度上推动了这次区块链的新闻,也推动了央行数字货币的推出。libra本身只代表facebook的野心,目前来看,他们的野心很有可能不会成功,但是也许是这种野心和指明的技术方向让国家产生了紧迫感——因为就算现在libra的所有成员都退出得差不多了,libra本身也前途未卜,但是万一类似的框架被搭起来又吸引了其他的重量级成员加入,那么国家在这上面就失去了主导权。因此,根据最近的新闻,央行的数字货币应该已经非常接近了。但这点,并不足以突然让“区块链”成为国家战略,这里说的区块链,一定是包含数字货币之外的其他应用的。区块链最引人遐想的应用,无疑是以“以太坊”为代表的,用区块链来做一个“全球计算机”,然后,用“智能合约”来编写在这台全球计算机上运行的软件(又被称为Dapp,即去中心化应用)。简单来说,这个全球计算机的好处在于,你可以把一切想要“去掉中间商赚差价”的事情,全都搬到这上面来做,而不需要依赖于某个大企业作为可信中心,例如银行或者互联网巨头。关于这个问题,可参见这篇https://zhuanlan.zhihu.com/p/28930323然而,这种全球计算机的设想在这两年间暴露出了非常多的问题,让人看不到短期的解决希望。于是,从这次区块链的新闻中透露出来的应用方向,“不可篡改”这个区块链的特点,以及它在存证、溯源、防伪、征信等方面的作用。这个,是目前在落地上做的最成熟,也是能够实打实地看出来区块链对比于传统中心化系统优势的应用。2,区块链技术这次战略中最主要提出的,是“要掌握区块链核心技术”,那么区块链的核心技术是什么呢?区块链相关技术有很多方面,我可以把它大致分成4类:1),共识算法;2),隐私保护技术和相应密码学技术;3),智能合约相关技术;4),面向应用相关技术。其中,前三者可以认为是底层,后两者是上层。1),其中,共识算法是区块链最核心,也是整个技术发展和学术界最热衷的领域:大量的公链项目都追求共识算法的创新,同时,大量的研究者也投身于这个领域,然而,大多在国外(我之前主要研究方向也是这个领域)。这点其实并不意外——众所周知,国内很少人愿意搞基础理论研究。但是共识算法中的涵盖面非常广,其中有一个概念非常重要——有许可和无许可,有许可共识算法要求所有参与节点的身份已知,主要采用类BFT算法。而无许可共识算法则允许任何节点只要达到某些条件就能进入,无需事先在任何系统中注册身份,而POW和后来衍生出的POS以及其他许多POx类算法都在此列。前者,多用于联盟链,而后者多用于公有链。其中,两者发展至今日,在速度和延迟上的差异已经不大了,归根结底的差别就是前面说的有无许可的差别。而无许可共识算法由于无许可的特性,又引出了一个很重要的概念叫“激励机制”,比如比特币的挖矿,于是,又衍生出了“货币”。于是,就又衍生出许多非常有趣的方向,例如:ASIC矿机,链上治理,加密经济学等等。以上,哪些方向可能会被认为是这次战略中的“核心技术”呢?我个人更看好许可共识算法的相关技术,而且,这类共识算法也可能布上支付宝的道路,会摒弃很多意识形态方面的需求,追求速度更快,规模更大,使用更方便,更标准化。而非许可类的共识算法,则面临着更高的风险——首先,对于“币”这个事的政策并不明确;其次,在之前所说的应用方向上,公有链相对于联盟链并没有显著的优势。2),其实区块链技术本身采用的密码学技术并不高深也不复杂,无非是哈希函数和数字签名这两个非常经典和简单的密码学工具而已。然而,由于区块链技术和密码学天生的契合性(大部分早期研究区块链的学者都来自于密码学领域),同时,由于“加密货币”这个词,即:cryptocurrency,(注:在英文中,这个词被用来指代所有类似于比特币之类的货币,而不是中文领域中常用的“数字货币”),导致大部分人都认为密码学天生和区块链是联系到一起的。实际上,区块链技术本身并用不到特别先进的密码学工具(当然,一些新的共识算法中采用了一些新的密码学工具)。但是,其中最重要的密码学挑战,是隐私保护技术,而其中,可能会用到的,包括零知识证明,同态加密等目前还在发展之中的密码学工具。这点,其实并不是区块链本身的需求,但又和区块链紧紧联系在一起——原因,还得说回之前区块链的性质和区块链的应用上:首先,区块链最大的特点是所有上链的数据必须通过所有节点的验证,然而,如果区块链得到了大规模应用,这就代表了所有的节点都会获取所有的数据。好吧,我们现在不信任中心,有很大的一部分原因是中心获取了我们所有的数据,而现在倒好,用了区块链去中心之后,所有人都可以获取我们所有的数据了。因此,如何在能够保证隐私的同时还可以享受区块链带来的去中心化优势呢?这需要所有节点能够在不知道数据内容的情况下,还能够对数据的有效性进行验证,例如:在不知道你是谁,具体有多少钱,你想要支出多少钱的情况下,验证你确实有一笔钱可以来完成这笔支出……这听起来像是天方夜谭,然而,实际上我们有一种密码学工具可以实现它——叫做零知识证明。然而,目前零知识证明尽管一直在发展,但是目前仍存在很大的局限性,这种局限性是效率——我们有了一些高效的证明方式,例如:我们可以很快地证明某个未知的数比另一个已知数大,或者我们可以证明某个未知的值来自于某个集合。然而,这些高效的零知识证明,还不足以覆盖区块链的所有应用。因此,可想而知,这些新加密技术,尽管不是区块链技术中的必须品,却是区块链技术能够得到广泛应用的必需品,所以一定是“核心技术”中的一部分。3),智能合约相关的技术,实际上包括语言,包括编译……这些,实际上相当于是当我们已经有了区块链作为底层之后,如何使用它的问题。在这上面目前还没有一个非常明确的方向,因为,其实目前在尝试的思路有几种:i,以太坊式的,高度自由的图灵完备的系统。然而问题是,写程序太容易出错了,而且出错的代价太大。ii,Hyperledger-fabric式的,高度模块化的系统,然而,极度复杂,复杂到想要采用HF的公司,要么放弃,要么花钱请IBM的人帮他们做。iii,Libra式的,专注于某项应用的系统,例如libra的move语言就明白地说了,我们不追求图灵完备,我们的目标是做一个更方便于实现各种金融场景的语言——这可能是个趋势,但是还没有经过足够的检验。这些方向,在目前的尝试还很少。大部分区块链项目仍旧采用以太坊式的系统,或者加以改进。然而,我认为这一点很有可能成为“区块链的核心技术”中最重要的部分——因为一旦区块链上升到了国家战略的高度,那么势必会诞生大量的需求、场景和用户,于是才会有充分的尝试和实现的平台。由此,可能会衍生出一个最适合区块链的语言和开发工具,而这个,会如同OS一样,成为一个新的世界范围内的标准。而从目前来看,在其他的区块链项目都在挣扎着寻求落地的时候,可能只有中国有这样的土壤能够诞生出这样的标准。这大概就是把区块链作为国家战略的原因。4),应用相关的技术。其实在区块链应用方面最大的技术难点并不在技术上。例如:区块链存证,如果我们做一条联盟链将相关各方作为共识节点然后把证据上链,那么,这个证据就是无法篡改的了。这道理大家都懂,然而问题在于:谁来做这个事呢?证据怎么数字化?怎么运行区块链?给出数据我的好处在哪里?最重要的是,谁掏钱?区块链目前落地最大的难点,在于其相比传统的中心化方案,除了在存证,溯源方面的一些场景下,找不到明显的优势,也就找不到可行的商业模式。于是,也就很难通过市场的方式推行出去,近两年币市的低迷已经证明了这一点。然而,这一切都会在国家的支持下产生变化,于是,就如同中国互联网产业从模仿学习国外到开始向外输出抖音一样,中国希望能在区块链领域,能够激发出更多的尝试和场景。于是,在这些场景中,我们会积累相关的经验、技术和商业模式,从而将这种模式在出口到国外去,而这点,也会是区块链核心技术中非常重要的部分。——————————————————————————————首先要搞清一个问题——比特币是区块链,但是区块链并不是比特币。于是,在区块链的这个问题回答里,提到“矿工”,“挖矿”,“最长链”,“分叉”等等词的,其实都不准确。写一点上个月讲课的内容——个人觉得大部分的回答,包括google搜出来的或者wiki的,都不能很好地解释区块链是个什么东西。因为讲比特币的人很多,懂比特币的人也很多,但是具体到区块链,现在并没有一个很清楚的定义说什么是区块链,基本上所有的介绍里都是这样的:比特币——〉区块链是比特币的底层技术。或者比特币——〉比特币是一种区块链。具体到什么是区块链的问题,目前没有看到很好的定义和介绍,更多的是大而化之地讲区块链的意义在哪里的空泛文章,要不然就是一水的矿工和挖矿。所以我来从纯理论角度说一下我个人对区块链的定义:1,区块链是一个放在非安全环境中的分布式数据库(系统)。2,区块链采用密码学的方法来保证已有数据不可能被篡改。3,区块链采用共识算法来对于新增数据达成共识。具有以上三个性质的系统,就是区块链。1,区块链是一个放在非安全环境中的分布式数据库(系统)。这里的要点有两个:(1)分布式,(2)非安全环境。首先,这是一个分布式的,去中心化的系统。所以,有一个中心服务器或者节点的,不是区块链。节点都是安全的,无恶意的,那这不是区块链。同理,从应用的角度讲,如果你的应用必须要使用中心节点(例如要用超级计算机做深度学习)或者没必要考虑节点不安全的情况(例如某个安全的工厂里的传感器),那么并不需要考虑区块链技术。至于后面的词“数据库”,目前大部分成熟的区块链都是数据库,例如比特币就是一个分布式账本,而账本其实就是数据。然后,根据数据的格式,又可以分三种——1,数据是完全不相关的,只是达成的共识,没有有效无效之分;2,数据有某些逻辑结构,例如账本中,一笔交易实际上除了金额,还有输入和输出,连接到之前的交易,这些数据需要通过逻辑验证(例如交易中,节点需要验证输入的交易是否有效);3,数据拥有图灵完备的逻辑,而验证的时候需要通过节点使用算力运算,每笔交易可以有不同的输出和状态,每个节点要做的不仅仅是验证交易的真实性和输入的正确性,还要根据交易里的逻辑读入数值,进行验算然后再验证结果。比特币的系统就是第二种,又叫分布式账本;以太坊是第三种。第三种可以支持智能合约。用比特币举例的话,1,它是一个完全去中心化的系统,2,它放在一个非安全的环境,它并不要求所有使用比特币的人都没有恶意。2,区块链采用密码学的方法来保证已有数据不可能被篡改。这个是误解最多的部分,因为很多人一提到区块链就只觉得是这个。诚然,这部分很重要,而且确实区块链也因此得名,但这只是区块链的定义的一部分。这个部分的两个核心要点是:(1)密码学哈希函数,(2)非对称加密。两个都是密码学的基础概念,网上都有非常清晰的定义,我只简单说下:(密码学)哈希函数:一个函数Y=H(X),有如下性质:1,有X可以很容易算出Y;2,有Y不可能算出X;3,有Y不可能找到另一个X'使得H(X')=Y;3.5,如果X和X'相差很小,H(X)和H(X')则完全不相关。这东西主要用于验证信息完整性——在一个信息后面放上这个信息的哈希值,这个值很小,例如256bit,而且计算方便。收到信息之后收信人再算一遍哈希值,对比两者就知道这条信息是否被篡改过了。如果被篡改过,哪怕只有一bit,整个哈希值也会截然不同。而根据哈希函数的性质,没有人能够伪造出另一个消息具有同样的哈希值,也就是说篡改过的数据完全不可能通过哈希校验。非对称加密:这东西很好理解——对称加密就是有个密钥,可以理解成保险箱钥匙,你把消息加密变成密文,没有人能看懂这是啥,然后同一把钥匙解密成原来的消息。非对称加密就是有两把钥匙,一把叫公钥,一把叫私钥,用其中一把加密的话,只能用另一把解密,反之亦然。另一个重要的性质是,给你密文,明文和其中一把钥匙,你还是解不出来另一把钥匙是啥。原理基本上是基于一些困难数学问题,例如因数分解和离散对数,常用的有RSA,Diffie-Hellman和ECC(椭圆曲线),比特币用的是椭圆曲线。非对称加密除了和对称加密一样用于信息加密之外,还有另一个用途,就是身份验证。因为通常情况我们假设一对公私钥,公钥是公开的,而私钥只有本人有,于是一个人如果有对应的私钥,我们就可以认定他是本人。其中一个重要的应用就是数字签名——某个消息后面,发信人对这个消息做哈希运算,然后用私钥加密。接着收信人首先对消息进行哈希运算,接着用相应的公钥解密数字签名,再对比两个哈希值,如果相同,就代表这个消息是本人发出的而且没有被篡改过。以上是基础知识,至于区块链怎么实现的,很简单:交易(数据)写在区块里。第一个区块叫创世区块,写啥都行。从第二个区块开始,每个区块的第一部分有前一区块的哈希值。此外,区块里的每一笔交易(数据),都有发起人的数字签名来保证真实性和合法性。于是,先前区块里的任何数据都不可被篡改,原因见上。到这为止有人可能会问:为什么要弄个链啊?直接所有数据加个哈希值不就行了?因为——这个数据库并不是静止的啊。数据库的数据是会增加的,而每次增加的数据,就是一个区块,于是这些生成时间不同的区块,就以这种形式链在一起了。至于如何增加区块,就涉及到第三个部分——共识算法。3,区块链采用共识算法来对于新增数据达成共识。共识算法的目的,就是让所有节点对于新增区块达成共识,也就是说,所有人都要认可新增的区块。对于有中心的系统,这事很简单,中心说什么大家同意就好了,但是放到去中心化系统里,尤其是当有些节点有恶意的时候,这东西非常复杂,计算机科学里有个相应的问题,叫做“拜占庭将军问题”或者“拜占庭容错”(BFT)。有很多用Lamport给出的那个例子来讲BFT的东西,我在这里换一个角度。Lamport大神当年提出这个问题的时候在斯坦福研究中心给NASA做项目,他提出这个问题的原因并不是考虑类似比特币的应用场景(整个互联网成千上万个用户),而是考虑特殊背景下的一个简单的系统——航天飞机的控制系统。如果有航空背景的同学可能知道,飞机有三套独立的控制系统,为什么呢?因为任何系统都不可能完全不出故障,就算飞机控制系统的故障率已经极低了,还是有飞到一半这东西坏了的可能。于是我们可以弄两套独立的系统,同时坏掉的几率就会大大降低。可是两套独立的系统还是不足以容下一个系统的错误——一架飞机迎面飞来,两套系统一个说要躲,一个说不躲,那到底是躲还是不躲呢?所以我们需要三台独立的系统,这样,如果有一个系统有故障了,还有两台能正常工作,能少数服从多数给出正确的结果。学过纠错码的同学对这个应该不陌生,这个系统的输出之间的汉明间距是3,所以可以纠正一位的错误。然而,对于航天飞机,在冷战的背景下,万一某个系统不是坏掉了,而是被敌人控制了呢?三套系统还够吗?答案是否定的,因为不同于单纯只是坏掉的节点,恶意节点可以做一些别的事来阻止整个系统达成共识。这个部分略复杂要讲的话要单开一帖,所以我们只说最简单的情况(无签名同步系统)。我们管三个系统叫ABC,正常工作流程是三个人每次得出结果就互相告诉一下,然后每个人选多数人同意的结果。这是个没有中央节点的分布式系统,也就是说三人不能聚在一起开个会啥的,仨人只能两两通信。这个时候,假设C有恶意,它的目标是破坏这个系统。于是,假设正确的读数是1,A和B都得出了1这个结果,这个时候C这个小婊砸告诉A说“我的结果是0,B也觉得是0”,同时打个电话跟B说“哎我觉得是0,A也这么说”,于是A和B就懵逼了。假设你是A,你听到了两个不同版本的B的答案,B说自己选了1,C说B选了0,可是A这个时候没法知道B和C谁才是那个骗了自己的小婊砸,因为如果B真的告诉A选了1然后告诉C是0,他听到的结果和现在是一模一样的。于是结论是,拜占庭容错,也就是需要容下一个恶意系统而非错误系统,需要4个独立系统。(当然,签名可以解决这个问题,但是这只是同步系统的情况,在异步系统里这问题会变得更加复杂,原因是正常节点的回答有延迟,而恶意节点可以不回复,所以,正常节点一方面要等另一个节点的回复,但是它又不知道对方会不会回复因为对方有可能会有恶意,而在收到回复之前,它完全没法判断对方是正常节点还是恶意节点,这个问题叫异步BFT,也是BFT的最复杂的情况,这里不再做更多的解释,下文提到的BFT算法,其实都是异步BFT的算法)Lamport提出这个问题之后,有无数的算法被提出来,统称BFT(拜占庭容错)算法,其中最有代表性的叫PBFT,然后由于最近区块链的热度,无数针对区块链应用场景优化过的BFT算法也涌现出来,但是一个重要的问题是,所有目前的BFT算法,都只能应用在小型网络里。原因很简单——因为BFT这个问题是设计给类似于航天飞机控制系统这样的场景的,早期的算法考虑的也主要是这种场景。PBFT论文里考虑的就是一个5个节点的系统。就算算上新提出的BFT算法,也最多应用在不超过100个节点的网络里。这个问题被搁置了很久,直到比特币的诞生——中本聪从某种意义上简化了这个问题,在比特币中,同样是共识问题,中本聪引入了一个重要的假设——奖励,他之所以能这样做的原因是,他考虑的是一个数字货币,也就是说共识这个东西是有价值的。于是在这样的系统上,他提出了工作证明机制。所有挖矿,矿工,最长链,分叉等等等等,都可以归结为一句话:说话是要有代价的,说真话是有好处的,说假话是要扣钱的……这就是目前两类共识算法的核心区别:BFT共识模型:恶意节点可以干任何事。比特币共识模型:模型中有公认的“价值”,每个节点说话都需要一定代价,诚实节点会受到奖励,而恶意节点由于只付出代价而收不到奖励,变相受到了惩罚。也就是说,BFT共识模型其实涵盖了比特币共识模型的场景,比特币共识其实放宽了BFT共识模型的限制。比特币共识对于BFT的优势在于,由于给恶意节点的能力做了限制,恶意节点所能造成的破坏大大降低了,尤其是对于异步系统——BFT共识里恶意节点可以一直拒绝相应而诚实节点还需要一直等它(因为不知道它是不是恶意的),而对于比特币共识,随你便,你不响应就没有奖励可拿。于是,比特币共识算法可以应用于成千上万个节点,而且,任何人随时都可以加入,不需要预先在网络里注册自己的身份(而BFT算法里,网络中节点的数量和身份都必须是已知的)。但比特币共识的缺陷在于,首先,得有个有价值的东西,也就是说放在比特币里这东西还行,以太坊的话现在可能也凑合,但是其他数字货币嘛……BFT共识有个严格的限定,就是恶意节点不能超过总数的1/3,然而其实比特币共识没有这样的限制,唯一的限制就是假定大部分节点都是理性的,是逐利的,也就是会采用最佳的策略来赚取最大的价值。所以,严格来说,自私挖矿这种行为在比特币共识里是允许的,而多数攻击,其实也算不上一种攻击,因为这些都没有突破比特币共识的框架——如果这个价值无限大,比特币共识是非常可靠的。然而这并不是事实,因为并不是每个虚拟货币都和比特币一样值钱,而在价值不高的情况下,比特币共识的前提就站不住脚了——当损失可能是几千上万块钱的时候,假定每个人都是理性的是合理,但是如果损失就几分钱这个假设就相当扯淡了,事实上也发生过一个比特币矿池跑到另一个货币恶意挖矿搞垮对手的情况。此外,比特币共识是最长链共识,也就是说最长链-->大多数-->理性,于是分叉是允许的。于是导致了一些附带的问题,例如,如果网络有延迟,你怎么知道你手里那条链是整个网络里当前的最长链呢?于是,如果需要传输的数据多,那么延迟加大。延迟加大,那么越多的人手里的链并不是全网络的最长链。于是,全网络的最长链,就没法代表大多数。这就打破了比特币共识的根本,这也是为什么比特币区块频率是10分钟一块的原因。比特币目前有个著名的7币交易每秒的上限,而现在扩容闹得很厉害,以太坊的交易格式不同,也用了新的工作证明,想要改成权益证明,但这些都不本质。真正本质的是,在目前的网络条件下,如果适用全网的话,比特币共识的交易量基本上超不过100笔交易每秒这个量级。上面这几段有可能太深了,简单来说,BFT共识和比特币共识的区别可以这么理解:BFT共识:来,大家开个会讨论一下集思广益啊,讨论出大家都满意的结果为止。问题:开会的效率大家都懂,人越多越不容易出结果。只能用于少数节点,用于上千个节点的话……大家想象一下一天开一次人大的场景。比特币共识:你的诗念得不错,组织已经决定了,今天就你来当领导了,做得好有奖,做不好扣钱。问题:奖励几千块钱还好,奖励几分钱谁好好干?而区块链也就因此被分成了泾渭分明的两类,很多人都听过什么公有链私有链联盟链,但是,如果你们以为这是根据应用区分的就大错特错,其实,这两种区块链最本质的区别,还是因为共识模型或者说算法不同——BFT算法没法应用于大量节点,所以用BFT算法的就没法做公有链。而比特币共识得有个价值体系,这东西去做私有链联盟链就很不靠谱,因为一个单纯逐利的人的假设还算靠谱,但是如果对象是公司的话,公司的利益就太复杂了,不能简单认为他们只追逐区块链上那点价值。1,公有链,以比特币,以太坊和所有虚拟货币为代表,都采用比特币共识,共识算法基本上都采用工作证明机制,也就是挖矿那些,这种机制其他回答里已经讲得够清楚了,就略过。工作证明一切都好,除了费电……费多少电呢?差不多和一个百万人级别的城市那么多。此外以太坊的创始人特别喜欢权益证明,似乎很快要小范围投入使用(100个区块里一个用权益证明)。但是目前为止,大家对这东西的可靠性还持观望态度。2,私有链和联盟链。以IBM的hyperledger-fabric,以及一大堆其他的类似于tendermint,甚至R3 corda和ripple为代表,都用BFT共识。其实这方面的应用已经很多了,问题是,1,目前基本上所有应用给人的感觉都还是为了做区块链而区块链,真的觉得这东西好到不可或缺的应用还基本没有。2,由于为了区块链而区块链,其实很多场景的安全性和可靠性还值得怀疑,这点经常被被公有链的支持者诟病。嘛,以上就是个人定义的区块链了,顺带概述一下现在区块链领域的发展。之所以写这个帖子,就是因为发现明明是问区块链的问题,所有人都在讲比特币,都在讲挖矿,都在讲工作证明……工作证明不能说过时,也的确是现在公有链唯一可靠的共识算法,但是这东西确实是业界除了比特币死忠之外谁都不想要的东西好吗……编辑于 2019-10-28 14:29赞同 4825251 条评论分享收藏喜欢收起盗盗狂热追随者... 关注友情提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果让你觉得困惑,可以在评论下方留言或者私信我一起探讨。最后,也是受限于自己知识结构的不完整,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。另外,作为一篇科普性文章,大家可以随意转载,注明这篇文章的出处和作者即可,无需再单独私信询问。---首先不要把区块链想的过于高深,他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器节点的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的节点,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。 上图中,高亮的点就是区块链系统中分布在全球各地的一个个节点;而这些节点可以简单理解为一台服务器服务器集群为了更简单的阐述那篇文章所构建的世界观,文中所讨论的节点全部粗暴的理解为官方参考实现节点,即最标准的一种节点类型,这些节点不仅可以参与挖矿共识、还可以数据存储和数据点对点传递;不涉及其他复杂的节点类型。关于节点的分类,可以阅读我的专栏文章《区块链节点与钱包的分类、边际和使命,看这篇文章就足够了》# 问题的由来我们反复提到区块链是一个去中心化的系统,确实,「去中心化」在区块链世界里面是一个很重要的概念,很多模型(比如账本的维护、货币的发行、时间戳的设计、网络的维护、节点间的竞争等等等等)的设计都依赖于这个中心思想,那到底什么是去中心化呢?在解释真正去中心化之前,我们还是先简单了解下什么是中心化吧。中心化?回忆一下你在网上购买一本书的流程:第一步,你下单并把钱打给支付宝;第二步,支付宝收款后通知卖家可以发货了;第三步,卖家收到支付宝通知之后给你发货;第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;第五步,支付宝收到通知,把款项打给卖家。流程结束。你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。你一定会摆出一个巨大的问号脸 ⊙.⊙?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!假如说,支付宝程序发生重大BUG,导致一段时间内的转账记录全部丢失,或者更彻底一点,支付宝的服务器被ISIS恐怖组织的一个导弹全部炸毁了。而我刚刚转出去的100元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。上述就是中心化最大的弊端——过分依赖中心和权威,也就意味着逐渐丧失自己的话语权。去中心化?那么去中心化的形态是什么样子呢?还是拿刚才那个例子继续,我们构建一个极简的去中心化的交易系统,看看我们是如何在网络上从不认识的卖家手里买到一本书的。第一步,你下单并把钱打给卖家;第二步,你将这条转账信息记录在自己账本上;第三步,你将这条转账信息广播出去;第四步,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;第五步,卖家发货,同时将发货的事实记录在自己的账本上;第六步,卖家把这条事实记录广播出去;第七步,你和支付宝收到这条事实记录,在自己的账本上分别记录;第八步,你收到书籍。至此,交易流程走完。刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,对不起卖家的账本还存在,我的账本还存在;这些都是这笔交易真实发生的铁证。当然,在这套极简的交易系统中,你已经发现了诸多漏洞和不理解,比如说三方当中有一个是坏人,他故意记录了对他更有利的转账信息怎么办;又比如说消息在传递过程中被黑客篡改了怎么办等等等等。这在以往的计算机概论或者计算机网络书本上中可能都有提及到——“类两军”和“拜占庭将军”问题。这里就不打算赘述,因为暂时跟主线不相关,感兴趣的同学可以去Google或者百度一下,你只需要知道,在我们下面即将展开讲到的区块链系统中,通过巧妙的设计,足以解决上述存在的BUG。既然话已说到这份上,相信了解一点技术、特别是有运维背景的同学大概能够从极简交易系统中窥视到了更多区块链的一些影子——分布式存储,通过多地备份,制造数据冗余让所有人都有能力都去维护共同一份数据库让所有人都有能力彼此监督维护数据库的行为在我看来,你猜测的基本上没错。其实这些就是区块链技术最核心的东西,外人看起来高大上、深不可测,但探究其根本发现就是这么简单和淳朴。当然,这里面肯定会有很多很多很多细枝末节的技术需要重构。如果你差不多认同上面的观点,那我们应该基本上可以达成共识,分布式部署肯定是构建去中心化网络理所当然的解决方向——通过P2P协议将全世界所有节点计算机彼此相互连接,形成一张密密麻麻的网络;以巧妙的机制,通过节点之间的交易数据同步来保证全球计算机节点的数据共享和一致。哈哈,说的轻巧,“交易数据这么重要的东西,在一个完全不信任的P2P网络节点中以一种错综复杂的方式传递,数据的一致性和安全性谁来保证,如果说互相监督,他们到底怎么做到?”好了,不卖关子了,下面让我们围绕这个最最最最直接的问题开始进入到真正区块链的世界,抽丝剥茧看看它到底是如何一步一步形成的,又是如何一步一步稳定运转。# 从全球节点到交易数据这张图的制作的意义为的是帮助你在宏观上先快速理解区块链中所涉及到的相关名词以及他们的层级关系。同时,文章的知识结构和设计思路也大抵上也会按照:首先,将区块作为最小单位体,讲述极简区块链系统是如何运转的;接着,进入到比区块更小单位体——交易记录,理解区块链是如何处理数据的;最后,将所有知识点柔和在一起,重回到区块和区块链,完整讲述整个工作流程。希望你在这个引导和结构下有一个比较好的阅读体验。Let's go~# 区块,混沌世界的起源既然已经达成共识,所以,我们事先构建好了一个去中心化的P2P网络;同时,为了让读者朋友们听起来更轻松,我先粗暴的规定在这个极简的区块链系统里,每十分钟有且仅产生一笔交易。故事继续,在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块(你可以将区块想象为一个盒子),这个区块里放着一些数字货币以及一张小纸条,小纸条上记录了这十分钟内产生的那唯一一笔交易信息,比如说——“小A转账给了小B100元”;当然,这段信息肯定是被加密处理过的,为的就是保证只有小A和小B(通过他们手上的钥匙)才有能力解读里面真正的内容。这个神奇的区块被创造出来之后,很快被埋在了地底下,至于埋在哪里?没有一个人知道,所以需要所有计算机节点一起参与进来掘地三尺后才有可能找到(找到一个有效的工作量证明)。显然,这是一件工作量巨大、成果随机的事件。但是呢,对于计算机节点来说,一旦从地底下挖出这个区块,他将获得区块内价值不菲的数字货币,以及“小A转账给了小B100元”过程中小A所支付的小费。同时,对于这个节点来说,也只有他才有权利真正记录小纸条里的内容,这是一份荣耀,而其他节点相当于只能使用它的复制品,一个已经没有数字货币加持的副本。当然这个神奇的区块还有一些其他很特别的地方,后面我们会再细细聊。为了更好的描述,我们将计算机节点从地底下挖出区块的过程叫做「挖矿」,刚才说了,这是一件工作量巨大、运气成分较多、但收益丰厚的事儿。过了一会儿,来自中国上海浦东新区张衡路上的一个节点突然跳出来很兴奋的说:“ 我挖到区块了!里面的小纸条都是有效的!奖励归我!” 。虽然此刻张衡路节点已经拿到了数字货币,但对于其他计算机节点来说,因为这里面还涉及到其他一些利益瓜葛,他们不会选择默认相信张衡路节点所说的话;基于陌生节点彼此不信任的原则,他们拿过张衡路节点所谓挖到的区块(副本),开始校验区块内的小纸条信息是否真实有效等等。在区块链世界里,节点们正是通过校验小纸条信息的准确性,或间接或直接判断成功挖出区块的节点是否撒谎。(如何定义小纸条信息真实有效,后面会讲解,这里暂不做赘述)。在校验过程中,各个节点们会直接通过下面两个行为表达自己对张衡路节点的认同(准确无误)和态度:停止已经进行了一半甚至99.99%的挖矿进程;将张衡路节点成功挖出的区块(副本)追加到自己区块链的末尾。你可以稍微有点困惑:停止可能已经执行了99.99%的挖矿行为,那之前99.99%的工作不是就白做了嘛?!然后,区块链的末尾又是个什么鬼东西?对于第一个困惑。我想说,你说的一点没错,但是没办法,现实就是这么残酷,即便工作做了99.99%,那也得放弃,这99.99%的工作劳苦几乎可以视为无用功,绝对的伤财劳众。第二个困惑,区块链和区块链的末尾是什么鬼?这里因为事先并没有讲清楚,但是你可以简单想象一下:区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能事先已经执行了N次“从别人手上拿过区块 -> 校验小纸条有效性”的流程,肯定在自己的节点上早已经存放了N个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状。没错,这个链条,就是你一直以来认为的那个区块链。如果你还是不能够理解,没关系,文章后面还会有很多次机会深入研究。# 走进区块内,探索消息的本质上面我们构建了一个最简单的区块链世界的模型,相信大多数同学都已经轻松掌握了。但是别骄傲也别着急,这还只是一些皮毛中的皮毛,坐好,下面我们准备开车了。前面我们说到“大概每十分钟会凭空产生一个神奇的区块,这个区块里放了一张小纸条,上面记录了这十分钟内产生的这唯一一笔交易信息”。显然,十分钟内产生的交易肯定远不止一条,可能是上万条,这上万条数据在区块链世界是如何组织和处理的呢?另外,为什么在纸条上记录的只是某一次的交易信息,而不是某一个人的余额?余额好像更符合我们现实世界的理解才对。既然存在这样那样的疑问。现在我们就把视线暂时从“区块”、“区块链”这些看起来似乎较大实体的物质中移开,进入到区块内更微观的世界里一探究竟,看看小纸条到底是怎么一回事,它的产生以及它终其一生的使命:发起交易的时候,发起人会收到一张小纸条,他需要将交易记录比如说“盗盗转账给张三40元”写在纸上。说来也神奇,当写完的那一刹那,在小纸条的背面会自动将这段交易记录格式化成至少包含了“输入值”和“输出值”这两个重要字段;“输入值”用于记录数字货币的有效来源,“输出值”记录着数字货币发往的对象。刚刚创建的小纸条立马被标记成为“未确认”的小纸条。从地下成功挖出区块并最终连接到区块链里的小纸条一开始会被标记为“有效”。若这条有效的小纸条作为其他交易的输入值被使用,那么,这个有效的小纸条很快会被标记为“无效”。因为各种原因,区块从链上断开、丢弃,曾经这个区块内被标记为“有效”的小纸条会被重新标记为“未确认”。区块链里面没有账户余额的概念,你真正拥有的数字资产实际上是一段交易信息;通过简单的加减法运算获知你数字钱包里的余额。上面的1、2、3仅仅作为结论一开始强行灌输给你的知识点,其中有几个描述可能会有点绕,让你觉得云里雾里,没有关系,因为我们立刻、马上就开始会细说里面的细枝末节。上图,是区块内,盗盗在一张小纸条上记录下的交易信息,后被格式化的呈现上图就是从无数打包进区块内的小纸条中,抽取出来的一张,以及它最终被格式化后的缩影。单看右侧的图可能很容易产生误会,虽然看起来有多行,但实际上就是“盗盗转账给张三40个比特币”这一条交易数据另外的一种呈现形态。因为区块链世界里面这么规定,每一条交易记录,必须有能力追溯到交易发起者 发起这笔交易、其中所涉及金额的上一笔全部交易信息;即这笔钱从何而来的问题。这其实很容易理解,在去中心化的网络中,通过建立交易链、和通过交易链上的可溯源性间接保证数据安全和有效。我们继续看,在区块链世界里,我们是如何仅通过“盗盗转账给张三40个比特币” 这条交易信息完成转账流程的。其实跟现实中你在路边买一个包子的流程大抵上相同。第一步:判断是否有足够的余额完成交易这里我们再一次重申,在比特币的区块链世界里是没有余额的概念(以太坊的底层区块链有余额概念),余额是通过简单数字的加减最终获得,你拥有所谓的数字货币实际上是因为你拥一条交易记录,即 “盗盗转账给张三40个比特币”!这里,我们还是拿这条记录说事:追溯“输出值”是“盗盗”相关的全部有效交易记录作为,对有效交易中的数字进行简单求和,判断是否大于等于40,如果确实大于等于,则将这些有效的交易记录合并形成一条新的交易记录(如下图)。如果小于40,其实可以不需要再继续往下探讨。就上图的例子,我们追溯到曾经转账给盗盗的有效交易记录有“小A转账给盗盗10 btc”、“小B转账给盗盗20 btc”、“小C转账给盗盗 25 btc”,我们需要将这三条交易记录合并成一条更复杂描述的交易记录,即 “( 小A转账给盗盗10 btc + 小B转账给盗盗20 btc + 小C转账给盗盗 25 btc ) 转账给张三40 btc ”第二步:判断是否需要找零对追溯到的有效交易数字求和,如果发现大于需要支付的金额,需要将多出的数字重新支付给自己,相当于找零。对应生成了一条全新的交易记录(如下图)。就上图例子来说,我们最后合并成的交易记录 “( 小A转账给盗盗10 btc + 小B转账给盗盗20 btc + 小C转账给盗盗 25 btc + 盗盗转账给盗盗15 btc ) 转账给张三40 btc ” 事实上等同于“盗盗转账给张三40 btc”。其中“盗盗转账给盗盗15 btc”就可以理解找零。第三步:发出去,让全球节点认同和备份小纸条这条内部重新处理过的复杂交易记录被塞进区块,埋到地下,等待节点挖出来,一旦区块被挖矿成功,并且该区块最终被连在了区块链的主链上。张三将最终拥有了这条交易记录,而先前的“小A转账给盗盗10 btc” 、“小B转账给盗盗20 btc” 、“小C转账给盗盗25 btc”都将被视为已经使用过的交易记录——从此被贴上“无效”的标签,意味着这些交易记录将永远不会再被追溯到。我们最后一次重申,只是希望让你加深印象:拥有数字货币=拥有交易记录!通过设计巧妙的精巧密码学保证数据安全记录着交易信息的小纸条借助区块这个载体,在分布式的网络中以不同的轨迹错综复杂的传递,我们前面说了,你真正拥有的数字资产实际上是一段交易信息,而不是你常规意义上理解的货币。所以这个过程就需要重点解决两个问题:接受到的这条交易记录在传输过程没有被其他人所篡改接受到的这条交易记录确实是由发起交易的人所创造在这里,我们需要事先引入两个知识点,可能稍微有点难消化,但都是计算机领域较为成熟的和基础的概念。第一个知识点:SHA256()函数。你只需要知道,任意长度的字符串、甚至文件体本身经过SHA256函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,SHA256() 函数给出的输出结果都将发生翻天覆地的改变。注意,SHA256()函数是公开的,任何人都能使用。上图,仅仅一个小数点的变化,输出的结果已经翻天覆地第二个知识点:非对称加密。你也只需要了解,任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。有了这些知识点的加持,上面两个问题开始变得有解。下面我们来看下内部是如何扭转和工作的吧,这里拿“小A 转账给了小B 100元钱” 举例: 第一步:小A会先用SHA256函数对自己的小纸条进行处理,得到一个固定长度的字符串,这个字符串就等价于这张小纸条。第二步:小A使用只有自己知道的那一把私钥,对上面固定长度的字符串进行再加密,生成一份名叫数字签名的字符串,这份数字签名能够充分证明是基于这张小纸条的。你可以这么理解,在现实中,你需要对某一份合同的签署,万一有人拿你曾经在其他地方留下的签名复制粘贴过来怎么办?!最好的办法,就是在你每一次签名的时候,故意在字迹当中留下一些同这份合同存在某种信息关联的小细节,通过对小细节的观察可以知道这个签名有没有被移花接木。步骤一和步骤二的结合就是为了生成这样一份有且仅针对这条小纸条有效的签名。第三步:小A将「明文的小纸条」、刚刚加密成功的「数字签名」,以及自己那把可以公布于众的「公钥」打包一起发给小B。第四步:当小B收这三样东西,首先会将明文的小纸条进行SHA256()处理,得到一个字符串,我们将其命名为“字符串2”。然后,小B使用小A公布的公钥,对发过来的数字签名进行解密,得到另外一个“字符串1”。通过比对“字符串1”和“字符串2”的一致性,便可充分证明:小B接受到的小纸条就是小A发出来的小纸条,这张小纸条在中途没有被其他人所篡改;且这张小纸条确实是由小A所编辑。可以看得出来,加解密的过程几乎是一环套一环,中途任何环节被篡改,结果都是大相径庭。借助这一连串的机制,其实已经能够很好的在公开、匿名、彼此不信任的分布式网络环境中解决数字交易过程中可能遇到的很多问题。这个环节可能确实有点难理解,现在,我需要你停下来,静下心,花上几分钟闭目慢慢回味其中设计精湛的地方。掌握了这部分知识以后,我们在这里回答一下前面没有解释清楚的问题,「节点对区块的检验」检验的到底是什么?实际上就是:检验区块内的交易记录签名是否准确(是否被篡改)检验区块内的交易记录输入值是否“有效”(是否使用过)检验区块内的交易记录输入值的数字之和是否大于等于输出值的数字…# 重回“区块”和“区块链”的世界好了,对小纸条和交易记录的研究我们点到为止,其实信息量已经是巨大的了,让我们合上盖子,重回较大的实体、继续聊聊“区块”和“区块链”的话题。还记得,咱们在一开始讲到关于区块的特征吗?区块创造后被埋在地下,需要经过节点们马不停蹄的挖采、而且是凭运气的挖采才有可能获得——不仅仅如此,事实上他还有其他很多神奇的地方,比如说:凭空产生的区块在刚刚创建的时候会形成一股强大的黑洞效应,它会尝试将这段时间全世界各个节点上产生的所有小纸条(交易记录)统统吸进来;在合上区块盖子之前,同时会在区块内放上一些数字货币以及其他一些东西。区块拥有一个唯一的ID,但它只会在这个区块被节点成功从地下挖出来之后创建。这个ID至少会跟「区块内所有小纸条的集合」、「即将与之相连的上一个区块ID」以及「挖矿节点的运气值」等因素相关。既然前面我们已经简单了解了“SHA256()函数”这个东西,这里不妨透露给大家:“区块ID = SHA256(‘区块内所有小纸条的集合’+’即将与之相连的上一个区块ID’+‘挖矿节点的运气值’+’…’)” ;基于先前掌握的知识,然后你应该知道区块内任意一张小纸条的信息稍微做改动、或者节点挖矿运气好一点坏一点等等,当前区块的ID都会 “ biu~ ”的发生改变。基于上述1、2点,如果阅读足够仔细的同学可能会有些头大。在文章开头为了更好的描述,我在设计简化区块链系统的时候故意模棱两可了几个概念,这也许已经误导到了部分同学。这里不得不停下来和你一起修正下之前在你大脑中已经构建的区块链世界观。我们前面讲道,“在节点的视野里,大概每十分钟会凭空产生一个建立在自己平行宇宙世界的神奇区块”。如何正确去理解这句话呢?——拥有上帝之眼的你,可以这么拆解问题、看待问题:同一个周期内,全网并不是产生唯一的一个区块等待挖掘;每个节点事实上都在周期性的创造区块和挖出区块;只是在某一个节点的视野里,它不能感知到另外一个节点上区块的产生。为何这里要特别强调“在某一个节点的视野里”,就是因为我们刚刚讲到,从区块的视角来说,区块的凭空产生,是基于即将与之相连的上一个区块ID;而从节点的视角来看,区块的凭空产生是基于当前节点区块链末尾的那个区块ID产生的。全网会尽力控制在一个周期内只有一个节点能够成功挖出区块,但是不能够完全避免多个节点同时挖出区块的可能性;如何尽力控制?比如说,当大伙挖矿的热情高涨、工作效率提高,区块会被埋在更深更广的地方等。简而言之,通过提高工作难度,来维持这个平衡。另外,值得注意的:产生区块、挖出区块、校验区块,他们的时间周期近乎相同。对于想从技术角度更加深入理解“区块”、“挖矿”本质的同学们,你们可以移步至我的专栏《探索比特币“挖矿”和“区块”的数学本质》,其中涉及到一些比较复杂的数学和技术细节,相信阅读完那部分内容之后,你对区块链会有更加透彻的认知。当然,对于绝大多数的吃瓜群众,看完那边内容可能会让你更加困惑,如果你不是十分的喜欢追根究底的话,我建议你还是直接选择跳过那块吧。至少在我看来,即便少了那部分内容,也不影响我们去理解区块链的魅力。分叉现在,我们终于对“区块”这个概念有了更全面的认识,文章开头讲的故事就可以继续展开来絮叨絮叨:假如几乎同一时间,「中国上海浦东新区张衡路」上的节点和「美国纽约曼哈顿第五大道」上的节点异口同声喊出来:“我挖到区块了!里面的小纸条都是有效的!奖励归我!”。其他节点也几乎同时参与了对这两个区块的校验,结果发现这俩都没毛病,各节点也开始犯困,因为在他们的视野里他们并不清楚最后哪一个区块应该会被主链接纳。算了!都连在自己区块链尾巴上吧,这时尴尬了,区块链硬生生的被分叉了!产生分叉你肯定在想,那还得了,这种情况继续下去,每个节点的区块以及他们整理维护的小纸条都将变得不一样,这已经严重违背了区块链世界里第一大最基本原则——所有节点共同维护同一份数据。所以,为了解决这个问题,区块链世界引入了一条新的规则——拥有最多区块的支链将是真正被认可有价值的,较短的支链将会被直接Kill掉。我们大伙都知道挖矿的过程存在巨大的工作量(如果没有任何难度,把区块扔在人群中,必然同一时间发现区块的节点数量将大大增加,也就会产生无数的支链,通过这个例子,你大概也就能够明白,比特币的区块链世界为什么需要设置工作难度了吧),并且在计算机的硅基世界里,不可能出现所谓 “同时” 的概念,哪怕纳秒的差别,那也总是会有先后顺序。所以理论上,“分叉”的这种僵局很快会在下一个区块被挖掘出来(以及校验区块)的时候被打破,实在不行下下个,或者下下下个……总之机制可以让整个分叉的区块链世界迅速稳定下来。“分叉”这种僵局在确认下一个区块(以及校验小纸条)的时候被打破,从而整个区块链世界迅速稳定下来就上图而言,所有基于张衡路节点挖矿获得的区块以及后续区块的那条分支被视为有价值,最终会全部保留了下来;其他节点会统一效仿那个拥有更长分支链的节点所做的决策。另外,值得一提的是,同一时间,较短分支上的区块会立即丢弃,而里面的小纸条也会随之释放出来,被重新标记上“未确认”。“双花”与“51%攻击”你可能已经开始困惑或者有点兴奋,末尾几个区块的排序在修复过程中,因为时间差肯定会产生一些模棱两可的地方,这往往会给数据安全埋下一颗雷。一个最简单的假设——我记录的一张小纸条很不巧地被归在了一条较短的支链上,这条支链在竞争过程中理所当然输掉了比赛,区块被丢弃、小纸条被无情的贴上“未确认”的标签。在等待下次区块重新确认的过程中,这个时间差内,我,好像、似乎可以做点什么坏事 ԅ(¯﹃¯ԅ) ,就比如说“双花”(双花,花两次,双重支付的意思)你脑海中也许很快浮过的这样的构想,可不可能通过下面这种方法触发双花问题的产生,从而让我不劳而获:假设有一个名叫X-Man的坏家伙,他控制了一个计算机节点,这个节点拥有比地球上任何一个节点算力都强大的计算机集群。首先,X-Man事先创造了一条独立的(不去广而告之)、含有比较多区块的链条。其中一个区块里放着“X-Man转账给X-Man 1000元”的纸条。接着,X-Man跟张三购买了一部手机,他在小纸条上记录下“X-Man转账给张三1000元”。张三已经比一般的卖家谨慎了,他在这条信息被三次确认后(即三个区块被真实挖出、校验和连接)才将手机给了X-Man。按照我们之前的理解,这条交易记录已经板上钉钉永远无法被串改。X-Man拿到手机之后,按下机房的开关,试图将先前已经创造的区块链条连接在自己这个节点区块链的末尾。大功告成,X-Man拥有了一条更长的区块链条,那些较短、存放着“X-Man转账给张三1000元”的区块链,以及在区块链世界里那则真实转账行为被一同成功销毁。(???)事实真的如此吗?在这里我可以很负责任的说,too young too simple,区块链世界规则的制定远比我们想象的要健全很多,还记得我们之前讲的“区块的ID至少会跟区块内所有小纸条的集合、即将与之相连的上一个区块ID、当前产生区块的时间戳以及挖矿节点的运气值等因素相关”。 在这里,正是因为打算连接到主链的过程中,主链会立马意识到,那条事先准备的链子(的第一个区块)的时间戳存在异常,不属于当前区块链世界里线性增长的时间戳,于是马上意识到这个事先准备的链子(的第一个区块)是无效的,需要重新计算。 在区块链的世界,重新计算的行为等同于把自己(节点)置身于同一个起跑线,跟世界上其他所有的节点一同竞争挖矿。你会说,我拥有更强大的计算能力,但是对不起,跟你竞争的对象并不是第五大道、南京西路、香榭丽舍大道上的某一个节点,而是全球所有算力的集合,在这个集合中,你拥有的算力永远都只是一个很小的子集。所以,根据区块链算力民主、少数服从多数的基本原则,这个构想将永远不会成立。除非....你控制着全球51%的算力,这也就是区块链世界里另外一个著名的概念,叫做“51%攻击”,但这也仅仅是一个理论值,在真实世界里这样的攻击我个人觉得是很难发动起来的,这里面就牵涉到很多经济、哲学甚至政治的因素。举个最简单的例子:X-Man为了回滚刚刚发生的一笔交易记录,成功发起了51%攻击,这意味着很快整个区块链系统将会崩盘,因为这次攻击已经严重伤害到人们对这套系统的信任,接着比特币开始暴跌至几乎一文不值;但是这个拥有51%算力的X-Man原本完完全全可以通过挖矿的方式获取更多收益,购买无数的iPhone手机。那他不是脑袋不是坏了还能是啥?对51%攻击话题感兴趣的同学可以阅读这篇文章《什么是比特币51%攻击?》。至此,我觉得区块链最基础、最核心的知识已经全部讲完了(除了挖矿内部实现原理,作为一个遗憾留在这里,有时间会完善掉),相信你已经对它有了一个宏观的认识。另外,由于这篇文章采用了适当抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,欢迎大家来纠错。另外,也是受限于自己知识结构的缺失,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。--问答部分去中心化的系统中,到底是谁在发行货币?是无限量发行吗?比特币的货币是通过挖矿(工作量证明)来发行的,总数量是通过程序写死了2100万个,而第一笔区块奖励也是硬编码写死的。矿工挖出一个区块所获得的奖励,每隔21万个区块将减少一半,按照平均10分钟挖出一个区块的执行效率,也就就说差不多每四年会锐减一次。2009年1月起每个区块奖励50个比特币,2012年11月减半为每个区块25个比特币,2016年7月减半为12.5个比特币。基于这个规则,到2140年,所有比特币(20,999,999,980)将全部发行完毕,之后不会再有新的比特币产生。矿工节点的收益除了挖出区块以外还有哪些?矿工节点的收益主要由两部分组成:1)挖出新区块的奖励;2)挖出新区块内所含交易的交易费。但就目前来说,一个区块内的交易费大概只占到矿工总收入的0.5%甚至更少,大部分收益主要还是来自于挖矿所得的比特币奖励。然而,随着挖矿奖励的递减,以及每个区块中包含的交易数量增加,交易费在矿工收益中所占的比重将会逐渐增加。在2140年之后,所有的矿工收益将完全由交易费构成。是不是只有成为节点才能进行交易?、钱包、尤其是轻钱包是不是也可以挖矿?这个问题是读者问出的,可能之前也有同学提出过类似的问题,但是没有引起我足够的重视,后来发现其实我也把概念混淆了。我一并去查阅了相关资料,对节点和钱包有一些更完整的理解和定义。详细请阅读我的专栏文章《区块链节点与钱包的分类、边际和使命,看这篇文章就足够了》参考中心化与去中心化 https://www.douban.com/note/624421270/图说区块链 https://book.douban.com/subject/27084306/区块链是什么,如何简单易懂地介绍区块链? https://www.zhihu.com/question/37290469 什么是比特币51%攻击? http://8btc.com/article-1949-1.html区块链与新经济:数字货币2.0时代 https://book.douban.com/subject/26804497/詳解比特幣原理和運行機制 https://www.youtube.com/watch?v=P4seQcP77H4区块链是什么:从技术架构到哲学核心 https://v.qq.com/x/page/x0518nuh2z7_0.html区块链核心算法解析 https://book.douban.com/subject/27081206/深入理解比特幣的安全性及程式交易安全性與相關的密碼學原理 https://www.youtube.com/watch?v=3w1Tg3B_oKQ 深度了解区块链——拜占庭将军问题深入探讨 https://wallstreetcn.com/articles/338061精通比特币-挖矿与共识 http://zhibimo.com/read/wang-miao/mastering-bitcoin/Chapter08.html编辑于 2022-08-16 09:47赞同 6846554 条评论分享收藏喜欢
区块链(数据结构)_百度百科
数据结构)_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心区块链是一个多义词,请在下列义项上选择浏览(共12个义项)展开添加义项区块链播报讨论上传视频数据结构收藏查看我的收藏0有用+10本词条由中国科学院信息工程研究所 参与编辑并审核,经科普中国·科学百科认证 。区块链(英文名:blockchain [3-4] [7]或block chain [2][13])是一种块链式存储、不可篡改、安全可信的去中心化分布式账本 [1],它结合了分布式存储、点对点传输、共识机制、密码学等技术 [8],通过不断增长的数据块链(Blocks)记录交易和信息,确保数据的安全和透明性 [6]。区块链起源于比特币(Bitcoin),最初由中本聪(Satoshi Nakamoto)在2008年提出,作为比特币的底层技术 [1]。从诞生初期的比特币网络开始,区块链逐渐演化为一项全球性技术,吸引了全球的关注和投资[3]。随后,以太坊(Ethereum)等新一代区块链平台的出现进一步扩展了应用领域 [3-4]。区块链的特点包括去中心化、不可篡改、透明、安全和可编程性 [6] [8]。每个数据块都链接到前一个块,形成连续的链,保障了交易历史的完整性。智能合约技术使区块链可编程,支持更广泛的应用 [5]。区块链在金融、供应链、医疗、不动产等领域得到广泛应用 [5] [8]。尽管仍面临可扩展性和法规挑战,但它已经成为改变传统商业和社会模式的强大工具,对未来具有巨大潜力 [13-14]。中文名区块链外文名blockchain [3-4] [7]block chain [2] [11]定 义一种去中心化的分布式账本技术 [1]特 点一种去中心化的分布式账本技术,去中心化、不可篡改、透明、安全和可编程性 [1]分 类公有链、联盟链、私有链领 域金融、供应链、医疗、不动产等起源于2008年11月1日(被提出)2009年1月3日(创世区块诞生) [1] [3]创始人中本聪(Satoshi Nakamoto)典型区块链系统Bitcoin(比特币)、Ethereum(以太坊)、Libra/Diem、Litecoin、Monero、Dogecoin目录1区块链概述▪区块链的概念▪区块链的特征2区块链技术发展历史▪区块链技术发展脉络▪区块链技术发展历程3区块链的分类▪公有链▪联盟链▪私有链4区块链的架构▪数据层▪网络层▪共识层▪激励层▪合约层▪应用层5典型区块链系统▪Bitcoin▪Ethereum▪Libra6区块链技术▪共识机制▪智能合约7区块链安全问题▪分布式拒绝服务攻击▪延展性攻击▪女巫攻击▪路由攻击▪日蚀攻击▪反洗钱犯罪8区块链相关热点概念▪挖矿▪币圈▪矿圈▪数字货币9对区块链的误解▪误解1:区块链等于炒比特币▪误解2:区块链上的数据是绝对安全的▪误解3:区块链适合存储大量数据▪误解4智能合约是存储在区块链上的现实合约▪误解5:比特币跟硬币的性质是一样的▪误解6:比特币成不了主流货币是因为政府▪误解7:区块链可以应用于全行业10区块链的应用▪供应链金融▪资产交易▪司法存证▪智能合同▪溯源、防伪▪政府▪数字证书▪物流11相关政策与法律法规区块链概述播报编辑区块链(Blockchain)技术,自从在比特币(Bitcoin)白皮书《比特币:一种点对点电子货币系统(Bitcoin: A Peerto-Peer Electronic Cash System)》 [1]一文中被化名为中本聪(Satoshi Nakamoto)的作者提出以来,就受到许多关注且备受争议。有些人认为区块链是继蒸汽机、电力、互联网之后的颠覆性技术发明,将彻底改变整个人类社会价值传递的方式,甚至带来新一轮的科技革命 [3] [8] [37];而有些反对者则认为比特币乃至区块链是一个骗局,或是对其未来充满担忧 [9] [35-36]。近年来,随着比特币、以太坊(Ethereum)等加密货币的火热,区块链技术在全球范围内得到越来越多的关注。2019年10月24日,中共中央政治局就区块链技术发展现状和趋势进行第十八次集体学习 [38],此后,区块链技术更是吸引了举国上下的目光 [39]。区块链技术目前已经应用于多个领域,如金融、物流、食品安全等 [15] [21] [30]。尽管不少人对比特币的未来发展仍然充满疑虑,但大多数技术专家非常认可区块链技术的未来,认为其理念的推广与应用最终会超越加密货币,成为时代的热点和前沿技术 [16-17] [22] [37]。但是,与其火热的应用、受到广泛的关注度和蓬勃的发展相比,普通大众对于区块链的认知尚停留在很简单的层面。人们对于区块链的认识往往是局限于加密数字货币,或者是一项敬而远之、远离日常生活的高新技术 [27] [31]。总的来说,区块链技术建立了新的信任机制,允许各网络节点之间在没有权威节点的去中心化情况下达成可信共识,是一项从思想到技术的重大飞跃 [34]。区块链的概念中本聪在《比特币:一种点对点电子货币系统》一文中,并未给出“区块链”的具体定义,只是提出了一种基于哈希证明的链式区块结构,即称为区块链的数据结构。“区块链”一词也是来源于此,其中“区块”(Block)一词指代一个包含了数据的基本结构单元(块),而链(Chain)则代表了由区块产生的哈希链表。从狭义上来说,根据工业和信息化部2016年发布的《中国区块链技术和应用发展白皮书》所述,区块链技术是一种按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证不可篡改和不可伪造的分布式账本技术 [33]。从广义来说,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式 [25]。一般认为,区块链技术是伴随着以“比特币”为首的数字货币而出现的一项新兴技术,是一种以密码学算法为基础的点对点分布式账本技术,是分布式存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式 [23]。区块链包括三个基本要素,即交易(Transaction,一次操作,导致账本状态的一次改变)、区块(Block,记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识)和链(Chain,由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录)。区块链中每个区块保存规定时间段内的数据记录(即交易),并通过密码学的方式构建一条安全可信的链条,形成一个不可篡改、全员共有的分布式账本。通俗地说,区块链是一个收录所有历史交易的账本,不同节点之间各持一份,节点间通过共识算法确保所有人的账本最终趋于一致。区块链中的每一个区块就是账本的每一页,记录了一个批次记录下来的交易条目。这样一来,所有交易的细节都被记录在一个任何节点都可以看得到的公开账本上,如果想要修改一个已经记录的交易,需要所有持有账本的节点同时修改。同时,由于区块链账本里面的每一页都记录了上一页的一个摘要信息,如果修改了某一页的账本(也就是篡改了某一个区块),其摘要就会跟下一页上记录的摘要不匹配,这时候就要连带修改下一页的内容,这就进一步导致了下一页的摘要与下下页的记录不匹配。如此循环,一个交易的篡改会导致后续所有区块摘要的修改,考虑到还要让所有人承认这些改变,这将是一个工作量巨大到近乎不可能完成的工作。正是从这个角度看,区块链具有不可篡改的特性。分布式记账网络区块链中的区块模型示意图区块链的特征1.去中心化在中本聪的设计中,每一枚比特币的产生都独立于权威中心机构,任意个人、组织都可以参与到每次挖矿、交易、验证中,成为庞大的比特币网络中的一部分。区块链网络通常由数量众多的节点组成,根据需求不同会由一部分节点或者全部节点承担账本数据维护工作,少量节点的离线或者功能丧失并不会影响整体系统的运行。在区块链中,各个节点和矿工遵守一套基于密码算法的记账交易规则,通过分布式存储和算力,共同维护全网的数据,避免了传统中心化机构对数据进行管理带来的高成本、易欺诈、缺乏透明、滥用权限等问题。普通用户之间的交易也不需要第三方机构介入,直接点对点进行交易互动即可 [21]。2.开放性区块链系统是开放的,它的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统的信息高度透明。虽然区块链的匿名性使交易各方的私有信息被加密,但这不影响区块链的开放性,加密只是对开放信息的一种保护 [20]。在开放性的区块链系统中,为了保护一些隐私信息,一些区块链系统使用了隐私保护技术,使得人们虽然可以查看所有信息,但不能查看一些隐私信息 [20-21]。3.匿名性在区块链中,数据交换的双方可以是匿名的,系统中的各个节点无须知道彼此的身份和个人信息即可进行数据交换 [20]。我们谈论的隐私通常是指广义的隐私:别人不知道你是谁,也不知道你在做什么。事实上,隐私包含两个概念:狭义的隐私(Privacy)与匿名(Anonymity)。狭义的隐私就是别人知道你是谁,但不知道你在做什么;匿名则是别人知道你在做什么,但不知道你是谁。虽然区块链上的交易使用化名(Pseudonym),即地址(Address),但由于所有交易和状态都是明文,因此任何人都可以对所有化名进行分析并建构出用户特征(User Profile)。更有研究指出,有些方法可以解析出化名与IP的映射关系,一旦IP与化名产生关联,则用户的每个行为都如同裸露在阳光下一般。在比特币和以太坊等密码学货币的系统中,交易并不基于现实身份,而是基于密码学产生的钱包地址。但它们并不是匿名系统,很多文章和书籍里面提到的数字货币的匿名性,准确来说其实是化名。在一般的系统中,我们并不明确区分化名与匿名。但专门讨论隐私问题时,会区分化名与匿名。因为化名产生的信息在区块链系统中是可以查询的,尤其是在公有链中,可以公开查询所有的交易的特性会让化名在大数据的分析下完全不具备匿名性。但真正的匿名性,如达世币、门罗币、Zcash等隐私货币使用的隐私技术才真正具有匿名性。匿名和化名是不同的。在计算机科学中,匿名是指具备无关联性(Unlinkability)的化名。所谓无关联性,就是指网络中其他人无法将用户与系统之间的任意两次交互(发送交易、查询等)进行关联。在比特币或以太坊中,由于用户反复使用公钥哈希值作为交易标识,交易之间显然能建立关联。因此比特币或以太坊并不具备匿名性。这些不具备匿名性的数据会造成商业信息的泄露,影响区块链技术的普及使用 [18] [20-21]。4.可追溯性区块链采用带时间戳的块链式存储结构,有利于追溯交易从源头状态到最近状态的整个过程。时间戳作为区块数据存在的证明,有助于将区块链应用于公证、知识产权注册等时间敏感领域 [6] [19]。5.透明性相较于用户匿名性,比特币和区块链系统的交易和历史都是透明的。由于在区块链中,账本是分发到整个网络所有参与者,账本的校对、历史信息等对于账本的持有者而言,都是透明的、公开的 [6]。6.不可篡改性比特币的每次交易都会记录在区块链上,不同于由中心机构主宰的交易模式,其中心机构可以自行修改任意用户的交易信息,比特币很难篡改 [6]。7.多方共识区块链作为一个多方参与维护的分布式账本系统,参与方需要约定数据校验、写入和冲突解决的规则,这被称为共识算法。比特币和以太坊作为公有链当前采用的是工作量证明算法(PoW),应用于联盟链领域的共识算法则更加灵活多样,贴近业务需求本身 [20]。区块链技术发展历史播报编辑区块链技术发展脉络1.区块链1.0 1.0时代是以比特币为代表的虚拟数字货币时代,实现了数字货币的应用,包括支付流通等货币职能和去中心化的支付手段。比特币描述了一个宏伟的蓝图,未来的货币不再依赖于各国央行发行,而是全球统一的货币。2.区块链2.0 2.0时代是智能合约的时代,智能合约与数字货币结合在金融领域有着更广泛的应用场景,区块链实现的点对点操作避免了第三方的介入,可以避免环境、跨国、跨行、货币转换等问题,直接实现点对点的转账,提高了金融系统的效率。区块链2.0的代表是以太坊,以太坊提供了一个智能合约编程环境,用户通过开发智能合约实现了各种复杂逻辑,提供了广泛的商业、非商业应用场景。3.区块链3.03.0时代是指将区块链技术应用于金融之外行业的时代,区块链3.0被称为互联网技术之后的新一代技术创新,可以推动更大的产业改革。区块链3.0会涉及社会生活的各个方面,会在数据存储、数据鉴证、资产管理、选举投票等领域得到广泛应用,促进信息、资源、价值的流通和有效配置。区块链技术发展历程1.比特币产生之前(1970-2008年)1976年,Bailey W.Diffie和Martin E.Hellman发表了论文《密码学的新方向》 [11],论文覆盖了未来几十年密码学所有的新的进展领域,包括非对称加密、椭圆曲线算法、哈希等,该论文奠定了迄今为止整个密码学的发展方向,也对区块链的技术和比特币的诞生起到决定性作用。哈耶克出版了他人生中最后一本经济学方面的专著:《货币的非国家化》 [12]。该书提出的非主权货币、竞争发行货币等理念,是去中心化货币的精神指南。1980年,Merkle Ralf提出了Merkle-Tree这种数据结构和相应的算法。1982年,拜占庭将军问题由Leslie Lamport等提出,这是一个点对点通信中的基本问题。1982年,密码学网络支付系统由David Chaum提出,该系统注重隐私安全,具有不可追踪的特性。1990年,Paxos算法由Leslie Lamport提出,这是一种基于消息传递的一致性算法。1991年,Stuart Haber与W.Scott Stornetta于1991年提出利用时间戳确保数位文件安全的协议。1997年,哈希现金技术由Adam Back发明。哈希现金运用的一种PoW算法通过依赖成本函数的不可逆性,从而实现容易被验证但很难被破解的功能,最早应用于拦截垃圾邮件。1998年,戴伟于1998年发表匿名的分散式电子现金系统b-money,引入PoW机制,强调点对点交易和不可篡改特性,每个节点分别记录自己的账本。2004年,哈尔·芬尼推出了自己的电子货币,在其中采用了可复用的工作量证明机制(RPoW)。2.比特币的诞生与发展(2008-2010年)2008年9月,以雷曼兄弟的倒闭为开端,金融危机在美国爆发并向全世界蔓延。为应对危机,世界各国政府和中央银行采取了史无前例的财政刺激方案和扩张的货币政策并对金融机构提供紧急援助、这些措施同时引起了广泛的质疑 [45]。2008年11月1日,中本聪发布比特币白皮书。2008年11月16日,中本聪发布了比特币代码的先行版本。2009年1月3日,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了比特币的第个区块——创世区块(Genesis Block),并获得了首批“挖矿”奖励——50个比特币。2009年1月11日,比特币客户端0.1版发布。2009年1月12日,第一笔比特币交易,中本聪将10枚比特币发送给密码学界活跃的开发者哈尔·芬尼。2009年10月5日,最早的比特币与美元的汇率为1美元=1309.03比特币,由一位名为“新自由标准”(New Liberty Standard)的用户发布 [45]。一枚比特币的价值计算方法如下:由高CPU利用率的计算机运行一年所需要的平均电量1331.5千瓦时,乘以上年度美国居民平均用电成本0.1136美元,除以12个月,再除以过去30天里生产的比特币数量,最后除以1美元。2009年12月30日,比特币挖矿难度首次增长,为了保持每10分钟1个区块的恒定开采速度,比特币网络进行了自我调整,挖矿难度变得更大。2010年5月22日,一个程序员用10000个比特币购买了两张比萨的优惠券。当时一枚比特币价值仅为0.005美分。后来很多的人将5.22日称为“比特币比萨日” [45]。2010年7月12日,比特币价格第一次剧烈波动,2010年7月12日到7月16日,比特币汇率经历了为期5天的价格剧烈波动时期,从0.008美元/比特币上涨到0.08美元/比特币,这是比特币汇率发生的第一次价格剧烈波动。2010年7月12日,GPU挖矿开始。由于比特币的汇率持续上升,积极的矿工们开始寻找提高计算能力的方法。专用的图形卡比传统的CPU具有更多的能量。据称,矿工ArtForz是第一个成功实现在矿场上用个人的OpenCL GPU挖矿的人。2010年7月17日,第一个比特币交易平台Mt. Gox成立。2010年8月6日,比特币网络协议升级。比特币协议中的一个主要漏洞于2010年8月6日被发现:交易信息未经正确验证,就被列入交易记录或区块链。这个漏洞被人恶查利用,生成了1840亿枚比特币,并被发送到两个比特币地址上。这笔非法交易很快就被发现、漏洞在数小时内修复,在交易日志中的非法交易被删除,比特币网络协议也因此升级至更新的版本 [33]。2010年10月16日,出现了第一笔托管交易。比特币论坛会员Diablo-D3和Nanotube于2010年10月16日进行了第一笔有记录的托管交易,托管人为Theymos。2010年12月5日,比特币第一次与现实的金融社区产生交集。在维基解密泄露美国外交电报事件期间,比特币社区呼吁维基解密接受比特币捐款以打破金融封锁。中本聪表示坚决反对,认为比特币还在摇篮中,经不起冲突和争议。2010年12月16日,比特币矿池出现,采矿成为一项团队运动,一群矿工于2010年12月16日一起在slush矿池挖出了它的第一个区块。根据其贡献的工作量,每位矿工都获得了相应的报酬。此后的两个月间,slush矿池的算力从1400Mhash/s增长到了60Ghash/s。3.对比特币的质疑与关注(2011-2014年)2011年2月9日,比特币首次与美元等价 [3]。2011年3月6日,比特币全网计算速度达到900G Hash/s,显示“挖矿”流行起来。2011年6月20日,世界上最大的比特币交易网站Mt.Gox出现交易漏洞,1比特币只卖1美分,而此前的正常价格在15美元左右。Mt.Gox一方面号召用户赶紧修改密码,另一方面宣布这一反常时段内的所有大单交易无效。2011年6月29日,比特币支付处理商BitPay于2011年6月29日推出了第一个用于智能手机的比特币电子钱包。2011年7月,当时世界第三大比特币交易所Bitomat丢失了17000枚比特币。2011年8月,MyBitcoin遭黑客攻击,涉及49%的客户存款,超过78000个比特币。2011年8月20日,第一次比特币会议在纽约召开。2012年8月14日,芬兰中央银行承认比特币的合法性。2012年9月27日,比特币基金会成 [25]。2012年11月25日,欧洲第一次比特币会议召开。2012年11月28日,区块奖励首次减半。2012年12月26日,法国比特币中央交易所诞生。2013年7月30日,泰国封杀比特币。2013年8月19日,德国承认比特币的合法性。2013年11月29日,比特币价格首度超过黄金。2013年12月,支付宝停止接受比特币付款。2013年12月5日,中国人民银行等五部委发布《关于防范比特币风险的通知》,明确比特币不具有与货币等同的法律地位,不能且不应作为货币在市场上流通使用。通知发出后,当天比特币的单价大跌[83]。2013年12月18日,比特币单价暴跌。中国两大比特币交易平台比特币中国和OKCoin发布公告,宣布暂停人民币充值服务。随后,比特币的单价跌到了2011元。2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目。2014年7月9日,波兰财政部副部长Wojciech Kowalczyk发布了一个文件,确认了比特币在波兰现有的金融法规下可作为一种金融工具。2014年7月12日,法国发布比特币新规。法国经济和金融部门表示将在当年年底对比特币和其他数字货币的金融机构和个人使用者实施监管措施。2014年7月24日起,以太坊进行了为期42天的以太币预售。2014年12月11日,微软接受比特币支付。4.区块链成为热门话题(2015-2023年)2015年,比特币突破1P Hash/s的全网版图。2015年,IBM宣布加入开放式帐本项目。2015年,微软公司宣布支持区块链服务。2015年6月,坦桑德银行进行区块链实验。2015年10月22日,欧盟对比特币免征增值税。2015年12月16日,比特币证券发行。美国证券交易委员会批准在线零售商Overstock通过比特币区块链发行该公司的股票。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。2016年4月5日,去中心化电子商务协议OpenBazaar上线。2016年5月25日,日本认定比特币为财产。2016年6月,民法总则划定虚拟资产保护范围。第十二届全国人大常委会第二十一次会议于2016年6月在北京举行,会议首次审议了全国人大常委会委员长提请的《中华人民共和国民法总则(草案)》议案的说明。草案对网络虚拟财产、数据信息等新型民事权利客体作出了规定,这意味着网络虚拟财产、数据信息将正式成为权利客体,比特币等网络虚拟财产将正式受到法律保护 [32]。2016年7月20日,比特币奖励二次减半。2017年2月,中国央行数字货币DCEP试运行。中国央行或将成为全球首个发行数字货币并将其投入真实应用的中央银行。2017年2月26日,中国区块链应用研究中心(上海)正式揭牌成立。2017年3月24日,阿里巴巴与普华永道签署了一项跨境食品溯源的互信框架合作,将应用区块链等新技术共同打造透明可追溯的跨境食品供应链,搭建更为安全的食品市场。2017年4月,腾讯发布区块链方案白皮书,旨在打造区块链生态。2017年4月1日,比特币正式成为日本合法支付方式。2017年4月25日,首个“区块链大农场”推介会在上海举办。2017年5月31日,中国三大比特币交易所之二的火币网及OKCoin币行正式上线以太坊。2017年9月4日下午,中国人民银行等七部委联合发布公告:ICO是未经批准非法融资行为。ICO在中国被叫停 [32]。2018年,比特币价格从最高的19000美元,下滑到3000多美元,跌幅超过80%。2018年初,Facebook CEO马克·扎克伯格宣布探索加密技术和虚拟加密货币技术,亚马逊、谷歌、IBM等也相继入场。国内市场方面,国内腾讯、京东、阿里巴巴等互联网巨头也都接连宣布涉足区块链,迅雷更是通过提前布局云计算与区块链实现了企业的转型与业务的快速增长 [10]。2018年1月22日,英国技术发展部门相关人士表示,英国将投资1900万英镑用于支持区块链等新兴科技领域的新产品或服务。2018年1月27日,“CIFC区块链联盟”成立仪式在北京举行。2018年3月11日,召开“第二期CIFC区块链技术与应用实践闭门会”。2018年3月31日,召开“2018首届‘区块链+’百人峰会暨CIFC区块链与数字经济论坛”。2018年4月9日下午,雄岸100亿元基金成立,中国杭州区块链产业园启动仪式在杭州未来科技城举行,首批10家区块链产业企业集中签约入驻。2018年4月,百度图腾正式上线,实现原创作品可溯源、可转载、可监控。次月,百度百科上链,利用区块链不可篡改特性保持百科历史版本准确存留。2018年5月12日,乌镇普众区块链学院正式揭牌成立。2018年5月25日,360首次发布针对区块链领域的安全解决方案。该方案基于360的安全大数据,结合360安全大脑,涵盖了钱包、交易所、矿池、智能合约四大领域。2018年5月28日,中国国家主席习近平在中国科学院第十九次院士大会、中国工程院第十四次院士大会上发表重要讲话,表示区块链与人工智能、量子信息、移动通信、物联网并列为新一代信息技术的代表。2018年5月底,北京、上海、广东、河北(雄安)、江苏、山东、贵州、甘肃、海南等24个省市或地区发布了区块链政策及指导意见,多个省份将区块链列入本省“十三五”战略发展规划,开展对区块链产业链布局[82]。2018年6月25日,蚂蚁金服宣布推出基于区块链技术的电子钱包跨境汇款业务,首次跨境业务开展于香港地区和菲律宾的个人转账业务,实现香港地区向菲律宾汇款能做到3秒到账。2018年9月3日,最高人民法院印发《关于互联网法院审理案件若干问题的规定》首次认定链上数据可以作为司法采信的依据。2019年1月,百度运用区块链等技术将北京海淀公园升级改造完毕,推出了全国首个AI公园 [4]。2019年6月18日,Facebook牵头发布全球数字加密货币项目Libra白皮书。2019年9月,德国发布其“国家区块链发展战略”。2019年11月,欧盟委员会宣布针对欧洲人工智能和以区块链为重点的初创公司的新投资计划。2020年2月,澳大利亚发布《国家区块链发展路线图》。2020年3月,韩国科学与ICT部宣布发起《区块链技术验证支撑计划2020》。2021年3月公布的《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》中,区块链被列为七大新兴数字产业之一,明确提出了区块链技术创新、应用发展、监管机制完善的三大重点任务,特别强调了以联盟链为重点发展金融科技应用 [31]。2021年7月19日,农业农村部信息中心牵头在山东省潍坊市开展“区块链+韭菜”试点。2022年1月,亚洲开发银行与东南亚国家、日本、中国、韩国组成联盟,基于区块链实现在“10+3”地区的中央银行和证券存管机构数据互联互通。2022年5月,最高人民法院发布《关于加强区块链司法应用的意见》,提出充分发挥区块链在促进司法公信、服务社会治理、防范化解风险、推动高质量发展等方面的作用,全面深化智慧法院建设,推进审判体系和审判能力现代化 [26]。2022年9月,以太坊完成合并升级,从PoW共识迁移至PoS共识,大幅提升其性能、安全性和可扩展性,能耗降低99.95% [29]。2022年9月,Github上的流行区块链项目(关注度大于300)数量达到761项。2022年10月,国务院办公厅印发全国一体化政务大数据体系建设指南,提出积极运用云计算、区块链、人工智能等技术提升数据治理和服务能力,加快政府数字化转型,提供更多数字化服务。2023年5月16日,上海树图区块链研究院与中国电信股份有限公司研究院联合研发的BSIM卡(区块链SIM卡)在上海对外发布。BSIM卡比SIM卡存储空间扩大10倍至20倍,计算能力提升数十倍,实现卡内生成和存储用户的公私钥 [41]。2023年5月25日,2023中关村论坛开幕式发布十项重大科技成果,其中涉及区块链和量子计算等领域。2023年8月25日,2023中国产业区块链峰会在南京市鼓楼区召开,《中国产业区块链发展报告(2023)》和《2023中国产业区块链生态图谱》发布。《中国产业区块链发展报告(2023)》显示,2022年国际级重要区块链政策对比过去有所下降,产业区块链从政策引领过渡至产业自驱动阶段。但2022年区块链专利申请数量仍处于较高水平,技术与应用创新仍处于高速发展期 [40]。2023 年 9 月,经营范围涉及云计算、大数据、人工智能、区块链等数字技术的企业超过 53 万家。从产业链供应链数字经济重点项目来看,2022 年新增重点项目数达到 912 个,占比约为 46.18%,新增重点项目数保持高速增长 [28]。2023年11月1日,社交平台telegram发起的区块链项目TON达到历史最高出块速度,每秒钟最快记录是108409个区块 [42]。区块链的分类播报编辑根据去中心化程度,区块链系统可以分为公有链、联盟链和私有链三类 [5],这三类区块链的对比如下表所示。三类区块链的对比特征公有链联盟链私有链参与者任何人自由进出企业或联盟成员个体或公司内部共识机制PoW/PoS/DPoS等分布式一致性算法分布式一致性算法激励机制需要可选不需要中心化程度去中心化多中心化(多)中心化数据一致性概率(弱)一致性确定(强)一致性确定(强)一致性网络规模大较大小处理交易能力3~20/s-11000~10000/s-11000~200000/s-1典型应用加密货币、存证支付、清算审计公有链由于公有链系统对节点是开放的,公有链通常规模较大,所以达成共识难度较高,吞吐量较低,效率较低。在公有链环境中,由于节点数量不确定,节点的身份也未知,因此为了保证系统的可靠可信,需要确定合适的共识算法来保证数据的一致性和设计激励机制去维护系统的持续运行。典型的公有链系统有比特币、以太坊。联盟链联盟链通常是由具有相同行业背景的多家不同机构组成的,其应用场景为多个银行之间的支付结算、多种企业之间的供应链管理、政府部门之间的信息共享等。联盟链中的共识节点来自联盟内各个机构,且提供节点审查、验证管理机制,节点数目远小于公有链,因此吞吐量较高,可以实现毫秒级确认;链上数据仅在联盟机构内部共享,拥有更好的安全隐私保护。联盟链有Hyperledger、Fabric、Corda平台和企业以太坊联盟等。私有链私有链通常部署于单个机构,适用于内部数据管理与审计,共识节点均来自机构内部。私有链一般网络规模更小,因此比联盟链效率更高,甚至可以与中心化数据库的性能相当。联盟链和私有链由于准入门槛的限制,可以有效地减小恶意节点作乱的风险,容易达成数据的强一致性。区块链的架构播报编辑2016年袁勇和王飞跃提出了区块链基础架构的“六层模型” [22],从底层到上层依次是数据层、网络层、共识层、激励层、合约层和应用层。数据层包括区块结构和数据加密等技术;网络层包括网络结构、数据传播技术和验证机制等;共识层包括PoW(工作量证明)、PoS(权益证明)、DPoS(授权股份证明)等多个网络节点之间的共识机制;激励层包括激励的发行和分配机制;合约层包括各种脚本代码和智能合约;应用层包括数字货币等应用场景。区块链基础架构的“六层模型”数据层数据层负责区块链数据结构和物理存储,区块链的数据结构表示为交易被排序的区块链表。区块记录一段时间内的交易记录,将一段时间内收到的交易记录封装到一个数据区块中,在区块的头部包含块的元数据,元数据主要包括区块当前版本、父区块的哈希值、 Merkle树根哈希(用于有效总结区块中所有交易的数据结构)、区块创建时间、区块当前难度和一个随机值)区块头用于验证区块的有效性。每个区块头都连接着前一个区块,这使得区块中的每一个交易都有据可查,区块的哈希值能够唯一标识区块,将区块按照区块头中的哈希指针链接成一个链,就是区块链。区块结构区块链中通常保存数据的哈希值,而不是直接保存原始的数据。由于哈希函数不能反推出输入值,计算过程消耗的时间大约相同,输出值长度固定,输入的任何变动都会导致输出显著不同,因而其非常适合用于存储区块数据。例如比特币通常使用双SHA256哈希函数。Merkle树是区块链数据层的一种重要数据结构,区块链中交易的哈希值存储为Merkle树的一部分。Merkle树通过生成整个交易集的数字指纹来汇总块中的所有交易,从而使用户能够验证交易是否包含在块中。Merkle树逐层记录哈希值的特点使底层数据的任何变动,都会传递到其父节点,一层层沿着路径一直到树根,这意味着树根的值实际上代表了对底层所有数据的数字摘要,实现了块内交易数据的不可篡改性。Merkel树使得区块头只需要包含根哈希值,而不必封装所有底层数据,从而极大地提高了区块链的运行效率和可扩展性。此外Merkel树支持“简化支付验证”,可以在不运行完整区块链网络节点的情况下完成对数据的检验。网络层网络层实现了区块链网络中节点之间的信息交流,属于分布式存储技术。区块链的点对点机制、数据传播机制、数据验证机制、分布式算法和加密签名等都是在网络层实现的。区块链网络中没有中心节点,任意两个节点间可直接进行交易,任何时刻每个节点都可自由地加入或退出网络,因此,区块链平台通常选择完全分布式且可容忍单点故障的P2P协议作为网络传输协议。区块链网络的P2P协议主要用于节点间传输交易数据和区块数据。在区块链网络中,每个节点都具有平等、分治、分布等特性和路由发现、广播交易、发现新节点等功能,不存在中心化的权威节点和层级结构。节点之间通过维护一个共同的区块链结构来保持通信,共同维护整个区块链账本。按照节点中存储的数据量,节点可以划分为全节点和轻量级节点,全节点中保存有完整的区块链数据,并且实时动态更新主链,这样的优点是可以独立完成区块数据的校验、查询和更新,缺点是空间成本高;轻量级节点仅保存部分区块数据,需要从相邻节点获取所需的数据才能完成区块数据校验。节点时刻监听网络中广播的数据,当新的区块生成后,生成该区块的节点会向全网广播,其他节点收到发来的新交易和新区块时,其首先会验证这些交易和区块是否有效,包括交易中的数字签名、区块中的工作量证明等,只有验证通过的交易和区块才会被处理和转发,以防止无效数据的继续传播。共识层共识层负责让高度分散的节点在去中心化的区块链网络中高效地针对区块数据的有效性达成共识,封装了区块链系统中使用的各类共识算法。区块链系统的核心是区块链账本数据的维护,因此,共识的过程是各节点验证及更新账本的过程,共识的结果是系统对外提供一份统一的账本。由于区块链系统未对参与节点的身份进行限制,网络中的节点可能为了利益进行欺骗、作恶,所以为了避免恶意节点,系统要求每一次记账都需要付出一定的代价,而其余的节点只要很小的代价就可以验证。“代价”有很多种形式,如计算资源、存储资源、特殊硬件等。公式算法机制包括工作量证明(PoW)、权益证明(PoS)、授权股份证明(DPoS)等。工作量证明要求每个节点都使用自身算力解决SHA256计算难题,寻找一个合适的随机数使得区块头部元数据的SHA256哈希值小于区块头中难度目标的设定值,难度目标越大合适的随机数越难找到,首先找到的节点可以获得新区块的记账权并获得奖励。SHA256计算难题的解决很困难,但是验证非常容易,这样其他节点可以快速地验证新区块,如果正确就将该区块加入区块链中并开始构建下一个区块。PoW机制将奖励和共识过程融合,使更多节点参与进来并保持诚信,从而增强了网络的可靠性和安全性。对于PoW机制来说,若要篡改和伪造区块链中的某个区块,就必须对该区块及后续的所有区块重新寻找块头的随机数,并日使该分支链的长度超过主链,这要求攻击者至少掌握全网51%以上的算力,因此攻击难度非常大。PoW机制的实质是通过牺牲性能来换取数据的一致性和安全性,所以基于PoW机制的区块链平台的性能相对较低。权益证明是利用节点持有的代币信息来选取记账节点的算法。通过选举的形式,其中任意节点被随机选择来验证下一个区块,要成为验证者,节点需要在网络中存入一定数量的货币作为权益,权益的份额大小决定了被选为验证者的概率,从而得以创建下一个区块。验证者将检查区块中的交易是否有效,若有效则将该区块添加到区块链中,同时该节点获得一定的利益,若通过了非法的交易,则该节点会失去一部分权益,这样节点就会以保护自己权益的目的诚实地进行记账。相较于PoW,PoS解决了算力浪费的问题,并能够缩短达成共识所需的时间,这使得许多数字货币采用PoS共识机制。授权股份证明是由PoS演变而来的,拥有数字货币的节点通过抵押代币获得选票,通过投票的方式选出一些节点作为出块节点,负责对交易打包生成区块,让更有能力的节点胜任生成区块的工作,类似于公司的董事会制度。在每一轮共识中,从出块节点中轮流选出一个节点生成区块,并广播给其他的区块进行验证。若节点无法在规定时间内完成生成区块的任务或生成的区块无法经过验证,则会被取消资格。与PoW机制中的信任高算力节点和PoS机制中的信任高权益节点不同,DPoS机制中每个节点都可以自主地选择信任的节点,大大地减少了参与记账和验证的节点数量,可以实现快速共识验证。激励层激励层主要包括发行机制和分配机制,通过奖励部分数字资产来鼓励节点参与区块链的安全验证工作,从而维护挖矿活动以及账本更新持续进行。去中心化系统中的共识节点都是以自身利益最大化为目标的,因此必须使共识节点自身利益最大化与保证区块链系统安全和有效的目标相吻合。公有链依赖全网节点共同维护数据,节点不需要进行认证,可以随时加入、退出这个网络,CPU、存储、带宽等资源,所以需要有一定的激励机制来确保矿工在记账的过程记账需要消耗中能有收益,以此来保证整个区块链系统朝着良性循环的方向发展。在联盟链中,所有节点都是已经经过组织认证的节点,不需要额外的激励,这些节点也会自发地维护整个系统的安全和稳定。以比特币系统为例,发行机制是指每个区块发行的比特币数量随时间阶段性递减,每21万个区块之后每个区块发行的比特币数量减半,最终比特币总量达到2100万的上限,同时每次比特币交易都会产生少量的手续费。PoW共识会将新发行的比特币和交易手续费作为激励,奖励给成功找到合适的随机数并完成区块打包工作的节点,因此只有所有共识节点共同维护比特币系统的有效性和安全性,其拥有的比特币才会有价值。分配机制是指大量小算力节点加入矿池,通过合作来提高挖到新区块的概率,并共享该区块的比特币和手续费奖励。合约层合约层负责封装区块链系统的脚本代码、算法和智能合约,是实现区块链系统编程和操作数据的基础。出现较早的比特币系统使用非图灵完备的简单脚本代码来实现数字货币的交易过程,这是智能合约的雏形,目前如以太坊已经实现了图灵完备的智能合约脚本语言,使区块链可以实现宏观金融和社会系统等更多应用。智能合约是一种用算法和程序来编写合同条款、部署在区块链上并且可以按照规则自动执行的数字化协议。理想状态下的智能合约可以看作一台图灵机,是一段能够按照事先的规则自动执行的程序,不受外界人为干预。它的存在是为了让一组复杂的、带有触发条件的数字化承诺能够按照参与者的意志,正确执行。区块链系统提供信任的环境,使得智能合约的概念得以实现,各用户对规则协商一致后创建合约代码,并将该合约代码上链,一旦满足触发条件,合约代码将由矿工按照预设规则执行。区块链的去中心化使得智能合约在没有中心管理者参与的情况下,可同时运行在全网所有节点,任何机构和个人都无法将其强行停止。智能合约拓展了区块链的功能,丰富了区块链的上层应用,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 应用层比特币平台上的应用主要是基于比特币的数字货币交易。以太坊除了基于以太币的数字货币交易外,还支持去中心化应用(Decentralized Application,Dapp),Dapp是由JavaScript构建的Web前端应用,通过JSON-RPC与运行在以太坊节点上的智能合约进行通信。Hyperledger Fabric主要面向企业级的区块链应用,并没有提供数字货币,其应用可基于Go、Java、Python、Node.js等语言的SDK构建 [24],并通过gRPC或REST与运行在Hyperledger Fabric节点上的智能合约进行通信。典型区块链系统播报编辑Bitcoin比特币是一种基于去中心化,采用点对点网络与共识主动性,开放源代码,以区块链作为底层技术的加密货币,是最早应用区块链技术的系统。比特币系统是一种电子支付系统,它不是基于权威机构的信用,而是基于密码学原理,使任何达成一致的交易双方都可以直接进行支付,不需要任何第三方机构的参与。比特币的主要概念包括交易、时间戳服务器、工作量证明、网络、激励等。交易是比特币系统中最重要的部分。比特币中的其他一切都是为了确保交易可以被创建、在网络上传播、被验证,并最终添加到全局交易分类账本(区块链)中。比特币交易的本质是数据结构,这些数据结构是对比特币交易参与者价值传递的编码。比特币区块链是一本全局复式记账总账簿,每个比特币交易都是在比特币区块链上的一个公开记录。比特币将电子币定义为数字签名链,币的转移是通过所有者对前一笔交易和下一个所有者的公匙进行签名,并将这两个签名放到币的末端来实现的。收款人可以通过验证签名来验证链所有权。比特币采用了非对称加密技术,公钥就是用户的账户号码,当用户要消费比特币时,需要用私钥进行签名,系统会用账户号码也就是公钥验证签名是否正确,并且根据用户的账户号码从历史的交易中计算出当前账户中的真实金额,确保用户操作的资金在账户真实金额之内每一条交易记录都需要用私钥签名,系统用公钥验证签名是否正确,验证正确则认为合法,再验证插入的记录中转账金额是否正确,验证的方式是对该公钥以往的所有交易记录进行计算,得出该账户当前的金额,如果不超过该金额则为合法。这种机制保证只能对自己的账户进行操作,再结合P2P网络结构下的最终一致性原则,以及账本的链式结构,一个攻击者需要算力超过目前的集群才能创建另外一个账本分支,并且攻击者也只能更改自己的账户,所以这种攻击的收益极低,而对于比特币系统来说,强大的算力让比特币系统更加稳健了。比特币通过算力竞争的工作量证明机制使各节点来解决一个求解复杂但验证简单的SHA256数学难题,最快解决该难题的节点会获得区块记账权和该区块生成的比特币作为奖励。此难题可以理解为根据当前难度值通过暴力搜索找到一个合适的随机数(Nonce),使得区块头各元数据的双SHA256值小于等于目标值。比特币系统会自动调整难度值以保证区块生成的平均时间为10分钟。符合要求的区块头哈希值通常由多个前导零构成,难度值越大,区块头哈希值的前导零越多,成功找到合适的随机数并挖出新区块的难度越大。比特币采用了基于互联网的点对点(P2P)网络架构,网络中的每一个节点都是平等的,不存在任何中心化服务和层级结构,以扁平的拓扑结构相互连通。当新的区块生成后,生成该区块的节点会将区块数据广播到网络中,其他节点加以验证。比特币的区块数据传播主要包括以下步骤。(1)向全网所有节点广播新的交易。(2)每个节点都将收集到新的交易并打包到一个区块中。(3)每个节点都致力于为它的区块找到一个有难度的工作量证明。(4)当一个节点找到工作量证明后,就将该区块广播给所有节点。(5)只有区块中所有的交易都有效并且之前不存在,其他节点才会接受这个区块。(6)其他节点通过用已接受区块的哈希值作为前一个哈希值,在链中创造新区块,来表示它们接受了这个区块。所有节点都将最长的链条视为正确的链,并且继续延长它,如果两个节点同时广播了不同会选择的新区块,这时两个区块都会保留,链上出现分支,当每个分支都继续变长后,所有节点会选最长的一个分支作为主链,继续在它后面创造区块。比特币每个区块的第一笔交易中都包含了支付给创造者的新发行的比特币和其他交易手续费,这样会激励节点更加支持比特币系统,这是在没有中央集权机构发行货币的情况下将电子货币分配到流通领域的一种方法,类似于开采金矿将黄金注入流通领域。激励系统有利于使节点保持诚实,如果恶意的攻击者拥有比诚实节点更多的总算力,他会发现破坏这个系统会让自身财富受损,而保持诚实会让他获得更多的电子货币。Ethereum以太坊(Ethereum)是将比特币中的技术和概念运用于计算领域的一项创新。比特币被认为是一个系统,该系统维护了一个安全地记录了所有比特币账单的共享账簿。以太坊利用很多跟比特币类似的机制(比如区块链技术和P2P网络)来维护一个共享的计算平台,这个平台可以灵活且安全地运行用户想要的任何程序(包括类似比特币的区块链程序)。以太坊的特性包括以下几方面。1.以太坊账户在以太坊系统中,状态是由被称为“账户”(每个账户都有一个20字节的地址)的对象和在两个账户之间转移价值和信息的状态转换构成的。以太币(Ether)是以太坊内部的主要加密货币,用于支付交易费用。一般而言,以太坊有两种类型的账户:外部所有的账户(由私钥控制)和合约账户(由合约代码控制)。外部所有的账户没有代码,人们可以通过创建和签名一笔交易从一个外部账户发送消息。每当合约账户收到一条消息时,合约内部的代码就会被激活,允许它对内部存储进行读取和写入,发送其他消息或者创建合约。2.消息和交易以太坊的消息在某种程度上类似于比特币的交易,但是两者之间存在三点重要的不同。第一,以太坊的消息可以由外部实体或者合约创建,然而比特币的交易只能从外部创建。第二,以太坊消息可以选择包含数据。第三,如果以太坊消息的接收者是合约账户,可以选择进行回应,这意味着以太坊消息也包含函数概念。以太坊中“交易”是指存储从外部账户发出的消息的签名数据包。交易包含消息的接收者、用于确认发送者的签名、以太币账户余额、要发送的数据和两个被称为STARTGAS和GASPRICE的数值。3.代码执行以太坊合约的代码使用低级的基于堆栈的字节码语言写成,被称为“以太坊虚拟机代码”或者“EVM代码”。代码由一系列字节构成,每一个字节都代表一种操作。一般而言,代码执行是无限循环的,程序计数器每增加一(初始值为零)就执行一次操作,直到代码执行完毕或者遇到错误。4.应用一般来讲,以太坊之上有三类应用。第一类是金融应用,为用户提供更强大的用他们的钱管理和参与合约的方法,包括子货币、金融衍生品、对冲合约、储蓄钱包、遗嘱,甚至一些种类全面的雇佣合约。第二类是半金融应用,这里有金钱的存在,但也有很大比例的非金钱方面,一个完美的例子是为解决计算问题而设的自我强制悬赏。第三类是在线投票和去中心化治理这样的完全非金融应用。各种各样的金融合约——从简单的实体资产(黄金、股票)数字化应用,到复杂的金融衍生品应用,面向互联网基础设施的更安全的更新与维护应用(比如DNS和数字认证),不依赖中心化服务提供商的个人线上身份管理应用(因为中心化服务提供商很可能留有某种后门,并借此窥探个人隐私)。除了已经被很多创业团队实现出来的上百种区块链应用以外,以太坊也被一些金融机构、银行财团,以及类似三星、Deloitte、RWE和IBM这类的大公司所密切关注,由此也催生了一批诸如简化和自动化金融交易、商户忠诚指数追踪、旨在实现电子交易去中心化的礼品卡等区块链应用。LibraLibra(已经改名为Diem)是Facebook提出的一种支付体系,旨在建立一套简单的、无国界的货币和为数十亿人服务的金融基础设施。Libra由三个部分组成,它们共同作用,创造了一个更加普惠的金融体系:(1)它建立在安全、可扩展和可靠的区块链基础上;(2)它以赋予它内在价值的资产储备为后盾;(3)它由独立的Libra协会治理,该协会的任务是促进此金融生态系统的发展。Libra/Diem币建立在安全、可扩展和可靠的区块链基础上,由现金、现金等价物和非常短期的政府证券组成的储备金支持,由独立的Libra/Diem协会及其附属网络进行管理、开发及运营。它旨在面向全球受众,所以实现Libra/Diem区块链的软件是开源的,以便所有人都可以在此基础上进行开发,且数十亿人都可以依靠它来满足自己的金融需求。随着智能手机和无线数据的激增,越来越多的人将通过这些新服务上网和使用Libra/Diem。为了使Libra/Diem网络能够随着时间的推移实现这一愿景,Libra/Diem协会从零开始构建了其所需的区块链,同时优先考虑了可扩展性、安全性、存储效率、吞吐量以及其对未来的适应性。Libra/Diem支付系统支持单货币稳定币以及一种多货币稳定币,它们统称为Libra/Diem币。每种单货币稳定币都会有1:1的储备金支持,而每个多货币稳定币都是多种单货币稳定币的组合,其继承了这些稳定币的稳定性。Libra/Diem的储备金会受到管理,并随着时间的推移维护Libra/Diem币的价值。通过对现有方案的评估,Libra/Diem决定基于下列三项要求构建一个新的区块链:设计和使用Move编程语言;使用拜占庭容错共识机制;采用和迭代改善已广泛采用的区块链数据结构。1.设计和使用Move编程语言Move是一种新的编程语言,用于在Libra/Diem区块链中实现自定义交易逻辑和“智能合约”。Move语言的设计首先考虑安全性和可靠性,是迄今为止发生的与智能合约相关的安全事件中吸取经验而创造的一种编程语言,能从本质上令人更加轻松地编写符合作者意图的代码,从而降低了出现意外漏洞或安全事件的风险。具体而言,Move从设计上可防止数字备产被复制。它使得将数字资产限制为与真实资产具有相同属性的“资源类型”成为现实:每个资源只有唯一的所有者,资源只能花费一次,并限制创建新资源。2.使用拜占庭容错共识机制Libra/Diem区块链采用了基于Libra/DiemBFT共识协议的BFT机制,来实现所有验证者节点就将要执行的交易及其执行顺序达成一致。这种机制实现了三个重要目标:第一,它可以在网络中建立信任,因为即使某些验证者节点(最多三分之一的网络)被破坏或发生故障.BFT共识协议的设计也能够确保网络正常运行;第二,与其他一些区块链中使用的“工作量证明”机制相比,这类共识协议还可实现高交易处理量、低延迟和更高能效的共识方法;第三,Libra/DiemBFT协议有助于清楚地描述交易的最终性,因此当参与者看到足够数量验证者的交易确认时,他们就可以确保交易已经完成。BFT的安全性取决于验证者的质量,因此协会会对潜在验证者进行调查。Libra/Diem网络的设计以安全第一为原则,并考虑了复杂的网络和对关键基础设施的攻击。该网络的结构是为了加强验证者运行软件的保证,包括利用关键代码分离等技术、测试共识算法的创新方法以及对依赖关系的谨慎管理。最后,Libra/Diem网络定义了在出现严重漏洞或需要升级时重新配置Libra/Diem区块链的策略及过程。3.采用和迭代改善已广泛采用的区块链数据结构默克尔树(Merkle Tree)是一种已在其他区块链中广泛使用的数据结构,它可以侦测到现有数据的任何变化。为了保障所存储交易数据的安全,在Libra/Diem区块链中可以通过默克尔树发现交易数据是否被篡改。与以往将区块链视为交易区块集合的区块链项目不同,Libra/Diem区块链是一种单一的数据结构,可长期记录交易历史和状态。这种实现方式简化了访问区块链应用程序的工作量,允许区块链系统从任何时间点读取任何数据,并使用统一框架验证该数据的完整性。根据以上的设计,Libra/Diem区块链可以提供公共可验证性,这意味着任何人〔验证者、Libra/Diem网络、虚拟资产服务提供商(VASP)、执法部门或任何第三方〕都可以审核所有操作的准确性。交易将以加密方式签名,以便即使所有验证者都被破坏,系统也不能接受具有签名的伪造交易。协会会监督Libra/Diem区块链协议和网络的发展,并在适用监管要求的同时,不断评估新技术,以增强区块链上的隐私合规性。区块链技术播报编辑区块链是由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储,难以篡改,防止抵赖的记账技术,也称为分布式账本技术。随着第一个公有链系统比特币的诞生,区块链技术也蓬勃发展,诞生了很多不同区块链系统,并且可以从节点加入是否需要认证、采用的共识机制等方面看出它们间的不同。但各个区块链系统的整体思路与最终目的是相似的,其运行机制在大的框架中也都相同。共识机制区块链系统采用了去中心化的设计,网络节点分散且相互独立,为了使网络中所有节点达成共识,即存储相同的区块链数据,需要一个共识机制来维护数据的一致性,同时为了达到此目标,需要设置奖励与惩罚机制来激励区块链中的节点。目前有多种共识算法在区块链中使用,其中常见的有工作量证明(PoW)算法、权益证明(PoS)算法、实用拜占庭容错(PBFT)算法。下表是三种共识算法的对比。三种共识算法的对比共识算法PoWPoSPBFT节点管理不需许可不需许可需要许可交易延时高(分钟级)低(秒级)低(毫秒级)吞吐量低高高节能否是是安全边界恶意算力不超过1/2恶意权益不超过1/2恶意节点不超过1/3代表应用比特币、以太坊(旧)以太坊(新)、点点币Fabric扩展性好好差智能合约智能合约的概念早在第一个区块链系统诞生之前就已经存在了,美国计算机科学家Nick Szabo将其定义为:“由合约参与方共同制定,以数字形式存在并执行的会约。”智能合约的初衷是,使得合约的生效不再受第三方权威的控制,而能以一种规则化、白动化的形式运行。以借钱为例,在现实生活中,债主想要强制拿回借出去的钱,需要拿着借名到法院上诉,经过漫长的审判过程才能得到钱。而在智能合约中,合约双方可以就借钱数目还款日期、抵押物等条件制定好规则,然后将合约放入相关系统中,等到了指定期限,合约会自动执行还款操作。智能合约的概念虽然已被提出,但一直缺乏一个好的实现平台。直到中本聪运行了比特币系统,其底层区块链技术的去中心化架构、分布式的信任机制和可执行环境与智能合约十分契合。区块链可以通过智能合约来实现节点的复杂行为执行,而智能合约在区块链的去中心化架构中能够更好地被信任,更方便执行。因此,智能合约与区块链技术的结合成了很多研究人员与学者研究的课题,智能合约与区块链也逐渐绑定了起来。如今提到的智能合约,通常是直接与区块链技术绑定,特指运行在分布式账本之中,且具有规则预置、合约上链、条件响应等流程,并能完成资产转移、货币交易、信息传递功能的计算机程序。如今已有图灵完备的智能合约开发平台问世,并且反响很好,比如以太坊、超级账本Fabric等项目。以太坊是目前全球最具影响力的共享分布式平台之一。智能合约是运行在区块链上的一段代码,代码的逻辑定义了合约的内容,合约部署在区块链中,一旦满足条件会自动执行,任何人无法更改。合约代码是低级的基于堆栈的字节码语言,也被称为“以太坊虚拟机(EVM)代码”,用户可以使用高级编程语言(如C++、Go、Python、Java、Haskell,或专为智能合约开发的Solidity、Serpent语言)编写智能合约,由编译器转换为字节码后部署在以太坊区块链中,最后在EVM中运行。下面给出了一段Solidity语言编写的拍卖智能合约的代码。contract SimpleStorage {uint storedData;function set (uint x) public {storedData = x;} function get() public view returns(uint) {return storedData;}}该实例的功能是设置一个公开变量,并支持其他合约访问。在该实例中,合约声明了一个无符号整数变量,并且定义了用于修改或检索变量值的函数。其他用户可以通过调用该合约上的函数来更改或取出该变量。如果其他用户要调用外部合约,需要创建一个交易,接收地址为该为该智能合约的地址,data域填写要调用的函数及其参数的编码值。智能合约会根据所填写的数据自动运行,同时智能合约之间也可以相互调用。 区块链安全问题播报编辑分布式拒绝服务攻击分布式拒绝服务攻击主要针对交易所、矿池、钱包和区块链中的其他金融服务。与拒绝服务(DoS)攻击不同的是,分布式拒绝服务攻击借助了客户端/服务器技术,将多个计算机联合起来作为攻击平台,对同一个目标发动大量的攻击请求,从而成倍地提高拒绝服务攻击的能力。传统的分布式拒绝服务攻击通过病毒、木马、缓冲区溢出等攻击手段入侵大量主机,形成僵尸网络,然后通过僵尸网络发起拒绝服务攻击。基于区块链网络的分布式拒绝服务攻击不需要入侵主机建立僵尸网络,只需要在层叠网络(应用层)控制区块链网络中的大量在线节点,使其作为一个发起大型分布式拒绝服务攻击的放大平台。这些在线节点为拒绝服务攻击提供了大量的可用资源,如分布式存储和网络带宽,使得攻击成本低、威力巨大,并保证了攻击者的隐秘性。主要攻击方式分为主动攻击和被动攻击。主动攻击是通过主动向网络中的节点发送大量的虚假索引信息,使得针对这些信息的后续访问都指向被攻击者。主动攻击在区块链网络中引入了额外的流量,从而降低网络的节点查找和路由的性能,另外,虚假的索引信息还影响文件的下载速度。被动攻击属于非侵扰式,通过修改区块链客户端或服务器软件,被动地等待来自其他节点的查询请求,再通过返回虚假响应来达到攻击效果。分布式拒绝服务攻击的发起成本不高,但破坏性很强。例如,恶意矿工可以通过分布式拒绝攻击耗尽其竞争对手的网络资源,使得竞争对手被大量网络请求阻塞,从而提高自己的有效哈希率。延展性攻击延展性攻击,是指在原情况不变的情况下,利用外部的虚假交易实现攻击。例如,通过延展性政击可以阻塞网络中的交易队列。恶意攻击者通过支付高额手续费,以高优先级进行虚假交易,使得矿工在验证这些交易时,发现这些交易都是虚假交易,但是它们已经在这些交易的验证上花费了相当长的时间,从而浪费了与攻击者竞争的矿工的时间和带宽资源。另一种延展性攻击的形式为交易延展性攻击,这种攻击方式在虚拟货币交易的情况下带来了二次存款或双重提现的风险。攻击者可以侦听一笔未被确认的交易,通过修改交易签名的方式使得原有交易的交易ID发生改变,并生成一笔新的交易进行广播和确认,而参与交易的另一方无法根据原有的交易ID查询到交易的确认信息,从而可能进行重复转账并蒙受损失。女巫攻击女巫攻击,是指一个攻击者节点通过向网络广播多个身份信息,非法地拥有多个身份标识,进一步利用多个身份带来的便利,做出一些恶意行为,如改变交易顺序、阻止交易被确认、误导正常节点的路由表、消耗节点间的连接资源等。由于网络上的节点只能根据自己接收到的消息来判断网络中节点的全局信息,对于攻击者来说,它可以很方便地利用这个特征,轻易地创建大量的身份信息进行女巫攻击。女巫攻击是攻击P2P网络中数据冗余机制的有效手段,使得原本需要备份在多个节点的数据被欺骗地备份到同一个节点上。同时,如果区块链网络中采用了投票机制,攻击者可以利用伪造的多个身份进行不公平的重复投票,从而掌握网络的控制权。实现反女巫攻击,可以采用工作量证明机制,通过验证身份的计算能力的方式,增加女巫攻击的成本。另外一种反女巫攻击的方式是身份认证,每个新节点需要经过可靠第三方节点或当前网络中所有可靠节点的认证,从而减少节点欺诈地使用多重身份的可能性。路由攻击由于网络路由的不安全性以及因特网服务提供方(ISP)的集中性,使用明文形式进行信息交换的区块链应用(如比特币)可能面临着流量劫持、信息窃听、丢弃、修改、注入和延迟的风险。路由攻击,是指对正常路由进行干扰从而达到攻击目标的手段。区块链上的路由攻击主要包含分割攻击和延迟攻击两种类型。分割攻击首先将区块链网络隔离成至少两个独立的网络,使得它们无法交换交易信息。为实现这一步,攻击者常利用边界网关协议劫持的方法拦截不同网络间交换的所有流量,从而实现网络分割,并且各网络内的节点无断网感知。延迟攻击利用了区块请求在超过一定时间后才会再次发起请求的特点,通过对拦截的信息进行简单修改,延迟区块在被攻击节点的传播速度。这两种攻击方法都能带来包括重复支付、计算能力浪费在内的潜在经济损失,日蚀攻击日蚀攻击由攻击者通过侵占节点路由表的方式,控制节点的对外联系并使其保留在一个隔离的网络中,从而实施路由欺骗、拒绝服务、ID劫持等攻击行为。目前,在比特币和以太坊网络中均已被证实能实施日蚀攻击。在比特币网络中,由于节点的网络资源有限,网络中每个节点是很难做到与所有其他节点都建立连接。因而比特币上实际只允许一个节点接受117个连接请求,并且最多向外发起8个连接。如果攻击者节点在一个节点的路由表中占据了较高的比例,攻击者节点可以控制这个节点的正常行为,包括路由查找和资源搜索等,则这个节点可视作被攻击者“日蚀”。在比特币的日蚀攻击中,攻击者用事先准备的攻击地址填充被攻击节点的tried列表,用不属于比特币网络的地址覆盖被攻击节点的new列表。在被攻击者重启或从表中选择节点构建连接时,被攻击者的8个向外连接有很高概率都是攻击者节点,同时攻击者占据被攻击者的入连接。通过这个过程可以在比特币网络中实现节点的日蚀攻击。而在以太坊中,由于以太坊上一个主机可以运行多个ID的节点,攻击者只需要两个恶意的以太坊节点即可实现日蚀攻击。以太坊上的日蚀攻击主要有两种方式:(1)独占连接的日蚀攻击,攻击者只需要在受害者节点重启时通过入连接的方式快速占领受害节点所有的连接,在geth1.8.0中已通过限制节点入连接的数量不能占满节点的maxpeers来修复这个漏洞;(2)占有表的日蚀攻击,攻击者使用伪造的节点ID在受害者节点重启时重复向它发送Ping请求并占据它的K桶,使得受害者的出连接指向攻击者,此时攻击者使用入连接占据完受害者的剩余的所有连接即可完成日蚀攻击。对受害节点来说,日蚀攻击使它在未知情况下脱离了区块链网络,所有的请求信息都会被攻击者劫持,得到虚假的回复信息,无法进行正常的资源请求。反洗钱犯罪常见的洗钱途径广泛涉及银行、保险、证券、房地产等各种领域。反洗钱是政府动用立法、司法力量,调动有关的组织和商业机构对可能的洗钱活动予以识别,对有关款项予以处置,对相关机构和人士予以惩罚,从而达到阻止犯罪活动目的的一项系统工程。当前在常见的20多种洗钱手段中,比特币与数字货币已经被列入一种国际上的洗钱手段。因为数字货币的匿名性和难追踪的特点,数字货币开始在黑色与灰色领域大量使用。数据显示,通过对全球20多个数字资产交易所展开资金流向追踪调查,PeckShield安全团队研究分析认为,数字资产在国际间的流动规模已非常大,且大部分资金并未受到国家合理、合规的监管。区块链相关热点概念播报编辑挖矿比特币中的矿,是一种虚拟数字,是一种符合算法要求的哈希值。比特币中的挖矿就是计算这种哈希值的过程。挖矿的难度是不断地更新的,相当于一个寻宝游戏,在一段时间之后,比特币系统将生成计算难度,然后所有的计算机就去计算符合要求的那个值,谁最先找到,谁就可以获得比特币奖励,并且可以获得一个区块进行记账,要计算得到这个符合要求的序列号,就需要大量的CPU运算。挖矿是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新区块的过程,挖矿的人叫作矿工。比特币系统的记账权力是去中心化的,即每个矿工都有记账的权利。成功抢到记账权的矿工,会获得系统新生的比特币奖励和记录每笔交易的手续费。因此,挖矿就是生产比特币的过程。中本聪最初设计比特币时规定:每产生210000个区块,比特币奖励数量就减半一次,直至比特币奖励数量不能再被细分。矿工的主要工作是寻找符合要求的新区块、将交易打包写入区块。想成为一名矿工,只要购买一台专用的计算设备,下载挖矿软件,就可以开始挖矿。挖矿归根到底是算力的竞争,具体挖的过程就是通过运行挖矿软件来计算匹配哈希值的过程。挖矿软件的运行需要消耗算力,最早是用CPU来挖矿的,随着加入的人越来越多,挖矿的装备也一直在升级;CPU之后,开始有人用GPU来挖矿,GPU的流水线专注程度更高,同时数量也更多,并行计算非常占便宜,GPU比CPU效率更高,算力功耗比更低,很快就取代了CPU;再后来用FPGA来挖矿,FPGA的性能/功耗比相对GPU来说有了进一步的提高;再最后就是目前市面上的ASIC矿机。挖矿需要有矿机和挖矿软件,运行的过程除了硬件损耗,最大的消耗是电费,所以算力之争很大程度上在于谁能获得更低的电力成本,谁就拥有了先发优势。挖矿软件运行的时候,都需要设置一个账户,用对应的挖矿软件在矿机上运行,如果第一个计算出哈希值,并得到全网认证,对应的挖矿奖励会自动发放到挖矿软件的账户里。这个奖励可以提现到其他钱包储存或进行交易。币圈币圈是指一批专注于炒加密数字货币,甚至发行自己的数字货币筹资的人群,业界俗称“币圈”。币圈可大致可以划分为两类:一类是市场上基于区块链技术的主流货币,如比特币、以太坊;另一类是数字货币筹资,也就是发行新币,新币也被业界称为“山寨币”。早期山寨币是指模仿比特币代码与系统产生的数字货币,目前大家理解的山寨币,大部分是指那些劣质的、没有价值基础的数字货币。矿圈和币圈这两个圈子存在着一定的鄙视关系。矿圈自认为是投资,看不上币圈的投机。币圈总体上是为了投机或赚钱,喜欢炒作,希望价格翻倍,希望能够找到新的百倍币、千倍币。前期的币圈中充满着狂热和不理性,也充满着欺骗和混乱。矿圈“矿圈”是一群专注于“挖矿”的“矿工”,这些矿工大多从事IT行业。中本聪总共发行了2100万个比特币,最开始挖矿的人并不多,一般的计算机都可以挖矿,但是随着挖矿的人变多,必须要用具有高算力的专业服务器来挖矿。比特币挖矿一共经历了五个阶段,即CPU挖矿、GPU挖矿、FPGA挖矿、ASIC挖矿、大规模集群挖矿(矿池)。为了更好地理解它们之间的区别,简单举例如下:(1)CPU的挖矿速度是1。(2)GPU的挖矿速度是10。(3)FPGA的挖矿速度是8,功耗比GPU小40倍。(4)ASIC的挖矿速度是2000,功耗与GPU相当。矿机挖矿,随着挖矿所需算力的不断上升,GPU也达到了算力的上限,为了突破这个局限,有人发明了专门挖矿的专业设备。这些设备虽然都是计算机,可是除了挖比特币、运行哈希运算之外,其他什么都干不了,我们叫它“矿机”。比特币的矿机只能进行比特币的算法的计算。莱特币矿机只能进行莱特币算法的计算,不能互相通用。世界排名前三的数字货币矿机生产商(比特大陆、嘉楠耘智、亿邦科技)都在中国,囊括了全球九成以上的份额(2019年数据显示)。数字货币早期的数字货币(数字黄金货币)是一种以黄金重量命名的电子货币形式。现在的数字货币又称密码货币,指不依托任何实物,使用密码算法的数字货币,英文为Cryptocurrency,尤其是指基于区块链技术生成的数字货币,如比特币、莱特币和以太币等依靠校验和密码技术来创建、发行和流通的电子货币。从货币属性角度来看,数字货币相比传统法币有以下三个重要的优点。(1)有效对抗通货膨胀:比特币一共发行2100万枚,2140年后比特币不再新增,矿机通过收取交易服务费用覆盖算力成本。当主权政府的中央银行采取过于宽松的货币政策或者国内政局不稳定时,会导致较为严重的通货膨胀,造成民众的财富急剧缩水,比特币能够较好地应对通货膨胀。(2)私有财产权受到保护:因为采用了区块链作为底层技术和点对点的交易方式,所以交易过程不受到监控、审核,外界也无法干涉私有财产。(3)促进全球化:比特币最大的特点就是金融脱媒(“脱媒”一般是指在进行交易时跳过所有中间人而直接在供需双方间进行。“金融脱媒”又称“金融去中介化”,在英语中称为Financial Disintermediation),使用比特币能让跨境贸易和跨境投资变得更快且更便宜。从技术属性来看,当前数字货币仍然建立在电子技术之上,随着量子计算机,加、解密等技术的飞速发展,比特币等数字货币会受到一些挑战,加上一些经济方面的竞争原因,比特币有可能会在未来消失或被其他数字货币替代。从社会角度来看,数字货币部分思想根源来自一种自由思想、无政府主义,是西方某些思想的产物。经济学领域的自由思想是区块链技术产生的一个强大的推动力。无论是早期的哈耶克与他的《货币的非国家化》,还是B-money的理论的提出者戴伟,以及Bitshare、Steemit、EOS的技术创造者BM,他们都崇尚一种自由,比特币的创造者中本聪无疑也受这种自由思想的影响。对于我们来说,数字货币理解与操作难度大,风险性过高,不需要参与。数字货币受到政府的强硬监管,比特币背后灰色地带滋生的问题浮上台面。(1)在中国造成了资本外流:由于其技术特点,外管局无法监管在境内使用人民币兑换比特币,而后在境外用比特币兑换外币的汇兑方式。比特币成了洗钱通道之一。(2)毒品和枪支买卖的支付方式:比特币成了不法分子购买毒品和枪支的支付手段,促进了非法物品的流通,加深了部分国家、地区人民的苦难。(3)非法集资的新型手段:ICO本质就是发行收益凭证式证券并嫁接在数字货币之上,不需要通过交易所和证监会,躲避法律监管。某些ICO发行过程中甚至连商业计划书都没有,却受到资本追捧,造成投资人血本无归。常见数字货币的分类如下:(1)纯数字货币。(2)支持应用功能的数字货币。(3)解决支付功能的数字货币。(4)隐私货币。(5)解决存储能力的数字货币。(6)其他特殊用途的数字货币。对区块链的误解播报编辑误解1:区块链等于炒比特币2017年比特币的爆炸式繁荣让投资者们看到了一片新兴的蓝海,于是投资者们纷纷进场捞金。这也造成了大家对区块链的第一印象:区块链,仅仅是炒币投机。但是,比特币只是区块链技术的一个应用场景,就像支付宝是互联网金融的一个产物一样。现在在数字货币的市场上交易的不仅有比特币,还有以太坊、瑞波币以及其他数字货币,就跟传统证券市场的股票一样。除此之外,BATJ等各种国内外互联网巨头都致力于区块链技术应用的研究,目前已在产品溯源、电子存证、公益等方面落地,也让社会逐渐开始发现区块链所带来的利好。误解2:区块链上的数据是绝对安全的很多人包括一些在币圈摸爬滚打多年的币民,都认为区块链中的数据是通过加密方式进行存储的,是“绝对安全的”,所以可以将银行账户、一些重要的密码等存储到区块链上。但事实却是,“绝对安全”是不存在的。在公有链中,区块链中存储的数据对每一个节点或者个人都是公开可见的,这意味着,只要在这条链上,任何人都可以查看链上存储的数据。区块链所说的“数据安全”只是表示“数据是无法被篡改的”,任何人没有修改数据的权利,仅此而已。因此区块链上也并不适合存储个人的敏感信息。误解3:区块链适合存储大量数据区块链的分布式特性意味着区块链网络上的每个节点都有区块链的完整副本。如果把区块链用来存储像视频这种大型文件的话,那么节点处理起来将非常困难,从而导致效率低下。比特币的每个区块最多可以保存1MB的数据。因此,遇到这种情况时,一般会将大型的数据文件存储在别的地方,然后再将数据的指纹(哈希值)存储在区块链上。误解4智能合约是存储在区块链上的现实合约实际上,智能合约跟现实世界的合约是完全没有关系的。智能合约是可以存储在区块链上、已经编写完成并可以执行的计算机程序。智能合约是用编程语言编写的,如以太坊是用Solidity,通过以太坊虚拟机这个代码运行环境,智能合约能够在以太坊的区块链上运行,实现功能扩展。而被称为加密货币1.0的比特币比较简单,没有智能合约这个概念,自然也没有办法在比特币的链上创建智能合约,也开发不了DApp应用。但比特币能够支持简单的脚本语言,可以扩展一些简单的功能。因此,智能合约是可以依照预设条件自动执行的计算机程序,但只限于在区块链之内,同时预设的条件也必须是区块链技术所能验证的。误解5:比特币跟硬币的性质是一样的比特币是第一个基于区块链系统的数字货币。在现实世界中,它并不存在实体;在区块链世界中,它仅仅作为交易记录存在。硬币只有一种效用——作为一种简单的价值储存手段。而Token可以存储复杂的值,如属性、效用、收入和可替代性,性质其实并不一样。如果想要购买、发送和接收比特币,与比特币区块链产生交互,那么只需要一个比特币钱包,这个钱包只是一个地址、一个密钥,产生交互的比特币则是一条有效的交易记录,允许节点进行验证。例如,一个矿工进行算力挖矿,获得了12.5个比特币的奖励,这12.5个比特币唯一的有效记录是转人了矿工的钱包,并不会有实体呈现。误解6:比特币成不了主流货币是因为政府比特币目前存在的最大问题是其固有的可扩展性问题。在中本聪的设计里,比特币区块链上出一个块大约需要10分钟,并且每个区块的大小限制在1MB以内,这就造成了比特币这条链目前每秒只能处理7次交易。这使得比特币非常适合转账汇款这种不需要立即进行交易确认的用途。而作为加密货币2.0的以太坊,目前也只能达到每秒20次的TPS。相比之下,2017年“双11”支付宝最高每秒完成25.6万笔交易处理,Visa和Paypal的处理速度也远超比特币和以太坊。因此,比特币目前无法成为主流货币的主因,并不是因为政府、监管和法规的限制,而是其固有的可扩展性问题,让它无法真正在大众之间实现实时、方便的交易和流通。误解7:区块链可以应用于全行业有人将区块链技术理解为第四次工业革命,也有人把它看作互联网发展的迭代。无论怎么说,这是技术发展的大进步,凝聚在这项技术上的价值也有待探索。人类发明了技术,技术也会回馈于人类。有很多人认为,区块链将逐渐成为许多行业都会使用的重要基础设施,远远超出加密货币和金融服务领域。然而虽然区块链技术是一个新进步,但也不是所有行业都需要区块链。短期来看,区块链技术并不能用于全部的生活领域。现在做一个区块链的项目成本并不低,而这方面的人才又相当稀缺,市场经济下,他们只会往收益更好的项目走。当前区块链技术能够适用的行业非常有限,除了在数字货币领域比较成熟,还没有更多地走进其他行业。而中国特色的“无币区块链”也会逐渐被BATJ这种巨头垄断,小型区块链企业想落地应用将会变得愈加困难。区块链技术不能解决所有的社会信任问题,是否能够完全“去中心化”也是一个问号,但在不断被误解、认知逐渐被推进中,区块链正在变得越来越强大,也越来越适应这个时代。区块链的应用播报编辑供应链金融基于区块链的供应链金融应用中,通过将供应链上的每一笔交易和应收账款单据上链,同时引入第三方可信机构,例如银行、物流公司等,来确认这些信息,确保交易和单据的真实性,实现了物流、信息流、资金流的真实上链;同时,支持应收账款的转让、融资、清算等,让核心企业的信用可以传递到供应链的上下游企业,减小中小企业的融资难度,同时解决了机构的监管问题。资产交易通过区块链进行数字资产交易,首先将链下资产登记上链,转换为区块链上的标准化数字资产,不仅能对交易进行存证,还能做到交易即结算,提高交易效率,降低机构间通信协作成本。监管机构加人联盟链中,可实时监控区块链上的数字资产交易,提升监管效率,在必要时进行可信的仲裁、追责。司法存证在司法中,与传统司法证据相比,电子证据等的获取具有以下难点。取证成本高。当前司法取证依赖于具有司法机制的存证机构,具有取证周期长、费用高等特点。同时人力投入大,操作成本较高。取证难校验,公信力可能不足。由于电子证据本身易篡改、难溯源的特点,电子取证的权威性依赖于取证机构的资质与公信力,且取证后难以校验、追责。2018年,我国公布了《最高人民法院关于互联网法院审理案件若干问题的规定》(以下简称《规定》)。《规定》第11条中明确规定:当事人提交的电子数据,通过电子签名、可信时间戳、哈希值校验、区块链等证据收集、固定和防篡改的技术手段或者通过电子取证存证平台认证,能够证明其真实性的,互联网法院应当确认。因此,区块链记录的电子证据可被认为是具有司法效力的证据,已有多个平台成功应用。2022 年 11 月,内蒙古自治区霍林郭勒市人民法院立案庭在对当事人申请司法确认的案件进行审查时,运用“区块链证据核验”技术对已上链存证的调解协议等材料进行核验,作出确认人民调解协议效力的民事裁定书,大大提高了诉前调解案件司法确认的效率,赢得了当事人好评。智能合同智能合同实际上是在另一个物体的行动上发挥功能的计算机程序。与普通计算机程序一样,智能合同也是一种“如果—然后”的功能,但区块链技术实现了这些“合同”的自动填写和执行,无须人工介入。这种合同最终可能会取代法律行业的核心业务,即在商业和民事领域起草和管理合同的业务。溯源、防伪利用追踪记录有形商品或无形信息的流转链条,通过对每一次流转的登记,实现追溯产地、防伪鉴证、根据溯源信息优化供应链、提供供应链金融服务等目标。把区块链技术应用在溯源、防伪、优化供应链上的内在逻辑是数据不可篡改和加盖时间戳。区块链在登记结算场景上的实时对账能力以及在数据存证场景上的不可篡改和加盖时间戳能力为溯源、防伪、优化供应链场景提供了有力的工具。政府政务信息、项目招标等信息公开透明,政府工作通常受公众关注和监督,由于区块链技术能够保证信息的透明性和不可更改性,对政府透明化管理的落实有很大的作用。政府项目招标存在一定的信息不透明性,而企业在密封投标过程中也存在信息泄露的风险。区块链能够保证投标信息无法篡改,并能保证信息的透明性,在彼此不信任的竞争者之间形成信任共识。并能够通过区块链安排后续的智能合约,保证项目的建设进度,一定程度上防止了腐败的滋生。数字证书第一个在数字证书领域进行探索的是MIT的媒体实验室。媒体实验室发布的Blockcert是一个基于比特币区块链的数字学位证书开放标准。发布人创建一个包含一些基本信息的数字文件,如证书授予者的姓名、发行方的名字(麻省理工学院媒体实验室)、发行日期等。然后使用一个仅有Media Lab能够访问的私钥,对证书内容进行签名,并为证书本身追加该签名。接下来,发布人会创建一个哈希,这是一个短字符串,用来验证没有人篡改证书内容。最后,再次使用私钥,在比特币区块链上创建一个记录,表明我们在某个日期为某人颁发了某一证书。物流新加坡公司利用区块链技术,来帮助物流公司调度车队。Yojee是一家成立于2015年1月的新加坡公司,Yojee已经构建了使用人工智能和区块链的软件,充分利用现有的最后一英里交付基础设施来帮助物流企业调整它们的车队。而针对电子商务公司,Yojee推出了一个名为Chatbot的软件,帮助电商公司在没有人管理的情况下预订送货。Chatbot可以将客户的详细信息(如地址、交货时间等)馈送到系统中,系统会自动安排正确的快递。相关政策与法律法规播报编辑2016年10月,工信部发布《中国区块链技术和应用发展白皮书(2016)》,总结了国内外区块链发展现状和典型应用场景,介绍了国内区块链技术发展路线图以及未来区块链技术标准化方向和进程。2016年12月,“区块链”首次被作为战略性前沿技术写入《国务院关于印发“十三五”国家信息化规划的通知》。2017年1月,工信部发布《软件和信息技术服务业发展规划(2016—2020年)》,提出区块链等领域创新达到国际先进水平等要求。2017年8月,国务院发布《关于进一步扩大和升级信息消费持续释放内需潜力的指导意见》提出开展基于区块链、人工智能等新技术的试点应用。2017年8月30日,中国互联网金融协会发布《关于防范各类以ICO名义吸收投资相关风险的提示》指出,国内外部分机构采用各类误导性宣传手段,以ICO名义从事融资活动,相关金融活动未取得任何许可,其中涉嫌诈骗、非法证券、非法集资等行为。2017年9月2日,互联网金融风险专项整治工作领导小组办公室向各省市金融办(局),发布了《关于对代币发行融资开展清理整顿工作的通知》。要求各省市金融办(局)对辖内平台高管人员进行约谈和监控,账户监控,必要时冻结资金资产,防止平台卷款跑路。全面停止新发生代币发行融资活动,建立代币发行融资的活动监测机制,防止死灰复燃;对已完成的ICO项目要进行逐案研判,针对大众发行的要清退,打击违法违规行为。针对已发项目清理整顿的内容,要求各地互金整治办对已发项目逐案研判,对违法违规行为进行查处。2017年9月4日,央行等七部委(中国人民银行、中央网信办、工信部、工商总局、银监会、证监会、保监会)发布《关于防范代币发行融资风险的公告》指出,比特币、以太币等所谓虚拟货币,本质上是一种未经批准非法公开融资的行为,代币发行融资与交易存在多重风险,包括虚假资产风险、经营失败风险、投资炒作风险等,投资者须自行承担投资风险。要求即日停止各类代币发行融资活动,已完成代币发行融资的组织和个人应当作出清退等安排等。2017年10月,国务院发布《关于积极推进供应链创新与应用的指导意见》提出要研究利用区块链、人工智能等新兴技术,建立基于供应链的信用评价机制。2018年3月,工信部发布《2018年信息化和软件服务业标准化工作要点》,提出推动组建全国信息化和工业化融合管理标准化技术委员会、全国区块链和分布式记账技术标准化技术委员会。2019年10月底,中共中央政治局就区块链技术发展现状和趋势进行了第十八次集体学习,中央领导明确强调把区块链作为核心技术自主创新的重要突破口,加快推动区块链技术和产业创新发展。2019年11月,工信部网站发布的《对十三届全国人大二次会议第1394号建议的答复》称,将推动成立全国区块链和分布式记账技术标准化委员会,体系化推进标准制定工作。加快制定关键急需标准,构建标准体系。积极对接ISO、ITU等国际组织,积极参与国际标准化工作。2021年5月,工信部与中央网信办联合发布《关于加快推进区块链技术应用和产业发展的指导意见》,提出培养一批区块链名品、名企、名园,建设开源生态,坚持补短板和锻长板并重,加快打造完备的区块链产业链。2021年9月,中国人民银行、中央网信办等多部门联合发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》,进一步防范加密货币炒作风险。2022年1月30日,中央网信办发布《中央网信办等十六部门联合公布国家区块链创新应用试点名单》,包含15个综合性试点单位,以及涵盖区块链+制造、能源、政务服务/政务数据共享、法治、税务服务、审判、检察、版权、民政、人社、教育、卫生健康、贸易金融、风险管控、股权市场、跨境金融等16个行业的164个特色领域试点单位。2023年5月23日,国家市场监督管理总局和国家标准化管理委员会联合发布了由中国科学院信息工程研究所牵头起草的《信息安全技术 区块链信息服务安全规范》,该标准将于2023年12月1日起实施 [29]。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000从概念到底层技术,一文看懂区块链架构设计(附知识图谱) - 知乎
从概念到底层技术,一文看懂区块链架构设计(附知识图谱) - 知乎切换模式写文章登录/注册从概念到底层技术,一文看懂区块链架构设计(附知识图谱)巴比特已认证账号前言区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。与此同时,梳理与之相关的知识图谱和体系,帮助大家系统的去学习研究。基本概念区块链的概念最近很火,它来自于比特币等加密货币的实现,但是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性认识这个问题,我们可以使用谷歌地球的例子做类比,ajax不是什么新技术,但组合在一起就成就了产品谷歌地球,与之类似,区块链也不是什么新技术,但与加密解密技术、P2P网络等组合在一起,就诞生了比特币。技术人员,特别是Web开发工程师,学习了解ajax技术最早是被谷歌地球酷炫的效果所吸引。而现在,历史再一次重演,很多人被比特币的疯狂发展所吸引,进而开始研究其背后的技术——区块链。区块链原本是比特币等加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序链接起来,具备公开透明、无法篡改、方便追溯的特点。实际上,这种特性也直接体现了整个比特币的特点,因此使用区块链来概括加密货币背后的技术实现是非常直观和恰当的。区块链是一项技术,加密货币是其开发实现的一类产品(含有代币,也有不含代币的区块链产品),不能等同或混淆。与加密货币相比,区块链这个名字抛开了代币的概念,更加形象化、技术化、去政治化,更适合作为一门技术去研究、去推广。所以,目前当大家单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透明、可追溯的产品的架构设计方法,算作广义的区块链。而当在具体产品中谈到区块链的时候,可以指类似比特币的数据存储方式,或许是数据库设计,或许是文件形式的设计,这算作狭义的区块链。广义的区块链技术,必须包含点对点网络设计、加密技术应用、分布式算法的实现、数据存储技术的使用等4个方面,其他的可能涉及到分布式存储、机器学习、VR、物联网、大数据等。狭义的区块链仅仅涉及到数据存储技术,数据库或文件操作等。本文的区块链,指的是广义的区块链。架构图从架构设计上来说,区块链可以简单的分为三个层次,协议层、扩展层和应用层。其中,协议层又可以分为存储层和网络层,它们相互独立但又不可分割。如图:协议层所谓的协议层,就是指代最底层的技术。这个层次通常是一个完整的区块链产品,类似于我们电脑的操作系统,它维护着网络节点,仅提供Api供调用。通常官方会提供简单的客户端(通称为钱包),这个客户端钱包功能也很简单,只能建立地址、验证签名、转账支付、查看余额等。这个层次是一切的基础,构建了网络环境、搭建了交易通道、制定了节点奖励规则,至于你要交易什么,想干什么,它一概不过问,也过问不了。典型的例子,自然是比特币,还有各种二代币,比如莱特币等,本书介绍的亿书币也是。这个层次,是现阶段开发者聚集的地方,这说明加密货币仍在起步当中。从用到的技术来说,协议层主要包括网络编程、分布式算法、加密签名、数据存储技术等4个方面,其中网络编程能力是大家选择编程语言的主要考虑因素,因为分布式算法基本上属于业务逻辑上的实现,什么语言都可以做到,加密签名技术是直接简单的使用(请看书中相关的加密解密文章,不建议自由发挥,没有过多的编码逻辑),数据库技术也主要在使用层面,只有点对点网络的实现和并发处理才是开发的难点,所以对于那些网络编程能力强,对并发处理简单的语言,人们就特别偏爱。也因此,Nodejs开发区块链应用,逐渐变得更加流行,Go语言也在逐渐兴起。上面的架构设计图里,我把这个层面进一步分成了存储层和网络层。数据存储可以相对独立,选择自由度大一些,可以单独来讨论。选择的原则无非是性能和易用性。我们知道,系统的整体性能,主要取决于网络或数据存储的I/O性能,网络I/O优化空间不大,但是本地数据存储的I/O是可以优化的。比如,比特币选择的是谷歌的LevelDB,据说这个数据库读写性能很好,但是很多功能需要开发者自己实现。目前,困扰业界的一个重大问题是,加密货币交易处理量远不如现在中心化的支付系统(银行等),除了I/O,需要全方位的突破。分布式算法、加密签名等都要在实现点对点网络的过程中加以使用,所以自然是网络层的事情,也是编码的重点和难点,《Nodejs开发加密货币》全书分享的基本上就是这部分的内容。当然,也有把点对点网络的实现单独分开的,把节点查找、数据传输和验证等逻辑独立出来,而把共识算法、加密签名、数据存储等操作放在一起组成核心层。无论怎么组合,这两个部分都是最核心、最底层的部分,都是协议层的内容。扩展层这个层面类似于电脑的驱动程序,是为了让区块链产品更加实用。目前有两类,一是各类交易市场,是法币兑换加密货币的重要渠道,实现简单,来钱快,成本低,但风险也大。二是针对某个方向的扩展实现,比如基于亿书侧链,可为第三方出版机构、论坛网站等内容生产商提供定制服务等。特别值得一提的就是大家听得最多的“智能合约”的概念,这是典型的扩展层面的应用开发。所谓“智能合约”就是“可编程合约”,或者叫做“合约智能化”,其中的“智能”是执行上的智能,也就是说达到某个条件,合约自动执行,比如自动转移证券、自动付款等,目前还没有比较成型的产品,但不可否认,这将是区块链技术重要的发展方向。扩展层使用的技术就没有什么限制了,可以包括很多,上面提到的分布式存储、机器学习、VR、物联网、大数据等等,都可以使用。编程语言的选择上,可以更加自由,因为可以与协议层完全分离,编程语言也可以与协议层使用的开发语言不相同。在开发上,除了在交易时与协议层进行交互之外,其他时候尽量不要与协议层的开发混在一起。这个层面与应用层更加接近,也可以理解为B/S架构的产品中的服务端(Server)。这样不仅在架构设计上更加科学,让区块链数据更小,网络更独立,同时也可以保证扩展层开发不受约束。从这个层面来看,区块链可以架构开发任何类型的产品,不仅仅是用在金融行业。在未来,随着底层协议的更加完善,任何需要第三方支付的产品都可以方便的使用区块链技术;任何需要确权、征信和追溯的信息,都可以借助区块链来实现。我个人觉得,这个目标应该很快就能实现。应用层这个层面类似于电脑中的各种软件程序,是普通人可以真正直接使用的产品,也可以理解为B/S架构的产品中的浏览器端(Browser)。这个层面的应用,目前几乎是空白。市场亟待出现这样的应用,引爆市场,形成真正的扩张之势,让区块链技术快速走进寻常百姓,服务于大众。大家使用的各类轻钱包(客户端),应该算作应用层最简单、最典型的应用。很快,亿书将基于亿书网络推出文档协作工具,这个就是典型的应用层的产品。限于当前区块链技术的发展,亿书只能从协议层出发,把目标指向应用层,同时为第三方开发者提供扩展层的强大支持。这样做既可以避免贪多,又可以避免无法落地,是真正理性的开发路线。因为纯粹的开发协议层或扩展层,无法真正理解和验证应用层,会脱离实际,让第三方开发者很难使用。如果仅仅考虑应用层,市面上又找不到真正牢固、易用的协议层或扩展层的产品。所以,我们只好全面发力,采取完全开源开放的态度,通过社区的力量,共同去做一件有意义的事情,也算为中国区块链技术发展做点技术积累和微薄贡献。编程实现很多小伙伴,习惯结合自己的技术背景,来理解上面的架构设计。这里,结合具体的编程语言,简单介绍几款产品,仅供参考。(1)C/C++这两个语言是无法逾越的,任何开发遇到瓶颈,基本上都会找到它们,自然应该排在第一位要介绍的。同时,区块链技术的鼻祖,比特币(协议层)就是用C++语言开发的,而且目前为止,没有比比特币更加成功的区块链产品。所以,无论你使用什么语言开发,在正式进入这个行业的过程中,都应该先研究研究比特币。比特币官方客户端钱包用的Qt,第三方钱包有Python语言开发的,特别是第三方整理的开发库(Api包)很多是Nodejs设计的。比特币的架构,与上面的架构设计基本相同,另外,因为共识算法采用的是工作量证明机制(PoW:Proof of work),还有一些特殊的挖矿的过程。其他竞争币都是直接来自比特币的分支,所以编程语言相同,具体的技术选型和技术实现上可能有所改进,比如:莱特币,使用了其他的加密算法。官方网站:https://bitcoin.org/源码库:https://github.com/bitcoin(2)Nodejs/JavascriptNodejs平台强大的网络编程能力,以及js脚本语言的简单快捷,在区块链领域自然少不了它的身影。亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的express开发框架,基于http协议开发而成。同时,它采用了授权股权证明机制(DPoS),算法上的改进,让它在处理交易时更加轻量,处理能力大大提升。它提供了强大的协作机制,为数字出版、版权保护提供了便利;扩展了侧链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供很多方便。《Nodejs开发加密货币》这本书完整分享了它的源码,从区块链基础概念到代码实现,从基本原理到开发设计思路,都做了比较详细的探索,目前为止,从协议层面深入代码讲解区块链技术实现的书籍极少,这算作一本。官方网站:http://ebookchain.org/源码库:https://github.com/Ebookcoin(3)Python如果是Python语言爱好者,我建议研究研究以太坊(Ethereum)的Python实现。尽管因为The Dao事件闹得沸沸扬扬,但从技术实现的角度来说,仍然值得参考学习。以太坊官方定位为一种开发管理分布式应用的平台,主攻方向就是“智能合约”,并为其定制了一种编程语言Solidity。以太坊的核心是以太坊虚拟机(EVM),允许用户按照自己的意愿创建操作。以太坊给出了Go、Java、Python等多语言的实现。其中以python为基础的实现主要包括三个部分:Pyethapp是客户端部分;pyethereum是核心库,实现了区块链、以太坊模拟机和挖矿等功能;pydevp2p是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能,这三者组合在一起就是完整的区块链实现,后面两个核心库共同组成了协议层。另外,go-ethereum是go语言的完整实现;Ethereum(J) 是纯Java实现,它作为可以嵌入任何Java/Scala项目的库提供。客户端方面,还有Rust、Ruby、Javascript等语言的实现。官方网站:https://ethereum.org/源码库:https://github.com/ethereum/pyethapp(4)Go在多核时代,Go语言备受喜爱,它可以让你用同步方式轻松实现高并发,特别是在分布式系统、网络编程等领域,应用非常广。所以,在区块链开发领域,也有很多使用Go语言的项目。其中,由linux基金会主导的超级账本(HyperLeger),版本库的名字叫Fabric,就是其中一个。该项目试图为新一代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,部署方式可docker化,支持用Go和JavaScript开发智能合约。它采用PBFT分布式算法,网络编程方面用gRPC来做P2P通讯,使用 Protocol Buffer来序列化要传递的数据结构。在架构设计上,Fabric可能与比特币等区块链产品有所不同,但是上述基本组成部分还是不可或缺的。官方网站:https://www.hyperledger.org/源码库:https://github.com/hyperledger其他编程语言,比如:C#等,也有具体实例,这里就不再列举。总之,针对不同的编程语言,在具体的编码或架构设计上可能有所差别,甚至很大,但是协议层所使用的技术并没有太大的变化。其中,网络编程是重点和难点,多数没有现成的框架可用,都是使用编程语言自身提供的库来设计开发,所以比较底层,非常考验开发者的编码功底。知识图谱循着上面的分析,我们已经可以了解区块链是什么,并知道怎么实现了,顺便梳理一下其中的编程技术知识,自然也就清晰多了。根据个人的理解,我把与区块链相关的知识分为下面5个方面:(1)基础知识区块链是新技术,与之相关的是其背后大量的新概念、新理论。这些知识,虽然不直接体现在编码里,但却是理解区块链,掌握区块链技术的基本知识。所以,理当成为区块链技术不可或缺的一部分。这部分从基本概念入手,到工作原理的描述,就能够把区块链基础知识全部覆盖。(2)技术实现区块链是一项技术,但从上面的分析可以看出,它应该是一种架构应用,架构的实现理当是我们知识库的核心。正如大家看到的,任何一款区块链产品,协议层必须包括点对点网络、加密签名、数据存储、分布式算法等4个部分,应用层也必然要提供钱包、客户端浏览器等基础应用。所以,把这部分独立出来,也是合情合理。在扩展层的部分,区块链技术可以对接各种应用,比如:金融、物联网、网络安全、版权保护、电子商务等等,现有的很多技术都可以用在这里。只不过,如何与区块链结合,如何实现跨行业使用,自然是这部分内容研究的课题。所以,这里所罗列或涉及到的技术,理应归为技术实现的一个重要部分。(3)开发环境区块链是多项技术的组合,有其自身的复杂性,个别应用对开发环境依赖较大,开发工具与环境搭建,是让开发者快速上手的重要内容。(4)项目实践据说,短短数年,全球区块链产品已经有几千个,其中不乏创新应用。有些优秀的开源产品和项目实践,是最好的学习研究资料。(5)开发文档这个自然不用说了,每一种产品也都会有自己的开发文档。另一个,就是有心的开发者整理汇总的一些资源,可以帮助我们节省很多查询的时间。我在考虑这个知识体系的过程中,主要思考的是,读者循着这些标签去查阅文章,能否快速掌握区块链技术,并最终上手开发实现一个区块链产品。另外,也刻意规避了与具体编程语言,以及特定领域相关的词汇,唯一可以区分的就是这些节点之下对应的文章标签。所以,这些分类就显得非常中性。也考虑过使用比特币、竞争币、智能合约、数字资产、智能资产等具体领域的实现作为分类方法,但又怕限制了读者的思维,同时随着区块链的发展,这个图谱将不停的修改下去。这里,呼吁一下,希望读到这篇文章的小伙伴提供您的宝贵意见,让我们把这个关于区块链的知识分类图谱做得更加科学合理,使用更加方便。总结这篇文章,我们把区块链技术基础架构描述了一下,需要再次强调的是,这仅仅是一种实现方式,绝非所有的区块链产品都是如此,我们也期待更多创新出现,也相信一定会出现。编程实现罗列了几种编程语言与其实现的典型产品,因为协议层技术较为底层,并没有太多现成的框架需要介绍或讨论,同时,具体的技术细节,也绝非几行字能够罗列清楚,所幸,这些产品都是开源产品,大家可以结合自己的技术背景,进一步查看对应的产品源码,很快就能了解其中的奥妙。作者简介:朱志文,亿书创始人,CSDN区块链知识库特邀编辑。中国区块链俱乐部主创者和发起人,比特币的忠实粉丝,区块链技术的布道者,代表作《Nodejs开发加密货币》。原文:从概念到底层技术,一文看懂区块链架构设计(附知识图谱)发布于 2016-10-28 16:33区块链(Blockchain)比特币 (Bitcoin)赞同 17013 条评论分享喜欢收藏申请
一文弄懂区块链技术原理 - 知乎
一文弄懂区块链技术原理 - 知乎首发于kay的世界切换模式写文章登录/注册一文弄懂区块链技术原理kkay前言近期由于工作需要,于是对区块链相关技术展开了大量的研究和学习.本文将以开发者的角度,对整个区块链行业技术的发展做一次全面的总结和归纳.文章宗旨是为了帮助大家理解区块链技术出现的目的、能够解决什么问题还有数字货币的意义与价值.另外文章后半部分会探讨一下区块链快速发展的今天,开发者群体能做哪些事情.如今市面上新型的数字货币如雨后春笋层出不穷,其中以诈骗圈钱为目的空气币也不少.只有深入了解了数字货币的底层逻辑,才能看清楚它想要达到的目的,谨防上当受骗.区块链技术有一次听外行的朋友提问:"如果区块链技术成熟了,那是不是就可以帮我们国家快速研发出芯片了".这样的发问让人觉得天真可爱,很多朋友由于对区块链的本质缺乏基本的认知,误以为它是一颗灵丹妙药,似乎任何问题在它面前都不值一提.区块链技术不是什么事情都能做,它出现的目的是为了解决人或机构间的信任问题,让互联网的通信数据和网络交流变得真实.为了更好的理解区块链的本质,我们拿同样火热的技术人工智能举例.人工智能解决的是单一客体生产力的问题,通过使用人工智能相关技术,客体便拥有了更强大的能力,以前很多不能做的事情通过人工智能现在就能做到了.比如自动驾驶小汽车、天气预测.无论是能够自动驾驶的小汽车还是预测天气的系统,它们都需要与其他系统进行数据通信.区块链要解决的问题就是让客体与客体之间的信息交流变得真实而又可信.有的朋友会提出疑问,真实的信息交流有那么重要吗?它并没有解决什么重大难题啊,需要花费巨大的人力与财力研究吗?从现实层面来讲,尤其在某些领域,数据的真实性非常重要.假设某跨国集团以全民投票的方式推选公司新一任CEO,由于公司规模庞大,旗下员工多达几十万,那如果保证投票数据一定真实可靠不会被被暗箱操作呢?目前而言,没有万无一失的方式.但如果将投票流程颁布到区块链上进行,那么就能确保数据是真实而又可靠的.因为区块链方案从技术层面直接隔离了数据的可篡改性.每个人的投票记录都是公开而又可追溯的,并且一旦存进了区块链就无法修改.投票只是区块链技术应用方向之一,像国家历史、居民征信记录、药品溯源这类数据都是出现过一次就不能被篡改,另外在尤其关键的金融领域,所有人的转账记录都应该是可以追溯且不能修改的,如果金融体系都无法确保金融数据的绝对可信任,那发展互联网金融毫无意义.区块链原理从上面例子看出,区块链通俗而言就是存储数据的,但它和平常数据库相比有以下三大特点.数据是公开透明的数据的历史记录是可以追溯的数据是不能篡改的区块链到底采用了什么样的架构才具备上述三大特点呢?点击放大上图.图片包含一条按顺序排列的方块,每个方块内存储了数据记录的集合,方块与方块之间首尾相连形成一条长链,方块称之为区块,整条由区块连接而成的链条便称之为区块链.第一个区块通常由区块链的开发者创造,称之为创世区块.假设区块链目前只有一个创世区块,后面的区块依次命名为区块1、区块2、区块3等.此时张三给李四投了一票,这条数据记录就会在节点网络中广播,区块1接收到这条消息把这条记录存到区块1内,过一会儿王五也给李四投了一票,这条记录也会被区块1存起来.随着投票记录越来越多,区块1也不断往内存,直到到快存满的时候,区块1被打包封装成一个完整的区块,这时候区块链上就有了两个完整的区块,创世区块和区块1.在区块1打包完成后,又会在区块1后面创建一个的空的区块2,区块2的头部指向区块1的哈希索引.其中这个安排谁打包封装的过程在数字货币领域被称之为挖矿.上面提到了两个专业术语节点网络和哈希索引,它们代表什么意思呢?在解答上面问题之前,我们先弄清楚区块链的存储机制.区块链既然是用来存数据的,那么它到底存在了哪个地方呢?众所周知,当下所有的互联网应用数据都存在了数据库服务器里,比如微信的聊天记录存在了微信的服务器,微博的实时新闻存在了微博的服务器.这些数据都属于企业的私有财产,被企业完全掌控,它想删就能删,它想查就能查,它想改就能改(当然实际并不会那么去做),数据完全被互联网公司集中掌控,这就是所谓的中心化.中心化有什么弊端呢?数据并非公开透明,操作权限完全由互联网公司掌控.某某明星闹了绯闻,微博的服务器就会因为访问量过大出现宕机,导致微博应用程序打不开.如果服务器仅仅出现宕机还算轻微,倘若出现自然灾害比如地震、火灾导致服务器全部损害,那么积累多年的数据将毁于一旦.区块链技术的普及将会彻底打破中心化的格局,预示着未来一个全新的时代—web3.0的降临.web3.0的目标是达成数据的去中心化,打破由互联网巨头企业垄断的困局,实现人人参与数据的生产和使用,以及管理和监督.区块链是怎么样实现去中心化的目标呢?我们还是以上面投票的案例举例.跨国集团为了实现投票工作的公平、公正与公开,于是采纳了技术员张三的建议,决定将整个投票工作搬到区块链上执行.张三技术团队替公司开发了一款客户端程序,用于提供给全体员工投票.王五是公司一名普通员工,他积极响应公司号召,在电脑上下载安装完客户端程序,找到了心仪的目标李四,按下确定键为他投了一票.此时王五选择李四这一条记录就会发送到区块链上存储起来,成千上万的员工也会像王五一样在客户端上发起投票.无数的投票记录就会不断往区块里面添加,一个区块装满了就立马打包封装继续往下一个区块添加,最后一根长长的区块链便由此形成了.现在回到上面的问题,这根长长的区块链到底存储在了哪里?答案可能让你吃惊,假设公司有10万人,那么这10万名员工每个人的电脑都会存一份这根长长的区块链数据.有的朋友可能会发问,同一份数据在10万人的电脑上都存一遍,这不是浪费资源吗?事实的确如此,可正是由于每个人都存了一份备份,那么每个人都直接成为了数据的维护和管理者,那么这些数据的命运将由所有人共同决定,这便是区块链实现去中心化的核心逻辑.我们再次回到上面提出的疑问,节点网络是什么?哈希索引是什么?成千上万的员工像王五一样安装了客户端程序,那么每一位员工的电脑就是区块链上的节点,所有节点形成的网络的就是节点网络.每个节点都存储了一份完备的区块链数据,而客户端程序在后台悄悄的将所有节点进行了联通,使节点与节点之间能够广播消息、同步数据.哈希索引又是什么呢?回忆一遍上面介绍区块链架构的图片,每个区块都存储了一系列消息记录的集合.实际上每一条消息记录添加到区块中时,都会通过加密算法为这条记录生成一串唯一的哈希值(也可以称之为哈希索引).哈希值是什么呢?它就类似于身份证号,是这条数据的唯一标识,在计算机中就是一条长长的由字母数字以及符号随机组合的长串.倘若有人把王五选择李四这条记录改成王五选择牛二,那么这条数据的哈希值就会立马发生改变.不光每条记录会生成一个哈希值,每一个区块都会依据区块内所包含的内容生成一条唯一的哈希值与之对应.李四的竞选对手牛二一看选票形势对自己非常的不利,心里就泛起了阵阵涟漪.牛二突然想起了他远方表舅家的寡妇娘嫁给了村头卖烧饼的李二狗他爹.李二狗毕业的时候,托牛二在张三技术团队找了份工作,只可惜二狗工作多年才疏学浅,年纪轻轻就秃了头.牛二赶紧联系上二狗,希望他利用技术手段篡改一下区块链上的数据,扭转目前竞选不利的局势,并在电话的结尾承诺将自己多年嫁不出去的女儿介绍给他,二狗欣然答应.二狗亢奋不已,买了两箱可乐熬了三个通宵终于把自己电脑上存放的区块链数据篡改完了,可等到与其他节点进行数据同步的时候,神奇的一幕出现,其他节点通过算法验证,发现二狗这台电脑的数据做过篡改,不予承认.其他节点是怎么做到的呢?二狗把区块链上存放的某条记录王五选择李四改成王五选择牛二,那么这条数据的哈希值就会发生改变,并且这个区块的哈希值也会随之改变.还记得之前提到的吗?每一个区块的头部都会链接上一个区块的哈希值,现在上一个区块因为数据篡改导致哈希值发生改变,导致后面的区块无法通过算法的验证.上面案例可以看出,区块链通过密码学的手段杜绝了数据被篡改的可能性,让所有的数据记录变得真实可信.即便如此,很多朋友的脑海里依旧存在误解,区块链就是数字货币,区块链就是为了圈钱融资割韭菜.区块链和数字货币狭义上理解,区块链是一种去中心化存储数据的技术,它的目标是实现web3.0,跟数字货币没有任何关系.数字货币是使用区块链技术开发出来的具体实现.比如跨国集团使用区块链技术开发了一款投票系统,日本人中本聪他就想使用区块链技术开发一款数字货币.那为什么只要提及区块链就和数字货币分不开呢?这是因为区块链的三大特征公开透明、记录可追溯以及不可篡改性太适合做货币了,如果区块链技术能应用于金融领域,那数字货币的信用体系就能获得大众的认可.很多朋友可能不太清楚,现实社会中很多领域已经应用了区块链技术,但是并没有发行数字货币.比如我们接下来讲解的私有链和联盟链.区块链按照类型划分为三种:公有链、私有链以及联盟链.目前市场十分火爆的比特币、以太坊构建的区块链都属于公有链.凡是公有链,那就意味着所有人都可以参与其中获取信息、发起交易等.私有链并不是对所有人开放,加入私有链首先要得到相关组织或者个人的授权才行.比如上面介绍的投票系统,它就需要构建一条私有链,只有本公司的员工才能参与投票.联盟链也属于私有链的类型,一般大型平台机构之间通常会构建联盟链来存储一些关键数据,比如国家银行、事业机关单位会在联盟链上投资资金研发.私有链和联盟链的相关应用开发,就不需要数字货币的参与.比如投票系统,核心目的就是为了完成公正公平的竞选,刻意创造数字货币没有任何意义.数字货币底层原理数字货币是区块链技术的具体应用,但同时它们又推动了区块链技术的发展.本节将选择比特币、以太坊以及Filecoin作为素材讲解数字货币的使命和意义,以及它们的运行机制和对区块链行业形成的影响.比特币不知何时,谈起区块链就不得不提比特币,足以可见比特币在数字货币中所处的地位.比特币的使命就是为了构建一个所有人都参与维护的超级账本.那什么是超级账本呢?张三、李四、王五、牛二四人流落孤岛.张三身强力壮擅长捕鱼,李四温润孱弱干些缝缝补补,王五名牌大学建筑系高材生会盖棚子.牛二啥体力活都不会干,但有颗经商的头脑.为了物尽其用人尽其才,牛二把大伙召集起来想了个法子.首先给所有商品定价,一条鱼10元,盖一个棚子100元,缝一件野人套装50元.一天张三请王五盖个棚子,牛二记下一笔张三转给王五100元.张三又从李四买件野人套装,牛二记下一笔张三转给李四50元.王五和李四也要吃食物,分别都从张三那里买了条鱼.牛二记下两笔王五转给张三10元和李四转给张三10元.通过牛二手中的账本我们就可以得出张三余额为-130元,张三欠王五90元,张三欠李四40元.理论上来将,只要这个账本一直记录下去,每个人的余额和交易情况都可以计算出来,即使大家之间并没有使用现金交易,但账本上记录的余额依旧可以让人与人之间的经济交易一直进行下去,这个账本和银行的作用很像.荒岛四人组所有的交易记录都被牛二一人掌控,这就是中心化的账本,如果牛二想做假账,其他人也很难察觉.比特币构建出来的区块链就相当于牛二手中的账本,不过这个电子账本由所有人共同维护,不被任何个体单独掌控,交易记录一旦记上了区块链,那就再也不能被篡改了.除此之外比特币不能赊账,如果发起一笔交易张三转给李四100元,那说明张三的余额至少是大于100元的,这笔交易才算合法.日常贸易让每个人的账户余额处于动态变化中,余额的多少需要根据账本的交易记录计算得出,随着交易数量不断增加,牛二天天算这个得累死.人计算起来不仅慢而且容易出错,但计算机算帐可是强项,要不然也不会称之为计算机.随着孤岛的互联网技术不断发展,荒岛四人组赶时髦废弃了原来的中心化账本,决定以后用比特币交易.张三想请王五建个城堡逗闺女,王五拉足马力加班加点用了一个月建成了,张三打开手机app给王五的钱包转了100比特币,那么这笔记录就被记在了区块链上,交易完成.同理王五想从张三那里买头海龟送媳妇上班,等到快递上门后,王五打开手机app给张三转了50比特币确认收货,这笔交易也算完成了.而牛二最惨,自从账本上了区块链,他再也不能偷偷捞两把赚点外快了.以上介绍的都是比特币的作用与意义,那到底什么是挖矿呢?比特币和挖矿之间是什么关系呢?挖矿的机制和原理比特币官方有一个客户端程序,电脑一旦下载安装客户端运行起来,这台电脑就成为了一个节点.应用程序初次启动,它就会与节点网络进行信息同步,把某个节点的上的区块链信息下载保存在本地电脑,这样本机就备份了一份区块链数据.比特币的目标是建立一个超级账本,它里面包含一个钱包的功能,主要用于执行交易转账.钱包其实是私钥、地址和区块链数据的管理工具.地址相当于银行账号,有的数字货币会叫作公钥,别人要转账给你,就把比特币转给你的地址,它长什么样子呢?类似这种2NLscuT3dBeUAdo39JgmnsEDh3Syt3TUq8.私钥相当于银行密码,如果你想转钱给别人,就需要通过私钥来转账.另外私钥是万万不能泄露的,否则别人会把你的比特币全部转走.区块链数据就是区块链上存储的交易记录,张三的客户端程序扫描了电脑上的区块链数据,找到所有与自己相关的交易记录并计算出了账户余额.张三发现余额还有2个比特币,它想全部转给李四.张三付出2个币,李四收到2个币这条交易记录使用张三的私钥经过加密算法生成一个哈希值,即该条交易记录的电子签名.交易记录和电子签名会一同被应用程序广播到节点网络中去,某个节点监听到了这条广播,它们取出交易记录和电子签名,并通过张三的公钥解密计算,以此来确定该条交易记录是不是张三发起的,其次判断整个过程中有没有被篡改.经过验证这条交易记录是合法的,节点又会将该条交易记录广播到其他所有的节点都收到,然后节点自己在本地搜一遍区块链,看张三的帐号里有没有足够的钱,有的话这条交易就成立了,准备放进区块存起来.其他收到广播的节点也会照此操作,最终所有节点电脑上的区块都新增了这一条交易记录.还记得上一节提到过,当区块到了快存不下去的时候,这个区块就会被打包封装成一个完整的区块.那谁负责这个打包封装呢?比特币官方就规定如果哪个节点愿意做这个苦活累活,我就奖它比特币节点网络有这么多的节点,它们都争着抢着想来干这个差事.比特币官方就犯难了,这到底选谁来做呢?比特币官方最后设计了一个POW算法,用来决定哪个节点封装打包区块.这类以抽选节点做打包员的算法统称为共识算法,POW属于共识算法的一种,另外比较有代表性的算法有POS算法和PoST 算法.POW算法(Proof of Work,工作量证明).计算量越大,就越有大概率被抽中POS算法(Proof of Stake,权益证明).根据资产的多少分配获取抽中的概率节点参与了共识算法的竞猜,它就被称之为矿工,它努力赢得打包员的资格所付出的努力称之为挖矿.如果某个矿工被共识算法抽中了,它就拥有了打包封装的资格,我们就可以称之为出块或者爆块了.矿工一旦出块了,它就可以得到官网赠与的比特币奖励.比特币使用的POW算法对显卡的依赖非常强,因此比特币火热时期,市面上的高端显卡一卡难求,硬件厂商乘坐着数字货币的东风大赚一笔.现在我们来看一下,矿工张三出块这段过程的底层逻辑是如何实现的.矿工张三的区块装满了5000条交易信息后,再加上一条福利信息张三得到2个币和前一个区块的验证码以及一个随机数.关键的步骤来了,此时其他矿工也和张三一样做了相似的操作,他们接下来要一决雌雄争夺出块权.张三的电脑首先计算这个新区块的验证码,用哈希算法不停的算,本来瞬间就能算好,但是要求这个验证码必须小于区块内的随机值(难度值),值如果不够小,就把随机数改一改,再算一次.还不行再改随机数,再算继续算.经过这样上亿亿次的计算,终于找到了附合条件的验证码加到这个新区快上,至此这个包就算打包好了.张三把新区块广播到网络上,其它矿工会验证一下这个区块的所有交易信息,并着重验证一下这个区块算出的验证码,都没问题就承认这个块了,从此区块链就长长了一块,然后处理一下自己本地的交易信息池,把那些已记录的清除掉,更新上张三广播的区块,在区块链的末尾再增加一个新的空快,准备下一轮出块权争夺.我们从上面这个过程可以看出,谁能赢得出块权,起决于谁能把类似一道很难的数学题先算出来.有的人可能会问,要是两个人同时算出来怎么办,比特币官方解释已经从采用某种机制隔离了这种可能性的发生.但我们不禁提出质疑,比特币吸纳了全网最高的算力,结果这些算力仅仅只是作用于区块链自身的数据计算和全链条的稳定,并没有对社会做出什么实际贡献,实在是浪费电.以太坊以太坊本身不是数字货币,它是一个数字平台.以太坊使用的数字货币称之为以太币.很多朋友可能提出疑问,以太坊是不是和比特币一样又搞出一种数字货币?以太坊的出现对区块链的发展具有革命性的意义,它不仅拥有数字货币的能力,而且还有了更进一步的突破.狭义上理解, 以太坊 = 比特币 + 智能合约.智能合约是什么呢?智能合约是运行在以太坊虚拟机(EVM)上的,本质上是一段脚本代码,部署在以太坊的区块链里.我们可以简单理解,以太坊是一个庞大的数字平台,平台对所有开发者开放了自定义智能合约的能力.智能合约此时就相当于运行在以太坊上的后端代码,这部分可以由开发者来编写,这样作为开发者的我们就能基于以太坊开发一些日常生活当中的应用.智能合约的编写使用Solidity语言,它和JavaScript很像,它拥有操作区块链上的数据的能力.这和我们当下主流的BS(浏览器-服务器)架构很类似,浏览器访问智能合约对开放的接口,智能合约接受到请求就去操作区块链上的数据.BS架构模式下数据都是存放在数据库里,后端代码接受到前端请求操作数据库里的数据.而现在变成了智能合约接受前端请求操作区块链上的数据.由于数据存放的容器从数据库变成了区块链,因此基于以太坊开发的应用就是去中心化的应用程序了.当然智能合约目前还没有传统后端编程语言这么强大,很多功能比如上传下载、对外发起http请求它本身并不支持,需要调用其他程序实现.我们目前就可以利用以太坊开发一些应用程序,比如投票系统、众筹软件等.因此依靠以太坊生态开发的应用程序如雨后春笋般涌现.网络上充斥着很多三分钟发布一款数字货币、十分钟发布属于你自己的虚拟货币这类消息.实际上这类文章传授的便是在以太坊智能合约上用代码开发一个电子钱包功能,它发行的货币属于代币(ICO),代币与比特币以及以太币有着本质的区别.代币不一定就是不好的,比如说腾讯公司会对外发行qq币,qq币就属于一种代币.用户通过qq币可以购买腾讯旗下的游戏皮肤或装备,但是qq币是不能用于其他公司交易.腾讯公司旗下业务众多,代币的发行可以更好的支持自身产品与服务的销售.但有的人什么实体产业都没有,就利用智能合约开发一款电子钱包,货币数量随它的代码编写任意分发,随后大肆鼓吹欺骗群众购买他们的货币,让很多无辜百姓上当受骗.比特币、以太币它们都有官方客户端程序,而这些客户端程序包含了节点同步、挖矿、区块链操作、消息广播以及各种算法校验等功能模块,这些代码实现了一条底链具备的所有能力,因此开发这类客户端需要很强的技术实力和专业背景.当然也不乏无法分子做一个假的客户端程序,外观界面有模有样的运行,内部其实是一个空壳,用以哄骗普通群众.其次社会上也会存在一些不良资本家,他们会出资组建一支实力完备的技术团队,但目的却是开发一款不会带来任何实际价值的数字货币,商家鼓动媒体公关渲染造势,吸引广大民众投入资本,最后风头一过损失最大的还是普通民众,这些恶劣的行径给社会带来了不良影响.回到主题,以太坊的智能合约能让程序员开发各种各样的应用程序,但如果应用程序的数据非常庞大,比如像抖音、微博,它们包含了大量的图片、视频资源,这些体积庞大的数据存在哪里呢?IPFS我们在讲比特币转账过程已经提到,区块链上每新增一条记录,所有区块链上的节点最后都会同步新增,这就意味着每一条消息记录都应该尽可能保持轻量.试想一下,节点网络之间时时刻刻都在进行着成百上千条交易,如果每一条交易记录的数据量都十分庞大,最后所有节点并发同步将会造成整条区块链的崩溃.依托以太坊开发的应用程序想在区块链上存一个视频,这样的需求该如何实现呢?IPFS相关技术可以有效解决区块链存储大数据的难题.IPFS(星际文件系统)是一种网络传输协议.它的出现时为了替换现有的HTTP协议,使得Web更快、更安全、更开放.IPFS本身而言与区块链没有必然的联系,但它可以设计成与区块链相互协同工作.IPFS社区基于IPFS协议开发了一款客户端应用程序,此时这个IPFS客户端可以看做成一个去中心化的百度网盘.用户往IPFS网络上存储一个文件,应用程序返回一串哈希值,这串哈希值就是该文件的唯一凭证.下一次凭借这串哈希值又可以从IPFS网络上把文件下载到本地.以太坊上的应用程序就可以借助IPFS的能力,将所有数据量大的资源文件都存在IPFS网络上,文件返回的哈希值数据量很小,这些哈希值就可以代替文件存储在以太坊的区块链上.IPFS底层是如何存储数据内容的呢?用户往IPFS网络上传一段视频,视频将自动分割成若干片段,每个片段大小可能为几百k,这个视频可能被分割成20个片段,也可能是30个片段.分割完之后,这些视频碎片会随机分发到网络上的各个节点存储起来.节点就是安装了客户端接入IPFS网络上的计算机.视频被分割成那么多片段,那视频打开和下载岂不是会很麻烦吗?这一点完全不用担心,上传到IPFS网络的文件首先被分割成若干片段,文件整体通过算法加密生成一串唯一的哈希值--文件索引.每个小片段也都通过加密算法生成了唯一的哈希值,然后将小片段的哈希值按照文件原有的次序排成哈希列表,这份文件中除了视频的片段、哈希值列表和文件索引,还包含一个内容摘要,当用户想要下载视频的时候,只需要搜索这份文件的索引,就可以顺利打开或者下载视频.IPFS的行为模式和电驴资源分享很像.但是它存在致命的弱点,比如视频上传到IPFS网络,视频碎片分发到不同节点存储,可一旦那些节点关机了,那岂不是视频资源就无法下载了.Filecoin的出现能解决上述问题,Filecoin是使用IPFS传输协议构建的数字货币,俗称文件币.狭义上理解,Filecoin = 比特币 + IPFS.Filecoin能解决IPFS的两大难题.Filecoin通过挖矿的奖励机制促使更多的节点一直保持在线状态.Filecoin会将上传的文件碎片在不同节点上多做备份,保证40%的节点出现问题时还能保持文件的完整性,真正做到数据永不丢失.Filecoin的目的就是为了构建一块用于存储大型文件数据的区块链网络,它的出现对于区块链行业的发展有着革命性的意义.区块链应用的开发上面对几款主流的数字货币都做了详细的介绍,读者看到这里想必已经对整个区块链行业的状况有了基本的认知.接下来我想谈一谈面对迅猛发展的区块链技术,作为IT领域的从业者,我们能做些什么?基于以太坊的智能合约,软件团队开发一些DApp(去中心化应用)服务于公司业务.DApp的开发门槛并不高,很多web开发者通过短期的学习便可上手. 模仿以太坊,软件团队从头研发一条公有链对外提供收费服务.与以太坊相比,企业应该突出自家区块链的的优势.比如降低开发的门槛,增强智能合约的能力,提供部署运维监控方面的支持. 模仿以太坊,软件团队从头研发一条联盟链对国家银行、政府机关或大型商户提供服务.联盟链的发展对社会生活能产生很多积极的影响,也是国家投资重点研究的对象之一. 超级矿机的研发和销售. 普通服务器安装强化后的硬件和客户端软件就变成了超级矿机. 那如何强化呢? 硬件团队通过实际测试获取最佳硬件配置,达到算力的最优值. 软件团队通过优化客户端应用程序的底层算法,架构和业务以及系统驱动,达到提升算力和封装速度的目标.另外优化后的客户端应用程序也可以单独销售. 企业对外提供超级矿机的托管服务.开发者需要基于矿机群开发部署运维脚本和监控程序. 企业通过数字货币官方开放的rpc接口开发周边应用.比如网页或者小程序方便客户查看自己的收益情况. 结尾很多开发工程师原来在公司主要做页面、开发App等,后来转型成为了区块链技术人员.原来那些项目的程序、应用都是中心化的,那么如何把那些中心化的思想理念转变成去中心化的,这需要很多技术人员去了解和思考.另外很多区块链项目都在githup上开源了,代码也是公开的,比如比特币和以太坊.通过源代码理解它们的运营机制,学习怎么去写去中心化的应用和设计原理,然后参与到去中心化项目当中.发布于 2021-07-20 22:46区块链技术数字货币区块链价值赞同 15610 条评论分享喜欢收藏申请转载文章被以下专栏收录kay的世界更自
区块链是什么概念,一文看懂区块链 - 知乎
区块链是什么概念,一文看懂区块链 - 知乎切换模式写文章登录/注册区块链是什么概念,一文看懂区块链律柒合戎兴旺律师开创法律服务创新品牌“律七团”及“创昱合”。律七团讲解:区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任“基础,创造了可靠的“合作”机制,具有广阔的运用前景。2019年1月10日,国家互联网信息办公室发布《区块链信息服务管理规定》。“区块链”已走进大众视野,成为社会的关注焦点。什么是区块链?从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础。而区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。这么解释,,很多人还是看不懂,那么小编做一个简单的比喻。假设环境:假如你们家里有个账本,让你来记账。在以前,就是爸爸妈妈把工资交给你,让你记到账本上。中间万一你贪吃,想买点好吃的,可能账本上的记录会少十几块。这只是举一个例子,小编相信小时候大家可能都想从爸爸妈妈的口袋里拿点钱来花。用区块链解决问题的方法:如果用全家总动员的方式记账,上述说的问题就不会有了,因为你在记账,你爸爸也在记账,你妈妈也在记账,他们都能看到总账,你不能改,爸爸妈妈也不能改,这样想买烟抽的爸爸和想贪吃的你都没办法啦。也就是说,区块链这个分布式的数字账本记录了所有曾经发生并经过系统一致认可的交易每一个区块就是一个账本它不仅能记录交易信息还有更多功能2多功能的“区块链”它不仅可以记录每一笔交易,还可以通过编程来记录几乎所有对人类有价值的事物:出生和死亡证明、结婚证、所有权契据、学位证、财务账户、就医历史、保险理赔单、选票、食品来源以及任何其他可以用代码表示的事物。每个区块就像一个硬盘,把以上这些信息全部保存下来,再通过密码学技术进行加密。这些被保存的信息就无法被篡改。区块链系统每10分钟会检验期间产生的所有数据(比如交易记录以及该区块何时被编辑或创建的记录等),并将这些数据储存在一个新的区块上,这个区块会与前一个区块连接,从而形成一根链条。每个区块都必须包含前一区块的相关信息才能生效。这么看来区块链拥有一些超强的技术特点3区块链的特点1、异常安全:不同于公司或政府机构拥有的集中化数据库,区块链不受任何人或实体的控制,数据在多台计算机上完整地复制(分发)。与集中式数据库不同,攻击者没有一个单一的入口点,数据的安全性更有保障。2、不可篡改性:一旦进入区块链,任何信息都无法更改,甚至管理员也无法修改此信息。一个东西一旦出现就再也没法改变,这种属性对于人类目前所处的可以更改、瞬息万变的网上世界而言意义重大。3、可访问:网络中的所有节点都可以轻松访问信息。4、无第三方:因为区块链的去中心化,它可以帮助点对点交易,因此,无论您是在交易还是交换资金,都无需第三方的批准。区块链本身就是一个平台。区块链技术是比特币的底层技术,比特币在没有任何中心化机构运营和管理的情况下,多年运行非常稳定,没有出现过任何问题,所以有人注意到了它的底层技术,把比特币技术抽象提取出来,称之为区块链技术,或者分布式账本技术。区块链的未来发展和应用场景到底是什么样的?1、数字身份很多人开各种证明时会遇到“证明我妈是我妈”的窘境,有了区块链,就再也不用担心了。原来我们的出生证、房产证、婚姻证等等,需要一个中心节点,大家才能承认。一旦跨国,合同和证书可能就失效了,因为缺少全球性的中心节点。区块链技术不可篡改的特性从根本上改变了这一情况,我们的出生证、房产证、婚姻证都可以在区块链上公证,变成全球都信任的东西,当然也可以轻松证明 “我妈是我妈”。2、卫生保健简单说就是利用区块链建立有时间戳的通用记录存储库,进而达到不同数据库都可提取数据信息的目的。例如你去看病,不用换个医院就反复检查,也不用为报销医保反复折腾,可以节省时间和开销。3、旅行消费例如我们经常会用携程、美团等app来寻找并下单入住酒店和其他服务,各个平台从中获得提成。而区块链的应用正是除去中间商,并为服务提供商和客户创建安全、分散的方式,以达到直接进行连接和交易的目的。4、更便捷的交易区块链可以让支付和交易变得更高效、更便捷。区块链平台允许用户创建在满足某些条件时变为活动的智能合约,这意味着当交易双方同意满足其条件时,可以释放自动付款。5、严把产品质量关假如你买了一个苹果,在区块链技术下,你可以知道从果农的生产到流通环节的全过程。在这其中有政府的监管信息、有专业的检测数据、有企业的质量检验数据等等。智慧的供应链将使我们日常吃到的食物、用到的商品更加安全,让我们更加放心。6、产权保护艺术创作者把自己的作品放在区块链上,有人使用了他的作品,他就能立刻知道。相应的版税也会自动支付给创作者。区块链技术既保护了版权,也有助于创作者更好更直接地向消费者售卖自己的作品,而不再需要发行公司的协助。根据西班牙最大银行桑坦德发布的一份报告显示,2020年左右如果全世界的银行内部都使用区块链技术的话,大概每年能省下200亿美元的成本。这样的数据足以说明“区块链”给传统金融领域。编辑于 2020-03-31 21:50赞同 161 条评论分享喜欢收藏申请
什么是区块链技术? - IBM Blockchain
什么是区块链技术? - IBM Blockchain
什么是区块链技术?
区块链是一种不可篡改的共享账本,用于记录交易、跟踪资产和建立信任
区块链的优点
区块链成功从这里开始
IBM《区块链傻瓜书》现已发行第 3 版,已向超过 6.8 万名读者介绍了区块链。
内容:
区块链基础
区块链如何运作
区块链的实践应用:用例
由 Linux 基金会主导的 Hyperledger 项目
第一次区块链应用的十个步骤
区块链技术概述
区块链定义:区块链是一个共享的、不可篡改的账本,旨在促进业务网络中的交易记录和资产跟踪流程。 资产可以是有形的(如房屋、汽车、现金、土地),也可以是无形的(如知识产权、专利、版权、品牌)。几乎任何有价值的东西都可以在区块链网络上跟踪和交易,从而降低各方面的风险和成本。
为什么区块链很重要:业务运营依靠信息。信息接收速度越快,内容越准确,越有利于业务运营。区块链是用于传递这些信息的理想之选,因为它可提供即时、共享和完全透明的信息,这些信息存储在不可篡改的账本上,只能由获得许可的网络成员访问。区块链网络可跟踪订单、付款、帐户、生产等信息。由于成员之间共享单一可信视图,因此,您可采取端到端方式查看交易的所有细节,从而增强信心,提高效率并获得更多的新机会。
区块链的关键元素
分布式账本技术
所有网络参与者都有权访问分布式账本及其不可篡改的交易记录。 借助这个共享账本,交易只需记录一次,从而消除了传统业务网络中典型的重复工作。
不可篡改的记录
当交易被记录到共享账本之后,任何参与者都不能更改或篡改相关信息。 如果交易记录中有错误,则必须添加新交易才能撤消错误,这两个交易随后都是可视的。
智能合约
为了加快交易速度,区块链上存储了一系列自动执行的规则,称为 "智能合约" 。 智能合约可以定义企业债券转让的条件,包括有关要支付的旅行保险的条款等等。
区块链如何运作
每个交易发生时,都会被记录为一个数据“区块”
这些交易表明资产的流动情况,资产可以是有形的(如产品),也可以是无形的(如知识产权)。 数据区块可以记录您选择的信息:人、事、时、地、数甚至条件(例如食品运输温度)。
每个区块都与其前后的区块连接
随着资产从一地移至另一地或所有权的变更,这些数据区块形成了数据链。 数据区块可以确认交易的确切时间和顺序,通过将数据区块安全地链接在一起,可以防止任何数据区块被篡改或在两个现有数据区块之间插入其他数据区块。
交易以区块形式组合成不可逆的链:区块链
每添加一个数据区块都会增强对前一个区块的验证,从而也增强对整条区块链的验证。 因此,篡改区块链很容易就会被发现,这也是不可篡改性的关键优势所在。 这不但消除了恶意人员进行篡改的可能性,还建立了您和其他网络成员可以信任的交易账本。
区块链技术的优点
需要改变的方面:运营人员常常在保留重复记录和执行第三方验证等方面浪费精力。 记录保存系统容易受到欺诈和网络攻击的威胁。 有限的透明度会延缓数据验证速度。 随着物联网的到来,交易量呈爆炸式激增。 所有这些因素都会影响开展业务的速度并侵蚀利润,因此我们需要更好的方法。 于是区块链闪亮登场。
更高的信任度
通过使用区块链技术,作为会员制网络中的一员,您可以确信自己收到准确、及时的数据,并且您的机密区块链记录只能与您特别授予访问权限的网络成员共享。
更高的安全性
所有的网络成员都需要就数据准确性达成共识,并且所有经过验证的交易都将永久记录在案,不可篡改。 没有人可以删除交易,即便是系统管理员也不例外。
更高的效率
通过在网络成员之间共享分布式账本,可避免在记录对账方面浪费时间。 为了加快交易速度,区块链上存储了一系列自动执行的规则,称为“智能合约”。
区块链基础知识五分钟简介
1
深入了解区块链技术的基础知识:数据块中如何包含代表任何有价值事物的数据,它们如何在不可篡改的数据链中按时间顺序连接在一起,以及区块链与比特币等加密货币之间有何差异。
2
了解区块链的分散性质如何使其有别于传统的记录保存,探索许可区块链在商业交易中的价值,以及区块链如何使信任和透明度达到新的水平。
3
食品行业只是通过区块链技术实现转型的行业之一。 了解如何在保护网络参与者数据的前提下,追溯食品的种植、收获、运输和加工的时间、地点和方式。
4
区块链之所以能建立信任,是因为它代表了真实的共享记录。每个人都能相信的数据将有助于推动其他新技术的发展,从而能大幅提高效率、透明度和置信度。
区块链网络的类型
可采用多种方式建立区块链网络。 它们可以是公有、私有、许可式区块链网络,或由联盟建立。
公有区块链网络
公有区块链是任何人都可以加入和参与的区块链,如比特币。 缺点可能包括需要大量计算能力,交易的私密性极低或根本没有私密性可言,以及安全性较弱。 而这些都是区块链的企业用例的重要考虑因素。
私有区块链网络
私有区块链网络与公有区块链网络相似,也是分散的点对点网络。 但是,在私有区块链网络中,由一个组织负责管理网络,控制谁获准参与网络,并执行共识协议,维护共享账本。 这有助于显著提高参与者之间的信任和信心,具体取决于用例。 私有区块链可在企业防火墙后运行,甚至可在企业内部托管。
许可式区块链网络
建立私有区块链的企业通常也会建立许可式区块链网络。 需要注意的是,公有区块链网络也可以成为许可式网络。 这种模式对获准参与网络和执行特定交易的人员施加限制。 参与者需要获得邀请或许可才能加入。
联盟区块链
多个组织可以分担维护区块链的责任。 这些预先挑选的组织决定谁可以提交交易或访问数据。 如果所有参与者都必须获得许可才能参与,并且对区块链共担责任,那么对于企业而言,联盟区块链是理想之选。
区块链安全性
区块链网络的风险管理系统
在构建企业区块链应用时,必须制定全面的安全战略,通过使用网络安全框架、保证服务以及最佳实践,缓解攻击和欺诈带来的风险。
了解有关区块链安全性的更多信息
区块链用例和应用
IBM Food Trust 通过从海洋一直到超市和餐馆全程跟踪捕捞的每一批海鲜,帮助 Raw Seafoods 增强整个食品供应链的信任度。
INBLOCK 发行了基于 Hyperledger Fabric 的 Metacoin 加密货币,旨在更迅速、更方便、更安全地开展数字资产交易。
利用区块链技术,实现变革性的医疗成果
IBM Blockchain Platform 帮助生态系统改变确保信任、数据来源和效率的方式,从而改善患者治疗和组织盈利能力。
阅读:实现变革性的医疗成果 (PDF, 188 KB)
了解 Golden State Foods 如何利用区块链的不可篡改性,跟踪供应链中的货物,帮助保障食品质量。
Vertrax 和 Chateau Software 推出了第一个基于 IBM Blockchain Platform 的多云区块链解决方案,旨在帮助防止大宗石油和天然气分销的供应链中断。
Home Depot 采用 IBM Blockchain 技术,获取有关发货和收货的共享可信信息,从而减少供应商争议并加速解决争议。
行业区块链
行业领军企业使用 IBM Blockchain 消除摩擦,建立信任,实现新的价值。 选择细分行业以了解详细信息。
供应链
医疗保健
政府
零售
媒体和广告
石油和天然气
电信
制造
保险
金融服务
旅游和交通运输 (PDF, 340 KB)
区块链常见问题解答
区块链和比特币有何区别?
比特币是一种不受监管的数字货币。 比特币使用区块链技术作为其交易账本。
这段视频说明了两者之间的差异。
IBM Blockchain Platform 与 Hyperledger 有何关系?
IBM Blockchain Platform 由 Hyperledger 技术提供支持。
这种区块链解决方案可以帮助任何开发人员顺利转变为区块链开发人员。
请访问 Hyperledger 网站以了解详细信息。
了解有关 Hyperledger 的更多信息
我可以在自己期望的任何云上进行部署吗?
IBM Blockchain Platform 软件经过优化处理,可以部署在 Red Hat 最先进的企业级 Kubernetes 平台 Red Hat® OpenShift® 之上。
这意味着您可以更灵活地选择在何处部署区块链网络组件,无论是本地、公有云还是混合云架构。
信息图:在自己选择的云环境中进行部署
我需要更多详细信息。 可从哪里获得?
如需更详细地了解区块链网络的运作方式以及使用方法,请阅读《分布式账本简介》(Introduction to Distributed Ledgers)。
学习 IBM Developer 上的区块链教程,了解更多信息
探索 IBM Blockchain Platform 的功能,这是唯一完全集成的企业级区块链平台,旨在帮助您加速多机构业务网络的开发、治理和运营。
立即注册,下载 IBM Blockchain Platform 白皮书 (PDF, 616 KB)
获取有关 Hyperledger Fabric 的详细信息,了解其独到之处、为何对业务网络至关重要以及如何开始使用。
访问 IBM Developer 上的 Hyperledger 页面
这份开发人员快速入门指南解释了如何使用 IBM Blockchain Platform Starter Plan 构建入门级区块链网络并开始编写代码。
查看开发人员快速入门指南
区块链解决方案
IBM Blockchain 解决方案
IBM Blockchain Platform 属于领先的 Hyperledger Fabric 平台。区块链创新者可充分利用这一平台,通过 Red Hat® OpenShift® 在任何计算环境中构建、运营、管理和发展区块链解决方案。
了解有关 IBM Blockchain Platform 的信息
区块链咨询
作为顶级区块链服务提供商,IBM Blockchain Services 拥有丰富的专业知识,可帮助您基于最佳技术构建强大的解决方案。超过 1,600 名区块链专家使用来自 100 多个实时网络的洞察,帮助您构建和发展。
了解有关区块链咨询的信息
所有 IBM Blockchain 解决方案
采用 IBM Blockchain 解决方案是区块链取得成功的最佳捷径。 IBM 融合了各种网络,使您能够轻松让其他成员加入,共同推动食品供应、供应链、贸易融资、金融服务、保险以及媒体和广告等领域的转型。
查看我们快速发展的区块链解决方案
区块链技术资源
通过艺术诠释区块链技术
我们请来五位对区块链技术知之甚少的艺术家,创作有关区块链主要优点的艺术作品。查看他们的作品,然后在我们最新网络研讨会系列 Blockparty 中,从 IBM 客户和业务合作伙伴那里了解更多信息。
区块链技术博客
网络上有关区块链技术的内容并不缺乏。但对于 100 多万的读者来说,IBM Blockchain Pulse 博客是区块链思想领导力和洞察分析最值得信赖的来源之一。
区块链技术播客
戴上耳机,通过聆听区块链创新者的知识来充实自我。了解区块链技术如何帮助个人重新获得对身份的控制权限、消除全球贫困和减少污染等难题。
区块链技术用例
通过了解创新者如何使用区块链技术 IBM Blockchain Platform 变革业务来获得启发。您可以加入现有的区块链网络,也可以与我们合作创建您自己的区块链网络。
客户成功案例
了解我们的客户如何运用 IBM Blockchain 区块链技术,对组织进行革新,从而获得切实可行的业务成果。
区块链技术后续步骤
浏览我们的参考指南,更深入地了解区块链的各个方面,包括运作方式、使用方法以及实施注意事项。
区块链技术主题
区块链技术的优点
智能合约
面向企业的区块链
区块链安全性
社会公益区块链
区块链和物联网
Hyperledger