tokenpockettokenpocket钱包官网版|区块链技术讲解

作者: tokenpockettokenpocket钱包官网版
2024-03-14 04:11:43

洞见研报-洞见趋势研判未来 | 专业实时研报分享,行业研究报告,行业分析报告,券商研报,行业智库

-洞见趋势研判未来 | 专业实时研报分享,行业研究报告,行业分析报告,券商研报,行业智库本页面需要浏览器支持(启用)JavaScr

揭秘区块链:从技术原理到实际应用

链:从技术原理到实际应用最新活动产品解决方案千帆社区AI原生应用商店企业服务云市场合作与生态开发者服务与支持了解智能云备案文档管理控制台揭秘区块链:从技术原理到实际应用作者:很酷cat2024.01.19 18:13浏览量:0简介:本文将带领读者了解区块链的起源、发展历程和基本技术原理,并探讨区块链在实际生活中的应用。区块链技术自诞生以来,已经引起了全球范围内的广泛关注。它以其去中心化、安全可靠的特点,为许多领域带来了革命性的变革。那么,区块链究竟是什么?它的工作原理又是什么?本文将为您一一解答。一、区块链的起源与定义区块链起源于比特币,作为比特币的底层技术,用于去中心化和去信任地维护一个可靠的数据库。简单来说,区块链是一种分布式数据库,通过多个节点的共识机制实现交易的可靠性和安全性。二、区块链的工作原理

去中心化:区块链的核心理念是去中心化,即没有中心化的管理机构,而是由多个节点共同维护网络的安全和完整性。这些节点通过共识机制来验证交易的真实性,并在满足条件时将交易记录添加到区块链中。分布式账本:区块链的交易数据被记录在多个节点的分布式账本中,每个节点都有一份完整的账本。这种分布式存储确保了数据的可靠性和不可篡改性。共识机制:区块链采用共识机制来决定哪些交易被记录在账本上。常见的共识机制包括工作量证明(Proof of Work, PoW)和权益证明(Proof of Stake, PoS)等。这些机制确保了所有节点对区块链状态的共识。智能合约:智能合约是区块链的应用之一,可以实现自动化的合约执行,无需第三方介入。智能合约基于预设规则自动执行,降低了交易的成本和风险。隐私保护:区块链的开放性可能导致用户数据泄露,因此需要采取相应的隐私保护措施,如零知识证明、同态加密等。这些技术可以在保证数据隐私的同时,验证数据的真实性和完整性。可扩展性:区块链的可扩展性是一个重要的问题。如何在保证安全性和去中心化的前提下,提高交易吞吐量和降低交易费用,是当前研究的热点问题。三、区块链的应用场景金融领域:区块链在金融领域的应用广泛,如跨境支付、数字货币、证券发行等。通过区块链技术,可以实现去中心化的交易和智能合约的自动执行,提高交易效率和降低成本。供应链管理:区块链可以用于记录商品的生产、运输、销售等全过程。通过追溯商品的来源和流向,可以提高供应链的透明度和可信度,防止假冒伪劣产品的出现。版权保护:区块链可以用于记录数字内容的所有权和授权信息。通过智能合约的技术,可以实现数字内容的自动分发和授权管理,保护版权所有者的利益。公共服务:区块链可以为公民提供更加安全和高效的公共服务,如身份认证、电子投票等。通过区块链技术,可以确保公民信息的真实性和不可篡改性,提高公共服务的质量和效率。四、总结与展望区块链技术以其去中心化、安全可靠的特点,为许多领域带来了革命性的变革。然而,随着区块链技术的广泛应用,也面临着诸多挑战和问题,如隐私保护、可扩展性、安全漏洞等。未来需要继续研究和探索,不断完善和发展区块链技术,为更多领域提供更高效、更安全的服务。

325最热文章云数据库与自建数据库有什么不同?Windows幻兽帕鲁服务器一键搭建我的世界(minecraft) Java版一键部署分布式数据库 GaiaDB-X 金融应用实践2023 年中国数据库十大发展总结

