区块链快速参考(三)

原文: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,最低购买额为$300(或等值的以太币或比特币),私人预售价格可能是$0.08,但最低购买额为$1,000。

良好的预售实践

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

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

  • 一个成熟的社区

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

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

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

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

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

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

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

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

公开销售

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

定价销售

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

无上限销售

无上限销售旨在尽可能筹集资本。方法是确定销售时间和通常的代币数量。随着人们的投资,他们将获得与其投资总额相等的代币份额。每个人会收到的代币数量通常直到 ICO 结束都不能确定。例如,如果在第一天,一名投资者投入了$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 上撰写文章,或者其他有助于传播消息的任务。通过提供赏金,团队既传播了代币(从而传播了生态系统),又激励人们宣传该项目。毕竟,通过持有代币,执行赏金的人如果项目成功将受益。

对于什么可以、什么不能成为赏金没有真正的限制。对于每个团队来说,重要的是确保执行赏金的人得到奖励,否则很容易把支持者变成敌人。

空投

空投是一种推广方法,团队向网络上符合特定条件的所有账户发送免费代币,通常涉及最低余额和活动要求。空投旨在实现两个目标:提高对项目的认识和兴趣,并为生态系统建立用户群。

空投变得流行的原因之一是它们也被视为一种在没有被视为证券的情况下分发代币的方法,因为没有金钱交易。这种方法在法律上仍未经测试。

路演

路演是指一个项目的核心团队从一个会议到另一个会议,再到世界各地的其他活动中宣传他们的项目。目标是将项目展示给尽可能多的人,并与尽可能多的投资者和其他影响者见面。路演是耗费精力和金钱的,但对于项目获得强大的投资者支持通常是必要的。许多投资者,尤其是大投资者,希望了解创始人,并看看他们是什么样的人。如果投资者和影响者对项目领导层有强烈的信心,他们更有可能投资。通过面对面建立关系是一个方法,对于许多项目来说,与投资者见面的最简单方法是通过参加多个活动,有时是几个月的时间。理想情况下,这个过程应该在 ICO 之前很长时间开始,以便项目团队成员有足够的时间建立这些关系,并在不显得贫乏或索要钱财的情况下获得对想法的反馈。

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

ICO 市场正在经历成长的痛苦。作为一个全球性的、大部分不受监管的市场,存在着许多传统筹资所不存在的问题和挑战。对 ICO 项目进行了许多批评。

产品市场适配和吸引力的证明

在更传统的由风投支持或自筹资金的项目中,项目必须通过某种形式的营销来证明其价值是必要的。通常情况下,这将涉及到拥有客户、收入和增长,如果不是盈利的话。然而,对于 ICO 项目来说,资金是在大多数项目推出或展示 MVP 之前筹集的。在许多情况下,根本没有证据证明团队的交付能力。因此,ICO 买家无法确信项目能否成功地解决市场上的真正问题。

所有这些脆弱项目的结果是高失败率。bitcoin.com 的一项调查发现,仅在 2017 年,几乎一半的项目已经失败、停止运营或仅仅消失了。

低准入门槛

ICO 吸引人的一个原因是,传统的风投资金对世界上大多数地方来说都非常难以获得。如果一个人不住在纽约市、旧金山或其他一些主要的技术中心,那么他们接触到严肃的投资者网络的可能性就要小得多。通过 ICO,任何人、任何地方都有可能尝试吸引早期投资。然而,缺点是,进行投资的尽职调查水平和技能可疑,可靠信息的数量也很少。

一个 ICO 通常以白皮书的发布开始,这是一份相对简短的文件,概述了网络的价值、代币和未来计划。由于技术是新的,并且典型的 ICO 活动时间较短(3-4 个月),投资者几乎没有机会进行广泛的尽职调查。此外,因为基于区块链的初创企业不需要展示财务状况(因为他们没有任何财务状况)、牵引力或产品市场契合度(因为还没有产品),所以很难基于哪些数据进行评估。

随着时间的推移,对评估区块链初创企业和 ICO 的一致标准可能会逐步形成,但当前尚不存在。

一个项目是否真的需要区块链?

由于准入障碍低且可用资本数量巨大,公司要尽可能进行 ICO 会面临巨大的财务压力。能够筹集大量资本而不发行股权,并且没有明确定义的法律义务,这一机会被视为绝佳,不容错过。

在许多情况下,项目并不真正需要区块链或代币。事实上,除非区块链的特性对项目绝对至关重要,否则没有区块链会更便宜、更容易前进。要求区块链,项目将需要充分利用区块链功能:去中心化治理、不可变性、真实数字稀缺性等。同样,将代币发布在公共区块链上的项目必须牺牲隐私和速度。任何评估区块链项目的人务必记住这些问题。

误导性代币实践

尽管 ICO 和 IPO 在名称上相似,但区块链代币与公司股份之间实际上没有真正的联系。持有由公司支持的区块链代币不提供对公司利润、行为或业务的所有权、影响或权利。代币的价值完全由网络本身的价值以及网络所能实现的内容驱动。此外,如果一家公司创建了一个区块链项目然后放弃了它,代币持有者可能无法申诉。

因此,代币释放方式对公司支持区块链项目的方式有很大影响。例如,如果一个团队在 ICO 中出售了网络代币的 90%,那么在未来,他们将只获得代币价值上涨的 10%的好处。相比之下,他们可能手头有数百万美元的现金。因此,团队可能决定只对区块链项目进行有限的关注,并且在改善网络方面没有太大的紧迫感。一个拥有数千万美元的小团队可以支付自己丰厚的薪水直到他们去世并且非常安全。

另一方面,只释放 10%的代币的团队会受到强烈的激励,以增加代币的价值,但会出现不同的问题:中心化。一小群人会极大地控制网络。在大多数情况下,这将击败区块链技术的大部分目的,导致前面的问题——他们真的需要区块链吗?

代币的另一个问题是它们的流动性。高流动性的代币可能会激励投资者团队制造网络炒作,而非实质性内容。如果一个项目能够制造足够的轰动,他们的代币价值可能会增加十倍。如果代币具有流动性,团队成员和早期投资者可能会倾销代币获得巨额利润,然后离开。项目失去了利益关系,可能会被抛弃。

出于这些原因,高质量的项目通常有一些投资者和团队锁定系统,防止团队成员和大型投资者在一段时间内完全出售代币,然后进行缓慢的分配,逐步释放代币。通过阻止流动性,团队必须专注于长期价值而不是短期操纵。

合法性

在讨论区块链 ICO 的法律问题之前,重要的是要明确指出,本书的作者都不是律师,本书中的任何内容都不能构成或替代优质的法律建议。区块链技术的规则在各国之间差异巨大,并且正在迅速发展。对于任何区块链项目,我们建议您咨询一位在该领域有经验的熟练的当地律师。

区块链代币的创建导致了一个全新的资产类别,这一类别与现有的股票、货币或股权类别并不相符。而且,由于公共区块链是全球性的,不清楚如何将本地法律应用于区块链的使用。

实用性与证券

在美国,有一个区分实用代币和证券的区别。实用代币可以被描述为诸如游乐场代币、漫画书或棒球卡之类的东西。虽然该项物品的市场价值可能会上下波动,但购买它的根本原因(以及它的宣传方式)与谋求利润无直接关系。有人购买游乐场代币玩游戏,购买漫画书阅读,购买棒球卡收藏。

许多代币试图定位自己为实用性,以避免触发严重限制销售并要求与 SEC 正式注册以及向投资者进行其他披露的美国证券法。

在其他情况下,ICO 发行SAFTSimple Agreement for Future Tokens。SAFT 绝对是一种证券,发行人接受这一点是为了在网络启动之前向认可投资者出售。一旦网络启动,这些 SAFT 协议将转换为网络上的代币。

安全与实用代币分类的复杂性受到了美国证券交易委员会(SEC)的声明的影响,该声明称代币可能随着时间的推移变得更像或更少像证券 —— 一开始作为证券或实用代币,然后逐渐演变为另一种类别。对于试图合法运作的项目来说,这种模糊的定义可能令人沮丧。

其他考虑因素

除了证券法外,区块链项目还可能被视为货币,因此可能会遇到另一套法律:监管银行和其他货币处理企业的法律。在美国和其他地方,从事汇款、支付和其他常见区块链用例的公司可能被视为货币传输者。在美国,这类企业必须按州进行许可。其他用例可能需要银行牌照。

对于利用区块链的全球企业来说,要完全遵守各种法律和法规的监管压力可能是巨大的 —— 包括了解您的客户法、反洗钱法、货币传输法、银行法、证券销售和营销法等等。

