tokenpocketcom官网下载正版|区块链网络节点

作者: tokenpocketcom官网下载正版
2024-03-08 20:28:08

区块链的常识之,区块链节点,是什么? - 知乎

区块链的常识之,区块链节点,是什么? - 知乎首发于区块链的常识切换模式写文章登录/注册区块链的常识之,区块链节点,是什么?史记品牌营销日记《史记的品牌营销日记》《个人品牌营销变现方法论》 专业科普:区块链节点,通常指的是区块链网络中的计算机,也就是说任何连接到区块链网络的计算机(包括手机,矿机等)都称为节点。比如说比特币网络,是一个公有链,用户在自己的联网电脑上运行比特币程序时,这个电脑就成为比特币区块链网络中的一个节点。是指下载了相关加密货币的节点软件,以参与对等网络的计算机。操作一个节点可以是普通钱包用户,矿工或多人协作。不同的区块链对节点的数量和要求有所不同。通常,节点首先需要具有一定的存储空间,保证足够好的性能以免一跑就堵塞,然后设备需要连接网络,并可以使用矿机、服务器和电脑等进行操作接入区块链,具体使用什么工具视节点要求而定。区块链节点有何特征:1、具有存储空间,可以将区块数据存储在TF卡、U盘、移动硬盘和计算机等。2、连接网络,所有的存储空间的设备必须连接网络。3、参与区块链,需要在存储空间上运行区块链相应程序,通过可视化终端进行交易。每一个安装有数字货币客户端并连接到数字货币区块链的电脑就是数字货币区块链的一个有效节点。这个世界上有多少这样的电脑或手机,区块链上就有多少个节点。区块链是个分布式系统,系统里有很多节点,这些节点你只要单纯地理解为通过互联网相连的电脑或者服务器就好了。然后根据区块链性质的不同,成为节点的方式也不同,当然,对于节点的定义也不同。对于像比特币这样的公有链,理论上来讲,你下载完整的区块链,参与交易和挖矿,才算是节点。然而,在现在的比特币里,矿工,完全节点,轻量节点,甚至普通用户,在不同的语境下都可能被称为节点。但无论如何,比特币的系统与其说是“连入网络就会自动更新区块链”,不如说是你想要挖矿或者是交易(同时你不信任其他人的验证结果),就必须更新整条区块链,这不是一个自动义务的事情,而是自愿的事情。对于公有链而言,是你想从链上获益就必须按照规则成为节点,而不是相反。而私有链和联盟链则反过来——你先成为节点,然后按照规则行事。城市节点有什么用?主要分布于各个主要城市地区,每个市/区只能有一个节点名额。节点申请无门槛人人都可参与,但作为公有链申请人要想因此获益就必须按照规则成为节点。城市节点相当于前文提到的比特币中全力工作的节点(在机器实体上载有比特币核心客户端和完整区块链的节点)。唯一的区别在于城市节点是以“服务用户”为原则,秉承对全网开放,共同推动链信平稳健康可持续发展理念。基础常识举个例子我们可以把区块链节点理解为,我们开一家公司,发展的代理商或经销商,分公司等,这样就很好理解什么是区块链节点。分公司理解为超级节点,省级代理理解为大节点,每个分公司发展的市级代理,县级代理可以理解为,小节点。个人代理可以理解为轻节点。比如我们生活中使用的聊天软件,每天的聊天信息、朋友圈,视频等这些数据的存储和运行都在第三方公司的服务器里。这个处理数据的服务器,我们就可以称之为“节点”。但是这种传统的中心化数据库显然存在着被一锅端的巨大风险。区块链是去中心化的分布式数据库,它不依托于哪一个中心化的服务器,而是由千千万万个“小服务器”、“节点”组成。节点分布越多、越广泛,区块链网络就更加的去中心化,网络运行也就越安全、越稳定。发布于 2020-10-23 15:50区块链(Blockchain)数字货币数字货币钱包​赞同 3​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录区块链的常识只提供区块链与加密数字货

详解区块链节点:如何有效地运营自己的节点? - 知乎

详解区块链节点:如何有效地运营自己的节点? - 知乎切换模式写文章登录/注册详解区块链节点:如何有效地运营自己的节点?SupraOracles区块链节点通过它们的连接、交互组成网络,该网络通过共识机制将新区块添加到链上,本文将解释如何有效地运营自己的区块链节点。1. 什么是区块链节点?在深入讲解如何运行节点之前,我们有必要了解一下什么是区块链节点。通常在计算机网络中节点可以是计算机或任何涉及在计算机网络内接收和发送数据的设备,因此在区块链网络中每个账本参与者都是一个节点。基于P2P(点对点)网络的原理,公有链技术本质上是去中心化跟开源的,在大多数网络中,公有链没有专用服务器,不是一个授权机构,依赖于用户之间的共识。节点通常通过共享状态信息、对其协议的治理进行投票以及验证传入交易的新块来在网络内进行通信。来自不同地理位置的多样化和分散的节点有助于建立一个更强大的共识机制。如果有足够多的节点维护他们的区块链账本副本并继续区块生产,那么网络可以无限期地运行下去。也正因此,由于每一个用户对于整个网络的安全性和完整性都至关重要,成为某个加密项目社区的一员不仅是件令人兴奋的事,也是一种责任。2. 如何运营区块链节点?通常来说,节点分两种主要类型:一种是存储完整账本的全节点(full node),这种节点通过验证数据来保证区块链上数据的安全性和正确性;另一种是轻节点 (lightweight node),即每个参与的用户。每一个轻节点都需要连接到一个全节点,以便同步网络的当前状态并能够参与运行。首先,要部署区块链节点,新节点运营商必须要达到硬件和软件要求门槛,例如兼容的操作系统、足够的可用磁盘空间、RAM 内存和网速。接着,运营商需根据他们所期望的参与程度下载所需的核心软件。针对所有区块链,你都可以在运行节点上配置所需的设备、内存要求和处理能力。市场上有门槛较低的链,但也有其他一些链因为网络设计导致节点运行困难而昂贵。当然,昂贵的节点运行要求运营商的大量财务投入,可以在成本上筛掉一些试图投机的恶意节点。例如,比特币的网络允许用户运行全节点或轻节点。对于比特币全节点来说,必须下载存储区块链历史记录并保存在本地文件中,在撰写本文时,其硬盘内存需超过 380 GB。【如图】区块链节点通过它们的连接、交互和在全节点的情况下共同组成网络再拿以太坊举个例子,根据复杂程度不一,可运行的节点为:全节点、轻节点和存档节点。全节点更具独立性,对自己的数字资产拥有更完整的主权,不像轻节点那样需要依赖其他节点访问区块链。全节点可以连接到区块链的主网络,也可以在测试网或其他安全环境上运行,以测试和开发新软件。轻节点对没有强大硬件或带宽能力的用户很友好,因为不需要下载以太坊的完整历史、钱包余额或智能合约代码。可以在手机或其他更小、功能更弱的设备上运行,但它们可以通过检验区块头的状态根,从而验证数据的有效性。【如图】全节点对网络负有更大的责任,需要更复杂的硬件和软件,但他们的努力在金钱方面得到了更直接的回报。就运营商资源而言,以太坊存档节点可能是运行难度最高的节点之一。它们需要更多的硬件设备来运行,也需要使用大容量的 RAM 和磁盘空间。即便使用先进的设备,新的以太坊存档节点同步也需要花费数周时间,如果使用速度较慢的 HDD 硬盘同步存档节点,则该节点将无法实现完全同步,因为新块生成的速度将超过这类计算机同步的速度。另外,如果客户端的节点版本出现任何错误,则该节点需要重新同步。无形的时间消耗,增加了整个运营成本。当然,为了防止节点脱机,运行节点时应该进行定期检测,可以向兼容节点发送请求或从区块链请求数据。不然的话,如果遇到节点崩溃的情况需要手动重启设备,这很可能会之前通过验证或挖掘新块产生的收入都将丢失。3. 节点运营的难点节点运营商通常会有带宽限制与硬件性能方面的问题。很多节点运营商会向互联网提供商获取无流量限制的服务,值得注意是要警惕网络被其他不明原因占用的情况。在早期的比特币网络中,病毒签名曾被上传到区块链,导致 Windows 用户的病毒软件检测到病毒后仍遇到了问题。虽然用户的设备并没有受到感染,但他们运营节点的整体性能受到了损害。为了解决技术以及操作门槛跟效率问题,许多区块链节点运营服务公司(BaaS)应运而生。节点运营商部署必要的资本和资源来连接其基础设施,并维护其与所需区块链相关的功能。【如图】区块链服务提供商托管运行企业和其他实体的节点,为节点运营者提供诸多好处,降低了节点运营者的时间成本或专业知识要求。根据每个客户的需求,区块链服务提供商可以达成对已集成公链的完全访问,只要运营者满足最低要求,包括在所需网络上的最低投资。服务提供商则会承担节点操作相关的繁琐内容,让客户可以专注于他们本身的专业领域而不用在操作上耗费精力。目前市场上比较流行的区块链服务提供商有Blockdaemon、Infura、GetBlock、Alchemy、QuickNode、Figment等等。4. 节点运营是否真的有利可图?启动和维护节点有助于区块链的去中心化。在某些网络上,运行一个节点可以为运营商提供回报,因为该节点会因验证新交易和参与产生新区块的投票过程而获得报酬。但同时,区块链节点运营也会消耗大量时间和资源,在投入和产出比上,对矿工或验证者来说是有利可图的。全节点的报酬丰厚,因为它们验证区块并存储整个区块链账本,因此验证节点可以产生可预期的收入。尽管运行轻节点不会产生加密回报,但它仍然有助于增强用户和其他节点之间的信任、安全和隐私。拥有自己的节点意味着您无需信任第三方网络的状态或提交给网络进行验证的交易的真实性。为了更好地说明这一点,假设您是一家仅接受实物黄金作为服务付款交易站的所有者,现在您想验证黄金是否是真实的并且确认具体的数量,您是会将其发送给检查员网络,还是安排在内部进行所有验证?换句话说,运行你自己的节点符合加密世界无处不在的精神:去信任;要验证。免责声明本文为知识科普交流之用,不作为任何投资建议。关于SupraOraclesSupraOracles 是万事达卡区块链计划成员,入选过伯克利区块链加速器。项目旨在提供更快、更安全、更高吞吐量的去中心化跨链预言机解决方案。【SupraOracles 】团队也将持续为读者提供更有价值、更有深度的区块链行业内容跟干货。发布于 2022-08-12 11:01区块链技术节点​赞同 3​​添加评论​分享​喜欢​收藏​申请

节点和客户端 | ethereum.org

