比特币是构成数字货币基础的概念和技术的集合。称为比特币的货币单位被用于在比特币网络中的参与者之间存储和传输价值。比特币用户主要通过互联网使用比特币协议进行通信,尽管也可以使用其他传输网络。比特币协议栈作为开源软件可在各种计算设备上运行,包括笔记本电脑和智能手机,使技术易于访问。
用户可以通过网络转移比特币,几乎可以做任何使用传统货币可以做的事情,包括购买和出售商品、向个人或组织发送货币或提供信贷。比特币可以在专门的货币交易所购买、出售和兑换成其他货币。比特币被认为是互联网的理想货币形式,因为它快速、安全且无国界。
与传统货币不同,比特币货币完全虚拟。没有实体硬币甚至个别的数字硬币。硬币在转移价值的交易中暗示着。比特币的用户控制着可以证明他们在比特币网络中拥有比特币的密钥。有了这些密钥,他们可以签署交易以解锁价值,并通过将其转移给新所有者来进行支出。密钥通常存储在每个用户的计算机或智能手机上的数字钱包中。能够签署交易的密钥是花费比特币的唯一先决条件,这样完全将控制权交给了每个用户。
比特币是一个分布式的点对点系统。因此,没有中央服务器或控制点。比特币单位是通过一种称为“挖矿”的过程创建的,该过程涉及反复执行一个参考最近比特币交易列表的计算任务。比特币网络中的任何参与者都可以作为矿工运行,使用他们的计算设备来帮助安全地进行交易。平均每10分钟,一名比特币矿工可以为过去的交易增加安全性,并获得全新的比特币以及最近交易支付的费用。实质上,比特币挖矿去中心化了中央银行的货币发行和清算功能,并取代了任何中央银行的需要。
比特币协议包括内置算法,用于调节网络上挖矿功能。矿工必须执行的计算任务的难度会动态调整,以便平均每10分钟有人成功,无论此时有多少矿工(以及多少处理量)正在竞争。协议还定期减少新创建的比特币数量,将总发行量限制在略低于2100万枚的固定总量。结果是,流通中的比特币数量紧密跟随着一个易于预测的曲线,其中剩余的硬币的一半每四年增加一次。预计在大约第1,411,200个区块,即预计在2035年左右产生时,将发行的所有比特币的99%将被发行。由于比特币发行的减少速度,从长远来看,比特币货币是通缩的。此外,没有人可以强迫您接受超出预期发行速度的任何比特币。
在幕后,比特币也是协议、点对点网络和分布式计算创新的名称。比特币建立在密码学和分布式系统几十年的研究基础上,包括至少四个关键创新,将它们结合在一起形成了独特而强大的组合。比特币包括:
作为开发者,我将比特币视为货币的互联网,通过分布式计算传播价值并确保数字资产的所有权。比特币远比表面上看到的更加复杂。
在本章中,我们将通过解释一些主要概念和术语、获取必要的软件并使用比特币进行简单交易来开始。在接下来的章节中,我们将开始揭开使比特币成为可能的技术层,并检查比特币网络和协议的内部工作。
可行数字货币的出现与加密学的发展密切相关。这并不奇怪,当考虑到使用比特表示可以交换货物和服务的价值所涉及的基本挑战时。任何接受数字货币的人都会面临三个基本问题:
• 我能相信这笔钱是真的而不是伪造的吗?
• 我能相信这笔数字货币只能花费一次吗(即“双重支付”问题)?
• 我能确定没有其他人可以声称这笔钱属于他们而不是我吗?
纸币发行者不断地通过使用越来越复杂的纸张和印刷技术来对抗伪造问题。实物货币很容易解决双重支付问题,因为同一张纸币不能同时存在于两个地方。当然,传统货币也经常以数字形式存储和传输。在这些情况下,伪造和双重支付问题通过将所有电子交易清算通过具有对流通中货币的全局视图的中央机构来解决。对于无法利用奇特墨水或全息条的数字货币,加密学提供了信任用户对价值主张合法性的基础。具体来说,加密数字签名使用户能够对数字资产或交易进行签名,证明拥有该资产的所有权。通过适当的架构,数字签名也可以用来解决双重支付问题。
当加密学在1980年代晚期开始变得更加广泛可用和理解时,许多研究人员开始尝试使用加密学构建数字货币。这些早期的数字货币项目发行了数字货币,通常由国家货币或黄金等贵金属支持。
尽管这些早期的数字货币起作用,但它们是中心化的,因此很容易受到政府和黑客的攻击。早期的数字货币使用中央清算所定期结算所有交易,就像传统的银行系统一样。不幸的是,在大多数情况下,这些初期的数字货币受到担心的政府的攻击,并最终因诉讼而消失。一些因母公司突然清算而导致的失败令人瞠目。为了对抗敌对势力的干预,无论是合法政府还是犯罪分子,都需要一个去中心化的数字货币来避免单点攻击。比特币就是这样的系统,通过设计去中心化,并且没有任何可以被攻击或腐败的中央机构或控制点。
\
比特币首次被描述是在2008年发表的一篇名为《比特币:一种点对点的电子现金系统》的论文中,作者使用了化名中本聪(见附录A)。中本聪结合了几个先前的发明,如数字签名和Hashcash,创建了一个完全去中心化的电子现金系统,不依赖于中央机构进行货币发行、结算和交易验证。一个关键的创新是使用分布式计算系统(称为“工作证明”算法),平均每10分钟进行一次全球彩票,使得去中心化网络能够就交易状态达成共识。这优雅地解决了双重支付问题,即单个货币单位可以被花费两次的问题。以前,双重支付问题是数字货币的弱点,并通过将所有交易通过中央清算所进行清算来解决。
比特币网络始于2009年,基于中本聪发布的参考实现,并且后来由许多其他程序员进行了修订。运行提供比特币安全性和弹性的工作证明算法(挖矿)的计算机的数量和功率已呈指数级增长,它们的综合计算能力现已超过世界顶级超级计算机的综合计算操作数量。
中本聪于2011年4月退出公众视野,将开发代码和网络的责任交给了一个蓬勃发展的志愿者团队。比特币背后的人或团队的身份仍然未知。然而,无论是中本聪还是其他任何人都不能对比特币系统施加个人控制,该系统运行基于完全透明的数学原理、开源代码和参与者之间的共识。这一发明本身具有开创性,并已在分布式计算、经济学和计量经济学领域产生了新的科学。
{% hint style="info" %} 分布式计算问题的解决方案
\ 中本聪的发明还是分布式计算中一个实际且新颖的问题解决方案,即“拜占庭将军问题”。简而言之,该问题包括在没有领导者的情况下,通过在不可靠且可能被 compromise 的网络上交换信息,让多个参与者达成一致行动的尝试。中本聪的解决方案利用工作证明的概念,在没有中央信任机构的情况下实现共识,代表了分布式计算的一项突破。 {% endhint %}
比特币是一个可以通过应用程序访问的协议,该应用程序与该协议进行通信。与HTTP协议最常见的用户界面是Web浏览器一样,“比特币钱包”是比特币系统最常见的用户界面。就像Chrome、Safari和Firefox等许多品牌的Web浏览器一样,比特币钱包有许多实现和品牌。就像我们都有自己喜欢的浏览器一样,比特币钱包在质量、性能、安全性、隐私性和可靠性方面也有所不同。比特币协议还包括一个钱包的参考实现,称为“比特币核心”,它是由中本聪撰写的原始实现衍生而来。
比特币钱包是比特币生态系统中最活跃的应用之一。竞争非常激烈,虽然新的钱包可能正在开发中,但去年的几个钱包已经不再积极维护。许多钱包专注于特定平台或特定用途,有些适合初学者,而有些则充满了面向高级用户的功能。选择钱包是非常主观的,取决于使用情况和用户的专业知识。因此,推荐特定品牌或钱包是毫无意义的。然而,我们可以根据其平台和功能对比特币钱包进行分类,并提供有关所有不同类型的钱包的一些澄清。值得尝试几种不同的钱包,直到找到适合自己需求的一个。
根据平台,比特币钱包可以分为以下几类:
桌面钱包
桌面钱包是最早创建的一种比特币钱包类型,作为参考实现。许多用户使用桌面钱包是因为它们提供的功能、自治权和控制权。但是,作为运行在通用操作系统(如Windows和macOS)上的桌面钱包也存在一定的安全缺陷,因为这些平台通常不安全且配置不良。
移动钱包
移动钱包是最常见的比特币钱包类型。运行在智能手机操作系统(如Apple iOS和Android)上,这些钱包通常是新用户的不错选择。许多钱包设计简单易用,但也有针对高级用户的功能齐全的移动钱包。为了避免下载和存储大量数据,大多数移动钱包从远程服务器检索信息,通过向第三方披露有关您的比特币地址和余额的信息,降低了您的隐私。
Web钱包
Web钱包通过Web浏览器访问,并将用户的钱包存储在第三方拥有的服务器上。这类似于Web邮件,完全依赖于第三方服务器。其中一些服务使用运行在用户浏览器中的客户端代码,这样可以保持比特币密钥控制在用户手中,尽管用户仍然依赖服务器,但这种方式会损害用户的隐私。但大多数服务为了方便起见,从用户那里获取比特币密钥控制权。不建议在第三方系统上存储大量比特币。
硬件签名设备
硬件签名设备是可以使用专用硬件和固件存储密钥并签署交易的设备。它们通常通过USB电缆、近场通信(NFC)或具有QR码的摄像头连接到桌面、移动或Web钱包。通过在专用硬件上处理所有与比特币相关的操作,这些钱包对许多类型的攻击更不易受到影响。有时将硬件签名设备称为“硬件钱包”,但它们需要与功能齐全的钱包配对,以发送和接收交易,并且由配对钱包提供的安全性和隐私性在使用硬件签名设备时起着关键作用。
另一种分类比特币钱包的方法是根据其自治程度以及与比特币网络的交互方式:
全节点
全节点是一种验证比特币所有历史交易(每个用户的每笔交易)的程序。全节点还可以选择存储先前验证的交易并向其他比特币程序提供数据,无论是在同一台计算机上还是通过互联网。全节点使用大量的计算资源——大约相当于每天观看一小时的流媒体视频——但全节点为其用户提供了完全自治。
轻量级客户端
轻量级客户端,也称为简化支付验证(SPV)客户端,连接到全节点或其他远程服务器以接收和发送比特币交易信息,但将用户钱包存储在本地,部分验证接收到的交易,并独立创建输出交易。
第三方API客户端
第三方API客户端是通过与比特币网络直接连接而不是通过连接到比特币网络来与比特币进行交互的第三方API系统进行交互的客户端。钱包可以由用户或第三方服务器存储,但客户端信任远程服务器向其提供准确的信息并保护其隐私。
比特币是一个点对点(P2P)网络。全节点是对等节点:每个节点都可以验证每个确认的交易,并能够向其用户提供具有完全权限的数据。轻量级钱包和其他软件是客户端:每个客户端依赖于一个或多个对等节点提供有效的数据。比特币客户端可以对接收到的部分数据进行辅助验证,并建立与多个对等节点的连接,以减少对单个对等节点完整性的依赖,但是客户端的安全性最终取决于其对等节点的完整性。
一个非常重要的额外考虑因素是谁控制密钥。正如我们将在后续章节中看到的那样,对比特币的访问受到“私钥”的控制,这些私钥类似于非常长的PIN码。如果只有您控制这些私钥,那么您就控制着您的比特币。相反,如果您没有控制权,则您的比特币由第三方管理,最终由第三方代表您控制您的资金和账户。根据控制权,密钥管理软件分为两个重要的类别:钱包,您控制密钥;以及具有托管人的资金和账户,某些第三方控制密钥。为了强调这一点,我(安德烈亚斯)创造了这句话:“你的密钥,你的硬币。不是你的密钥,不是你的硬币。”
结合这些分类,许多比特币钱包分为几个组,其中最常见的三个是桌面全节点(您控制密钥)、移动轻量级钱包(您控制密钥)和与第三方的基于Web的账户(您不控制密钥)。不同类别之间的界限有时会模糊,因为软件在多个平台上运行,并且可以以不同的方式与网络进行交互。\ \
艾丽丝不是技术用户,最近才从她的朋友乔那里听说比特币。在一次派对上,乔正在热情地向周围的人解释比特币,并提供演示。艾丽丝感到好奇,问他如何开始使用比特币。乔说移动钱包对新用户来说是最好的选择,并推荐了几款他喜欢的钱包。艾丽丝下载了乔推荐的其中一个,并将其安装在手机上。
当艾丽丝第一次运行她的钱包应用时,她选择了创建一个新的比特币钱包的选项。因为她选择的钱包是非托管钱包,所以艾丽丝(只有艾丽丝)将控制她的密钥。因此,她负责备份密钥,因为丢失密钥意味着她失去了对她的比特币的访问权限。为了方便起见,她的钱包生成了一个恢复码,可以用来恢复她的钱包。
大多数现代的非托管比特币钱包都会为用户提供一个恢复码进行备份。恢复码通常由软件随机选择的数字、字母或单词组成,并用作钱包生成的密钥的基础。请参见表1-1中的示例。
表1-1. 恢复码示例
| 钱包 | 恢复码 |
|---|---|
| BlueWallet | (1) media (2) suspect (3) effort (4) dish (5) album (6) shaft (7) price (8) junk (9) pizza (10) situate (11) oyster (12) rib |
| Electrum | nephew dog crane clever quantum crazy purse traffic repeat fruit old clutch |
| Muun | LAFV TZUN V27E NU4D WPF4 BRJ4 ELLP BNFL |
恢复码有时被称为“助记词”或“助记短语”,这暗示您应该记住该短语,但将短语写在纸上比大多数人的记忆更可靠且需要更少的工作。另一个替代名称是“种子短语”,因为它为生成钱包的所有密钥的函数提供了输入(“种子”)。
如果艾丽丝的钱包发生了什么问题,她可以下载一个新的钱包软件,并输入这个恢复码来重建她曾经发送或接收的所有链上交易的钱包数据库。然而,仅凭恢复码进行恢复将不能自动恢复艾丽丝输入到她的钱包中的任何其他数据,比如她与特定地址或交易相关联的标签。虽然失去对这些元数据的访问权并不像失去对钱的访问权那样重要,但在某种程度上它仍然是重要的。想象一下,您需要查看一份旧的银行或信用卡对账单,但每个您支付(或者谁支付给您)的实体的名称都被抹去了。为了防止丢失元数据,许多钱包在恢复码之外提供了额外的备份功能。
对于某些钱包来说,这种额外的备份功能今天比以前更加重要。现在许多比特币支付是使用链下技术进行的,其中并不是每笔支付都会存储在公共区块链上。这降低了用户的成本,并提高了隐私性等方面的利益,但这意味着像恢复码这样依赖于链上数据的机制无法保证完全恢复用户所有的比特币。对于支持链下技术的应用程序,频繁备份钱包数据库非常重要。
值得注意的是,当首次向新的移动钱包收到资金时,许多钱包通常会重新验证您是否已安全备份了恢复码。这可能范围从简单的提示到要求用户手动重新输入代码。尽管许多合法的钱包应用程序会提示您重新输入您的恢复码,但也有许多恶意应用程序会模仿钱包的设计,坚持让您输入恢复码,然后将任何输入的代码传递给恶意开发者,以便他们窃取您的资金。这相当于试图诱骗您提供银行密码的钓鱼网站。对于大多数钱包应用程序来说,它们只会在初始设置(在您收到任何比特币之前)和恢复期间(在您无法访问原始钱包之后)询问您的恢复码。如果应用程序在其他任何时间要求您的恢复码,请咨询专家以确保您没有被钓鱼。
\
艾丽丝现在准备开始使用她的新比特币钱包。她的钱包应用程序随机生成了一个私钥(在第55页“私钥”中有更详细的描述),该私钥将用于生成指向她钱包的比特币地址。此时,她的比特币地址并不为比特币网络所知,也没有在比特币系统的任何部分“注册”。她的比特币地址只是与她的私钥相对应的数字,她可以使用这些地址来控制对资金的访问。这些地址由她的钱包独立生成,不参考或注册任何服务。
有各种各样的比特币地址和发票格式。地址和发票可以与其他比特币用户共享,他们可以使用这些地址直接向您的钱包发送比特币。您可以与其他人分享地址或发票,而不必担心您的比特币的安全性。与银行账户号码不同,任何得知您其中一个比特币地址的人都无法从您的钱包中提取资金——您必须自行发起所有交易。然而,如果您给两个人相同的地址,他们将能够看到对方向您发送了多少比特币。如果您公开发布您的地址,每个人都将能够看到其他人向该地址发送了多少比特币。为了保护您的隐私,您应该每次请求付款时都生成一个新的发票,带有一个新的地址。
\
艾丽丝点击“接收”按钮,显示了一个二维码,如图1-1所示。
<figure><img src="https://img.learnblockchain.cn/masterbitcoin3/assets/1.1.png" alt=""><figcaption><p>图 1-1. Alice在她的手机比特币钱包上使用“接收”界面,并以二维码格式显示了她的地址。</p></figcaption></figure>
二维码是一个方形的黑白点阵图案,它包含着相同的信息,可以被Joe的智能手机摄像头扫描。
本书中的地址收到的任何资金都会丢失。如果你想测试发送比特币,请考虑将其捐赠给接受比特币的慈善机构。
新用户的第一个任务是获取一些比特币。
比特币交易是不可逆转的。大多数电子支付网络,如信用卡、借记卡、PayPal和银行账户转账,都是可逆转的。对于出售比特币的人来说,这种差异带来了一个非常高的风险,即买家在收到比特币后会撤销电子支付,实际上欺骗了卖家。为了减轻这种风险,接受传统电子支付换取比特币的公司通常要求买家进行身份验证和信用评估,这可能需要几天甚至几周的时间。作为一个新用户,这意味着你不能立即用信用卡购买比特币。然而,有点耐心和创造性思维,你就不需要这样做。
以下是一些作为新用户获取比特币的方法:
比特币相对于其他支付系统的优势之一是,当正确使用时,它为用户提供了更多的隐私。获取、持有和使用比特币不需要你向第三方透露敏感和可识别的个人信息。然而,当比特币与传统系统(如货币交易所)接触时,通常会适用国内外法规。为了将比特币兑换成你的国家货币,通常需要提供身份证明和银行信息。用户应该意识到,一旦一个比特币地址与身份挂钩,其他相关的比特币交易也可能变得容易识别和跟踪,包括之前进行的交易。这也是许多用户选择保持独立于他们的钱包的专用交易账户的原因之一。
爱丽丝是通过朋友介绍认识了比特币,所以她有一个简单的方法来获取她的第一枚比特币。接下来,我们将看看她如何从她的朋友乔那里购买比特币,以及乔如何将比特币发送到她的钱包。
在爱丽丝能够从乔那里购买比特币之前,他们必须就比特币和美元之间的汇率达成一致。这引出了一个对于新接触比特币的人来说很常见的问题:“谁确定比特币的价格?”简短的答案是市场决定价格。
比特币,像大多数其他货币一样,拥有浮动汇率。这意味着比特币的价值会根据在各种交易市场上的供求情况而波动。例如,比特币对美元的“价格”是根据最近一次比特币和美元的交易而在每个市场上计算出来的。因此,价格往往在每秒钟变动数次。定价服务将从多个市场汇总价格,并计算出一个体现一种货币对(如BTC/USD)广义市场汇率的成交量加权平均值。
有数百个应用程序和网站可以提供当前的市场汇率。以下是一些最受欢迎的:
一个提供每种货币成交量加权平均价的简单视图的网站。
一项列出数百种加密货币的市值和汇率的服务,包括比特币在内。
一种可用于机构和合约参考的参考汇率,由芝加哥商品交易所提供作为投资数据提供之一。
除了这些不同的站点和应用程序外,一些比特币钱包还会自动在比特币和其他货币之间进行金额转换。
爱丽丝决定购买0.001比特币。在她和乔确认了汇率之后,她递给了乔一定金额的现金,打开了她的手机钱包应用程序,并选择了“接收”。这会显示一个带有爱丽丝的第一个比特币地址的二维码。
接着,乔在他的智能手机钱包上选择“发送”并打开了二维码扫描器。这使得乔可以用他的智能手机摄像头扫描条形码,而不必输入爱丽丝的比特币地址,因为地址非常长。
现在,乔已将爱丽丝的比特币地址设置为接收方。乔输入了0.001比特币(BTC)的金额;见图1-2。一些钱包可能会以不同的计量单位显示金额:0.001 BTC相当于1毫比特币(mBTC)或100,000 satoshi(sats)。
一些钱包也许会建议乔为这笔交易输入一个标签;如果是这样,乔输入“Alice”。几周或几个月后,这将帮助乔记住他为什么发送了这0.001比特币。一些钱包也许会提示乔有关手续费的事项。根据钱包以及交易的发送方式,钱包可能会要求乔输入交易费率,或者提示他一个建议的手续费(或费率)。交易手续费越高,交易确认的速度就越快(参见“确认”)。
<figure><img src="https://img.learnblockchain.cn/masterbitcoin3/assets/1.2.png" alt=""><figcaption><p>图 1-2. 比特币钱包发送界面</p></figcaption></figure>
接着,Joe 仔细检查以确保输入的金额正确,因为他即将发送资金,而错误很快将变得不可逆转。在双重检查地址和金额之后,他按下“发送”按钮来发送交易。Joe 的移动比特币钱包构建了一笔交易,将 0.001 BTC 分配到 Alice 提供的地址上,资金来源于 Joe 的钱包,并使用 Joe 的私钥对交易进行签名。这告诉比特币网络,Joe 已经授权将价值转移到 Alice 的新地址。由于交易通过对等协议传输,它很快就会在比特币网络中传播。几秒钟后,网络中的大多数连接良好的节点都会接收到交易,并首次看到 Alice 的地址。
与此同时,Alice 的钱包不断“监听”比特币网络上的新交易,寻找与其包含的地址匹配的任何交易。几秒钟后,Joe 的钱包发送交易,Alice 的钱包将指示正在接收 0.001 BTC。
确认
起初,Alice 的地址会显示来自 Joe 的交易为“未确认”。这意味着交易已经传播到网络上,但尚未记录在比特币交易日志中,即区块链上。要得到确认,交易必须被包含在一个区块中并添加到区块链中,这通常每 10 分钟发生一次。在传统金融术语中,这被称为清算。有关比特币交易的传播、验证和清算(确认)的更多详细信息,请参阅第 12 章。
Alice现在是0.001 BTC的自豪所有者,她可以进行消费。在接下来的几天里,Alice通过自动取款机和交易所购买了更多的比特币。在下一章中,我们将详细探讨她使用比特币进行的第一次购买,并更详细地研究底层的交易和传播技术。