前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >区块链快速参考(一)

区块链快速参考(一)

作者头像
ApacheCN_飞龙
发布2024-05-24 17:16:04
1060
发布2024-05-24 17:16:04
举报
文章被收录于专栏:信数据得永生信数据得永生

原文:zh.annas-archive.org/md5/b5e57485b0609afbfba46ff759c5d264 译者:飞龙 协议:CC BY-NC-SA 4.0

前言

这是 区块链快速参考,一本旨在全方位介绍新手进入区块链世界的书籍。它带你进入令人激动的区块链技术世界,旨在为那些希望完善其对区块链生态系统各支柱的现有知识的人提供帮助。

本书是你学习如何应用原则和理念以改善生活和业务的不二选择。在研究它们如何工作之前,你将涵盖架构、首次代币发行ICO)、代币、智能合约和术语。开始学习区块链技术只需有一颗好奇心。一旦你掌握了基础知识,你将探索以太坊的组成部分,比如以太代币、交易和智能合约,以构建简单的 Dapp。接下来,你将学习为什么 Solidity 特别用于基于以太坊的项目,然后通过易学的例子探索不同类型的区块链。所有这些都将帮助你应对挑战和问题。此外,你还将学习区块链是如何在物联网和机器学习方面进行革新,以及它如何影响业务流程。

在本书的结尾,你不仅将解决与区块链技术相关的当前和未来的问题,而且还能够构建高效的去中心化应用程序。

本书适合对象

本书是为那些对区块链感兴趣,但在这个领域的突然爆炸性增长所感到不知所措的人而写的。区块链技术不再仅限于比特币,已经渗透到许多领域和大量不同的技术中。这本书主要面向希望了解该技术、它是如何工作的、目前市面上的主要区块链类型以及在组织中使用它或计划发行 ICO 时能得到一些帮助的商务人士。

本书主要面向考虑使用基于区块链的项目的商务用户和开发人员。本书将帮助你对当前的区块链世界有所了解,介绍主要的软件项目和软件包,并介绍了当前影响该领域的一些法律背景。

本书涵盖内容

第一章, 区块链 101,解释了什么是区块链技术以及它们如何工作。我们还介绍了分布式分类账的概念。

第二章, 区块链的组件和结构,深入了解了区块链的技术基础,并探究了一个区块是什么以及链是如何创建的。

第三章, 去中心化与分布式系统,涵盖了不同类型的去中心化和分布式系统,并介绍了它们之间经常被忽视的区别。

第四章,加密学和区块链原理,探讨了对所有区块链正常运行至关重要的加密系统基础知识。

第五章,比特币,深入研究了比特币,第一个区块链,以及其具体的机制。

第六章,山寨币,介绍了在过去几年中备受欢迎的主要非比特币加密货币项目。

第七章,达成共识,探讨了区块链帮助实现共识的不同方式。这是区块链行为中最重要的方面之一。

第八章,高级区块链概念,详述了区块链技术、隐私和匿名性之间的相互作用,以及区块链技术的一些法律副作用。

第九章,加密货币钱包,介绍了用于保管加密货币安全的不同钱包解决方案。

第十章,备选区块链,检查了像 Tendermint 和 Graphene 等区块链创建技术,以及其他非货币类区块链技术。

第十一章,Hyperledger 和企业级区块链,检视了面向企业和公司使用的 Hyperledger 分布式账本技术系列。

第十二章,以太坊 101,深入了解如今第二大主导区块链技术——以太坊。

第十三章,Solidity 101,介绍了以太坊编程语言 Solidity 的基础知识。

第十四章,智能合约,介绍了不同区块链技术不同方式实现的智能合约。

第十五章,以太坊开发,介绍了为以太坊区块链编写应用程序。

第十六章,以太坊账户和以太币代币,本章将探讨以太坊账户的机制,以及以太坊系统中的代币。

第十七章,去中心化应用,全面讨论了去中心化应用,包括那些独立于区块链操作或与区块链技术协同的应用。

第十八章,挖矿,讲解了区块链挖矿以及如何用于保护区块链安全,挖矿中使用的不同类型硬件以及相关的不同协议。

第十九章,ICO 101,讲解了如何发行首次代币发售或首次代币提供的基础知识。

第二十章,创建你自己的货币,我们将介绍如何创建基于区块链的加密数字货币。

第二十一章,扩展性和其他挑战,涵盖了当前区块链技术所面临的困难和限制。

第二十二章,区块链的未来,我们将从技术、法律和社会等方面探讨行业可能的未来发展。

为了最大限度地利用本书的内容

  1. 摆脱炒作,真正试图理解区块链的功用和局限性。
  2. 查看所提及的项目,并看看哪些适用于你的计划。你可能会省下很多工作。
  3. 思考去中心化如何可能帮助或阻碍你的目标。

下载示例代码文件

你可以从 www.packtpub.com 的账户下载本书的示例代码文件。如果你在其他地方购买了这本书,你可以访问 www.packtpub.com/support 并注册,文件将会直接通过邮件发送给你。

你可以按照以下步骤下载代码文件:

  1. www.packtpub.com 登录或注册。
  2. 选择“支持”选项卡。
  3. 点击“代码下载 & 补正”。
  4. 在搜索框中输入书名,然后按照屏幕上的指示操作。

文件下载完成后,请确保使用最新版本的解压软件解压文件夹:

  • WinRAR/7-Zip 适用于 Windows
  • Zipeg/iZip/UnRarX 适用于 Mac
  • 7-Zip/PeaZip 适用于 Linux

本书的代码包也托管在 GitHub 上,链接为 github.com/PacktPublishing/Blockchain-Quick-Reference。如果代码有更新,它将会在现有的 GitHub 仓库上进行更新。

