欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

区块链快速参考(三)

最编程 2024-05-05 21:39:16
...

区块链快速参考(三)

原文:zh.annas-archive.org/md5/b5e57485b0609afbfba46ff759c5d264

译者:飞龙

协议:CC BY-NC-SA 4.0

第十七章:去中心化应用程序

去中心化应用DApps)是在去中心化网络上运行的应用程序,不受集中式权威机构的拥有或控制。它们与分布式应用程序主要在所有权方面有所不同。分布式应用程序可能在成千上万台计算机上运行,但这些计算机和运行在它们上面的软件的管理受到*机构的控制 - 亚马逊、微软等。去中心化应用程序运行在通常是点对点网络上,并且设计得以一种使得没有任何人或组织可以控制应用程序功能的方式。去中心化应用程序不需要区块链。在区块链之前有多个去中心化应用程序:BitTorrent、Tor 和 Mastodon 都是没有使用区块链而存在的去中心化应用程序。

在本章中,我们将涵盖以下内容:

  • 去中心化应用程序的主要特点

  • 当今运营的最大的去中心化应用程序

  • 非基于区块链的去中心化应用程序

本章的目标是让您了解去中心化应用程序及其开发,以及让您了解已经存在的生态系统和代码。如果您有兴趣构建去中心化应用程序,与已经存在的生态系统的互操作性将极大地提高您的成功机会。

让我们首先看一下是什么使一个应用程序去中心化。

什么使一个应用程序去中心化

在本书的前面,我们讨论了分布式与去中心化系统。分布式系统是由许多计算机组成的系统,系统的工作分布在所有这些机器上。通常,分布式网络中的计算机被放置在不同的地理区域,以防止系统受到停电、自然灾害或军事事件等停机的影响。去中心化网络不仅在地理上分布,而且在权威和控制方面也是如此。例如,亚马逊云这样的分布式系统可能在全球范围内,但仍然受到*机构的控制。而去中心化系统则没有*权威。

定义去中心化应用程序

一个关于基于区块链的去中心化应用程序的知名资源是由大卫·约翰逊撰写的名为去中心化应用程序、DApps 的一般理论的白皮书。在这篇白皮书中,他确定了成为 DApp 的四个关键标准:

  1. 应用程序必须是完全开源的;它必须自主运行,并且没有任何实体控制其大部分代币。该应用程序可以根据提出的改进和市场反馈来调整其协议,但所有变更必须由其用户的共识决定。

  2. 应用程序的数据和操作记录必须以加密方式存储在公共、去中心化的区块链中,以避免任何中心化的故障点。

  3. 应用程序必须使用加密代币(比特币或其系统内部的原生代币),这对于访问应用程序和任何矿工/农民贡献价值都是必要的,并且应该用应用程序的代币奖励。

  4. 应用程序必须根据标准的加密算法生成代币,作为节点为应用程序做出的贡献的价值的证明(比特币使用 PoW 算法)。

然而,这个定义非常狭隘。大卫只考虑了在区块链上运行的去中心化应用程序,而且只考虑了可以通过代币激励的应用程序。有许多早于区块链的去中心化应用程序,并不使用或需要代币。在本章中,我们将讨论区块链和非区块链的去中心化应用程序,但重点是与区块链生态系统相关的应用程序。我们还将讨论那些虽然在去中心化网络上运行,但并不是去中心化的区块链应用程序。

对于本书,我们将使用以下四个标准来描述一个去中心化的应用程序:

  • 应用程序必须是完全开源的。

  • 应用程序必须自主运行,没有个人、组织或组织团体控制应用程序的运行。应用程序可以根据提出的改进和市场反馈调整其协议,但所有更改必须由其用户共识决定。

  • 应用程序的数据必须以公开的、去中心化的方式存储,可以进行检查,没有单一的故障点。

  • 应用程序必须提供一种方式,来调整所有关键用户群体对应用程序使用的激励。

正如你所见,这个简化的定义保留了去中心化的所有关键原则,而不依赖于区块链或代币,因为有许多方式可以构建或使用带有或不带有区块链的去中心化应用程序。当我们看到 IPFS 时,就会发现完全可以在没有区块链的情况下拥有去中心化的应用程序,并且可以有激励而不需要代币。

去中心化应用程序与区块链

去中心化应用程序是一个特定目的的去中心化系统。例如,虽然以太坊是一个去中心化网络,因为任何人都可以加入,节点都是对等的,但去中心化应用程序将在网络之上运行,为用户提供特定的服务或一组服务。在某种程度上,这种区分是没有意义的——你可以把以太坊看作是提供智能合约服务和本地代币转账的分布式应用程序。无论如何,关键的区别在于权力。

使用区块链并不意味着应用程序是去中心化的

一个单一实体或小团体对应用程序拥有更多权力,它就越是中心化的。任何一个群体对应用程序的命运和功能控制力越小,它就越是去中心化的。正如去中心化应用程序不需要区块链一样,运行在区块链上也不意味着应用程序是去中心化的。这意味着今天在区块链上运行的许多应用程序可能仍然不是真正的去中心化应用程序。即使应用程序完全开源也是如此。

为了说明,让我们考虑一个小型示例应用程序SpecialClub,用 Solidity 编写。它非常简单,只是保持一个成员列表(存储为地址),这些成员是Special Club的一部分:

pragma solidity ⁰.4.23;

contract SpecialClub {
    // Centralized owner of this application
    address public owner;
    // we set members to true if they are a member, false otherwise.
    mapping(address => bool) public members;
    mapping(address => bool) internal requests; 

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
      require(msg.sender == owner);
      _;
    }

    function approveMembership(address _address) onlyOwner external {
        members[_address] = true;
        requests[_address] = false;
        emit GrantedMembership(_address);
    } 

    function requestOwnership() external {
        requests[msg.sender] = true;
        emit RequestToJoin(msg.sender);
    }

    event RequestToJoin(address _address);
    event GrantedMembership(address _address);
}

尽管这段代码是用 Solidity 编写的,并且部署在区块链上,但它是完全中心化的。它仍然是分布式的,因为如果部署,成员列表将被公开分布到整个以太坊网络中。然而,控制权仍然掌握在一个地址上——所有者所有者地址对谁有资格被添加到SpecialClub成员名单拥有绝对控制权。任何基于此成员列表的进一步功能通常会因此而集中化。一个继续存在的优势是透明度——通过将代码和其状态都写入区块链,每个人都清楚规则和成员列表。然而,要成为真正的去中心化应用程序,该应用程序需要进行修改,以便例如现有成员可以投票决定接受或拒绝谁。