由于这些原因,许多区块链公司倾向于在友好的司法管辖区设立总部,希望在其主要运营地合法,并在以后(如果有必要的话)再处理其他地区的问题。

可持续性

ICO 空间中的项目(例如区块链本身)以独特的方式运作。根据项目的不同,它们可能按照传统企业的方式运作,但也可能像中央银行一样 —— 增加和减少流通中的货币。对于传统公司来说,盈利至关重要且简单明了,因为公司提供产品并从销售中获得回报。然而,如果你还要从无中创造一种货币,并将其出售和交易为其他产品,或者如果这种货币本身就是产品,那么情况就会更加复杂。如果项目的可持续性来自于销售货币,那么市场需求的下降可能会导致灾难性的后果,因为购买货币的人减少,网络价值可能会出现巨大波动,几乎瞬间就会发生。就像失败的国家经济一样,货币信任可能会消失,因此超级通货膨胀会随之而来,因为个别代币几乎变得毫无价值,无法作为交换媒介。

由于基于公司的区块链项目还是非常新颖的,对于这些公司而言,长期可持续模式究竟是什么样子还不太清楚。早期项目,如比特币和以太坊,并不需要成为传统项目,而只需要吸引足够的货币兴趣来支付一小部分开发人员。

ICO 的优势

尽管存在各种问题,ICO 具有传统筹资方式所没有的优势。实际上,繁荣的 ICO 市场带来的一个启示是,对于初创科技公司来说,传统的资本途径过于严格限制了。人们对于获得早期阶段科技公司的投资机会有着明显的渴望。

流动性

ICO 投资者最大的优势是潜在的流动性。在传统的股权融资中,支持者需要等待一个流动性事件——要么是并购,要么是上市。其中任何一种选择可能需要很长时间,甚至可能永远不会发生。多年过去了,没有任何流动性并不罕见。而使用代币,销售可以在初始筹资完成后迅速进行。许多代币仅在初始发行后几个月就会进入市场。这使得成功的投资者可以部分退出他们的头寸,获取利润,并重新投资。退出的能力也使这些投资者能够重新进入,从而增加了总体早期阶段资金的可用池。

缺乏门户守卫

传统的股权投资受到严格监管。这旨在保护投资者,但也作为一个阻碍较小参与者进入市场的障碍,这些人可能有多余的资本可以投资,但由于他们的财富不足,无法投资。因此,这些投资者直到一家公司上市才能进行投资。结果,较小的投资者错过了风险高,回报高的选项,而风险投资家则可以获得这些选项。

较小投资者参与的能力意味着投资者粉丝,那些投资的原因不仅仅是纯粹的利润动机的人,可以成为一个更强大的力量。值得问的是,哪种投资更好——一个能够说服风险投资家向他们提供 1000 万美元的公司,还是一个能够说服 1000 人交出 10000 美元的公司。

最低投资额

许多 ICO 的最低投资额都在数百美元甚至低到数千美元。这远远低于传统股权融资中种子轮所需的数十万甚至数百万美元。因此,可能的投资者群体呈指数增长。此外,通过将投资分散到更大范围的人群中,任何一个投资者的风险都更为有限。总的来说,ICO 提供了一种更容易受到欺诈的资金模式,但也更加民主,更适合那些可能并不把利润动机作为首要考虑的项目。对于社会公益的项目,这些项目可能从不可能对风险投资家产生经济意义中得到支持,但可能会在 ICO 中得到支持,因为有人愿意支持该事业,并将获利机会视为额外奖励。

著名的欺诈行为

在短短几个月内仅凭一份白皮书和一些广告就能筹集大量资金的能力自然会引发一些想要捞一把的坏人。许多 ICO 开始涌现出来,有假团队、假项目,甚至是质量可疑的项目。一旦项目筹集到了资金,团队就会消失。虽然已经有一些人被逮捕,但仍然有很多骗子和欺诈者迄今为止逃脱了投资者的资金。

Onecoin

OneCoin 是一个假扮成区块链项目的国际庞氏骗局。这个项目被印度称为骗局,而来自赛里斯、保加利亚、意大利、越南、泰国、芬兰和挪威的官方警告投资者。在全球范围内已经发生了多起逮捕和查封事件,但 OneCoin (www.onecoin.eu/en/) 网站仍在运营。

Pincoin 和 iFan

Pincoin 和 iFan 是两个声称来自新加坡和印度的项目,但实际上由越南一家名为现代科技的公司秘密支持,总部位于胡志明市。它目前被认为是 ICO 历史上规模最大的骗局,成功骗取了 32,000 人超过 6.6 亿美元的资金。骗局的领导者举办了活动和会议,并竭尽全力说服投资者项目的可行性。实际上,这是一个庞氏骗局,早期投资者是用后来投资者的钱支付的。一旦筹集到资金,团队就会消失,资金也随之消失。

Bitconnect

Bitconnect 长期被指责为庞氏骗局,因为他们向其 BCC 币的持有者承诺了巨额回报。Bitconnect 运营着一个交易所和借贷计划,用户可以将 BCC 币借给其他用户以获取贷款利息。在州议员发出停止信函后,该公司停止了运营。该计划崩溃了,与此同时,币值也崩溃了,导致大多数投资者蒙受巨大损失。一起集体诉讼正在进行中。

其他问题

除了明显的欺诈行为之外,ICO 还遭受了其他问题的困扰。由于涉及的资金数额以及大部分资金是通过无法撤销或拦截的加密货币交易筹集的,ICO 成为了黑客的完美目标。

重大黑客事件

致作者 请在这里添加一些内容

DAO

早期的一个去中心化项目被称为DAO,或去中心化自治组织。DAO 旨在为区块链项目提供一种类似风投基金的功能,并建立了这样一个机制,人们可以使用以太坊购买组织的股份(及其利润)。该项目本身是使用以太坊区块链和智能合约来控制资金和管理投票的。这个项目取得了巨大成功,成功筹集了约 2.5 亿美元的资金,当时以太坊的交易价格大约为 20 美元。

不幸的是,DAO 运行所使用的智能合约代码存在漏洞,使得黑客能够利用其中的一个漏洞。由于智能合约中存在微妙的错误,攻击者能够在余额更新之前多次提取资金。黑客随后能够随心所欲地提取资金,迅速耗尽价值数千万美元的以太币。这次黑客攻击彻底改变了以太坊项目的走向,导致了一次硬分叉——大多数用户投票决定分割网络并退还被盗资金。少数人创立了以太经典,其中所有攻击行为都被允许继续存在。这两个网络仍然独立运行。

Parity

Parity 团队是整个以太坊生态系统中最受尊敬的团队之一。由以太坊创始人之一 Gavin Wood 领导,他们是世界上经验最丰富、技能最高超的区块链开发者之一。不幸的是,每个人都是人,Parity 钱包产品存在漏洞。这个漏洞允许攻击者远程清空钱包,导致数百万美元的以太币被盗。值得庆幸的是,这次攻击没有自动化,这给了生态系统时间去发现并做出响应。

漏洞已经修复,但修复过程中产生了一个新的错误。这个错误允许新的攻击者向钱包发出 kill 命令,冻结所有资金。截至撰写时,超过 2.6 亿美元的以太币仍然被锁定。社区仍在努力寻找一种解救资金的方法。

从 Parity 钱包的黑客攻击中可以得出的教训是,即使是最好的团队也会犯错误,并且任何在以太坊上运行的代码都必须有某种升级路径至关重要。很明显,在生态系统改进之前,任何在以太坊上运行的代码都应被视为有风险。如果连创始人都不完美,这就告诉你正确做事的难度。

安全 ICO

如果考虑进行 ICO,那么确保尽一切努力保护资金免受攻击至关重要。在这里,我们将讨论一些常见的攻击以及如何防范它们。

SSH 密钥锁定服务器

理想情况下,ICO 团队使用的所有服务器都应该将登录访问权限限制为已知的 SSH 密钥白名单。这意味着只有团队知道的计算机才能登录服务器。更好的情况是,这些相同的计算机在 ICO 开始前和期间保持关闭并断开与互联网的连接。因此,即使该计算机被入侵,也无法用于攻击 ICO。

DNS 安全

ICO 被攻击的一种方式是攻击者创建 ICO 网站的克隆,然后通过黑客 DNS 将域名重定向到攻击者控制的计算机。 新网站看起来与官方网站完全相同,除了发送资金的地址被更改。由于大多数地址是十六进制的而且不容易区分,这是一个容易忽略的细节。 如果在繁忙的 ICO 期间甚至只发生几分钟,黑客就可以带走数十万甚至数百万美元。