我们还有来自我们丰富书籍和视频目录的其他代码包可用,链接为**github.com/PacktPublishing/**。快去看看吧!

使用的约定

本书中使用了一些文本约定。

CodeInText:表示文本中的代码字词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户的输入以及 Twitter 用户名。这里是一个例子:“通过使用 geth --help 命令来检查各种选项和命令。”

代码块设置如下:

代码语言:javascript
复制
difficulty = difficulty_1_target/current_target
difficulty_1_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

任何命令行的输入或输出都被写成了以下形式:

代码语言:javascript
复制
COMMANDS:
 list Print summary of existing accounts
 new Create a new account
 update Update an existing account
 import Import a private key into a new account

粗体:表示一个新术语、一个重要的词或你在屏幕上看到的词。例如,菜单或对话框中的字词在文本中会像这样出现。这里是一个例子:“从管理面板中选择系统信息”。

警告或重要注释是这样显示的。

提示和技巧是这样显示的。

第一章:区块链 101

自 2008 年成立以来,区块链一直是金融、技术和其他类似产业中所有人的关注话题。除了为记录保存和共识带来新的概览外,区块链在大多数行业中都有巨大的颠覆潜力。初期采用者、爱好者,现在甚至包括政府和组织都在探索区块链技术的用途。

在本书中,我们将讨论使用法定货币进行金融交易的基础,以创建基于以太代币的加密货币,并在此过程中,尝试涵盖大多数区块链周围的主题。我们将讨论基于以太坊的区块链、超级账本项目、钱包、替代币等其他令人兴奋的主题,这些都是了解区块链的功能和潜力所必需的内容。

在本章中,我们将讨论以下内容:

  • 金融交易
  • 财务分类账
  • P2P 网络
  • 区块链的一般要素
  • 区块链的用途和好处
  • 各种类型的区块链
  • 引入共识系统
  • 区块链网络面临的挑战

让我们先讨论前述列出的各个主题及其周围的其他重要细节。

处理金融交易

在我们深入探讨基于区块链的交易之前,了解金融交易的实际发生方式和法定货币的运作是很有帮助的。

法定货币完全依赖经济信用;根据定义,它是政府宣布的合法货币。没有政府的保证,法定货币是毫无价值的。

另一种货币是商品货币;它源自制造好货币所用的商品。例如,如果制作银币,其价值将是以银的价值来衡量,而不是币值的定义价值。与以物易物相比,商品货币是贸易的一种便利形式。然而,它容易出现巨大的价格波动。

商品货币被证明不易携带,因此政府推出了印刷货币,可以从政府银行兑换成实际商品,但即使如此,这对政府管理来说也很困难,于是推出了法定货币,或信仰为基础的货币。

法定货币在其时间内产生了许多第三方共识;这有助于从系统中消除欺诈行为。有必要有一个严格的共识过程,以确保在系统内保持进程和隐私. 下图描述了基于信用卡的支付过程:

基于信用卡的支付过程以及需要多个第三方参考点来维护信任。

分类账

分类账是一种记录经济交易的记录,包括现金、应收账款、存货、固定资产、应付账款、应计费用、债务、权益、收入、成本、工资、薪水、费用、折旧等等。简而言之,账目保管的书籍称为分类账。它是银行和其他金融机构用来调节账面余额的主要记录。会计期间的所有借方和贷方都被计算以使分类账平衡。

银行、金融机构和企业的财务报表是使用分类账户编制的。

无信任系统的概念

在使用法定货币进行金融交易时,我们有一个维护有关每笔交易信息的第三方分类账。其中一些第三方信任系统是 VISA、万事达卡、银行等等。

区块链通过使每个人成为分类账的一部分改变了这种无信任系统的格局。因此,它有时甚至被称为分布式账本;在区块链的比特币系统中,进行交易的每个人都有其他交易的记录,这些交易已经发生或正在发生。这个去中心化的分类账为每笔交易提供了多个真实性点;此外,规则是预先定义的,并且对于每个钱包用户都不同。

进一步说明,区块链实际上并没有消除信任;它所做的是最小化信任的量,并将其均匀分布在网络中。使用各种规则定义了特定的协议,这些规则自动根据遵循的规则鼓励赞助者。我们将在后面的章节中对此进行深入讨论。

引入区块链

2008 年,比特币的创始人或一群创始人称为中本聪的白皮书描述了比特币作为纯粹的点对点电子现金的版本。区块链是随比特币一起引入的。在最初阶段,区块链仅用于比特币的比特币金融交易。

区块链不仅限制于比特币的金融交易,而且一般来说,任何由开放、去中心化账本维护的两方之间的交易。最重要的是,这种基础技术可以被分离并且可以有其他应用程序创建,从而引发了与之相关的实验和项目数量的激增。

许多受到区块链启发的项目开始了,比如以太坊、超级账本等,以及货币,比如莱特币、名称币、迅速币等等。

区块链本质上是一个分布式和去中心化的开放分类账,由其对等体之间的密码学管理和更新各种共识协议和协议。人们可以使用交易交换价值,而不需要任何第三方参与,并且维护分类账的权力分布在区块链的所有参与者或区块链的节点之间,使其成为一个真正分布式和去中心化的系统。

使用区块链的一些行业领域如下:

  • 加密货币:比特币是其中的最佳案例。除此之外,还有各种替代加密货币,如以太坊,莱特币,比特币等。
  • 网络安全:有各种公司和项目利用区块链的分布式特性来创建大规模使用的特殊认证协议。
  • 医疗保健:可扩展性是区块链的最佳催化剂之一;许多项目正在安全地存储数据,并使用分析来找到完美的解决方案。提供分散式的病人记录和认证已经在各种设施中得到应用。
  • 金融服务:许多保险和金融机构正在利用区块链来维护广泛的银行数据,如财务记录,分类账,担保,债券等等。
  • 制造业:供应链,样机和概念验证,以及商品的跟踪和追踪正以最佳效率利用区块链。
  • 治理:许多政府都在争相成为世界上第一个以区块链为动力的国家。区块链正在被应用于大多数政府部门,不仅仅局限于公共安全,交通,健康和运输等领域。
  • 零售:许多初创公司和项目旨在引入无中间人的开放生态系统;一些正在研究忠诚度系统和使用区块链衍生礼品卡系统。
  • 媒体:唱片公司可以使用区块链来保护其所有权网络和知识产权。
  • 旅行:有一些项目正在开展,以引入和革新车辆租赁,搭车共享等与旅行相关的问题。
  • 法律:区块链可以带来透明性,并解决当前复杂的法律体系中的规模问题。

此外,我们将讨论区块链的各种其他要素以及区块链可以解决的其他问题。

区块链的一般要素

现在是讨论区块链的一般要素的时候了,从其基本结构开始,到其构成以及进一步的细节。

对等网络

这是一种所有对等方都可以彼此通信并且享有同等权利的网络类型,无需服务器或主机的中央协调。在传统网络中,系统连接到一个中央服务器,这个服务器作为系统间通信的中心点。另一方面,在对等网络中,所有系统均等地相互连接,没有系统拥有中央权威。看一下这个图表:

客户端到服务器网络和对等网络之间的图像差异

区块

区块是区块链的最小单元;第一个区块称为创世区块。每个区块包含批量的经过哈希和编码的交易。区块以 Merkle 树形式存储。每个区块都包括链中上一个区块的哈希,将所有区块链接在一起。在比特币中,一个区块平均包含 500 多个交易。一个区块的平均大小约为 1 MB。一个区块由头部和交易列表组成。

区块头

比特币中的一个区块的区块头包含有关区块的元数据。考虑以下内容:

  • 比特币版本:此字段包含比特币版本号。
  • 上一个区块哈希:创建新区块哈希所需的上一个区块的哈希。
  • Merkle 根:这是当前区块交易的 Merkle 树根的哈希。
  • 时间戳:这是 UNIX 中的区块时间戳。
  • 挖矿难度:挖矿是比特币区块链生态系统的一个关键部分。在头部中提到了挖矿的难度目标。
  • Nonce:区块链在每个区块中添加偏差;这些称为随机数。看一下这张图表:

区块头的形成以及 Merkle 根和 Merkle 树的组成

地址

地址是用于在区块链上的交易中向另一个地址发送数据的唯一标识符;在比特币的情况下,地址是用于发送或接收比特币的标识符。比特币区块链地址已经从时间到时间演变。最初,IP 地址被用作比特币地址,但是这种方法容易受到严重的安全漏洞的影响;因此,决定使用 P2PKH 作为标准格式。 P2PKH 地址由 34 个字符组成,其第一个字符是整数 1。从字面上理解,P2PKH表示支付到公钥哈希。这是基于 P2PKH 的比特币地址的一个示例:1PNjry6F8p7eaKjjUEJiLuCzabRyGeJXxg。

现在,有另一种高级的比特币协议用于创建P2SH地址,这意味着支付到脚本哈希。 P2SH 地址与 P2PKH 地址的一个主要区别是,它始终以整数 3 开头而不是 1。

钱包

钱包是用于存储公钥或私钥以及交易地址的数字钱包。有各种类型的钱包可用,每种钱包都提供一定级别的安全性和隐私性。

以下是根据其功能的各种类型的钱包列表:

  • 软件:此钱包安装在实际计算机上;私钥访问由安装钱包软件的机器的所有者拥有。
  • 网络钱包:这些钱包基于云,并且可以在任何地方访问。私钥与钱包服务共享。
  • 纸钱包:该钱包的私钥被打印在纸上。
  • 硬件:这些是物理钱包,小巧便携。每个钱包的硬件用户都拥有私钥。

了解各种钱包的功能以及每种钱包的需求是非常重要的。

交易

交易是将数据从区块链中的一个地址转移到另一个地址的过程。在比特币中,它是指将比特币从一个地址转移到另一个地址。所有在区块链中发生的交易都从链的开始到当前时间都被注册;这些信息在网络和所有 P2P 节点之间共享。交易由矿工确认,他们会因为他们的工作而得到经济补偿。

区块链中的每笔交易都需要经过一定数量的确认,因为它们是交易的共识。没有确认,就无法验证任何交易。

节点

节点是区块链网络的一部分,并执行分配给它们的功能。连接到比特币网络的任何设备都可以称为节点。作为网络的积极组成部分并验证区块链所有规则的节点称为完整节点。另一种类型的节点称为超级节点,它充当高度连接的重新分配点和中继站。

区块链解决了什么问题?

区块链执行各种功能。我们将在这里简要讨论每一个功能,并稍后详细介绍:

  • 安全性:由于其共识结构和多个失败回退点,故障的可能性最小。其分布式性质提供了更好的安全性和可靠性。
  • 更快的结算:传统的银行协议非常耗时,并且产生相当大的外汇费用;另一方面,基于区块链的比特币提供了几乎即时的速度,为整个金融行业节省了时间和成本。
  • 透明度:由于其分散性质,无需第三方,因为区块链与所有拥有钱包的人共享,使其成为一个透明的、可信赖的系统。
  • 经济性:没有第三方,账本由所有人共享,这意味着没有开销或审计费用。

以下图表显示了中心化、分散化和分布式网络之间的区别:

由于区块链具有分布式的特性,它提供了许多开箱即用的功能,如高稳定性、安全性、可伸缩性和先前讨论过的其他功能。

区块链的类型

考虑到区块链的发展方式,我们可以将区块链分类为多种类型;这些类型定义了区块链的进程,并使其超越了 P2P 货币的使用范围。以下图表显示了当前可用或提出的不同类型的区块链网络。

现在我们将详细讨论每种类型的区块链网络。

公开区块链

公共区块链是一种任何人都可以成为交易过程节点的区块链。加密验证的经济激励可能存在,也可能不存在。这是一个完全开放的公共分类账系统。公共区块链也可以称为无许可分类账

这些区块链由加密经济学保护,即采用 PoW 或 PoS 或任何其他共识机制的经济激励和加密验证机制。这种区块链的一些流行例子包括比特币、以太坊、莱特币等。

半私有区块链

半私有区块链通常由单个组织或一群个人运行,他们授予任何用户访问权限,这些用户可以是直接消费者或用于内部组织目的。这种区块链有对公众开放的公共部分,任何人都可以参与。

私有区块链

在私有区块链中,写入权限由一个组织或一定群体的个人拥有。读取权限对公众开放或限制在大量用户中。这种区块链中的交易要由系统中很少的节点进行验证。

私有区块链的一些典型例子包括 Gem Health 网络、Corda 等。

联盟区块链

在这种类型的区块链中,正如其名称所示,共识权被限制在一组人或节点之内。这也被称为许可私有区块链。由于节点较少,在这些类型的区块链中,交易审核时间很快。挖矿的经济回报在这些区块链中是不可用的。

一些以联盟为基础的区块链的例子有德国交易所和 R3(金融机构)。

拜占庭将军问题

这是各种计算机网络近期才有确定解决方案的经典问题之一。这个问题被称为拜占庭将军问题BGP)。这个问题的根源在于一种关于共识的问题,这是由于对网络节点的不信任。

让我们假设各种将军正在指挥拜占庭军队,计划进攻一座城市,每位将军都有自己的军队。他们必须同时发起进攻才能取胜。问题在于一个或多个将军可能是不忠诚的,并传递错误的信息。因此,必须找到一种有效的解决办法,以便进行无缝沟通,即使遇到欺诈性的将军。

这个问题是由卡斯特罗和利斯科夫解决的,他们提出了实用拜占庭容错性PBFT)算法。后来,2009 年,通过发明比特币并开发 PoW 作为实现共识的系统,第一个实用的实现得以实现。

我们将在后面的章节详细讨论 BGP。

共识

共识是在区块链内的节点之间达成一般协议的过程。当它是一个分布式网络,并且需要对一个值达成一致意见时,有各种可用的算法。

共识机制:每个区块链都必须有一种机制,可以处理网络中存在的各种节点。一些区块链的主要共识机制如下所示:

  • 工作量证明PoW):这是最常用的共识机制,也是第一个加密货币比特币使用的机制。这种算法已经被证明最能抵抗 Sybil 攻击。
  • 权益证明PoS)这使得那些拥有最多加密货币的人更容易挖掘新的区块。
  • 委托权益证明DPOS)与 PoS 相比的一个小变化是,每个拥有权益的节点都可以通过投票将交易的验证委托给其他节点。
  • 重要性证明POI)旨在节能,并且也可以在相对较低功率的机器上运行。它依赖于权益以及代币的使用和流动来建立信任和重要性。
  • 时间过度证明PoET)这是由英特尔创建的一种区块链算法,使用可信执行环境TEE)来在保证等待时间的情况下实现随机性和安全性。
  • 燃烧证明PoB)这主要用于将一种加密货币引导到另一种加密货币。其基本概念是矿工必须证明他们已经销毁了硬币,也就是说,他们已经将其发送到一个可验证的不可花费的地址。
  • 活动证明PoA):在这种算法中,从整个网络中随机选择一个节点来签署一个必须是防篡改的新区块。

所有先前的算法以及一大批已经可用或正在研究中的算法都确保实现了完美的共识状态,并且网络上不存在可能的安全威胁。

区块链简介

是时候讨论区块链技术所面临的益处以及挑战或限制,以及整个社区正在采取的措施了。

益处

如果一切都关乎信任和安全,即使一切已经高度安全和私密,我们真的需要一个可信赖的系统吗?让我们来看看现有生态系统中每个存在的限制,以及区块链完全匹配的地方所面临的主要问题。

银行记录

银行业的记录保留和分类账维护是一个耗时且消耗资源的过程,仍然容易出现错误。在当前系统中,州内资金的转移很容易,但是当我们需要跨境转移资金时,主要面临的问题是时间和高昂的成本。

即使大多数资金只是数据库中的一项记录,它仍然产生很高的外汇成本,并且速度非常慢。

医疗记录

即使有电子记录,全球范围内的记录管理、验证和传输问题在实际应用时仍然很困难。由于没有通用的第三方,很多记录都是纸质保存的,并且容易损坏或丢失。

在流行病学病例中,有必要访问和挖掘特定地理位置患者的医疗记录。在这种情况下,区块链是一大福音,因为如果医疗记录存储在区块链上,那么这些记录就可以轻松获取,并且对于需要的用户来说也是安全和私密的。

政府记录

任何政府机构都必须处理其所有部门的大量记录;可以在区块链上进行新的备案,确保数据在分布式系统中始终保持安全。

数据存储的透明和分布式性使得系统无腐败,因为共识确保区块链中的参与者在需要时使用所需的标准。

创意和版权记录

版权和创意记录可以得到安全认证,以控制版权滥用和许可。

其中一个主要例子是 KodakCoin,这是基于区块链的面向摄影师的加密货币,旨在用于支付许可摄影作品。

大学学位记录

验证、认证和检查很困难。极易遭到盗窃和滥用。区块链可以为记录提供半私密访问,确保数字签名使用获得所需标准的区块链。

渐进地记录学位和成绩将有助于资源的有效利用,以及适当的分配和检查流程的便利性。

除了比特币和替代加密货币之外,上述只是区块链的各种用例。在接下来的章节中,我们将更详细地讨论这些观点。

挑战

与任何技术一样,区块链技术都存在各种挑战和局限。有必要解决这些挑战,并提出更健壮、可靠和富有资源的解决方案。让我们简要讨论每个挑战及其解决方案。

复杂性

区块链具有复杂性,但易于实施。

然而,随着广泛的意识和讨论,这可能在未来变得更容易。

网络可扩展性

如果区块链没有稳固的节点网络,维护区块链并为持续交易提供明确的共识将变得困难。

速度和成本

虽然基于区块链的交易速度非常快,而且比任何其他传统方法便宜,但是随着每个区块中交易数量的减少,这变得困难,速度也会减慢。

就成本而言,需要大量硬件,这反过来导致巨大的网络成本和节点之间的间歇网络的需求。

社区已提出了各种扩展解决方案。最好的方法是增加区块大小以实现更多的交易量每个区块,或者采用动态区块大小系统。除此之外,还提出了各种其他解决方案,以保持速度降低和成本控制。

双重支付

这是对区块链网络的一种攻击方式,即给定一组硬币在多个交易中被花费;比特币创始人在推出时提到的一个问题是51 攻击。在这种情况下,如果某个矿工或矿工组控制了超过一半的区块链计算能力,由于区块链的开放性质,任何人都可以成为节点的一部分;这会触发 51 攻击,在这种情况下,由于对网络的主导控制,该人可以确认一个错误的交易,导致同一硬币被花费两次。

另一种实现这一目标的方法是在区块链网络中快速连续进行两笔相互冲突的交易,但如果获得了大量确认,那么这种情况可以避免。

还有其他各种功能将在接下来的章节中讨论,值得注意的是,所有这些功能都存在于现有系统中,但考虑到活跃的社区支持,所有这些限制正在以很高的速度得到缓解。

总结

本章介绍了区块链。首先,讨论了分布式网络、金融交易和 P2P 网络的概念。然后,我们讨论了区块链的历史和各种其他主题,如区块链的元素、区块链的类型和共识。

在接下来的章节中,我们将更详细地讨论区块链;我们将讨论区块链背后的机制、比特币。我们还将更详细地了解如何达成共识,以及深入探讨基于区块链的应用,如钱包、以太坊、Hyperledger,一直到创建自己的加密货币。

第二章:区块链的组成部分和结构

区块链不是单一技术,而是更多的一种技术。区块链是一种架构概念,有许多构建区块链的方法,每种变体都会对系统运行产生不同的影响。在本章中,我们将讨论所有或大部分目前实施的区块链技术的方面。

在本章结束时,您应该能够描述区块链的各个部分,并在架构层面上评估一种区块链技术对另一种的能力。

以下是我们将要覆盖的概念:

  • 区块
  • 区块之间的链
  • 哈希和签名
  • 区块结构
  • 区块矿工
  • 区块验证者
  • 智能合约
  • 区块链速度

区块

区块链是一种特定的技术,但有许多形式和变种。例如,比特币和以太坊是工作量证明的区块链。以太坊有智能合约,并且许多区块链允许自定义代币。区块链可以通过它们的共识算法(PoS、PoW 和其他)来区分,在第七章——达成共识中有所涵盖*,*以及它们的功能集,比如能够运行智能合约以及这些智能合约在实践中的运作方式。所有这些变体都有一个共同的概念:区块。区块链技术的最基本单位是区块。想象一个基本的电子表格,可以简单地将区块视为其。在这个电子表格中,您可能会看到这样的条目:

账户

交易额

新余额

旧余额

操作

账号-9234222

−$2,000

$5,000

$7,000

向账号-12345678 发送资金

账号-12345678

$2,000

$2,000

0

从账号-9234222 接收资金

账号-3456789

-$200

$50

$250

向账号-68890234 发送资金

账号-68890234

$200

$800

$600

从账号-3456789 接收资金

一个区块是区块链网络中的交易条目集,存储在充当参与者的计算机上。每个区块链网络都有一个区块时间,或者每个区块表示交易的大致时间,以及一个区块大小:无论如何,一个区块可以处理的总交易量。如果一个网络的区块时间为两分钟,那两分钟内只有四笔交易,那么该区块就只包含这四笔交易。如果一个网络有 1,000,000 笔交易,那么可能有太多交易无法适应区块大小。在这种情况下,交易必须等待它们的轮次,等待一个有剩余空间的空区块。一些区块链通过网络费的概念解决了这个问题。网络费是发送者愿意支付的金额(以区块链的原生代币计量),以便将交易纳入一个区块中。费用越高,优先级越高,可以立即被纳入链中。

区块之间的链

除了交易分类帐,每个块通常还包含一些附加元数据。元数据包括以下内容:

  • 对先前区块的引用
  • 网络的元数据
  • 交易的默克尔根,作为块有效性的检查

这些基础知识通常适用于所有的区块链。以太坊、比特币、莱特币等都使用这种常见模式,而这种模式也是链的本质。每个链还倾向于包含特定于该生态系统的其他元数据,这些差异将在以后的章节中讨论。以下是比特币区块链的一个示例:

作者:中本聪,http://Bitcoin.org/Bitcoin.pdf,麻省理工学院,https://commons.wikimedia.org/w/index.php?curid=24542868

如果你问,Merkle 根是什么?那就引出了我们下一组关键概念:哈希和签名。

哈希和签名

假设你有两个各 50 页长的文本文件。你想知道它们是否相同或不同。你可以使用哈希值来实现这一点。哈希(或哈希函数)是一种数学过程,它将任何输入转换为固定长度的输出。有许多这样的函数,最常见的是 SHA-1、SHA-2 和 MD5。例如,以下是一个名为MD5的哈希函数的输出,输入是两页文本:

代码语言:javascript
复制
9a137a78cf0c364e4d94078af1e221be

哈希函数的强大之处在于当我在末尾添加一个字符并运行相同的函数时会发生什么:

代码语言:javascript
复制
8469c950d50b3394a30df3e0d2d14d74

如你所见,输出完全不同。如果你想快速证明某些数据在任何方面都没有被改变,哈希函数就能胜任。在我们的讨论中,哈希函数的重要部分如下:

  • 计算机运行速度非常快。
  • 这个函数是单向的。你可以轻松地获得哈希值,但实际上你不能使用哈希值来恢复原始数据。
  • 它们可以被递归使用。例如,我可以取哈希的哈希;例如,MD5(8469c950d50b3394a30df3e0d2d14d74)变成了705b003fc9b09ecbeac0b852dfc65377

哈希的递归性质使我们引入了默克尔树的概念,这个概念是以专利命名的。默克尔树是一种数据结构,如果你在白板上画出它,它往往像一棵树。在树的每一步中,根节点包含其子节点数据的哈希值。以下是默克尔树的图示:

原始插图作者为 David Göthberg,瑞典,已释放至公共领域

在区块链中,这意味着存在着一个递归的哈希过程。递归哈希是指我们对哈希值进行哈希运算的过程。例如,想象一下我们有以下单词及其哈希值。这里,我们将使用 MD5 算法,因为在网络上很容易找到 MD5 哈希代码,所以你可以自己尝试一下:

代码语言:javascript
复制
Salad: c2e055acd7ea39b9762acfa672a74136
Fork: b2fcb4ba898f479790076dbd5daa133f
Spoon: 4b8e23084e0f4d55a47102da363ef90c

要计算递归哈希或根哈希,我们将把这些哈希值相加,如下所示:

代码语言:javascript
复制
c2e055acd7ea39b9762acfa672a74136b2fcb4ba898f479790076dbd5daa133f4b8e23084e0f4d55a47102da363ef90c

然后我们将对该值进行哈希,结果如下:

代码语言:javascript
复制
189d3992be73a5eceb9c6f7cc1ec66e1

这个过程可以一次又一次地发生。最终的哈希可以用来检查树中的任何值是否已更改。这个根哈希是一种数据高效且有效的方式,可以确保数据的一致性。

每个区块都包含了所有交易的根哈希。由于哈希的单向性,任何人都可以查看这个根哈希,并将其与区块中的数据进行比对,并知道所有数据是否有效和未更改。这使得任何人都可以快速验证每笔交易是否正确。每个区块链对这种模式都有小的变化(使用不同的函数或以稍微不同的方式存储数据),但基本概念是一样的。

数字签名

现在我们已经介绍了哈希,是时候来介绍一个相关的概念:数字签名。数字签名利用哈希的性质,不仅证明数据没有改变,还提供了谁创建了数据的保证。数字签名利用哈希的概念,还添加了一个新的概念:数字密钥

数字密钥是什么?

所有常见的数字签名方法都使用所谓的公钥密码学。在公钥密码学中,有两把密钥:一个公钥和一个私钥。为了创建签名,首先对原始数据进行哈希,然后使用私钥对该哈希进行加密。加密后的哈希,以及其他信息,如用于加密的方法,都被附加到原始数据中,形成签名。

这就是公钥发挥作用的地方。公钥和私钥之间的数学连接允许公钥解密哈希,然后可以用哈希来检查数据。因此,现在可以检查两件事情:谁签署了数据以及被签名的数据是否已被更改。以下是同样的图解表示:

由 Engelbert Niehaus 制作,用户 Bananenfalter 制作的 SVG 色彩方案 - 使用 Bananenfalter 制作的插图的 SVG 颜色,并使用 Inkscape 进行编辑,CC BY-SA 3.0,https://en.wikiversity.org/w/index.php?curid=226250

这种密码学形式对区块链技术至关重要。通过哈希和数字签名,区块链能够记录行为(代币的移动)以及证明是谁发起了这些行为(通过数字签名)。

让我们举个例子,Jeremy 和 Nadia 希望互相安全地发送消息。每个人都公布了一个公钥。Jeremy 的公钥将如下所示(使用 1,024 位的 RSA 算法):

代码语言:javascript
复制
-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgH+CYOAgKsHTrMlsaZ32Gpdfo4pw
JRfHu5d+KoOgbmYb0C2y1PiHNGEyXgd0a8iO1KWvzwRUMkPJr7DbVBnfl1YfucNp
OjAsUWT1pq+OVQ599zecpnUpyaLyg/aW9ibjWAGiRDVXemj0UgMUVNHmi+OEuHVQ
ccy5eYVGzz5RYaovAgMBAAE=
-----END PUBLIC KEY-----

有了这把密钥,他将保持私有另一把密钥,其外观如下:

代码语言:javascript
复制
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgH+CYOAgKsHTrMlsaZ32Gpdfo4pwJRfHu5d+KoOgbmYb0C2y1PiH
NGEyXgd0a8iO1KWvzwRUMkPJr7DbVBnfl1YfucNpOjAsUWT1pq+OVQ599zecpnUp
yaLyg/aW9ibjWAGiRDVXemj0UgMUVNHmi+OEuHVQccy5eYVGzz5RYaovAgMBAAEC
gYBR4AQYpk8OOr9+bxC6j2avwIegwzXuOSBpvGfMMV3yTvW0AlriYt7tcowSOV1k
YOKGqYdCflXwVTdtVsh//KSNiFtsLih2FRC+Uj1fEu2zpGzErhFCN2sv1t+2wjlk
TRY78prPNa+3K2Ld3NJse3gmhodYqRkxFFxlCmOxTzc4wQJBAOQ0PtsKCZwxRsyx
GAtULHWFIhV9o0k/DjLw5rreA8H3lb3tYZ5ErYuhS0HlI+7mrPUqzYaltG6QpJQY
YlMgktECQQCPClB1xxoIvccmWGoEvqG07kZ4OBZcBmgCzF6ULQY4JkU4k7LCxG4q
+wAeWteaP+/3HgS9RDQlHGITAmqhW6z/AkBaB16QzYnzC+GxmWAx//g2ONq0fcdw
eybf4/gy2qnC2SlDL6ZmaRPKVUy6Z2rgsjKj2koRB8iCIiA7qM8Jmn0xAkBzi9Vr
DqaNISBabVlW89cUnNX4Dvag59vlRsmv0J8RhHiuN0FT6/FCbvetjZxUUgm6CVmy
ugGVaNQgnvcb2T5pAkEAsSvEW6yq6KaV9NxXn4Ge4b9lQoGlR6xNrvGfoxto79vL
7nR29ZB4yVFo/kMVstU3uQDB0Pnj2fOUmI3MeoHgJg==
-----END RSA PRIVATE KEY-----

与此同时,娜迪亚将采取相同的步骤,得到以下两个密钥:

代码语言:javascript
复制
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHWwgTfI5Tic41YjUZqTmiKt+R
s5OMKIEdHPTyM8FZNaOBWIosFQbYk266V+R7k9odTnwCfi370GOt0k5MdTQilb9h
bK/lYiavIltgBd+1Em7xm7UihwO4th5APcg2vG4sppK41b1a9/I5E6P/jpQ320vF
BMuEtcnBoWawWcbXJwIDAQAB
-----END PUBLIC KEY-----

这是她的私钥:

代码语言:javascript
复制
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDHWwgTfI5Tic41YjUZqTmiKt+Rs5OMKIEdHPTyM8FZNaOBWIos
FQbYk266V+R7k9odTnwCfi370GOt0k5MdTQilb9hbK/lYiavIltgBd+1Em7xm7Ui
hwO4th5APcg2vG4sppK41b1a9/I5E6P/jpQ320vFBMuEtcnBoWawWcbXJwIDAQAB
AoGBAKz9FCv8qHBbI2H1f0huLQHInEoNftpfh3Jg3ziQqpWj0ub5kqSf9lnWzX3L
qQuHB/zoTvnGzlY1xVlfJex4w6w49Muq2Ggdq23CnSoor8ovgmdUhtikfC6HnXwy
PG6rtoUYRBV3j8vRlSo5PtSRD+H4lt2YGhQoXQemwlw+r5pRAkEA+unxBOj7/sec
3Z998qLWw2wV4p9L/wCCfq5neFndjRfVHfDtVrYKOfVuTO1a8gOal2Tz/QI6YMpJ
exo9OEbleQJBAMtlimh4S95mxGHPVwWvCtmxaFR4RxUpAcYtX3R+ko1kbZ+4Q3Jd
TYD5JGaVBGDodBCRAJALwBv1J/o/BYIhmZ8CQBdtVlKWCkk8i/npVVIdQB4Y7mYt
Z2QUwRpg4EpNYbE1w3E7OH27G3NT5guKsc4c5gcyptE9rwOwf3Hd/k9N10kCQQCV
YsCjNidS81utEuGxVPy9IqWj1KswiWu6KD0BjK0KmAZD1swCxTBVV6c6iJwsqM4G
FNm68kZowkhYbc0X5KG1AkBp3Rqc46WBbpE5lj7nzhagYz5Cb/SbNLSp5AFh3W5c
sjsmYQXfVtw9YuU6dupFU4ysGgLBpvkf0iU4xtGOFvQJ
-----END RSA PRIVATE KEY-----

有了这些密钥,杰里米决定给娜迪亚发送一条消息。他使用她的密钥并加密以下消息:我爱比特币,结果如下所示的数据:

代码语言:javascript
复制
EltHy0s1W1mZi4+Ypccur94pDRHw6GHYnwC+cDgQwa9xB3EggNGHfWBM8mCIOUV3iT1uIzD5dHJwSqLFQOPaHJCSp2/WTSXmWLohm5EAyMOwKv7M4gP3D/914dOBdpZyrsc6+aD/hVqRZfOQq6/6ctP5/3gX7GHrgqbrq/L7FFc=

除了娜迪亚以外,没有人能读到这个。她使用相同的算法,输入这些数据和她的私钥,得到以下消息:

代码语言:javascript
复制
I love Bitcoin.

我们将在第四章中讨论更多关于这个话题的内容,密码学和区块链背后的机制

示例区块数据

在本节中,我们将研究区块链中使用的数据结构。我们主要将关注以太坊、比特币和比特股区块链,以查看关键的共同点和不同点。

示例以太坊区块

这是来自示例以太坊区块的数据,来自区块 5223669:

如果你记得,在本章的开头,我们说有三件事是区块链的共同点:对先前区块的引用,区块中交易的哈希值,以及特定于网络的元数据。在这个来自以太坊网络的区块中,这三者都存在。对先前区块的引用包含在区块高度和父哈希值中。交易的哈希值是哈希条目,元数据是其他所有内容,这将是网络特定的。

比特币区块

这是比特币区块的快照:

比特币和以太坊都是 PoW 链;现在让我们来看一个股权证明POS)生态系统:比特股。

这是来自比特股区块的一些数据:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尽管架构完全不同,但基本原理仍然存在:对先前区块的引用,默克尔根和网络元数据。在比特股中,您还可以看到有一个见证签名。作为 PoS 区块链,比特股有验证者(它们被称为见证人)。在这里,我们看到负责计算此区块的计算机的见证和签名。

全局状态

区块链技术的一个关键特性是它可以作为一个可信任的全局状态。有许多应用场景中,可信任的全局状态是重要但困难的,比如金融技术和物流。

例如,几年前,我在线订购了一些摄像机设备。几天后,我回家时惊讶地发现我的设备已经到货了。我非常感激,因为那些昂贵的设备没有被偷走。直到第二天我才收到卖家发来的一封邮件,提醒我包裹已经发出。

这里清晰地列出了全局状态的细节。事实上,摄像机已经在一辆卡车上了,但我和货运商都没有妥善地存储这些信息。如果我的摄像机设备从我门口被盗走了,那将会很难发现发生了什么。

如果卖方、物流公司和我都从区块链中写入和读取数据,这将是不可能的。当物流公司登记货物时,物体的状态会发生变化,一旦下一个区块被确认,卖方和我都会立即知道。

区块时间和区块大小

正如之前讨论的,每个区块链都有一个区块时间和一个区块大小。每个网络可能具有非常不同的值和处理区块时间的方式。例如,在比特币中,区块时间是 10 分钟,而在以太坊中,区块时间是 20 秒。在恒星网络中,区块时间约为 4 秒。这些区块时间是由运行网络的代码确定的。对于比特币、莱特币和以太坊等网络,区块时间实际上是一个平均值。因为这些是 PoW 网络,一旦矿工解决了挖矿难题,他们就可以证明该区块已完成。在这些网络中,难题的难度会自动调整,以便平均达到所需的区块时间。

区块大小是每个区块中可以存储的最大信息量。对于比特币来说,这是价值 1 MB 的交易数据。对于以太坊来说,限制实际上是以 GAS 为单位衡量的,GAS 是一种特殊的计量单位,用于衡量处理能力(因为以太坊具有智能合约)以及存储。与比特币不同,每个区块的 GAS/存储限制不是固定的,而是由矿工动态调整的。

需要注意的是,区块中只包含可能的信息,直到被网络确认为止。例如,可能会发生 1000 笔交易,但如果只有 500 笔被记录在下一个区块中,那么只有这 500 笔交易是真实的。剩余的交易将继续等待被包含到未来的区块中。

区块链矿工

区块链矿工和区块链验证者(见下面的部分)都与共识有关,这将在第七章 实现共识 中深入探讨。通常,区块链矿工与区块链相关联。PoW 链通过让矿工的计算机竞争执行证明链中的区块所需的工作来运作。目前,唯一主要的 PoW 区块链是比特币、莱特币和以太坊。大多数其他系统使用 PoS 共识的变体,我们将在下一节 区块链验证者 中讨论。我们将在第十八章 挖矿 中详细介绍挖矿的工作原理。

区块链验证者

区块链验证者被 PoS 系统使用。 PoS 系统通过要求希望参与网络的计算机拥有股份(大量代币)来帮助区块链运作。与 PoW 算法不同,计算机不能加入网络并期望在共识中发挥任何作用。相反,他们必须通过代币所有权来购入。根据网络的不同,验证者的命名约定可能不同。Tendermint 有验证者,Steemit 和 Bitshares 有见证人,Cardano 有股东等。验证者是允许参与网络并这样做的具有正股份(代币数量)的计算机。每个链都有自己的规则来解决这个问题,这将在第七章*,* 实现共识中更加深入地讨论。

智能合约

一些区块链被称为具有智能合约,当它们能够根据链的变化执行操作和行为时。这将在第十四章 智能合约和第十七章 去中心化应用程序中深入讨论。

区块链速度

区块链系统的一个持续关注点是性能。公共区块链是全球性系统,其系统资源同时由全球所有用户共享。由于用户基数庞大,资源约束是一个真正的问题,并且已经导致了真正的问题。例如,一个名为CryptoKitties的热门游戏在以太坊上推出,导致网络拥塞。其他应用程序几乎无法使用,因为来自 CryptoKitties 的负载使网络不堪重负。

如何计算区块链吞吐量

计算区块链吞吐量的快速粗略方法如下:

对于比特币,交易吞吐量约为7tx/second。这是因为区块相对较小,而且区块时间非常长。以太坊具有较短的区块时间,但区块非常小,因此最终达到约14tx/second。像 Stellar、Bitshares 和 Waves 这样的区块链可以达到每秒超过1000tx/second的速度。

与传统网络的比较

VISA 是全球首要的支付处理网络。在公司的一篇博客中,透露 VISA 每秒可以处理超过 40,000 笔交易。这是峰值容量,除了在诸如圣诞节之类的时候,它通常不会处理这么多交易。然而,应清楚地看到,区块链在能够与 VISA 相媲美的规模上处理全球支付之前还有很长的路要走。然而,像 EOS 和 COSMOS 这样的新网络正在尝试,通过创新的多线程设计和分段区块链区域。

摘要

现在你应该理解了区块链的基本组成部分。区块是一组被聚合在一起的交易,并充当区块链的基本单位。在 PoW 区块链上,矿工是创建新区块的计算机。在 PoS 区块链上,验证者,也称为见证人和其他名称,是创建区块的计算机。数字签名由公钥和私钥组成,并利用数学来证明数据的作者。

哈希的关键思想是使用数学函数将任意数据映射到一个单一、易处理的值。对数据的任何更改都将使最终值大不相同。

  • 从哈希值构造原始数据基本上是不可能的,但从原始数据创建哈希值却很容易。
  • 你可以利用这些属性来证明数据未被更改。

在下一章中,我们将学习这些系统是什么,以及区块链如何同时具备这两种特性。我们将学习如何区分这两个系统,并且为什么这些概念对区块链如此重要。

第三章:分散化与分布式系统

区块链领域最大的误解之一在于分布式系统与去中心化系统之间的区别。在本章中,我们将讨论这两种类型的系统,它们为什么重要,它们的相似之处,它们的不同之处,以及区块链技术如何适用于这两个类别。

通过本章结束时,你应该能够做到以下事情:

  • 定义分布式系统
  • 定义去中心化系统
  • 了解分布式系统的优缺点
  • 了解去中心化系统的优缺点

分布式系统

分布式系统是指应用程序及其架构分布在大量机器和最好是物理位置之间。更简单地说,分布式系统是指系统的目标分布在不同位置的多个子系统之间。这意味着多台计算机在多个位置上必须协调以实现整个系统或应用程序的目标。这与单片应用程序不同,单片应用程序将所有内容捆绑在一起。

让我们以一个简单的 Web 应用程序为例。基本的 Web 应用程序会在单个 Web 服务器上运行处理、存储和其他所有内容。代码往往以单体形式运行——所有内容都捆绑在一起。当用户连接到 Web 应用程序时,它会接受 HTTP 请求,使用代码处理请求,访问数据库,然后返回结果。

优点是这样很容易定义和设计。缺点是这样的系统只能扩展到一定程度。要添加更多用户,必须增加处理能力。随着负载的增加,系统所有者不能只是添加额外的机器,因为代码没有设计成可以同时在多台机器上运行。相反,所有者必须购买更强大、更昂贵的计算机来跟上。如果用户来自全球各地,还有另一个问题——一些接近服务器的用户将获得快速响应,而距离更远的用户将会有一些延迟。下图说明了单一的、单片代码构建到单一构件的情况:

如果运行此应用程序的计算机出现故障、停电或被黑客入侵会发生什么?答案是整个系统会完全崩溃。出于这些原因,企业和应用程序变得越来越分布式。分布式系统通常分为客户端-服务器、三层、多层或点对点几种基本架构。区块链系统通常是点对点的,因此我们将在这里讨论这一点。

分布式系统的优点有很多,如下所示:

  • 弹性:如果系统的某个部分出现故障,整个系统不会失败
  • 冗余性:系统的每个部分都可以构建备份,以便在出现故障时可以使用另一个副本,有时可以立即使用
  • 并行性:工作可以有效地分割,这样就可以使用许多廉价的计算机而不是一个昂贵的快速计算机

弹性

弹性是系统适应和持续工作以应对变化和挑战的能力。弹性只能讨论在系统具有弹性的事件类型的情况下。系统可能对关闭一些计算机具有弹性,但对核战争可能没有弹性。

弹性可以分解为不同的子类别:

  • 容错:系统处理无效状态、错误数据和其他问题的能力
  • 故障隔离:系统的一部分出现问题不会影响到系统的其他部分。某处出现的错误数据或系统故障不会导致其他地方出现问题
  • 可伸缩性:在高负荷下能够提供额外容量的可伸缩系统对负载具有弹性
  • 复杂性管理:一种有办法管理复杂性的系统有助于使其对人为错误有弹性

现在我们将更详细地讨论容错。

容错能力和故障隔离

当某些部分出现故障或失灵时,系统仍能够运行的系统被认为是具有容错能力的。通常,容错是个依赖程度的问题:子组件的故障水平要么被系统的其他部分抵消,要么是逐渐退化而不是绝对的关闭。故障可能发生在许多不同的层次:软件、硬件或网络。具有容错能力的软件需要在这些层次的任何部分出现部分中断时继续运行。

在区块链中,个别硬件层面的容错是通过每个功能的存在多个重复计算机来处理的-比特币或工作证明系统中的矿工或 PoS 和相关系统中的验证者。如果计算机出现硬件故障,那么它要么不会有效地签署与网络一致的交易,要么它将停止充当网络节点——其他计算机会接管。

一致性和协调

区块链的最重要的方面之一就是共识的概念。我们将在第七章中讨论区块链实现共识的不同方法,实现共识。暂时来说,理解大多数区块链网络都有协议,允许它们只要网络上的计算机有三分之二到略高于一半正常运行,就能正常工作就足够了,虽然每个区块链网络都有不同的方法来保证这一点,这将在未来的章节中介绍。

备份

在大多数区块链中,每台计算机作为网络中的全参与者,保存了自网络启动以来发生的所有交易的完整副本。这意味着,即使在灾难压力下,只要网络中的一小部分计算机保持正常运行,就会存在一个完整的备份。

在 PoS 链中,通常会有更少的全参与者,因此备份和分布的数量要少得多。到目前为止,这种减少的冗余级别还没有成为问题。

一致性

正如之前的章节中所讨论的,区块链上的哈希和所有交易和行为的 Merkle 根允许轻松计算一致性。如果区块链上的一致性被打破,将会立即被注意到。区块链被设计为永远不会不一致。但只因数据一致,并不意味着它正确。这些问题将在第二十一章《可扩展性和其他挑战》中讨论。

对等系统

今天大多数使用的计算机系统都是客户端-服务器。一个很好的例子是你的网络浏览器和典型的 web 应用程序。你打开 Google Chrome 或其他浏览器,访问一个网站,你的计算机(客户端)连接到服务器。系统上所有的通信都是在你和服务器之间进行的。任何其他连接(比如在 Facebook 上与朋友聊天)都是由你的客户端连接到服务器,然后服务器再连接到另一个客户端,服务器起到中间人的作用。

对等系统是关于剔除服务器的。在对等系统中,你的计算机和你朋友的计算机会直接连接,中间没有服务器。

以下是说明对等架构的示意图:

分散式系统

所有分散系统都必须是分布式的。但分布式系统不一定是分散的。这对很多人来说是困惑的。如果一个分布式系统是分布在许多计算机、位置等等之间,那么它怎么可能是集中的呢?

这种差异涉及到位置和冗余与控制。在这种情况下,集中化涉及到控制。一个很好的例子来展示分布式和分散式系统的区别是 Facebook。Facebook 是一个高度分布式的应用程序。它在全球范围内拥有服务器,运行着数千种的软件变体进行测试。它的任何数据中心都可能出现故障,但大部分网站功能仍将继续运行。它的系统是分布式的,具有容错性、广泛协调、冗余等等。

然而,这些服务仍然是集中化的,因为在没有其他利益相关者的参与的情况下,Facebook 可以改变规则。数百万小型企业使用并依赖 Facebook 进行广告。迁移到 Facebook 的群体可能会突然发现他们的旧信息、工作和连接能力被撤销,而且没有追索权。Facebook 已经成为其他人依赖但没有相互依赖协议的平台。对于所有依赖 Facebook 平台的群体、企业和组织来说,这是一个可怕的情况,部分或全部地依赖 Facebook 平台。

过去十年间,出现了大量高度分布但高度集中的平台公司——Facebook、Alphabet、AirBnB、Uber 等,它们为同行之间提供了一个市场,但几乎完全不受其用户的约束。由于这种情况,人们越来越希望去中心化的应用和服务。在去中心化系统中,没有中央压倒性的利益相关者有能力在没有其他网络用户许可的情况下制定和执行规则。

原则上的去中心化系统

像分布式系统一样,去中心化更多地是一个滑动的比例,而不是绝对的状态。要评判一个系统的去中心化程度,有许多因素需要考虑。我们将要考虑对区块链和去中心化应用和组织特别相关的因素。它们如下:

  • 开放式访问
  • 非层次化
  • 多样性
  • 运作透明

开放式访问

按定义,任何实际上或逻辑上封闭的系统都至少在某种程度上是集中化的。一个封闭的系统自动地集中在先前的行为者身上。正如去中心化系统的所有其他方面一样,这不是二进制的是/否,而更像是可能性的滑动比例。

早期的互联网被认为是革命性的一部分,部分原因是由于它的开放式访问性质和任何人(只要有电脑、时间和接入)都可以上网并开始交换信息的能力。同样,迄今为止,区块链技术一直保持着开放式的创新和访问。

非层次化

层次结构系统通常在公司和组织中普遍存在。在层次结构的顶端的人拥有压倒性的权力来指导资源和事件。层次结构有不同的极端。在一个极端,你可能有一个仲裁者拥有绝对权力的系统。在另一个极端,你可能有一个每个系统成员都拥有相同直接权力的系统,因此控制是通过影响力、声誉或某种其他形式的组织货币来实现的。

在区块链领域,出现了几种非层次结构的形式。首先是在工作量证明挖矿系统中。所有矿工在区块链中基本上是平等的参与者,但他们的影响力与他们向网络提供的计算资源成比例。

在 PoS 区块链系统中,权力是基于特定协议的投资/股份水平分布的。在这种情况下,去中心化是通过大规模采用以及与其他链的竞争实现的。如果一个链变得过于集中化,没有什么可以阻止用户迁移到另一个链。

这些系统随着时间的推移将保持多么去中心化是一个开放的问题。

生态系统多样性

开放访问自然而然地导致去中心化系统的另一个特性:多样性。多样性系统与单一文化相对立。在技术上,单一文化是单一系统的压倒性优势,比如在美国企业界长期存在的 Windows 的主导地位。

透明度

在一个系统中,权力集中的一种方式是通过信息主导,即一个系统中的某一组参与者拥有比其他参与者更多或更大的信息访问权。在大多数当前的区块链技术中,链上的每个参与者获得相同数量的信息。也有一些例外。比如,Hyperledger Fabric 有能力让参与者隐藏信息。

具有完全强制性透明度的能力是人们对区块链系统感兴趣的驱动因素之一。通过创建透明且不可忘记的记录,区块链在物流和法律记录方面具有明显的实用性。在区块链上的记录,可以确保数据未被更改。透明的区块链还确保了公平性水平——参与者都可以确信,至少有一个共享的真相水平供所有人使用,而这种水平不会改变。

弊端

去中心化系统并非没有其缺点。以下是与区块链相关的去中心化系统的一些关键问题:

  • 速度
  • 抗审查性
  • 混乱/非确定性

速度

集中化系统和去中心化系统在处理某些类型事件时往往会更快或更慢。区块链是分布式的记账系统。理解基本区块链,比如比特币,可以认为它是一个仅能追加的数据库。比特币每秒可以处理大约七笔交易。相比之下,Visa 和 MasterCard 是分布式(但不是去中心化)的交易处理系统,每秒可以处理超过 40,000 笔交易。区块链系统的速度继续增加,但通常以一定程度的中心化或对访问的限制作为交换。一些 PoS 系统,如 Tendermint 或 Waves,理论吞吐量超过 1,000 tx/秒,但仍远远低于其传统对应系统的峰值容量。

抗审查性

去中心化系统由于缺乏中央权威机构进行审查而往往更难以审查。对于言论自由和信息自由的纯粹主义者来说,这一点根本不被视为缺点。然而,一些信息(儿童色情、仇恨言论、制造炸弹的指令)被视为危险或不道德的公开传播,因此应该被审查。作为一种技术,一旦包含该信息的区块完成,写入区块链的任何内容都是不可变的。例如,Steemit 是一个基于区块链的社交博客平台,每篇帖子都保存在链上。一旦每个区块被最终确定,数据就无法删除。系统的客户端可以选择不显示信息,但信息仍然存在,供想要查看的人使用。

对审查的渴望延伸到自我审查。写入区块链的内容是不可变的,即使对于其作者也是如此。例如,通过比特币进行的金融交易永远无法向当局隐藏。虽然比特币是匿名的,但一旦一个人与比特币钱包相关联,就可以轻松追踪自区块链开始以来的每一笔交易。

因此,基于区块链的国家货币将允许完美的税收——由于对链的完美财务监控。因此,抗审查性质具有双重性。

混沌和非确定性

去中心化系统往往比集中式系统更加混乱,这是它们的天性。在去中心化系统中,每个参与者都按照自己的意愿行事,而不是按照一个全面性权威的要求。因此,去中心化系统很难预测。

总结

在本章中,我们讨论了分布式系统与去中心化系统之间的区别,并介绍了一些关键特性。您现在应该了解到每个去中心化系统也是一个分布式系统,以及每个概念的一些关键方面。

在下一章中,我们将开始研究这些东西在实践中的运作。

第四章:区块链背后的密码学和机制

区块链的使用依赖于密码学。数值密码学可以被视为一种近代发明,过去的密码依赖于交换单词和字母。正如我们将看到的,现代密码学是一种非常强大的工具,用于保护通信,并且,对于我们的主题非常重要的是,确定数字签名的来源和数字资产的真实性。

本章将涵盖以下主题:

  • 安全原则
  • 历史视角 - 古典密码学
  • 密码签名
  • 散列

安全原则

密码学保护了信息安全的三个原则,可以通过记忆设备中央情报局CIA)来记忆:

  • 保密性:确保信息与适当的方当共享,并且敏感信息(例如,医疗信息,某些财务数据)仅在适当方的同意下共享。
  • 完整性:确保只有授权方可以更改数据,并且(根据应用程序的情况)所做的更改不会威胁数据的准确性或真实性。这一原则可以说是与区块链最相关的,尤其是公共区块链。
  • 可用性:确保授权用户(例如,持有代币的用户)在需要或想要时可以使用数据或资源。区块链的分布式和去中心化特性极大地有助于实现这一点。

与区块链和加密货币的相关性立即显而易见:例如,如果区块链没有提供完整性,那么用户试图花费的资金或代币是否存在将无法确定。对于区块链的典型应用,其中链可能持有房地产或证券的产权,数据完整性确实非常重要。在本章中,我们将讨论这些原则与区块链的相关性以及如何通过加密来保证诸如完整性等内容。

历史视角 - 古典密码学

密码学是指用于保护信息或通信的任何方法或技术,特别是指用于安全通信方法和协议的研究。过去,密码学是指加密,这是一种指代用于编码信息的技术。

在其最基本的形式中,加密可以采用替换密码的形式,即根据双方预先共享的代码,对消息中的字母或单词进行替换。经典示例是凯撒密码,其中个别字母根据它们在字母表中的位置索引,并向前移动给定数量的字符。例如,字母A可能会变成字母N,密钥为 13。

这种具体形式的凯撒密码被称为 ROT****13,它可能是唯一继续定期使用的替换密码——它为用户提供了一种轻松可逆的方式来隐藏粗言秽语或静态网站上的谜题解答(当然,同样的功能也可以非常简单地用 JavaScript 实现)。

这个非常简单的例子介绍了两个重要概念。第一个是算法,它是对具有可预测、确定性结果的特定计算的正式描述。取消息中的每个字符,并在字母表中向前移动 n 个位置。第二个是密钥:在这个算法中 n 是 13。在这种情况下,密钥是一个预共享的秘密,一种双方(或更多)已经同意的代码,但正如我们将看到的,这并不是唯一的密钥类型。

密码学类型

密码学主要分为对称加密和非对称加密。对称加密是指密钥是预共享或协商的加密方式。AES、DES 和 Blowfish 是对称加密中使用的算法的示例。

对称密码学

大多数精通计算机的用户都熟悉 WEP、WPA 或 WPA2,这些是 Wi-Fi 连接中使用的安全协议。这些协议存在的目的是防止无线连接上传输的数据被截取和篡改(或者换句话说,为无线用户提供保密性和完整性)。现在的路由器通常都会在上面打印无线密码,这是一个非常直接的预共享密钥的例子。

对称加密中使用的算法通常非常快速,并且与非对称加密相比,生成新密钥(或使用它加密/解密数据)所需的计算能力相对较少。

非对称(公钥)密码学

非对称密码学(也称为公钥密码学)采用两个密钥:一个公钥,可以广泛共享,一个私钥,保持秘密。公钥用于加密传输到私钥持有者的数据。然后使用私钥进行解密。

公钥密码学的发展使得诸如电子商务网上银行等事物得以发展,并补充了经济的很大一部分。它使电子邮件具有一定的保密性,并使财务报表可通过网络门户获得。它还使电子税务申报成为可能,并使我们能够信任地与也许是完全陌生的人分享我们最私密的秘密——你可能会说它使整个世界更加紧密地联系在一起。

由于公钥不需要保密,它允许诸如证书颁发机构和 PGP 密钥服务器之类的东西存在——发布用于加密的密钥,只有持有私钥的人才能解密使用该发布密钥加密的数据。用户甚至可以发布加密文本,这种方法会享有一定程度的匿名性——将加密文本放在新闻组、电子邮件邮件列表或社交媒体上的群组中会使其被众多人接收,而任何窃听者都无法确定预期的接收者。这种方法在区块链世界中也会很有趣——成千上万个节点镜像着一个没有已知接收者的密文,也许永远,无法撤销,而且接收者绝对否认。

公钥密码学比对称密码学的计算成本更高,部分原因是使用的密钥大小巨大。美国国家安全局目前要求商业应用中密钥大小为 3,072 位或更大,这是公钥密码学的主要用途。相比之下,128 位加密通常被认为对大多数加密应用足够了,256 位是美国国家安全局对保密性的标准。

大多数情况下,虽然可以仅使用公钥算法,但公钥密码学最常见的用途是为其余会话协商对称密钥。在大多数实现中,对称密钥不会被传输,因此,如果攻击者夺取了一个或两个私钥,他们将无法访问实际的通信内容。这个特性被称为前向保密性。

有些协议,比如 SSH,用于远程访问计算机,非常积极主动。在一个会话期间,SSH 会定期更改密钥。SSH 还展示了公钥密码学的基本属性——可以将您的公钥放在远程服务器上进行身份验证,而不会有任何固有的保密问题。

如今大多数使用的加密技术都不是不可破解的,只要有极大(或无限)的计算资源。然而,适用于保护需要保密性的数据的算法被认为是计算上不太可能的——也就是说,破解加密所需的计算资源不存在,并且在不久的将来也不会存在。

签名

值得注意的是,尽管在对数据进行加密以发送到特定接收者时,使用私钥进行解密,但通常可以反向操作。对于加密签名,使用私钥生成一个可以使用给定用户发布的公钥解密(验证)的签名。这种公钥加密的反转用法允许用户以明文发布消息,并高度确信签署者是写下这条消息的人。这再次引出了完整性的概念——如果由用户的私钥签署,消息(或交易)可以被假定为真实的。通常,在涉及区块链的情况下,当用户希望转移代币时,他们会用钱包的私钥签署交易。然后用户广播该交易。

现在多重签名钱包也相当常见,在这种情况下,交易最常由多个用户签名,然后广播,要么在托管钱包服务的网络界面上,要么在本地客户端中。这在具有分布式团队的软件项目中是一个相当常见的用例。

哈希化

与加密概念不同(并且存在于许多加密机制中,例如加密签名和身份验证)的是哈希,它指的是一种确定性算法,用于将数据映射到固定大小的字符串。除了确定性外,加密哈希算法必须具有几个其他特征,本节将介绍这些特征。

正如我们将在接下来的部分看到的那样,哈希函数必须难以反向操作。大多数通过高中代数的读者会记得被因式分解折磨过。乘法是一个容易完成的操作,但是很难反向操作——找到一个大数的公因数需要更多的努力,而不是将该数作为乘法的乘积创建出来。这个简单的例子实际上享有实际应用。适当大的数,它们是两个质数的乘积——被称为半素数或(较少见的)双质数——在 RSA 中得到了应用,这是一种广泛使用的公钥密码算法。

RSA 是公钥加密中的黄金标准,使得 SSH、SSL 和诸如 PGP 等电子邮件加密系统成为可能。基于这样的操作——单向容易,反向非常困难——才使得加密技术如此强大。

雪崩效应

坚固的哈希算法的一个理想特征称为雪崩效应。输入的微小变化应导致输出的剧烈变化。例如,使用输出重定向和大多数 Linux 发行版中都有的 GNU md5sum 实用程序,以下是三个示例:

代码语言:javascript
复制
$ echo "Hills Like White Elephants by Ernest Hemingway" | md5sum
86db7865e5b6b8be7557c5f1c3391d7a -
$ echo "Bills Like White Elephants by Ernest Hemingway" | md5sum
ccba501e321315c265fe2fa9ed00495c -
$ echo "Bills Like White Buffalo by Ernest Hemingway"| md5sum
37b7556b27b12b55303743bf8ba3c612 -

将一个单词改为完全不同的单词与改变一个字母的结果相同:每个哈希都完全不同。在密码哈希的情况下,这是一个非常理想的属性。一个恶意的黑客无法接近它,然后尝试类似密码的排列。然而,我们将在接下来的章节中看到,哈希并不完美。

碰撞

理想的哈希函数不会发生碰撞。碰撞是两个输入产生相同输出的情况。碰撞会削弱哈希算法,因为可能通过错误的输入获得预期的结果。由于哈希算法用于根证书的数字签名、密码存储和区块链签名,一个具有许多碰撞的哈希函数可能允许恶意黑客从密码哈希中检索密码,从而用于访问其他帐户。一个具有许多碰撞的弱哈希算法可能有助于中间人攻击,使攻击者能够完美地欺骗安全套接字层SSL)证书。

MD5,上面示例中使用的算法,被认为不适用于加密哈希。区块链幸运地大部分使用更安全的哈希函数,如 SHA-256 和 RIPEMD-160。

哈希一个块

在 PoW 系统中,向区块链添加新条目需要计算哈希值。在比特币中,矿工必须对块中的当前交易计算两个 SHA-256 哈希值,并且其中包括上一个块的哈希值。

对于哈希算法来说,这相当简单。让我们简要重申一下:理想的哈希函数接受预期输入,然后输出唯一的哈希值。它是确定性的。只有一个可能的输出,并且使用不同的输入无法获得该输出(或者在计算上几乎不可能)。这些属性确保了矿工可以处理一个区块,并且每个矿工可以返回相同的结果。正是通过哈希,区块链获得了对其采用和当前流行至关重要的两个属性:分散性和不可变性。

将当前块链接到前一个块和后续块在某种程度上是使区块链成为一个不断增长的交易链表(为其提供不可变性属性)的原因之一,哈希算法的确定性特性使得每个节点都能够毫无问题地获得相同的结果(为其提供了分散性)。

Hashing 在 PoW 之外

除了工作量证明外,PoS 和 DPoS 也利用哈希,而且在很大程度上是出于相同的目的。已经有大量讨论专门讨论 PoS 是否会取代 PoW 并阻止我们运行数千台计算机执行耗费巨大的碳足迹的繁琐哈希计算。

尽管 PoW 系统的功耗和环境影响相当大,但似乎仍然存在。可以说,其原因是非常简单的经济学原理:矿工有动机通过计算哈希来验证交易,因为他们可以获得新产生的代币中的一部分。对于权益证明或分布式权益证明的更复杂的代币经济方案,通常不经得起检验。

举个例子,股票照片区块链项目的想法——我们称之为 Cannistercoin。用户向股票照片网站贡献照片,作为回报他们会收到代币。这个代币也可用于从网站购买股票照片,并且该代币在交易所上交易。

这样看起来似乎可行,而且是一个完整的市场——Cannistercoin 已经确定了买家和卖家,并且有一种机制来匹配它们,但也许这不是一个功能性的市场。这里的准入壁垒很高:买家可以使用任何普通的股票照片网站,并使用他们的信用卡或银行账户。在这个模式中,买家需要注册一个交易所,并交换加密货币以换取代币。

要真正地去中心化,这种经济模型还缺少一个重要组成部分——这就是激励系统。是什么激励见证者或验证者运行他们的机器并验证交易呢?

你可以给他们一些代币的份额,但为什么他们不会立即出售他们的代币以便收回运行机器的成本呢?可以合理地预期,这种不断的抛售压力会压低许多应用币加密货币的代币价格,这是一件遗憾的事情。在处理能力方面,权益证明系统通常更为优雅(以牺牲更为优雅的经济模型为代价)。

股权证明(或其他机制)很可能仍然会占据世界,但不管怎样,可以肯定地期望加密世界将做大量的哈希计算。

总结

区块链和加密货币的世界主要得益于上个世纪密码学的创新。我们已经介绍了密码学的概念和具体的加密操作,尤其是哈希操作,在区块链背后起着巨大作用。

在下一章中,我们将在此基础上介绍比特币,这是第一个(也是最显著的)区块链应用。

第五章:比特币

在早期章节中,我们详细讨论了区块链、其组成部分以及其结构。我们还讨论了加密学,区块链背后的机制,以及区块链如何改变网络世界。在本章中,我们将讨论比特币的起源。

我们将讨论比特币的介绍,它的历史以及它是如何在很短时间内成为金融历史上最大的革命之一。我们还将深入探讨比特币的其他方面,如其编码系统,交易过程,网络节点,以及我们将简要介绍比特币的挖矿过程。

本章我们将涵盖的主题包括以下内容:

  • 比特币的历史
  • 为什么比特币如此波动
  • 密钥和地址
  • 交易
  • 区块
  • 比特币网络
  • 钱包

比特币的历史

比特币是区块链技术的第一个也是迄今为止最成功的应用程序。比特币是在 2008 年推出的,由中本聪编写的一篇名为《比特币:一个点对点的电子现金系统》的论文中首次提出的。(bitcoin.org/bitcoin.pdf)。

比特币是世界上第一个去中心化的加密货币;它的推出预示着一场革命,仅用了约十年的时间,它就证明了自己的实力,拥有庞大的社区支持和广泛的采用。

自 2010 年起,一些全球企业已开始接受比特币,除了法定货币之外。许多货币交易所成立,让人们可以用法定货币或其他加密货币兑换比特币。 2012 年 9 月,比特币基金会成立,以加速比特币的全球增长,通过标准化、保护和推广开源协议。

许多支付网关(如 BitPay)开始帮助商家接受比特币作为支付方式。流行服务 WordPress 于 2012 年 11 月开始接受比特币。

比特币一直以来作为全球支付中的首选支付方式不断增长,尤其是企业对企业的供应链支付。 2017 年,比特币在金融公司和政府组织中获得了更多合法性。例如,俄罗斯合法化了包括比特币在内的加密货币的使用;挪威最大的银行宣布启动了比特币账户;日本通过了一项法律,允许比特币作为合法支付方式。 全球最大的自由经济区迪拜已开始向公司颁发交易加密货币的许可证。

2017 年 8 月 1 日,比特币分裂为两种衍生数字货币;一种保留了传统的名称比特币,另一种有着 8MB 区块大小的被称为比特币现金(BCH)。之后,在 2017 年 10 月 24 日,又发生了另一次硬分叉,产生了一种名为**比特币黄金(BTG)的新货币。然后,在 2018 年 2 月 28 日,又发生了另一次硬分叉,产生了一种名为比特币私人(BTCP)**的新货币。原本还有一个硬分叉预计在 2017 年 11 月发生,但由于缺乏社区共识而取消了。

然而,比特币的推广者对价格波动和由于需要大量确认才能批准交易而导致交易放缓有一个主要关切。

为何比特币会波动

当我们说比特币是波动性时,指的是比特币的价格波动。各个交易所的比特币现货价格每时每刻都在变动,并且运行 24/7。因此,任何比特币的用户或社区成员都会受到比特币价格的不断变化而困扰。以下图表显示了过去一个财政年度比特币价格的波动情况:

比特币的波动性是最被讨论的话题,自比特币交易所出现以来,一直是投资者、矿工和比特币支持者关注的问题。造成这一现象的一些主要原因如下:

  • 安全漏洞:一直以来,比特币价格波动的主要问题之一就是安全漏洞;每当交易所端存在安全漏洞的消息传出时,比特币价格就会受到冲击,因为这会让投资者开始对某个交易所或比特币网络产生怀疑。
  • 法律问题:全球立法者对比特币价格提出了许多疑虑,甚至试图将比特币定性为非法实体。政府的各种声明也影响了比特币的价格。
  • 心理上的适应变化:尽管比特币得到了迅速的采用和支持,但它依然是一种新型的货币,与之前的任何货币都非常不同;这就让人们对采用它感到谨慎。而且任何负面新闻直接影响了比特币的采用情况,有时会导致价格出现下行螺旋,直到出现关于比特币的正面新闻。

上述要点只是造成比特币市场巨大波动的一些主要因素。还有许多其他因素在不同时期对比特币价格的形成起到至关重要的作用。

密钥和地址

比特币作为一种纯数字货币,可以通过在文件或比特币钱包中保留或存储来拥有。地址用于将比特币从一个钱包转移到另一个钱包,而密钥用于保障交易的安全性。

比特币中的密钥是成对使用的。一个是公钥,另一个是私钥。私钥需安全保管,因为它控制着一个钱包。这些密钥由比特币钱包存储和控制。

地址是用于从一个钱包发送或接收比特币的字母数字字符串。地址大多以Base58Check的形式编码,使用 Base58 数字进行地址转录。比特币地址也编码为 QR 码,用于快速交易和共享。

货币单位

比特币有一个广泛使用的度量单位系统,可用作比特币的单位。比特币的最小单位称为Satoshi,以其创造者的名字命名。以下表显示了比特币的单位,从其最小单位Satoshi兆比特

虚荣地址

这些是包含可读地址的有效地址。例如:1BingoAuXyuSSoYm6rH7XFZc6Hcy98zRZz 是包含可读单词(Bingo)的有效地址。生成虚荣地址需要创建和测试数百万个私钥,直到找到所需的 Base58 字母地址。

虚荣地址用于娱乐,并提供与任何其他地址相同级别的安全性。虚荣地址的搜索时间随所需模式的长度增加而增加。

基于 58 的检查编码

这种编码将二进制字节数组转换成人类可读的格式。该字符串是通过使用一组 58 个字母数字字符创建的。

与 Base58 不同,也可以使用 Base64,但那可能会导致一些字符看起来相同,从而导致相似的数据。比特币中使用的 Base58 符号表是比特币特定的,仅在比特币创建时使用。以下表显示了 Base58 编码中的值和相应的字符:

数值

字符

数值

字符

数值

字符

数值

字符

0

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

A

10

B

11

C

12

D

13

E

14

F

15

G

16

H

17

J

18

K

19

L

20

M

21

N

22

P

23

Q

24

R

25

S

26

T

27

U

28

V

29

W

30

X

31

Y

32

Z

33

a

34

b

35

c

36

d

37

e

38

f

39

g

40

h

41

i

42

j

43

k

44

m

45

n

46

o

47

p

48

q

49

r

50

s

51

t

52

u

53

v

54

w

55

x

56

y

57

z

-

-

-

-

交易

这是比特币系统的主要部分。交易不加密,因为比特币是一个公开分类账。任何交易都可以在区块链上公开查看,使用任何在线区块链浏览器。由于地址是加密的并鼓励对每笔交易使用唯一的地址,跟踪用户变得困难。

比特币中的区块由区块链浏览器查看的交易组成;每个区块都包含最近发生的交易。每个新区块都位于区块链的顶部。每个区块都有一个高度编号,下一个区块的高度比前一个区块高度大一。共识过程通常称为区块链浏览器上的确认

类型

有各种类型的脚本可用于管理从一个钱包向另一个钱包的价值转移。这里讨论了一些标准类型的交易,以清楚地理解地址以及交易之间的区别。

支付至公钥哈希

大多数比特币网络上的交易都是使用这种方法进行的。脚本如下所示:

代码语言:javascript
复制
OP_DUP OP_HASH160 [Pubkey Hash] OP_EQUALVERIFY OP_CHECKSIG

签名脚本如下所示:

代码语言:javascript
复制
[Sig][PubKey]

这些字符串被连接在一起以执行。

支付至脚本哈希

支付至脚本哈希P2SH)过程用于向脚本哈希发送交易。使用脚本哈希支付的地址必须以 3 开头。脚本如下所示:

代码语言:javascript
复制
OP_HASH160 [redeemScriptHash] OP_EQUAL

签名看起来像这样:

代码语言:javascript
复制
[Sig]...[Sig][redeemScript]

与 P2PKH 一样,这些字符串也被连接在一起以创建脚本签名。

区块

交易数据记录在文件中,这些文件称为区块。区块叠放在彼此之上,最近的区块位于顶部。以下表格描述了区块的结构和区块中各元素的大小:

比特币网络中的每个区块几乎具有相同的结构,并且每个区块都链接到最新的区块。这些是区块的字段:

  • 幻数:此数字是区块链网络的标识符。其值始终为0xD9B4BEF9。它确认区块的开始并验证数据来自生产网络。
  • 区块大小:这表示区块的大小。
  • 区块头:头部包含区块的元数据。它包括多个数据项,如比特币版本、上一个区块哈希、默克尔根、时间戳、挖矿难度和随机数。
  • 交易计数器:它是区块中交易的计数。
  • 交易列表:它存储该区块中交易的哈希。

创世区块

创世块是比特币区块链中的第一个块。 创世块的创建标志着比特币的开始。 它是区块链中所有块的共同祖先。 它在比特币客户端软件中静态编码,无法更改。 比特币区块链中的每个节点都确认创世块的哈希和结构,其创建时间以及其中包含的单个交易。 以下是比特币源代码中编写的静态代码片段,描述了使用静态参数pszTimestampgenesisOutputScriptnTimenNoncenBitsnVersion创建创世块的过程。 这是比特币存储库中此代码的片段:

代码语言:javascript
复制
static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32_t nBits, int32_t nVersion, const CAmount& genesisReward)
 {
 const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
 const CScript genesisOutputScript = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;
 return CreateGenesisBlock(pszTimestamp, genesisOutputScript, nTime, nNonce, nBits, nVersion, genesisReward);
 }

比特币网络

网络基于点对点P2P)协议。 各种节点在此网络中交换交易和区块。 比特币网络中的每个节点都被视为平等的。 这样做的一个优点是,每个节点都有选择在比特币网络中扮演不同角色的选项,具体取决于每个人对如何参与比特币网络的偏好。

节点类型

在讨论节点类型之前,让我们讨论一些节点执行的主要功能:

  • 钱包
  • 挖掘
  • 完整的区块链
  • 路由

在比特币网络中,主要有两种类型的节点。 我们现在将简要介绍每种节点的一些详细信息。

完整节点

完整节点由钱包、矿工、完整的区块链和路由网络组成。 这些节点维护区块链的完整最新记录。 完整节点验证区块链网络上的每笔交易。

轻量级节点

轻量级节点在区块链上执行交易。 它们不包含整个区块链,而只是区块链的一个子集。 它们使用称为简化支付验证SPV)的系统来验证交易。 这些节点有时也被称为SPV 节点

其他节点

比特币网络中还有各种其他节点,每个节点执行比特币网络提供的一组特定功能中的特定功能集。 有些节点只包含区块链和路由功能。 有些节点仅作为矿工工作,不包含钱包。

还有其他非标准节点称为池协议服务器。 这些节点使用诸如stratum 协议之类的替代协议。 stratum 协议使用 TCP 套接字和 JSON-RPC 在节点之间进行通信。

网络发现

比特币中的网络发现在任何节点第一次启动时都是必需的; 节点必须发现网络中的其他节点才能参与区块链。 在节点启动时,它必须与网络中至少一个现有节点连接。

为此,节点通过 TCP 协议建立连接,在端口8333上进行或如果有其他端口,则在其他端口上进行。接下来,通过传输某个消息来执行握手。该消息称为 版本消息,其中包含基本的识别信息。

查找节点

节点主要通过两种方法在网络中找到。一种是通过查询 DNS 使用 DNS 种子,这基本上是提供比特币节点 IP 列表的 DNS 服务器。另一种方法是比特币核心尝试连接到的 IP 地址列表。另一种早期使用的方法是通过 IRC 向节点播种,但由于安全问题而停止使用该方法。

DNS 种子

DNS 种子是包含 IP 地址列表的服务器。这些种子是 Berkeley Internet Name DaemonBIND)的定制实现,并返回由比特币节点收集的随机子集。大多数比特币客户端在尝试建立第一组连接时使用 DNS 种子进行连接。最好有各种种子存在,以便客户端与网络中的节点建立更好的连接。在比特币核心客户端中,使用 DNS 种子的选项由 -dnsseed 参数控制,默认设置为 1。以下是比特币源代码的chainparams.cpp文件中表示 DNS 种子的方式:

代码语言:javascript
复制
 vSeeds.push_back(CDNSSeedData("bitcoin.sipa.be", "seed.bitcoin.sipa.be")); // Pieter Wuille
 vSeeds.push_back(CDNSSeedData("bluematt.me", "dnsseed.bluematt.me")); // Matt Corallo
 vSeeds.push_back(CDNSSeedData("dashjr.org", "dnsseed.bitcoin.dashjr.org")); // Luke Dashjr
 vSeeds.push_back(CDNSSeedData("bitcoinstats.com", "seed.bitcoinstats.com")); // Christian Decker
 vSeeds.push_back(CDNSSeedData("xf2.org", "bitseed.xf2.org")); // Jeff Garzik
 vSeeds.push_back(CDNSSeedData("bitcoin.jonasschnelli.ch", "seed.bitcoin.jonasschnelli.ch")); // Jonas Schnelli

上述种子目前正在比特币核心中使用,用于连接到种子客户端,以建立与第一个节点的连接。

静态 IP

这些是静态的 IP 地址列表。如果比特币客户端能够成功连接到一个 IP 地址,它将能够通过共享该节点的 IP 地址连接到其他节点。命令行参数-seednode用于连接到一个节点。连接到种子节点后,客户端将使用该种子自身发现新的种子。

钱包

比特币钱包是比特币节点的一个重要功能;它们包含私钥和/或公钥以及比特币地址。有各种类型的比特币钱包,每种都提供不同级别的安全性和功能,根据需要。

有一个常见的误解,即电子钱包可以包含比特币,但比特币钱包只能包含密钥。每个比特币都记录在比特币网络的区块链上。比特币钱包包含密钥,这些密钥授权使用与密钥相关联的比特币。用户或钱包所有者使用钱包中的密钥签署交易,证明他们拥有比特币。实际上,这些比特币以**txout**的形式存储在区块链上,表示为 交易输出

类型

主要有两种类型的钱包,这取决于钱包中包含的密钥是否相互关联。

确定性钱包

这是一种钱包类型,其中所有的密钥都是从一个称为种子的单个主密钥派生出来的。这种钱包中的所有密钥都彼此关联,并且可以借助种子轻松地再次生成。在某些情况下,种子允许在不知道私钥的情况下创建公钥地址。大多数情况下,种子被序列化为人类可读的单词,称为助记词短语。

在确定性钱包中使用了多种密钥派生方法,这些方法在以下小节中描述。

确定性钱包

确定性钱包保存从共同种子派生的私钥。为此使用了单向哈希函数。在确定性钱包中,此种子是恢复所有派生密钥所必需的,因此在创建时进行一次备份就足够了。以下图表显示了一个单一种子如何与钱包生成的所有密钥连接/相关:

HD 钱包

HD 钱包是确定性钱包的最先进形式之一。它们包含从树结构派生的密钥,因此主密钥可以具有多个一级密钥,进一步可以包含多个深度无限的二级密钥。以下图表显示了种子如何生成主密钥,进而以分层形式创建多个密钥:

非确定性钱包

在这种类型的钱包中,每个密钥都是从一个随机数独立生成的。在这个钱包中生成的密钥之间没有关联。由于难以维护多个不相关的密钥,因此非常重要定期备份这些密钥并保护它们以防止被盗或丢失。

摘要

在这一章中,我们讨论了比特币的基础知识,其历史以及与法定货币相比的定价。我们还讨论了比特币地址、它们的编码、它们的交易类型和区块。最后,我们讨论了比特币网络以及网络包含的节点类型。

现在我们已经在本章中讨论了世界上第一个加密货币,下一章中,我们将讨论受比特币启发的各种其他加密货币,也被称为替代货币。*我们将讨论替代货币,有时也称为替代币

第六章:山寨币

在比特币发布后,一直有着庞大的支持加密货币的社区。而且,由于比特币和区块链是开源的,社区内的许多人开始创建自己的加密货币,提供类似的服务,但提供不同的共识方法等,与比特币相比。

由于比特币是第一个且迄今为止最主导的加密货币,所有其他加密货币被称为另类币山寨币。第一个山寨币是Namecoin,于 2011 年推出。之后,许多山寨币被推出;其中一些很受欢迎,也开始被用作主流货币,而其他一些则不那么受欢迎。截至目前,已经存在超过 1500 种加密货币。另类加密货币领域有两个广泛的类别。如果要创建一种另类区块链平台,则通常称为另类链,但如果硬币的目的是引入一种新货币,则可以称为山寨币

许多山寨币直接从比特币源代码中分叉,甚至有些是从零开始编写的。山寨币旨在解决比特币的一些限制,例如共识方法、挖矿限制、区块时间、分配、隐私,或者有时甚至在硬币上添加功能。

本章将涉及的主题如下:

  • 介绍山寨币
  • 讨论代币和各种代币平台
  • 另类货币和广泛使用的另类货币简介
  • 如何获取加密货币

介绍山寨币

现有超过 1600 种流通中的加密货币;它们每一种都提供比特币的改进或修改。有各种在线交易所可以在其中交换加密货币或与法定货币(如美元、欧元、英镑等)交换,类似于货币交易或股票交易门户。以下是一些热门山寨币的列表:

  • 莱特币
  • 以太坊
  • 零币
  • 达世币
  • 瑞波币
  • 门罗币
  • EOS
  • IOTA
  • 波场
  • 泰达币
  • 以太坊经典
  • 比特币现金
  • 星际币
  • 尼欧币
  • 新经币
  • 卡尔达诺

根据其区块链,山寨币有两个广泛的类别,因为区块链定义了硬币的特性、安全性和其他方面。

确定市场上有这么多加密货币以及货币交易所意味着,现在需要大量的关键财务和市场指标来区分这些货币。以下是讨论山寨币时需要考虑的一些关键因素:

  • 硬币的总市值
  • 用法币购买时的硬币单价
  • 流通中的山寨币总数
  • 每小时和 24 小时周期内交易的硬币数量
  • 硬币单位价格在小时、日和周基础上的变化
  • 接受山寨币的交易所和商家
  • 支持硬币的总钱包数
  • 任何可能影响硬币价格或声誉的最新消息

Altcoin 可以有自己的区块链,也可以建立在另一个区块链之上,通常称为代币

代币

建立在另一个区块链之上的 Altcoins 称为代币。代币不能独立存在,它们建立在的平台上。以下是可以创建代币的一些平台列表:

  • 以太坊
  • Omni
  • NEO
  • Omni
  • Qtum
  • Counterparty
  • Waves
  • Stellar
  • Bitshares
  • Ubiq
  • Ardor
  • NXT

以太坊

以太坊是创建代币的最常用选择;基于以太坊平台的代币超过 600 种。作为公开和开源的,使得任何人都可以基于以太坊区块链创建代币;此外,由于得到庞大社区的支持,这使得任何基于加密货币的交易所更容易接受这些代币。

在以太坊平台上构建的一些热门代币包括 EOS、TRON、VeChain 等。

Omni Layer

作为 2013 年的 MasterCoin,Omni Layer 协议是基于比特币区块链的最流行的元协议之一。Omni Layer 提供了一个类似比特币客户端的不同钱包和一个类似比特币核心的 Omni Layer。

在 Omni Layer 平台上构建的一些热门代币包括 Tether、MaidSafeCoin、Synereo 等。

NEO

NEO最初是 Antshares;它是由 Onchain 公司建立的,这是一家位于赛里斯的公司。它于 2014 年初开始提供服务于银行和金融领域。Antshares 于 2017 年 6 月更名为 NEO。

在 NEO 平台上构建的一些热门代币包括 Ontology、Gas、DeepBrain Chain 等。

Waves

常被描述为开放区块链平台的waves是一个平台,不仅可以交换加密货币,还可以交换所有类型的现实世界商品,完全去中心化地发行和转让。

Waves 平台上构建的一些代币包括 Wager、Mercury、Incent 等。

Counterparty

Counterparty是另一层协议,实现在比特币协议层之上,就像 Omni Layer 一样,在 2014 年发布,它声称除了比特币之外还提供了各种功能,这使它成为一个有价值的代币创建平台。

Counterparty 上构建的一些代币包括 Triggers、Pepe Cash、Data bits 等。

替代货币

除了在现有区块链上构建的代币之外,还有各种由拥有自己的区块链和/或任何其他改进或差异化因素推动的替代货币。

以下是 Altcoins 相对于比特币所做的一些修改的一些因素:

  • 货币替代品
  • 共识替代品

我们将详细讨论这些替代方案,然后再讨论一些广泛使用的 Altcoins 及其相对于比特币的修改。

货币替代品

比特币限制在 2100 万枚,其发行速度逐渐下降,包括 10 分钟的区块生成时间,需要很长时间来确认;在进一步的币生成过程中也需要很长时间。很多山寨币修改了一些主要参数以获得升级的结果。一些修改货币参数的主要币种有莱特币、狗狗币、以太坊、NEO 等等。

共识替代方案

共识机制是比特币交易的根源;比特币中使用的机制基于工作证明,使用 SHA256 算法。由于共识机制需要挖掘块,这变得非常计算密集,导致了专门用于解决比特币块的比特币挖矿硬件的创建,这就是指定的 Application-Specific Integrated Circuit ChipsASICs)。

这导致了具有创新算法的山寨币的创建,例如以下这些:

  • Scrypt:这被广泛用于莱特币、狗狗币等等
  • Scrypt - N:这被用于 vertcoin、Execoin 等等
  • Skein:这被用于 DigiByte、Myraid 等等
  • Groestl:这被用于 Groestlcoin、securecoin 等等
  • SHA3:这被用于 Maxcoin、Slothcoin 等等
  • X1****1:这被用于 Dash、CannabisCoin 等等
  • Blake:这被用于 Netko、Trumpcoin 等等
  • X13:这被用于 Navcoin、Cloakcoin 等等
  • CryptoNight:这被用于门罗币、Bytecoin 等等
  • QuBit:这是 Geocoin、DGB-Qubit 等等
  • Dagger Hashimoto:这被用于以太坊、以太经典等等
  • Lyra2RE:这被用于 Verge、Zcoin 等等
  • X15:这是 EverGreenCoin、Kobocoin 等等

除了创新算法外,还有很多创新的共识类型,通常被称为证明类型,例如以下这些:

  • Proof of WorkPoW):这是最常用的证明类型;在这种证明类型中,网络节点需要进行计算来通过挖矿形成分类帐。
  • Proof of StakePoS):这最初在 Peercoin 中使用。通过股份证明,节点不挖矿,而是持有硬币并验证所有权。通过使用算法搜索与股份大小结合的最低哈希值来预测新的块创建者。节点可以预测哪个股份将创建下一个块。在这种类型的系统中不需要挖矿。
  • Proof of Stake AnonymousPoSA):这是 POS 算法的一种变体,最初在 Cloakcoin 中引入;通过股份证明,交易被其他节点隐藏,这些节点因帮助过程而获得奖励。节点为交易提供输入和输出,使得无法确定指定交易的目标或来源。
  • 授权权益证明 (D****PoS):通过授权权益证明,用户充当代表,有权利从运行区块链的完整节点中赚取收益。比特股引入了这种证明类型;一些更多使用它的硬币包括 Steem、EOS、Lisk 等。
  • 重要性证明 (POI):通过重要性证明,区块链上的每个账户都被赋予一个重要性评分;这个评分会影响每个节点如何收获区块链。区块链上的收获者的任务是为了一个小经济刺激而在区块链上添加交易。随着重要性评分的增加,获取奖励的机会也会增加。
  • 容量证明或空间证明 (PoSpace):在这种类型的证明中,不使用区块链,而是使用存储。由于存储的通用性和存储所需的更便宜的能源成本,这种类型被认为是一种经济且更环保的选择。一些 PoC 的理论和实际实现包括 Burstcoin、SpaceMint 等。
  • 权益时间证明 (PoST):在这种方法中,通过引入一个权益时间组件形成共识,其中权益随着时间增加。这提供了一个激励权益过程,并增加了网络的安全性。这种证明类型的目标是避免常见的权益证明方法,其中拥有更多硬币的节点会获得更多经济奖励。
  • 权益速度证明 (PoSV):在这种方法中,奖励是基于节点拥有的硬币数量和节点上交易活动的活跃程度来分配的。
  • 活动证明 (POA):在这种证明类型中,采用了一种混合方法,将工作证明与基于股权的系统相结合。在这个系统中,挖矿就像在 PoW 系统中一样发生。虽然挖出的块不包含任何交易,只有头部和挖矿者的奖励地址。然后,系统切换到 PoS,在这里随机选择一组验证者;只要所有验证者签署了区块,该区块就会立即成为一个完整的区块。
  • 燃烧证明 (PoB):在这种证明中,我们必须证明在向一个不可依赖的地址发送交易的过程中硬币被燃烧了。尽管这只适用于从 PoW 货币中挖掘的硬币。简而言之,硬币通过销毁另一种 PoW 硬币的价值来启动。

由于另类币的数量很多,而且更多硬币定期释放,重要的是要了解每种硬币所提供的差异。现在是时候讨论各种另类币以及它们各自所提供的内容了。

莱特币

这是最初的另类币之一,发布于 2011 年。莱特币相对比特币的主要修改是使用脚本算法而不是比特币中使用的 SHA-256。此外,莱特币的硬币限制为 8400 万,而比特币为 2100 万。

莱特币于 2011 年 10 月由一名前谷歌工程师创建,其主要目标是将比特币的区块生成时间从 10 分钟缩短到 2.5 分钟。由于区块生成更快,与比特币相比,莱特币交易的确认速度更快。

以太币

**以太币(Ether)**基于以太坊平台,提供了脚本功能。代号为 ETH,区块时间为 14 到 15 秒。它基于使用 Ethash 算法的 PoW。流通限制建议约为 1.2 亿个币。

瑞波币

瑞波币(Ripple)是由一家名为瑞波(Ripple)的公司支持的加密货币,它是一个实时毛额结算系统(RTGS)。它的标志是 XRP。它采用瑞波协议共识算法(RPCA),该算法每隔几秒钟由网络中的所有节点应用一次,以维持网络的一致性。支持瑞波的组织计划创建不超过 1000 亿个瑞波。按计划,其中一半将用于流通,另一半将由公司保留。

比特币现金

于 2017 年 8 月 1 日,比特币开发者社区继续将区块链分割为两部分。这种分割称为分叉,并引入了新的区块链功能。比特币现金是首次分叉的结果,以分割比特币。与比特币相比,比特币现金具有相对较低的交易费用,以及较低的挖矿难度。

获得加密货币

有多种方式可以获得替代币或比特币;如果币支持挖矿,主要是基于 PoW 算法的币属于这一类别,这些币可以通过挖矿过程获得。比特币、莱特币、以太币、比特币现金、门罗币等币支持挖矿。正如前面讨论的,有各种交易所可以交换加密货币,以法定货币,甚至其他加密货币;这是另一种广泛使用的方法。

加密货币的挖矿

挖矿是将新区块添加到区块链的过程。交易通过挖矿节点的挖矿过程进行验证,并保存在区块中,然后这些区块被添加到区块链中。这是一个高度耗费资源的过程,以确保矿工花费了所需的资源才能接受该区块。

每种加密货币都有不同的挖矿难度,这由区块高度、挖掘该加密货币的矿工数量、该货币的总交易量和区块时间定义。

比特币挖矿

比特币的区块创建时间为 10 分钟。矿工在创建新区块时会获得奖励,并且还会根据包含在被挖掘的区块中的交易支付交易费用。区块时间维持在 10 分钟,以确保区块以固定的速率被创建。挖矿区块的奖励每产生 210,000 个区块就减半一次,大约每四年一次。当比特币最初引入时,区块奖励为 50 比特币,2012 年减半至 25 比特币。2016 年 7 月,每个区块的挖矿奖励再次减半至 12.5 个比特币。下一次减少区块奖励的日期是 2020 年 7 月,将把币的奖励减少到大约 6.25 个比特币。

由于减半事件,比特币存在的总数量不会超过 2100 万个。选择减少供应是因为它类似于黄金和白银等其他商品。最后一个比特币将在 2140 年挖出,并且在那之后将不会再有新的挖矿奖励,尽管交易费用仍将被分配给包含交易费用的区块的代代相传。

挖矿难度

这是挖矿哈希率的度量;比特币网络有一个全局的区块难度。有效区块的哈希率需要低于此目标。网络中的难度每产生 2,016 个区块就会改变一次。其他货币有自己的难度或实施了修改版的比特币难度算法。以下是比特币的难度调整公式:

代码语言:javascript
复制
difficulty = difficulty_1_target/current_target
difficulty_1_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000

在这里,difficulty_1_target是 SHA256 使用的最大目标,这是可能的最高目标,也是比特币创世区块挖矿的第一个难度。

比特币中难度调节的原因是,由于区块时间保持在大约 10 分钟,2,016 个区块需要大约两周的时间。如果挖掘 2,016 个区块需要的时间超过两周,则需要降低难度;如果挖掘 2,016 个区块需要的时间少于两周,则应增加难度。

比特币创世区块的难度,以下是区块头:

代码语言:javascript
复制
$ Bitcoin-cli getblockhash 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

$ Bitcoin-cli getblockheader 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
{
 ...
 "height": 0,
 ...
 "bits": "1d00ffff",
 "difficulty": 1,
 ...
}

正如你所看到的,创世区块的难度为1,比特币的目标哈希值为1d00ffff。以下是比特币源代码中的此重新定位难度算法的代码:

代码语言:javascript
复制
 // Go back by what we want to be 14 days worth of blocks
 int nHeightFirst = pindexLast->nHeight - (params.DifficultyAdjustmentInterval()-1);
 assert(nHeightFirst >= 0);
 const CBlockIndex* pindexFirst = pindexLast->GetAncestor(nHeightFirst);
 assert(pindexFirst);

以下是比特币源代码中相同pow.ccp文件中的限制调整步骤:

代码语言:javascript
复制
 // Limit adjustment step
 int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
 if (nActualTimespan < params.nPowTargetTimespan/4)
 nActualTimespan = params.nPowTargetTimespan/4;
 if (nActualTimespan > params.nPowTargetTimespan*4)
 nActualTimespan = params.nPowTargetTimespan*4;

   // Retarget
    const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
    arith_uint256 bnNew;
    bnNew.SetCompact(pindexLast->nBits);
    bnNew *= nActualTimespan;
    bnNew /= params.nPowTargetTimespan;

    if (bnNew > bnPowLimit)
        bnNew = bnPowLimit;

在两周的单个周期内,重新定位调整应小于 4 倍。如果难度调整超过 4 倍,则不会按最大因子调整。进一步的调整应在下一个周期的两周内完成。因此,非常大和突然的哈希率变化需要多个两周周期来在难度方面平衡。

由于 ASIC 的引入,哈希功率呈指数增长,随之挖矿难度增加。

挖矿池

由于巨大的挖矿算力,矿业社区的人们汇集在一起共同挖掘区块,并决定根据每个人贡献的算力来分配奖励。在矿池中,每个人都按照投入的资源成比例地获得区块奖励的份额。现在存在许多矿池。一些知名的矿池除以下几个:

  • BTC.com:这是最大的矿池之一,截至 2018 年 6 月,负责挖掘约 25%的比特币区块。该矿池于 2016 年 9 月推出,目前由比特大陆科技有限公司拥有。
  • Antpool:这个矿池由拥有 BTC.com 的同一公司所有,是最大的矿池之一。Antpool 和 BTC.com 在最大矿池中占据前列。总部位于赛里斯北京的比特大陆公司。
  • ViaBTC:成立于 2016 年 5 月,由 Viabtc Technology 所有。总部位于赛里斯。
  • SlushPool:这是世界上第一个矿池。它始于 2010 年 11 月 27 日,当时名为比特币矿池服务器。该矿池自推出以来已挖掘了超过 100 万个比特币。它是一个可靠稳定的矿池,具有准确支付历史。

以下图表显示了 2018 年 6 月 1 日至 6 月 2 日期间各个比特币矿池挖掘的比特币百分比:

除我们提到的之外,还有许多积极挖矿的矿池,不断添加更多功能,以成为最大的矿池。

另类币挖掘

正如我们讨论过的,各种另类币具有不同的算法;每种另类币都有修正和改进,以增加难度并避免中心化。目前,除比特币挖矿外,还定期挖掘各种其他另类币。几乎每个矿池现在都支持另类币;截至 2018 年 6 月,一些最常挖掘的另类币包括以太坊、莱特币、Zcash、达世币、比特币现金、以太经典等。

有关挖矿盈利能力的讨论很多;由于比特币挖矿的难度非常高,其他另类货币成为矿工以及矿池的流行选择。现在,ASIC 矿机也开始用于莱特币、现金、以太坊等另类币的挖掘。

由于比特币和其他基于 SHA-256 的硬币对 GPU 和资源的需求很高,基于脚本创建了很多 CPU 友好的挖矿硬币。

加密货币交易所

有许多交易所用户可以购买或出售比特币和其他另类币。交易所可以交易法定货币、比特币、另类币、大宗商品或所有这些货币。这些交易所通常对其平台上进行的交易收取一小笔费用。一些知名的加密货币交易所如下:

  • Binance:世界顶级交易所之一,上市超过 150 种另类币,并日益增加。它是活跃度最高的加密货币交易所之一。
  • 火币网(Huobi):另一家流行的交易所,成立于 2013 年 9 月。它是赛里斯最大的交易所之一。在火币交易所上列出了超过 250 种币种。
  • Bithumb:总部位于韩国的最大加密货币交易所之一,每日交易量巨大。Bithumb 并未列出大量的币种;截至目前,只有 20 种币种列在了 Bithumb 上。
  • Bitfinex:总部位于香港的加密货币交易所,由 iFinex,Inc.拥有。Bitfinex 上列出了 75 多种币种。
  • OKEx:最大的加密货币交易所之一,在其平台上列出了 500 多种币种。成立于 2014 年,也以比特币期货交易而闻名,其每日交易量巨大。
  • Kraken:最早的比特币交易所之一,成立于 2011 年。在 2017 年中期经历了许多安全漏洞,但在那之后一直保持稳定。Kraken 向彭博终端提供比特币定价信息。
  • Cex.io:成立于 2013 年的一家知名加密货币交易所。曾以云挖矿服务而闻名。Cex.io 的挖矿池名为 Ghash.io,2014 年贡献了超过 42%的比特币挖矿算力。
  • Bitstamp:成立于 2011 年的最古老的交易所之一。最为知名的是法币兑换加密货币。
  • HitBTC:一家总部位于英国的加密货币交易所,成立于 2015 年。它支持的货币种类繁多。
  • Upbit:一家位于韩国的加密货币交易所,提供韩元存款。
  • Bittrex:一家总部位于美国的加密货币交易所,成立于 2013 年。它与大量的加密货币合作。

除了这里提到的之外,还有许多其他流行的交易所,一些主要专注于法定货币兑换加密货币,而另一些则仅处理加密货币。其他一些知名的交易所包括 Upbit、Bittrex、Lbank、Bit-Z、HitBTC、coinbase、BCEX、GDAX、Gate.io、Bitstamp、EXX、OEX、Poloniex、Kucoin、Cobinhood、Yobit 等等。

加密货币钱包

加密货币钱包是管理这些私钥并将它们从一个钱包转移到另一个钱包的私钥集合。比特币钱包是根据安全性、匿名性、易用性、功能、可用平台和支持的币种进行比较的。通常,所有加密货币都有自己的官方钱包,但也可以根据需求选择其他第三方钱包。一些知名的加密货币钱包包括以下几种:

  • Coinbase:这是一个于 2011 年 7 月成立的数字钱包,除了存储货币外,还提供买卖加密货币的服务。支持的货币包括比特币、比特币现金、以太币和莱特币。
  • Blockchain.info:这是一个广泛使用的比特币钱包,同时也是区块浏览器服务。它于 2011 年 8 月推出。支持比特币、比特币现金和以太币。
  • Jaxx:一种多币种钱包,创建于 2014 年,支持比特币、以太币、以太经典、达世币、莱特币、Zcash、Augur 等多种币种。

以下是一些提供多币种支持的加密货币钱包列表:

  • Trezor
  • 区块链钱包
  • Metamask
  • 开源总账
  • Exodus
  • 钱包 Nano

除了我们提到的第三方钱包外,还有许多其他钱包提供不同的功能。需要注意的是,一些钱包收取更高的交易费,以覆盖他们的开发成本,而不是实际的网络费用。

以下截图显示了 Jaxx 加密货币钱包:

摘要

在本章中,我们讨论了替代货币以及硬币和代币之间的区别。我们详细讨论了基于哪些平台可以创建平台。此外,我们还讨论了替代币相对于比特币提供的各种选择。我们详细了解了莱特币、以太坊、瑞波币和比特币现金等货币。

我们还讨论了获取加密货币的各种方式。我们了解了挖掘加密货币以及比特币和替代币在挖矿方面的区别。我们讨论了交易所以及如何在钱包中存储比特币以外的替代币。我们还了解了在比特币中重新定位算法的难度。

第七章:实现共识

共识的概念很简单:共识是当网络就网络中存储的信息的真实性达成一致意见时,应该保留什么信息,以及什么信息不真实,不应该保留。对于比特币来说,达成共识就是要就网络中要发送和接收的比特币集合达成一致意见。对于其他网络,达成共识还涉及就区块链上存储的智能合约的最终状态或任何其他网络信息达成一致意见。

共识算法已经成为研究对象数十年。分布式系统的共识算法必须对多种类型的故障和问题具有弹性,如错误的消息、网络的部分连接和断开、延迟等。在金融系统中,特别是在区块链中,系统中存在谋利的和恶意的行为者的风险。对于区块链网络中的每个算法,达成共识确保网络中的所有节点就区块链的一致全球状态达成一致意见。任何分布式共识协议都具有三个关键属性:

  • 安全性:分布式网络上所有节点保证具有相同的状态或一致性的能力
  • 活跃性/可用性:协议保证成功并使不同节点产生最终结果
  • 容错性:协议处理节点生成错误或敌对结果的能力

恰巧,Fischer、Lynch 和 Paterson 的一篇著名论文指出,在同一个异步分布式系统中不可能同时满足这三个条件。因此,任何区块链设计都必须在这些属性之间做出权衡。这些权衡通常是在安全性和活跃性之间进行的,因为容错性通常被认为是全球分布式网络的必备条件。

在区块链系统中,目前有四种主要方法可以实现共识。它们如下:

  • 实用拜占庭容错算法
  • 工作量证明算法
  • 权益证明算法
  • 委托式权益证明算法(DPoS)

这些方法将在本章中依次介绍。

实用拜占庭容错算法

实用拜占庭容错PBFT)算法。许多算法被称为拜占庭容错。这个名字来源于提出原始问题的寓言。

想象一支古代的拜占庭军队正在进攻一座城市。攻击的想法是从各个方向进攻。一旦军队的将军们到达城市,他们必须就何时以及如何进攻达成一致意见。难点在于如何达成一致。将军们只能通过信使进行通信,但信使可能会被敌人抓获,而且还有一个额外的担忧,即一个或多个将军或他们的指挥官可能是叛徒。

将军们需要一种方法来确保所有忠诚的将军都同意相同的计划,并且少数可能的叛徒不能导致任务失败。

忠诚的将军会按照方法所说的去做,但叛徒可能会做任何事情。将军们如何创建一种方法,以确保只要他们中的大多数人是忠诚的,他们的计划就会成功?

这个寓言有时也被称为赛里斯将军问题,以及其他几个名字,但问题仍然相同:当通信渠道可能不安全时,不同方如何安全地进行通信并达成协议,甚至可能在他们中间有叛徒的情况下。

在区块链的情况下,故事中的将军是参与运行区块链的分布式网络上的计算机。信使代表了这些机器正在运行的数字网络以及这些机器使用的消息协议。目标是让好的计算机或将军决定网络上的哪些信息是有效的,同时根除坏行为者,并防止错误信息被记录在区块链上。

故事中的忠诚将军代表了对确保区块链及其基于其上的应用程序的完整性感兴趣的诚实节点的运营者,因此他们致力于确保仅记录正确数据。叛徒代表了世界上许多坏行为者,他们愿意为了个人利益或代表其他对抗性方的某种利益而篡改数据(尤其是财务数据)。坏行为者的动机可能各不相同,可以是花费他们并非真正拥有的比特币,摆脱合同义务,甚至试图以破坏网络的方式进行货币控制来自对抗性政府的形式。

拜占庭故障

要理解 PBFT 和随后出现的所有其他共识算法,首先需要定义拜占庭故障是什么。拜占庭故障是指任何可能破坏分布式系统一致性的事件或结果,例如以下情况:

  • 未返回任何结果
  • 返回错误或不一致的结果
  • 故意返回误导性的结果
  • 任何事先未定义的行为

如果发生了任何这些事件,就会说发生了拜占庭故障。因此,拜占庭容错系统能够处理一定程度的不一致输入,但仍然能够在最后提供正确的结果。关键在于这样的系统是容错的,而不是免疫的。所有容错系统只能容忍一定程度的故障,超出容忍范围后,系统就会以某种方式失败。

PBFT 的工作原理

超级账本是主要使用 PBFT 的区块链。以下是 PBFT 在超级账本中的工作原理。每个验证节点(运行区块链软件并努力维护一致性的计算机)都保存区块链的内部状态的一个副本。当节点接收到消息时,它使用消息与其内部状态一起对新状态进行计算。然后节点决定如何处理该消息:将其视为有效、忽略它,或者采取其他行动。一旦节点对新消息做出决定,该节点就会与系统中的所有其他节点分享该决定。一致性决定基于所有节点提交的总决定:

  1. 提交:网络上的一个或多个节点提交发送到其他节点的交易。例如,如果有十个参与节点,其中三个发送消息,看起来如下:
    • 十台计算机都看到三个交易
    • 这些交易被分发,以便每个节点都拥有所有交易的完整副本
    • 这些交易可能在不同的时间到达节点,因此顺序可能不一致
  2. 排序:通过其他节点的投票,其中一个验证节点被选为领导者。这个验证的领导者选择交易的顺序并将其发送给其他参与节点。其他验证节点然后将它们已经拥有的交易重新排列成验证领导者设置的顺序。
  3. 执行:验证节点然后执行新排序的交易。每个节点都独立执行所有更改,并将这些更改添加到以前区块的全局状态中。如果无法达成共识,交易将被回滚并拒绝。

对每个区块都重复这个过程。PBFT 的优势是非常快并且相对可扩展。缺点是参与者必须是已知的——不是任何人都可以加入网络。

工作证明

区块链中使用的第一种共识算法是比特币的工作证明PoW)。工作证明的基本功能是利用某些密码学函数的特性:有一些很难解决的数学问题,但一旦解决了,检查起来就很容易。正如之前所讨论的,其中一个问题就是哈希:很容易从数据中计算出哈希,但从哈希中发现输入数据却非常困难。PoW 最显著地被比特币、莱特币和以太坊使用。

PoW 具有以下特点:

  • 相对可预测的解决时间:比特币的网络协议预期每个区块解决约需要十分钟。如果网络开始太快地解决工作证明问题,网络将自动增加难度。
  • 对计算能力的大幅增加或减少具有抵抗力:摩尔定律表明,计算机的工作量预计每两年增加一倍。此外,由于网络是开放的,任何人都可以随时向网络添加大量的计算资源。为了保持网络的稳定,算法必须自动调整自身。同样,如果网络不再盈利,那么正在使用的计算能力将会下降,因为这些资源会被重定向。这是通过算法中自动调整难度来实现的。任何网络参与者都必须能够快速检查他们是否拥有正确的链条,以及该链条是否有效。这是通过散列函数来实现的。

工作量证明算法只要没有任何一组参与者控制 50%以上的整个网络计算能力,就能维护网络的完整性。能够操控链条的坏参与者的可能性被称为51%攻击。如果单一组织控制了超过一半的网络计算能力,他们可以通过停止支付或甚至双花来控制网络和网络交易。攻击组织将能够阻止确认新的交易(随意停止用户的支付),甚至在他们控制网络后发生的交易。

比特币中的工作量证明问题的原理

工作量证明算法首先采取最长的链。在比特币中,区块可以通过多种方式最终确定(取决于包括的交易)。因此,比特币节点可以选择多个可用的“已解决”链作为基础。作为算法的一部分,比特币采取最长的链,因此接受了最多的计算能力。以下图表说明了工作量证明链:

比特币中的难题是找到一个输入,当加到先前的区块哈希和交易列表中时,会产生一个以特定数量零开始的哈希。

通常,该函数的输入是所有交易的默克尔根和先前的块哈希。为了简化说明,假设我们有一个简单的输入,例如I love Blockchains。同时假设系统的难度是最简单的:哈希起始位置只有一个零。I love Blockchains的 SHA-256 哈希如下:

代码语言:javascript
复制
ef34c91b820b3faf29104f9d8179bfe2c236d1e8252cb3ea6d8cb7c897bb7d96.

你可以看到,它不是以0开始的。为了解决这个输入的区块,我们需要找到一个字符串(称为随机数)可以加到这个字符串上,以便将这个组合(随机数+ I love Blockchains)的哈希结果为以0开始的字符串。事实证明,我们只能通过测试来完成。例如,如果我们在开头加上1,我们得到1I love Blockchains,哈希如下:

代码语言:javascript
复制
b2fc53e03ea88d69ebd763e4fccad88bdb1d7f2fd35588a35ec6498155c702ed

没有运气。 那么 2 和 3 呢? 这些也将无法解决谜题。 恰巧,4I love Blockchains 的哈希以 0 开头:

代码语言:javascript
复制
0fd29b2154f84e157d9f816fa8a774121bca253779acb07b07cfbf501825415d

这只用了四次尝试,但这是一个非常低的难度。 每增加一个零,找到一个能计算出正确哈希的适当输入的挑战就会加倍。 截至目前,一个有效的比特币区块需要 18 个零才能有效。

尝试找到产生正确哈希的随机数的过程称为挖矿。 每台挖掘 PoW 链的计算机都在竞争看谁能最先找到正确的随机数。 获胜者有权创建链中的下一个区块,并且以代币的形式获得奖励。 更多细节,请参阅 第十八章,挖矿

PoW 的优势在于任何人都可以加入 PoW 网络,并且它已经被证明是一种功能性共识机制。 PoW 网络的主要缺点是速度慢和财务成本高:运行所有计算机进行这些计算非常昂贵,并且输出没有被用于任何真正的生产性用途。 这被认为对环境不利,并且可能导致在进行大量区块链挖掘的地方能源价格上涨。 由于这个原因,一些地区已经禁止了区块链挖掘。

由于这些缺点,权益证明PoS)被发明出来。

股权证明

PoS 与 PoW 具有相同的目标,即保护网络免受攻击,并允许在开放网络中达成共识。 第一个使用此方法的数字货币是 Peercoin,随后是许多其他数字货币,如 NXT,Dash,PIVX 等。 在 PoW 网络中,解决谜题决定了哪个节点可以创建链中的下一个区块。 在 PoS 网络中,区块被称为被锻造而不是被挖掘,因为它们在 PoW 区块链中。 在 PoS 链中,验证者通过获得每个区块的交易费用来获得奖励,并且有时在每次创建区块时自动创建额外的代币。 在 PoS 链中,成为下一个区块的创建者的机会取决于节点在网络中的投资金额。

看看以下示例:

PoS 网络中有五个节点。 它们具有以下余额:

  1. 10,000 枚代币
  2. 200 枚代币
  3. 300 枚代币
  4. 4,000 枚代币
  5. 20,500 枚代币

代币的总数为 35,000 枚。 假设每个节点都抵押了他们代币的 100%,每个区块和其中的节点被认为是下一个区块签名者的可能性如下:

  1. 28.57%
  2. 0.57%
  3. 0.86%
  4. 11.4%
  5. 58.6%

很明显,如果单个节点控制大多数代币(甚至是大部分),那么他们将对网络有很大的控制权。在这种情况下,节点 #5 将创建超过半数的区块。此外,由于节点 #5 将定期签署区块,它还将获得大多数交易费用和新创建的硬币。在某种程度上,PoS 以额外代币的形式奖励验证者对其投资的利息。对 PoS 网络的一项批评是富者更富,这可能导致网络的中心化和控制不断增加。

无所不在的利益攻击

PoS 系统中的一个问题是无所不在的利益攻击威胁。在无所不在的利益攻击中,验证者实际上创建多个区块,以多次消费代币。由于在 PoS 系统中创建区块的成本很低,网络没有财务激励来阻止所有交易的批准,导致共识崩溃。

举例来说,想象一下,一个名为 Cain 的不良行为者,只拥有 100 个代币。他决定尝试欺骗,向网络发送两条消息:一条是他将他的 100 个代币发送给 Sanjay,另一条是他将他的 100 个代币发送给 Eliza。网络应该接受任一交易,但不接受两者。通常,节点必须就哪个交易有效或拒绝两者达成共识。但是,如果验证者与 Cain 合作(或由 Cain 自己运行),那么批准两个区块对他们的财务利益是有利的。

在下图中,预期价值代表EV。它显示如果验证者接受两个区块,它可以有效地双重花费而不受惩罚:

为了避免这个问题,PoS 系统引入了各种各样的对策,如抵押存款。在区块链分叉或双重消费攻击的情况下,参与的验证者面临失去他们的代币的风险。通过财务处罚和抵押代币的损失,认为双重花费和验证所有区块的激励会降低或消除。

变种

基本 PoS 方法有许多变体。每种变体都会有不同的要求,如拥有股权的最低余额、不良行为的潜在处罚、网络的利益相关者的权利和能力,以及修饰符,例如账户需要拥有抵押余额多长时间才能计算。

委托型股权证明(Delegated Proof of Stake)

DPoS 与 PoS 共识有关,但存在一些关键区别。这个新系统是 Bitshares、Steemit 以及目前的 EOS 的创始人 Dan Larimer 的创造。这两个网络以及 Lisk(另一个常用的区块链)目前是唯一使用这种方法的主要区块链。在 DPoS 中,代币持有者不是进行区块验证的人。相反,他们可以使用自己的代币选举一个节点来代表他们进行验证——他们的代表(也称为验证者)。正是这个代表/验证者帮助操作网络。可用验证器插槽的数量往往锁定为一个特定的数量,通常是 21 个。要成为代表,节点的所有者必须说服网络的其他用户信任他们,让他们负责通过将他们在网络上的整体代币份额委托给他们来保护网络。基本上,网络上的每个代币都充当一票,而获得最高选票的人被允许操作网络。目前,只有 Bitshares、Steemit、EOS 和 Lisk 是使用这种方法的主要区块链。

在 DPoS 中,每个代表都有一个有限的指定时间来发布新的区块。如果一个代表持续错过他们的区块创建时间或发布无效交易,使用他们投票权的代币持有者可以投票将他们替换为更好的代表。以下图表显示了这个结构如下所示:

DPoS 的主要批评是它在某种程度上是中央集权的,并且对背叛网络没有真正的即时财务惩罚。违反网络规则的后果是被代币持有者投票淘汰。人们认为,违反网络规则的声誉成本以及竞选代表股份的损失将超过试图负面影响网络的财务收益。由于只有少数的代表插槽,代币持有者更容易关注个体验证节点的行为。

Tendermint 共识

Tendermint 使用自定义共识引擎,由 Jae Kwon 的博士论文的一部分设计而成。它类似于 DPoS,参与网络的人可以将他们的投票权委托给一个验证账户。然而,为了这样做,他们必须债券化或锁定他们的代币。为此,他们必须发出一个特殊的债券交易,其中他们的硬币被锁定到一个验证节点。如果他们的代表行为不端,那么代表和借出他们硬币的账户都将放弃一部分他们债券化的代币。要释放他们的代币,必须向网络发布另一个特殊的解除债券交易,而且这样的提款会受到长时间的延迟。

让我们看看这些交易是如何发生的。以下图表摘自 Tendermint 文档:

让我们更详细地看一下前面的图。代表通过签署投票来信号下一个区块。有三种类型的投票:预投票、预提交和提交。每个区块都有一个特殊的验证器,称为提案者。提案者首先提出一个基于之前锁定区块的有效区块状态的建议。这个提议在其他验证器之间点对点共享,如果有 2/3 或更多的验证器同意锁定区块(在预投票阶段),那么它们将进入下一个阶段:预提交。在预提交阶段,同样,如果有 2/3 的人同意预投票条件,他们将表示他们准备提交。最后,区块的实际提交发生:节点必须已经收到了区块,并且必须已经收到了 2/3 的有效投票来进行预提交。

如果这个 2/3 投票序列看起来不寻常,那是因为异步网络的性质,验证器可能会在不同的时间收到区块和投票。这个序列以及在未达到 2/3 多数时处理边缘情况的方式,使得在不可靠的网络上能够有效快速地达成共识。

权威证明

权威证明PoA)网络仅在所有区块链参与者都已知的情况下使用。在权威证明中,每个参与者都被区块链知道并注册。这样的区块链称为许可链,因为只有属于批准的权威列表的计算机才能锻造区块。因此,至关重要的是,没有一个权威计算机被破坏,每个操作者都必须努力确保其验证器的完整性。这种方法最初由 Parity Technologies 的 Gavin Wood 分享,作为运行基于以太坊的区块链的不同方式。

建立权威

必须满足的三个主要条件以建立验证器如下所述:

  • 身份需要经过正式验证并上链。
  • 获得资格应该是困难的。例如成为公证人,接受背景调查和提供保证金等事项。
  • 对每个权威所需的事项集应该有良好的文件记录,一致,并值得网络的信任。

一旦建立了权威,可能会通过将该权威添加到区块链的有效验证器列表中来授予锻造新区块的权利。

虽然 PoA 主要用于私有链,但也可以用于公共链。两个公共以太坊测试网络,Rinkleby 和 Kovan,是使用 PoA 作为其共识机制的公共区块链网络。

PoA 的明显缺点在于每个验证器操作者的身份必须为人所知和信任,并且滥用信任的惩罚必须是真实的。对于全球区块链而言,这可能并不理想,因为区块链技术的吸引力之一就是能够匿名交换价值。

已过时的证据

Hyperledger Sawtooth 项目推出了一种名为proof-of-elapsed-timePoET的新共识机制。Hyperledger 主要涉及许可链,只有指定数量的参与者被允许进入网络,类似于 PoA 链。

基本方法很简单:

  • 每个节点必须等待一段随机的时间
  • 首个停止等待的节点将创建一个区块

我们必须做两件事情才能使其工作。首先,我们必须能够验证所有参与者的等待时间实际上是随机的,否则一个简单的攻击就是假装等待一段随机的时间,然后立即创建一个新的区块。其次,必须能够验证不仅选择时间的长度是随机的,而且节点实际上在采取行动之前等待了整个时间段。

这些问题的解决方案来自英特尔(他们创造了 PoET 算法),并依赖于特殊的 CPU 指令,以确保只运行受信任的代码。强制信任的代码负责处理块时间,确保抽奖公平。

摘要

到此为止,您应该对区块链使用的不同机制达成共识具有坚实的基础。每种共识算法在速度、可用性、一致性和容错性之间进行了一定的权衡。最常见的共识机制仍然是 PoW 和 PoS,但区块链的发展非常迅猛,新的、改进的方法可能会被开发出来。共识算法的改进将提高区块链的可扩展性和可靠性,并扩大技术的潜在应用范围。

参考文献

  1. groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf
  2. www.microsoft.com/en-us/research/publication/byzantine-generals-problem/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fbyz.pdf
  3. github.com/tendermint/tendermint.com/blob/5c111743a03d2c6ed2e0b14bd3091cac8974c8da/docs/tendermint_v02.pdf
  4. peercoin.net/assets/paper/peercoin-paper.pdf
  5. github.com/ethereum/guide/blob/master/poa.md
  6. medium.com/poa-network/proof-of-authority-consensus-model-with-identity-at-stake-d5bd15463256

第八章:先进的区块链概念

在科技界,隐私问题被频繁讨论,特别是现在社交媒体高管不情愿地穿上西装,在美国参议院委员会面前作证。

同时,虽然区块链的支持者很高兴看到这项技术促进人类福利并分散资金转移,但考虑到所有交易都在链上公开,用户是否真正能够保持隐私是个值得关注的问题。

本章将涵盖以下主题:

  • 区块链作为公司治理工具
    • 未受银行监管的公司
    • 去中心化自治组织(DAO)
  • 区块链的社会用途
  • 在区块链的社会目的背景下的隐私问题
  • 零知识加密系统作为解决隐私问题的方案

区块链与银行

在加密货币生态系统中,隐私迫切需要。加密货币可以帮助发展中国家的人们摆脱贫困,并通过增加资金转移来推动经济——或者它们也可能成为压迫性政权追踪每笔交易的工具,并提供更多机会指控无辜者犯错。

区块链技术对具有反权威倾向的人们有明显的吸引力。美国许多人对银行系统心怀不满。30 年代,联邦住房管理局负责为抵押贷款提供保险,该机构绘制了它愿意开展业务的地区地图,排除了贫困和少数民族社区。这种做法持续了一代人,对许多美国城市的核心产生了毁灭性的影响,破坏了数千亿美元的财富。

最近,2008 年全球金融危机源于对未来衍生品和不正当借贷行为的投机,导致房地产价格暴涨(然后暴跌)。

一些法规是针对这些不当行为而制定的,但与 20 世纪 80 年代的储蓄和贷款危机不同,几乎没有人因此面临刑事处罚。从那时起,许多竞选公职的候选人都批评了银行家(获得了政府救助)相对于被指控对社会犯罪的其他人的待遇不公,例如低级毒品犯罪者。

从不那么政治化的角度来看,广泛存在对银行和支付解决方案的不满。任何在国外居住一段时间的人都会发现很难获取他们的钱。任何旅行的人都会遇到信用卡或借记卡因欺诈警告而被冻结。要为没有国内办事处的新企业开设银行账户?祝你好运。为了增加难度,试试从这个新公司银行账户发国际电汇。

虽然很容易说银行业还没有赶上时代,但这并不完全正确。建立一家商业银行账户比以往更加困难。因此,一些初创公司选择不办理银行业务,包括本书几位作者合作的一些公司。这种方法在管理费用方面具有一些优势(没有银行费用、没有无休止的声明和披露、没有因欺诈警报而封锁支付卡用户),但也存在风险,正如我们将在随后的章节中看到,不办理银行业务将需要一些发展才能成为可行的替代方案。

未加银行账户 - 走向纯加密货币

把一个纯加密公司视为银行业问题的解决方案似乎是自然的 - 为什么不只运行一个完全由比特币或以太坊组成的实体?正如我们将看到的,大多数解决方案涉及无法接受的不确定性水平。

修正固定汇率

支付某些费用所需的法定货币是重要的 - 企业最终的大部分支出不会基于比特币或以太坊的价格,而是基于这两种货币其中一种或两种兑美元或欧元的价格。在你能够用加密货币支付电力和食物之前,加密货币对美元或欧元的价格变得无关紧要几乎是不可能的。

有些人认为发展所谓的稳定币可以解决这个问题。可以使用各种机制来确保资产的买入或售出压力,例如后盾在价值低于承诺价值时回购代币。然而,一个更简单一些的解决方案可能是以主权政府发行的货币为基准的代币。

固定汇率是一种特定类型的固定汇率制度,发行国断言其货币价值取决于另一种货币,理想情况下愿意用其货币兑换另一种货币。

经济学家往往不赞成谈论固定汇率。1994 年墨西哥的所谓龙舌兰危机就是一个货币被高估的著名例子。墨西哥政府发行的以墨西哥比索计价的债券可兑换成美元,汇率约为 1 美元兑换 3 比索。很少有人相信墨西哥比索价值那么高。最终,做空(借比索抛售以获取美元)和资本外逃(投资者抛售其比索资产)导致比索价值急剧下跌,随后造成了严重的衰退。

墨西哥央行试图通过提高利率控制通货膨胀。与美国和欧洲大陆不同,墨西哥许多抵押贷款是浮动利率的,这意味着房主付款中的利息占比大幅上升,从而导致许多情况下违约和被收回。

一些国家,例如柬埔寨,尽管存在这些缺点,仍然继续使用固定汇率,但难以找到其他被广泛认为是一个糟糕主意的事情。

尝试将加密货币与美元挂钩的努力不可避免地在加密货币中筹集资金,然后使用它来购买主权债务。断言是,代币的一个单位等于一美元,或一美元的某个分数。代币由发行者持有的债务支持,在理论上,发行者能够通过漂浮赚钱。

如果发行者试图最小化风险,仅购买 1-3%的国债,嗯,数十亿美元的 1-3%可能足以支付你的员工。商业模式非常简单。PayPal 著名地也试图免费,并用浮动资金支付所有开支,但并未成功。

最著名的稳定币尝试是泰达币(代码:USDT),其价格围绕 1 美元左右。泰达币聘请了纽约会计事务所 Friedman LLP,并承诺进行定期审计。这些审计没有出现,而 Friedman(可能是出于对委托方利益的尊重)没有发表任何关于泰达币每个单位是否由现金或等值现金支持的声明。

这种性质的固定汇率在加密空间中有点奇怪;最终,这种交易的基础是信任。这几乎与无信任、去中心化生态系统的概念相对立;但存在替代方案。

购买期权

未来,相对于美元或欧元的汇率风险可能将由金融期权而不是稳定币来管理——这些是为用户提供购买或出售资产的权利,但不是义务。希望管理风险的用户将支付略微溢价来购买针对他们的加密货币头寸的保护性 put。

Put 是以特定价格出售资产的权利。保护性 put 是针对你已经拥有的资产购买的 put,价格低于现在的价值。如果资产的价格跌破行权价格(即期权可以执行的价格),则该期权可用于为基础资产获得更高的价格。

现有交易所的问题在于,在发生问题时没有强制执行期权的机制。传统上,大宗商品被认为是最具风险的投资形式。你可以以 20:1 的杠杆交易,并且如果市场走向相反方向,你只有 5%的保证金要求!要么投入更多资金,要么全部损失。

至少就商品而言,如果生产者未能交付其小麦、大豆或石油的合同,交易所将承担责任。期权将需要通过托管(交易所持有写有期权的加密货币)或其他机制强制执行。购买针对其他人本地钱包中持有的以太币的期权将具有所谓的对手方风险,即市场朝相反方向走时,其他一方无法达到预期的风险。

其他合同,比如期货和期货协议,也存在交易对手风险,可能未来,与其依赖 Tether 或 bit USD 来处理我们的法币对冲,我们会有受监管的交易所,其中有加密货币或现金托管准备支付,如果事情进展不如人意。

为什么需要受监管的交易所?

宇宙趋向于最大的讽刺——人们想要宣称d 操烂正规d 并摆脱主权货币,但多数人同意政府有合法权益来保护人们免受欺诈和暴力。

加密货币的无信任性质在交易点失败。如果你想将一种加密货币兑换为另一种,这笔交易经常需要你信任交易所。同样,如果你希望另一方执行一项可能让他们损失金钱的交易,那么另一方要么需要你熟悉他们,这样你就可以在法庭上寻求补救,要么法律需要交易所承担支付索赔的责任。

最有可能的结果是,在美国,证券交易委员会或商品期货交易委员会将开始批准交易所,并且交易所将有一定的流动性要求。这将使无银行公司成为一个较不太风险的选择。

无银行账户,无法结成公司?

我们已经确立了一个没有银行账户的公司是可能的(而且也是合法的——在许多司法管辖区没有具体要求法律实体必须拥有银行账户)。但是没有法律结构的组织,或者拥有高度非传统的法律结构又该如何?

任何考虑投资于没有法律实体的组织或资产的人都应该非常谨慎,因为假设是你的个人资产处于危险之中。一般来说,人们使用实体来保护他们的个人资产并获得某种组织或税收优惠。

没有实体,组织可能没有有限责任,法律可能选择将所有者视为合伙人。就责任而言,没有实体的合伙关系可能是你能要求的最糟糕的对待方式。这在普通法司法管辖区(拥有有限责任公司、合伙有限公司、公司、信托、基金会和其他形式)和民法司法管辖区(拥有类似形式,如卢森堡的 SARL,德国的 GmbH 和法国的 SA 等)都成立。

根据美国法律,合伙人的成员可对合伙关系的违法行为承担连带和有分别责任。参与加密实体的人,即使只是一点点,也没有公司或其他实体可以承受损失并陷入困境,如果其他人对它提出索赔。

有限责任就是这样的——你的责任仅限于你的投资,组织通常区分被动参与实体的人(有限合伙人或股东)和积极参与的人(普通合伙人或官员)。

有限责任不会保护组织成员免受刑事责任的追究。如果一家公司的高管对股东或公众实施欺诈行为,有限责任也不能保护他们。

需要极度谨慎地考虑任何加密项目的运作是否合法,到目前为止,监管行动主要关注的是欺诈性筹资活动,而不是投资者参与一家欺诈公众的组织。这并不意味着投资者是安全的。

考虑是否能确定管理团队的身份(例如,你是否至少能查看某人的领英资料并确认他们的存在?),以及实体是否可辨认(你能找到公司声称注册的司法管辖区吗,以便我可以核实其是否真实存在?)。

DAO

去中心化自治组织(DAO)是一种试图建立的非银行实体,尽管没有组成公司。它组织为瑞士 SARL,筹集了大约 1150 万以太币。DAO 应该是一个基于智能合约运行的基金,并且将向以生产性方式使用资金的实体提供贷款。

DAO 的理念是投资者将对所有决策进行投票,并且完全使用智能合约进行治理,以造福投资者,这样可以消除任何董事或经理可能存在的不正当激励。所有决策都将符合投资者的利益。

DAO 的一个智能合约中的一系列漏洞使恶意黑客窃取了价值 5000 万美元的以太币,相当于 DAO 资金的三分之一。

DAO 在 2016 年底被主要交易所下市,这也就是它的结束。为了取回资金,以太坊区块链经历了一次备受争议的硬分叉。

以太坊社区的一派人士反对对 DAO 的资金进行退款,声称硬分叉违反了不可变性原则和“法律即代码”的概念,即用户应该遵守的原则。这导致了以太坊经典的诞生。

下市约一年后,美国证券交易委员会表示,筹资行为很可能违反了美国证券法,尽管它拒绝对 DAO 采取行动。没有人受到刑事处罚。

这很可能是专业管理人员被移除出组织运营流程的第一个实例。消除企业董事会和董事的中间层,并允许利益相关者直接发言似乎是个好主意,至少在表面上是这样的。区块链提供了各种共识机制,如股权证明和委托股权证明(在上一章中更详细地讨论),这些机制非常适合解决这类问题,而且智能合约提供了无限的可能性。

去中心化组织

通过智能合约来管理一个组织的可能性仍然存在。该组织很可能仍需要一个或多个董事来执行用户的指示,并承担运营组织的职责。DAO 声称零员工,这在某种程度上可能是真的。考虑到它实际上已经消失了,现在确实是零。

要使一个去中心化资产组织合法,一个好的起点是让它拥有一个法律实体,正如先前建议的那样——为投资者提供有限责任。为了筹集资金,它最好承认自己是一个证券发行,而不是声称自己是一个实用令牌。然后,该发行需要向适当的监管机构注册为证券,或者申请豁免。

像 DAO 这样的发行的许多法律问题也许可以通过遵守形式来避免——一个代币作为证券并没有固有的问题,除了要开始,我们可能应该承认,大多数人在投机性购买的代币实际上是证券。

在美国进行 506© 规则下的发行允许在认可投资者之间进行无限筹款,并且允许一般征求意见——你可以宣传你的发行。如果你想在除认可投资者之外的投资者中筹集资金,你可以通过另一种豁免方式,即 Reg A+,尽管存在某些限制和大量的成本。

用户在公司治理上进行投票的核心概念是一个好主意。像 DAO 这样的组织形成法律实体只是为了与现实生活兼容,这表明了加密社区某些成员的巨大傲慢。

公司存在是为了股东的利益。在实践中,层层管理和普遍的寻租使组织失去了大量的生产力。然而,认为消除组织中的人就能解决问题的想法基本上是错误的。

算法是由人编写的。智能合约是由人编写的。的确,一个零员工的组织没有工资支出,但是如果它被 5000 万美元的失窃费用所取代,很难说这是一个进步。

不过,一个真正由利益相关者管理的组织的基本概念,在这种情况下,每一笔交易都经过那些资本应该被增长和保护的人的审查,这可能在某些情况下确实有效。关于流行智慧的大量著作平均起来确实很好。

就像主动管理的共同基金在扣除所有费用后往往表现不佳一样,投资于特定资产的基金的专业经理可能无法赚取自己的工资。一家加密房地产基金,其投资者主要是经验丰富的房地产投资者,他们以前曾参与过联合交易等,可能会产生良好的结果。

在这种情况下,区块链的价值在于利益相关者可以通过运行专门的软件或点击网页界面,以一种快速、一致、可验证的方式参与董事选举或自己运行整个组织。

将公司放入区块链

我们已经讨论了区块链作为利益相关者更好控制企业治理的一种机制。股东能控制什么?

像本杰明·格雷厄姆这样的人喜欢接管表现不佳的公司,并迫使它们支付股息。这是股东激活的一个例子。公司的存在是为了你的利益 - 如果它对你没有效果,让它为你工作。

运行大额现金盈余?让它支付现金股息。

高管薪酬失控?削减薪酬,重新谈判并解雇,依法允许。

你的公司是一家 Radio Shack 或一家 Blockbuster,明显缺乏竞争力?清算它。将它转换为以太币。

拥有激活股东的公司往往表现比没有这些股东的公司更出色。如果通用电气公司拥有对公司财务有良好透明度的激活股东,那么首席执行官就不会有机会让一架额外的专机跟随他的私人飞机以防他的私人飞机出故障(是的,很严肃)。

机构惯性和资本的缓慢消亡在这样一个环境中似乎不太可能,在这个环境中,股东有选择随时将实体从生命支持中脱离的选项。

消除中间人

普遍认为股东激活会提高回报率,也有一些证据支持这一点 - 但是如果你有一个非常技术性的商业模式,不指望你的投资者能理解呢?

假设你的业务涉及抵押支持证券、不良债务、互换交易或其他权宜之计?其中一些涉及到非常复杂的金融模型,有真正的风险是股东(或代币持有者)不会理解。在这样一个迅速、残酷的环境中会是怎样的情况?利益相关者会过早地终止实体吗?

幸运的是,代币不一定是股份。没有任何技术障碍会阻止这些代币成为其他证券。

代币可以是 revshare(一种债务形式,代表实体收入的一部分,直到偿还本金的多倍),票据、债券或其他具有利息的工具。利息可以基于法定价格或以太或其他普遍可替代的加密货币的固定利率支付。

甚至可以代表某项特定资产的收入或利润的一部分,代表着基于加密货币组合的未来衍生品的回报,硬资产组合、租金或特许权。在撰写时,一家名为Swarmsales的公司正在准备创建一个资产,从数千个软件销售单位的销售收入中获取一部分收益,这些销售业绩来自一个大型且不断增长的去中心化自由销售团队。预期使用这种工具支付销售专业人员将为他们提供一个新的收入来源,取代他们的基本薪水,并提供超出雇佣期限的收入来源。Swarmsales 期望能够利用这种方法打造全球最大的 B2B 销售团队。

区块链让这成为了可能。原本需要证券转让代理、无数次会议以及非常专业昂贵的员工的集资,如今可以在互联网上通过少量的技术和法律工作以及在华尔街可能荒谬的营销预算下完成。

提供资金

有一种看法认为首次代币发行ICO),以及越来越多的证券代币发行STO),是一种简单、低成本的筹款方式。对于合适的团队可能是真的,但预算已大幅增长。一个名为Financecoin的项目直接从 BitcoinTalk 上的 DogeCoin 的 README 文件中复制粘贴,成功筹集了 400 万美元。作者不清楚他们用这笔资金做了什么有用的事情,这再次引出了该领域的另一个问题。

那些日子已经过去了,在这个竞争日益激烈和受到监管的领域中,进行 ICO 或 STO 的成本已经广泛认可为 20 万到 50 万美元之间。不过,好项目可能本来也不会有资金筹集的问题。

非常多的代币销售用于支持非常时尚的科技项目,其中一些项目同样适合于传统募资。要进行首次公开发行IPO)或经 reg A+ 公开募股,离不开投资银行或证券公司的帮助,而这些公司主要涉趋向科技和医疗保健。可以断言区块链并没有改善对于具有强大团队、良好概念和前期创业经验的项目这方面的资金获取。

当然,对于投资银行来说,DAO(去中心化自治组织)很大程度上不感兴趣;这些仍然仅限于进行 ICO 或 STO 的分布式团队的范围。

一些具有社会目的的项目通过传统渠道成功筹集资金,例如 Lemonade,作为纽约 B Corp 组织的非传统保险公司,去年完成了一次非常成功的 C 轮融资。专门公司似乎是主流风险资本公司(比如 Andreessen Horowitz 和 Founders Fund)的新宠。

这似乎也适用于区块链——受益公司和慈善机构同样需要现金,但可能不适合进行多轮筹款和最终退出,这是风险投资所要求的。2017 年,Fidelity Charitable 收取了价值 2200 万美元的比特币和其他加密货币,预计慈善捐款的这一部分将继续增长。

社会目的 - 区块链作为平衡者

作为筹集资本的手段,区块链有可能改善环境影响和长期存在的贫富差距。一家名为非洲棕榈公司的澳大利亚公司正在努力推出一种加密货币,每单位以一吨可持续来源的棕榈油作为支撑。

当本书出版时,欧盟正准备禁止进口印度尼西亚和马来西亚的棕榈油——目前供应的 85%。种植棕榈油的方式造成了大规模的栖息地破坏。相反,这项 STO 旨在购买已经种植棕榈树的四百万公顷土地,有望在四个西非国家大规模减少失业率。

海地孤儿院创始人领导的另一个项目有可能改善税收征收并为大量弱势群体提供物质安全保障。加勒比加密委员会是一个旨在创建一种由某种加密实体使用的硬币的项目;政府将允许形成一个加密公司,以大幅降低税率来换取该实体拥有公开财务报表。将该业务的交易公开记录在区块链上将使公司能够创建可验证的资产负债表和损益表。受 15%税率约束的实体将优于名义上有 40%税率的实体(在实践中不支付任何税款)。

这个概念还为生活在地震频发的海地临时住房中的人们提供了物质安全保障,在那里银行很昂贵,现金被存放在帐篷和房屋中——使居住者面临被抢劫的危险。另一种选择?在您的智能手机上的短信钱包。通过网关,您手机上的一个程序可以发送和接收文本消息,可以为离线钱包记账,甚至没有移动数据也可以。

让无银行账户者入银行系统

缺乏融资和银行服务的获取使人们不得不使用高利贷。发薪日贷款承诺提供资金解决迫切需要关注的问题——被扣押的车辆,释放出狱的保释金,即将被银行取消的抵押贷款。

对借款人和放款人来说,贷款成本很高——据说有 25%的本金损失到期违约。然后,对这些违约贷款的收回权被出售给了收款机构,这些机构享有恶名昭著的恶劣和滥用行为。

按时偿还的贷款同样也不受到公平或合理对待的待遇。利率范围从 50%到 3000%以上年化,一些放贷人把每笔还款都视为再融资并写入新贷款,让他们再次收取最高利率。

据说有些人完全没有银行账户——除了贷款之外,银行的部分准备金模型为贷款人提供了一种避免对一些服务收费的选择。因为之前透支、地理隔离或成本高等原因没有支票账户的人被切断了这个系统的联系,通常不得不使用支票兑现服务和预付借记卡。这是另一种不便宜的产品,服务费率在 1%到 4%之间——如果一个工人被迫以这种方式兑现工资,这是一笔可观的费用。对于最贫困的人来说,尽管同样的人可能反对税收,但在所有抵免之后,支付支票兑现费用比支付所得税更不寻常。

一些公司已经开始使用替代传统银行业务的方式,不管是好是坏。现在,令人遗憾的是,企业向员工提供预付借记卡作为银行业务的便利替代方案已经不是不寻常的事情了,尽管其服务更差,成本却大大增加。

然而,另一种选择是各种电子招标。DHL 现在用 Safaricom、M-PESA 支付其肯尼亚承包商,这是一种与肯尼亚先令挂钩的手机钱包。对于那些最近的银行可能在 50 或 60 英里之外的人来说,这代表着一个巨大的进步。

这比拥有加密货币的安全性更低——加密货币的属性,特别是去中心化,确保没有一个中央机构能够轻易地夺取或撤销资金的所有权。这在本质上只能通过应用程序使用的银行账户上并不适用。

同样,加密货币的一个很大的优势是现金不受像资产没收这样的幽灵所困扰,法律执法机构可能会在所谓的rem 程序中没收财产,在此程序中,财产的所有权归财产所有者证明。区块链不仅提供了所有权可以被证明的手段,还提供了财产的产权链——在大多数情况下,可以追溯到资产创建的日期。

丝绸之路有限责任公司——隐私与道德

新兴技术的一个奇怪的矛盾是,它同时被赞扬和谴责。好坏的可能性被考虑和衡量。

可能我们对道德主义有些偏向太多了——几乎每个对区块链感兴趣的人都被告知它只用于毒品。这有一定道理:许多人最初听说比特币是在暗网市场上使用的,比如丝绸之路,而这种比特币的使用可以说是加密货币流行的原因。然后同样的人可能会惊讶地发现,事实上,你已经用比特币领到了工资有六七个月的时间了。

每个狂热者都必须真诚地考虑其不足之处——比如,在比特币中,隐私仍然是一个大问题。截至本文撰写时,这似乎很不可能改变。拿出一个能为透明度做出如此多努力的想法——比如,一个加密公司,其交易,或者至少其资产负债表,都是公开的,供所有人查看。这个想法在概念上是合理的,并且它将改善税收的收集和合规性问题。

之前没有记录的员工可能享受社会保障积分。可能会实现不同种族和民族群体之间的工资平等。用于洗钱的组织将受到更严格的监管。财务报表欺诈将容易被发现。保险费率将会大幅下降——或者至少我的差错和遗漏保险会变得更便宜。

所有这些听起来都很不错,直到你考虑到每个人都干涉到其他人生活的明显不足之处,人们希望建立和传播任何技术,不仅仅是区块链的人,停下来仔细考虑隐私的价值。

再举一个例子:电动智能表能够提高公共事业公司的效率。它消除了大量的人力劳动。而不是每个房子定期派人来读表,表定期传输用电数据。从理论上讲,这对消费者也是有好处的:把冰箱拔掉插座 20 分钟,看看它用了多少电。不那么直接地(也许是出于天真),我们还会假设,公用事业公司的节约会以更低的电费形式传递给消费者。

那么,哪里是问题呢?这些最不复杂的表能够识别到,比如,微波炉的使用。举个例子,突然功率使用量提高了大约 1000 瓦,持续一分钟。假设你发现某个家庭在斋月期间每天日落前使用了 1000 瓦,你很可能识别出了一个遵循古老斋戒传统的穆斯林家庭。如果你发现从周五晚上到周六晚上根本没有用电,也许你已经识别出了一个虔诚的正统犹太人。

无论当局看起来多么仁慈,信息都有粘性,对有不良意图的人极具威慑力。考虑一下,虽然在荷兰,大屠杀特别严重,但只在阿尔巴尼亚杀死了一个家庭。前者国家擅长保留记录。后者则相反。

追踪一切

区块链作为解决社会问题的解决方案具有潜力。从防止血钻进入流通到保证最低收入,都可以通过区块链实现。任何工具都有被滥用的潜力,这也不例外。

考虑销售——在每颗钻石上放置一个微小的芯片。它有一个带有可撤销私钥的小芯片,类似于信用卡上的 EMV 芯片。理论上,这可以用来确保你戒指上的每颗钻石都不是所谓的冲突钻石,即用于资助战争的钻石之一。

还可能会导致其他人无法进入市场。通过诸如美国宝石学院(GIA)之类的组织认证宝石的珠宝商现在必须签署一份声明,声明他们不知情地出售血钻,并提交与反洗钱法规相关的个人信息。

不愿意遵守这一方案的钻石供应商在很大程度上并不需要这样做,代价是被淘汰出局——专门销售未经记录的钻石意味着提供较低质量产品的业主。无论代价多大,企业都会竭尽全力展现自己的合法性,即使是最精明的消费者也不太可能对业主的隐私过多在意。

通过零知识证明打败一些隐私问题

尊重人类的局限性,无论是知识还是道德品质,都比那种挥手一切都会好起来的态度更加道德、更加强大。承认,尽管有些人会滥用匿名性,但现金和物物交换已经存在了数千年,没有任何一种中央机构对其进行监管,人们往往有合法的隐私甚至匿名性要求。

零知识密码系统可能在某些使用情况下提供解决方案——诸如 Zcash 和 Monero 等加密货币更像现金。比特币和(目前的)以太坊并不提供批评者所认为的匿名性和隐私性。

区块链本质上具有许多对于寻求隐私和匿名性的人来说非常理想的特性,其中分散化是最重要的特性之一。更广泛地说,在区块链之外,作者怀疑用户是否愿意为确保短暂性、暂时性、甚至可被遗忘性的技术支付一些额外费用。

我们把最私密的个人生活细节托付给了由可犯错的人类设计的机制,尽管不断发生数据泄露和偶发事件,公众仍然大多信任诸如 Facebook 聊天和始终开启的麦克风等设备。然而,无论区块链的狂热传道者看起来多么狂热,对于那些拥有集中式物联网和移动设备的公司的信任依然是最显著的傲慢。

零知识证明(和零知识论证)允许网络验证某些计算(如代币所有权)而不了解任何关于它的信息。除了我们使用区块链的特性(区块链是一致的、不可改变的和去中心化的)之外,零知识的具体实现也可以是可否认的,并且避免记录可能危及用户隐私的信息在区块链上。

揭开零知识证明的概念

从概念上讲,零知识证明类似于随机响应研究。研究人员可以理解地担心,人们是否会诚实地回答有关禁忌行为的问题——比如吸毒或与性工作者的交往。

为了消除偏见,统计学家提出了一种方法,通过在个体回答中引入随机性,同时保持整体结果的含义。想象一下,你正在试图通过采访妇女来确定堕胎的患病率,在一个堕胎是非法的地区。让受访者抛一枚硬币。如果是正面,诚实回答问题。如果是反面,就说是。

研究人员不需要知道硬币抛出的结果,或者每个人的真实回答,他们只需要知道,通过足够的样本量,将超过 50%的边际翻倍可以得到实际的实践患病率。这种方法既保护了个体受访者的隐私,又不损害数据质量。

零知识证明(和论证)是非常技术性的,其细枝末节超出了本出版物的范围,但它们在概念上类似于我们正在讨论的内容。根据具体的实现方式,零知识可能允许用户在不让网络上的其他用户知道钱包中的内容的情况下花费其钱包的内容。这是加密货币可以真正类似于现金的一个方面:除了强盗抢走你的钱包之外,没有其他人知道你拥有什么,直到你公开它。这种方法成功地解决了比特币和以太坊等加密货币中的最大问题之一。

摘要:

区块链是一项具有变革性的技术,其影响类似于互联网、疫苗接种或动力飞行:其社会影响广泛、微妙,并且在某些方面可能是有害的。它有可能进一步破坏隐私,极大地改善企业治理,或者使数十亿人摆脱贫困。这项技术的具体应用将定义它作为一种塑造世界的工具。

在下一章中,我们将讨论一些区块链的应用,从其中最基本的开始,即加密货币钱包。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 本书适合对象
  • 本书涵盖内容
  • 为了最大限度地利用本书的内容
  • 下载示例代码文件
  • 使用的约定
  • 第一章:区块链 101
  • 处理金融交易
  • 分类账
  • 无信任系统的概念
  • 引入区块链
  • 区块链的一般要素
  • 对等网络
  • 区块
  • 区块头
  • 地址
  • 钱包
  • 交易
  • 节点
  • 区块链解决了什么问题?
  • 区块链的类型
  • 公开区块链
  • 半私有区块链
  • 私有区块链
  • 联盟区块链
  • 拜占庭将军问题
  • 共识
  • 区块链简介
  • 益处
  • 银行记录
  • 医疗记录
  • 政府记录
  • 创意和版权记录
  • 大学学位记录
  • 挑战
  • 复杂性
  • 网络可扩展性
  • 速度和成本
  • 双重支付
  • 总结
  • 第二章:区块链的组成部分和结构
  • 区块
  • 区块之间的链
  • 哈希和签名
  • 数字签名
  • 数字密钥是什么?
  • 示例区块数据
  • 示例以太坊区块
  • 比特币区块
  • 全局状态
  • 区块时间和区块大小
  • 区块链矿工
  • 区块链验证者
  • 智能合约
  • 区块链速度
  • 如何计算区块链吞吐量
  • 与传统网络的比较
  • 摘要
  • 第三章:分散化与分布式系统
  • 分布式系统
  • 弹性
  • 容错能力和故障隔离
  • 一致性和协调
  • 备份
  • 一致性
  • 对等系统
  • 分散式系统
  • 原则上的去中心化系统
  • 开放式访问
  • 非层次化
  • 生态系统多样性
  • 透明度
  • 弊端
  • 速度
  • 抗审查性
  • 混沌和非确定性
  • 总结
  • 第四章:区块链背后的密码学和机制
  • 安全原则
  • 历史视角 - 古典密码学
  • 密码学类型
  • 对称密码学
  • 非对称(公钥)密码学
  • 签名
  • 哈希化
  • 雪崩效应
  • 碰撞
  • 哈希一个块
  • Hashing 在 PoW 之外
  • 总结
  • 第五章:比特币
  • 比特币的历史
  • 为何比特币会波动
  • 密钥和地址
  • 货币单位
  • 虚荣地址
  • 基于 58 的检查编码
  • 交易
  • 类型
  • 支付至公钥哈希
  • 支付至脚本哈希
  • 区块
  • 创世区块
  • 比特币网络
  • 节点类型
  • 完整节点
  • 轻量级节点
  • 其他节点
  • 网络发现
  • 查找节点
  • DNS 种子
  • 静态 IP
  • 钱包
  • 类型
  • 确定性钱包
  • 确定性钱包
  • HD 钱包
  • 非确定性钱包
  • 摘要
  • 第六章:山寨币
  • 介绍山寨币
  • 代币
  • 以太坊
  • Omni Layer
  • NEO
  • Waves
  • Counterparty
  • 替代货币
  • 货币替代品
  • 共识替代方案
  • 莱特币
  • 以太币
  • 瑞波币
  • 比特币现金
  • 获得加密货币
  • 加密货币的挖矿
  • 比特币挖矿
  • 挖矿难度
  • 挖矿池
  • 另类币挖掘
  • 加密货币交易所
  • 加密货币钱包
  • 摘要
  • 第七章:实现共识
  • 实用拜占庭容错算法
  • 拜占庭故障
  • PBFT 的工作原理
  • 工作证明
  • 比特币中的工作量证明问题的原理
  • 股权证明
  • 无所不在的利益攻击
  • 变种
  • 委托型股权证明(Delegated Proof of Stake)
  • Tendermint 共识
  • 权威证明
  • 建立权威
  • 已过时的证据
  • 摘要
  • 参考文献
  • 第八章:先进的区块链概念
  • 区块链与银行
  • 未加银行账户 - 走向纯加密货币
  • 修正固定汇率
  • 购买期权
  • 为什么需要受监管的交易所?
  • 无银行账户,无法结成公司?
  • DAO
  • 去中心化组织
  • 将公司放入区块链
  • 消除中间人
  • 提供资金
  • 社会目的 - 区块链作为平衡者
  • 让无银行账户者入银行系统
  • 丝绸之路有限责任公司——隐私与道德
  • 追踪一切
  • 通过零知识证明打败一些隐私问题
  • 揭开零知识证明的概念
  • 摘要:
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档