这是一个非常基本的示例:

pragma solidity ⁰.4.23;

contract SpecialClub {
    address public owner;
    // we set members to true if they are a member, false otherwise.
    mapping(address => bool) public members;
    mapping(address => bool) internal requests;
    mapping(address => mapping(address => bool)) votedOn;
    mapping(address => uint8) votes;

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
      require(msg.sender == owner);
      _;
    }

    modifier onlyMember() {
        require(members[msg.sender] == true);
        _;
    }

    function approveMembership(address _address) onlyOwner external {
        members[_address] = true;
        requests[_address] = false;
        emit GrantedMembership(_address);
    } 

    function requestOwnership() external {
        requests[msg.sender] = true;
        emit RequestToJoin(msg.sender);
    }

    function voteInMember(address _address) onlyMember external {
        //don't allow re-votes
        require(!votedOn[_address][msg.sender]);
        votedOn[_address][msg.sender] = true;
        votes[_address] = votes[_address] + 1;
        if (votes[_address] >= 5) {
            members[_address] = true;
            requests[_address] = false;
            emit GrantedMembership(_address);
        }
    }

    event RequestToJoin(address _address);
   event GrantedMembership(address _address);
}

这个版本允许如果至少有五个现有成员投票赞成,新成员可以被添加进来。虽然这样的应用程序一开始是中心化的,但在五名成员之后,所有者将不再能够对成员名单施加任何控制。随着时间的推移,去中心化的程度将增加。

主要的去中心化区块链应用程序

假设本书的读者可能正在考虑启动自己的去中心化应用项目或为现有项目做贡献。在构建新的去中心化应用程序时,重要的是要意识到已经存在的内容,以便您的应用程序可以利用现有的功能。目前有许多运行和生产的现有去中心化应用程序,并且已经经历了大量开发。一般来说,这些应用程序提供服务,以帮助其他去中心化应用程序蓬勃发展。此外,这些应用程序都是开源的。如果您评估其中一个项目并发现它缺少某些内容,则通常需要的努力较少,以便为现有功能做出贡献或贡献给其他功能。

IPFS

IPFS代表星际文件系统。IPFS 旨在成为一种可以从 Web 访问的分散式点对点文件系统。IPFS 是一个分散式应用程序,但不涉及区块链。相反,它使用了一种称为有向无环图DAG的相关技术。

典型的 Web 通信

要理解 IPFS,最好从典型的 Web 通信方式开始,然后建立区别。在普通的 Web 通信中,有两个主要角色:客户端和服务器。服务器托管应用程序、文件等,客户端连接到服务器。客户端通常不会彼此连接。如果两个客户端进行通信,它们会首先连接到服务器,让服务器充当中间人。

这种方法易于理解,并且企业已经学会了如何可靠地扩展它。企业可以转向像亚马逊网络服务这样的服务,或者使用诸如 OpenStack 之类的软件,通过增加服务器容量来处理大量流量。

然而,这种方法也非常低效。例如,想象一下,一个建筑物里有 10 个人都在自己的笔记本电脑上观看同一部电影。与其让所有 10 个客户端都访问服务器并下载 10 份副本,为什么不让每个客户端下载电影的 1/10,然后与其他人分享呢?这样可以大大降低总带宽,并且类似地提高速度。

点对点文件传输

这种由对等方下载单个文件的不同片段然后分享的方法是一种称为 BitTorrent 的技术的核心。BitTorrent 允许对等方相互交换文件和文件片段。这种方法的缺点是几乎没有动机不下载你想要的文件,然后断开连接,从而阻止其他人做同样的事情。为了避免这种情况,IPFS 从 BitTorrent 协议中汲取了灵感,并将其概括为一种称为Bitswap的技术。Bitswap 的工作方式类似于 BitTorrent,但受到了比特币及其工作证明激励系统的进一步启发。Bitswap 具有自己的激励系统,如果客户端下载并存储稀有数据——即在网络上尚不高度可用的数据——以保持全球可访问性高。

区块链项目的价值

尽管区块链提供了一种分散式的价值和数据交换方法;但并不适合存储大文件或内容,如图像和视频。考虑到现代客户和网络用户的期望,这是一个真正的问题。这些类型内容的大多数存储解决方案都是集中式的且昂贵的。有了 IPFS,分散式应用程序有了一种存储和访问这些内容而不失去分散性的方法。

Aragon

Aragon是一个围绕分布式自治组织DAO的项目。以下是 Aragon 白皮书的摘录:

  • Aragon 是一个 DApp,允许任何人在以太坊区块链上创建和管理任何类型的组织(公司、开源项目、非*组织、基金会、对冲基金等)。

  • Aragon 实现了组织的基本功能,如股权表、代币转移、投票、角色分配、筹款和会计。通过更改章程,Aragon 组织的行为可以轻松定制。此外,Aragon 组织可以通过与组织合约交互的第三方模块进行扩展。

  • Aragon Core 是用 Solidity 编写的一组智能合约,允许分布式团队自组织,并轻松处理典型集中式组织的活动,例如处理工资单、内部仲裁等。

  • Aragon Core 中的智能合约已被其他项目使用,例如 districtOx,作为更高级功能的基础。如果你的项目涉及任何形式的分布式治理,那么研究一下 Aragon Core 是有意义的。

district0x

districtOx 网络建立在以太坊、Aragon 和 IPFS 之上。它利用了所有这些系统的能力,并为更具体的功能进行了扩展。在这种情况下,districtOx 提供了在以太坊区块链和分布式治理下以去中心化方式操作在线市场或社区所必需的核心功能。

什么是地区?

地区是建立在 districtOx d0xINFRA代码库之上的去中心化市场/社区。d0xINFRA代码库由一组以太坊智能合约和基于浏览器的工具组成,可以与以太坊和 IPFS 互动。这两个代码库相互交互,并呈现一组对于人们在中心化网络上习惯的体验至关重要的关键功能:发布和列出内容、搜索、声誉管理、支付和发票。

d0xINFRA基础上构建的每个地区都将具有这些基本功能。这一基线代码库使得未来项目更容易更快地发展成为功能齐全的产品。

