区块链快速参考(一)腾讯云开发者社区

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

代码块设置如下:

difficulty=difficulty_1_target/current_targetdifficulty_1_target=0x00000000FFFF0000000000000000000000000000000000000000000000000000任何命令行的输入或输出都被写成了以下形式:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

账户

交易额

新余额

旧余额

操作

账号-9234222

$2,000

$5,000

$7,000

向账号-12345678发送资金

账号-12345678

0

从账号-9234222接收资金

账号-3456789

-$200

$50

$250

向账号-68890234发送资金

账号-68890234

$200

$800

$600

从账号-3456789接收资金

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

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

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

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

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

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

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

原始插图作者为DavidGthberg,瑞典,已释放至公共领域

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

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

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

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

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

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

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

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

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

-----BEGINPUBLICKEY-----MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgH+CYOAgKsHTrMlsaZ32Gpdfo4pwJRfHu5d+KoOgbmYb0C2y1PiHNGEyXgd0a8iO1KWvzwRUMkPJr7DbVBnfl1YfucNpOjAsUWT1pq+OVQ599zecpnUpyaLyg/aW9ibjWAGiRDVXemj0UgMUVNHmi+OEuHVQccy5eYVGzz5RYaovAgMBAAE=-----ENDPUBLICKEY-----有了这把密钥,他将保持私有另一把密钥,其外观如下:

-----BEGINPUBLICKEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHWwgTfI5Tic41YjUZqTmiKt+Rs5OMKIEdHPTyM8FZNaOBWIosFQbYk266V+R7k9odTnwCfi370GOt0k5MdTQilb9hbK/lYiavIltgBd+1Em7xm7UihwO4th5APcg2vG4sppK41b1a9/I5E6P/jpQ320vFBMuEtcnBoWawWcbXJwIDAQAB-----ENDPUBLICKEY-----这是她的私钥:

EltHy0s1W1mZi4+Ypccur94pDRHw6GHYnwC+cDgQwa9xB3EggNGHfWBM8mCIOUV3iT1uIzD5dHJwSqLFQOPaHJCSp2/WTSXmWLohm5EAyMOwKv7M4gP3D/914dOBdpZyrsc6+aD/hVqRZfOQq6/6ctP5/3gX7GHrgqbrq/L7FFc=除了娜迪亚以外,没有人能读到这个。她使用相同的算法,输入这些数据和她的私钥,得到以下消息:

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

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

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

这是比特币区块的快照:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

去中心化系统由于缺乏中央权威机构进行审查而往往更难以审查。对于言论自由和信息自由的纯粹主义者来说,这一点根本不被视为缺点。然而,一些信息(儿童色情、仇恨言论、制造炸弹的指令)被视为危险或不道德的公开传播,因此应该被审查。作为一种技术,一旦包含该信息的区块完成,写入区块链的任何内容都是不可变的。例如,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发行版中都有的GNUmd5sum实用程序,以下是三个示例:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

自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个字母数字字符创建的。

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

数值

字符

1

2

3

4

5

6

7

8

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

-

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

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

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

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

OP_DUPOP_HASH160[PubkeyHash]OP_EQUALVERIFYOP_CHECKSIG签名脚本如下所示:

[Sig][PubKey]这些字符串被连接在一起以执行。

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

OP_HASH160[redeemScriptHash]OP_EQUAL签名看起来像这样:

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

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

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