关于智能云百度智能云2.0云智技术论坛行业白皮书智能云公告最新资讯客户案例服务案例方案手册产品手册热门产品云服务器对象存储数据可视化文字识别语音识别图像识别域名服务BML全功能AI开发平台曦灵·数字人直播平台内容分发网络CDN负载均衡智能解决方案智慧城市智能制造智慧能源智慧水务智慧金融智慧媒体智慧电信智慧教育企业上云快速入口控制台备案帮助产品促销企业服务云市场合作伙伴中心支持计划专家服务帮助文档售前服务咨询支持热线(4008-777-818)技术工单建议反馈违规举报关于百度智能云云智一体2.0AI体验中心最新资讯产品动态市场活动客户案例行业解读公告通知联系我们服务与支持文档中心入门指南视频中心培训与认证企业支持计划专家服务重大保障服务自助服务智能助手账户管理管理控制台实名认证域名管理备案管理个人中心财务与订单发票申请消息中心我的工单快速入口成为合作伙伴云市场最新活动企业服务开发者社区SDK中心API平台开发者沙龙飞桨大赛实用工具短网址域名信息查询SSL证书文字识别语音识别图片识别卡证识别文档翻译图片翻译售前咨询热线4008-777-818转1售前在线咨询售后智能助手技术工单违规举报头部7*24小时服务企业支持计划电子化备案建议反馈热门推荐云服务器云磁盘商标注册文字识别弹性公网IP海外CDN数据传输服务内容分发网络人脸与人体识别弹性裸金属服务器SSL证书域名服务容器引擎专线接入音视频直播智能推荐引擎GPU云服务器Elasticsearch云数据库HBase爱速搭低代码平台智能边缘私有网络应用引擎文件存储智能云解析MapReduce简单消息服务轻量应用服务器智能视联网平台云数据库GaiaDB-X日志服务消息服务负载均衡对象存储云虚拟主机数据仓库Palo容器镜像服务云数据库DocDB超级链BaaS平台云原生微服务应用平台解决方案智慧城市智慧金融智能制造智慧能源智慧媒体智慧水务智能图云企业上云区块链物联网热门搜索数字人云手机直播平台数据分析边缘计算域名解析数据可视化自然语言处理数据采集虚拟主机快速链接百度搜索百度大脑百度VR百度AI市场百度统计百度指数百度云加速百度阿波罗百度地图慧眼百度翻译开放平台百度营销百度如流百度安全百度短网址百度有驾百度联盟百度超级链百度数据众包百度网盘企业版百度搜索资源平台

一文弄懂区块链技术原理 - 知乎

一文弄懂区块链技术原理 - 知乎首发于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区块链技术数字货币区块链价值​赞同 155​​10 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录kay的世界更自

区块链是什么,如何简单易懂地介绍区块链? - 知乎

区块链是什么,如何简单易懂地介绍区块链? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册生活调查类问题货币金融区块链(Blockchain)区块链是什么,如何简单易懂地介绍区块链?关注者44,303被浏览13,196,164关注问题​写回答​邀请回答​好问题 211​56 条评论​分享​1,508 个回答默认排序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​赞同 4825​​251 条评论​分享​收藏​喜欢收起​盗盗狂热追随者...​ 关注友情提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果让你觉得困惑,可以在评论下方留言或者私信我一起探讨。最后,也是受限于自己知识结构的不完整,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。另外,作为一篇科普性文章,大家可以随意转载,注明这篇文章的出处和作者即可,无需再单独私信询问。---首先不要把区块链想的过于高深,他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器节点的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的节点,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。 上图中,高亮的点就是区块链系统中分布在全球各地的一个个节点;而这些节点可以简单理解为一台服务器服务器集群为了更简单的阐述那篇文章所构建的世界观,文中所讨论的节点全部粗暴的理解为官方参考实现节点,即最标准的一种节点类型,这些节点不仅可以参与挖矿共识、还可以数据存储和数据点对点传递;不涉及其他复杂的节点类型。关于节点的分类,可以阅读我的专栏文章《区块链节点与钱包的分类、边际和使命,看这篇文章就足够了》# 问题的由来我们反复提到区块链是一个去中心化的系统,确实,「去中心化」在区块链世界里面是一个很重要的概念,很多模型(比如账本的维护、货币的发行、时间戳的设计、网络的维护、节点间的竞争等等等等)的设计都依赖于这个中心思想,那到底什么是去中心化呢?在解释真正去中心化之前,我们还是先简单了解下什么是中心化吧。中心化?回忆一下你在网上购买一本书的流程:第一步,你下单并把钱打给支付宝;第二步,支付宝收款后通知卖家可以发货了;第三步,卖家收到支付宝通知之后给你发货;第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;第五步,支付宝收到通知,把款项打给卖家。流程结束。你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。你一定会摆出一个巨大的问号脸 ⊙.⊙?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!假如说,支付宝程序发生重大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​赞同 6846​​554 条评论​分享​收藏​喜欢

区块链是什么通俗解释 - 知乎