以太坊命名服务

以太坊地址通常被写成十六进制字符串,例如,0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0。这对于人类来说不太可读,如果你不得不在电话中读出来,打字等等,很容易出错。替换成另一个地址也很容易,而不让别人知道。事实上,这在几次 ICO 攻击中已经发生过。以太坊命名服务,或 ENS,是一个基于智能合约的系统,用于解析人类可读名称,例如mytoken.ens到地址。通过注册 ENS 地址,以太坊网络上兼容的应用程序和钱包可以将可读名称,例如MyTokenContract.eth,映射到一个以太坊地址,类似于 DNS 将域名映射到互联网上的 IP 地址。

强烈建议通过 Ethereum 获得适当的 ENS 名称来保护任何建立在以太坊上的项目。这不仅对用户更加清晰,而且有助于防止黑客利用名称试图从您的用户那里窃取。

Civic/uPort

Civic 和 uPort 都是以太坊上的身份提供者 DApp。目前,您的身份信息通常由一个集中实体持有:*、Facebook、Google 等等。在网络上的许多地方,您可能会被要求使用 Facebook 或 Google 进行登录。实际上,网站会联系其中一个提供者,交出身份认证,然后您就被允许登录。这样做的缺点是,您所放弃的信息受到第三方的控制和管理。如果这些提供者之一决定不再为您提供服务,或者提供虚假信息,您几乎无能为力。

Civic 和 uPort 都是身份的去中心化解决方案,在这里,身份所有者在区块链上管理他们的身份,并通过一个他们控制的服务提供者授予和撤销权限。

许多即将推出的 DApp 具有区块链行为、web 活动和移动应用程序行为的混合。通过使用这些提供商之一,您可以连接到新兴的去中心化身份生态系统,还能支持中心化提供者。

Gnosis

Gnosis是以太坊上首个重要的去中心化应用。Gnosis 提供了一个去中心化的预测市场和治理工具。预测市场可以在各个行业发挥作用,比如股票市场、事件赌博等等。通过采用去中心化的预测方法,希望这样的预测更加准确,因为市场接收了更多信息来调整预测。

作为以太坊最早的采用者之一,Gnosis 团队还致力于各种工具,比如多重签名钱包。

Steemit

Steemit是一个社交博客应用,类似于 Blogger 或 Tumblr。然而,内容、评论和投票都存储在区块链上并得到了保护。Steemit 是一个自带区块链的 DApp。其核心源自 Bitshares v2.0,但经过大幅修改以适应应用的需求。

在 Steemit 中,用户提交和投票内容也会得到奖励代币。每个用户的投票权力与他们在网络中的股份相等,被称为Steem Power。如果一个用户吸引了大量追随者,或者追随者拥有大量 Steem Power,那么奖励可能是可观的。奖励通常很小(从几分钱到几美元不等),但一些作者由于吸引了被称为鲸鱼的权力用户的青睐,已经能够获得数千美元的支付。在某些情况下,一个鲸鱼的投票本身就可能价值数百甚至上千美元。

如前所述,Steemit 不是建立在以太坊上,也不能使用 Solidity 进行编程。但是,它确实拥有一系列应用程序,这些应用程序与 Steemit 区块链进行通信,并以不同的方式对 Steemit 内容进行筛选、显示和货币化。任何考虑博客、社交媒体或类似内容应用的人都应该仔细评估 Steemit 及其代码库。所有代码都是开源的,已经创建了一些修改过的克隆版本,例如 Golos(用于俄罗斯市场)和 Serey(用于柬埔寨市场)。

CryptoKitties

CryptoKitties 是另一个基于以太坊的去中心化应用程序。CryptoKitties 是一个虚拟宠物模拟器,用户可以在区块链上购买、交易和繁殖小猫。CryptoKitties 对以太坊来说是一个重要的里程碑,因为为 CryptoKitties 开发的技术对可能使用区块链的所有视频游戏都有应用。使用类似于 CryptoKitties 的技术,玩家的装备、角色等都可以存储在区块链上。

这很重要,因为许多在线视频游戏,例如 Minecraft、魔兽世界等,都存在一些漏洞,其中游戏中的某些装备可以被复制,人们可以制作无限的克隆品。使用区块链,每个物品都被分配了一个唯一的参考,并且可以像真实商品一样跟踪和交易。

受到 CryptoKitties 的启发,许多视频游戏正在使用这些系统来创造真正稀缺和真正经济的世界,即将进入市场。

摘要

您现在应该了解去中心化应用程序和分布式应用程序之间的区别。分布式应用程序是指分布在许多服务器和系统上的应用程序,理想情况下,涉及的计算机也分布在多个地理区域,用于备份、处理和可用性。DApp 是一种没有单个公司、个人或团体控制应用程序运行的应用程序。

尽管市场上有许多区块链应用程序,但并不是所有这些应用程序都是真正的去中心化。在许多情况下,这些应用程序仅仅是通过依附于公共区块链网络来实现不同的分布式方式。如果一个公司或少数关键用户仍然控制应用程序的操作和功能,那么即使它在一个去中心化网络上运行,该应用程序也不是真正的去中心化。

您现在应该了解到目前存在的许多最大的面向区块链的去中心化应用程序,它们之间的相互关系,并且您应该能够利用这些知识来为未来的项目提供信息,并避免重新发明现有的代码。

接下来,我们将详细讨论两个最大的区块链网络——比特币和以太坊——如何在第十八章中确保网络的安全,挖矿

参考

[1] github.com/DavidJohnstonCEO/DecentralizedApplications

第十八章:挖矿

在之前的章节中,我们讨论了工作证明PoW)共识系统以及挖矿的重要性。我们还讨论了比特币和其他替代币,以及矿工在 PoW-based 硬币中发挥的重要作用。

在本章中,我们将深入讨论挖矿,以及基于 PoW 的硬币和代币中挖矿的必要性。然后,我们将讨论挖矿池以及它们如何给挖矿生态系统带来革命。此外,我们将继续学习如何使用现有的各种矿工开始挖矿。我们将深入了解 CPU 和 GPU 挖矿,以及研究搭建挖矿设备和双挖概念。最后,我们将研究每一种可用于挖矿的 PoW 算法,并讨论基于可用硬件资源而选择的最佳算法。