户端 | ethereum.org跳转至主要内容学习用法构建参与研究搜索​​​​语言 ZH帮助更新此页面本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。翻译页面没有错误!此页面未翻译,因此特意以英文显示。不再显示Change page概述基础主题以太坊简介以太币简介去中心化应用程序简介Web2 与 Web3 的对比帐户交易区块以太坊虚拟机 (EVM)操作码Gas费用节点和客户端运行节点客户端多样性节点即服务节点架构轻客户端归档节点引导节点网络共识机制工作量证明矿工挖矿算法Dagger-HashimotoEthash权益证明Gasper弱主观性认证权益证明机制的奖励和惩罚权益证明攻击与防御密钥权益证明与工作量证明提出区块权益正明常见问题以太坊堆栈堆栈简介智能合约智能合约语言智能合约结构智能合约库测试用智能合约编译智能合约部署智能合约验证智能合约升级智能合约智能合约安全性智能合约形式化验证可组合性开发网络开发框架以太坊客户端APIJavaScript API后端APIJSON-RPC数据和分析区块浏览器存储集成开发环境 (IDE)编程语言DartDelphi.NETGolangJavaJavaScriptPythonRubyRust语言高级链桥标准令牌标准ERC-20:同质化代币ERC-721:非同质化代币 (NFT)ERC-777ERC-1155ERC-4626最大可提取价值 (MEV)预言机缩放乐观卷叠零知识卷叠状态通道侧链以太坊 Plasma 扩容解决方案Validium数据可用性网络层网络地址门户网络数据结构与编码默克尔前缀树递归长度前缀编码 (RLP)简单序列化 (SSZ)Web3 密钥存储定义设计基础设计和用户体验简介节点和客户端上次修改时间: , 2024年1月25日查看贡献者在本页面前提条件什么是节点和客户端?客户端多样性跟踪网络中的节点节点类型全节点归档节点轻节点为什么应该运行以太坊节点?对你的好处对网络的好处运行你自己的节点替代方法执行客户端BesuErigonGo EthereumNethermind共识客户端LighthouseLodestarNimbusPrysmTeku同步模式执行层同步模式完全归档同步完全快照同步轻量同步共识层同步模式乐观同步检查点同步延伸阅读相关主题相关教程以太坊是一个由计算机组成的分布式网络,这些计算机运行可验证区块和交易数据的软件,称为节点。 该软件必须在你的计算机上运行,才能将其转化为以太坊节点。 一个节点由两个独立的软件(名为“客户端”)构成。前提条件在更深入地探索并运行自己的以太坊客户端实例之前,你应该先理解对等网络的概念和以太坊虚拟机基础知识。 请查看我们的以太坊简介。如果你不熟悉节点这一主题,我们建议你首先查看便于用户理解的运行以太坊节点介绍。什么是节点和客户端?“节点”是指任何以太坊客户端软件的实例,它连接到其他也运行以太坊软件的计算机,形成一个网络。 客户端是以太坊的实现,它根据协议规则验证数据并保持网络安全。 一个节点需要运行两种客户端软件:共识客户端和执行客户端。执行客户端(也称为执行引擎、EL 客户端或旧称“以太坊 1”客户端)侦听网络中广播的新交易,并在以太坊虚拟机中执行它们,并保存所有当前以太坊数据的最新状态和数据库。共识客户端(也称为信标节点、CL 客户端或旧称“以太坊 2”客户端)实现权益证明共识算法,使网络能够根据来自执行客户端的经验证数据达成一致。 此外还有名为“验证者”的第三种软件,它们可被添加到共识客户端中,使节点能参与保护网络安全。这些客户端软件相互协作,以追踪以太坊的链头,并允许用户与以太坊网络进行交互。 这种模块化设计被称作封装复杂性(opens in a new tab),它包含多个协同运作的软件。 此方法让无缝实施合并变得更简单,客户端软件更易于维护和开发,并且还能重复利用各个客户端(例如在二层网络生态系统当中)。 关联执行与共识客户端的简化图。客户端多样性不同团队开发的各种编程语言中都有执行客户端和共识客户端。多种客户端实现减少了对于单一代码库的依赖,使网络更强大。 它的理想目标是实现多样性,即没有任何客户端在网络中占据主导地位,从而排除潜在的单点故障。 语言多样化有助于拓宽开发者社区,并允许他们用自己喜欢的语言创建集成。了解有关客户端多样性的更多信息。这些实现的共同点是它们都遵循同一套规范。 这些规范规定了以太坊网络和区块链如何运作。 此外,它们还定义了每项技术细节,你可以在以下内容中了解这些规范:最初为以太坊黄皮书(opens in a new tab)执行规范(opens in a new tab)共识规范(opens in a new tab)在各种网络升级中实现的以太坊改进提案(opens in a new tab)跟踪网络中的节点多种跟踪器提供以太坊网络中节点的实时概览。 请注意,由于去中心化网络的性质,这些爬虫只能提供有限的网络视图,并且可能会报告不同的结果。节点地图(opens in a new tab)由 Etherscan 区块浏览器提供以太坊节点(opens in a new tab)由 Bitfly 提供以太坊节点爬虫(opens in a new tab)Nodewatch(opens in a new tab) 由 Chainsafe 提供,爬取共识节点节点类型如果你想运行自己的节点,就应该明白节点有几种类型并且使用数据的方式亦不同。 事实上,客户端可以运行三种类型的节点:轻节点、全节点和归档节点。 其他一些不同的同步策略选项还能缩短同步时间。 同步是指节点能以多快的速度获取最新的以太坊状态信息。全节点全节点对区块链进行逐块验证,包括下载和验证每个块的块体和状态数据。 全节点分多种类别——有些全节点从创世区块开始,验证区块链整个历史中的每一个区块。 另一些全节点则从更近期的区块开始验证,而且它们信任这些区块是有效的(如 Geth 的“快照同步”)。 无论验证从哪里开始,全节点只保留相对较新数据的本地副本(通常是最近的 128 个区块),允许删除比较旧的数据以节省磁盘空间。 旧数据可以在需要时重新生成。存储全部区块链数据(会定期修剪,所以全节点并不存储包含创世块在内的所有状态数据)参与区块验证,验证所有区块和状态。全节点可以从本地储存中检索所有状态,或从“快照”中重新生成。为网络提供服务,并应要求提供数据。归档节点归档节点是从创世块开始验证每个区块的全节点,它们从不删除任何下载的数据。存储全节点中保存的所有内容,并建立历史状态存档。 如果你想查询区块 #4,000,000 的帐户余额,或者想简单可靠地测试自己的一组交易而不使用跟踪挖掘它们,则需要归档节点。这些数据以太字节为单位,这使得归档节点对普通用户的吸引力较低,但对于区块浏览器、钱包供应商和链分析等服务来说则很方便。以归档以外的任何方式同步客户端将导致区块链数据被修剪。 这意味着,不存在包含所有历史状态的归档,但全节点能够在需要时构建它们。了解有关归档节点的更多信息。轻节点轻节点只下载区块头,而不会下载每个区块。 这些区块头包含区块内容的摘要信息。 轻节点会向全节点请求其所需的任何其他信息。 然后,轻节点可以根据区块头中的状态根独自验证收到的数据。 轻节点可以让用户加入以太坊网络,无需运行全节点所需的功能强大的硬件或高带宽。 最终,轻节点也许能在手机和嵌入式设备中运行。 轻节点不参与共识(即它们不能成为矿工/验证者),但可以访问功能和安全保障和全节点相同的以太坊区块链。轻客户端是以太坊积极发展的一个领域,我们预计很快就会看到共识层和执行层的新轻客户端。 一些潜在的途径可在广播网络(opens in a new tab)上提供轻客户端数据。 这些途径的优点在于,广播网络可以支持轻节点网络而不需要全节点来处理请求。以太坊目前还不支持大量轻节点,但轻节点支持是一个有望在不久的将来快速发展的领域。 特别是像 Nimbus(opens in a new tab)、Helios(opens in a new tab) 以及 LodeStar(opens in a new tab) 这样的客户端目前都非常关注轻节点。为什么应该运行以太坊节点?运行节点可以让你直接以去信任方式私密地使用以太坊,同时通过保持网络更加稳健和去中心化来支持网络。对你的好处运行你自己的节点使你能够以私密、自给自足的去信任方式使用以太坊。 你去信任网络,因为你可以使用自己的客户端验证数据。 “不要信任,直接验证”是一句在区块链领域非常流行的口头禅。你的节点根据共识规则独自验证所有交易和区块。 这意味着你不必依赖网络中的任何其他节点或完全信任它们。你可以将以太坊钱包与你自己的节点一起使用。 你可以更安全、更私密地使用去中心化应用程序,因为你不必将地址和余额泄露给中间商。 你可以用自己的客户端检查所有内容。 MetaMask(opens in a new tab)、Frame(opens in a new tab) 和许多其他钱包提供远程过程调用导入,这让它们可以使用你的节点。你可以运行和自我托管其他依赖于以太坊数据的服务。 例如,可以是信标链验证者、二层网络等软件、基础设施、区块浏览器、支付机构等。你可以提供自己的自定义远程过程调用端点。 你甚至可以公开地向社区提供这些端点,以帮助他们避免与大型中心化供应商合作。你可以使用进程间通信 (IPC) 连接到节点,或者重写节点将你的程序作为插件加载。 这样可以减少网络延迟,例如在使用 web3 库处理大量数据时或者当你需要尽快替换交易时(即抢先交易)会带来很大帮助。你可以直接质押以太币以保护网络并获得奖励。 请参见单独质押以便开始操作。对网络的好处多样化的节点对于以太坊的健康、安全和运行弹性非常重要。全节点强制执行共识规则,因此无法欺骗它们接受不遵循规则的区块。 这在网络中提供了额外的安全性,因为如果所有节点都是轻节点,不进行完整验证,验证者可能会攻击网络。如果遇到攻击并且攻破了权益证明加密经济防御,全节点可以执行社交恢复以选择跟随最诚实的链。网络中的节点越多,网络就更加多样化和更加健壮,这是去中心化的最终目标,可实现一个抗审查的可靠系统。全节点使依赖区块链数据的轻量级客户端能够访问这些数据。 轻节点不存储整条区块链,而是通过区块头中的状态根验证数据。 如果有需要,它们可以向全节点请求更多信息。如果你运行一个全节点,整个以太坊网络都会从中受益,即使你没有运行验证者。运行你自己的节点是否有兴趣运行你自己的以太坊客户端?如需适合初学者的简介,请访问我们的运行节点页面以了解更多信息。如果你是精通技术的用户,请深入了解有关如何启动你自己的节点的更多详细信息和选项。替代方法设置自己的节点会耗费你的时间和资源,但你并非总是需要运行自己的实例。 在这种情况下,你可以使用第三方应用程序接口提供商。 有关使用这些服务的概述,请查看节点即服务。如果有人在你的社区中运行带有公共应用程序接口的以太坊节点,你可以通过自定义的远程过程调用将你的钱包指向一个社区节点,并获得比一些随机的可信第三方更多的隐私保护。另一方面,如果你运行一个客户端,可以与可能需要它的朋友共享。执行客户端以太坊社区维护着多种开源的执行客户端(以前名为“以太坊 1 客户端”,或直接被称为“以太坊客户端”),它们由不同的团队使用不同的编程语言开发。 这使得网络更强大、更多样化。 它的理想目标是实现多样性,即没有任何客户端占据主导地位,从而减少任何单点故障。下表汇总了不同的客户端。 这些客户端均通过客户端测试(opens in a new tab)并得到积极维护,以保持与网络升级同步。客户端语言操作系统:网络同步策略状态缓冲Geth(opens in a new tab)GoLinux、Windows、macOS主网、Sepolia、Goerli快照、完全Archive、PrunedNethermind(opens in a new tab)C#、.NETLinux、Windows、macOS主网、Sepolia、Goerli 及其他快照(不提供服务)、快速、完全Archive、PrunedBesu(opens in a new tab)JavaLinux、Windows、macOSMainnet, Sepolia, Goerli, 以及更多快照、快速、完全Archive、PrunedErigon(opens in a new tab)GoLinux、Windows、macOSMainnet, Sepolia, Goerli, 以及更多完全Archive、PrunedReth(opens in a new tab)Rust 语言Linux、Windows、macOS主网、Sepolia、Goerli 及其他完全Archive、Pruned有关受支持网络的更多信息,请仔细阅读以太坊网络。每种客户端都有独特的用例和优势,所以你应该根据自己的偏好来选择。 多样性使得实现能够侧重于不同的功能和用户群。 你可能想根据功能、支持、编程语言或许可证选择一种客户端。BesuHyperledger Besu 是一种企业级以太坊客户端,面向公共网络和许可网络。 它运行所有以太坊主网功能(从追踪到 GraphQL),可进行大范围监控,并通过开放的社区渠道和企业级商用服务等级协议获得 ConsenSys 支持。 Besu 用 Java 语言编写,并依照 Apache 2.0 获得许可。Besu 提供内容丰富的文档(opens in a new tab),以指导你了解有关其功能和设置的所有详细信息。ErigonErigon 以前称为 Turbo‐Geth,最初是 Go Ethereum 的一个分叉,注重速度和磁盘空间效率。 它是一种完全重新设计的以太坊实现,目前用 Go 语言编写,但以其他语言编写的实现也在开发中。 Erigon 的目标是成为更快、模块化程度更高和更优化的以太坊实现。 它可以在 3 天内使用大约 2TB 的磁盘空间执行完整的存档节点同步。Go EthereumGo Ethereum(简称 Geth)是以太坊协议的原始实现之一。 目前,它是使用最为广泛的客户端,拥有最大的用户群,为用户和开发者提供各种工具。 Geth 用 Go 语言编写,完全开源,并依照 GNU LGPL v3 获得许可。在相关文档(opens in a new tab)中了解有关 Geth 的更多信息。NethermindNethermind 是使用 C# .NET 技术栈创建的以太坊实现,依照 LGPL-3.0 获得许可,可在包括 ARM 在内的所有主要平台上运行。 它的优越性能体现在:优化虚拟机状态访问联网和丰富的功能,如 Promethe/Graphana 仪表板、seq 企业日志支持、JSON RPC 跟踪和分析插件Nethermind 也有详细的相关文档(opens in a new tab)、强大的开发支持、在线社区,并为高级用户提供全天候支持。共识客户端有多种共识客户端(以前称为“以太坊 2 客户端”)支持共识升级。 它们负责所有共识相关的逻辑,包括分叉选择算法、处理认证与管理权益证明奖励及惩罚。客户端语言操作系统:网络Lighthouse(opens in a new tab)RustLinux、Windows、macOS信标链、Goerli、Pyrmont、Sepolia、Ropsten 等Lodestar(opens in a new tab)TypeScriptLinux、Windows、macOS信标链、Goerli、Sepolia、Ropsten 等Nimbus(opens in a new tab)NimLinux、Windows、macOS信标链、Goerli、Sepolia、Ropsten 等Prysm(opens in a new tab)GoLinux、Windows、macOS信标链、Gnosis、Goerli、Pyrmont、Sepolia、Ropsten 等Teku(opens in a new tab)JavaLinux、Windows、macOS信标链、Gnosis、Goerli、Sepolia、Ropsten 等LighthouseLighthouse 是一种共识客户端实现,它用 Rust 语言编写,并依照 Apache-2.0 获得许可。 它由 Sigma Prime 维护,自信标链创世以来一直保持稳定且可直接投入生产。 各类企业、质押池和个人都依赖它。 从台式电脑到复杂的自动化部署,Lighthouse 的目标是在各种环境中实现安全、高性能和互操作性。你可以在 Lighthouse 手册(opens in a new tab)中找到相关文档。LodestarLodestar 是一种生产就绪型共识客户端实现,它用 Typescript 语言编写,并依照 LGPL-3.0 获得许可。 它由 ChainSafe Systems 维护,是面向单独质押人、开发者和研究人员的最新共识客户端。 Lodestar 由信标节点和验证者客户端组成,并由以太坊协议的 JavaScript 实现提供支持。 Lodestar 旨在通过轻客户端提高以太坊的可用性,为更多开发者扩展可访问性,并进一步提高生态系统多样性。你可以在 Lodestar 网站(opens in a new tab)上了解更多信息。NimbusNimbus 是一种共识客户端实现,它用 Nim 语言编写,并依照 Apache-2.0 获得许可。 它是一种供单独质押人和质押池使用的生产就绪型客户端。 Nimbus 专为提高资源效率而设计,可同样轻松地在资源有限的设备和企业级基础设施上运行,并且不会影响稳定性或奖励性能。 更少的资源占用意味着客户端在网络处于压力下时具有更大的安全边际。在 Nimbus 相关文档(opens in a new tab)中了解更多信息PrysmPrysm 是一种功能齐全的开源共识客户端,它用 Go 语言编写,并依照 GPL-3.0 获得许可。 它具有可选的 Web 应用程序用户界面,并将单独质押人和机构用户的用户体验、相关文档和可配置性放在首位。访问 Prysm 相关文档(opens in a new tab)以了解更多信息。TekuTeku 是最早的信标链创世客户端之一。 除了常规目标(安全性、稳健性、稳定性、可用性、性能)外,Teku 还特别致力于恪守全部各类共识客户端标准。Teku 提供了非常灵活的部署选项。 信标节点和验证者客户端可以作为单个进程一起运行,这对于单独质押人来说非常方便;或者在处理复杂的质押操作时,节点也可以各自运行。 此外,Teku 实现了与 Web3Signer(opens in a new tab) 的完全互操作性,用于为密钥安全性签名并提供罚没防范措施。Teku 用 Java 语言编写,并依照 Apache 2.0 获得许可。 它由 ConsenSys 的 Protocols 团队开发,该团队还要对 Besu 和 Web3Signer 负责。 在 Teku 相关文档(opens in a new tab)中了解更多信息。同步模式为了追踪和验证网络中的最新数据,以太坊客户端需要与最新网络状态同步。 同步方法如下:从对等节点下载数据,用加密方法验证其完整性,并构建一个本地区块链数据库。同步模式代表了这个过程的不同方法,并进行了不同的折衷。 客户端在实现同步算法方面也各不相同。 有关实现的具体细节,请参考你所选客户端的官方文档。执行层同步模式完全归档同步完全同步下载所有区块(包括区块头、交易和收据),并通过执行从创世块开始的每个区块逐步生成区块链的状态。通过验证每笔交易,最大限度地减少信任并实现最高安全性。随着交易数量的增加,处理所有交易可能需要几天到几周时间。完全快照同步快照同步逐块验证区块链,就像完全归档同步一样;然而,有别于从创世块开始验证,它会从更近期的“可信”检查点开始验证,而该检查点已知是真实区块链的一部分。 节点会定期保存检查点,同时删除早于某个时间的数据。 快照用于在需要时重新生成状态数据,而不需要永久保存。最快的同步策略,目前是以太坊主网默认设置节省大量磁盘使用空间和网络带宽,同时不影响安全关于快照同步的更多信息(opens in a new tab)轻量同步轻客户端模式下载所有区块头和区块数据,并对其中一些进行随机验证。 仅从可信的检查点同步链的头部。仅获取最新状态,同时依赖于对开发者和共识机制的信任。客户端在几分钟内便可以使用当前网络状态。注意:轻量同步暂不支持权益证明以太坊,新版本轻量同步应该很快就会发布!关于轻客户端的更多信息共识层同步模式乐观同步乐观同步是一种合并后同步策略,专为选择加入和向后兼容而设计,允许执行节点通过已确立的方法进行同步。 执行引擎可以在不进行完全验证的情况下乐观地导入信标区块,找到最新区块头,然后使用上述方法开始同步链。 接着,在执行客户端更新之后,它将通知共识客户端信标链中交易的有效性。关于乐观同步的更多信息(opens in a new tab)检查点同步检查点同步也称为弱主观性同步,可提供卓越的信标节点同步用户体验。 它基于弱主观性假设,这使得信标链能够从最近的弱主观性检查点而不是从创世块开始同步。 检查点同步可大幅加快初始同步速度,其信任假设与从创世块同步类似。在实践中,这意味着你的节点会连接到远程服务,以下载最近的最终确定状态并从该点继续验证数据。 提供数据的第三方应该可信,因此要谨慎加以选择。关于检查点同步(opens in a new tab)的更多信息延伸阅读你可以在互联网上找到大量关于以太坊客户端的信息。 以下是一些可能有用的资源。以太坊 101 - 第二部分 - 了解节点(opens in a new tab) – Wil Barnes,2019 年 2 月 13 日运行以太坊全节点:勉励者指南(opens in a new tab) – Justin Leroux,2019 年 11 月 7 日相关主题区块网络相关教程通过写入 MicroSD 卡将树莓派 4 变成验证者节点 – 安装指南 – 写入你的树莓派 4,插入网线,连接固态硬盘并给设备供电,将树莓派 4 变成运行执行层(主网)和/或共识层(信标链/验证者)的以太坊全节点。back-to-top ↑本文对你有帮助吗?是否前一页Gas费用下一页运行节点编辑页面(opens in a new tab)在本页面前提条件什么是节点和客户端?客户端多样性跟踪网络中的节点节点类型全节点归档节点轻节点为什么应该运行以太坊节点?对你的好处对网络的好处运行你自己的节点替代方法执行客户端BesuErigonGo EthereumNethermind共识客户端LighthouseLodestarNimbusPrysmTeku同步模式执行层同步模式完全归档同步完全快照同步轻量同步共识层同步模式乐观同步检查点同步延伸阅读相关主题相关教程网站最后更新: 2024年2月16日(opens in a new tab)(opens in a new tab)(opens in a new tab)使用以太坊查找钱包获取以太币Dapps - 去中心化应用二层网络运行节点稳定币质押ETH学习学习中心什么是以太坊?什么是以太币 (ETH)?以太坊钱包Gas fees以太坊安全和预防欺诈措施什么是 Web3?智能合约以太坊能源消耗以太坊路线图以太坊改进提案 (Eip)以太坊的历史以太坊白皮书以太坊词汇表以太坊治理区块链桥零知识证明测试中心开发者开始体验相关文档教程通过编码来学习设置本地环境生态系统社区中心以太坊基金会以太坊基金会的博客(opens in a new tab)生态系统支持方案(opens in a new tab)以太坊漏洞悬赏计划生态系统资助计划以太坊品牌资产Devcon(opens in a new tab)企业级应用主网以太坊私密以太坊企业级应用关于ethereum.org关于我们工作机会参与贡献语言支持隐私政策使用条款缓存政策联系我们(opens in a new t

叶胜超:一分钟搞懂节点以及全节点!(23) - 知乎

叶胜超:一分钟搞懂节点以及全节点!(23) - 知乎首发于叶胜超区块链切换模式写文章登录/注册叶胜超:一分钟搞懂节点以及全节点!(23)叶胜超区块链爱好者,《微信营销独孤九剑》作者什么是节点?节点,英文:Node,是网络节点的简称,在比特币系统中,负责记帐的是计算器,因此我们可以把参与记帐的每一台计算机称为一个节点。节点分为“全节点”和“轻节点”,全节点就是拥有全网所有交易数据的节点,轻节点就是只拥有和自己相关的交易数据节点。在比特币网络中的每一个全节点,就相当于存储所有区块链数据的每一台计算器或服务器,所有新区块的生产,以及交易的验证与记帐,并将其广播给全网同步,都由全节点来完成。由于每一个全节点都保留着全网数据,这意味着,其中一个节点出现问题,整个区块链网络世界也依旧能够安全运行,这也是去中心化的魅力所在。全节点有什么特点?1.每个节点都有一个完整的账本副本,因此所有交易数据公开透明,系统中的人都可以看到。2.每个节点的权利是一样的,任意节点被摧毁,都不会影响到整个系统的安全,也不会造成数据丢失。3.每个节点的账本数据是完全一样的,也就意味着,单个节点的数据篡改是没有任何意义的。全节点与轻节点有什么区别?全节点的数目越多越好,有条件都可以下载一个官方的全节点钱包,这对区块链网络的安全至关重要,他们负责交易的广播和验证,从而维护整个系统的稳定运行。而轻节点不会对网络的安全性做出任何贡献,因为它们不会下载任何区块链的副本,也不会参与任何验证过程与区块链交易认证过程,轻节点只是方便使用钱包,也需要依赖于其他全节点来提供需要的信息。此文属于叶胜超区块链基础普及系列,作者:叶胜超,转载请注明出处,谢谢!关注叶胜超,每天了解一个知识点,日积月累变老鸟!投资箴言:行情总在绝望中诞生,在半信半疑中成长,在憧憬中成熟,在希望中毁灭。作者简介:我是叶胜超,一个把自己姓名当成品牌经营的终身学习者,一个坚持每天5点起床跑步的终身践行者.希望和你成为朋友,我的微信:shengchao8 (公众号/微博:叶胜超区块链)熊市学习,牛市赚钱,学习区块链,百度“叶胜超区块链”,希望和你在熊市一起学习,一起成长。如果你想倾家荡产,有四大捷径:追涨杀跌;期货杠杆;融资融币;短线神操作。当然,人生颠峰也有四条大道:踏实工作;闲钱投资;熊市定投 ,牛市定抛;按时吃饭睡觉。此乃币圈生存法则,非绝世高手不得无视,币圈一天,人间十年,其凶残程度古今罕有,谨记生存法则可保不死!发布于 2019-09-25 09:00节点​赞同 2​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录叶胜超区块链叶胜超区块链,为学习区块链而生的

什么是区块链技术?- 区块链简介 - AWS

什么是区块链技术?- 区块链简介 - AWS