区块链是什么通俗解释 - 知乎首发于无痕区块链切换模式写文章登录/注册区块链是什么通俗解释无痕掘金记个人成长,流量玩法,区块链研究,掘金案例区块链技术如今非常流行,但是它到底是什么呢?是如何工作的,解决了哪些问题,又有哪些用途呢?区块链最早出现在1991年,由一群研究人员用来给数字化文档打时间戳。以使得这些文档不能被篡改,看上去区块链技术就像一位公证人一样。然而这个技术自从那之后就没有再发挥其它作用,直到2009年一个叫中本聪的人采用区块链技术创造了数字加密货币比特币。区块链和比特币等数字货币的关系区块链并不等同于比特币。区块链是比特币的底层技术和基础架构,而比特币是区块链的一种应用。区块链是什么区块链本质上是一个去中心化数据库。是一种分布式数据存储,点对点传输,共识机制,加密算法等计算机技术的新型应用模式。举个例子:比如说小明找大康借一百块钱,但大康怕他赖账,于是就找来村长做公证,并记录下这笔账,这个就叫中心化。但如果,你不找村长,直接拿个喇叭在村里大喊“我大康借给小明一百块钱!请大家记在账本里”,这个就叫去中心化。以前村长德高望重,掌握全村的账本,大家都把钱存在他这里,这是过去大家对中心化的信任。现在,大家都担心村长会偷偷挪用大家的钱,怎么办呢? 于是大家就给每个人都发了一本账本,任何人之间转账都通过大喇叭发布消息,收到消息后,每个人都在自家的账本上记下这笔交易,这就叫去中心化。有了分布式账本,即使老孔或老周家的账本丢了也没关系,因为老朱、老杨等其他家都有账本。区块链有什么特点:去中心化:因为区块链的去中心化,它可以帮助点对点交易,因此,无论你是在交易还是交换资金,都无需第三方的批准。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征。开放性:区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。开放性比较少被提到,但它也很重要,甚至可以说开放性是去中心化特性的保证之一。安全:不受任何人或实体的控制,数据在多台计算机上完整复制(分发),攻击者无单一的入口点。只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更。不可篡改:信息通过密码学技术进行加密,一旦进入区块链,任何信息都无法更改。匿名性:除非有法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行。区块链的匿名性特点,在一定程度上很好地保护了用户的隐私。但是区块链的匿名性也颇具争议,因为它在人们交易、隐私方面起到了重要的保护作用,也为一些违法犯罪行为提供了“保护伞”。区块链应用领域金融领域区块链在国际汇兑、信用证、股权登记和证券交易所等金融领域有着潜在的巨大应用价值。将区块链技术应用在金融行业中,能够省去第三方中介环节,实现点对点的直接对接,从而在大大降低成本的同时,快速完成交易支付。首先是因为区块链的去中心化特性带来的优势。在传统的金融机构,如银行,老王想给小张转一笔钱,他需要先通过中心机构银行的确认才能把钱转到小张手中,而在区块链网络中,老王不需要通过银行就能把钱转给小张,这不仅提高了交易的效率,还在一定程度上节约了交易的成本。目前火爆的defi,就是去中心化金融,虽然现在还在初始阶段,各方面都还不够成熟,但相比2017年的1-C-0空气,已经有了一定的落地。物联网和物流领域区块链在物联网和物流领域也可以天然结合。通过区块链可以降低物流成本,追溯物品的生产和运送过程,并且提高供应链管理的效率。将物流和供应链行业带入现代化将在全球范围内产生广泛影响。通过降低整体成本并允许物流流程中的实体与更多的个体代理商合作,整个物流将会有全面的改进。这些效率的提高最终将导致在流程的每个阶段节省成本。该领域被认为是区块链一个很有前景的应用方向。公共服务领域区块链在公共管理、能源、交通等领域都与民众的生产生活息息相关,但是这些领域的中心化特质也带来了一些问题,可以用区块链来改造。比如,对于普通企业来说,往往最难的就是去政府部门办事,不但需要各种证明文件,而且还需要跑多个部门,不同的部门要求还不一样。主要原因就是原先各个政府部门的数据都是孤立的,彼此不共享,但如果都能在信息高度安全的基础上“上链”,数据实现共享,则办事人就能实现只需在一个部门内解决多数问题。因为所有办事流程交付给智能合约后,后面就可以自动处理并流转,所谓“一网通办”并不再是梦想。数字版权领域通过区块链技术,可以对作品进行鉴权,证明文字、视频、音频等作品的存在,保证权属的真实、唯一性。作品在区块链上被确权后,后续交易都会进行实时记录,实现数字版权全生命周期管理,也可作为司法取证中的技术性保障。拿一首歌曲来说,如果原作人申请了该歌曲的版权,但是由于中心化机构存在存储不安全、不公开透明以及易被利益驱使的缺陷,版权可能被他人进行篡改,这样很可能损害了歌曲原创者的权益,而如果说该歌曲的数字信息及版权信息记录在了区块链上,借助区块链的公开透明以及防篡改性等优势,就能很好地避免版权信息被恶意篡改的情况发生了。保险领域在保险理赔方面,保险机构负责资金归集、投资、理赔,往往管理和运营成本较高。通过智能合约的应用,既无需投保人申请,也无需保险公司批准,只要触发理赔条件,实现保单自动理赔。未来区块链作为保险行业重要的基础设施及工具,将与云计算、大数据、人工智能、物联网等众多新兴技术融合,实现更多的保险行业创新应用,构建创新型、平台式的保险服务创新生态体系。在区块链的推动下,未来将出现开放保险。利用区块链技术的开放性,将可改变传统保险业中的“信息孤岛”情况。另外,区块链未来也可提升保险互信、成就保险普惠。区块链的应用前景巨大,将彻底革新现有价值传递体系在民生的各个领域,未来在区块链都会应用的到,可以想象的是,当社会的各个领域广泛用上了区块链,它将成为信息时代的重要基础设施,能解决很多当前令我们头疼的事儿。更多文章比特币到底是什么东西,为什么值钱,有什么价值新手如何购买比特币等加密货币详细教程编辑于 2023-03-24 21:26・IP 属地河南区块链技术区块链(Blockchain)区块链价值​赞同 164​​10 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录无痕区块链区块链知识科普,探索区块链新