在本章中,我们将涵盖以下主题:

  • 挖矿过程及其阶段

  • 挖矿算法

  • 各种类型的挖矿硬件

  • 矿工类型

  • 挖矿设备

  • 挖矿池类型

  • 挖矿软件

加密货币挖矿

加密货币挖矿由全节点执行,这些节点是区块链的一部分;挖矿仅由具有基于 PoW 的共识系统的区块链执行。交易由共识系统确认,并创建这些交易的区块以添加到区块链中;一旦新区块被添加到区块链中,通常被称为找到区块,就会有一定的奖励,这是给予矿工的,因为他们执行了将区块添加到区块链中的任务;不过,这个过程并不简单。在添加区块之前,必须执行一个资源密集型的验证过程来验证交易。资源密集型任务基本上就是与货币相关的某些算法的哈希。

由于区块生成时间保持在约 10 分钟左右,当矿工的散列功率增加时,难度必须以相同的比例增加。这是通过难度调整和重新定位算法来完成的,如前几章中所讨论的。

当矿工连接到网络时,有各种任务需要矿工执行以跟上网络。每种货币对矿工都有不同的规格;以下是比特币环境下矿工执行的一些主要任务:

  • 交易验证:这是通过验证签名和输出来验证交易的过程。

  • 区块验证:一旦验证了块中的每个交易,就会验证随机数,以完成区块验证过程。

  • 新区块创建:矿工可以通过在网络上验证的交易后,将那些不属于任何其他区块的交易添加到区块链中的较高高度来创建新的区块。

  • 工作量证明算法解决方案:在任务中,矿工通过解决所需算法找到区块的上链:比特币中使用 SHA256。区块头部包含一个 32 位的随机数字段,矿工必须使用暴力破解技术对其进行散列,直到哈希匹配。

  • 支持奖励系统:当一个节点对算法进行散列时,结果会通过区块链网络发送。完成后,网络中的其他矿工会验证区块,以确保区块中的交易高度不与任何先前区块冲突。一旦网络接受了区块,矿工将以货币形式获得一定的奖励。

让我们详细讨论每个步骤,以及挖掘加密货币涉及的过程。

挖矿过程

挖矿主要在 PoW(工作量证明)基础上的区块链中进行,但正如前文讨论的那样,PoW 并不是仅有的共识系统;还有各种其他共识机制。然而,PoW 是加密货币中最广泛使用的共识系统。

PoW 的概念早在其在比特币中的使用之前就存在了。这些系统先前用于限制拒绝服务攻击,垃圾邮件以及当前系统中持续存在的其他与网络相关的问题,因为它们要求请求者在提供所需服务之前提交计算工作的证明。这使得此类与网络相关的攻击变得不可行。

为了使 PoW 系统足够具有成本效益,请求者执行的计算任务应该具有适度的难度,但对于服务提供方来说却很容易进行检查。Hashcash 是最早开始使用基于 PoW 的协议利用 SHA-256 算法的系统之一。用户必须在提供所需服务之前提交计算数千个哈希操作的证明;这反过来限制了 DoS 和垃圾邮件攻击。

比特币也使用 SHA-256 散列算法,尽管这是一个随机算法,但其性质是确定性的,这意味着对于任何给定的输入,输出都将始终相同,并且可以轻松通过使用相同算法和相同输入的任何人进行验证。

在加密货币挖矿中,矿工需要两样东西来获得 SHA-256 散列算法的输入:

  • 新生成区块的头部

  • 随机数(Nonce

矿工使用暴力破解的方法,直到哈希输出与难度目标匹配;这是一个作为上限的 256 位数,而且 SHA-256 的输出必须低于或等于当前区块的难度目标,以便网络接受该区块。例如,这是比特币区块链上第528499高度的一个区块的哈希:

00000000000000000021524523382d300c985b91d0a895e7c73ec9d440899946

每个区块中的第一笔交易是挖矿奖励,因此在交易中没有要从中扣除资金的输入地址,这些是创建为区块链网络的一部分的硬币。这种独特类型的交易称为 coinbase 交易。此外,在比特币区块链中,coinbase 交易中创建的硬币在区块链中至少接收到 100 次确认之前无法花费。由于区块时间为 10 分钟,100 次交易大致需要 16 小时 40 分钟。coinbase 交易只能在矿工自己的地址上发生。

算法

比特币使用 SHA-256,但在 PoW 共识类型中可以使用各种算法,以下列出了一些这些算法,并在下一张截图中进行了说明:

  • base Quark: Dimecoin, AnimeCoin

  • CryptoNight: AeonCoin, Monero

  • Dagger-Hashimoto: Ethereum, Krypton

  • Equihash: Zcash, Komodo

  • Groestl: AidBit, GroestlCoin

  • Keccak: 365Coin, Wecoin

  • Lyra2RE: Lyrobar, MondaCoin

  • SHA-512: MemoryCoin, ProtoShares

  • NeoScrypt: Feathercoin, Ufocoin

  • NXT: CoinoIndex, SuperNet

  • Scrypt: Litecoin, Dogecoin

  • Scrypt-jane: QQcoin, ThorCoin

  • Scrypt-N: Caishen, Elacoin, GenesisCoin

  • Skein-SHA2: SkeinCoin, XedoCoin

  • X11: Dash, Chipcoin, Karmacoin

  • X13: Cloakcoin, Zipcoin, PioneerCoin

  • X15: CrystalCoin, Halcyon, HTML5coin

  • Yescrypt: BitZeny, GlobalBoostY

每个算法都对其他算法进行了特定的修改。

挖矿硬件

加密货币挖矿社区经历了许多创新和阻力并进,以照顾区块链的核心原则。挖矿可以使用家用计算机和专用硬件完成。常用于加密货币挖矿的硬件类型在以下部分中讨论。

基于 CPU 的挖矿

这是官方比特币客户端中提供的第一种挖矿类型。在比特币的最初阶段,家用计算机能够挖矿。随着更强大和专用硬件的出现,比特币挖矿不再是挖掘比特币的首选。其他硬币仍然支持 CPU 挖矿,但随着时间的推移,这些类型的硬币的难度增加,挖矿也变得不可行。

基于 GPU 的挖矿

由于区块链网络的难度随时间逐渐增加,CPU 挖矿变得不可行,有时使用 CPU 挖矿变得不可能。考虑到这一点,矿工开始使用 GPU,因为它们提供更快速和更高并行处理能力。GPU 制造公司如 AMD 和 Nvidia 定期发布新硬件,除了游戏性能外,这些硬件还能产生出色的挖矿结果:

基于 FPGA 的挖矿

现场可编程门阵列FPGA)包括在制造后可以配置的集成电路。配置的编程使用硬件描述语言HDL)指定。可编程设备可以在不拆卸设备的情况下进行修改;该设备包含一系列门阵列,用于创建真值表,以便从数据流中计算输入,如下面的截图所示:

