dw做的网站怎么发布,墨刀可以做网站原型图吗,虚拟主机免费空间,网站建设人员配备原文#xff1a;zh.annas-archive.org/md5/b5e57485b0609afbfba46ff759c5d264 译者#xff1a;飞龙 协议#xff1a;CC BY-NC-SA 4.0 前言
这是 区块链快速参考#xff0c;一本旨在全方位介绍新手进入区块链世界的书籍。它带你进入令人激动的区块链技术世界#xff0c;旨… 原文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讲解了如何发行首次代币发售或首次代币提供的基础知识。
第二十章创建你自己的货币我们将介绍如何创建基于区块链的加密数字货币。
第二十一章扩展性和其他挑战涵盖了当前区块链技术所面临的困难和限制。
第二十二章区块链的未来我们将从技术、法律和社会等方面探讨行业可能的未来发展。
为了最大限度地利用本书的内容 摆脱炒作真正试图理解区块链的功用和局限性。 查看所提及的项目并看看哪些适用于你的计划。你可能会省下很多工作。 思考去中心化如何可能帮助或阻碍你的目标。
下载示例代码文件
你可以从 www.packtpub.com 的账户下载本书的示例代码文件。如果你在其他地方购买了这本书你可以访问 www.packtpub.com/support 并注册文件将会直接通过邮件发送给你。
你可以按照以下步骤下载代码文件 在 www.packtpub.com 登录或注册。 选择“支持”选项卡。 点击“代码下载 补正”。 在搜索框中输入书名然后按照屏幕上的指示操作。
文件下载完成后请确保使用最新版本的解压软件解压文件夹 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 命令来检查各种选项和命令。”
代码块设置如下
difficulty difficulty_1_target/current_target
difficulty_1_target 0x00000000FFFF0000000000000000000000000000000000000000000000000000任何命令行的输入或输出都被写成了以下形式
COMMANDS:list Print summary of existing accountsnew Create a new accountupdate Update an existing accountimport 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,0000从账号-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?curid24542868
如果你问Merkle 根是什么那就引出了我们下一组关键概念哈希和签名。
哈希和签名
假设你有两个各 50 页长的文本文件。你想知道它们是否相同或不同。你可以使用哈希值来实现这一点。哈希或哈希函数是一种数学过程它将任何输入转换为固定长度的输出。有许多这样的函数最常见的是 SHA-1、SHA-2 和 MD5。例如以下是一个名为MD5的哈希函数的输出输入是两页文本
9a137a78cf0c364e4d94078af1e221be哈希函数的强大之处在于当我在末尾添加一个字符并运行相同的函数时会发生什么
8469c950d50b3394a30df3e0d2d14d74如你所见输出完全不同。如果你想快速证明某些数据在任何方面都没有被改变哈希函数就能胜任。在我们的讨论中哈希函数的重要部分如下 计算机运行速度非常快。 这个函数是单向的。你可以轻松地获得哈希值但实际上你不能使用哈希值来恢复原始数据。 它们可以被递归使用。例如我可以取哈希的哈希例如MD5(8469c950d50b3394a30df3e0d2d14d74)变成了705b003fc9b09ecbeac0b852dfc65377。
哈希的递归性质使我们引入了默克尔树的概念这个概念是以专利命名的。默克尔树是一种数据结构如果你在白板上画出它它往往像一棵树。在树的每一步中根节点包含其子节点数据的哈希值。以下是默克尔树的图示 原始插图作者为 David Göthberg瑞典已释放至公共领域
在区块链中这意味着存在着一个递归的哈希过程。递归哈希是指我们对哈希值进行哈希运算的过程。例如想象一下我们有以下单词及其哈希值。这里我们将使用 MD5 算法因为在网络上很容易找到 MD5 哈希代码所以你可以自己尝试一下
Salad: c2e055acd7ea39b9762acfa672a74136
Fork: b2fcb4ba898f479790076dbd5daa133f
Spoon: 4b8e23084e0f4d55a47102da363ef90c要计算递归哈希或根哈希我们将把这些哈希值相加如下所示
c2e055acd7ea39b9762acfa672a74136b2fcb4ba898f479790076dbd5daa133f4b8e23084e0f4d55a47102da363ef90c然后我们将对该值进行哈希结果如下
189d3992be73a5eceb9c6f7cc1ec66e1这个过程可以一次又一次地发生。最终的哈希可以用来检查树中的任何值是否已更改。这个根哈希是一种数据高效且有效的方式可以确保数据的一致性。
每个区块都包含了所有交易的根哈希。由于哈希的单向性任何人都可以查看这个根哈希并将其与区块中的数据进行比对并知道所有数据是否有效和未更改。这使得任何人都可以快速验证每笔交易是否正确。每个区块链对这种模式都有小的变化使用不同的函数或以稍微不同的方式存储数据但基本概念是一样的。
数字签名
现在我们已经介绍了哈希是时候来介绍一个相关的概念数字签名。数字签名利用哈希的性质不仅证明数据没有改变还提供了谁创建了数据的保证。数字签名利用哈希的概念还添加了一个新的概念数字密钥。
数字密钥是什么
所有常见的数字签名方法都使用所谓的公钥密码学。在公钥密码学中有两把密钥一个公钥和一个私钥。为了创建签名首先对原始数据进行哈希然后使用私钥对该哈希进行加密。加密后的哈希以及其他信息如用于加密的方法都被附加到原始数据中形成签名。
这就是公钥发挥作用的地方。公钥和私钥之间的数学连接允许公钥解密哈希然后可以用哈希来检查数据。因此现在可以检查两件事情谁签署了数据以及被签名的数据是否已被更改。以下是同样的图解表示 由 Engelbert Niehaus 制作用户 Bananenfalter 制作的 SVG 色彩方案 - 使用 Bananenfalter 制作的插图的 SVG 颜色并使用 Inkscape 进行编辑CC BY-SA 3.0https://en.wikiversity.org/w/index.php?curid226250
这种密码学形式对区块链技术至关重要。通过哈希和数字签名区块链能够记录行为代币的移动以及证明是谁发起了这些行为通过数字签名。
让我们举个例子Jeremy 和 Nadia 希望互相安全地发送消息。每个人都公布了一个公钥。Jeremy 的公钥将如下所示使用 1,024 位的 RSA 算法
-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHCYOAgKsHTrMlsaZ32Gpdfo4pw
JRfHu5dKoOgbmYb0C2y1PiHNGEyXgd0a8iO1KWvzwRUMkPJr7DbVBnfl1YfucNp
OjAsUWT1pqOVQ599zecpnUpyaLyg/aW9ibjWAGiRDVXemj0UgMUVNHmiOEuHVQ
ccy5eYVGzz5RYaovAgMBAAE
-----END PUBLIC KEY-----有了这把密钥他将保持私有另一把密钥其外观如下
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgHCYOAgKsHTrMlsaZ32Gpdfo4pwJRfHu5dKoOgbmYb0C2y1PiH
NGEyXgd0a8iO1KWvzwRUMkPJr7DbVBnfl1YfucNpOjAsUWT1pqOVQ599zecpnUp
yaLyg/aW9ibjWAGiRDVXemj0UgMUVNHmiOEuHVQccy5eYVGzz5RYaovAgMBAAEC
gYBR4AQYpk8OOr9bxC6j2avwIegwzXuOSBpvGfMMV3yTvW0AlriYt7tcowSOV1k
YOKGqYdCflXwVTdtVsh//KSNiFtsLih2FRCUj1fEu2zpGzErhFCN2sv1t2wjlk
TRY78prPNa3K2Ld3NJse3gmhodYqRkxFFxlCmOxTzc4wQJBAOQ0PtsKCZwxRsyx
GAtULHWFIhV9o0k/DjLw5rreA8H3lb3tYZ5ErYuhS0HlI7mrPUqzYaltG6QpJQY
YlMgktECQQCPClB1xxoIvccmWGoEvqG07kZ4OBZcBmgCzF6ULQY4JkU4k7LCxG4q
wAeWteaP/3HgS9RDQlHGITAmqhW6z/AkBaB16QzYnzCGxmWAx//g2ONq0fcdw
eybf4/gy2qnC2SlDL6ZmaRPKVUy6Z2rgsjKj2koRB8iCIiA7qM8Jmn0xAkBzi9Vr
DqaNISBabVlW89cUnNX4Dvag59vlRsmv0J8RhHiuN0FT6/FCbvetjZxUUgm6CVmy
ugGVaNQgnvcb2T5pAkEAsSvEW6yq6KaV9NxXn4Ge4b9lQoGlR6xNrvGfoxto79vL
7nR29ZB4yVFo/kMVstU3uQDB0Pnj2fOUmI3MeoHgJg
-----END RSA PRIVATE KEY-----与此同时娜迪亚将采取相同的步骤得到以下两个密钥
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHWwgTfI5Tic41YjUZqTmiKtR
s5OMKIEdHPTyM8FZNaOBWIosFQbYk266VR7k9odTnwCfi370GOt0k5MdTQilb9h
bK/lYiavIltgBd1Em7xm7UihwO4th5APcg2vG4sppK41b1a9/I5E6P/jpQ320vF
BMuEtcnBoWawWcbXJwIDAQAB
-----END PUBLIC KEY-----这是她的私钥
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDHWwgTfI5Tic41YjUZqTmiKtRs5OMKIEdHPTyM8FZNaOBWIos
FQbYk266VR7k9odTnwCfi370GOt0k5MdTQilb9hbK/lYiavIltgBd1Em7xm7Ui
hwO4th5APcg2vG4sppK41b1a9/I5E6P/jpQ320vFBMuEtcnBoWawWcbXJwIDAQAB
AoGBAKz9FCv8qHBbI2H1f0huLQHInEoNftpfh3Jg3ziQqpWj0ub5kqSf9lnWzX3L
qQuHB/zoTvnGzlY1xVlfJex4w6w49Muq2Ggdq23CnSoor8ovgmdUhtikfC6HnXwy
PG6rtoUYRBV3j8vRlSo5PtSRDH4lt2YGhQoXQemwlwr5pRAkEAunxBOj7/sec
3Z998qLWw2wV4p9L/wCCfq5neFndjRfVHfDtVrYKOfVuTO1a8gOal2Tz/QI6YMpJ
exo9OEbleQJBAMtlimh4S95mxGHPVwWvCtmxaFR4RxUpAcYtX3Rko1kbZ4Q3Jd
TYD5JGaVBGDodBCRAJALwBv1J/o/BYIhmZ8CQBdtVlKWCkk8i/npVVIdQB4Y7mYt
Z2QUwRpg4EpNYbE1w3E7OH27G3NT5guKsc4c5gcyptE9rwOwf3Hd/k9N10kCQQCV
YsCjNidS81utEuGxVPy9IqWj1KswiWu6KD0BjK0KmAZD1swCxTBVV6c6iJwsqM4G
FNm68kZowkhYbc0X5KG1AkBp3Rqc46WBbpE5lj7nzhagYz5Cb/SbNLSp5AFh3W5c
sjsmYQXfVtw9YuU6dupFU4ysGgLBpvkf0iU4xtGOFvQJ
-----END RSA PRIVATE KEY-----有了这些密钥杰里米决定给娜迪亚发送一条消息。他使用她的密钥并加密以下消息我爱比特币结果如下所示的数据
EltHy0s1W1mZi4Ypccur94pDRHw6GHYnwCcDgQwa9xB3EggNGHfWBM8mCIOUV3iT1uIzD5dHJwSqLFQOPaHJCSp2/WTSXmWLohm5EAyMOwKv7M4gP3D/914dOBdpZyrsc6aD/hVqRZfOQq6/6ctP5/3gX7GHrgqbrq/L7FFc除了娜迪亚以外没有人能读到这个。她使用相同的算法输入这些数据和她的私钥得到以下消息
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 实用程序以下是三个示例
$ 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 编码中的值和相应的字符
数值字符数值字符数值字符数值字符0112233445566778899A10B11C12D13E14F15G16H17J18K19L20M21N22P23Q24R25S26T27U28V29W30X31Y32Z33a34b35c36d37e38f39g40h41i42j43k44m45n46o47p48q49r50s51t52u53v54w55x56y57z----
交易
这是比特币系统的主要部分。交易不加密因为比特币是一个公开分类账。任何交易都可以在区块链上公开查看使用任何在线区块链浏览器。由于地址是加密的并鼓励对每笔交易使用唯一的地址跟踪用户变得困难。
比特币中的区块由区块链浏览器查看的交易组成每个区块都包含最近发生的交易。每个新区块都位于区块链的顶部。每个区块都有一个高度编号下一个区块的高度比前一个区块高度大一。共识过程通常称为区块链浏览器上的确认。
类型
有各种类型的脚本可用于管理从一个钱包向另一个钱包的价值转移。这里讨论了一些标准类型的交易以清楚地理解地址以及交易之间的区别。
支付至公钥哈希
大多数比特币网络上的交易都是使用这种方法进行的。脚本如下所示
OP_DUP OP_HASH160 [Pubkey Hash] OP_EQUALVERIFY OP_CHECKSIG签名脚本如下所示
[Sig][PubKey]这些字符串被连接在一起以执行。
支付至脚本哈希
支付至脚本哈希P2SH过程用于向脚本哈希发送交易。使用脚本哈希支付的地址必须以 3 开头。脚本如下所示
OP_HASH160 [redeemScriptHash] OP_EQUAL签名看起来像这样
[Sig]...[Sig][redeemScript]与 P2PKH 一样这些字符串也被连接在一起以创建脚本签名。
区块
交易数据记录在文件中这些文件称为区块。区块叠放在彼此之上最近的区块位于顶部。以下表格描述了区块的结构和区块中各元素的大小 比特币网络中的每个区块几乎具有相同的结构并且每个区块都链接到最新的区块。这些是区块的字段 幻数此数字是区块链网络的标识符。其值始终为0xD9B4BEF9。它确认区块的开始并验证数据来自生产网络。 区块大小这表示区块的大小。 区块头头部包含区块的元数据。它包括多个数据项如比特币版本、上一个区块哈希、默克尔根、时间戳、挖矿难度和随机数。 交易计数器它是区块中交易的计数。 交易列表它存储该区块中交易的哈希。
创世区块
创世块是比特币区块链中的第一个块。 创世块的创建标志着比特币的开始。 它是区块链中所有块的共同祖先。 它在比特币客户端软件中静态编码无法更改。 比特币区块链中的每个节点都确认创世块的哈希和结构其创建时间以及其中包含的单个交易。 以下是比特币源代码中编写的静态代码片段描述了使用静态参数pszTimestamp、genesisOutputScript、nTime、nNonce、nBits和nVersion创建创世块的过程。 这是比特币存储库中此代码的片段
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 种子的方式 vSeeds.push_back(CDNSSeedData(bitcoin.sipa.be, seed.bitcoin.sipa.be)); // Pieter WuillevSeeds.push_back(CDNSSeedData(bluematt.me, dnsseed.bluematt.me)); // Matt CorallovSeeds.push_back(CDNSSeedData(dashjr.org, dnsseed.bitcoin.dashjr.org)); // Luke DashjrvSeeds.push_back(CDNSSeedData(bitcoinstats.com, seed.bitcoinstats.com)); // Christian DeckervSeeds.push_back(CDNSSeedData(xf2.org, bitseed.xf2.org)); // Jeff GarzikvSeeds.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 年的 MasterCoinOmni 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 个区块就会改变一次。其他货币有自己的难度或实施了修改版的比特币难度算法。以下是比特币的难度调整公式
difficulty difficulty_1_target/current_target
difficulty_1_target 0x00000000FFFF0000000000000000000000000000000000000000000000000000在这里difficulty_1_target是 SHA256 使用的最大目标这是可能的最高目标也是比特币创世区块挖矿的第一个难度。
比特币中难度调节的原因是由于区块时间保持在大约 10 分钟2,016 个区块需要大约两周的时间。如果挖掘 2,016 个区块需要的时间超过两周则需要降低难度如果挖掘 2,016 个区块需要的时间少于两周则应增加难度。
比特币创世区块的难度以下是区块头
$ Bitcoin-cli getblockhash 0
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f$ Bitcoin-cli getblockheader 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
{...height: 0,...bits: 1d00ffff,difficulty: 1,...
}正如你所看到的创世区块的难度为1比特币的目标哈希值为1d00ffff。以下是比特币源代码中的此重新定位难度算法的代码 // Go back by what we want to be 14 days worth of blocksint nHeightFirst pindexLast-nHeight - (params.DifficultyAdjustmentInterval()-1);assert(nHeightFirst 0);const CBlockIndex* pindexFirst pindexLast-GetAncestor(nHeightFirst);assert(pindexFirst);以下是比特币源代码中相同pow.ccp文件中的限制调整步骤 // Limit adjustment stepint64_t nActualTimespan pindexLast-GetBlockTime() - nFirstBlockTime;if (nActualTimespan params.nPowTargetTimespan/4)nActualTimespan params.nPowTargetTimespan/4;if (nActualTimespan params.nPowTargetTimespan*4)nActualTimespan params.nPowTargetTimespan*4;// Retargetconst 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总部位于香港的加密货币交易所由 iFinexInc.拥有。Bitfinex 上列出了 75 多种币种。 OKEx最大的加密货币交易所之一在其平台上列出了 500 多种币种。成立于 2014 年也以比特币期货交易而闻名其每日交易量巨大。 Kraken最早的比特币交易所之一成立于 2011 年。在 2017 年中期经历了许多安全漏洞但在那之后一直保持稳定。Kraken 向彭博终端提供比特币定价信息。 Cex.io成立于 2013 年的一家知名加密货币交易所。曾以云挖矿服务而闻名。Cex.io 的挖矿池名为 Ghash.io2014 年贡献了超过 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 在超级账本中的工作原理。每个验证节点运行区块链软件并努力维护一致性的计算机都保存区块链的内部状态的一个副本。当节点接收到消息时它使用消息与其内部状态一起对新状态进行计算。然后节点决定如何处理该消息将其视为有效、忽略它或者采取其他行动。一旦节点对新消息做出决定该节点就会与系统中的所有其他节点分享该决定。一致性决定基于所有节点提交的总决定 提交网络上的一个或多个节点提交发送到其他节点的交易。例如如果有十个参与节点其中三个发送消息看起来如下 十台计算机都看到三个交易 这些交易被分发以便每个节点都拥有所有交易的完整副本 这些交易可能在不同的时间到达节点因此顺序可能不一致 排序通过其他节点的投票其中一个验证节点被选为领导者。这个验证的领导者选择交易的顺序并将其发送给其他参与节点。其他验证节点然后将它们已经拥有的交易重新排列成验证领导者设置的顺序。 执行验证节点然后执行新排序的交易。每个节点都独立执行所有更改并将这些更改添加到以前区块的全局状态中。如果无法达成共识交易将被回滚并拒绝。
对每个区块都重复这个过程。PBFT 的优势是非常快并且相对可扩展。缺点是参与者必须是已知的——不是任何人都可以加入网络。
工作证明
区块链中使用的第一种共识算法是比特币的工作证明PoW。工作证明的基本功能是利用某些密码学函数的特性有一些很难解决的数学问题但一旦解决了检查起来就很容易。正如之前所讨论的其中一个问题就是哈希很容易从数据中计算出哈希但从哈希中发现输入数据却非常困难。PoW 最显著地被比特币、莱特币和以太坊使用。
PoW 具有以下特点 相对可预测的解决时间比特币的网络协议预期每个区块解决约需要十分钟。如果网络开始太快地解决工作证明问题网络将自动增加难度。 对计算能力的大幅增加或减少具有抵抗力摩尔定律表明计算机的工作量预计每两年增加一倍。此外由于网络是开放的任何人都可以随时向网络添加大量的计算资源。为了保持网络的稳定算法必须自动调整自身。同样如果网络不再盈利那么正在使用的计算能力将会下降因为这些资源会被重定向。这是通过算法中自动调整难度来实现的。任何网络参与者都必须能够快速检查他们是否拥有正确的链条以及该链条是否有效。这是通过散列函数来实现的。
工作量证明算法只要没有任何一组参与者控制 50%以上的整个网络计算能力就能维护网络的完整性。能够操控链条的坏参与者的可能性被称为51%攻击。如果单一组织控制了超过一半的网络计算能力他们可以通过停止支付或甚至双花来控制网络和网络交易。攻击组织将能够阻止确认新的交易随意停止用户的支付甚至在他们控制网络后发生的交易。
比特币中的工作量证明问题的原理
工作量证明算法首先采取最长的链。在比特币中区块可以通过多种方式最终确定取决于包括的交易。因此比特币节点可以选择多个可用的“已解决”链作为基础。作为算法的一部分比特币采取最长的链因此接受了最多的计算能力。以下图表说明了工作量证明链 比特币中的难题是找到一个输入当加到先前的区块哈希和交易列表中时会产生一个以特定数量零开始的哈希。
通常该函数的输入是所有交易的默克尔根和先前的块哈希。为了简化说明假设我们有一个简单的输入例如I love Blockchains。同时假设系统的难度是最简单的哈希起始位置只有一个零。I love Blockchains的 SHA-256 哈希如下
ef34c91b820b3faf29104f9d8179bfe2c236d1e8252cb3ea6d8cb7c897bb7d96.你可以看到它不是以0开始的。为了解决这个输入的区块我们需要找到一个字符串称为随机数可以加到这个字符串上以便将这个组合随机数 I love Blockchains的哈希结果为以0开始的字符串。事实证明我们只能通过测试来完成。例如如果我们在开头加上1我们得到1I love Blockchains哈希如下
b2fc53e03ea88d69ebd763e4fccad88bdb1d7f2fd35588a35ec6498155c702ed没有运气。 那么 2 和 3 呢 这些也将无法解决谜题。 恰巧4I love Blockchains 的哈希以 0 开头
0fd29b2154f84e157d9f816fa8a774121bca253779acb07b07cfbf501825415d这只用了四次尝试但这是一个非常低的难度。 每增加一个零找到一个能计算出正确哈希的适当输入的挑战就会加倍。 截至目前一个有效的比特币区块需要 18 个零才能有效。
尝试找到产生正确哈希的随机数的过程称为挖矿。 每台挖掘 PoW 链的计算机都在竞争看谁能最先找到正确的随机数。 获胜者有权创建链中的下一个区块并且以代币的形式获得奖励。 更多细节请参阅 第十八章挖矿。
PoW 的优势在于任何人都可以加入 PoW 网络并且它已经被证明是一种功能性共识机制。 PoW 网络的主要缺点是速度慢和财务成本高运行所有计算机进行这些计算非常昂贵并且输出没有被用于任何真正的生产性用途。 这被认为对环境不利并且可能导致在进行大量区块链挖掘的地方能源价格上涨。 由于这个原因一些地区已经禁止了区块链挖掘。
由于这些缺点权益证明PoS被发明出来。
股权证明
PoS 与 PoW 具有相同的目标即保护网络免受攻击并允许在开放网络中达成共识。 第一个使用此方法的数字货币是 Peercoin随后是许多其他数字货币如 NXTDashPIVX 等。 在 PoW 网络中解决谜题决定了哪个节点可以创建链中的下一个区块。 在 PoS 网络中区块被称为被锻造而不是被挖掘因为它们在 PoW 区块链中。 在 PoS 链中验证者通过获得每个区块的交易费用来获得奖励并且有时在每次创建区块时自动创建额外的代币。 在 PoS 链中成为下一个区块的创建者的机会取决于节点在网络中的投资金额。
看看以下示例
PoS 网络中有五个节点。 它们具有以下余额 10,000 枚代币 200 枚代币 300 枚代币 4,000 枚代币 20,500 枚代币
代币的总数为 35,000 枚。 假设每个节点都抵押了他们代币的 100%每个区块和其中的节点被认为是下一个区块签名者的可能性如下 28.57% 0.57% 0.86% 11.4% 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-time或PoET的新共识机制。Hyperledger 主要涉及许可链只有指定数量的参与者被允许进入网络类似于 PoA 链。
基本方法很简单 每个节点必须等待一段随机的时间 首个停止等待的节点将创建一个区块
我们必须做两件事情才能使其工作。首先我们必须能够验证所有参与者的等待时间实际上是随机的否则一个简单的攻击就是假装等待一段随机的时间然后立即创建一个新的区块。其次必须能够验证不仅选择时间的长度是随机的而且节点实际上在采取行动之前等待了整个时间段。
这些问题的解决方案来自英特尔他们创造了 PoET 算法并依赖于特殊的 CPU 指令以确保只运行受信任的代码。强制信任的代码负责处理块时间确保抽奖公平。
摘要
到此为止您应该对区块链使用的不同机制达成共识具有坚实的基础。每种共识算法在速度、可用性、一致性和容错性之间进行了一定的权衡。最常见的共识机制仍然是 PoW 和 PoS但区块链的发展非常迅猛新的、改进的方法可能会被开发出来。共识算法的改进将提高区块链的可扩展性和可靠性并扩大技术的潜在应用范围。
参考文献 groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf www.microsoft.com/en-us/research/publication/byzantine-generals-problem/?fromhttp%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fbyz.pdf github.com/tendermint/tendermint.com/blob/5c111743a03d2c6ed2e0b14bd3091cac8974c8da/docs/tendermint_v02.pdf peercoin.net/assets/paper/peercoin-paper.pdf github.com/ethereum/guide/blob/master/poa.md 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%的边际翻倍可以得到实际的实践患病率。这种方法既保护了个体受访者的隐私又不损害数据质量。
零知识证明和论证是非常技术性的其细枝末节超出了本出版物的范围但它们在概念上类似于我们正在讨论的内容。根据具体的实现方式零知识可能允许用户在不让网络上的其他用户知道钱包中的内容的情况下花费其钱包的内容。这是加密货币可以真正类似于现金的一个方面除了强盗抢走你的钱包之外没有其他人知道你拥有什么直到你公开它。这种方法成功地解决了比特币和以太坊等加密货币中的最大问题之一。
摘要:
区块链是一项具有变革性的技术其影响类似于互联网、疫苗接种或动力飞行其社会影响广泛、微妙并且在某些方面可能是有害的。它有可能进一步破坏隐私极大地改善企业治理或者使数十亿人摆脱贫困。这项技术的具体应用将定义它作为一种塑造世界的工具。
在下一章中我们将讨论一些区块链的应用从其中最基本的开始即加密货币钱包。