区块链是什么通俗解释 - 知乎

区块链是什么通俗解释 - 知乎首发于无痕区块链切换模式写文章登录/注册区块链是什么通俗解释无痕掘金记个人成长,流量玩法,区块链研究,掘金案例区块链技术如今非常流行,但是它到底是什么呢?是如何工作的,解决了哪些问题,又有哪些用途呢?区块链最早出现在1991年,由一群研究人员用来给数字化文档打时间戳。以使得这些文档不能被篡改,看上去区块链技术就像一位公证人一样。然而这个技术自从那之后就没有再发挥其它作用,直到2009年一个叫中本聪的人采用区块链技术创造了数字加密货币比特币。区块链和比特币等数字货币的关系区块链并不等同于比特币。区块链是比特币的底层技术和基础架构,而比特币是区块链的一种应用。区块链是什么区块链本质上是一个去中心化数据库。是一种分布式数据存储,点对点传输,共识机制,加密算法等计算机技术的新型应用模式。举个例子:比如说小明找大康借一百块钱,但大康怕他赖账,于是就找来村长做公证,并记录下这笔账,这个就叫中心化。但如果,你不找村长,直接拿个喇叭在村里大喊“我大康借给小明一百块钱!请大家记在账本里”,这个就叫去中心化。以前村长德高望重,掌握全村的账本,大家都把钱存在他这里,这是过去大家对中心化的信任。现在,大家都担心村长会偷偷挪用大家的钱,怎么办呢? 于是大家就给每个人都发了一本账本,任何人之间转账都通过大喇叭发布消息,收到消息后,每个人都在自家的账本上记下这笔交易,这就叫去中心化。有了分布式账本,即使老孔或老周家的账本丢了也没关系,因为老朱、老杨等其他家都有账本。区块链有什么特点:去中心化:因为区块链的去中心化,它可以帮助点对点交易,因此,无论你是在交易还是交换资金,都无需第三方的批准。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征。开放性:区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。开放性比较少被提到,但它也很重要,甚至可以说开放性是去中心化特性的保证之一。安全:不受任何人或实体的控制,数据在多台计算机上完整复制(分发),攻击者无单一的入口点。只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更。不可篡改:信息通过密码学技术进行加密,一旦进入区块链,任何信息都无法更改。匿名性:除非有法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行。区块链的匿名性特点,在一定程度上很好地保护了用户的隐私。但是区块链的匿名性也颇具争议,因为它在人们交易、隐私方面起到了重要的保护作用,也为一些违法犯罪行为提供了“保护伞”。区块链应用领域金融领域区块链在国际汇兑、信用证、股权登记和证券交易所等金融领域有着潜在的巨大应用价值。将区块链技术应用在金融行业中,能够省去第三方中介环节,实现点对点的直接对接,从而在大大降低成本的同时,快速完成交易支付。首先是因为区块链的去中心化特性带来的优势。在传统的金融机构,如银行,老王想给小张转一笔钱,他需要先通过中心机构银行的确认才能把钱转到小张手中,而在区块链网络中,老王不需要通过银行就能把钱转给小张,这不仅提高了交易的效率,还在一定程度上节约了交易的成本。目前火爆的defi,就是去中心化金融,虽然现在还在初始阶段,各方面都还不够成熟,但相比2017年的1-C-0空气,已经有了一定的落地。物联网和物流领域区块链在物联网和物流领域也可以天然结合。通过区块链可以降低物流成本,追溯物品的生产和运送过程,并且提高供应链管理的效率。将物流和供应链行业带入现代化将在全球范围内产生广泛影响。通过降低整体成本并允许物流流程中的实体与更多的个体代理商合作,整个物流将会有全面的改进。这些效率的提高最终将导致在流程的每个阶段节省成本。该领域被认为是区块链一个很有前景的应用方向。公共服务领域区块链在公共管理、能源、交通等领域都与民众的生产生活息息相关,但是这些领域的中心化特质也带来了一些问题,可以用区块链来改造。比如,对于普通企业来说,往往最难的就是去政府部门办事,不但需要各种证明文件,而且还需要跑多个部门,不同的部门要求还不一样。主要原因就是原先各个政府部门的数据都是孤立的,彼此不共享,但如果都能在信息高度安全的基础上“上链”,数据实现共享,则办事人就能实现只需在一个部门内解决多数问题。因为所有办事流程交付给智能合约后,后面就可以自动处理并流转,所谓“一网通办”并不再是梦想。数字版权领域通过区块链技术,可以对作品进行鉴权,证明文字、视频、音频等作品的存在,保证权属的真实、唯一性。作品在区块链上被确权后,后续交易都会进行实时记录,实现数字版权全生命周期管理,也可作为司法取证中的技术性保障。拿一首歌曲来说,如果原作人申请了该歌曲的版权,但是由于中心化机构存在存储不安全、不公开透明以及易被利益驱使的缺陷,版权可能被他人进行篡改,这样很可能损害了歌曲原创者的权益,而如果说该歌曲的数字信息及版权信息记录在了区块链上,借助区块链的公开透明以及防篡改性等优势,就能很好地避免版权信息被恶意篡改的情况发生了。保险领域在保险理赔方面,保险机构负责资金归集、投资、理赔,往往管理和运营成本较高。通过智能合约的应用,既无需投保人申请,也无需保险公司批准,只要触发理赔条件,实现保单自动理赔。未来区块链作为保险行业重要的基础设施及工具,将与云计算、大数据、人工智能、物联网等众多新兴技术融合,实现更多的保险行业创新应用,构建创新型、平台式的保险服务创新生态体系。在区块链的推动下,未来将出现开放保险。利用区块链技术的开放性,将可改变传统保险业中的“信息孤岛”情况。另外,区块链未来也可提升保险互信、成就保险普惠。区块链的应用前景巨大,将彻底革新现有价值传递体系在民生的各个领域,未来在区块链都会应用的到,可以想象的是,当社会的各个领域广泛用上了区块链,它将成为信息时代的重要基础设施,能解决很多当前令我们头疼的事儿。更多文章比特币到底是什么东西,为什么值钱,有什么价值新手如何购买比特币等加密货币详细教程编辑于 2023-03-24 21:26・IP 属地河南区块链技术区块链(Blockchain)区块链价值​赞同 164​​10 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录无痕区块链区块链知识科普,探索区块链新