由于 FPGA 支持核心的并行性,据称其效率是基于 GPU 挖矿的十五倍。

基于 ASIC 的挖矿

特定应用集成电路ASIC)矿工比基于 CPU、GPU 和 FPGA 的矿工要好得多,因为它们设计用于执行一项特定任务,即加密货币的挖矿。下图是一台 Algorithm-specific 的 ASIC 矿机:

这些硬件专门设计用于产生高散列率。有各种知名公司生产一些性能最佳的矿工,如比特大陆、阿瓦隆、蚂蚁矿机等。

矿工类型

如今有两种类型的矿工——根据是自行获取硬件,还是在线购买散列功率来进行分类。

云挖矿

在这种类型的挖矿中,矿工不拥有硬件,而是远程从其他矿工那里购买散列功率。云挖矿相比自购硬件有各种优点,如低门槛入门和风险较小。对于想投资加密货币但不想从交易所购买或者没有足够的技术知识的人来说,这是他们最好的选择。现在有许多组织在各个地方设有大型数据中心,可供人们购买基于 GPU、ASIC 或 FPGA 的矿工。其中一些组织有 Genesis Mining、SkyCoinLabs、Nicehash、hashflare 等。

硬件挖矿

爱好者总是对设置自托管硬件进行挖矿感兴趣;可以通过高端家用计算机进行挖矿,或者获取 ASIC 或 FPGA 设备。如今,人们还在设置专门的挖矿设备,可以连接多个 GPU、ASIC 或 FPGA 到一台机器。人们通常通过购买扩展机箱,然后将多个硬件连接在一起来自行搭建一个矿机以达到所需的结果。矿机最好的一部分是可以添加更多硬件,并尝试新的 ASIC,以查看是否实现了预期的结果。

挖矿设备

由于很多 GPU 或 ASIC 器件被串联在一起,它们往往会产生大量热量,因此有必要保证有适当的空气流通。以下是一个基本矿机的要求,任何人都可以自行搭建:

  • 主板:需要专门的主板,可以支持多个 PCI-E 插槽,用于连接多个 GPU。

  • 硬盘:最低容量的硬盘就够了,但最好选择 SSD 以获得更好的性能。

  • 内存:挖矿机至少需要 8 GB 或 4 GB 的内存,因为挖矿更多是计算密集型工作。

  • GPU、ASIC 或 FPGA:这些是挖矿机中最重要的组件,可以选择任何一种配置,如基于 GPU 的挖矿机或基于 ASIC 的挖矿机或基于 FPGA 的挖矿机。也可以尝试在挖矿机上混合使用所有这些设备,以找出哪种设备能产生最高的结果。

  • 机箱:由于大量的计算设备连接在一起,它们往往会产生大量热量,因此需要适当的机箱将它们连接在一起;机箱内部的气流应该是足够的,因为大量的热量可能导致硬件的损失或系统资源的减少。

  • 电源供应:台式电脑中的标准电源无法在挖矿机中使用;多个 GPU 需要大量的电力,因此需要一种能够支持如此大量电力的电源。

现在也可以购买预构建的挖矿机;这些挖矿机是即插即用的类型,无需设置。以下是一些最常用的预构建挖矿机:

  • 鲨鱼挖矿:这是一家知名的供应商,创建支持多种加密货币挖掘的基于 GPU 的挖矿机。他们提供各种选项,从紧凑型到大型挖矿机。

  • 挖矿洞穴:他们有适用于 Nvidia 或 AMD 基于显卡的各种挖矿机的选项:

挖矿矿池

随着越来越多的矿工开始挖矿,货币的难度逐渐增加。矿池是一群矿工聚集在一起挖掘一个区块,一旦成功挖掘了区块并获得了奖励,奖励将分配给在矿池中挖矿的矿工;奖励的支付方式有很多种,我们将在下一节讨论这些方法。之所以有各种奖励分配方法,是因为哈希是一种纯粹基于蛮力的机制,因此对于任何矿工来说,找到正确的随机数并成功地提交一个区块进入区块链过程,都是纯粹的运气,因此如果他们的哈希和挖矿工作没有计入,其他矿工就会感到不公平。因此,奖励是根据哈希算力来分配的,但仍然有各种方法来精确计算每个矿工的份额。

每份矿工支付 - PPS

PPS 是一种将风险转移到矿池的方法。对于矿工来说,这是最受欢迎的方法,因为他们根据他们挖掘的哈希份额数量得到支付;每个挖掘的份额的奖励都是有保障的,现在很少有矿池支持这种系统。矿工从矿池的现有货币余额中得到支付。

比例分配 - PROP

这被称为比例方法,顾名思义,在这种方法中,奖励根据每个矿工找到的区块份额的数量按比例分配给矿工。

每份最近 N 份分享报酬 - PPLNS

PPLNS 类似于比例方法,不过在这种方法中,不管矿工贡献的总份额有多少,最后的N份份额都是重要的。

双几何方法 - DGM

DGM 是一种混合方法,风险在矿池和矿工之间分配。在这种情况下,在进行短期回合时,矿池获得一部分挖矿奖励,而长期回合进行时将返回相同的奖励。

分享最大每份分享报酬 - SMPPS

SMPPS 类似于 PPS,但矿池在单个回合中不会支付超过向矿池奖励的总硬币。这消除了矿池在 PPS 方法中所承担的风险。

均衡共享最大每份分享 - ESMPPS

ESMPPS 类似于 SMPPS;它在参与本回合挖矿的所有矿工之间平均分配支付。

最近的共享最大每份分享 - RSMPPS

RSMPPS 类似于 SMPPS,但这种方法首先优先考虑最近的矿工。

限制的每份最大分享与最近回溯支付 - CPPSRB

CPPSRB 采用了最大每份分享的方式,以便考虑到矿池不需要备用资金时,使用区块奖励的收入支付给矿工最大奖励。

比特币合并挖矿 - BPM