staticCBlockCreateGenesisBlock(uint32_tnTime,uint32_tnNonce,uint32_tnBits,int32_tnVersion,constCAmount&genesisReward){constchar*pszTimestamp="TheTimes03/Jan/2009Chancelloronbrinkofsecondbailoutforbanks";constCScriptgenesisOutputScript=CScript()<

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

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

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

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

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

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

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

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

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

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

vSeeds.push_back(CDNSSeedData("bitcoin.sipa.be","seed.bitcoin.sipa.be"));//PieterWuillevSeeds.push_back(CDNSSeedData("bluematt.me","dnsseed.bluematt.me"));//MattCorallovSeeds.push_back(CDNSSeedData("dashjr.org","dnsseed.bitcoin.dashjr.org"));//LukeDashjrvSeeds.push_back(CDNSSeedData("bitcoinstats.com","seed.bitcoinstats.com"));//ChristianDeckervSeeds.push_back(CDNSSeedData("xf2.org","bitseed.xf2.org"));//JeffGarzikvSeeds.push_back(CDNSSeedData("bitcoin.jonasschnelli.ch","seed.bitcoin.jonasschnelli.ch"));//JonasSchnelli上述种子目前正在比特币核心中使用,用于连接到种子客户端,以建立与第一个节点的连接。

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

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

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

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

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

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

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

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

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

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

本章将涉及的主题如下:

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

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

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

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

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

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

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

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

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

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

Counterparty上构建的一些代币包括Triggers、PepeCash、Databits等。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$Bitcoin-cligetblockhash0000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f$Bitcoin-cligetblockheader000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f{..."height":0,..."bits":"1d00ffff","difficulty":1,...}正如你所看到的,创世区块的难度为1,比特币的目标哈希值为1d00ffff。以下是比特币源代码中的此重新定位难度算法的代码:

//Gobackbywhatwewanttobe14daysworthofblocksintnHeightFirst=pindexLast->nHeight-(params.DifficultyAdjustmentInterval()-1);assert(nHeightFirst>=0);constCBlockIndex*pindexFirst=pindexLast->GetAncestor(nHeightFirst);assert(pindexFirst);以下是比特币源代码中相同pow.ccp文件中的限制调整步骤:

//Limitadjustmentstepint64_tnActualTimespan=pindexLast->GetBlockTime()-nFirstBlockTime;if(nActualTimespanparams.nPowTargetTimespan*4)nActualTimespan=params.nPowTargetTimespan*4;//Retargetconstarith_uint256bnPowLimit=UintToArith256(params.powLimit);arith_uint256bnNew;bnNew.SetCompact(pindexLast->nBits);bnNew*=nActualTimespan;bnNew/=params.nPowTargetTimespan;if(bnNew>bnPowLimit)bnNew=bnPowLimit;在两周的单个周期内,重新定位调整应小于4倍。如果难度调整超过4倍,则不会按最大因子调整。进一步的调整应在下一个周期的两周内完成。因此,非常大和突然的哈希率变化需要多个两周周期来在难度方面平衡。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PoW具有以下特点:

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

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

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

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

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

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

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

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

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

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

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

看看以下示例:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基本方法很简单:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

THE END
1.404,您访问的页面已经不存在!您访问的页面不见了!3秒后您将去搜狐首页设置首页 - 搜狗输入法 - 支付中心 - 搜狐招聘 - 广告服务 - 客服中心 - 联系方式 - 保护隐私权 - About SOHU - 公司介绍 Copyright ? 2016 Sohu.com Inc. All Rights Reserved. 搜狐公司 版权所有 违法和不良信息举报电话:86-10-58511234 举报邮箱:jubao@https://www.sohu.com/a/830304103_122130608
2.[手游项目4]大小单双,开奖算法[手游项目4]大小单双,开奖算法 //投注类型定义 enumenBetEnum { //大 eTenThousandBig =1,// 万位 eThousandBig =2,// 千位 eHundredBig =3,// 百位 eTenBig =4,// 十位 eOneBig =5,// 个位 //小 eTenThousandSmall =6,// 万位https://blog.csdn.net/q277055799/article/details/100669840
3.大小单双app官网版下载大小单双appAPP,现在下载,新用户还送新人礼包。 步骤1:访问 《大小单双app》官网| 登录入口 首先,打开您的浏览器,输入《大小单双app》的官方网址(http://www.dyhjw.com/wardNV/vwk.html)进入官网或者打开软件登录界面。 可以通过浏览器 步骤2:点击注册按钮 一旦进入《大小单双app》官网,您会在页面上找到http://www.dyhjw.com/wardNV/vwk.html
4.请问一下,在网络上有一款叫500彩票软的,五分快三,押单双,大小玩法请问一下,在网络上有一款叫500彩票软的,五分快三,押单双,大小玩法,是不是正规平台 报告编号:No.20200412*** 【问题分析】您好,您所提出的是关于 【解决方案】***【具体操作】*** 完整报告 关于请问一下,在网络上有一款叫500彩票软的,五分快三,押单双,大小玩法,是不是正规平台的律师回答 成章律师https://m.66law.cn/question/28429724.aspx
5.幸运彩投注技巧讲经猜大小押单双先选比例后定位今日,本大师就用一种先选比例后定位的方法,向彩民朋友推荐下期猜大小和猜单双的号码。 先说猜单双,从比例上来看,近期开出的号码的单双比例大多集中在2/5、5/2、3/4、4/3四个比例中,在11期前曾开出过一期奇偶比例为1∶6的情况。所以在选择比例上还是应该以上面所提到的4种比例为主。本大师判断下期的奇https://sports.sina.com.cn/z/2004-07-20/12541009706.shtml
6.重磅!计算机二级C语言考试备考攻略和考试资料下载每章知识点学习后,练习教材提供习题。做题时不要着急看答案,先自己做,再结合提供的答案和解析,分析自己对知识点的掌握是否牢固。高手课专注帮你学习,高手课承包了你大学时光职业生涯所需要的学习资料、考试资料、课程教程、培训网课、素材模板、软件下载、电子书等等。卫星公主号“超乎想象”领取全套考试资料。 https://www.jianshu.com/p/4014994dabb3
7.《Phigros》系统设置介绍Phigros音乐音量用来控制游玩以及歌曲预览时的音乐大小。 界面音效用来控制各类按钮的声音(比如进入设置,开始游戏,调整难度这样的UI按钮)。 打击音效音量用来控制打击note时的音效大小(需要勾选“开启打击音效”选项才有作用)。 多押辅助: 多押辅助可以有效分辨多押(多押是指同时有多个note需要同时击打)开启后会在这些note(https://a.9game.cn/phigros/6733810.html
8.七星彩玩法技巧之猜单双押大小电脑体育彩票“七星彩”的押大小、猜单双、全家和等附加玩法的推出,其中奖难度之低着实让彩民欣喜,然而,随着两期的开奖结果,几十元、几百元的奖金让湖南的彩民朋友由兴奋变成了失望,我们发现,彩民朋友对附加玩法时缺少办法,没有考虑到投入与产出的比例,一味采取包号的方式进行,最终是中了奖却亏了本。通过研究,我https://www.17500.cn/arts/sdetail-10745864.html
9.不同类型租客的租房需求毕业生上班族双方就以上各项谈好责任和义务后,一定要签署一个书面合同,写清楚双方的约定内容,不能单单口头协议,以免租住后出现纠纷。详情 上班族租房注意事项 1、距离工作地方的距离 当然了,上班租房子肯定是为了考虑生活和工作的便利性。当我们在租房子的时候,也一定要考虑这个距离的问题。太远了,交通不便的话肯定是要不得,太https://www.maigoo.com/goomai/199717.html
10.宝盒子与押宝与宝盒子相配套的是宝毡,就是下注押钱的地方。因为过去赌场里在毡子上下注放钱,所以叫宝毡,一般放在桌子上、案子上或者炕上、地上。宝毡是用白色羊毛擀一块正方形的毡子,正方形毡子的对角线和对角线中心的一个小正方形的四个边用黑色羊毛或牛毛擀成。根据赌博场面的大小和人数的多少,宝毡的大小也各不相同。https://www.meipian.cn/2ge2f59i