跳至主要内容

单击此处以返回 Amazon Web Services 主页

联系我们

支持 

中文(简体) 

我的账户 

登录

创建 AWS 账户

re:Invent

产品

解决方案

定价

文档

了解

合作伙伴网络

AWS Marketplace

客户支持

活动

探索更多信息

关闭

عربي

Bahasa Indonesia

Deutsch

English

Español

Français

Italiano

Português

Tiếng Việt

Türkçe

Ρусский

ไทย

日本語

한국어

中文 (简体)

中文 (繁體)

关闭

我的配置文件

注销 AWS Builder ID

AWS 管理控制台

账户设置

账单与成本管理

安全证书

AWS Personal Health Dashboard

关闭

支持中心

专家帮助

知识中心

AWS Support 概述

AWS re:Post

单击此处以返回 Amazon Web Services 主页

免费试用

联系我们

re:Invent

产品

解决方案

定价

AWS 简介

入门

文档

培训和认证

开发人员中心

客户成功案例

合作伙伴网络

AWS Marketplace

支持

AWS re:Post

登录控制台

下载移动应用

什么是云计算?

云计算概念中心

Amazon Managed Blockchain

区块链

什么是区块链技术?

创建 AWS 账户

什么是区块链技术?

为什么区块链很重要?

不同行业如何使用区块链?

区块链技术具有哪些功能?

区块链技术包含哪些关键组件?

区块链的工作原理是什么?

区块链网络有哪些类型?

什么是区块链协议?

区块链技术是如何发展的?

区块链技术有哪些好处?

比特币与区块链之间有什么区别?

数据库与区块链之间有什么区别?

区块链与云有什么区别?

什么是区块链即服务?

什么是 AWS 区块链服务?

什么是区块链技术?

区块链技术是一种高级数据库机制,允许在企业网络中透明地共享信息。区块链数据库将数据存储在区块中,而数据库则一起链接到一个链条中。数据在时间上是一致的,因为在没有网络共识的情况下,您不能删除或修改链条。因此,您可以使用区块链技术创建不可改变的分类账,以便跟踪订单、付款、账户和其他交易。系统内置的机制可以阻止未经授权的交易条目并在这些交易的共享视图中创建一致性。

为什么区块链很重要?

传统数据库技术为记录金融交易带来了很多难题。例如,在房地产销售领域。在交换资金后,房地产的所有权将转移给买方。买卖双方中的任何一方均可记录货币交易,但任何一方的来源均不可信。即便卖方已收款,也可轻松声称他们未收款;同样,即便买方未付款,也可辩称他们已付款。

为了避免潜在的法律问题,需要一个可信的第三方负责监督和验证交易。这种中央机构的存在,不仅会使交易复杂化,还会造成单点漏洞。如果该中央数据口遭到入侵,双方都有可能蒙受损失。

区块链通过创建去中心化的防篡改系统来记录交易,可以缓解此类问题。在房地产交易场景中,区块链可分别为买方和卖方创建一个分类账。所有交易都必须获得双方批准,并将在双方的分类账中实时更新。历史交易中的任何损坏都会导致整个分类账损坏。区块链技术的这些属性以使其用于各个行业部类,包括比特币 (Bitcoin) 等数字货币的创造。

不同行业如何使用区块链?

区块链是一种新兴技术,很多行业都以创新方式采用了此技术。我们将在以下小节中介绍不同行业中的一些使用案例:

能源

多家能源公司使用区块链技术创建点对点能源交易平台,并简化可再生能源的获得。例如,考虑以下用途:

多家基于区块链的能源公司创建了交易平台,用于个人之间的电力销售。拥有太阳能电池板的业主使用此平台将其多余的太阳能销售给邻居。该流程大部分是自动化的:智能电表创建交易,区块链则记录交易。

借助基于区块链的众筹计划,用户可在缺乏能源获得途径的社区内赞助和拥有太阳能电池板。在太阳能电池板建好后,赞助商还可以向这些社区收取租金。

金融

传统金融系统(如银行和证券交易所)使用区块链服务来管理在线支付、账户和市场交易。例如,新加坡交易所(Singapore Exchange Limited)是一家在整个亚洲提供金融交易服务的投资控股公司,该公司使用区块链技术构建了更高效的跨行支付账户。通过采用区块链,该公司解决了多个难题,包括数千项金融交易的批处理和手动对账。

媒体和娱乐

多家媒体和娱乐公司使用区块链系统来管理版权数据。版权验证对于艺术家的公平补偿至关重要。需要多次交易才能记录版权内容的销售或转让。 日本索尼音乐娱乐公司(Sony Music Entertainment Japan)使用区块链服务使数字版权管理更加高效。该公司成功使用区块链策略提高了版权处理效率并降低了成本。

零售

多家零售公司使用区块链跟踪商品在供应商与买家之间的转移。例如,Amazon 零售为一套分布式分类账技术系统申请了专利,该系统使用区块链技术来验证并确保在该平台上销售的所有商品均为正品。Amazon 卖家可以通过允许参与者(如制造商、快递公司、分销商、最终用户和二级用户)向证书颁发机构注册后将事件添加到分类账,映射其全球供应链。 

区块链技术具有哪些功能?

区块链技术具有以下主要功能:

去中心化

区块链中的去中心化是指将控制权和决策权从中心化实体(个人、组织或团体)转让给分布式网络。去中心化区块链网络使用透明度来减少对参与者之间取得信任的需要。这些网络还以削弱网络功能性的方式,阻止参与者彼此施加权力或控制。

不可变性

不可变性是指某些内容不能更改或改变。一旦某个参与者将交易记录到共享分类账中,则任何参与者均不能篡改该交易。如果某个交易记录包含错误,则您必须添加新交易以修正错误,并且整个网络均可看见这两个交易。

共识

区块链系统将建立关于参与者就记录交易达成共识的规则。仅当网络中的大部分参与者都同意时,才能记录新交易。

区块链技术包含哪些关键组件?

区块链架构包含以下主要组件:

分布式分类账

分布式分类账是区块链网络中用于存储交易的共享数据库,如团队中的每个人均可编辑的共享文件。在大多数共享文本编辑者中,任何拥有编辑权限的人员均可删除整个文件。但分布式分类账技术对于谁能编辑以及如何编辑具有严格规则。一旦条目已被记录,您就无法删除它们。

智能合约

很多公司使用智能合约来自行管理业务合约,而不需要第三方的帮助。智能合约是存储在区块链系统上的程序,这些程序将在符合预先确定的条件时自动运行。这些程序将运行条件语句检查,以便能够放心地完成交易。例如,某家物流公司可能拥有一份智能合约,约定一旦商品抵达港口将自动进行付款。

公钥加密

公钥加密是一种安全功能,用于唯一标识区块链网络中的参与者。此机制将为网络成员生成两组密钥。一组密钥是公钥,对于网络中的每个人都是公用的。另一组密钥是私钥,对于每个成员都是唯一的。私钥与公钥配合使用,解锁分类账中的数据。 

例如,John 和 Jill 是网络中的两个成员。John 记录了一项交易,并用其私钥进行了加密。Jill 可以使用其公钥解密该交易。通过这种方式,Jill 可以确信 John 进行了该交易。如果 John 的私钥已被篡改,则 Jill 的公钥不会发挥作用。

区块链的工作原理是什么?

虽然区块链的底层机制非常复杂,我们将通过以下步骤提供简要概述。区块链软件可以自动执行以下大部分步骤:

第 1 步 – 记录交易

区块链交易显示实体资产或数字资产从区块链网络中的一方向另一方的转移。该交易以区块的形式记录,可能包括如下细节:

谁参与了该交易?

交易期间发生了什么情况?

交易是在何时进行的?

交易是在哪里进行的?

为什么进行该交易?

交换了多少资产?

交易期间符合多少前提条件?

第 2 步 – 达成共识

分布式区块链网络中的大多数参与者必须就已记录的交易是有效的达成一致。根据网络类型,达成协议的规则可能有所不同,但通常是在网络开始建立时就制定好的。

第 3 步 – 将区块链接起来

一旦参与者达成了共识,会将区块链中的交易写入区块,区块就相当于分类账账簿中的页面。连同交易一起,还会将一个加密哈希附加到新区块。该哈希作为将区块链接在一起的链条。如果有意或无意修改了区块的内容,则该哈希值也将更改,这将提供一种检测数据篡改的方式。 

因此,区块将与链条安全地链接在一起,且您无法编辑它们。每增加一个区块,都会强化前一个区块的验证,因而也会强化整个区块链的验证。这就像是堆砌木块建塔一样。您只能在前一层木块之上堆叠木块,如果您从塔的中间取出一个木块,则整座塔将垮塌。

第 4 步 – 共享分类账

该系统会将中心分类账的最新副本分发给所有参与者。

区块链网络有哪些类型?

有四种主要类型的去中心化或分布式区块链网络:

公有区块链网络

公有区块链无需权限,任何人均可加入它们。此类区块链的所有成员享有读取、编辑和验证区块链的平等权限。人们主要将公有区块链用于交换和挖掘加密货币,如比特币、以太坊 (Ethereum) 和莱特币 (Litecoin)。 

私有区块链网络

一个组织可以控制多个私有区块链,又称为托管式区块链。该机构决定谁能成为成员,以及他们在该网络中拥有哪些权限。私有区块链只是部分去中心化,因为它们具有访问限制。Ripple 就是一个私有区块链的示例,它是一个面向企业的数字货币交换网络。

混合区块链网络

混合区块链结合了私有网络和公有网络的元素。公司可随公有系统一起建立私有、基于权限的系统。通过这种方法,公司可以控制对区块链中存储的特定数据的访问,同时保持其余数据处于公开状态。公司使用智能合约允许公有成员检查私有交易是否已经完成。例如,混合区块链可以授予对数字货币的公有访问权限,同时保持银行拥有的货币处于私有状态。

联盟区块链网络

联盟区块链网络由一组组织负责监管。多家预先选择的组织共同承担维护区块链及确定数据访问权限的职责。对于其中很多组织拥有共同目标并可通过共担责任而获益的行业,通常更喜欢联盟区块链网络。例如,全球航运业务网络联盟 (Global Shipping Business Network Consortium) 是一个非营利性区块链联盟,该联盟致力于实现航运业数字化,以及加强海运业运营商之间的合作。

什么是区块链协议?

术语区块链协议一词是指可用于应用程序开发的不同类型的区块链平台。每种区块链协议都采用基本区块链原则来适应特定行业或应用需求。以下小节提供了一些区块链协议的示例:

Hyperledger Fabric

Hyperledger Fabric 是一个开源项目,包含一套工具和库。企业可以使用它来迅速有效地构建私有区块链应用程序。它是一种模块化通用框架,提供独特的身份管理和访问控制功能。这些功能使其非常适合各种应用,如供应链的跟踪和追踪、贸易金融、忠诚度和奖励,以及金融资产的清算结算。

以太坊

以太坊是一种去中心化开源区块链平台,人们可以将其用于构建公有区块链应用程序。企业以太坊 (Ethereum Enterprise) 专为企业使用案例而设计。

Corda

Corda 是一种专为企业而设计的开源区块链项目。借助 Corda,您可以构建可互操作的区块链网络,用于在严格保密的情况下进行交易。企业可以使用 Corda 的智能合约技术直接进行有价值的交易。其大部分用户是金融机构。

Quorum

Quorum 是一种源自以太坊的开源区块链协议。该协议专为在两种区块链网络中使用而设计:私有区块链网络,其中只有一个成员拥有所有节点;或者联盟区块链网络,其中包含多个成员,每个成员拥有该网络的一部分。

区块链技术是如何发展的?

区块链技术起源于 1970 年代末,当时一位名为 Ralph Merkle 的计算机科学家申请了哈希树(又名 Merkle 树)的专利。这些树是一种计算机科学结构,通过使用加密将区块链接起来,用于存储数据。在 1990 年代末,Stuart Haber 和 W. Scott Stornetta 使用 Merkle 树实现了无法篡改文档时间戳的系统。这是区块链历史上的首个实例。

该技术一直在不断发展,已经经过以下三代:

第一代 – 比特币和其他虚拟货币

2008 年,一个仅知道名字为中本聪 (Satoshi Nakamoto) 的匿名个人或团体,概述了区块链技术的现代形态。中本聪的比特币区块链理念将 1 MB 信息区块用于比特币交易。比特币区块链系统的很多功能,即便是今天也仍处于区块链技术的中心地位。

第二代 – 智能合约

在第一代加密货币出现后的几年,开发人员开始考虑加密货币以外的区块链应用。例如,以太坊的发明者们决定在资产转让交易中使用区块链技术。他们的重要贡献就是智能合约功能。

第三代 – 未来

随着众多公司发现和实现新应用,区块链技术也在不断发展和成长。很多公司正在解决规模和计算能力的限制,在正在进行的区块链革命中,潜在机会是无限的。

区块链技术有哪些好处?

区块链技术可为资产交易管理带来很多好处。我们将在以下小节中列出其中部分好处:

高级安全功能

区块链系统可以提供现代数字交易所需的高级安全和信任功能。对于有人会操纵底层软件为自己生成假币的恐惧始终存在。但区块链使用加密、去中心化和共识三项原则,创建了高度安全、几乎不可能篡改的底层软件系统。不会有单点故障,并且单个用户也无法更改交易记录。

更高的效率

企业间交易可能需要大量时间,还会造成运营瓶颈,尤其是在涉及合规和第三方监管机构时。区块链中的透明度和智能合约可使此类业务交易更快捷、更高效。

更快捷的审计

企业必须能以可审计的方式,安全地生成、交换、归档和重建电子交易。区块链记录按时间顺序不可变,这意味着所有记录均始终按时间顺序排列。这样的数据透明使得审计过程更加快捷。

比特币与区块链之间有什么区别?

比特币与区块链可以互换使用,但它们是两种不同的事物。由于比特币是区块链技术的早期应用,人们无意间开始使用比特币来指代区块链,因而造成了这种误用。但除比特币外,区块链技术还有很多应用。

比特币是一种在没有任何中心化控制的情况下运营的数字货币。最初创建比特币的目的在于在线进行金融交易,但现在已被视为可转换为任何其他全球货币(如美元或欧元)的数字资产。公有比特币区块链网络将创建和管理中心分类账。 

比特币网络

公有分类账记录所有比特币交易,而世界各地的众多服务器则保存此分类账的副本。这些服务器就像银行。只是每个银行仅了解其客户兑换的资金,而比特币服务器则了解世界上的每一笔比特币交易。

任何拥有闲置计算机的人员均可搭建一台此类服务器,称为节点。这就像是开设您自己的比特币银行,而不是银行账户。

比特币挖矿

在公有比特币网络上,成员通过求解加密方程来创建新区块,以挖掘加密货币。该系统将向该网络公开广播每一笔新交易,并在各节点间共享这一信息。每十分钟左右,挖矿者会将这些交易收集到一个新区块中,再将这些新区块永久添加到区块链中,该区块链就像比特币的最终账簿。

由于软件进程的复杂性,因此挖矿需要大量计算资源,并且需要很长时间。作为交换,挖矿者可以赚取少量加密货币。挖矿者相当于记录交易并收取交易费用的现代职员。

该网络上的所有参与者都将使用区块链加密技术,就谁拥有哪些比特币达成共识。

数据库与区块链之间有什么区别?

区块链是一种特殊类型的数据库管理系统,拥有比常规数据库更多的功能。我们将在下面的列表中介绍传统数据库与区块链之间的一些重要区别:

区块链去中心化控制,而不会破坏现有数据中的信任。这在其他数据库系统中是不可能实现的。

参与交易的公司无法共享其整个数据库。但在区块链网络中,每家公司都拥有其分类账副本,并且该系统将自动维护两份分类账之间的一致性。

虽然在大多数数据库系统中,您都可以编辑或删除数据,但在区块链中,您只能插入数据。

区块链与云有什么区别?

术语云一词是指可以在线访问的计算服务。您可以通过云访问软件即服务 (SaaS)、产品即服务 (PaaS) 和基础设施即服务 (IaaS)。云提供商负责管理其硬件和基础设施,并为您提供通过互联网访问这些计算资源的权限。他们还会提供更多其他资源,而不只是数据库管理。如果您想加入公有区块链网络,则需提供您的硬件资源,用于存储您的分类账副本。您也可以将云上的服务器用于此目的。有些云提供商也在云上提供完整的区块链即服务 (BaaS)。

什么是区块链即服务?

区块链即服务 (BaaS) 是第三方在云上提供的一种托管式区块链服务。您可以开发区块链应用程序和数字服务,而云提供商则提供基础设施和区块链构建工具。您要做的就是自定义现有区块链技术,以便更快捷、更高效地采用区块链。   

什么是 AWS 区块链服务?

AWS 区块链服务提供多种专门构建的工具,以满足您的要求。您可以使用这些服务构建从中心化分类账数据库(维护不可变的交易记录)到多方、完全托管式区块链网络(帮助消除中介机构)的一切。AWS 拥有众多来自合作伙伴的经过验证的区块链解决方案,可为所有主要区块链协议提供支持,包括 Hyperledger、Corda、以太坊、Quorum 等。因此,您可以借助 AWS 更轻松、更快捷、更高效地开发区块链和分类账应用程序。部分有用的 AWS 区块链服务如下:

Amazon Quantum Ledger Database(QLDB)是一种完全托管式分类账数据库,提供了一个透明、不可变、可以加密方式验证的交易日志。它包含一个内置日志,用于存储每个准确且已排序的数据更改条目。该日志为仅追加型,这意味着用户可以向该日志添加数据,但不能覆盖或删除数据。 

Amazon Managed Blockchain 是一种完全托管式服务,让您可以使用 Hyperledger Fabric 和以太坊轻松加入公有网络或创建和管理可扩展的私有网络。立即创建 AWS 账户开始使用区块链。

“什么是 Amazon Managed Blockchain?”视频

什么是 AWS 上的区块链?

相关 AWS 产品

排序依据

服务名称

服务名称

产品类别

推出日期(由新到旧)

启动日期(先为最旧)

未找到任何结果

1

AWS 的后续步骤