BPM 也被称为斯拉什系统,因为它最初是在名为斯拉什矿池的矿池中使用的。在这种支付计算方法中,从区块轮开始的旧份额与最近的份额相比重要性较小。由于社区成员开始报告矿工能够在回合进行时切换矿池,因此引入了这种系统。

针对目标支付 - POT

POT 是一种基于高方差的 PPS 支付系统,根据矿工向矿池返回的工作难度而不是整个矿池矿工挖掘的工作难度进行支付。

SCORE

这是一种比例奖励系统,根据提交份额的时间来计算。该流程使较晚提交的份额比较早提交的份额更有价值;这些份额按时间打分,以及将分别给予个别矿工的奖励基于得分比例而不是系统中提交的份额。

除此之外,矿池和社区仍在提出各种新的奖励系统;诸如 ELIGUIS、Triplemining 等系统仍然存在并被各种开发人员使用。

流行矿池

目前有各种各样的矿池存在,并且任何人都可以成为感兴趣的矿池的一部分并立即开始挖矿。矿池可以支持任何加密货币或同时支持多种货币。以下是矿池列表,以及它们支持的货币:

  • BTC.com:这是一个总部位于中国的矿池,是 Bitmain 组织的一部分。它支持比特币和比特币现金。

  • Antpool:Bitmain 组织拥有的另一个矿池。它支持比特币、莱特币、以太坊、以太坊经典、Zcash、Dash、比特币现金、Siacoin、门罗经典和 Bytom。

  • BTC.TOP:一个总部位于中国的支持比特币的矿池,截止目前。

  • SlushPool:世界上第一个矿池,也是迄今最可靠的矿池。它挖掘约占所有比特币区块的 3%。它支持比特币和 Zcash。

  • F2Pool:一个总部位于中国的矿池,支持比特币、莱特币、Zcash、以太坊、以太坊经典、Siacoin、Dash、门罗币、门罗经典、Decred 币、Zcoin 和 Aion 币等多种货币。

  • ViaBTC:一个针对中国矿工的总部位于中国的矿池。它支持比特币、比特币现金、莱特币、以太坊、以太坊经典、Zcash 和 Dash 等货币:

图片

除了列出的矿池外,还有各种其他矿池,有些支持单一币种,有些支持多个币种。其中一些是 BTCC、Bitfury、BW Pool、Bitclub.network、Suprnova、minergate 等等。下图显示了比特币网络的算力分布,可以在 www.Blockchain.info/pools 找到:

图片

挖矿软件

挖矿硬件负责挖矿过程,但拥有高效的软件也很重要,以获得最佳结果并消除任何瓶颈。

挖矿软件的任务是在网络上分享硬件的挖矿任务。除此之外,它的任务还包括接收来自网络上其他矿工的工作。根据硬件运行的操作系统,有各种挖矿软件可供选择,如 BTCMiner、CGMiner、BFGMiner、Nheqminer 等等:

图片

挖矿软件应基于操作系统、硬件类型和其他因素进行选择。大多数挖矿软件是开源的,并且有大量积极的社区,以帮助矿工选择适合可用硬件的正确软件并澄清任何疑问。

总结

在本章中,我们学习了加密货币的挖矿;从研究各种算法开始,我们讨论了挖矿硬件及其各种类型。然后,我们讨论了挖矿矿池,矿池如何将奖励分配给矿工以及目前各种流行的矿池。

在下一章中,我们将讨论首次代币发行ICO),这是为推出的代币或货币筹集资金的过程。ICO 是区块链社区的重要组成部分,并帮助区块链项目的利益相关者从社区本身筹集资金。

第十九章:ICO 101

ICO 代表 首次代币发行,也称为 代币销售首次代币发售。ICO 是一个事件,新的区块链项目通过向潜在买家提供网络代币来筹集资金。与 IPO 不同,没有股权出售。买家在网络上收到代币,但不拥有底层项目的知识产权、法律所有权或其他传统的股权特征,除非作为销售的一部分明确承诺。如果有的话,获利的预期来自持有代币本身。如果新网络的使用需求增加,那么拥有代币的价值也将相应增加。

在本章中,我们将介绍 ICO,它们是如何产生的,以及作为执行的关键方面。ICO 仍在不断发展,但许多事件和可交付成果已成为预期甚至是成功所必需的。

第一个 ICO 是由 Mastercoin 在 2013 年开发的。Mastercoin 认为他们的代币,如比特币,会增值,至少有一些人同意。Mastercoin 进行了一个为期一个月的筹款活动,最终筹集了约 50 万美元,而后来 Mastercoin 的整体市值增长到了高达 5000 万美元。无需通过传统渠道就能筹集大量资金的能力开始引发一系列活动。

第二年,以太坊网络诞生并举行了其代币销售。随着这个网络的诞生,推出新代币的难度大幅降低。一旦以太坊网络稳定并建立了临界质量,ICO 就开始定期举行。在接下来的两年里,ICO 的频率越来越高。

一些值得注意的早期项目包括:

  • Ethereu****m:1800 万美元

  • ICONOMI:1006 万美元

  • Golem 项目:1000 万美元

  • Digix DAO:550 万美元

图片

2017 年,ICO 的速度加快,筹集的资金也增加了。以下是 2017 年的一些重要项目:

  1. Filecoin:约 2.57 亿美元

  2. Tezos:约 2.36 亿美元

  3. EOS:约 2 亿美元

  4. Bancor:约 1.53 亿美元

现在已有超过 1500 种加密货币,而且还有更多新项目定期发布。每个月发布的新项目约有 100 个左右。本章我们将涵盖以下主题:

  • 当前 ICO 市场的现状

  • ICO 活动的典型方面

  • ICO 和区块链项目存在的问题

当前 ICO 市场的现状

早期 ICO 市场和当前行业状况之间的差异显而易见。起初,只有少数几个 ICO,并且这些 ICO 是由相对在区块链社区内较为知名的团队举办的,他们在进行 ICO 前花费了相当多的时间和精力来实现一个项目。以太坊的推出后,进行 ICO 的准入门槛大幅降低,新代币的数量激增。

ICO 数量不断增加

在以太坊网络之前,大多数 ICOs 都是针对新的区块链的。有了以太坊,代币现在可以使用智能合约来启动,而不是从头开始创建整个区块链基础设施。有关如何实现这一点的更多信息,请参阅有关 Solidity 和智能合约的章节(请参见 Chapter 13, Solidity 101,和 Chapter 14, 智能合约)。

