米霖 2024
我们通常把比特币的发明看成是区块链诞生的标志性事件。但区块链就像很多技术一样,并不是凭空出现,通常都会有一些渊源。 1991年,比特币发明出来的17年前,斯图尔特·哈伯(Stuart Haber)和W.斯科特·斯托内塔(W. Scott Stornetta)就提出了区块链的前身。他们创造性地把一系列区块链接起来,最终保证了电子文档的时间戳不可篡改。一年之后,他们升级了这套系统,往其中加入默克尔(Merkle)树。得益于此,系统的效率大大提升,可以在一个区块中放入一组文档。 通过 Hash 链接在一起的区块、默克尔(Merkle)树,构成了比特币诞生的基础,这些最终都成为区块链技术的重要组成部分。
2008年10月31日,一名叫中本聪(Satoshi Nakamoto)的用户在密码学的邮件组中发了一个链接,链接指向一篇叫作《比特币:点对点的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)的论文,标志着比特币的诞生。
论文中详细介绍了如何使用点对点技术创建一种电子货币(数字货币)。
2009年1月3日,中本聪挖出了比特币的创世区块,标志着比特币网络正式上线。中本聪在挖出创世区块的过程中获得了50个比特币的矿工奖励,同时他在创世区块中留下了这句话: The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.(2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘) 这句话是英国《泰晤士报》当天的头版文章标题。通过对头版头条的引用证明了比特币的实际上线时间。
早期数字货币探索: 1983年,戴维·查姆(David Chaum)和史蒂芬·布兰德斯(Stefan Brands)开发了ecash协议,基于ecash协议,不少人发明了多种电子现金系统。 1997年,亚当·巴克(Adam Back)开发了hashcash协议,主要是为了解决垃圾邮件泛滥的问题,其中用到的技术就是后来被比特币使用的工作量证明算法(proof-of-work)。 1998年,戴伟(Wei Dai)发明了b-money,尼克·萨博(Nick Szabo)发明了bit gold。两者被认为是最早的分布式加密货币。 这一切可以被认为是比特币的前身,它们都或多或少地影响了比特币的设计。 2008年8月18日, bitcoin.org 域名注册, 2008年10月31日,密码学(cryptography)邮件列表中收到了一个叫中本聪的人发表论文《比特币:点对点的电子现金系统》。
2009年1月9日,知名代码托管网站SourceForge上发布了第一个开源版本的比特币客户端。 2009年1月9日,作为比特币的早期支持者和贡献者的程序员哈尔·芬尼(Hal Finney)下载了比特币客户端,2009年1月12日,哈尔·芬尼(Hal Finney)收到了中本聪的 10 枚比特币的转账,这是比特币历史上的第一次转账。 2010年5月22日,程序员拉斯洛·汉耶兹(Laszlo Hanyecz)用10000枚比特币购买了Papa John‘s的两份披萨。这是有记录的第一次在现实中发生的比特币交易行为。 2012年9月,比特币基金会成立,旨在通过开源的协议来加速比特币在全球范围内的增长。 2013年10月29日,加拿大公司发布第一个比特币 ATM,允许用户在咖啡馆里直接购买和出售比特币。 2017年8月1日,比特币发生共识分裂,分叉出 Bitcoin Cash (BCH) 链。 2017年11月28日,比特币价格首次突破1万美元。 2021年11月10日,比特币创下历史最高价达68928.9美元
比特币是一种基于分布式网络的数字货币,与传统的货币不同,比特币不是在任何政府的支持下发行的货币,也不依赖中心化的银行来记录相应的账本。
如何让比特币的分布式网络中的所有节点,按照一个统一的规则行动,以便最终形成一个所有人都认可的公共账本?
在分布式系统中,如何多台计算机如何同时运行同一个任务,一直是一个“难题”,在比特币系统中,需要如何保持各个节点的账本数据(通常称为“状态”)一致呢。 这就需要各节点达成一个“共识”,所有节点按统一的规则行事。
比特币网络中的所有节点都会接收到一组交易记录(记录作为一个区块保存),然后把这个区块更新到本地的账本记录中。如果节点都随意增加记录,那么整个比特币网络中的记录就无法保持一致。为了保持记录一致,那么必须确认哪个区块被优先写入,也就是需要以某一个节点的操作为准。但如果人为规定以某个节点为准,就意味着这个节点比其他节点更权威,相当于变成了一个中心节点,那么去中心化的优势就荡然无存。
比特币使用的共识算法叫做PoW共识机制,全称是Proof of Work(“工作量证明”),率先完成工作量证明的节点,拥有区块写入权,其他的节点以此区块的基础上(在最长链的基础上)进行后续交易记录的工作量证明。
工作量证明中最重要的是计算一个数学难题,解此难题唯一的方式是不断的尝试,直到试出“答案”,率先完成解答的节点可以获取一笔奖励,最初奖励是每个区块50个比特币,之后每大约4年减半,当前为每区块 6.25 比特币。由于完成工作量证明有一定的随机性,通常这个过程也称为“挖矿”,参与挖矿的节点,则称为“矿工”。
矿工的收益不仅仅包含出块奖励,同时还有交易手续费收益,根据中本聪的设想,当出块奖励越来越小后,矿工的收益将主要来自于交易手续费。
比特币发行量都来自于比特币的出块奖励,按共识规则初始出块奖励是 50 比特币,之后每隔21万个区块奖励减半,每个区块的生成时间大概是10分钟,因此大致是4年减半一次,大约到 2140 年,比特币的出块奖励就趋于零,此时产出的所有比特币数量将非常接近 2100 万枚。
比特币具有的“货币”的特性,如:可流通性,可交易性,可存储性,可分割性,同时对比法币,有更好的稀缺性。
但比特币价值并不是由中央权力机构赋予或物理特性(贵重金额)决定,而是由广泛的共识来决定。
由于比特币与黄金有很多的相似性,如:稀缺性、价值存储工具,加上比特币的数字特性,有很多人把比特币称为“数字黄金”, 很多机构购置一部分比特币作为储备来对冲美元风险。一些受美元制裁的国家也在加大比特币的采用率。
从比特币的特点上来看,比特币是去中心化的,主要特点如下:
比特币不需要任何权威机构的背书。 比特币是点对点网络,没有中心化的服务器存在。 比特币的账本数据存储在区块链中,而区块链本身存储在千千万万的节点中,没有一个中心化的存储设备。 比特币账本数据面向所有人公开,任何人都可以把它存储到自己的机器中。 比特币网络没有管理员,比特币网络中的所有节点共同管理比特币网络,维持比特币网络的运行。 任何人都可以成为比特币网络的一个节点,从而具备和别人同等的管理权。 比特币网络中任何节点都是同等地位,它们都可能获得下一个区块的记账权。 由于比特币可能由任意节点凭空产生,所以比特币的供应也是去中心化的。 和传统银行不同,任何人都可以生成任意数量的比特币账户,不需要任何中心化机构的审批。 任何人都可以在比特币网络中发起转账,不需要任何中心化机构的审批。
但是,在现实中,比特币也有一些中心化的倾向,由于奖励机制是凭空生成的比特币,所以比特币网络中的节点争夺记账权的欲望通常比较强大,结果造成了大量的节点联合起来,共同去争夺记账权。当联盟中的任意节点获得记账权,就会把得到的比特币和联盟中的其他节点分享。因此,这种联盟造成了比特币网络节点某种程度上的中心化。这种联盟就是我们经常听说的比特币矿场。
作为比较,我们先回顾下现实的银行系统:
首先我们需要使用个人信息(如身份证)给银行,银行给我们开户,开户时确立了我们对该账户的所有权。 进行支付的时候,银行对交易双方账户余额进行增减。 但比特币是一个去中心化的系统,没有这样的第三方,它是如何确定某个账户的比特币是属于谁的?这个问题等同于谁可以使用这个账户的比特币?
在比特币的公共共享总帐本中,记录了所有地址持有的余额,比特币的账户是用地址来表示。
当需要转账时,发送一笔类似的交易(为了理解做了简化):
"from":"1ABzp1eP5QGefi2DMPTf..."
"to":"3FRdnTq18LyNveWa1gQJcgp..."
"amount":"1 btc"
当然比特币节点需要这笔交易是谁发起的,只有当由地址 1ABzp1eP5QGefi2DMPTf… 发起才是真正有效,因此要求发起人对交易信息进行签名,签名是用地址 1ABzp1eP5QGefi2DMPTf… 对应的私钥进行的。
当我们创建一个比特币地址(账户时),会首先生成一个随机数作为私钥,然后根据椭圆曲线算法(ECDSA)计算出公钥,然后在根据哈希运算及校验编码得到比特币地址。
目前比特币有三种地址类型:
1ABzp1eP5QGefi2DMPTfTL5SLmv7DivfNa
3FRdnTq18LyNveWa1gQJcgp8qEnzijv5vR
.公钥及地址是公开的,私钥这是保密的,私钥推导地址的过程也是单向的,无法通过地址反推到公钥及私钥 .
因此当我们持有某地址的私钥,就是持有该地址下的比特币,因此私钥必须妥善保管。
实际上,在比特币账本中,并不是的记录某个账户的余额是多少(和以太坊的账户余额模型不一样),比特币引入了一个“未花费的交易输出”(UTXO: Unspent Transaction Output)概念,一个 UTXO 代表 “一整块” 的可以使用比特币。UTXO 作为交易的输入。
一个 UTXO 在交易时可以产生多个 UTXO ,比特币的交易时不断消费老 UTXO 产生新的 UTXO 的过程,当一个 UTXO 被作为交易的输入后,就不再是未花费的了(STXO),在某个时间点,所有 UTXO 的集合都被称为 UTXO 集。比特币节点会追踪 UTXO 集,从而确定哪些代币未被花费,以及哪些人可以花费它们。从而避免双花(Double Spend)问题。
UTXO 其实是包含一定数量的比特币(以 “聪(satoshi)” 为单位)以及花费这些比特币时所需满足的条件(叫做 “锁定脚本(locking script)”),当我们要使用一个 UTXO 时,就是对用私钥 UTXO 进行解锁(签名),以便使用其中的比特币。
UTXO 是不可分割的最小的交易单元,如果我们想要花费的比特币数额低于 UTXO 的面值,那该怎么办呢? 我想给小李发送 0.5 BTC,我的 UTXO 面值为 1 BTC,由于必须通过交易花掉一整个UTXO的 BTC,因此我们需要创建另一个UTXO输出作为找零。 好比我们用一张 100 元纸币去买 10 块钱的东西,需要找零 90 块。这就是比特币交易的关键特性。
出于安全性和匿名性的考虑,应该总是使用新比特币地址,来进行找零。
这个是我在区块链浏览器中截下的一个交易(链接),我们可以看到这个交易有一个 UXTO 输入,两个 UXTO 输出。
交易的 “Fee” 显示的数值,其实是 UTXO 总输入和 UTXO总输出之间的差值。
交易结构中没有指明交易费,交易费总是动态计算得出的,在创建交易时,我们要确保输出总是略低于输入,以便让矿工计算交易费是多少。 交易费由矿工收取,用来其补偿保护网络安全,也是其重要的收入来源之一,如果没有交易费,由些矿工会阻止其在网络中广播。
在日常使用过程中,通常是借助钱包软件来完成交易的,因此钱包本身不保存资产,资产是在记录比特币网络账本中的(通常称为保存在链上)。 钱包为了显示你的比特币 “余额”,钱包软件必须在比特币区块链上查询所有由你的私钥控制的 UTXO,然后将这些 UTXO 的值相加,并显示最终余额。
如果想花费 1 BTC,钱包会检查你所有的 UTXO 加起来是否有 1 BTC。如果有的话,钱包就会使用这些 UTXO 作为输入来创建另一笔交易。
钱包实际是一个管理私钥(生成、存储、签名)的工具。
支持比特币的钱包很多,例如:imToken、Trust Wallet、Math Wallet、Ledger(硬件钱包)、Trezor(硬件钱包)等。 我们应该尽量选择开源、知名度大、大额资产还可以使用硬件钱包。
那么一笔交易最终是如何进入区块链的 ?
主要有这么几个阶段:
发起交易及交易签名
节点验证交易有效性
使用工作量证明挖掘新区块
首先是创建一笔交易, 一笔比特币交易主要由以下元素组成:
创建比特币交易是在钱包内完成的,而不是在节点上,因此可以在离线的情况下创建交易,交易创建后,通过比特币节点发送到比特币网络中。
无论交易来自哪里,交易就得先被节点的交易池(mempool)接受。交易池就是未确认交易的缓存,以便矿工从中挑选出手续费率最高的交易、打包到区块中。
当然矿工有首先检查交易是否有效,例如检查:
所有有效的交易会传播给网络中的所有节点。
矿工得到前一个区块的哈希值之后,就可以开始挖下一个区块。创建一个新区块的过程差不多是这样的:
矿工从从交易池中找出最优的一组交易(在一个区块限制下,手续费收益最大),给这组交易创建merkle树, 然后不断的执行暴力哈希运算,以求解出满足一下 Hash 目标值的nonce值:
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + nonce )) < HASH 目标值
挖出的区块由于包含了上一个区块的 Hash,通过这个方式把所有的区块串联起来了,区块挖出之后,会迅速的广播的网络的其他节点,只有当一笔交易被包含进一个带有有效工作量证明的区块,并且该区块被整个网络接受之后,我们就说这笔交易 “被确认了”,此时才可以认为资金的转移已经完成了。
矿工软件通常由个人、团队或组织开发和提供。在比特币网络中,有许多不同的矿工软件可供选择,每个软件都有其独特的特点和性能。这些矿工软件可能是开源的,也可能是商业化的。
一些知名的比特币矿工软件包括:
Bitcoin Core: Bitcoin Core 是比特币网络的官方客户端软件,它包含了完整的比特币节点功能,并提供了挖矿的功能。Bitcoin Core 是开源软件,任何人都可以查看其源代码并自行编译使用。
CGMiner: CGMiner 是一款专门用于挖矿的开源软件,它支持多种不同的挖矿硬件,并提供了丰富的功能和配置选项。CGMiner 可以在多个操作系统上运行,包括 Windows、Linux 和 macOS 等。
BFGMiner: BFGMiner 是另一款流行的开源挖矿软件,它也支持多种挖矿硬件,并提供了类似于 CGMiner 的功能和配置选项。
EasyMiner: EasyMiner 是一款易于使用的挖矿软件,适用于初学者和非技术用户。它提供了直观的用户界面,并集成了挖矿池选择和配置等功能。
需要注意的是,虽然有许多现成的矿工软件可供选择,但一些技术较强的矿工可能会选择自行编写定制化的挖矿软件,以满足其特定需求和性能要求。自行编写矿工软件需要深入了解比特币协议和挖矿算法,并具备相应的编程技能和经验。
比特币诞生的几年后,人们开始意识到区块链技术本身的潜力,慢慢走出了自己的发展路线。 通常区块链被定义为一种去中心化的分布式账本技术,最初用来记录信息,使记录具备不可篡改性,因此不需要额外的第三方机构来证明记录的真实性。
随着以太坊的出现,还可以以去中心化的方式运行程序(智能合约),确保程序的运行不被干预、篡改,使区块链成为一个公共的计算平台。
狭义上说区块链是一种区块通过 Hash 方式形成的链式结构,因为链的环环相扣,任何一个区块上的修改,破坏链结构,
区块由参与网络的节点独立生成,每一个区块中存储了一组交易信息,这些交易信息的哈希数据为作为默克尔树节点存储存储,每个区块同时存储前一个区块的哈希信息,因此区块就通过哈希信息链接起来,形成区块链。
广义来讲区块链定义为一个共享的、不可篡改的账本,可用于记录网络中的交易和跟踪“资产”流转。 这里“资产”可以是任何有价的东西, 可以是货币、股票、土地、知识产权、品牌等,当他们在区块链网络上、公开透明的流转和交易是,可降低各方面的风险和成本。
在经济活动中,往往是依靠信息进行决策,信息的真实性、信息的传递速度和多业务决策至关重要,区块链是用于传递这些信息的理想之选,因为它可提供即时、共享和完全透明的信息,这些信息存储在不可篡改的账本上。
区块链包含 3 个关键元素:
分布式账本技术 所有网络参与者都有权访问分布式账本及其不可篡改的交易记录。
不可篡改的记录 在交易被记录到共享账本之后,任何参与者都不可以更改或篡改交易。
智能合约
2013 年,Vitalik 提出了以太坊,创造性引入智能合约,智能合约是区块链上可执行的代码,用户可以根据自己的业务需要上传自己的代码到以太坊上,由以太坊的节点来进行执行。极大的丰富了区块链的执行程序能力。
智能合约是链上的程序,为什么叫智能合约呢?“合约”是取材自现实中的合约,是想强调链上的程序可以按协议规则执行,就像法律条款一样。“智能” 主要是强调不受干预的可自动执行。
在以太坊提出之前,比特币这样的加密货币的交易脚本可实现的功能非常有限,以太坊对此进行了改进,它让交易发生的同时可以执行一段代码。让交易本身具备了逻辑执行能力(并且是图灵完备的),让我们可以在链上完成任意复杂的运算。比如有的交易要分期付款,或者多方参与的借贷。像保险合同的执行也是有事前约定的条件,这些合约条件的执行使用智能合约可以轻松实现。 当区块链中可以存储代码和执行代码,给我们带来了无限想象空间。
由于区块链是一个分布式网络,网络中的节点都是独立运行,因此需要有一个公共规则来知道节点的运行,即共识机制。常见的共识机制有:
POW:Proof-of-Work, POW 要求节点进行大量的计算(查找满足一定条件的解)来证明其贡献,首先解决计算问题的节点获得报酬,这个过程也称为“挖矿”。
当前使用 POW 的区块链有: 比特币、比特现金(BCH) 、莱特币(Litecoin)、门罗币(Monero)、字节元 Nervos 、以太经典(ETC)
这是一个工作示意图:
工作量证明是被认为是最安全可靠的共识机制,在确保网络的安全性和可持续性得到了比特币网络长期的实践考验。
此外,POW机制也不需要参与节点对其它参与者的信任,而是依赖于节点本身的计算能力,参与网络的无需许可性,从而可以更好地确保网络安全和可靠性。
缺点主要在于它消耗大量计算能力和电能,从而带来了较高的物理成本,在比特币网络实际挖矿中,往往数千台设备组成矿池同时挖矿,不同的矿池相互竞争,根据报告比特币的能源消耗已经达每小时14.79TWh,相当于全球总电量的0.5%,相当于每年全球汽车的消耗量。
另外,由于算力争夺过于激烈,一些矿工会抱团,形成超过 50% 算力的情况,那么就可以对链发起 51% 攻击。
双花攻击通常是这样的:
攻击者在实施攻击前,会进行隐身挖矿(如下图橙色链),出块不进行广播,由于攻击者拥有更多能力,他在橙色链上挖矿的速度更快。 攻击者矿工在橙色链上修改他自己的交易,当橙色链比主链更长了,攻击者矿工便会立即向全网广播这条橙色链,而其他的矿工发现了这条橙色链后,按照协议,他们必须丢掉原本的主链,替换成这条橙色链,就完成了一次双花攻击。
当然,要实现对比特币双花攻击是非常困难的,攻击者除了花费巨额资金在挖矿硬件上,还需要大量的电力进行支撑,随着比特币网络算力越来越大,这种攻击可能性也就越来越小。
在以太坊切换到 POS 共识之前,以太经典就多次出现过 51%算力攻击,因为以太经典算力较小,当某恶意矿工把以太坊算力切换到以太经典时,很容易出现算力占比超过 51%,从而发起攻击。
POS: Proof of Stake, 节点争夺记账权依靠的不是算力而是权益(占比),权益通常是通过质押数字货币计算而来。PoS同样需要计算哈希值,当拥有的权益越多,满足Hash目标的机会越大,获得记账权的机会越大。同时质押的货币也作为抵押品防止作恶,如果节点有恶意行为,其抵押品可以被罚没(Slashing)。
在 POS 共识中,节点被称为验证者。
在实践中,各个不同的区块链有自己不同的实现方式,如引入持币时间来计算权益、引入委托质押(DPOS )用更少的共识成本换取更大的吞吐量 (TPS)、或使用投票方式,如BTF 类算法多区块投票。
当前使用 POS 的区块链有: 以太坊 (ETH)、波卡(DOT)、Cosmos (ATOM)、Tezos (XTZ) 等。
以太坊是工作量证明切换到权益证明
相比 POW ,不需要消耗大量能量,
POS 出块时间稳定,有根号的“快速最终性”, 通常吞吐量(TPS每秒链上交易 ) 表现都更加优异。
随着 POS 的成熟、越来越多新区块链使用 POS 共识。
不够成熟,仍旧在不断的发展之中, 例如,POS 共识出现过公地悲剧、长距离攻击(Long range attack)和无利益攻击(Nothing-at-stake attack)等问题,这些问题的解决仍不够简洁,也没有得到足够长时间的检验。
另外,参与POS共识需要质押货币,这笔交易需要当前的验证者确认,这相当于是需要获得网络认可,当网络被恶意大的验证者控制时(其拥有超51% 的权益), 它可以对某些交易进行审查,阻碍新参与者进入,从而对网络产生永久性的损害。
以下是POS参与共识的示意图:
POA: Proof-of-authority,是基于声誉(reputation)的共识算法,思路是选出中央权威来统一状态。 所有的交易,节点间不用相互同步,而是统一发送到权威节点(可能多个),由它来验证交易。在验证并签署交易之后,普通节点都从权威节点同步数据。主要用于联盟内共识。
POA 优缺点非常明显,POA 性能非常好,缺点是过于中心化,对权威节点的攻击,将造成网络瘫痪。
各种共识机制没有绝的好与坏,更多的是 “不可能三角” 的权衡。
不可能三角是去中心化(Decentralization)、可扩展性(Scalability)、安全性(Security),三者不可兼得,三者只能得其二。
这里选择了 3 类主要共识机制介绍,还有一些其他的共识机制,如 Solona 链使用历史证明 POH (Proof of History)与 POS 的结合,Filecoin 的存储证明(复制证明 + 时空证明)等,很多团队仍在共识机制上研究探索、希望有所突破。
区块链和传统系统一样,随着时间的推移,系统可能更需要升级加入新功能,或是升级解决出现的漏洞。在区块链上,升级通常会表现为链的分叉。
因为区块链是分布式系统,每次升级,需要所有的节点客户端软件共同升级,有时一些节点因为利益或理念的不一致,拒绝升级到新的客户端,此时网络中将出现两个版本的客户端,运行新软件的节点就会用新的协议去构建新的区块,原有的客户端节点会继续用旧的协议来继续构建区块,各节点不认可对方的区块,此时就是会分叉出两条完全不同的链,这就是区块链的分叉,这种情况是硬分叉。
硬分叉是共识的分裂或者改变,比特币历史上发生过一次轰动的分叉,比特大陆为首矿工集团与BTC Core为首的核心开发者团队就比特币扩容问题发生了意见分歧,比特大陆提意使用更大的区块,而开发者团队则反对,最终比特币在高度478559时,硬分叉为比特币(BTC)和比特币现金(BCH)两条链,之后 BCH 又分叉出了 BSV 等多个链。
以太坊社区也因一起黑客事件,生过一次轰动的分叉,北京时间2016年6月17日,以太坊THE DAO被黑客进行攻击,损失了数千万美元的ETH,由于损失巨大,一部分人希望修改源码,强行“夺回”黑客控制的币。另一部分人则认为代码及法律,不认同这个修改,也分裂出两条链,后者即是以太经典(ETC)。
最近以太坊升级到 POS 共识 ,也有一些矿工不认同此次升级,分叉出了 EthereumPoW(ETHW)。
在发生硬分叉时,也会伴随一些安全风险,如一个链上的交易可能被在另一个链重放,另外分裂的共识双方对“正统”名号的争夺,会导致币价剧烈波动,另外链上运行的应用会同时运行在两个链上,可能在某一条链上完成归零。依赖某些外部条件(如预言机喂价)的相关合约可能完全失效。
不过,总体上我们应该平常性看待硬分叉,它是区块链进化的方式,所有人有自己选择的自由,硬分叉短时间内是共识的分裂,不过历史经验是,随着时间的推移,共识又由重新凝聚,并且比以往更强大。
还有一类被称为软分叉,软分叉向后兼容,没有更新的节点仍然会仍可新版本生成的区块,当升级后的区块链将无法识别尚未更新的节点的区块。
在区块链没有升级时,也偶尔会发生瞬时分叉(短距离的分叉),通常在 POW 链中,两个节点同时竞争到出块权,此时形成一个短暂的分叉,直到某个分叉产生下一个区块,根据最长链原则,分叉自动消失。连续多个区块上有多个节点同时竞争到出块权的概率几乎为 0,因此这类分叉的距离非常短,只有1 2个区块,这也是为什么的链上的交易,等待数个区块后,就当作具有确定性了。
按照开放程度,区块链分为三类:公链、私链、联盟链。
公链的去中心化程度高,是一种公开、透明的区块链,区块链上的信息对任何人都可见,任何人都可以在链上发起交易,任何人都可以按共识接入区块链。
公链也是全球的,没有人可以修改链上数据、也没有机构或组织能够关闭一条公链,公链只会因为失去共识而凋零。
除了以上性质,公链还应该具备:
这些可以用来衡量一个公链的去中心化程度。
私链是一种不公开、只有被授权的节点才可以参与并查看数据的私有区块链,也称为许可链(permissioned blockchain)。 私有链通常用于组织内部,链的读写权限掌握在某个组织手里,私链是中心化的区块链,由于省去了共识的过程,可以具备很快的交易速度及交易“0”成本。
和公链相比,私链有以下不同点: 作为用户,必须得到私链拥有者的许可才能够发起转账和查询操作; 作为节点,也需要许可才能加入私链网络;
要注意的是,私链的代码也可能是开源的,开源不表示是公链。 私链对很多企业来说是首选。因为对于企业来说,企业内部的各种信息并不能公开,这和公链的透明性正好互相冲突。 私链的拥有者对私链有最高的权限,其权限远远高于其他参与方。比如,拥有者能随时关停私链,也可以在需要的时候进行分叉以此实现记录回滚等操作。
在私链中,可以不用对出块节点进行代币奖励。因此,代币在私链中并不是必需项。当区块链中没有代币也就成为了无币区块链。
联盟链由多个组织共同拥有,由联盟内成员节点共同维护,节点通过授权后才能加入联盟网络。
从价值上看,联盟链可以让不同的组织之间共享数据,能很好地提升商业行为的效率。同时,因为有多个参与方,各参与方之间互相博弈,因此联盟链可以兼顾到私链的高效率和公链透明和不可篡改优势。
联盟链十分适合应用于在行业内多个企业、或企业的上下游一起使用。
、 你可能已经听过 Layer1 Layer2 这样的术语,这是区块链在不可能三角限制下进行垂直方向上的扩展。
以比特币及以太坊为例,去中心化及安全性是比特币,以太坊的基石,正是这些才保证中立、抗审查、开放性等特性,但这在某种程度上牺牲一些可扩展性来换取而来,比如:比特币网络每秒可处理的交易不足 7 笔,以太坊每秒可处理的交易通常也只有几十笔。而Visa这样的电子支付网络每秒可以处理超过 20,000 笔交易。
开发人员试图以各种方式对区块链网络扩容,一个广泛被采用的方案是把一些计算放到链下进行(即链上叠加一层),链上只进行计算的校验和存储。
以下是一个分层架构图:
第 0 层,其实第0层的定义目前行业还没有完全一致的理解。
多数人认为第0层是 加密数据连接层及其硬件,对应上图下半部分。
第 1 层是我们常说的区块链,如比特币、以太坊、BSC 、Solana 等。 这些区块链在自己的区块链上根据共识处理并最终完成交易,
第 1 层区块链网络为开发dApps提供了基础架构,开发者可以在第1层网络上其他协议,比如我们看到MAKER DAO 稳定币协议、加密朋克 NFT 及 Uniswap DEX 协议等。
随着链上应用不断增长,网络“吞吐量”无法满足快速增加的需求,经常导致网络拥堵。增加区块链网络自身处理能力,一个常见的方法是扩大区块大小,以便在单个区块里可以容纳更多的交易,以太坊社区也确实多次提高过区块大小限制,但提高更快意味着更慢网络传播速度,以及更大数据意味着节点需要更大的存储容量,会提高节点参与网络的门槛,使得网络更中心化;另一个是方法是以太坊在尝试的分片(Sharding)扩容方案,将区块链数据分成不同的组(分片),每个分片负责网络活动中的不同交易子集。
Layer2 是针对底层区块链(Layer1)扩容的一种链下解决方案,Layer2 是一个独立的区块链,但使用第一层的安全性保证。
扩容主要思想是将原本 Layer1 的交易放在链下(Layer2)执行,减轻 Layer1 的负担,并且 Layer2 定期与Layer1通信,将Layer2的交易批量提交到 Layer1 。
比特币上的 一个主要的 Layer2 扩容方案是闪电网络(Lightning Network),为小额支付场景进行优化。闪电网络的主要是实现是,支付的双方在链下建立一个”通道”,双方可以在这个“通道”多次进行支付交易,在需要结算时,关闭通道即可。当支付的双方没有直接的”通道”可以借助第三方节点进行中转,如下路,A 要向 F 交易时,可借助 节点C 形成”通道”链路。所有节点一起就形成了一个支付网络。
与比特币链上交易相比,闪电网络有几个好处:
闪电网络也有一些限制: 闪电网络要求节点一直保持在线以充当支付通道,比较容易受到黑客攻击和盗窃; 多数用户可能会你来某个关键枢纽节点,这样的枢纽的离线可以迅速带来网络的集体(或完全)崩溃。
节点到底是什么? 在区块链中,节点确实是指运行区块链软件程序的计算机或设备。这些计算机通过互联网连接到区块链网络,并与其他节点进行通信,共同维护整个网络的运行和安全。区块链网络中的节点可以运行不同类型的软件程序,这取决于它们的角色和功能。例如,全节点运行完整的区块链软件,存储了完整的区块链数据副本,可以独立验证和执行所有的区块链规则;矿工节点运行挖矿软件,负责创建新的区块并打包交易;轻节点可能只运行轻量级的区块链客户端软件,仅与网络中的其他节点进行交互以获取所需的信息等。因此,节点确实可以简单理解为运行区块链程序的计算机,但不同类型的节点可能运行不同的程序,具有不同的功能和责任。节点的数量和分布对于区块链网络的安全性、去中心化程度和性能等方面都有重要影响。
以太坊上主要的 Layer2 扩容方案是 Rollup,Rollup 意思是卷起,Rollup的核心思想是把由Rollup层负责执行交易,然后许多笔交易压缩成一笔交易提交给以太坊。
Rollup 目前分为两种类型:Optimistic Rollup(乐观 Rollup)和 ZK Rollup(零知识证明 Rollup),他们的主要区别是如何将交易数据发布到第一层, Optimistic Rollup 是乐观假设从 Layer2 上执行的交易都是可信的,并批量提交到以太坊上,乐观 Rollup设置有一个挑战期(通常为一周左右),任何人发起挑战来验证交易的真实性,若挑战成功,原有交易被拒绝,并惩罚Layer2出块人。而 ZK Rollup 则是通过生成一个零知识证明来证明所有交易的有效性,相比Optimistic Rollup没有乐观假设,且有更高的数据压缩率,但为通用的计算生成零知识证明是一个难点,开发难度很大。
这是一个技术特性对比图:
目前乐观 Rollup 有 Arbitrum 、 Optimism 、Boba network 等项目在运行,乐观 Rollup 可以实现 EVM 等效,已有在以太坊上的智能合约大部分不用做任何修改就可以直接部署到 这些 Rollup 上,
经过 1 年的发展,现在 Layer2 上的交易量已经赶超了以太坊主网上的交易量。
这是一张以太坊与 Arbitrum 、 Optimism 交易量的对比图。
目前 ZK Rollup 有 ZKSync、 StarkNet 等项目在运行,但都不具备 EVM 的等效性。在StarkNet上部署智能合约,开发人员需要学习Cairo 语言,是为STARK可验证程序构建的一种编程语言,ZKSync 目前主网的版本则仅支持转账及兑换操作。包括 Scroll 和 Polygon 在内的多个团队都在为实现 EVM 等效的 zkEVM 而努力,应该马上可以看到他们的主网上线。
另一个和 Layer2 类似的二层扩容方案是侧链, 侧链和以太坊L2解决方案的主要区别是,Layer2继承以太坊主网络的安全性,而侧链依赖于自己的安全性。一个流行的侧链是Polygon ,他使用自己的PoS共识,有自己的验证者。但是 Polygon 会定期把交易的状态提交到以太坊。
在出现Rollup之前,状态通道、Plasma 等技术也是广泛讨论的扩容解决方案,目前采用度不高,有兴趣的读者可以自行研究。
Layer3(第 3 层)目前行业还没有一致认可的定义,Vitalik 在他的文章 什么样的 Layer3 有意义 里提出了对 Layer3 的 3 个愿景:
还有一些人,将 Layer2 上的应用层,称为第 3 层,例如 Uniswap 、AAVE 、MarkerDAO 等。
Web 1.0:只读互联网, 1989 年 Tim·Berners·Lee (万维网之父)提出创建了一种开放的协议用于研究信息的交流。之后 10 多年,很多公司创建了自己的静态网站,用于展示公司形象与产品,彼时的网站与用户没有互动,被称为只读网络。
Web 2.0 :能读能写, 随着社交媒体平台的出现,网络不再是只读的,演变成读写网络。除了向用户提供内容外,用户也可参与生成内容。我们现在绝大部分产品:微信、微博、知乎、抖音 都是 Web 2.0 的产品,在这些产品上,用户创作的内容都保存在互联网巨头的服务器里,用户不真正拥有数据所有权。
Web 3.0:能读能写能拥有 ,最初由伯纳斯·李于 2006 年提出,更加强调用户的自主性,Web3 于 2014 年由Gavin Wood (Polkadot 创世人)提出,更加强调了去中心化概念与使用区块链技术创建用户可拥有的应用。
Web 3.0 与 Web3 概念上稍有区别,Web 3.0 强调互联网演进代际,Web3 表示使用区块链技术栈创建的应用。
现在的 Web 2.0 应用,通常的技术架构是这样的:
前端呈现应用的界面,也是用户交互的接口,前端所显示的内容通过 HTTP 请求后端服务器获取。后端服务器还会连接数据库及文件存储服务。数据库利用如 Mysql, PostgreSql 等,来存储用户数据、应用运行数据等,文件存储用来保存图片、音视频流文件等。
而 Web3 应用,技术架构则有所不同
在前端部分,通过用户钱包来确保用户持有自己的数据(资产),在后端,核心应用逻辑通过链上智能合约处理,前端的交易发送给区块链节点,有区块链节点广播到区块链网络里。
一个应用,还有一个很重重要的部分是文件存储,在 Web2 里,所有的数据(包括大文件)都保存在中心化数据库中,但作为一个去中心化的 web3 应用,如果把文件保存在中心化服务器中,就面临配篡改及删除的分享。而我们之前介绍的区块链只适合交易数据的存储和执行,这就要引出一个新的角色:去中心化存储。
前面介绍的比特币、以太坊、Polygon 等区块链,主要用于执行逻辑,是一个去中心化的计算平台,并不是为存储大量数据而设计的。当我们需要保存图片、音频、视频等内容时,则需要适合大数据的存储方案。
有很多项目在探索解决去中心化存储问题,其中两个最流行的项目是 IPFS 及 Arweave 。
IPFS目标是取代HTTP去构建一个更好的去中心化的Web。现有的HTTP网络服务,基于IP寻址的,就是IP找到内容所在的服务器,然后再与服务器交互。而在IPFS的网络里是根据内容寻址的,我们上传到IPFS的文件都会产生哈希值,无需知道文件存储在哪里,通过哈希值就能够找到这个文件。
当用户在 IPFS 网络上上传文件时,IPFS 协议会为文件分配了一个唯一的标识符(使用 Hash 算法),称为内容标识符 (CID)。 当用户想访问这个文件时,可以使用这个CID并询问网络上哪个节点拥有它对应的文件。任何拥有该文件的节点会将文件发送给请求的用户。一旦用户收到文件,用户的计算机就会存储该文件的副本,同时该用户将成为文件的另一个提供者。使用 CID 来寻找内容,带来一个很重要的特性,确保内容可信,因为内容不会被篡改,因为根据 Hash 的性质,只要内容修改,其对应的 CID 也不一样。
用户通过指向文件的内容(CID)而不是文件所处的位置(url)来访问文件,这种模式被称为基于内容的寻址,在 IPFS 网络中,使用ipfs://file_cid 形式访问文件。
备注:由于IPFS 协议,目前浏览器支持都还不是很多,当前Brave、Firefox 已经在浏览器中加入了IPFS 协议,Chrome 还没有支持,要通过 ipfs 访问文件需要安装 IPFS Companion 浏览器插件,或通过 IPFS 网络来访问文件。需要注意的是:IPFS 不是一个链,而是一个点对点的文件存储访问(超媒体)协议。IPFS 背后的团队发布的 FileCoin 则是一个区块链,激励节点来存储数据。
Arweave 项目目标是实现去中心化的永久存储,Arweave 是一个区块链网络,数据保存在网络中的区块里。在 Arweave 网络中,单个节点是无法保存全量数据的,Arweave 如何在节点部分存储的情况下,确保内容不丢失呢?Arweave 引入了一个称为 blockweave 的结构,每个区块都与之前的两个区块相连,矿工需要在本地随机储存一个之前的区块(回忆块),才能生成新区块,而且存储保存之前的稀有区块的矿工有更大的概率去竞争到出块奖励,在 blockweave 上, 数据反复被储存在不同区块上,即便有矿工离开,也不会丢失数据,保护了数据的安全,同时由于鼓励保存稀缺块,也会促使所有的数据被“平等”保存。
对去中心化存储有明显需求的是 NFT 类应用,多数的开发者选择的开发方式是,将NFT的底层元数据和图像数据保存在去中心化存储网络中,将对应的存储标识如CID 记录到区块链智能合约中,同时把与智能合约交互的前端也托管到去中心化存储中。从而得到一个“完全”去中心化、不可停止的 Web3 应用。
一项技术最终都需要以应用来落地,才会得以普及。 区块链技术尽管仍处在早期阶段,如存在网络处理容量不高、用户体验不佳等问题,但区块链技术由于其去中心化、不可篡改等特性,已经显示出广泛的应用场景。 “人工智能提高生产率,区块链重塑生产关系”,若使用区块链技术来构建自动运行的商业价值网络,所有的交易规范透明、自动完成且无法伪造;将大大提高商业协作的效率。 相信基于区块链技术构建的未来商业网络,将是继互联网之后又一次巨大的产业变革。
以下是当前区块链技术已经应用的一些场景:
金融服务其实是一个很大的范畴,涉及货币、证券、债券、保险、抵押等诸多行业,不过总结来说处理的是各种交易,这是区块链最擅长的领域。 而且加密货币天生接近金融的特性,因此区块链在金融服务中也开始逐渐扮演越来越重要的角色。
在传统金融交易中,为了确保可靠性,很多时候需要第三方机构担保,多了一方,就会给交易带来更多的摩擦:更复杂的流程、更长的时间周期、更高的资金成本、更多出错的环节。因此,金融领域使用区块链技术会大大提高交易效率。
加密货币不再依赖于任何机构,自身就在去中心化的全世界的网络中运行,是天然的全球性资产,尤其在区块链网络上的发行的稳定币(Token),涵括了加密货币与发币的特性,非常适合在跨境支付与结算。
以 USDT 稳定币为例,USDT是最早的一种由美元储备支撑的稳定币,发行方Tether承诺与美元的一对一转换比率,当下逆全球化在抬头,美国仰仗其霸权利用 SWIFT 等跨境结算体系对一些国家、企业、个人进行制裁,对被制裁者跨境交易上造成重大打击。而 USDT 作为链上资产,基于匿名性、抗审查、且在7*24小时运行在一个公开无准入的分布式平台上,让 USDT 称为重要的资产交易媒介。 例如在俄罗斯经营的中国商人用卢布在交易市场中购买USDT,随后用USDT进行自由跨境。
多国政府也在积极推动使用区块链技术进行跨境交易,例如:中国人民银行、国际清算银行(香港)、香港金管局、泰国中央银行、阿联酋中央银行联合建设的多边央行数字货币桥(mBridge),就使用了区块链技术。
Token ,中文主要称为代币,也有一部分人称为通证,它是一个智能合约的标准( ERC20),我们可以使用这个标准来定义几乎任何可以用数字表达的东西,如公司的股份、股息、房产、货币、一盎司黄金、积分、权益、门票,这里统称为资产,当资产通过 Token 的形式数字化,会极大提高资产使用效率及透明度。
例如,公司股票转换为区块链代币后,可以获得更大的流动性,传统股票交易有很大的地域性,无法全球交易,代币化之后,可以吸引全球的投资者。另一个例子是,可以对房产进行代币化,转换为多个代币,可实现对资产所有权拆分,对于没有足够的资金购买单套房产的投资者,可以持有房产一部分房产。
DeFi,Decentralized Finance(去中心化金融)的缩写, 利用区块链智能合约在链上完成资产兑换、借贷、杠杆、期货等交易。
去中心化金融相比传统金融服务有很多好处:
同时去中心化金融诞生了很多传统金融无法实现的特性,例如:不同的金融协议衍生品可以组合在一起交易,从而实现如:无抵押借款、无风险套利。
金融服务领域可以广泛使用区块链技术,还有其他的场景,如:供应链金融,众筹融资、预付款等。
DAO全称是Decentralized Autonomous Organization,即去中心化自治组织,DAO是一种将组织的管理和运行规则以智能合约代码的形式编码在区块链上,DAO的决策基于组织成员持有的代币进行投票进行,投票通过的提案自动执行。这是一种全新的组织形态。相较于传统企业而言,DAO不存在中心化的节点与层级化的管理架构,DAO有一个民主化的组织,更加透明,管理也较扁平。
DAO 是一种平等、透明的组织,能让互联网上的陌生人合作更加可信和安全,方便让全世界志同道合的人开展合作,因此 DAO 有望打破传统的公司制架构,颠覆多种商业模式。
区块链可以通过哈希时间戳证明某个文件或者数字内容在特定时间的存在,加之其公开、不可篡改、可溯源等特性。可以应用于产权、版权等所有权的管理和追踪,以及身份证明,司法鉴证,防伪溯源等相关领域。
通过对文字、图片、音频视频等作品内容使用区块链技术在链上进行存证或数字签名,可以实现对作品的确权,并且版权权益也可以代币化,让版权交易更容易。 还有一些应用是在防伪溯源领域,通过供应链中应用区块链技术进行跟踪,可以应用如食品医药、农产品、酒类、奢侈品等商品的溯源。
基于存证特性,在数字政务也有很多应用,如:税务部门推出区块链电子发票“税链”平台,税务部门、开票方、受票方通过独一无二的数字身份加入“税链”网络,有效解决数据篡改、一票多报、偷税漏税等问题。
NFT(Non Fungible Token)非同质化代币,与 Token 一样也是智能合约的标准,Token 用来表达相同的东西不同,NFT 用来表达具有独特特性的东西(两个东西不能互换)。例如:可以用 NFT 表示有编号的彩票、收藏品、音乐、域名、指纹、座位编号、武器等。
NFT 具有唯一性、稀缺性、可交易性,当 NFT 与艺术品相结合,给艺术行业带来了很多新的变化和影响。
2017年11月,基于 NFT 的以太猫(CryptoKitties)游戏在以太坊上线。用户可以通过以太币购买虚拟的以太猫,然后繁育下一代,同时也可以出售自己拥有的以太猫。 以太猫和传统游戏不同的是,以太猫的拥有权完全在用户手里。每一个以太猫就是一个以太坊上的数字,而这个数字和一个以太坊的地址绑定,拥有这个地址的用户就完全拥有这只以太猫,这款游戏带来了很多狂热的粉丝,一度长时间给以太坊带来拥堵,也让大家意识到,使用区块链的游戏可以带来很多有趣的变化。
区块链游戏让更多的权力交还给了玩家,可以提供公平和安全的游戏环境,改善游戏的可信度。
区块链技术还可以应用于如:共享经济、创作者经济、物联网、公共服务网络、众包、法律。 这些应用场景展现了区块链技术所具有的巨大市场潜力。
不过,区块链技术尽管仍处在早期阶段,还有需要有很多的问题待解决,例如:区块链合约在执行时线下需要有怎样的机制配合,如何监管链上的一些违规违法行为,链下的数据如何高效、可信的映射到链上。 这些问题还需要我们继续探索。