查看其他与产品相关的资源

了解关于区块链服务的更多信息 

注册免费账户

立即享受 AWS 免费套餐。

注册 

开始在控制台中构建

在 AWS 管理控制台中开始构建。

登录 

登录控制台

了解有关 AWS 的信息

什么是 AWS?

什么是云计算?

AWS 包容性、多样性和公平性

什么是 DevOps?

什么是容器?

什么是数据湖?

AWS 云安全性

最新资讯

博客

新闻稿

AWS 资源

入门

培训和认证

AWS 解决方案库

架构中心

产品和技术常见问题

分析报告

AWS 合作伙伴

AWS 上的开发人员

开发人员中心

软件开发工具包与工具

运行于 AWS 上的 .NET

运行于 AWS 上的 Python

运行于 AWS 上的 Java

运行于 AWS 上的 PHP

运行于 AWS 上的 JavaScript

帮助

联系我们

获取专家帮助

提交支持工单

AWS re:Post

Knowledge Center

AWS Support 概览

法律人员

亚马逊云科技诚聘英才

创建账户

Amazon 是一个倡导机会均等的雇主:

反对少数族裔、妇女、残疾人士、退伍军人、性别认同和性取向歧视。

语言

عربي

Bahasa Indonesia

Deutsch

English

Español

Français

Italiano

Português

Tiếng Việt

Türkçe

Ρусский

ไทย

日本語

한국어

中文 (简体)

中文 (繁體)

隐私

|

网站条款

|

Cookie 首选项

|

© 2023, Amazon Web Services, Inc. 或其联属公司。保留所有权利。

终止对 Internet Explorer 的支持

知道了

AWS 对 Internet Explorer 的支持将于 07/31/2022 结束。受支持的浏览器包括 Chrome、Firefox、Edge 和 Safari。

了解详情 »

知道了

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

区块链是什么,如何简单易懂地介绍区块链? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册生活调查类问题货币金融区块链(Blockchain)区块链是什么,如何简单易懂地介绍区块链?关注者44,299被浏览13,192,457关注问题​写回答​邀请回答​好问题 211​56 条评论​分享​1,505 个回答默认排序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​赞同 4824​​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​赞同 6843​​554 条评论​分享​收藏​喜欢

区块链(数据结构)_百度百科

数据结构)_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科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

区块链 - 知乎