目前,2018 年有望产生超过 1,000 个新的 ICOs:

  • ICOs 的募集资金总额不断增加

  • 非常大规模的资金筹集变得越来越少见

  • 现有公司开始进行 ICO

ICO 活动的典型方面

大多数 ICOs 的营销活动都有一个典型的轨迹。这些活动存在的目的是吸引对公司的兴趣和投资,并向全世界展示项目。

白皮书

对于大多数项目来说,最关键的部分是白皮书。项目白皮书介绍了项目的目的,它试图解决的问题,以及它如何解决这些问题。

一份好的白皮书会讨论代币和市场的实用性。大多数白皮书的关键部分包括:

  • 项目介绍

  • 市场和先前解决方案的历史

  • 使用区块链介绍新解决方案

  • 代币的实用性和代币经济学

  • 未来的应用和协同效应

  • 解决关切和风险

  • 团队和团队背景

  • 总结

大多数白皮书都会包含这些部分,以及其他部分,具体取决于项目的性质和目标市场。白皮书将被广泛用于所有未来的营销活动,因为它将成为幻灯片演示、提案等的信息来源。

私募

私募是将大块代币出售给私人投资者的艺术,通常是在这些代币在公开市场上可用之前。这种做法有很多原因。首先,私人投资者往往更加复杂,能够进行大额购买。一个成功的、有成功记录的、知名投资者的真正参与,尤其是那些创业风险最高的购买,将会鼓励未来的购买。

私人买家在很多情况下会提供早期资金,如果他们真的相信团队的实力,甚至可能在白皮书最终确定之前就提供资金。此外,在许多司法管辖区,包括美国,在法律不确定的环境中,认可的大型投资者也享有特殊的法律地位。这种地位使得在面对 ICOs 的不确定法律环境中向他们出售资产要安全得多。

私募可以通过多种方式进行:

  1. 创始人要么已经认识,要么认识高净值个人或组织,他们进行私募购买,比如家族办公室

  2. 创始人雇用能够将他们与私人买家联系起来的顾问

  3. 项目在投资之前就已经产生了足够的关注和兴趣,以至于买家主动寻找它们

如果创始人没有广泛的人脉,他们需要尽可能地建立人脉。这可以通过参加会议、发表演讲、参加聚会和建立真正的人际关系来实现。这个过程可能需要很长时间,鼓励创始人立即开始这项活动。即使在公司成立之前,这样的人际关系也应该有所发展,如果你甚至考虑过区块链初创公司或 ICO。同样重要的是建立真正的关系——一旦这些人投入,他们实际上就是合作伙伴。他们的成功就是公司的成功,所以他们将非常有动力地帮助推广公司。同时,公司的失败也是他们的失败和损失,所以他们希望对创始人的能力有很强的信任。这样的关系很少是一夜之间建立起来的。

进行这个过程的下一步是找到合适的顾问。拥有投资者资源的顾问希望得到报酬,通常是提前和筹集的一部分。太多人想要接触投资者,所以没资源的人没必要打扰。此外,这些顾问必须对项目有信心。顾问把投资人引入糟糕的项目会失去对该投资人的影响力,影响他们的关系。因此,负责任的顾问会拒绝引入项目,直到这些项目真正做好了投资准备。

私募销售发生的最后一种方式是项目在公开市场得到足够的关注,投资者主动寻求该项目。因为项目的炒作与代币价格强相关,所以购买高度炒作和公关的代币被认为是更安全的投资。聪明的投资者仍然会对项目和团队进行严格的审查,但这种早期的迹象使事情变得更容易。

许多团队开始他们的筹资方法是通过私人配售轮。在少数情况下,这可能是团队所需的一切。

进行私募配售的知名基金有 Crypto Capital Group、Digital Currency Group、Blockchain Capital、Draper Associates、Novotron Capital 和 Outlier Ventures。

预售

代币预售通常是在公开代币销售的官方启动日期之前进行的。它处于私人配售和完全公开销售之间。代币通常以某种折扣价出售,而且可能存在比公开销售更高的最低购买金额。

与私人配售一样,预售在购买者方面通常有一定的限制。如果一个项目能够建立一些社区参与度,预售通常首先提供给该社区。

例如,如果每个代币的公开销售价格是0.10,最低购买额为0.10,最低购买额为300(或等值的以太币或比特币),私人预售价格可能是0.08,但最低购买额为0.08,但最低购买额为1,000。

良好的预售实践

在理想的世界中,进行预售的代币项目应该具备以下条件:

  • 准备好测试和使用的演示或 Alpha 版本

  • 一个成熟的社区

  • 一个经过充分补充的团队,拥有适当的背景

  • 已采取强有力的网络安全措施,以防止盗窃

  • 获得法律意见和适当的监管合规性

  • 设置系统 24/7 监控所有通信,以防止欺诈和不良行为者侵入预售

  • 具备强大的营销团队和营销计划

  • 一个周密的资金使用计划

  • 对筹款设有清晰合理的硬顶,无论是一般的还是预售的

拥有所有这些特点的项目在成功的预售中处于更有利的位置。而有著名的私人投资者或背后的基金支持的项目则具有额外的优势。

公开销售

公开销售是 ICO 的最终阶段。到此时,团队应该在社区建设、早期筹款、公关活动(见下文)等方面花费了大量时间。这一切的原因是,最成功的 ICO 往往非常快速,数分钟或数小时内就销售一空。有三种主要的不同销售结构方法。

定价销售

定价销售是最常见的 ICO 结构。在定价销售中,通常设有软顶和硬顶。软顶是团队为建设项目寻求的最低筹资额。硬顶则是作为筹资的最大接受值。一旦代币销售开始,通常会按先到先得的原则执行。代币以预设的价格出售。在某些情况下,该价格可能包括奖金。例如,前 20 名购买者(或前$20,000)购买的代币数量将获得 10%的奖金。随着销售的进行,奖金会下降。此结构旨在奖励初期行动者,并激发 FOMO(害怕错过)。

无上限销售