区块链是什么通俗解释?终于讲明白了! - 知乎

区块链是什么通俗解释?终于讲明白了! - 知乎切换模式写文章登录/注册区块链是什么通俗解释?终于讲明白了!东哥的区块链生活东哥,比特币早期投资者,区块链布道者!​东哥互联网从业十几年,总喜欢研究点新东西。今天说一说,区块链这个时髦而性感的技术。写之前,东哥网上查了一下,包括文字、图片和视频,发现竟然没人可以通俗解释区块链是什么。很多文章会使用,“去中心化”、“分布式”等让人费解的名词。客观的讲,要把区块链技术讲清楚,的确有难度。比如,东哥问你,什么是5G技术,你一样会懵逼。区块链也一样,不能想着把定义搞清楚,那是专家学者的事。东哥认为,要想理解区块链,首先了解一下什么是区块链记账法。假如你家有3口人,爸爸、妈妈和你。原来的记账方法是,爸爸1个人记,但妈妈认为爸爸留了小金库,现在改为:3个人记账,每人的账本都相同,并且随时对账,所有收入和支出都记上。这就是区块链记账法,每个人都记账。你可能会说,这太浪费了吧,效率也不高呀!对,的确不高!区块链技术效率不高,并且浪费资源严重。据统计,现在比特币挖矿,每年使用的电量将近三峡大坝的年发电年。既然这么浪费,为什么还要发展区块链技术呢?原因也很简单,区块链不是要解决效率的问题,而是要解决信任的问题。比如,家里每人都记账,妈妈就不担心爸爸留有小金库了,这就建立了信任。这就是区块链记账法。会不会有人偷懒呢?区块链的解决方案是,谁记账最快最好,就给奖励。区块链没有钱,奖励什么呢?那就创新一下,奖励一段特殊的代码,这就是比特币,而你记账的过程叫挖矿。比特币的底层就是用的区块链技术。比特币是一个创新性极强的东西,总量只有2100万枚,每4年产出减半,所以非常稀缺。比特币还有一个特点,可以在互联网上自由转账,流畅的穿过国界。说到这里,是不是感觉很有想像空间了?那么,区块链到底有什么用的呢?刚开始,大家也不清楚有什么用,只当是一个高级些的游戏币,大家转来转去。2010年,有一个程序员,花10000个比特币买了2个披萨。东哥写这篇文章的时候,一个比特币的的价格大概是5万人民币。后来,随着比特币的暴涨暴跌,就成为了一个炒作对象。这就是为什么很多人说,比特币有泡沫的原因。说到这里,你可能想明白了,目前,区块链技术的第一大应用就是比特币,目前比特币的总市值已经超过了2000亿美元。那么,区块链有没有些更实际的用途呢?当然有了,要不今年10月24日,中央政治局就不会专题学习区块链了。目前能看到的,区块链最大的应用在金融领域。并且瞄准的目标也非常奇特,就是钱!你没看错,区块链要变革的第一个对象,就是我们每日常用的钱。区块链具有极高的生命力。比特币已经被多个国家严令禁止,但它不担活了下来,价格还越来越高,因为它的确太难禁了。现在世界上大概有500万台超级计算机,帮比特币记账,分布在全球5大洲,有的在家里,有的在机房,有的深山老林,有的冰山雪地。东哥认为,像治水一样,与其堵,不如疏。我们国家,正因为看到了区块链的巨大力量,决定发行自己的数字货币DECP。中国为了人民币的国际化,已经努力了20年,目前在国际结算中的比例只有4%。东哥认为,基于区块链技术发行的数字货币,将极大地促进人民币的国际化。 目前,整个国际金融体系是围绕美国建立起来了,这让中国在国际竞争中非常被动。 最近美国说,有可能禁止通过SWIFT给华为汇款,这意味着华为无法汇总全球的销售收入。美国为了打压中国,可谓无所不用其极。但这也给了中国,建立以自己为中心的全球金融体系的机会,而区块链就是最佳的推进剂。东哥再讲一个区块链的应用。我们知道,全球75%的芯片是美国设计的,去年美国说要切断对中兴通讯的供应,中兴马上就服软了。董明珠说要砸500亿搞芯片,根本搞不出来,因为根本没有市场生态的需求。这从侧面说明,中国的芯片设计生产能力还比较落后。但是,因为区块链,因为比特币挖矿需求的促进,中国的芯片设计水平极速提升。目前全球80%比特币矿芯片,都是由中国设计生产的。失之桑榆,收之东隅。底子薄弱的中国芯片行业,成长了起来,目前他们在积极布局人工智能、自动驾驶、物联网等芯片。东哥坚定认为,区块链是一个非常朝阳的行业,未来必将与人工智能、5G、大数据、物联网等相结合,极大地促进中国的发展。发布于 2019-12-13 11:29区块链创业公司区块链革命(书籍)区块链价值​赞同 6​​1 条评论​分享​喜欢​收藏​申请