区块链 - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册区块链定义: 区块链由一个共享的,容错的分布式数据库和多节点网络组成。...查看全部内容关注话题​管理​分享​索引百科讨论精华视频等待回答详细内容概述定义: 区块链由一个共享的,容错的分布式数据库和多节点网络组成。在区块链数据库中,数据仅可通过共识算法以块的形式增加,不可修改或删除,以防止篡改;每个区块至少会包含一个块生成时间和出块签名;所有的交易数据都会被双方签名,以防止抵赖;传统区块链中,新增区块中储存上一个区块的hash,并通过此hash与上一个区块相连在区块链多节点网络中,所有节点都有浏览区块的权限,但是并不能完全控制区块所有节点都有验证区块,参与共识,并通过共识增加数据的权利通过区块链可以实现不依赖授信第三方的数据记录和链上数据溯源通过peer-to-peer网络的数据通信和可信价值交换对所有面向系统中心控制者的攻击都有非常强的抵抗能力潜在应用:物联网互联网医疗云储存安全领域,如授权,可信服务提供互联网金融等可以认为,一切存在中心化账本的技术都可能有区块链应用前景,这是一种效率和信任的交换,但是需要注意这种交换不一定所有应用都值得。应用实例:由日本Morgen银行和ripple等提供的快速,安全,便捷的国际转账服务.SWIFT自己正在建立的区块链网络,加速国际转账IBM建立的supply chain,探索潜在服务比特币构成技术:P2P技术: 点对点数据传输,BT协议的支撑技术。共识算法:区块链能够保证不可篡改,数据可信的核心。椭圆加密算法,公私钥体系,数字签名等密码学算法。Merkle树:区块链数据储存的数据结构。下文中将介绍我认为不可替代的一些技术: 共识算法,加密/签名,P2P。更多的请各位自己在网上查询。前言个人觉得,区块链不是一项新技术,而是多种网络技术组合来解决一个新问题,而这个新问题的核心是共识算法。我知道在知乎回答区块链问题一定要做好唇枪舌战的的准备,毕竟知乎的“政治正确”是区块链都是骗子,而“区块链”这个话题甚至已经变成了一个各种公众号炒币的金融话题,完全脱离了本质。但是我思来想去还是决定把我自己理解的区块链技术写下来,毕竟这是有可能会改变一些东西的一项技术。请注意,本文只想以一种客观的角度来描述区块链技术,请评论也仅限于技术问题,不讨论政治,哲学和其他,我保留删评论的权利。区块链的最主要技术进步是,实践证明了在同步通信的情况下,参与节点不受限的拜占庭问题近似可解。谈到区块链现在呈现鲜明的两派,毁誉参半。这是因为早期比特币参与者,所谓的币圈大佬良莠不齐,诈骗者居多造成的,首先在这里有必要澄清一些过度传销引起的误解。区块链是一项颠覆性技术。是一种革命。 这是错误的,区块链是一种效率和信任的交换,并不是革命,也不一定适用于所有问题。区块链是“去中心化”的,“智能合约”是智能的。实际上,decentralized这个词既没有在比特币论文出现过,也不应该被翻译为“去中心化”,我个人比较喜欢台湾地区的“分散式”这个翻译。2016年6月W3C的区块链会议上,以太坊核心开发团队就表示不再使用这个词,而完全的去中心化会导致效率十分低下,是不可行的。区块链的核心是分布式。智能合约(smart contract)这个词,翻译的非常不恰当。英文里"smart"的意思是”敏捷“,"intelligent"的意思才是智能,"smart contract"是为了帮助程序员快速完成区块链应用开发。现在有很多人望文生义,这也很不合适。区块链完全是一种分布式数据库。区块链采用了分布式数据库的特征,但是为了达成强数据一致性和不可篡改,牺牲了很多分布式数据库的优点,当然也带来了一些分布式数据库没有的特性。技术有其应用前景,在不成熟之前就接受大众投资是非常不明智的行为。背景2009年, Satoshi Nakamoto建立了第一个区块链系统,比特币,这是一种点对点电子现金系统,主要为了支持资金交易。此后,区块链系统随着数字货币的爆发迅速发展,功能各种各样。此后,随着ETH的发展,smart contract给区块链的发展带来了极大的技术变革,它帮助应用开发者缩短了开发时间。这是区块链发展史上目前两个非常重要的节点。现在在不同领域,存在各种各样的区块链系统正在开发,或者正在运行,或者正在探索应用前景。区块链的p2p通信方式,密码学加密/签名并不是重点,已经有了很多解释,我们着重讲一下区块链里的共识算法。挖矿/共识算法挖矿是一种创造区块的过程,这种区块是可以被验证并添加进分布式数据库的数据块。在一些区块链系统中,比如比特币和ETH,矿工可以通过挖矿从系统获得奖励。在所以区块链系统中,挖矿都是一个最核心的概念,试图参与挖矿过程的节点被称为矿工。理论上,每个可接入区块链的节点都有成为矿工的权利,但是它们不一定有机会成为矿工。挖矿是一种周期性的竞争行为,根据共识算法不同,对于每个挖矿周期,从矿工中选择“优胜者”的方式也有所不同,通常我们称这些“优胜者”为当前周期“出块者”。这种共识算法通常被理解成为“多数人共识”,而如何在网络中定义“人”这一过程,在不同共识算法中有所不同。目前存在很多种共识算法来决定这一过程:工作量证明(Proof of Work): PoW是比特币中使用的共识算法,当然目前也有很多其它区块链系统应用PoW。它需要矿工参与一场困难的周期性的数学竞赛(比特币中具体为计算指定0数目的hash值),这场数学竞赛难以计算但是易于验证。一旦有某个矿工计算出了结果,它将用这个结果和这段时间自己从网络中收集的交易信息一起打包,形成当前区块,并把此区块广播至区块链节点网络。每个节点都可以验证竞赛结果和区块中的交易信息,如果验证成功,节点会添加这个区块进自己的区块链数据库。所有节点完成新区块验证和添加的时间之和应当小于竞赛周期。因为需要参与数学禁赛,这场竞赛比较的是计算能力。PoW共识算法认为,单位计算能力就是互联网上的一个“人”。于是,如果攻击方的算力大于参与竞赛所有算力的50%,才可以攻击成功。(实际情况下,考虑到网络延迟等因素,攻击成功的算力门限要低于50%)。股权证明(Proof of Stake) : PoS并不要求矿工参与计算复杂的数学问题,实际上,它采用一种伪随机的方式,根据每个账户持有“Stake“的多少来选择每一轮的“出块人”,持有股票越多,概率越大。PoS算法认为每一份“Stake”或者“Value”的持有者是互联网上的一个“人”,持有股票才代表此“人”对网络潜在恶意不大。当然,与PoW同理,如果持有股票的”50%“以上,才有攻击网络的能力。最初的PoS版本不奖励出块人,它会导致持有者没有参与挖矿的动力,所以,现在的PoS共识都加入了对出块人的奖励,然而这依然存在“无利益攻击“等潜在的攻击方式。容量证明(Proof of Space): PoSpace类似于PoW共识,但是它要求大容量的硬盘空间。矿工通过向硬盘中写入指定大小的数据,来参与挖矿竞赛。换句话说,单位硬盘空间被认为是网络中的一个“人” ,PoSpace已经被提出了一段时间,但是目前应用还不多。重要性证明(Proof of Importance): PoI是矿工通过节点的交易数量和账单来向网络证明自己重要性的共识算法,换句话说,单位交易记录被认为是网络中的一个“人”,但是这种共识算法很容易被机器人刷单攻击。随机数算法:通常,如果不考虑经济模型,区块链的共识算法是为了通过一种足够随机的方式选出“出块者”,并通过随机性使下一轮“出块者”难以预测。因此,存在很多在区块链网络制造随机数的共识算法,比如最小块哈希(Minimum Block Hash)和Algorand共识,它们并没有通过与经济模型的结合,降低矿工攻击网络的动机。实用拜占庭容错(PBFT):PBFT是一种拜占庭问题解决方案,也是密码学中 “多数人共识“的主要获得方式。PBFT每轮选择出块节点,该节点生成的区块需要通过一系列复杂的表决方式获得至少2/3参与共识节点的同意。PBFT的优点是,当块产生之后不需要其他节点验证,也就是说不会出现其他节点“不同意”这轮竞赛结果或者区块内交易信息的问题。因此,PBFT算法极其变种,几乎不存在“分叉问题”, 所有节点出块即最终块。而PBFT的最大问题是,共识算法的时间复杂度会随着加入节点的增加而大幅度增长,通常认为PBFT难以服务25个以上的参与共识节点。因此,所有采用PBFT的区块链必须首先通过一些规则”选举“出参与共识的代表。所以,这是一种利用“被选举出的人做出的小范围共识”代替“大多数人共识”的共识算法,当然实践上这是可行的。比较典型的区块链是NEO和Hyperledger。需要补充说明的是,1,2,3,4 的系列算法中都存在“分叉问题”,每轮竞赛之后,优胜者出块可能存在被其他节点拒绝的情况,这时会导致区块链数据库在某些节点不同步,即“分叉”,这些算法的解决方案是寻找“最长链”的节点数据库,并与之同步。加密/签名依靠密码学的加密和签名技术是区块链中身份唯一性的保证。这里我说的”身份唯一性“,并不是在指代一个人只有一个账户,而是区块链中账户本身是唯一的,只能被自己的”钥匙“打开。这就是非对称加密,在非对称加密中,有一堆秘钥,这两者都可以用来加密数据,而必须用另一方才能解密。公钥是公开的一个秘钥,私钥是不公开的一个秘钥。那么可以很容易理解,当用公钥加密的时候,只有私钥持有者才可以解密数据,这是在做保密传输,称为”公钥加密“。当用私钥加密的时候,所以知道此私钥对应公钥的人都可以解密数据,这是在通过公钥认证身份,称为”私钥签名“。只有公钥可以从私钥中计算出来,而私钥却不能从公钥中推出。而个人账户地址是与公钥一一对应的。图2 区块链地址产生的过程非对称加密的一种--------椭圆曲线加密算法目前是被应用最广泛的算法。P2P(peer to peer 对等网络)P2P是一种点对点数据传输技术,依靠用户群交换信息,与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。当然P2P网络也有很多种,不同区块链中可能采用不同实现方式。P2P网络的经典例子,比如迅雷和早期的电驴。图3 P2P网络区块链依靠P2P在各个节点之间传输数据,依靠私钥签名确保数据唯一,依靠公私钥体系构建账户体系,依靠共识算法添加数据并提供网络维护者的激励,依靠Merkle树构建储存数据库。依靠时间戳确保历史区块产生时间。这是区块链的主要技术构成。存在问题当然区块链目前存在太多问题,导致使用起来很反用户直觉。1.匿名和隐私比特币和以太坊目前是不存在绝对的隐私的,只是存在了一些匿名手段,准确的说,比特币只存在一些匿名特性。虽然无法知道用户是谁,但是比特币这个“论坛”上的“用户行为”是可以追踪的。目前有以ZK-SNARK为代表的零知识证明技术来保证隐私,但是还存在性能的问题。2.算力/票集中化导致的安全性下降如之前所说,我们可以很理想的认为,在互联网上一个“单位算力”就是一个人,但是存在经济利益之后,就会有各种手段来取得算力领先地址。比如“矿机”,“矿池”等以大算力为目标的一些设施。PoS也是如此,有多少票是一种经济行为,而在各种经济领域,“二八准则”始终是存在的。3.过于自由的智能合约带来的安全问题智能合约是图灵完备的,在这种基础上,因为写智能合约的人同样良莠不齐,所以很可能会出现各种安全漏洞。4.区块链数据是很封闭的区块链是一个很封闭的生态系统,它的信任只能保证在“链上”数据本身,而从现实世界到区块链这一段,并不能保证不存在拟欺诈。甚至,不同区块链之间的数据互传,也很难保证是完全可信的。这就是大多数人诟病的”溯源“并不一定可信,当然目前有了一些以预言机为代表的解决方案,但是这些技术并没有能够从根本上解决问题,还需要进一步研究。5.当需要与用户交互时,智能合约本身无法操纵账户数据比如用智能合约发工资,但是我们并不能保证智能合约取钱的账户内部有足够工资。它只能完成“输入金钱到输出多账户工资”这样的流程。这是我理解的区块链技术。完。[1]M. Pilkington, “Blockchain Technology: Principles and Applications,” in Research Handbook on Digital Transformations, 2016. [online] Available: Blockchain Technology: Principles and Applications, (accessed February 13, 2018).[2]I. Eyal, A. E. Gencer, E. G. Sirer, and R. V. Renesse. “Bitcoin-NG: a scalable blockchain protocol,” in 13th Usenix Conference on Networked Systems Design and Implementation (NSDI'16), Berkeley, CA, USA, 2016, pp. 45-59.[4]S. Nakamoto, "Bitcoin: a peer-to-peer electronic cash system," 2009. [Online] Available: Open source P2P money (accessed February 13, 2018).[5]M. Mettler, "Blockchain technology in healthcare: The revolution starts here," in 2016 IEEE 18th International Conference on e-Health Networking, Applications and Services (Healthcom), Munich, 2016, pp. 1-3.[6]K. Christidis and M. Devetsikiotis, "Blockchains and Smart Contracts for the Internet of Things," in IEEE Access, vol. 4, 2016, pp. 2292-2303.[7]M. Conoscenti, A. Vetrò, and J. C. De Martin, "Blockchain for the Internet of Things: A systematic literature review," in IEEE/ACS 13th International Conference of Computer Systems and Applications (AICCSA), 2016, pp. 1-6.[8] I. C. Lin and T. C. Liao, “A Survey of Blockchain Security Issues and Challenges,” in International Journal of Network Security, vol. 195, no. 5, 2017, pp. 653-659.[9] M. Conti, C. Lal, and S. Ruj, “A survey on security and privacy issues of bitcoin,” arXiv preprint arXiv:1706.00916, 2017.[10] M. E. Peck, "Blockchain world - Do you need a blockchain? This chart will tell you if the technology can solve your problem," in IEEE Spectrum, vol. 54, no. 10, October 2017, pp. 38-60.[12] W. Stallings, “Cryptography and network security: principles and practice,” Pearson Education, 2016百科摘录7从十二大科技热词看互联网科技行业趋势下的内容摘录刘旷区块链是一个开放的系统化,链条里的任何一点消失也不会影响其余点的正常工作,是个去中心化、去信任的结构,所有的点根据既定的规则运行。在运营过程中所有交易都公开透明地进行,交易双方匿名,每一笔交易都通过密码学的方法与相邻两个区块串联,因此可以做到可追溯。去中心化、去中介信任和数据库可靠就构成了区块链技术的三大特征。知乎小知 摘录于 2020-04-24区块链与新一代信息技术下的内容摘录知乎用户H6pbNg传播新技术,打造新商业区块链是一种不可篡改的、全历史的数据库存储技术,巨大的区块数 据集合包含着每一笔交易的全部历史,随着区块链的应用迅速发展,数据 规模会越来越大,不同业务场景区块链的数据融合进一步扩大了数据规模 和丰富性。区块链提供的是账本的完整性,数据统计分析的能力较弱。大 数据具备海量数据存储技术和灵活高效的分析技术,极大提升区块链数据 的价值和使用空间。 区块链以其可信任性、安全性和不可篡改性,让更多数据被解放出 来,推进数据的海量增长。区块链的可追溯特性使得数据从采集、交易、 流通,以及计算分析的每一步记录都可以留存在区块链上,使得数据的质 量获得前所未有的强信任背书,也保证了数据分析结果的正确性和数据挖 掘的效果。区块链能够进一步规范数据的使用,精细化授权范围。脱敏后 的数据交易流通,则有利于突破信息孤岛,建立数据横向流通机制,并基 于区块链的价值转移网络,逐步推动形成基于全球化的数据交易场景。知乎小知 摘录于 2020-04-24区块链资料翻译下的内容摘录五角场老张​上海财经大学 经济统计学硕士区块链就是通过软件进行分析从中提取相关信息。 如何去中心化?通过网络的穿梭来存储数据,区块链消除了数据中心化的一些风险。去中心化的区块链可以用于特点消息的传输和分布式网络。由于区块链中的网络是不存在一个中心点的,所以当黑客入侵时,他入侵任何一台电脑都是徒劳无功的。区块链的安全方式包括了使用公钥加密。在区块链上一个公钥就是一个地址,比特币穿过网络时就会被记录在这些地址上,而私钥就如同是密码,它可以让用户接入它自己的数字组件以及和网络中其他区块产生交互工作。所以理论上来讲,存储在区块链中的数据是永恒不灭的。知乎小知 摘录于 2020-04-24查看全部 7 个摘录​浏览量12.4 亿讨论量120 万 帮助中心知乎隐私保护指引申请开通机构号联系我们 举报中心涉未成年举报网络谣言举报涉企虚假举报更多 关于知乎下载知乎知乎招聘知乎指南知乎协议更多京 ICP 证 110745 号 · 京 ICP 备 13052560 号 - 1 · 京公网安备 11010802020088 号 · 京网文[2022]2674-081 号 · 药品医疗器械网络信息服务备案(京)网药械信息备字(2022)第00334号 · 广播电视节目制作经营许可证:(京)字第06591号 · 服务热线:400-919-0001 · Investor Relations · © 2024 知乎 北京智者天下科技有限公司版权所有 · 违法和不良信息举报:010-82716601 · 举报邮箱:jubao@zhihu.

什么是区块链?| Oracle 中国

什么是区块链?| Oracle 中国

单击查看我们的辅助功能政策

跳到内容

关于

服务

解决方案

定价

合作伙伴

资源

关闭搜索

搜索 Oracle.com

快速链接

Oracle Cloud Infrastructure

Oracle Fusion Cloud Applications

Oracle Database

下载 Java

Oracle 职业机会

搜索

Country

菜单

菜单

联系我们

登录 Oracle Cloud

甲骨文中国

Blockchain

Oracle Cloud Free Tier

免费在 OCI 上构建、测试和部署应用。

立即注册

区块链主题

区块链的定义

区块链技术如何运作?

三种区块链类型

区块链的优势 — 业务价值

区块链 IoT 合作伙伴关系

什么是 Hyperledger?

什么是区块链?

区块链的定义

区块链是一种安全共享的去中心化的数据账本。区块链技术支持一组特定的参与方共享数据。借助过区块链云技术服务,可以轻松收集、集成和共享多个来源的交易数据。数据被细分为多个共享区块,并以加密哈希形式的唯一标识符链接在一起。

区块链通过单一信息源确保数据完整性,消除数据重复,提高数据安全性。

在区块链系统中,未经法定人数许可,数据将无法更改,这一特点有助于防范欺诈和数据篡改。换言之,区块链账本可以共享,但不能更改。如果有一方尝试更改数据,区块链所有参与方都将收到警报,知晓哪一方试图更改数据。

行业领先的区块链解决方案

区块链技术如何运作?

您可以将区块链视为交易的历史记录。每个区块都按顺序“连接”到前一个区块,并且在对等网络中不可更改记录。加密信任和保证技术将唯一标识符或数字指纹应用于每笔交易。

区块链具备信任、责任、透明和安全性。这使许多类型的组织和贸易伙伴能够访问和共享数据,这种现象称为第三方、基于共识的信任。

所有参与者都在一个不可否认的分散、高度可扩展和有弹性的记录机制中维护每笔交易的加密记录。区块链不需要任何额外的开销或中介。拥有去中心化的单一信息源,意味着在可能彼此不完全信任的各方之间执行可信业务互动的情况下降低成本。在大多数企业使用的许可型区块链中,参与者有权参与网络,并且每个参与者都维护每个交易的加密记录。

任何需要安全、实时、可共享的交易记录的公司或集团都可以从这种独特的技术中受益。没有单一位置可以存储所有内容,从而提高安全性和可用性,不会出现中央漏洞。

以下定义有助于您进一步理解区块链和区块链的底层技术以及使用场景。

去中心化信任:

很多企业之所以采用区块链技术而不是其他数据存储技术,主要原因就是区块链不依赖中央权威就能保证数据完整性,即基于可靠数据实现去中心化信任。

区块:

区块链顾名思义就是将数据存储在区块中,然后每一个区块都与前一个区块连接,组成链状结构。区块链技术仅支持添加(附加)新的区块,一旦添加到区块链后,您就无法修改或删除任何区块。

共识算法:

共识算法负责区块链系统内的规则执行。当各参与方为区块链设置规则后,共识算法将确保各方遵守这些规则。

区块链节点:

区块链节点负责存储数据区块,是区块链中的存储单元,可保持数据同步和始终处于最新状态。任意节点都可以快速确定是否有区块发生了变更。当一个新的全节点加入区块链网络时,它会下载当前链上所有区块的副本。而当新节点与其他节点同步并更新至最新的区块链版本后,它可以像其他节点一样接收任意的新区块。

区块链节点可分为两大类:

全节点存储区块链的完整副本。

轻节点仅存储最新区块且可在用户需要时请求较旧的区块。

区块链傻瓜宝典 (PDF)

三种区块链类型

公共区块链:

任何人都可以不受限制地加入公共或无许可区块链网络。绝大多数类型的加密货币都在由规则或共识算法控制的公共区块链上运行。

许可或专有区块链:

专有或许可区块链允许企业控制哪些人可以访问区块链数据,即只有获得授权的用户才能访问特定数据集。Oracle Blockchain Platform 就属于许可区块链。

联合或联盟区块链。

区块链网络的共识流程(挖掘流程)由一组预选的节点或预选数量的利益相关方密切控制。

区块链的优势 — 业务价值

未来几年,区块链技术应用有望大幅增长。它被普遍认为是一项极具革命性、颠覆性的创新技术,可通过卓越的效率、可靠性和安全性革新现有业务流程。

区块链技术可凭借强大的业务优势,从以下方面为企业赋能:

提供可靠的共享数据,在各方之间建立信任

消除数据孤岛,即通过去中心化的,在一个网络中共享并支持获许可方访问的账本将数据集成到一个系统中

为数据赋予高度安全性

降低对第三方中介的需求

创建可在所有参与方之间共享的实时、防篡改记录

参与方可确保商业流中产品的真实性和完整性

无缝跟踪和追踪整个供应链中的商品和服务

通过 Oracle Blockchain Platform 确保食品安全

区块链 IoT 合作伙伴关系

区块链已不再是一项新兴技术。事实上,区块链与人工智能 (AI)、物联网 (IoT) 以及机器学习等技术结合,继续推进解决方案并满足业务需求。这些关键技术合作关系可帮助用户从数据中获得重要洞察。

传统的 IT 系统无法处理来自 IoT 的海量数据。这种海量、高速、多样化的数据会导致企业系统不堪重负,导致无法基于可信数据及时做出合理决策。对此,区块链的分布式账本技术可通过更高的安全性和透明度来应对这些可扩展性挑战。

什么是 Hyperledger?

Hyperledger 是由 Linux 基金会启动的开源项目,旨在促进区块链技术全球协作,其主要目的是开发可解决企业可扩展性、性能和安全性问题的开源区块链实施。Hyperledger 拥有一个中立的开放成员社区,其中社区成员为 Hyperledger Fabric 积极贡献开发代码,而 Hyperledger Fabric 成为了许多企业区块链项目的基础。

Oracle 是 Hyperledger 成员,Oracle Blockchain 解决方案也基于 Hyperledger Fabric 构建,因此可充分利用开源力量,确保与核心协议互操作。

Hyperledger 生态系统实现增长

Oracle Blockchain Platform 入门

注:为免疑义,本网页所用以下术语专指以下含义:

Oracle专指Oracle境外公司而非甲骨文中国。

相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。

按角色查看

招贤纳士

开发人员

投资者

合作伙伴

初创企业

学生和教育工作者

为什么选择 Oracle

分析报告

Oracle 多云

OCI | Microsoft Azure

云参考架构

企业责任

多元化与包容性

安全实践

学习

什么是 AI?

什么是云计算?

什么是云存储?

什么是 HPC?

什么是 IaaS?

什么是 PaaS?

最新动态

Oracle CloudWorld

Oracle 云免费套餐

云架构中心

云迁移

甲骨文红牛车队

软件产品登记证书

完整使用程序使用通知申请流程

联系我们

销售: 400-699-8888

您需要什么帮助?

订阅电子邮件

活动

新闻

OCI 博客

国家/地区

© 2024 Oracle

使用条款和隐私政策

京ICP备10049020号-1

广告选择

招贤纳士

WeChat

甲骨文中国新浪微博

区块链入门教程 - 阮一峰的网络日志

区块链入门教程 - 阮一峰的网络日志

阮一峰的网络日志 » 首页 » 档案

上一篇:持续集成服务 Trav

下一篇:比特币入门教程    

分类:

理解计算机

⇐ 

 ⇒

区块链入门教程

作者: 阮一峰

日期: 2017年12月26日

区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来。

可是,简单易懂的入门文章却很少。区块链到底是什么,有何特别之处,很少有解释。

下面,我就来尝试,写一篇最好懂的区块链教程。毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚。我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿、为什么挖矿越来越难等问题。

需要说明的是,我并非这方面的专家。虽然很早就关注,但是仔细地了解区块链,还是从今年初开始。文中的错误和不准确的地方,欢迎大家指正。

一、区块链的本质

区块链是什么?一句话,它是一种特殊的分布式数据库。

首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。

其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。

二、区块链的最大特点

分布式数据库并非新发明,市场上早有此类产品。但是,区块链有一个革命性特点。

区块链没有管理员,它是彻底无中心的。其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。

正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。

但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?被坏人改了怎么办?请接着往下读,这就是区块链奇妙的地方。

三、区块

区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。

每个区块包含两个部分。

区块头(Head):记录当前区块的特征值

区块体(Body):实际数据

区块头包含了当前区块的多项特征值。

生成时间

实际数据(即区块体)的哈希

上一个区块的哈希

...

这里,你需要理解什么叫哈希(hash),这是理解区块链必需的。

所谓"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。

举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。(理论上,其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。)

因此,就有两个重要的推论。

推论1:每个区块的哈希都是不一样的,可以通过哈希标识区块。

推论2:如果区块的内容变了,它的哈希一定会改变。

四、 Hash 的不可修改性

区块与哈希是一一对应的,每个区块的哈希都是针对"区块头"(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。

Hash = SHA256( 区块头 )

上面就是区块哈希的计算公式,SHA256是区块链的哈希算法。注意,这个公式里面只包含区块头,不包含区块体,也就是说,哈希由区块头唯一决定,

前面说过,区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。

这一点对区块链有重大意义。如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,哈希的计算很耗时,短时间内修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。

正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。

每个区块都连着上一个区块,这也是"区块链"这个名字的由来。

五、采矿

由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。

所以,区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。

这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链。由于计算量太大,所以快不起来。

这个过程就叫做采矿(mining),因为计算有效哈希的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算哈希的机器就叫做矿机,操作矿机的人就叫做矿工。

六、难度系数

读到这里,你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个哈希吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?

原来不是任意一个哈希都可以,只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。

原来,区块头包含一个难度系数(difficulty),这个值决定了计算哈希的难度。举例来说,第100000个区块的难度系数是 14484.16236122。

区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。

哈希的有效性跟目标值密切相关,只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因。

前面说过,当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做 Nonce。

Nonce 是一个随机值,矿工的作用其实就是猜出 Nonce 的值,使得区块头的哈希可以小于目标值,从而能够写入区块链。Nonce 是非常难猜的,目前只能通过穷举法一个个试错。根据协议,Nonce 是一个32位的二进制值,即最大可以到21.47亿。第 100000 个区块的 Nonce 值是274148111,可以理解成,矿工从0开始,一直计算了 2.74 亿次,才得到了一个有效的 Nonce 值,使得算出的哈希能够满足条件。

运气好的话,也许一会就找到了 Nonce。运气不好的话,可能算完了21.47亿次,都没有发现 Nonce,即当前区块体不可能算出满足条件的哈希。这时,协议允许矿工改变区块体,开始新的计算。

七、难度系数的动态调节

正如上一节所说,采矿具有随机性,没法保证正好十分钟产出一个区块,有时一分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。

为了将产出速率恒定在十分钟,中本聪还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此接下来的难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此接下来的难度系数就要调低10%。

难度系数越调越高(目标值越来越小),导致了采矿越来越难。

八、区块链的分叉

即使区块链是可靠的,现在还有一个问题没有解决:如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。这时应该采纳哪一个区块呢?

现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")。按照10分钟一个区块计算,一小时就可以确认。

由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。

九、总结

区块链作为无人管理的分布式数据库,从2009年开始已经运行了8年,没有出现大的问题。这证明它是可行的。

但是,为了保证数据的可靠性,区块链也有自己的代价。一是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。

因此,区块链的适用场景,其实非常有限。

不存在所有成员都信任的管理当局

写入的数据不要求实时使用

挖矿的收益能够弥补本身的成本

如果无法满足上述的条件,那么传统的数据库是更好的解决方案。

目前,区块链最大的应用场景(可能也是唯一的应用场景),就是以比特币为代表的加密货币。下一篇文章,我将会介绍比特币的入门知识。

十、参考链接

How does blockchain really work?, by Sean Han

Bitcoin mining the hard way: the algorithms, protocols, and bytes, by Ken Shirriff

(完)

文档信息

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

发表日期: 2017年12月26日

相关文章

2022.08.02: DNS 查询原理详解

通过 DNS 查询,得到域名的 IP 地址,才能访问网站。

2022.06.03: 字节序探析:大端与小端的比较

今天谈谈一个重要的计算机概念,大家可能都听说过它,但是很少深究,那就是字节序(Endianness)。

2022.02.04: 万兆家庭网络的时代

最近,我想将家里的网络设备,都升级到千兆。

2021.12.07: 为什么 Web3 与区块链有关

互联网迄今有两个阶段:Web 1.0 和 Web 2.0。

留言(195条)

GongchuangSu

说:

哈哈 沙发 期待下一篇关于比特币的介绍

2017年12月26日 21:04

| #

| 引用

zhiyang

说:

比特币的中心思想好像就是这个,去中心化,每进行一笔交易,周围所有的节点都会知道这笔交易

2017年12月26日 21:26

| #

| 引用

逆寒

说:

那辛辛苦苦挖出来的区块后面接着的未能达到6个,而是采用了另一条长的,是不是意味着白挖了。。

2017年12月26日 21:50

| #

| 引用

EricJin

说:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

2017年12月26日 21:58

| #

| 引用

nextzeus

说:

传闻黑客攻击了比特币,很好奇是怎么做到的?

2017年12月26日 22:34

| #

| 引用

leon

说:

期待阮先生精彩文章。尤其是现在以bitshare和steemit为代表的DPOS机制,在实时性能和处理能力方面已有很大进步。

2017年12月26日 23:04

| #

| 引用

why

说:

分叉还是不大懂。

2017年12月27日 00:05

| #

| 引用

hpilan

说:

@EricJin:

怎么理解他们之间的差异很大啊?

2017年12月27日 05:23

| #

| 引用

顾唐散人

说:

文中对hash值的描述有误,不同的字符串存在hash碰撞的可能性。

2017年12月27日 07:10

| #

| 引用

朴素

说:

真正潜心搞区块链技术研究的没多少,都去炒币了。几乎零投入今年赚了十几万。可想而知币圈暴富了多少人吧。

2017年12月27日 08:50

| #

| 引用

Ryan

说:

确实目前来说使用区域链非常有限

2017年12月27日 10:01

| #

| 引用

Nameless

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

你这个很多字符串说得真是张口就来。

2017年12月27日 10:09

| #

| 引用

John Shen

说:

阮老师说“只有123能得到这个Hash”确实不准确。

理论上任何哈希函数都不能避免哈希碰撞(冲突),设计较好的哈希函数只是将碰撞(冲突)的概率降到了很低,所以并不能说“只有”。

而所谓的“很多字符串”,其实也没那么多啦,只是理论上样本无穷大的时候必然存在碰撞(冲突)。

2017年12月27日 10:29

| #

| 引用

aaa

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

别咬文嚼字了。谁还不知道hash 有冲突。

2017年12月27日 10:45

| #

| 引用

zyg

说:

期待下篇

2017年12月27日 10:56

| #

| 引用

dudulang1998

说:

言简意赅,把复杂的道理说到本质而通俗,抽象总结能力大赞~

2017年12月27日 11:25

| #

| 引用

RobinKill

说:

区块链的应用可以渗透到非常多的行业,合同,税收,财产公示(可以含私隐的公示),防伪,交易,选举,信用体系…等等,这些都只是本人想到的,其实也还有更多地方可以去应用,而比特币(泛指去中心加密数字货币)主要应用了财产公示,交易…

Hash那有个说法是错误的,不过可以忽略不计,改一下也好…

2017年12月27日 11:32

| #

| 引用

fd

说:

引用nextzeus的发言:

传闻黑客攻击了比特币,很好奇是怎么做到的?

是因为攻击了著名的一些bitcoin钱包,很多bitcoin是存在这些网上钱包里的

2017年12月27日 11:56

| #

| 引用

一地风飞

说:

还有不少疑问,希望懂的人给解释一下:

1.

区块头里有两个hash,一个是指向上一块的hash(应该是上一区块体的hash?),这个应该是已确定的。

另一个是即将要加入的区块自身的hash,这个hash从本身的内容计算得出(采矿)

既然“同一内容,hash出来的值”是一样的,那就意味着,区域在加入链之前,内容是不确定的?

不知道这样理解对不对: 区块先生成必要的数据(比如 A转帐给B多少),然后加上会变化的"随机数",来算hash,算出来满足后,就加到链上。如果是这样,这个“随机数”一般是什么?

2. 区块的数据格式有约定吗

2017年12月27日 12:12

| #

| 引用

frank-young

说:

阮老师怎么看矿工在这个生态里的作用

2017年12月27日 12:14

| #

| 引用

ehlxr

说:

还是看阮老师的文章能够理解,哈哈

2017年12月27日 13:38

| #

| 引用

shooter

说:

具体如何计算Block Hash https://www.jianshu.com/p/4187a7352769

阮老师要入坑了么

2017年12月27日 14:53

| #

| 引用

hc

说:

阮老师,你好,关于文章的第七点,难度系数的动态调节这个章节里面的难度系数越调越高这句话怎么理解?请详细的解释一下,感谢。其中的动态调节我是理解,不理解的是为什么难度系数会越调越高。

2017年12月27日 15:49

| #

| 引用

biykb

说:

区块包含上一个区块的哈希(即上一个区块的哈希),本区块的哈希。这样理解正确吗?

2017年12月27日 17:18

| #

| 引用

一地风飞

说:

搜了一下网上的其它文章,加深了了解:

1.本区块的hash,是用区块头来计算,然后区块头会有一个随机数(nouce)来难度值来证明工作量

2.比特币的区块头里有个32字节的Merkle的Root hash来验证区块体里数据

2017年12月27日 17:33

| #

| 引用

Kalay

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

您说的"很多字符串都能得到这个hash,但是他们之间差异很大。"怎么理解,

是这个hash值被123占有之后, 所有字符串都能知道这个hash被占有了?还是123有了这个hash的同时,其他字符串比如234也能申请一个同样的hash?

这两个问题后者应该是不对的吧, 如果是前者,这不正是作者表达的吗?还是有更深层次的意义我没有领悟到,小白,望解答.

2017年12月27日 17:51

| #

| 引用

googya

说:

牵一发而动全身, 真的动了的话, 确实需要巨大的能量

2017年12月27日 18:13

| #

| 引用

星辰

说:

实际上,有无限多的字符串能得到同一个hash,但是,碰撞的概率相当低。

区块链的应用场景除了密码学货币,更重要的,还有以太坊的智能合约。

2017年12月27日 22:00

| #

| 引用

jojoyoung

说:

最好懂的区块链教程

2017年12月27日 22:35

| #

| 引用

kevinliu.lj

说:

在有限长度的字符串中,hash可以认为不会碰撞。

要碰撞的字符串会长到现有的存储空间无法存放,所以暂时可以认为不会碰撞

2017年12月27日 23:15

| #

| 引用

[email protected]

说:

引用顾唐散人的发言:

文中对hash值的描述有误,不同的字符串存在hash碰撞的可能性。

hash碰撞那是sha1和md5,sha256你碰一个给我试试

2017年12月28日 09:01

| #

| 引用

wZi

说:

一张添加下一级速度很慢的链表

2017年12月28日 10:05

| #

| 引用

songke.online

说:

nonce值不一定是HASH重算的次数啊,因为矿工不一定从1开始递增去碰nonce值。

2017年12月28日 10:34

| #

| 引用

Leo Liu

说:

针对最后的总结部分。

老师说的主要是关于公有链的一些特点和需要。事实上现在区块链的商业应用上主要是同盟链与私有链。适应的场景与公有链区别非常大。

2017年12月28日 10:43

| #

| 引用

soul

说:

有几个问题想问一下。

1.第四点中说到一个区块改变自己的内容后面的区块会丢失这个区块的指针,结合"六次确认"的理论,所以区块链的结构我理解很有可能是这样的:

a b c

| | |

1--2--3--4--5--6--7--8--9--10--。。。

| | |

d e g

对吗?

2.全文都没有怎么提区块的内容是什么,但还是很在意,看本文所引用图片好像是数据交换记录,也就是比特币交易记录,那么没有交易发生时内容存的是什么?

2017年12月28日 11:14

| #

| 引用

章鱼哥

说:

可以看看这篇文章,精通比特币,很详细!

http://zhibimo.com/read/wang-miao/mastering-bitcoin/index.html

2017年12月28日 11:27

| #

| 引用

ixx

说:

引用Kalay的发言:

您说的"很多字符串都能得到这个hash,但是他们之间差异很大。"怎么理解,

是这个hash值被123占有之后, 所有字符串都能知道这个hash被占有了?还是123有了这个hash的同时,其他字符串比如234也能申请一个同样的hash?

这两个问题后者应该是不对的吧, 如果是前者,这不正是作者表达的吗?还是有更深层次的意义我没有领悟到,小白,望解答.

hash是一种算法,根据你的输入计算出定长的输出,他说的意思是除了“123”能计算出“ a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0”,还有可能存在其它的字符串能计算得出“ a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0”的值,这叫"HASH碰撞",具体是哪个值或者说有没有都是不确定的,只是一种理论上的可能存在

2017年12月28日 11:58

| #

| 引用

calmzeal

说:

引用shooter的发言:

具体如何计算Block Hashhttps://www.jianshu.com/p/4187a7352769

阮老师要入坑了么

这个很清楚,谢谢。

我理解是不是,区块体的内容是已经确定了。

然后大家来找一个 随机数,把已确定的区块体加上随机数之后,进行连续两次hash操作。

然后算出来的 hash值,前N位为0 才满足要求。

2017年12月28日 15:24

| #

| 引用

memory

说:

不错,期待下一篇关于比特币的介绍

2017年12月28日 15:57

| #

| 引用

Foli

说:

有个地方想不明白:

如果挖矿就相当于找到一个新的满足条件的区块,那么一个区块就相当于一个比特币,那比特币赏金又是什么意思哦?(2009年比特币诞生的时候,每笔赏金是50个比特币;当总量达到1050万时,赏金减半为25个;当总量达到1575万,赏金再减半为12.5个)

找到一个新区块(序列)到底可以拿到多少个比特币?如果可以拿到多个,这多个又是怎么来的?

2017年12月28日 16:31

| #

| 引用

理想三旬

说:

我是一个前端新手,现在的我很迷茫,想要强化自己,但是又不知道该学些什么,总感觉在一些做JAVA之类比较强的语言人面前很弱,现在人工智能什么的很火,我也想慢慢了解是什么,总之就是想学一个强语言,感觉现在过得很颓废,比较向往那种很积极向上的工作环境,例如创业公司那种拼搏氛围,现在年轻不想过得那么平庸,望各位大神给我点亮一站指明灯,万分感谢

2017年12月28日 16:31

| #

| 引用

热心的路人甲

说:

@理想三旬:

习惯就好,不用去纠结什么强语言,没人知道

2017年12月28日 17:22

| #

| 引用

千帆万桅

说:

区块头中包含区块体的 Hash,如果一个区块的实际数据发生了改变,那么区块体的 Hash 就会发生改变,这一改变会导致当前区块的区块头发生改变,从而使得区块的 Hash 发生改变,当前区块的 Hash 发生改变又会引起下一个区块的区块头发生改变。如此一来,产生了骨牌效应。

修改一个区块时,如果不能同时修改后面所有的区块,就会导致当前区块与后面的区块失去连接。所以合适的做法就是不去修改区块。可是万一就有人非要去修改区块该怎么办呢?上面提到的这种联动机制看起来只会使得修改区块后果严重,并不能阻止修改区块的行为。

2017年12月28日 18:00

| #

| 引用

Jigsaw

说:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

'a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0'.length

40

40位16进制转换成2进制是160位吧

40位对应的是SHA1的算法

2017年12月29日 09:39

| #

| 引用

说:

是不是有了量子计算机后就无视了,所以。。

2017年12月29日 14:26

| #

| 引用

zzz

说:

到底是区块头hash还是区块体hash,一会区块体一会区块头

2017年12月29日 21:06

| #

| 引用

ying

说:

hash是针对原始内容吧,值应该是固定的?为啥还能有满足条件的某个hash值?只是内容可以随便指定?

2017年12月31日 21:59

| #

| 引用

fadeer

说:

感兴趣可以去听听这两集中文博客:

82.聊聊比特币背后的技术和Blockchain

http://teahour.fm/2015/12/27/talk-with-jan-about-bitcoin-and-blockchain.html

83.这次我们聊聊超酷的Ethereum

http://teahour.fm/2016/01/19/talk-with-jan-about-ehtereum.html

2017年12月31日 23:10

| #

| 引用

你家卢哥哥

说:

虽然现在的趋势是公有链,但对于很多项目来说,其实私有链和联盟链更适合。所以个人拙见,并不能说区块链的应用场景只有加密货币,而且,去中心化和中心化可以互补的,这样应用场景就更广了

2018年1月 1日 10:37

| #

| 引用

aaron67

说:

我自己整理了一部分区块链的好文和工具,分享给大家 https://bitcoincash.best/wiki

里面有区块链的基础知识 比特币的基础知识科普和误解 区块链现在的应用情况 分叉币的讨论

当然也有部分技术讨论

欢迎大家阅读 更欢迎大家的分享

2018年1月 1日 19:01

| #

| 引用

天王盖地虎

说:

作者似乎把区块链和比特币混为一谈了。

2018年1月 2日 10:13

| #

| 引用

晓峰

说:

引用nextzeus的发言:

传闻黑客攻击了比特币,很好奇是怎么做到的?

你指的应该是攻击了比特币的交易所,就相当于抢银行吧。

2018年1月 2日 10:51

| #

| 引用

晓峰

说:

@soul:

区块内存的是比特币的交易记录。如果没有发生交易,区块内容可以为空。

2018年1月 2日 10:55

| #

| 引用

吕浩

说:

阮老师,您好,我是一名高中生,由于研究课需要,我在网上查到了贝叶斯算法,并且看到了您的日志。可能由于网的问题,您的日志中的部分图片加载不出,我想如果您有空的话,是否可以直接发给我一份?

2018年1月 2日 12:39

| #

| 引用

skip

说:

有人做个了区块链的Demo https://anders.com/blockchain/ 形象直接

2018年1月 2日 17:59

| #

| 引用

ghosts

说:

我比较好奇的是,分支之后那个区块会被怎么操作?丢弃么?

2018年1月 3日 11:44

| #

| 引用

v5

说:

新的区块是如何同步的呢?如果同步的过程中是无法产生新的区块吗?

2018年1月 3日 17:26

| #

| 引用

July

说:

反对《熵:宇宙的终极规则》中的世界观。

热力学第二定律是一个观察的结果,是一个热力学适用的定律。

宇宙中太多太多违背人们逻辑的存在,没有任何定律能够完全在宇宙的尺度下经历了严格的考验。量子力学越来越被验证不过是时间短而已,一如当初的牛顿力学,电磁学。

更何况有 刘维尔极力反对,导致了庞加莱回归定理的诞生。

庞加莱回归:

孤立的、有限的保守动力学系统在有限的时间内回复到任意接近初始组态的组态。

如果宇宙是有限的离散动力系统,那就不是“任意接近”,而是完全回到初始状态了。

就是一切都是轮回。

还有这些研究都不适用于智慧生命。人类目前的研究连自行车为啥不倒都搞不明白,离弄清楚智慧差太多太多。

感谢作者的电子书《未来世界的幸存者》看的真过瘾。一口气读完。

2018年1月 3日 18:54

| #

| 引用

strickland

说:

引用Nameless的发言:

你这个很多字符串说得真是张口就来。

不是很多,准确的说应该是无数。

2018年1月 4日 10:22

| #

| 引用

he

说:

而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。

这句话就不对,任何hash都不能保证,因为原始内容是无穷的,hash是有限的字符串。所以原始内容和hash必定是多对1的。

2018年1月 4日 10:42

| #

| 引用

okevin

说:

Hash 的有效性跟目标值密切相关,只有小于目标值的 Hash 才是有效的,否则 Hash 无效,必须重算。由于目标值非常小,Hash 小于该值的机会极其渺茫,可能计算10亿次,才算中一次。

——————————前面不是说,Hash是唯一的吗?为什么会算出来那么多?

2018年1月 4日 11:08

| #

| 引用

gaozhe

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

是这样. 可以这么说: 123 的 hash 值肯定是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0, 如果数据的 hash 值不是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0,那它一定不是123. 这样就可以知道数据是否被修改.

2018年1月 4日 11:36

| #

| 引用

问天玄铁

说:

等到比特币将中本聪快要变成世界首富的时候,比尔盖茨控制windows系统在同一时间检测每台机有没有比特币区块,有的话就写入一个假账。其实一个全球都在用的软件就能够摧毁这个分布式账本。

2018年1月 4日 16:13

| #

| 引用

唐晓宁

说:

写的很好。一点建议:可否考虑把「四、 Hash 的不可修改性」里的「历史」换成「事实」。

历史:不唯一。

事实:唯一。

2018年1月 5日 11:43

| #

| 引用

冯超

说:

Nonce并光是记录次数,每次重新计算 Hash 之所以会变就是因为 Nonce 不一样。所以计算的过程就是从1递增Nonce 找到合适的 Nonce 算出 Hash 能够满足条件。

2018年1月 5日 15:59

| #

| 引用

沈七

说:

如果故意修改某个区块,是否这个区块和他后面的区块链都脱离了?

2018年1月 5日 16:06

| #

| 引用

dusthand

说:

引用hc的发言:

阮老师,你好,关于文章的第七点,难度系数的动态调节这个章节里面的难度系数越调越高这句话怎么理解?请详细的解释一下,感谢。其中的动态调节我是理解,不理解的是为什么难度系数会越调越高。

可以这样理解,假设矿机越来越多,如果难度系数不变,那挖到一个矿的时间会变短,那么2016个矿之后,难度系数就会由于平均时间变短(小于10分钟)而提升。

2018年1月 5日 23:28

| #

| 引用

jackcai

说:

这个难度系统是系统设计时就已经集成了这个功能?会动态调整? 还是说现在中本聪会监控干预调整?

2018年1月 7日 11:16

| #

| 引用

finit

说:

比特币的价值何在

2018年1月 7日 11:41

| #

| 引用

0x5e

说:

看了好多区块链的介绍、入门、教程,感觉阮老师的文章是(从技术角度)讲的最清晰易懂的,别的好多文章要么虚无缥缈要么莫名其妙,让人看着摸不着头脑,哈哈:)

第五章有个疑问,除了用大量的计算能减缓新区块的添加速度,真的没有其他方案了吗?从成本的角度考虑,这种几乎绝对能让人可信的“数据库”代价是不是太大了点。。

2018年1月 7日 23:29

| #

| 引用

Tidus

说:

引用okevin的发言:

Hash 的有效性跟目标值密切相关,只有小于目标值的 Hash 才是有效的,否则 Hash 无效,必须重算。由于目标值非常小,Hash 小于该值的机会极其渺茫,可能计算10亿次,才算中一次。

——————————前面不是说,Hash是唯一的吗?为什么会算出来那么多?

因为,比特币的挖矿,其实是在猜数字, (上一区块的信息)+ 随机数 生成的 hash, 符合前面连续出现N个0才算成功。所以,每个矿机都在猜什么样的随机数,才能达到要求

2018年1月 9日 00:07

| #

| 引用

Tidus

说:

顺便说一下,hash有很多种算法,作者举例的hash,其实是 hash 中的一种算法,叫做 sha1

在 linux 控制台运行 echo "123" | sha1sum

就可以得到 a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0

但实际上,计算的是 "123\n" 的值,因为echo 输出包含了换行符的。

单纯 "123" 的 sha1 值应该是

202CB962AC59075B964B07152D234B70

我也是奇怪为啥会出现不一致去搜索了一下,才找到别人的这个解答

2018年1月 9日 00:12

| #

| 引用

Tidus

说:

引用千帆万桅的发言:

修改一个区块时,如果不能同时修改后面所有的区块,就会导致当前区块与后面的区块失去连接。所以合适的做法就是不去修改区块。可是万一就有人非要去修改区块该怎么办呢?上面提到的这种联动机制看起来只会使得修改区块后果严重,并不能阻止修改区块的行为。

所以,比特币白皮书的方案,是从成本上避免这个的。

1.他要去改某个时刻开始,到后面所有的区块,那么后面的区块越多,他要算的就越多。 这要求他有十分强大的算力。

大约是需要全比特币网中 51% 以上的算力。

2.他要得到如此大的算力,需要付出很大的成本。 如果他改区块链账本得不到这么多收益,那么做这件事他得不偿失。

3.就算他无论如何也要给作假,改出假账本,让自己活得巨量比特币。 但这件事本身会导致比特币的信任度降低,使比特币失去价值

2018年1月 9日 00:29

| #

| 引用

Tidus

说:

引用问天玄铁的发言:

等到比特币将中本聪快要变成世界首富的时候,比尔盖茨控制windows系统在同一时间检测每台机有没有比特币区块,有的话就写入一个假账。其实一个全球都在用的软件就能够摧毁这个分布式账本。

做假账,也要计算的啊。而且因为主链是一条完整的,前后可以验证的。所以,没法去改很久之前的记录。这意味着,你要把全世界算几年的所有东西,瞬间全部算出来?

你去改最新的数据,给某个账户加钱,那么,钱从哪来? 每个挖矿的都可以查所有账单记录,钱不可能凭空转给你。

你在不知道别人密钥的情况下, 也不能伪造 别人给你转钱的数据

2018年1月 9日 00:35

| #

| 引用

Tidus

说:

引用jackcai的发言:

这个难度系统是系统设计时就已经集成了这个功能?会动态调整? 还是说现在中本聪会监控干预调整?

系统设计时就已经集成了这个功能。比特币现在基本全靠开始就设计好的思路在运行。 而现在出现比特币交易拥堵,确认越来越慢,这也是当初没有意料到的。 为了解决这问题,所以大家全体(矿工和核心代码维护者等)经过反复权衡和分裂,才分叉出比特币现金 BCH。

2018年1月 9日 00:40

| #

| 引用

肖哥

说:

文章中出现错误:

`a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0`换成2进制是160,明显是sha1算法算出来的

而且123的sha1值为`40bd001563085fc35165329ea1ff5c5ecbdbbeef`

根据上面留言的提示,`123\n`的sha1值为a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0

123的sha256值为181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b

2018年1月 9日 12:51

| #

| 引用

sdfasdg

说:

引用nextzeus的发言:

传闻黑客攻击了比特币,很好奇是怎么做到的?

攻击比特币本身没做到,只是攻击比特币平台,就像一个保险箱里放着美金,黑客攻击的是保险箱,美金本身还安全,攻击成功也就是从保险箱的美金拿出来而已,目前还做不到印假钞

2018年1月10日 15:40

| #

| 引用

fogin

说:

我想知道中本聪是怎么做到动态调整难度系数的, 没有中心,他是怎么做到要求大家都遵守他动态调节难度系数这个规则的?

2018年1月10日 15:50

| #

| 引用

张鹏

说:

@一地风飞:

同样的疑惑, 相同的区块体,计算出来的hash值不是唯一的么? 为什么可以重算很多次?

另外一个问题, 每一笔交易,都独占一个区块么?

2018年1月10日 17:16

| #

| 引用

John

说:

@张鹏 有变量 就是 nonce 这个随机数 因为生成的 hash 要达到一定标准才被承认 所以要不断变化 nonce 去碰出一个符合要求的随机数 一个区块上的交易数大于等于一 具体多少由矿工决定 因为每笔交易是带交易费的 交易费根据交易发起人自己设定有多有少 矿工有权选择交易费多的 因此交易费多的更早被打包到区块链

2018年1月11日 08:31

| #

| 引用

张鹏

说:

引用John的发言:

@张鹏 有变量 就是 nonce 这个随机数 因为生成的 hash 要达到一定标准才被承认 所以要不断变化 nonce 去碰出一个符合要求的随机数 一个区块上的交易数大于等于一 具体多少由矿工决定 因为每笔交易是带交易费的 交易费根据交易发起人自己设定有多有少 矿工有权选择交易费多的 因此交易费多的更早被打包到区块链

这个讲的通,谢谢

2018年1月11日 09:59

| #

| 引用

Sean

说:

看了一圈都是英文文字,很難得有國人寫出來。期待著這個系列不斷更新!!加油

2018年1月11日 17:20

| #

| 引用

天空

说:

感谢博主的无私分享。文章写的非常好,我反复看了好几遍,以下是我的一些疑问向您请教一下:

1、区块的计算是持续的,无论网络上面是否有交易都会计算并产生新的区块。因此第一个区块内应该是没有包含任何交易信息的,第一枚比特币是生产第一个区块是奖励给矿工产生的?

2、比特币网络中的节点指的是矿工,而不是在网络上交易比特币的普通用户?

3、需要消耗大量的算力才能产生一个新的区块,目的是为了保证比特币的安全,因此比特币区块链这个算力的设计即是它的优点也是它的硬伤?

4、目前是每产生一个新的区块奖励12.5个比特币,当前市价100多万人民币,如果这个区块包含的所有交易总量只有1个比特币,那么这个奖励和这个交易本身相比是否太高了?这个交易费用和大量消耗的算力是否会成为制约比特币的致命问题?

5、比特币算力日益集中,有没有可能几个矿场联合起来拥有超过51%的算力?

2018年1月11日 23:27

| #

| 引用

test

说:

通俗易懂

2018年1月12日 08:52

| #

| 引用

bboxhe

说:

这矿场配图不会是宝二爷吧。。。

2018年1月13日 15:42

| #

| 引用

foxpsd

说:

「这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。」

这句话怎么理解呢?上一个区块的hash为什么会变呢?不是写入区块链就固定了么?

2018年1月15日 14:49

| #

| 引用

eton

说:

我觉得区块链的设计,还不是很完美,怎么说,就是感觉不是特别靠谱的那种。当然,也可能是我眼界窄

以这个为例

“现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")。按照10分钟一个区块计算,一小时就可以确认”

林子大了,什么鸟都有,万一不止一个人同时达到6个呢,该取谁?继续?那又万一有两个人同时计算出12个,怎么办呢?

有点想不通,求解

2018年1月15日 22:06

| #

| 引用

C.Jay

说:

不是说区块链使用非常有限,而是靠POW工作量证明的共识体系的应用场景特别有限。工作量证明浪费资源,这一点不言而喻。所以才出现了如POS,BFT等其他的共识机制。只是目前POW在比特币上得到了很好的应用。要应用与其他场景,特别是非币圈的POW就不合适了,但还没有设计出其他完美的共识算法(规则),这也是区块链在除了数字货币都还在初期阶段的原因

2018年1月16日 11:20

| #

| 引用

xxxx

说:

又来误人子弟了

2018年1月16日 15:15

| #

| 引用

达达尼黑

说:

区块链和Git有什么相似的地方吗?

2018年1月17日 09:28

| #

| 引用

修行者

说:

区块链的应用场景还是很多的,各种公链便是例证。区块链的应用其实包含币和链两方面。

结合智能合约技术,区块链更是可以产生无穷的想象空间。资产管理、国际支付、版权保护、防伪溯源,数不胜数。

互联网降低了信息传输的成本,而区块链将会降低信任的成本。个人还是比较看好区块链的。

只是区块链的不可控性,倒是对其发展有一定的限制,毕竟官方也不知道怎么来管理它。

2018年1月17日 13:17

| #

| 引用

风一样的男子

说:

文中提到的123的Hash值转化成二进制并不是236位呀,好像是140位?

2018年1月17日 13:46

| #

| 引用

DeanFeng

说:

我又一个问题,如果比较靠前的区块链发生了改变,后面的所有都要重新计算。

是不是交易记录写入后,就不会在改变了?新的交易记录只会在新的区块链被写入。

这也就是所谓历史发生了了就发生了,不能再被更改的意思。

2018年1月19日 09:54

| #

| 引用

老姚

说:

文中说“举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位”

这个hash才40位啊,转换为2进制后才160位。

2018年1月19日 10:02

| #

| 引用

MarvinHoo

说:

引用hc的发言:

阮老师,你好,关于文章的第七点,难度系数的动态调节这个章节里面的难度系数越调越高这句话怎么理解?请详细的解释一下,感谢。其中的动态调节我是理解,不理解的是为什么难度系数会越调越高。

由于技术以及硬件的提升,算出区块的时间相应缩短了。根据动态调节规则,相应的难度系数会越调越高

2018年1月19日 16:03

| #

| 引用

sedic

说:

`a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0`换成2进制是160,明显是sha1算法算出来的

而且123的sha1值为`40bd001563085fc35165329ea1ff5c5ecbdbbeef`

根据上面留言的提示,`123\n`的sha1值为a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0

这个留言是不对的,这个123的hash值并没有包括换行符在里面,是sha1本来就是160位的,等效为40位16进制数,而且以你自己的计算机算出来的123对应的sha1值,一定会跟文章中的一样,肯定是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0,因为是处于同一个有限的数值空间中

2018年1月22日 22:15

| #

| 引用

sedic

说:

我觉得区块链的设计,还不是很完美,怎么说,就是感觉不是特别靠谱的那种。当然,也可能是我眼界窄

以这个为例

“现在的规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")。按照10分钟一个区块计算,一小时就可以确认”

林子大了,什么鸟都有,万一不止一个人同时达到6个呢,该取谁?继续?那又万一有两个人同时计算出12个,怎么办呢?

有点想不通,求解

时间的精度可以达到10E-18以上,这意味着基本不可能同时达到

2018年1月22日 22:24

| #

| 引用

sedic

说:

@一地风飞:

同样的疑惑, 相同的区块体,计算出来的hash值不是唯一的么? 为什么可以重算很多次?

注意hash值是基于区块头算出来的,而每个区块头里有一个独一无二的值,生成时间.....

所以每个区块的hash值肯定不一样

2018年1月22日 22:28

| #

| 引用

sedic

说:

这个留言是不对的,这个123的hash值并没有包括换行符在里面,是sha1本来就是160位的,等效为40位16进制数,而且以你自己的计算机算出来的123对应的sha1值,一定会跟文章中的一样,肯定是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0,因为是处于同一个有限的数值空间中

修正一下错误,echo的确默认会有换行符在里面,可以使用echo -n '123' | sha1sum得到123真正的hash值,40bd001563085fc35165329ea1ff5c5ecbdbbeef,跟之前几位讲的一样

2018年1月22日 22:46

| #

| 引用

ghoulich

说:

引用fogin的发言:

我想知道中本聪是怎么做到动态调整难度系数的, 没有中心,他是怎么做到要求大家都遵守他动态调节难度系数这个规则的?

你的这个提问真是提到关键点上了,在去中心化的环境中,到底是哪个角色负责调整这个动态难度系数,这个问题竟然没有大牛回答,我也想知道。。。

2018年1月23日 16:17

| #

| 引用

spademan

说:

大大,我想问下为啥算出来的hash小于目标值就算是正确的

2018年1月23日 16:30

| #

| 引用

Caliven

说:

引用nextzeus的发言:

传闻黑客攻击了比特币,很好奇是怎么做到的?

攻击的是托管比特币钱包的平台,用户的私钥也是存储的那些平台的。

2018年1月24日 13:12

| #

| 引用

lenhart

说:

个人总结的一些前端数据结构预算法 http://blog.csdn.net/github_38851471/article/details/79159392

2018年1月25日 11:25

| #

| 引用

阿布

说:

"而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。"

这句话会不会有问题? 哈希值相等,原内容可能不相等,可能出现哈希碰撞.

2018年1月26日 09:30

| #

| 引用

tony

说:

引用why的发言:

分叉还是不大懂。

就是在限定的时间里分叉的两个链条哪个最长就用哪条

2018年1月29日 14:52

| #

| 引用

APPLE46

说:

如果hash是256位二进制值,那在257位任意组合的二进制值中就肯定存在hash相同的吧。。

2018年1月30日 15:02

| #

| 引用

无名

说:

有时间是否可以讲讲DAG?

2018年1月30日 17:21

| #

| 引用

xcoderliu

说:

如果github这么搞 估计网络要瘫痪了 呵呵哒

2018年1月31日 09:49

| #

| 引用

yekki

说:

一直没想明白,如果挖出块时并没有交易可写,那么这个块体就是空吧,这样,如果再挖出一个,这个新块是不是接上一个空块,那么空块中以后也不能写入新内容了吧?交易在不停产生,块不够写怎么办?块的产生与交易本质上是异步的,怎么保证交易一定有块可写?

2018年1月31日 16:37

| #

| 引用

阿照

说:

做运营的it小白路过,看了多天的区块链,这个真的是最好懂的。

ps:居然有自己的网页,崇拜ing~

2018年2月 1日 17:45

| #

| 引用

S

说:

引用Nameless的发言:

你这个很多字符串说得真是张口就来。

他说的没错,理论上讲,有无穷多

2018年2月 2日 20:59

| #

| 引用

R4y

说:

引用一地风飞的发言:

还有不少疑问,希望懂的人给解释一下:

1.

不知道这样理解对不对: 区块先生成必要的数据(比如 A转帐给B多少),然后加上会变化的"随机数",来算hash,算出来满足后,就加到链上。如果是这样,这个“随机数”一般是什么?

2. 区块的数据格式有约定吗

以自己的理解一个个回答吧

1. 一个chunk 的确有两个hash, 第一个是上个区块的hash , 第二个是经过挖矿计算得到的.

那么挖矿 的过程, 实际上是把当前区块的内容(有上个hash), 和一个随机数一起, 进行hash.

当然可以很轻松的得到一个值, 所以这里存在一个难度, 比如规定, 得到的hash 必须以000000(六个零开头)那么难度就会大大的增大(具体的要求和这个类似,所以存在难度系数).

一旦这行hash满足了要求, 那么立马全网广播 mined!

2是有固定格式的, 是json和十六进制数 https://webbtc.com , 用区块浏览器可以很轻松的看到

2018年2月 2日 23:52

| #

| 引用

papaya

说:

大约是人类历史上第一次出现了一个拖慢效率、浪费能源、99%以上的努力都只为努力本身的新技术大规模运用的实例了。。。是不是可以看做现有秩序体系在崩溃的一种象征?

2018年2月 4日 18:25

| #

| 引用

as

说:

区块链同步是什么意思?

2018年2月 5日 02:19

| #

| 引用

rgb-24bit

说:

看了那么多教程,最后还是这篇最清晰

2018年2月 5日 18:44

| #

| 引用

Jinyu LIU

说:

"区块链作为无人管理的分布式数据库,从2009年开始已经运行了8年,没有出现大的问题。"

这其实应该是“比特币”,而不是区块链。这是两回事。

2018年2月 5日 20:34

| #

| 引用

Jinyu LIU

说:

"区块链是一种特殊的分布式数据库 ... ... 主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。"

这个表述我认为是有问题的,区块链不能称之为“数据库”,并不是可以存储数据就可以叫“数据库”的。

关于数据库的定义,在中文维基百科中如下定义,https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93,“数据库 ... ...

用户可以对文件中的数据运行新增、截取、更新、删除等操作”。

在 webster 词典中定义如下,https://www.merriam-webster.com/dictionary/database,“数据库是一系列有组织的数据,特别用于快速查询和存取”。

首先,区块链可以新增数据,但是不具备“更新”和“删除”功能。其次,区块链可以存储数据,但是不具备“快速查询和存取“的功能。第三,广义上的区块链是可以存储任意数据,但是目前区块链实际应用最广泛的两个应用,比特币和以太坊,一个只能记录一系列输入和输出的数字,一个只能记录 token,最多是以附言的方式记录简短的一段信息,并不具备数据存储的实用性。

进一步的,考虑到区块链每个节点的都是存储了所有历史信息的这个特点,利用区块链来存储大量数据也是非常不切实际的。

2018年2月 5日 20:44

| #

| 引用

Jinyu LIU

说:

引用strickland的发言:

不是很多,准确的说应该是无数。

但是你在有生之年就是找不到

2018年2月 5日 20:50

| #

| 引用

LeoLiao

说:

引用ghoulich的发言:

你的这个提问真是提到关键点上了,在去中心化的环境中,到底是哪个角色负责调整这个动态难度系数,这个问题竟然没有大牛回答,我也想知道。。。

动态难度系数的调整就是代码里面的逻辑,因为所有节点运行的客户端程序都一样,所以没有那个角色负责调整难度系数。当然调整难度系数也是可以做到的,首先要通过比特币社区的提案,然后开发出新的版本就可以。

2018年2月 8日 15:19

| #

| 引用

uuy

说:

您好,我有一个疑问,如果有人恶意修改当前区块的内容,然后区块失效,这个区块丢失之后,会不会导致当前区块的内容丢失呢?这个内容已经备份到所有的区块里面了吗?

还有一个问题就是后面链接的所有区块都得修改,否则以后所有的区块都断掉了,这个区块里面的内容究竟是全量的,所有区块都相同的,还是只保存当前操作的

2018年2月 8日 17:40

| #

| 引用

rty

说:

“每个区块的 Hash 都是针对"区头"(Head)计算的”

跟下文联系 表达不清楚. 所谓上一block的hash究竟是仅用上一block head生成的, 还是上一block整体直接生成的?

2018年2月 9日 02:32

| #

| 引用

ryt

说:

没讲清楚为什么采矿时会不断算出来不同的hash,什么是变量。对已经确定的上一个block求hash 结果是唯一的。

2018年2月 9日 02:43

| #

| 引用

Simon

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

--这个是hash碰撞对吗?

2018年2月11日 15:25

| #

| 引用

baiyi

说:

@一地风飞:

随机数就是区块数据中的Nonce值

2018年2月13日 20:11

| #

| 引用

回忆i

说:

这个区块链让我看见了神经元的运作,怕是区块链可以加速人工智能的发展甚至直接衍生AI

2018年2月17日 21:17

| #

| 引用

nslam

说:

引用Nameless的发言:

你这个很多字符串说得真是张口就来。

他说的还真没错,确实有很多字符串,或者说这个数字是无穷大。从任意位数到这个256位的有限映射,要说和“123”这个冲突的字符串,不是很多是什么呢?只是很难找到,差异很大罢了,这点他也提到了。

2018年2月21日 15:19

| #

| 引用

zqinfo

说:

区块链怎么用?

用什么工具?

2018年2月23日 23:33

| #

| 引用

zcqshine

说:

引用顾唐散人的发言:

文中对hash值的描述有误,不同的字符串存在hash碰撞的可能性。

256位的 hash 碰撞的几率微乎其微, 所以可以忽略不计

2018年2月24日 16:04

| #

| 引用

genesis

说:

求教:如何根据当前区块中上一个区块的hash计算出上一个区块的内容?

2018年2月24日 16:55

| #

| 引用

DannyPei

说:

@EricJin:

不算有错,不同字符串确实存在得到相同hash的可能,但给定一个确定的hash值,让你找出一个能算出相同hash的另一个字符串,你是极难做到的,这也就基本是文中的意思。就好像123的hash值你能很精准的找到另一个字符串的hash与之相同吗?

2018年2月26日 11:18

| #

| 引用

xiaotian044500

说:

引用达达尼黑的发言:

区块链和Git有什么相似的地方吗?

看来这么想的不在少数啊, 确实挺像的.

2018年2月26日 15:45

| #

| 引用

心心还爱你

说:

大神的这篇文章还是有点儿失水准啊...........................

2018年2月26日 18:34

| #

| 引用

maka

说:

@uuy:

我来回答这个问题,每个节点都下载备份的完整的数据,就算其中一个节点的数据丢失或被改,可以重新下载恢复数据,除非51%以上的节点数据都被修改,但是这种情况非常之困难!

2018年2月28日 14:59

| #

| 引用

qiwihui

说:

我觉得这边博客对于区块链的理解很局限于比特币,而且有些混淆了区块链和比特币。其中关于区块链的应用的描述也很片面:

目前,区块链最大的应用场景(可能也是唯一的应用场景),就是以比特币为代表的加密货币。

如果真是这样的话,那全世界这么多机构画力气研究和部署区块链真的是很令人费解。

所以我赞同一下的发言:

引用心心还爱你的发言:

大神的这篇文章还是有点儿失水准啊...........................

2018年3月 4日 19:18

| #

| 引用

郭鸿程

说:

引用天空的发言:

感谢博主的无私分享。文章写的非常好,我反复看了好几遍,以下是我的一些疑问向您请教一下:

1、区块的计算是持续的,无论网络上面是否有交易都会计算并产生新的区块。因此第一个区块内应该是没有包含任何交易信息的,第一枚比特币是生产第一个区块是奖励给矿工产生的?

2、比特币网络中的节点指的是矿工,而不是在网络上交易比特币的普通用户?

3、需要消耗大量的算力才能产生一个新的区块,目的是为了保证比特币的安全,因此比特币区块链这个算力的设计即是它的优点也是它的硬伤?

4、目前是每产生一个新的区块奖励12.5个比特币,当前市价100多万人民币,如果这个区块包含的所有交易总量只有1个比特币,那么这个奖励和这个交易本身相比是否太高了?这个交易费用和大量消耗的算力是否会成为制约比特币的致命问题?

5、比特币算力日益集中,有没有可能几个矿场联合起来拥有超过51%的算力?

感谢老师这么辛苦的整理文档!

不过如果仅仅用分布式看待区块链,个人觉得欠妥。我认为区块链仅仅是使用了分布式数据库。

所以结论部分,我觉得基本上是不太成立的,具体请参考超级账本的发展。

还有hash计算中的随机值和梅克尔树都是重点,这里没有提到,有时间的话,麻烦老师更新一下吧。然后长链替代短链的机制可以更加具体的说明,比如和难度值是不是有关系。是不是只要长度长就一定能成功替换短的?谢谢!

我看到天空同学的发言,就想回答一下,有不对的地方,烦请老师指正:

1、区块链支持无交易记录也能出块,此时交易记录只有默认的第一条,金额是系统发放的(目前是12.5,达到总量之后是0)+交易费(可能是0)的总和。如果此时有其他交易,交易记录就会变多,但是最多不能超过一个块的容量(1M,升级后的是2M,具体看客户端版本)。比特币所有金额总量是有限的,系统分批次奖励给前期的矿工,之后就停止了。所有的交易,金额只能是从一个账户转移到另一个账户,不能新增。

2、网络节点可以是矿工,也可以是普通用户。可以是客户端,也可以是符合它规则的其他客户端或者恶意软件。只要符合规则(哪怕是带有恶意的)就能加入,这就是去中心化。

3、没错。工作量证明机制,即是优点、也是硬伤。看你的需求。

4、奖励是系统规则,每21000块减半。至于价值(人民币汇率),则是人定义的。汇率高-》有机会赚钱-》激励算力投入-》更加耗费能源;费率低-》可能亏本-》打击算力投入-》不太消耗能源。我倒是觉得是一种合理的情况,没啥问题啊。

5、如果矿场联合起来攻击,那确实有可能。所以比特币在这种情况下,是不可靠的。问题是人家为什么要攻击自己?

2018年3月 5日 11:15

| #

| 引用

hooyes

说:

阮老师总是能找到当前技术热点,标题也起得到位,“区块链 教程” 百度排第一位。

2018年3月 5日 21:21

| #

| 引用

西格玛

说:

有个关于哈希的地方说的不太合适。

a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0理论上有无数个字符串的哈希值是它,只是我们找到这些串的难度极高而已。

说“其他字符串也有可能得到这个哈希,但是概率极低,可以近似认为不可能发生。”可能会让人误认为有可能这个哈希值不存在其他字符串对应。

2018年3月 6日 13:48

| #

| 引用

phoenix

说:

为啥放二爷的尊容?

2018年3月 6日 22:20

| #

| 引用

陈帅k

说:

哇,太棒了吧,讲的十分好,点个赞!

2018年3月 7日 11:33

| #

| 引用

gary

说:

引用qiwihui的发言:

我觉得这边博客对于区块链的理解很局限于比特币,而且有些混淆了区块链和比特币。其中关于区块链的应用的描述也很片面:

片面吗?是全世界看起来都在想法构建区块链,可是有一个落地的应用吗?博主说目前只有比特币一个应用没有错啊。

2018年3月 8日 12:00

| #

| 引用

乌拉拉

说:

真的是一篇很赞的科普文章!但是在区块头的结构图部分有点问题,区块头只包括上一区块的哈希值,并不包括该区块自身的哈希值

2018年3月 9日 10:51

| #

| 引用

说:

总算多少明白了一点

2018年3月 9日 15:27

| #

| 引用

Rain

说:

懵懵懂懂,对于我这种小白来说可能要多看几遍吧

2018年3月 9日 17:08

| #

| 引用

王羊羊

说:

啥时候可以出一套开发教程

2018年3月 9日 17:30

| #

| 引用

Jacky.Ji

说:

真的很通俗易懂

2018年3月11日 21:08

| #

| 引用

但丁

说:

现在大矿主们垄断了算力,是不是可以说去中心化的区块链在某种程度上已经是“有中心”化了

2018年3月12日 13:58

| #

| 引用

guanxianseng

说:

写的不错,个人理解,猜个nonce值,计算hash。难度系数越大,目标hash值越小,越难猜到nonce值。分叉,谁的链长就用谁的,6次。谁的计算能力越强就用谁的。

2018年3月13日 09:51

| #

| 引用

世外

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

举个例子,随便列出几个你说的很多字符串得到的相同hash

2018年3月13日 10:27

| #

| 引用

dreamcatcher-cx

说:

引用顾唐散人的发言:

文中对hash值的描述有误,不同的字符串存在hash碰撞的可能性。

作者不是说了么,其他字符串也有可能得到这个哈希,只是概率极小而已

2018年3月15日 10:12

| #

| 引用

Dennis

说:

看完之后有个疑问。假如现在共有10000个区块,下一个区块10001还未生成,那用Hash = SHA256( 区块头 )来计算10001区块的hash,区块头是不是用10000区块的,如果是用10001区块的区块头,可它还没有生成,显然是没有区块头的。

2018年3月16日 13:56

| #

| 引用

Stephen

说:

“由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链”,感觉这里有漏洞。

假设已有10个区块,如果X->Y->Z节点的计算能力超强(是一般节点的10倍),一直在生成区块。其他节点肯定不是并发,而是也得按顺序,依次生成区块,A->B->C。当A->B->C节点生成3个区块时,X->Y->Z节点已经生成30个区块,Z通过伪装,将早就生成好的区块,按10分钟左右写入一个区块,保证先达到6个区块,这样是不是就能以假乱真了

2018年3月16日 19:59

| #

| 引用

Stephen

说:

@Stephen:

理解错了,难度系数大到,全网并发10分钟,才有一个区块。即使有量子超级计算机,是不是难度系数就可以了?

2018年3月17日 15:50

| #

| 引用

该出手时就出手

说:

写的很好,可是总有愚者看客,读的时候不带着上下文,却咬文嚼字,怕没人知道你的弱鸡。

2018年3月19日 19:14

| #

| 引用

破折君

说:

其实,区块链在某种程度上已经是“有中心”化了,不知道理解的对不对!

2018年3月19日 21:11

| #

| 引用

pk

说:

感觉这东西是劳民伤财的应用。

2018年3月21日 09:23

| #

| 引用

chenjw

说:

引用EricJin的发言:

举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。

而且只有123能得到这个 Hash。

这句话是错的。很多字符串都能得到这个hash,但是他们之间差异很大。

赞同,比如如果我们的原始内容有超过2的256次方种,那么必然有哈希一样的。只能说2个原始数据的哈希一样的概率很低。

2018年3月22日 16:03

| #

| 引用

Aida

说:

建议楼主可以做一下评论分页,

2018年3月26日 13:06

| #

| 引用

罗杰

说:

数据保存在哪里?我的电脑如何加入到链条中?

2018年3月28日 16:43

| #

| 引用

lemontee

说:

@John Shen:

就算hash值一样,生成的区块加入到链中(加上一条的header)也是唯一的吧,毕竟没有谁一次性可以插入两条一模一样的数据到链里。

2018年3月29日 15:39

| #

| 引用

浪桭

说:

请问各位看官,谁看了这篇博文后入门了?

2018年4月 2日 15:32

| #

| 引用

Mr.Panda

说:

前面部分还行~后面就看不懂了。。。

我的智商。。。

2018年4月 4日 00:00

| #

| 引用

佩奇

说:

多个中心相当于没有中心

2018年4月 4日 07:04

| #

| 引用

Eric

说:

Hash冲突的问题怎么解决?

2018年4月 4日 14:52

| #

| 引用

tester

说:

我能说 123 的 SHA256 是 a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3,而不是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0吗...

2018年4月 6日 17:23

| #

| 引用

小胡和小白

说:

想学计算机数据库 但从哪学很茫然 如何去学好?

2018年4月 8日 15:56

| #

| 引用

mall

说:

按照block chain这样的设计,整个系统会运行的越来越慢,因为已有数据链的确认工作量会越来越大啊。

2018年4月 9日 08:32

| #

| 引用

黄河小鲤鱼

说:

我就是来点赞的

2018年4月 9日 15:36

| #

| 引用

YellanSuen

说:

引用nextzeus的发言:

传闻黑客攻击了比特币,很好奇是怎么做到的?

区块链的安全机制是建立在通信安全的前提下的,如果通信不安全,那区块链也就是个笑话了。。

2018年4月13日 13:44

| #

| 引用

HikingTsang

说:

区块链大热,就拿阮一峰老师这篇文章入门吧!

2018年4月19日 11:33

| #

| 引用

梦元

说:

有没有大佬解答下我的疑问:

先总结下:区块分为区块头(header)和区块体(body)。header包含当前区块hash和上一区块hash还有时间戳等信息;body包含账单内容。推论一:Hash = SHA256( 区块头 ),就是说当前区块的hash是根据当前的header当然还有随机Nonce生成的,跟body没有关系。

那么假设一个旷工算出了符合规则的hash值,然后他开始记账,如果它此时改变了区块体body的账本内容(比如说张三给李四转了1btc改成转了2btc),按照上面的推论一hash值不会随之改变的,然后它广播请求此区块同步到全网。问题来了:此时的hash值是符合规则的,那么其它节点怎么知道这笔账单是有被蹿改的呢?或者如何限制旷工不改变区块体呢?

2018年4月27日 11:35

| #

| 引用

哈哈哈

说:

引用哈哈哈的发言:

同问?body中随便改,不会影响整个块的hash?那么下一个节点也不会收到影响

当前hash是由body产生的,不是由head产生的,body一改变,hash就会变,下一个节点就断开了,除非将之后所有的节点hash都改一遍。

2018年4月28日 09:25

| #

| 引用

galaxy

说:

看完所有评论,只能说杠精真多,比如什么有无穷多可能碰撞,不好意思,容我笑一会,嗯,就你懂,别人都不知道会有碰撞,嗯,理论上有多少多少,呵呵。还有有的人搬出来维基百科的阐述来定义"数据库",对对对,你下的定义才叫数据库,其他的都不是正宗的"数据库"。还有一些冷嘲热讽的,啧啧啧,有本事拿出来嘛,酸言酸语的谁不会?

2018年5月 1日 10:11

| #

| 引用

袁波涛

说:

看了好多阮老师的文章,涨了好多知识,好想了解马尔可夫链,能说一下吗!

2018年5月 7日 16:34

| #

| 引用

罗啦啦

说:

引用乌拉拉的发言:

真的是一篇很赞的科普文章!但是在区块头的结构图部分有点问题,区块头只包括上一区块的哈希值,并不包括该区块自身的哈希值

对,你说的对,我刚看的时候也觉得有问题,区块主标识符是它的加密哈希值,一个通过SHA256算法对区块头进行二次哈希计算而得到的数字指纹。产生的32字节哈希值被称为区块哈希值,但是更准确的名称是:区块头哈希值,因为只有区块头被用于计算。并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。请注意,区块哈希值实际上并不包含在区块的数据结构里,不管是该区块在网络上传输时,抑或是它作为区块链的一部分被存储在某节点的永久性存储设备上时。相反,区块哈希值是当该区块的下一个子区块从网络被接收时由每个节点计算出来的,该子区块将会把这个父区块的Hash值写进自己的区块头里。区块的哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。

2018年5月10日 19:43

| #

| 引用

骨哥

说:

第三节“区块”部分中,区块头中包含的有“上一区块头的HASH”,而并非“上一区块的HASH”。

2018年5月16日 10:44

| #

| 引用

fantaxy

说:

@梦元:

header中有一个字段是body的hash,所以修改了body肯定会导致header的hash变化。

2018年5月28日 22:29

| #

| 引用

ro

说:

只用hash head来做hash运算是不准确的,还要包括验证过的交易

2018年6月 9日 11:24

| #

| 引用

哇嘎嘎

说:

浅显易懂

2018年6月23日 21:33

| #

| 引用

rocky

说:

意思是说,如果往里面写数据,就每个区块都写入相应的数据,是这样吧?

2018年6月25日 16:17

| #

| 引用

萝卜

说:

感谢阮老师的文章,我打算以您这三篇文章为基础,入门区块链。

下面一段话,是有问题的:

举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。

首先,这段哈希码是 40 个十六进制字符,转换成二进制,该是 160 位。

另外,字符串 123 的哈希值,我算了一下,如下,

"md5 202cb962ac59075b964b07152d234b70"

"sha1 40bd001563085fc35165329ea1ff5c5ecbdbbeef"

"sha256 a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"

与您的数据对不起来。

我不知道您的引用从哪里来的,百度了一下,这段多是引用您的,我也没有找到源头。

推测,您这里是 160 位,sha0 和 sha1 都是 160 位输出,我没有找到 sha0 的方法,估计是很久以前,某人用这个算法生成的摘要。但我没找到验证的工具和办法。

2018年6月29日 12:54

| #

| 引用

萝卜

说:

经验证 a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0 是 123\n 的 sha1 码。

解决过程很神奇,我会写成一篇文章,发到我的公众号 沉思的萝卜 上,敬请期待。

2018年6月29日 15:17

| #

| 引用

action

说:

有个问题请教下老师和各位师兄: 节点存不存在离线的情况呀?如果某一时间很多节点不在线,那么最新的一笔交易记录怎么同步到所有的节点呢?不能等他们上线了再同步吧?

2018年7月 4日 10:34

| #

| 引用

22

说:

引用zhiyang的发言:

比特币的中心思想好像就是这个,去中心化,每进行一笔交易,周围所有的节点都会知道这笔交易

0000

2018年9月21日 15:31

| #

| 引用

李春林

说:

引用千帆万桅的发言:

区块头中包含区块体的 Hash,如果一个区块的实际数据发生了改变,那么区块体的 Hash 就会发生改变,这一改变会导致当前区块的区块头发生改变,从而使得区块的 Hash 发生改变,当前区块的 Hash 发生改变又会引起下一个区块的区块头发生改变。如此一来,产生了骨牌效应。

修改一个区块时,如果不能同时修改后面所有的区块,就会导致当前区块与后面的区块失去连接。所以合适的做法就是不去修改区块。可是万一就有人非要去修改区块该怎么办呢?上面提到的这种联动机制看起来只会使得修改区块后果严重,并不能阻止修改区块的行为。

如果你只修改你自己的区块那么需要51%的其他机器同意才能写入,也就是你要修改其中某一个区块但是你不修改之后的所有区块,每一台机器都不会同意你写入,就不会实际写入主链。

2019年3月 6日 16:55

| #

| 引用

无知

说:

引用天王盖地虎的发言:

作者似乎把区块链和比特币混为一谈了。

比特币用的是区块链的知识,也可以说比特币是区块链的应用场景之一。

2019年3月 6日 17:01

| #

| 引用

业余草

说:

“每个节点都是平等的,都保存着整个数据库。”那我的数据库是不是越来越大,大到普通矿机都无法处理这么大的数据。未来是不是只有超级计算机才能支持其他人的查询?

2019年6月25日 13:46

| #

| 引用

kbs2936

说:

阮老师文中的 targetmax 值应该是写错了,正确的应该是下面那个:

targetmax = 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

2019年8月16日 17:01

| #

| 引用

京灰

说:

你好博主,请问几个小问题:第一个区块记录的是什么呢?50个比特币的奖励是谁来发放呢?

2019年10月27日 15:31

| #

| 引用

李晓铭

说:

请问博主,矿工们如何收集交易请求啊?我有一个交易,如何发给矿工呢?这个过程,需要一个中心转发吗?矿工们之间如何联系呢?

就像bt技术一样,最终离不开一个中心来发布种子和登记提供bt服务的ip地址,比特币和区块链能完全脱离一个中心吗?

2019年12月18日 17:39

| #

| 引用

agiler

说:

引用顾唐散人的发言:

文中对hash值的描述有误,不同的字符串存在hash碰撞的可能性。

从长到短,肯定有碰撞,要不然变成压缩算法了

2020年9月28日 15:29

| #

| 引用

agiler

说:

如果我修改的是链上最后一个节点呢,也需要强大的运力?

2020年9月28日 15:31

| #

| 引用

spring

说:

如果计算了2亿多次还未计算到符合要求的hash,这时,协议允许矿工改变区块体,开始新的计算。作者对此能有进一步说明吗?这种计算完2亿多次还没计算出结果的情况多吗?,改变区块体怎么改变?有没有什么规则或说明改哪里。

2021年4月21日 13:28

| #

| 引用

Nil

说:

引用spring的发言:

如果计算了2亿多次还未计算到符合要求的hash,这时,协议允许矿工改变区块体,开始新的计算。作者对此能有进一步说明吗?这种计算完2亿多次还没计算出结果的情况多吗?,改变区块体怎么改变?有没有什么规则或说明改哪里。

首先是改变随机数,然后coinbase交易里有的字段也可以更改

2021年10月 3日 18:18

| #

| 引用

ww

说:

当今社会,把区块链看作是下一代革命技术,我看未必,目前已成为传销组织的洗脑利剑。

2021年12月16日 09:50

| #

| 引用

yx

说:

“如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了。”

如果我篡改只是想搞破坏呢?我不需要改很多区块,我就改一个

2022年10月27日 20:26

| #

| 引用

我要发表看法

您的留言

(HTML标签部分可用)

您的大名:

«-必填

电子邮件:

«-必填,不公开

个人网址:

«-我信任你,不会填写广告链接

记住个人信息?

正在发表您的评论,请稍候

«- 点击按钮

Weibo |

Twitter |

GitHub

Email: [email protected]