无上限销售旨在尽可能筹集资本。方法是确定销售时间和通常的代币数量。随着人们的投资,他们将获得与其投资总额相等的代币份额。每个人会收到的代币数量通常直到 ICO 结束都不能确定。例如,如果在第一天,一名投资者投入了10,000,并且没有其他竞标,那么他们将拥有所有可用的代币。然而,第二天,另一名投资者也投入了10,000,并且没有其他竞标,那么他们将拥有所有可用的代币。然而,第二天,另一名投资者也投入了10,000。如果这是销售的结束,那么这两名投资者将分别拥有可用代币的一半。

就像定价销售一样,还有许多变体。EOS 代币销售可能是最知名的无上限销售的版本。EOS 代币在 341 天内销售,每天都有更多的代币可供购买。

荷兰式拍卖

荷兰式拍卖是 ICO 提供的最罕见形式之一,但也是最公平的形式之一。荷兰式拍卖从高价开始拍卖,价格逐渐下调,直到参与者加入或达到预留价格。反向荷兰拍卖从低价开始,然后在固定间隔时间内慢慢提高价格。无论采用哪种方式,只要有足够数量的买家,都能够找到一种适当的令牌市场价格。使用荷兰式拍卖方法进行最著名的 ICO 项目是 Gnosis 项目。

Gnosis 团队并不打算出售总代币的固定百分比。相反,释放的代币数量会随着拍卖时间的延长而增加,直到达到售出 9 百万美元 GNO 代币或筹集 1250 万美元的上限。尽管拍卖设置旨在减缓参与活动,但售卖时间不到 15 分钟就结束了。

影响者营销

区块链是一种新技术,初创公司本质上是相当具有风险的。由于这两个原因,投资者经常寻求已建立的领域专家的意见、建议和观点。在这个新领域,专家通常是一些知名人士,或者最近公开发表了一些准确的预测。

在社交媒体时代,出现了许多 YouTube 频道、播客和其他组织,它们充当 ICO 生态系统的守门人和评论员。这些成功的节目中,有超过 10 万名对加密货币和 ICO 项目感兴趣的订阅者。

因此,成功的 ICO 非常有动力上这些节目以提高他们项目的知名度。反过来,这些节目的运营商可以根据市场情况收取任何数量的费用来获得曝光。对于高曝光的节目和播客来说,单次露面收取 5-20,000 美元美元的费用并不罕见,费用可以用法定货币、加密货币和项目代币的组合来支付。

公关活动

主流媒体的关注对每个项目都有帮助。公关可能是 ICO 营销中最耗时的环节之一,因为很少有 ICO 团队拥有必要的媒体联系。公关代理可以提供帮助,但往往价格昂贵。不管是否使用公关代理,ICO 在开始之前应该先仔细安排好其他一切。主流媒体的关注将带来很多关注,这也意味着会有更多的人寻找缺陷。一个精心执行的白皮书、稳固的网站、一个良好清晰的计划和出色的团队简介都是重要的。

一般情况下,一旦项目稳固,就应该开始一些公关活动。通常来说,较小的场所和出版物会更受欢迎。一个聪明的 ICO 团队将与当地媒体、本地播客、区域性商业中心、通讯等等开始合作。一旦 ICO 有了一些媒体曝光,就会更容易吸引更大的出版物。

当然,这种公关活动需要与内容营销和社区建设活动相辅相成。

内容营销

ICO 通常至少有一人,通常是整个团队,至少在某种程度上进行内容营销。内容营销的目标是提供有关项目、其目标以及它将如何影响世界的信息,通常与销售无关。内容营销通常通过公司博客和平台进行,比如 Medium 或 Steemit,这些平台上会有许多可能通过不同文章介绍项目的普通用户。

内容营销的另一个方面是社交内容——Twitter、LinkedIn 帖子、Facebook 等。其目的是相同的——与可能不会得知该项目的人建立联系,并建立一种联系、信任和目的感。

内容营销通常发布来自团队成员,不管他们是否实际写下了内容。这有助于让团队显得可接触且真实——当一些 ICO 欺诈项目虚构团队成员时,这是一个严重的问题。

良好的内容营销还有助于推动社区的增长和参与度。拥有出色内容营销的 ICO 团队比没有的团队更有可能取得成功。

ICO 评论者

随着 ICO 营销的增长和项目数量的增加,市场开始寻找更好的评估项目的方式。许多公司纷纷涌现,提供 ICO 项目的公正评价。自封的专家们会根据不同的标准评价项目,以推荐项目在技术和投资成功方面的优劣程度。然而,许多项目已经开始向评论者支付费用,或者至少提出支付费用,以获取更高的评级。

虽然有很多 ICO 评级网站,但目前最知名的是ICOBenchICORating。许多项目都在努力获得这些网站的高分,以便将评级纳入其营销材料中。这些评级是否准确仍在讨论中,并且可能会发生变化。然而,ICO 能获得的每一个信任标志都一定会有所帮助,所以许多项目都在努力(公平或不公平地)获得良好的评级。

智能合约和原型开发

在 ICO *的开始阶段,项目通常只需要白皮书、一个团队和一个涉及区块链的想法就能筹集资金。很快,许多项目筹集了资金,但要么失败,要么卷入了漫长的法律纠纷。因此,市场变得更加成熟,越来越多的投资者希望在购买 ICO 之前看到一定程度的工作原型。在许多司法管辖区中,拥有一个实际运作的产品使得实用性代币与证券代币的情况更具有可能性,并减少了后期法律问题的潜在风险。

原型的需求对于资金不足或非资助项目而言构成了一个准入壁垒,使它们更接近于传统的与风险投资公司和天使投资者筹款。在许多情况下,这些项目需要在进行 ICO 之前获得天使或种子资金。

由于原型的需求,一些公司已经开始提供区块链原型设计服务,他们与没有自己的开发团队的业务利益相关者合作,建立可以推向市场的东西。

根据所使用的区块链系统的不同,还需要进行智能合约和代币开发工作。特别是在以太坊中,需要进行仔细的测试,因为一旦部署,代码就是不可变的——错误无法修复。

代码审计

对于许多以太坊的 ICO 项目,最后一步之一是代码审计。在代码审计中,会引入信任的第三方来检查代码是否存在可能的安全问题或违反最佳实践。通常,这种审计会公开发布,同时发布修复任何重要问题的更新代码。

赏金活动

赏金活动是指项目承诺以其本地代币支付服务的情况。这些服务通常在某种程度上是推广性的,例如将白皮书翻译成不同语言、在 Medium 或 Steemit 上

推荐阅读