许多 DNS 提供商有不同的方式来锁定 DNS,所有这些安全措施都应该启用。此外,应该使用 DNS 检测服务,例如 DNS Spy,定期实时检查是否有任何变化。采取这些对策有助于确保试图劫持 DNS 窃取资金的攻击者不会成功。

入侵检测

用于运行 ICO 网站的任何机器都应具有某种程度的入侵检测软件作为备份。如果因某种原因错过了某些细节,团队被通知在关键服务器上发现任何可疑行为是至关重要的。市场上有许多入侵检测产品。要寻找的关键功能是权限修改检测和文件修改检测(例如,更改 HTML 文件以更改以太坊地址以发送资金的地方)。

购买相关的域名

通过购买听起来或看起来相似的域名,黑客还可以攻击 ICO。例如,如果一个团队正在使用myIcoDomain.io,攻击者可能会购买myIcoDomain.net。 团队应该尽可能购买尽可能多的相关域名,特别是最常见的扩展名。如果攻击者拥有这些相关域名中的一个,他们可以轻松地向潜在买家发送电子邮件,在社交媒体上发布消息等等,以一种可能会混淆一些买家的方式。 就像 DNS 攻击一样,攻击者通常会建立一个外观一样的网站,除了关键的付款细节。

此外,ICO 团队应明确官方域名,并定期和主动告知用户不信任其他任何域名。

监控社交媒体渠道

攻击者还可以尝试通过向 Facebook 组,电报组,discord 频道和其他通讯平台注入信息来窃取资金。例如,一个用户可能会出现并宣称他们正在帮助团队,所有人都可以填写一些调查或其他。 调查收集电子邮件地址,自然地,然后这些电子邮件地址会收到看起来像来自相关域的电子邮件,以便发送资金或获得特别销售。

谁可以代表 ICO 讲话,谁不可以应该非常清楚,任何声称代表 ICO 团队但事实并非如此的人应该立即被标记和禁止。

多重签名钱包

ICO 募集的资金应该转移到多重签名钱包中。这是因为另一个可能的攻击是篡改持有资金的钱包,使攻击者可以将所有资金转移到自己名下。大多数主要加密生态系统都存在多重签名钱包,并且极大地增加了攻击者的难度。他们现在不再只需窃取一个人的私钥,而是必须同时窃取多台计算机上的多个密钥并将它们全部使用。在以太坊生态系统中,Gnosis 钱包在这方面被证明是健壮而可靠的,已被多个成功团队使用而未发生事故。

代码审计

尽管这在一般情况下是最佳实践,但对于任何众筹销售代码进行公开代码审计有助于降低被黑客攻击的可能性。通过积极主动地与技术娴熟的第三方寻找并清除漏洞,团队不仅增加了对项目的信任,还减少了漏掉黑客可能利用的东西的机会。

结论

到目前为止,您应该已经对 ICO 中涉及的内容有了一个很好的了解,并对其中所需的巨大工作有了一些了解。一个典型的 ICO 可能持续数分钟至数月,但为了为公众和私人投资者完成营销材料,需要做大量的准备工作。任何 ICO 项目都应该非常小心安全问题,因为一个被黑客攻击并且失去资金的 ICO 将很难激发对项目和未来项目的信心。

许多 ICO 项目失败了,要么是因为缺乏营销,要么是因为团队不合适,要么是因为无法吸引社区。轻松获得资金的早期时代已经结束。尽管如此,ICO 平均而言比传统的获得资金方法(例如接触风险投资家)成功得多。

在下一章中,我们将研究如何创建自己的代币或加密货币。

参考文献

  • www.forbes.com/sites/laurashin/2017/09/21/heres-the-man-who-created-icos-and-this-is-the-new-token-hes-backing/#1191f6431183

  • www.forbes.com/sites/kashmirhill/2014/06/03/mastercoin-maidsafe-crowdsale/#2b8c819d207d

  • blog.ethereum.org/2014/07/22/launching-the-ether-sale/

  • coinmarketcap.com/all/views/all/

  • news.bitcoin.com/46-last-years-icos-failed-already/

  • www.bloomberg.com/graphics/2016-who-gets-vc-funding/

  • www.mirror.co.uk/news/uk-news/who-wants-onecoin-millionaire-you-7346558

  • 你需要区块链吗?

  • 比特币价格:什么是 SAFT 区块链,这场加密筹资热潮正在颠覆风投?

  • SEC 主席克莱顿:代币的使用可能向着或远离成为证券的方向发展

  • 揭秘前五大加密货币骗局

  • 城市调查欺诈案件

  • 投资者对 Bitconnect 停业后提起集体诉讼

  • 投资者起诉加密货币初创公司 Centra Tech,指控其进行 ICO 诈骗

  • DAO、黑客、软分叉和硬分叉

第二十章:创建您自己的货币

到目前为止,我们已经广泛讨论了区块链、比特币和替代币。我们讨论了比特币、其区块链和组成区块链的其他元素的各种复杂性。到目前为止,以太坊一直是本书大部分内容的主要讨论对象。我们还阅读了其他基于区块链的项目,其中包括基于货币的项目。

尽管对区块链和比特币的开发知识有限,以太坊已经实现了制作去中心化应用程序的可能性。在交易所上有各种基于以太坊和其他类似项目构建的代币,得到了支持者和社区的认可。

在本章中,我们将讨论以下主题:

  • 加密货币的类型

  • 设置 Litecoin

  • 分叉 Litecoin 存储库

  • 在 Litecoin 存储库顶部创建自己的代币

理解加密货币的类型

有三种方式可以创建自己的加密货币。每种方式都比其他方式有其自身的优势。在创建货币之前,重要的是了解涉及其中的所有复杂性,以及您的货币与当前在交易所上可用的其他现有货币相比提供了什么。您可以在coinmarketcap.com找到流行的货币列表。

基于现有区块链的代币

这些代币是基于现有区块链平台的,例如以太坊、Omni、NEO 等。我们已经在之前的第十五章中讨论了代币的开发,以太坊开发。代币有助于更快地创建代币,并支持快速的上市策略,以便大部分时间可以投入到自托管区块链的进一步开发中。

有各种区块链项目的示例,它们开始作为代币,一旦它们启动了拥有完整支持的区块链和代币的项目,就会成功进行 ICO。由于与货币相比,开发代币更快且更容易,因此这类项目可以很容易地获得动力,并且在很短时间内启动,大部分时间可以投入到其他重要任务中,例如白皮书的创建、ICO 等。

从头开始创建一个新的区块链

在这种方法中,可以从零开始创建自己的区块链。借鉴比特币和其他区块链平台的经验将有助于创建代币,这将允许您集成新功能,并使用不同的共识技术。

具有自己起源块的分叉区块链

本章的主要焦点是关于这种类型的货币开发;我们将在引入以太坊、Counterparty、NEO 等平台后,创建完整的具有自己区块链的代币。通过采用比特币、Litecoin 等现有货币的分叉来创建自己的区块链资源有限。

Litecoin 的开发

莱特币是基于比特币构建的首批加密货币之一。莱特币的源代码从比特币的核心代码中分叉,包括比特币的钱包和其他资源。莱特币相对于比特币的主要变化是 PoW 算法是脚本而不是比特币的 SHA-256。此外,莱特币的硬币供应限制为 84,000,000 LTC,区块时间为 2.5 分钟。

这个过程