一文弄懂区块链技术原理 - 知乎

一文弄懂区块链技术原理 - 知乎首发于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区块链技术数字货币区块链价值​赞同 155​​10 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录kay的世界更自

区块链是什么通俗解释 - 知乎

区块链是什么通俗解释 - 知乎首发于无痕区块链切换模式写文章登录/注册区块链是什么通俗解释无痕掘金记个人成长,流量玩法,区块链研究,掘金案例区块链技术如今非常流行,但是它到底是什么呢?是如何工作的,解决了哪些问题,又有哪些用途呢?区块链最早出现在1991年,由一群研究人员用来给数字化文档打时间戳。以使得这些文档不能被篡改,看上去区块链技术就像一位公证人一样。然而这个技术自从那之后就没有再发挥其它作用,直到2009年一个叫中本聪的人采用区块链技术创造了数字加密货币比特币。区块链和比特币等数字货币的关系区块链并不等同于比特币。区块链是比特币的底层技术和基础架构,而比特币是区块链的一种应用。区块链是什么区块链本质上是一个去中心化数据库。是一种分布式数据存储,点对点传输,共识机制,加密算法等计算机技术的新型应用模式。举个例子:比如说小明找大康借一百块钱,但大康怕他赖账,于是就找来村长做公证,并记录下这笔账,这个就叫中心化。但如果,你不找村长,直接拿个喇叭在村里大喊“我大康借给小明一百块钱!请大家记在账本里”,这个就叫去中心化。以前村长德高望重,掌握全村的账本,大家都把钱存在他这里,这是过去大家对中心化的信任。现在,大家都担心村长会偷偷挪用大家的钱,怎么办呢? 于是大家就给每个人都发了一本账本,任何人之间转账都通过大喇叭发布消息,收到消息后,每个人都在自家的账本上记下这笔交易,这就叫去中心化。有了分布式账本,即使老孔或老周家的账本丢了也没关系,因为老朱、老杨等其他家都有账本。区块链有什么特点:去中心化:因为区块链的去中心化,它可以帮助点对点交易,因此,无论你是在交易还是交换资金,都无需第三方的批准。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最突出最本质的特征。开放性:区块链技术基础是开源的,除了交易各方的私有信息被加密外,区块链的数据对所有人开放,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。开放性比较少被提到,但它也很重要,甚至可以说开放性是去中心化特性的保证之一。安全:不受任何人或实体的控制,数据在多台计算机上完整复制(分发),攻击者无单一的入口点。只要不能掌控全部数据节点的51%,就无法肆意操控修改网络数据,这使区块链本身变得相对安全,避免了主观人为的数据变更。不可篡改:信息通过密码学技术进行加密,一旦进入区块链,任何信息都无法更改。匿名性:除非有法律规范要求,单从技术上来讲,各区块节点的身份信息不需要公开或验证,信息传递可以匿名进行。区块链的匿名性特点,在一定程度上很好地保护了用户的隐私。但是区块链的匿名性也颇具争议,因为它在人们交易、隐私方面起到了重要的保护作用,也为一些违法犯罪行为提供了“保护伞”。区块链应用领域金融领域区块链在国际汇兑、信用证、股权登记和证券交易所等金融领域有着潜在的巨大应用价值。将区块链技术应用在金融行业中,能够省去第三方中介环节,实现点对点的直接对接,从而在大大降低成本的同时,快速完成交易支付。首先是因为区块链的去中心化特性带来的优势。在传统的金融机构,如银行,老王想给小张转一笔钱,他需要先通过中心机构银行的确认才能把钱转到小张手中,而在区块链网络中,老王不需要通过银行就能把钱转给小张,这不仅提高了交易的效率,还在一定程度上节约了交易的成本。目前火爆的defi,就是去中心化金融,虽然现在还在初始阶段,各方面都还不够成熟,但相比2017年的1-C-0空气,已经有了一定的落地。物联网和物流领域区块链在物联网和物流领域也可以天然结合。通过区块链可以降低物流成本,追溯物品的生产和运送过程,并且提高供应链管理的效率。将物流和供应链行业带入现代化将在全球范围内产生广泛影响。通过降低整体成本并允许物流流程中的实体与更多的个体代理商合作,整个物流将会有全面的改进。这些效率的提高最终将导致在流程的每个阶段节省成本。该领域被认为是区块链一个很有前景的应用方向。公共服务领域区块链在公共管理、能源、交通等领域都与民众的生产生活息息相关,但是这些领域的中心化特质也带来了一些问题,可以用区块链来改造。比如,对于普通企业来说,往往最难的就是去政府部门办事,不但需要各种证明文件,而且还需要跑多个部门,不同的部门要求还不一样。主要原因就是原先各个政府部门的数据都是孤立的,彼此不共享,但如果都能在信息高度安全的基础上“上链”,数据实现共享,则办事人就能实现只需在一个部门内解决多数问题。因为所有办事流程交付给智能合约后,后面就可以自动处理并流转,所谓“一网通办”并不再是梦想。数字版权领域通过区块链技术,可以对作品进行鉴权,证明文字、视频、音频等作品的存在,保证权属的真实、唯一性。作品在区块链上被确权后,后续交易都会进行实时记录,实现数字版权全生命周期管理,也可作为司法取证中的技术性保障。拿一首歌曲来说,如果原作人申请了该歌曲的版权,但是由于中心化机构存在存储不安全、不公开透明以及易被利益驱使的缺陷,版权可能被他人进行篡改,这样很可能损害了歌曲原创者的权益,而如果说该歌曲的数字信息及版权信息记录在了区块链上,借助区块链的公开透明以及防篡改性等优势,就能很好地避免版权信息被恶意篡改的情况发生了。保险领域在保险理赔方面,保险机构负责资金归集、投资、理赔,往往管理和运营成本较高。通过智能合约的应用,既无需投保人申请,也无需保险公司批准,只要触发理赔条件,实现保单自动理赔。未来区块链作为保险行业重要的基础设施及工具,将与云计算、大数据、人工智能、物联网等众多新兴技术融合,实现更多的保险行业创新应用,构建创新型、平台式的保险服务创新生态体系。在区块链的推动下,未来将出现开放保险。利用区块链技术的开放性,将可改变传统保险业中的“信息孤岛”情况。另外,区块链未来也可提升保险互信、成就保险普惠。区块链的应用前景巨大,将彻底革新现有价值传递体系在民生的各个领域,未来在区块链都会应用的到,可以想象的是,当社会的各个领域广泛用上了区块链,它将成为信息时代的重要基础设施,能解决很多当前令我们头疼的事儿。更多文章比特币到底是什么东西,为什么值钱,有什么价值新手如何购买比特币等加密货币详细教程编辑于 2023-03-24 21:26・IP 属地河南区块链技术区块链(Blockchain)区块链价值​赞同 164​​10 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录无痕区块链区块链知识科普,探索区块链新