在这一章中,我们将从莱特币源代码中分叉并在其基础上进行工作。以下是涉及步骤的简要概述:

  • 制定项目的布局和要求。

  • 选择算法,有多种算法可供选择。在这一章中,我们将使用脚本算法,这是莱特币本身使用的。

  • 共识类型:可以根据社区支持使用 PoW、PoS 或其他共识类型。在这一章中,我们将使用 PoW 共识类型,这需要矿工为硬币挖矿并确认交易。

  • 硬币名称:必须决定硬币的名称。

  • 硬币缩写:例如,比特币使用 BTC,莱特币使用 LTC;类似地,硬币需要一个缩写,所以最好让缩写与硬币名称相似。

  • 连接端口:重要的是选择与网络连接的端口;这个端口将由连接到区块链网络的每个节点使用。

  • 区块奖励:重要的是设置区块奖励,即在矿工挖矿成功时获得的硬币数量。

  • 区块减半时间:这是区块奖励减半的时间,例如,在比特币中,每隔 210,000 个区块奖励减半,这控制了硬币的生产。

  • 硬币供应限制:这是所有矿工总共生产的硬币数量的限制;这通常由区块减半时间控制,因为在一定数量的区块后,挖矿更多区块将不可行。

  • Coinbase 成熟度:重要的是设置在区块挖矿奖励中获得的硬币在可以花费之前需要挖矿的区块数量。

  • 确认:这是在确认交易之前需要挖矿的区块数量。

  • 难度重新调整时间:例如,比特币的难度重新调整时间是两周;类似地,在开发过程中也需要设置这个时间。

  • 区块挖矿时间:挖一个区块所需的总时间。

  • 种子节点:这是硬币的起始节点;重要的是要有一个始终在线的节点,直到足够多的节点同步并连接到网络为止。可以接受多个种子节点地址的存在。我们还可以选择 DNS 种子,它们只不过是包含区块链网络种子节点地址的 DNS 服务器。

  • 钱包 UI:核心钱包建立在 QT 框架上,其 GUI 可以根据需求更改。

  • 图形资源:可以在 Litecoin 源代码中选择并替换加密货币的图标和其他图形资源;建议保持图标的尺寸属性。

创建自己的加密货币

一旦定义了先前列出的参数,就是时候处理源代码并进行必要的更改了。

设置 Litecoin

在本地机器中设置 Litecoin 环境是很重要的;源代码在 GitHub 上可用:github.com/litecoin-project/litecoin

平台选择

选择要设置环境的构建平台是很重要的。您可以在源代码的doc子文件夹中找到所需的构建指令。那里为您提供了每个首选平台的所需指令文件,以便您按照这些步骤安装 Litecoin 核心和钱包。

在本节中,我们将使用 Max OS X 构建指令,尽管还提供了其他平台的指令。

准备工作

编译所需依赖项需要安装xcode。应在终端中执行以下命令:

xcode-select --install

接下来需要安装在 macOS 上的软件包管理器brew。以下命令用于安装brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

依赖项安装

安装了brew之后,下一步是使用以下命令安装所需的依赖项:

brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python3 qt libevent

上述命令将根据需要安装所有必要的依赖项:

构建指令

第一步是在根目录或其他目录中克隆 Litecoin:

git clone https://github.com/litecoin-project/litecoin
cd Litecoin

使用以下命令执行BerkleyDb的安装:

./contrib/install_db4.sh .

Litecoin-core 的构建使用以下 make 命令:

./autogen.sh
./configure
make

您可以运行单元测试,确保构建成功且没有任何错误:

make check

展示了包含.app包的.dmg的部署:

make deploy

设置我们自己的加密货币

现在,是时候着手处理我们自己的加密货币了;为此,重要的是检查克隆目录和 Litecoin,并进行备份,以防有任何步骤出现致命错误。

根据我们在之前某个部分列出的参数,现在是在必要的位置替换参数的时候了。

src目录包含 Litecoin 核心源代码,大多数参数需在其中设置。在chainparams.cpp文件中,将缩写从LTC更改为我们选择的缩写。同样,建议更改其他文件中看起来合适的缩写。

端口选择

现在,需要更改端口,以便我们的区块链在网络中的所有节点的相关端口上运行。

init.cpp文件中应更改连接端口。

bitcoinrpc.cpp文件中应更改 RPC 端口。

区块相关参数的设置

validation.cpp文件中,应编辑以下参数:

  • 区块价值

  • 区块奖励

  • 区块时间

  • 难度重新定位时间

  • 难度重新定位比例

GetBlockSubsidy()函数中应更改区块值:

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
 int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
 // Force block reward to zero when right shift is undefined.
 if (halvings >= 64)
 return 0;

 CAmount nSubsidy = 50 * COIN;
 // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
 nSubsidy >>= halvings;
 return nSubsidy;
}

金额限制

现在,是时候设置硬币限制和最小值了,可以在amount.h文件中完成相同的操作:

typedef int64_t CAmount;

static const CAmount COIN = 100000000;
static const CAmount CENT = 1000000;

static const CAmount MAX_MONEY = 84000000 * COIN;
inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); }

#endif // BITCOIN_AMOUNT_H

coinbase 成熟度数字