区块链是什么,如何简单易懂地介绍区块链? - 知乎

区块链是什么,如何简单易懂地介绍区块链? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册生活调查类问题货币金融区块链(Blockchain)区块链是什么,如何简单易懂地介绍区块链?关注者44,303被浏览13,196,164关注问题​写回答​邀请回答​好问题 211​56 条评论​分享​1,508 个回答默认排序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​赞同 4825​​251 条评论​分享​收藏​喜欢收起​盗盗狂热追随者...​ 关注友情提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。另外,由于文章采用了一定的抽象、类举的叙事方式,中间或多或少有些地方会跟区块链底层严谨的技术实现有出入,如果让你觉得困惑,可以在评论下方留言或者私信我一起探讨。最后,也是受限于自己知识结构的不完整,这篇文章会随着我对区块链更深入认识后,随时进行修订,最后更新时间可参考该回答下方的时间戳。另外,作为一篇科普性文章,大家可以随意转载,注明这篇文章的出处和作者即可,无需再单独私信询问。---首先不要把区块链想的过于高深,他是一个分布在全球各地、能够协同运转的数据库存储系统,区别于传统数据库运作——读写权限掌握在一个公司或者一个集权手上(中心化的特征),区块链认为,任何有能力架设服务器节点的人都可以参与其中。来自全球各地的掘金者在当地部署了自己的节点,并连接到区块链网络中,成为这个分布式数据库存储系统中的一个节点;一旦加入,该节点享有同其他所有节点完全一样的权利与义务(去中心化、分布式的特征)。与此同时,对于在区块链上开展服务的人,可以往这个系统中的任意的节点进行读写操作,最后全世界所有节点会根据某种机制的完成一次又依次的同步,从而实现在区块链网络中所有节点的数据完全一致。 上图中,高亮的点就是区块链系统中分布在全球各地的一个个节点;而这些节点可以简单理解为一台服务器服务器集群为了更简单的阐述那篇文章所构建的世界观,文中所讨论的节点全部粗暴的理解为官方参考实现节点,即最标准的一种节点类型,这些节点不仅可以参与挖矿共识、还可以数据存储和数据点对点传递;不涉及其他复杂的节点类型。关于节点的分类,可以阅读我的专栏文章《区块链节点与钱包的分类、边际和使命,看这篇文章就足够了》# 问题的由来我们反复提到区块链是一个去中心化的系统,确实,「去中心化」在区块链世界里面是一个很重要的概念,很多模型(比如账本的维护、货币的发行、时间戳的设计、网络的维护、节点间的竞争等等等等)的设计都依赖于这个中心思想,那到底什么是去中心化呢?在解释真正去中心化之前,我们还是先简单了解下什么是中心化吧。中心化?回忆一下你在网上购买一本书的流程:第一步,你下单并把钱打给支付宝;第二步,支付宝收款后通知卖家可以发货了;第三步,卖家收到支付宝通知之后给你发货;第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;第五步,支付宝收到通知,把款项打给卖家。流程结束。你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。你一定会摆出一个巨大的问号脸 ⊙.⊙?——“通过权威背书来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全”,真的可以嘛?!假如说,支付宝程序发生重大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​赞同 6846​​554 条评论​分享​收藏​喜欢

洞见研报-洞见趋势研判未来 | 专业实时研报分享,行业研究报告,行业分析报告,券商研报,行业智库

-洞见趋势研判未来 | 专业实时研报分享,行业研究报告,行业分析报告,券商研报,行业智库本页面需要浏览器支持(启用)JavaScr