要更改 coinbase 的成熟度,在qt子文件夹中,应更改transactionrecord.cpp文件以设置在挖矿的硬币可花费之前要找到的所需区块数:

  if (nNet > 0 || wtx.IsCoinBase())
    {
        //
        // Credit
        //
        for(unsigned int i = 0; i < wtx.tx->vout.size(); i++)
        {
            const CTxOut& txout = wtx.tx->vout[i];
            isminetype mine = wallet->IsMine(txout);
            if(mine)
            {
                TransactionRecord sub(hash, nTime);
                CTxDestination address;
                sub.idx = i; // vout index
                sub.credit = txout.nValue;
                sub.involvesWatchAddress = mine & ISMINE_WATCH_ONLY;
                if (ExtractDestination(txout.scriptPubKey, address) && IsMine(*wallet, address))
                {
                    // Received by Bitcoin Address
                    sub.type = TransactionRecord::RecvWithAddress;
                    sub.address = EncodeDestination(address);
                }
                else
                {
                    // Received by IP connection (deprecated features), or a multisignature or other non-simple transaction
                    sub.type = TransactionRecord::RecvFromOther;
                    sub.address = mapValue["from"];
                }
                if (wtx.IsCoinBase())
                {
                    // Generated
                    sub.type = TransactionRecord::Generated;
                }

                parts.append(sub);
            }
        }
    }
    else
    {
        bool involvesWatchAddress = false;
        isminetype fAllFromMe = ISMINE_SPENDABLE;
        for (const CTxIn& txin : wtx.tx->vin)
        {
            isminetype mine = wallet->IsMine(txin);
            if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;
            if(fAllFromMe > mine) fAllFromMe = mine;
        }

        isminetype fAllToMe = ISMINE_SPENDABLE;
        for (const CTxOut& txout : wtx.tx->vout)
        {
            isminetype mine = wallet->IsMine(txout);
            if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;
            if(fAllToMe > mine) fAllToMe = mine;
        }

        if (fAllFromMe && fAllToMe)
        {
            // Payment to self
            CAmount nChange = wtx.GetChange();

            parts.append(TransactionRecord(hash, nTime, TransactionRecord::SendToSelf, "",
                            -(nDebit - nChange), nCredit - nChange));
            parts.last().involvesWatchAddress = involvesWatchAddress; // maybe pass to TransactionRecord as constructor argument
        }

我们必须将transactionrecord.cpp文件中的交易确认计数更改为设置此参数,根据我们的要求。

创世块创建

创世块是从validation.cpp文件中的LoadBlockIndex()函数创建的:

bool CChainState::LoadBlockIndex(const Consensus::Params& consensus_params, CBlockTreeDB& blocktree)
{
    if (!blocktree.LoadBlockIndexGuts(consensus_params, this{ return this->InsertBlockIndex(hash); }))
        return false;

    boost::this_thread::interruption_point();

    // Calculate nChainWork
    std::vector<std::pair<int, CBlockIndex*> > vSortedByHeight;
    vSortedByHeight.reserve(mapBlockIndex.size());
    for (const std::pair<uint256, CBlockIndex*>& item : mapBlockIndex)
    {
        CBlockIndex* pindex = item.second;
        vSortedByHeight.push_back(std::make_pair(pindex->nHeight, pindex));
    }
    sort(vSortedByHeight.begin(), vSortedByHeight.end());
    for (const std::pair<int, CBlockIndex*>& item : vSortedByHeight)
    {
        CBlockIndex* pindex = item.second;
        pindex->nChainWork = (pindex->pprev ? pindex->pprev->nChainWork : 0) + GetBlockProof(*pindex);
        pindex->nTimeMax = (pindex->pprev ? std::max(pindex->pprev->nTimeMax, pindex->nTime) : pindex->nTime);
        // We can link the chain of blocks for which we've received transactions at some point.
        // Pruned nodes may have deleted the block.
        if (pindex->nTx > 0) {
            if (pindex->pprev) {
                if (pindex->pprev->nChainTx) {
                    pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx;
                } else {
                    pindex->nChainTx = 0;
                    mapBlocksUnlinked.insert(std::make_pair(pindex->pprev, pindex));
                }
            } else {
                pindex->nChainTx = pindex->nTx;
            }
        }
        if (!(pindex->nStatus & BLOCK_FAILED_MASK) && pindex->pprev && (pindex->pprev->nStatus & BLOCK_FAILED_MASK)) {
            pindex->nStatus |= BLOCK_FAILED_CHILD;
            setDirtyBlockIndex.insert(pindex);
        }
        if (pindex->IsValid(BLOCK_VALID_TRANSACTIONS) && (pindex->nChainTx || pindex->pprev == nullptr))
            setBlockIndexCandidates.insert(pindex);
        if (pindex->nStatus & BLOCK_FAILED_MASK && (!pindexBestInvalid || pindex->nChainWork > pindexBestInvalid->nChainWork))
            pindexBestInvalid = pindex;
        if (pindex->pprev)
            pindex->BuildSkip();
        if (pindex->IsValid(BLOCK_VALID_TREE) && (pindexBestHeader == nullptr || CBlockIndexWorkComparator()(pindexBestHeader, pindex)))
            pindexBestHeader = pindex;
    }

    return true;
}

此外,在chainparams.cpp中,应将释义更改为所需的参数选择。在 Litecoin 中,使用以下参数:

    const char* pszTimestamp = "NY Times 05/Oct/2011 Steve Jobs, Apple’s Visionary, Dies at 56";

钱包地址

钱包地址是区块链的重要组成部分,如果没有正确的私钥和公钥,就无法对 Litecoin 的源进行相关更改。起始字母可以在base58.cpp文件中设置。

检查点

检查点被硬编码到 Litecoin Core 客户端中。设置检查点后,所有交易都有效直到检查点条件有效。这是为了以防有人想要分叉区块链并从完全相同的区块开始;检查点将会失效,并且不会接受任何进一步的交易。checkpoints.cpp文件帮助管理区块链源代码中的检查点:

namespace Checkpoints {

    CBlockIndex* GetLastCheckpoint(const CCheckpointData& data)
    {
        const MapCheckpoints& checkpoints = data.mapCheckpoints;

        for (const MapCheckpoints::value_type& i : reverse_iterate(checkpoints))
        {
            const uint256& hash = i.second;
            BlockMap::const_iterator t = mapBlockIndex.find(hash);
            if (t != mapBlockIndex.end())
                return t->second;
        }
        return nullptr;
   }

创意和图形

可以从src/qt/res/icons目录设置和替换图标和其他图形,该目录包含所有图像和硬币的主标志。

文件bitcoin.pngabout.png包含特定硬币的标志。

总结

通过遵循上述要点,可以使用 Litecoin 源代码创建和运行硬币;一旦硬币被创建并运行,下一步将是测试实际生产级别的使用。进一步的步骤包括编译硬币源代码并使用基于 QT 的钱包:

摘要

在这一章中,我们讨论了创建我们自己的加密货币,因为我们已经在第十五章 以太坊开发 中讨论了基于以太坊平台的代币的创建。在本章中,我们致力于创建我们自己的区块链,通过对 Litecoin 进行分叉,然后进行必要的更改,以创建具有相关参数的所需硬币。

在接下来的章节中,我们将就区块链未来的两个方面进行讨论,即可扩展性和区块链面临的其他挑战。此外,我们将讨论区块链的未来,以及它将如何塑造互联网和技术的未来,不仅仅是在基于货币的行业方面,还包括其他行业,在这些行业中,区块链充当了一个颠覆者。

第二十一章:可扩展性和其他挑战

尽管区块链技术被誉为一项重大突破,但并非没有其自身的问题。区块链技术仍处于发展的早期阶段,出现了许多问题仍在等待某种程度的解决。去中心化网络诸如区块链具有自己独特的挑战。

在本章中,我们将探讨区块链中以下关键问题:

  • 可扩展性和分散性

  • 可扩展性和成本

  • 可用性

  • 51% 攻击

  • 网络分叉

  • 灾难性的错误

  • 缺乏互操作性

  • 区块链技能的低可用性

可扩展性和分散性

区块链的一个关键优势是分散化,即消除任何单一机构来控制网络。不幸的是,这对系统性能有负面影响。区块链系统通过让网络的所有节点保持同步,通过努力达成共识,以便每台运行区块链的计算机看到相同的系统状态。网络上的更多节点通常会导致较少的中心化。这也意味着必须做更多的工作以确保所有网络参与者彼此达成一致,这限制了性能和可扩展性。

较大数量的节点妨碍性能的几个原因:

  • 每个节点通常都必须处理所有交易。要处理的交易数量越多,每个节点需要的处理能力和网络吞吐量就越多。随着需求的增加,网络变得越来越不太分散,因为能够负担必要机器的群体越来越少。在某些地区,带宽可能有限。一旦这种有限带宽被超出,该地区的人们就无法参与网络。

  • 更多节点也会导致更多的延迟,因为随着每个节点在网络上传播消息的数量增加,对等通信也会增加。尽管对等通信对这一目的非常高效,但仍可能导致滞后,并限制最大吞吐量。

  • 许多区块链要求参与节点在本地硬盘上存储整个区块链。存储需求和从网络下载链所需的极长时间作为参与的障碍,尤其是在网络不太稳定的地区。例如,以太坊区块链现在已经超过 400 GB。没有压缩,这对于大多数个人笔记本电脑和许多较旧的台式计算机来说太大,需要专用机器来运行区块链。

已经有一些尝试来提高区块链系统的性能。其中大部分都涉及一定程度的去中心化程度降低。例如,Bitshares 衍生的一套系统使用一组称为见证人的受限完整节点,这些节点仅有 21 个。只有这些计算机被用来处理和批准交易;网络上的其他机器仅提交交易到网络或观察。除了 Bitshares 团队做的许多性能优化外,他们声称理论吞吐量高达每秒 100,000 次交易。这导致了区块链的第二个问题,即与传统方法相比的成本。

区块链在商业领域

尽管 Bitshares 团队建议理论上限为每秒 100,000 次交易,他们正在使用来自 LMAX 交易所的技术和教训,后者声称能够每秒处理超过 6 百万笔交易。大多数区块链系统在实际应用中无法达到理论性能水平,大多数区块链实际上每秒的交易量都远低于 1,000 次。例如,比特币大约每秒处理七笔交易,以太坊大约每秒处理 14 笔。一台运行 MySQL 的良好服务器能够每秒处理 10,000-20,000 笔类似复杂性的交易。因此,传统方法比区块链系统更容易扩展到更大的交易量范围。

传统数据库系统的性能成本,包括分布式数据库系统,从各个方面来看都远远低于区块链系统。对于任何企业来说,雇佣这些系统的经验丰富的人员更便宜、更容易,风险更小,因为这些系统更为熟知和有文档支持。在考虑使用区块链的企业必须问自己区块链系统是否以某种方式提供了必不可少的功能,因为如果没有,其他方法更便宜、更容易、更快或所有这些方式。

考虑使用区块链的企业在使用区块链时应密切关注其扩展需求和成本模型。随着时间的推移,成本和性能可能会提高,但如果当前方法不够,不能保证它们会提高得足够快。

可用性

相对于其他系统,当前的区块链系统相对难以使用。例如,使用任何基于以太坊的 DApp 需要安装特殊浏览器或 Chrome 的 MetaMask 插件,或者在公开市场购买和转移以太币,然后学习所需应用程序的界面。每个动作都需要花费以太币,确切金额事先不一定知道,而且根据网络负载而变化。

一旦设置完成,通过基于区块链的系统发送价值相对容易,但容易出现地址错误。对于一个人来说,很难知道他们是否将价值发送到0x36F9050bb22d0D0d1BE34df787D476577563C4fC还是0xF973EE1Bcc92d924Af3Fc4f2ce4616C73b58e5Cc。事实上,ICO 被黑客攻击者在访问 ICO 主网站并简单更改目的地地址的情况下被洗劫了数百万。

一些区块链,比如 Bitshares 和 Stellar,拥有为具名账户提供直观和人类可读的规定。希望这一趋势会持续下去,可用性也会得到改善。

缺乏保护

区块链网络遭到黑客攻击时,用户通常无法申诉。无论用户是否有任何过错,这一点都是真实的。当中心化交易所被黑客攻击时,其中一种回应是用户不应该相信中心化的权威。然而,像是 parity 钱包和 DAO 的事件中,用户甚至在不信任中心化权威的情况下也可能丧失对资金的访问权。尽管一个回应可能是他们应该选择更好的钱包或项目,但实际上不清楚用户能否真实地期望这样做。对于任何 Parity 钱包的黑客事件,Parity 团队涉及了以太坊世界中一些最著名的开发者。对于这些持续存在的问题更有可能的回应是不使用区块链。要实现主流接受,区块链系统将需要更易于使用,并在遭受攻击、黑客和其他损失的情况下提供某种高级保护。

51% 攻击

所有的区块链都可能遭受共识攻击,通常被称为 51%攻击,因为比特币原始共识攻击就是可能的。每个区块链都依赖于大多数用户或利益相关者是良好的行为者,或者至少不协调反对网络的其余部分。如果大多数(甚至是大少数)强大的网络参与者在区块链系统中协调反对其余部分,它们将能够发动双花攻击,并未经同意从网络中提取大量价值。

虽然曾经是理论性的,但最近已经发生了多起成功的针对不同区块链的 51% 攻击,例如 Verge(在参考资料中找到链接)。在更为集中的系统中,例如可能存在少数极大利益相关者的权益证明系统中,如果关注的利益相关者有足够的激励,完全有可能发生类似的协调。这些激励不一定需要是经济方面的,也不一定完全在链上:政治或国际关系可能会导致一组爱国利益相关者相互勾结支持或反对其他用户。例如,大量的挖矿硬件和网络设备来自赛里斯,许多区块链开发也源自赛里斯。如果赛里斯利益相关者在与地区对手的国际斗争中发现他们拥有多数股权,这些利益相关者可能会利用他们的网络力量单方面惩罚属于对手地区的网络用户。

网络分叉

公共区块链面临的另一个问题是网络分叉的存在。比特币曾经分叉两次,分别演变成比特币和比特币现金,然后再次分叉成比特币黄金。现在有三个独立的网络声称拥有比特币的地位。虽然原始网络仍然是最主要的,但所有分叉都是由于主要网络参与者对技术未来的意见分歧而导致的。

以太坊遭遇了类似的命运,因为如何应对 DAO 黑客而分裂成以太坊和以太坊经典。大多数人认为 DAO 应该恢复被黑客攻击的资金,但是有一个强大的少数派持不同意见,问为什么这次黑客攻击要获得特殊对待?结果就是出现了两个网络,一个网络恢复了被黑客攻击的资金(以太坊),另一个则坚持无论如何都要遵循网络协议(以太坊经典)。

灾难性的漏洞

不可变账本的好处是什么都无法隐藏或更改。不可变账本的缺点是什么都无法隐藏或更改——包括漏洞。在像以太坊这样的网络中,智能合约代码被写入链中,这意味着代码漏洞不能轻易修复;原始代码将永远保留在区块链上。唯一的解决方法是模块化代码,其中每个部分都引用其他部分,并且这些指针有编程方式可以更新。这使得 DApp 的作者可以上传新的代码片段并适当调整指针。然而,这种方法也存在问题。进行这些更新需要特定的权限来更新代码。

有一个必要用于更新的中央权威只会制造新问题。要么这个权威对去中心化应用有着集中控制(这意味着它不再是去中心化的),要么一个治理系统也必须被写入区块链。这两种选择都有安全性方面的权衡。中央权威可能会被黑客攻击或私钥被盗,导致系统灾难性损失。去中心化的治理系统需要更多的代码,并且本身也面临黑客攻击的风险,DAO 黑客事件正是这样一个例子。

互操作性不足

当前的区块链技术不容易互操作。虽然可以编写一个可以与多个区块链通信的应用程序,但这些区块链本身没有与彼此通信的自然能力。在许多情况下,交易和治理的基本方法可能不兼容。例如,在以太坊网络中,任何用户都可以向任何其他用户发送任何代币,接收者无需获得权限。接收者可以选择忽略新代币,但它们仍然拥有这些代币(这引发了一些有趣的税收问题)。然而,在恒星网络中,用户必须向其他用户发行信任线才能接收由该用户发行的自定义代币。

同样,许多网络在链上提供多重签名和多用户钱包。然而,没有一个位于区块链之外的中心化应用程序,用户无法轻松地在一个地方管理所有这些网络。这也是中心化交易所的吸引力所在——不管底层协议是什么,用户都可以获得可预测的、通用的接口,能够发送和接收代币而不考虑底层技术。

区块链技能的低可用性

就像任何新技术一样,熟练人员的数量是有限的。在区块链的情况下,这种自然秩序变得更糟,因为系统的数量庞大且不断增长。仅看主要的链,系统使用的编程语言有 C、C++、Java、Scala、Golang 和 Python。所有这些系统都有不同的架构和协议。具有智能合约的区块链具有不同的合约模型、合约 API 和完全不同的编程语言,如 Solidity 和 Serpent。

在安全方面,每个区块链系统都有微妙不同的安全模型和挑战。系统越简单,满足这些需求就越容易,但区块链能做的事情就越少。此外,由于最近对区块链技术的兴趣激增,区块链技能在市场上非常昂贵。特别是,具有经过验证的顶尖人才非常难找到。

隐私

区块链被认为具有的一个优势是可以匿名运行。然而,如果这种匿名性被破坏,那么不可变的账本意味着每一笔交易都可以完美地被追踪到。保持完美的匿名性非常困难,即使一个人成功了,如果他们做生意的人也不是匿名的话,统计技术也可以被用来大大缩小他们身份的可能性。

虽然许多人在考虑匿名性时考虑的是如何避开执法或课税,但不仅仅是政府可能对这些信息感兴趣。例如,有很多犯罪组织都希望能够识别富裕但不起眼的人。一个组织可以追踪加密资产的大额持有或交易到特定的个人,并将其作为绑架或敲诈的目标方法。加上加密交易的不可变性,这可能会使这种攻击变得非常有吸引力。

有一些项目试图解决这个问题,比如 Zcash 和 Dash,它们隐藏了交易的来源和终点。希望更多的系统会添加深思熟虑的协议来解决安全和隐私问题。

能源消耗

一些最大的区块链,比如比特币和以太坊,仍然采用工作证明模型。工作证明方法极度耗能且效率低下。一则新闻报道指出,仅比特币网络消耗的电力就已经超过了爱尔兰国。其他消息源认为这是夸张的,但即便如此,它也说明了运行这些系统的巨大成本。

然而,越来越多的系统出于这个确切的原因而从工作证明系统转移到其他系统。新的共识算法,比如股权证明和委托权证明,使这种极端能源成本变得不必要。

总结

在本章中,我们已经介绍了使用和实施区块链系统的当前主要挑战。希望使用区块链的企业应该了解技术的当前状态,与其他技术方法相比的成本,以及区块链世界存在的安全和人员配备问题。

好消息是,这些问题都不是无法克服的,而且其中许多问题肯定会随着时间的推移而得到改善。许多项目正在进行中,以改善不同区块链网络的可用性和安全性。额外的工具和培训资源降低了编写新的区块链应用程序的难度。

参考资料

  1. bitshares.org/technology/industrial-performance-and-scalability/

  2. news.bitcoin.com/proof-of-work-coins-on-high-alert-following-spate-of-51-attacks/

  3. www.theguardian.com/technology/2017/nov/27/bitcoin-mining-consumes-electricity-ireland

第二十二章:区块链的未来

在本章中,我们将讨论区块链技术的未来。有许多趋势和发展可能会推动区块链技术的发展和其在未来几年的应用。和任何预测一样,我们将讨论的内容都不是铁板钉钉的。

特别是,区块链将受到以下几个关键主题的推动:

  • 持续的分散化和专业化

  • 法律和监管的演变

  • 技术的稳定

  • 与人工智能和物联网的交叉

持续的分散化和专业化

区块链始于只有一个实现:比特币。现在有成千上万的区块链和数百种区块链技术。在如此拥挤的市场中,技术自然会开始有更多具体目的的实现。区块链系统的许多缺点,如速度、易用性等,使用具体目的的区块链系统更容易解决。

我们已经看到了这一开始。Steemit 是一个基于比特股/石墨技术构建的区块链社交网络。它具有基于见证人和投票的共识算法,整个操作都围绕着托管社交和博客内容而设计。虽然仍然具有许多公共区块链的特征,但通过具体目的,Steem 区块链更能够在其期望的生态系统中发挥作用。

我们预计将会出现更多具体目的的链技术。专门针对物流、追踪艺术作品的来历、法律工作等方面的区块链分叉都是一个良好的团队提供市场特定区块链产品的肥沃土壤,易于使用并且易于集成到现有系统中。

成功为传统企业提供节省成本、有效解决方案的公司将会最容易获得成功。在本节中,我们将探讨一些已经在发展的具体用例。

视频游戏

全球最受欢迎的游戏之一是在线角色扮演游戏,例如《魔兽世界》。在许多这类游戏中,玩家可以积累和交易装备。游戏创建者普遍面临的问题是游戏内经济:如何在线上保证稀有物品的稀缺性?许多游戏都存在副本漏洞的问题,玩家可以一次又一次地复制稀有物品然后出售,从而获得可观的利润。区块链技术解决了数字稀缺性的问题。

已经有一些视频游戏在尝试使用区块链技术。然而,虽然有一些基于以太坊的游戏代币,但尚无专门用于视频游戏的区块链。我们预计这种情况将发生变化,因为一些最赚钱的游戏通过出售游戏内物品赚钱。

房地产

房地产是另一个区块链技术绝对合理的领域。已经有许多以房地产为基础的项目在进行中。然而,房地产世界很复杂,关于产权所有权和转让的法律在不同的司法管辖区之间差异很大。一个为管理土地转让的私人/公共互动而构建的链有可能成功地取代现有的传统系统。这样的系统将大大提高房地产市场的效率。当前市场依赖于许多不完全信息的不同因素,包括政府机构持有土地所有权记录、保险公司检查洪水区域和其他问题、发布价格以及房地产销售公司进行价格发现和广告。多个不相连的方需要在一个可信系统中分享是区块链技术的完美适应。改进房地产将是困难的,但对于成功的公司来说可能是非常有利可图的。

物流

区块链领域已经有大量资金充裕的物流项目。其中大多数在像以太坊或 NEO 这样的公共网络上运行。然而,行业特定的区块链可能会发展,因为区域性货运公司的法律需求和要求与国际跨境运输的需求截然不同。每个空间的系统要求可能会非常不同,但这些系统需要进行通信和协调。在这里,联邦化的多链网络可能是一个很好的选择。处理跨链转移的技术仍在发展。然而,尽管在多个区块链上追踪代币存在困难,像 Tendermint 团队(Cosmos 的开发者)这样的团队正在努力实现这一点。

许可

目前,软件许可和其他知识产权的权利是使用大量专有系统管理和转移的,甚至还有老式的纸质工作。确定某些知识产权的所有权可能是困难的,甚至是不可能的。在美国,您自动拥有您创建的任何知识产权;然而,这种所有权没有记录在任何地方。可以注册您的所有权,但这绝非易事。由区块链驱动的知识产权系统将使 YouTube、DeviantArt 和 ModelMayhem 等网站能够代表其用户自动注册作品的能力。一旦注册,这些相同的网站可以帮助用户无缝地发出和撤销许可证。这样的方案将需要这些大型互联网站的合作,但这并不是第一次发生这种事情;网络的许多技术基础是通过行业联盟的努力而创建的,这些联盟旨在提高行业的效率和互操作性。

行业联盟

尽管区块链技术变得越来越分散,但不可避免的将出现整合。区块链整合的一种方式是不同的行业。与其他标准化流程一样,每个发现区块链有盈利用途的行业很可能会开始标准化一到两项关键技术或实施,然后将其作为默认选择。例如,在物流行业,有许多竞争项目和标准用于包裹的追踪和交付。其中一些项目是建立在以太坊上,另一些是建立在 NEO 上,还有一些是建立在他们自己的私有链上。这些方法中的某一个,或者是一个还没有被看到的新方法,将打入行业的最佳选择并成为标准。这是因为区块链技术非常适合团结不信任彼此的不同因素。这种最佳选择的技术几乎肯定是一批公司的成果,而不是启动的企业。财团有更容易认为不是威胁性竞争对手的时间,而是有机会汇集资源并成为一个成功团队的一部分。

可能会使用区块链的财团包括银行、保险、包裹投递和追踪等行业。而文档和法律追踪等行业更有可能存在多个私人竞争对手,原因是不同的市场力量。医疗追踪将受益于标准化的方法,但市场力量和监管问题使其更加困难。

大量的亏损项目

当前的区块链生态系统被比作 90 年代的互联网繁荣。结果可能会类似:一些关键项目会生存并繁荣,而其他项目会失败并成为投资者的负担。然而,与互联网繁荣不同的是,区块链项目从普通大众那里获得了远远更多的投资。这可能会导致一些有趣的结果。其中一个可能性是一个类似于互联网泡沫破灭的事件:资金短缺相当长一段时间,不管项目的质量如何。随着零售投资者承受了一定的损失,同时仍有机会继续投资,区块链崩溃的后果可能不会那么糟糕。然而,可能会对零售投资者造成严重伤害的严重崩溃更可能引起监管的反应。

法律和监管的演变

区块链技术的某种近期变化将来自监管。几乎每个主要国家都在审视 ICO 市场并设法最好地监管或利用区块链。在美国,证券交易委员会似乎越来越多地将 ICO 视为证券发行,这将使公司不得不进行 ICO 并提供更加典型与股票发行有关的财务和其它文件。

其他国家,比如白俄罗斯,正在采取非常实际的方法,希望吸引区块链公司和投资进入他们的国家。

安全令牌发行

针对持续的 SEC 行动和大量区块链项目的失败,越来越多寻求资金的项目将发行安全令牌。投资者将不可避免地开始寻求和要求更高质量的项目,因为低成本的机会已经被抢占,进入门槛将会增加。此外,安全令牌发行往往伴随着财务披露规则和其他要求,这将成为对那些明显还没有准备好获得资金支持的项目的门槛。当然,负面影响是,对于没有独立资金来源的未知参与者,甚至尝试进入市场都将更加困难。

目前,还没有专门用于安全令牌的交易所,事实上,许多现有交易所不希望交易这种代币,以避免自身受到安全法的影响。一旦安全令牌成为市场的一个较大部分,STO 交易平台将出现,或者有可能被添加到主要交易所和银行的现有股票交易平台中。

总和和保险产品

区块链代币的一个常见批评是个体资产的高波动性。为了应对这一点,已经有一些尝试创建代币池或代表其他代币的一篮子代币以减少波动性和风险,就像 ETF 和共同基金为股票做的一样。

我们预计会有进一步的尝试构建更稳定和更好对冲的代币产品。一个可能的选择是一种新的保险产品,以一定费用保护免受负面波动的影响。虽然在实际层面上可以通过期货和期权实现类似的效果,但保险是一个更熟悉的概念,对于对代币市场感兴趣的普通消费者和零售投资者更为熟悉。我们预计会有尝试将所有这些带到市场上。

技术稳定化

技术往往呈波动式发展。通常会有一个增长和实验的时期,然后是整合和标准化,然后周期重新开始。目前,有几种技术明显处于标准化目标的领先地位。

以太坊和 Hyperledger

以太坊、Neo 和 Hyperledger 都是已经吸引了不同项目的大量关注的技术。任何新来者不仅必须在区块链层面提供更优越的技术,而且还必须应对已经正在开发的一系列工具、现有库和教程。特别是,以太坊和 Hyperledger 生态系统已经有大量投资投入其中,并获得了大量企业支持。这两个项目是微软和亚马逊作为区块链即服务(BaaS)提供的唯一选择。

服务整合和产品提供

随着区块链技术的发展,提供区块链服务的公司数量也在增加。就像个别区块链项目一样,我们可以预期其中许多公司将消失,而更成功的公司将在其生态系统内占主导地位。在某些情况下,这是最初的经济策略:IBM 编写了大部分 Hyperledger 框架并将其作为开源提供,并且现在在该领域提供广泛的咨询服务。

随着亚马逊和微软提供区块链服务,企业的现成产品数量将增加。目前,许多企业自定义区块链开发成本过高,风险也很大。一旦标准和主导的参与者变得更加清晰,初创公司将更容易提供面向企业的定向区块链服务和区块链集成。在这个阶段,区块链的采用将真正成为主流。

跨链通信

区块链世界面临的一大挑战是跨链通信。一些项目,如 Cosmos,将这个问题置于其方法的核心。高效准确的跨链通信是使区块链能够扩展的关键能力,同时提供不同生态系统将需求的定制服务。虽然有一些方法正在开发中,但它们都还没有在典型的商业条件下在现实世界中真正得到证明。一旦找到一个好的解决方案,该区块链生态系统将比其他生态系统拥有巨大的优势。

与人工智能和物联网的交叉

当下另外两个主要的技术热点词汇是人工智能(AI)和物联网(IoT)。这些技术之间有许多可能的重叠和交叉点。

区块链交叉人工智能

人工智能需要大量数据才能发挥作用。这就是为什么许多大公司如此热衷于推进人工智能项目的一部分原因。较大的公司可以获取更多的数据,因此能够比拥有较少数据的公司产生更优秀的人工智能结果。因此,如果能够有效利用人工智能专业知识,较大的公司就会对小公司拥有巨大的竞争优势。公共区块链消除了这一优势,因为所有人都可以获得相同的数据。在这个领域,更灵活、毫无顾忌的小型初创公司可以利用这些公共数据通过专有或高度定向的提供新服务和产品。

同样,预计联合区块链将进一步加强现有的主要参与者,他们可以相互共享数据以排挤新的竞争对手。现有的卡特尔将拥有比任何个体行为者更庞大的数据宝库,围绕其行业形成了一道防御屏障。尽管联合会成员之间可能仍然相互竞争,但他们的数据优势将有助于保护他们免受新的市场进入者的侵害。

区块链与物联网的交集

物联网的持续威胁之一是安全性。数百万个网络设备导致了数百万个潜在易受攻击的物品,这些物品可能会被攻击者利用。使用区块链传递软件更新,以及诸如可信计算模块等系统,物联网设备可能至少部分地免受攻击,因为这需要攻击者中断整个链路,而不仅仅是特定设备。然而,这需要仔细的工程设计,而这种安全性的初次尝试很可能会因为实施错误而失败。

区块链与物流等领域的其他交互包括,公司将其交付车辆的移动与一个贸易联盟网络相结合,该网络将每个包裹的移动广播到整个网络,从而改善了交付并识别了问题。例如,一辆卡车碰到路障并在一组物流公司的贸易联盟中更新其行程,将使其他卡车能够绕行,从而提高了可交付性。

摘要

在本章中,我们讨论了区块链技术的近期可能未来。未来是不可预知的,但可以从中感知到的是,这些是塑造当今技术的行业趋势和力量。对于那些正在调查区块链的企业来说,这三个主要趋势中的每一个都将起到鼓励区块链采用或引起回避的作用。我们希望世界各国政府尽快发布清晰、经过深思熟虑的法规,并建立防范欺诈的保障措施。有了这些措施,这种技术进化将更加有指导性,以安全、更少风险地将区块链产品推向市场。

区块链技术总体上将继续应用于不同的行业。目前尚不清楚新网络如 EOS 和 Cosmos 将会带来什么样的变革,因为目前尚无主要链拥有这些系统力图提供的广泛治理模型。如果大规模、去中心化的治理能够良好运作,对于许多系统来说,这将是一个令人鼓舞的发展。例如,爱沙尼亚政府已经在一些政府职能上进行了区块链试点。

最有可能的情况是,当前的区块链系统最终不会成为主导。与大多数技术一样,主导系统将是根据当前一系列失败所得到的教训构建的系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/586957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024五一杯数学建模B题思路分析 - 未来新城背景下的交通需求规划与可达率问题

文章目录 1 赛题选题分析 2 解题思路详细的思路过程放在文档中 ! ! &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;3 最新思路更新 1 赛题 B题 未来新城背景下的交通需求规划与可达率问题 随着城市化的持续发展&#xff0c;交通规划在新兴城市建设中显得尤为关…

Linux搭建靶场

提前准备&#xff1a; 文章中所使用到的Linux系统&#xff1a;Ubantu20.4sqlilabs靶场下载地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based. 一. 安装phpstudy phpstudy安装命令&#xff1a;wget -O install.sh h…

Map和Set基础

目录 一、导论 二、Map 三、Set 本文找先不涉及两种数据结构的底层&#xff0c;目标是&#xff1a; 理解Map和Set的大体框架&#xff0c;了解他们有什么用&#xff0c;用在哪里的&#xff0c;然后再从浅层深入底层。 小编认为&#xff1a; 先了解也下Map和Set大体是用来做…

Mysql--创建数据库

一、创建一个数据库 “db_classes” mysql> create database db_classes; mysql> show databases; -------------------- | Database | -------------------- | db_classes | | information_schema | | mysql | | performance_schema | |…

开通Jetbrains个人账号,赠送这些付费插件

开通Jetbrains个人账号&#xff0c;或者Jetbrains现成账号的, 可赠送以下付费插件 现成账号&#xff1a;https://web.52shizhan.cn/activity/xqt8ly 个人账号&#xff1a;https://web.52shizhan.cn/legal 账号支持全家桶系列&#xff1a;AppCode,CLion,DataGrip,GoLand,Intell…

Codeforces Round 941 (Div. 2) (A~D)

1966A - Card Exchange 题意&#xff1a; 思路&#xff1a;手玩一下发现当存在某个数字个数超过k个&#xff0c;那么就能一直操作下去。那么答案就是k-1. void solve() {cin >> n >> m;map<int,int>mp;int maxx 1;for(int i 0 ; i < n ; i ){int x;c…

手把手教数据结构与算法:优先级队列(银行排队问题)

队列 基本概念 队列的定义 队列&#xff08;Queue&#xff09;&#xff1a;队列是一种常见的数据结构&#xff0c;遵循先进先出&#xff08;First-In-First-Out, FIFO&#xff09;的原则。在队列中&#xff0c;元素按照进入队列的顺序排列。队列是一个线性的数据结构&#x…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

深度学习从入门到精通——词向量介绍及应用

词向量介绍 词向量&#xff08;Word embedding&#xff09;&#xff0c;即把词语表示成实数向量。“好”的词向量能体现词语直接的相近关系。词向量已经被证明可以提高NLP任务的性能&#xff0c;例如语法分析和情感分析。词向量与词嵌入技术的提出是为了解决onehot的缺陷。它把…

pytorch中创建maskrcnn模型

0.模型输入/输出参数参见 链接: pytorch的mask-rcnn的模型参数解释 核心代码 GeneralizedRCNN(这里以mask-rcnn来解释说明) # 通过输入图像获取fpn特征图,注意这里的backbone不是直接的resnet,而是fpn化后的 features self.backbone(images.tensors) # 由于是mask-rcnn,故而…

如何快速搭建nginx服务

华子目录 nginx简介概念特点nginx框架nginx关键工作机制 nginx正向代理功能nginx反向代理功能nginx反向代理的工作流程代理本质 nginx负载均衡部署nginx常用命令systemctl系列nginx自带命令 nginx配置文件主配置文件/etc/nginx/nginx.conf内容结构模块分析配置分析注意示例 ngi…

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …

C++ stack、queue以及deque

1、stack和queue常用接口 严格来说栈和队列的实现是容器适配器 1、常用接口&#xff1a; 栈&#xff1a;top、push、pop、size、emptystack - C Reference (cplusplus.com) 队列&#xff1a;top、push、pop、swap、size、emptyqueue - C Reference (cplusplus.com) 2、deque&a…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别&#xff1f; 答案: 在Android中&#xff0c;可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例&#xff0c;并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

ubuntu安装mysql时候修改root密码

前情&#xff1a; 使用set password for rootlocalhost ‘passwd’&#xff1b; set password for ‘root’‘localhost’‘passwd’&#xff1b; update user set passwordpassword(‘passwd’) where user‘root’ and host ‘localhost’; flush privileges; 以上方法均报…

定制开发AI智能名片商城小程序:玩转积分制度的成功案例

在数字化浪潮席卷而来的今天&#xff0c;企业营销方式不断创新&#xff0c;力求在众多竞争对手中脱颖而出。其中&#xff0c;积分制度以其直观、有效的特点&#xff0c;成为了众多企业的营销利器。某时尚品牌“潮流前线”便是其中的佼佼者。他们通过定制一款AI智能名片商城小程…

德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...

德国著名的气动元件研发及自动化解决方案供应商Festo公司近日展示了一款仿生蜜蜂&#xff08;BionicBee&#xff09;&#xff0c;重量只有34g&#xff0c;却完全可以实现自主飞行&#xff0c;还支持多只相同的蜜蜂机器人编队飞行。 BionicBee 重约 34 克&#xff0c;长 22 厘米…

二叉树的前序,中序,后序遍历

二叉树可以分为左子树&#xff0c;右子树和根节点。同时左子树和右子树又可以分为新的左子树和右子树加上新的根节点&#xff0c;以此类推。 二叉树的前序&#xff0c;中序&#xff0c;后序遍历也叫前根遍历&#xff0c;中根遍历&#xff0c;后根遍历或者前序遍历&#xff0c;…

【Vue 2.x】学习vue之三路由

文章目录 Vue三路由第十章1、vue中的路由vue的应用分为a、多页面应用b、单页面应用 2、路由的基本应用1、基础2、使用3、加载 3、vue组件的分类1、普通组件2、路由组件 4、路由的嵌套5、路由传递Query参数1、拼接参数传递2、路由传递对象 6、简化路由1、命名路由 7、parms传递参…
最新文章