区块链技术

Chinese, Simplified
SEO Title
blockchain technology

【区块链】区块链社交网络

Chinese, Simplified

我之前关于去中心化社交网络的帖子分析了联合社交网络和 p2p 社交网络之间的差异。这篇文章将对将区块链纳入其设计的社交应用程序进行调查。使用区块链的社交应用程序在不同程度上去中心化。有些使用区块链进行数据存储,有些用于货币化,有些用于数据存储和货币化。我不会尝试列出所有存在的项目,而是会深入探讨一些相对成功或不寻常的方法的不同设计选择。



大多数区块链表现得像昂贵、缓慢的数据库,为了不变性和全球共识而牺牲效率。区块链在逻辑上是中心化的,努力使许多不可信的计算机表现得像一台计算机。即使下一代区块链变得更具可扩展性,它们似乎仍然不适合存储可变的、短暂的、不需要全球就其状态达成一致的社交媒体内容。不同的用户可以根据他们的社交图对社交网络中的数据有不同的看法,这很好。尽管使用区块链存储社交数据存在缺陷,但许多应用程序已采用将社交内容存储在区块链上的方法。其他人已将存储卸载到 IPFS 等相对更具可扩展性的 p2p 网络。

去中心化的社交网络通常在货币化方面挣扎。将加密货币纳入其设计的网络已尝试解决此问题。大多数允许用户从他们的内容中赚钱,或者收取推广内容的费用,从交易中收取费用,或者通过对所用代币的升值来获利。



然而,我在内容货币化的社交网络中观察到的一个缺点是,用户行为变得透明,以感觉不那么真实的方式受到货币激励的驱动。这也适用于 Instagram 上的影响者文化,但加密货币社交网络从一开始就将其融入其中。这可能是用外在动机代替内在动机的必然结果,或者可能存在尚未达到正确平衡的激励结构。理想情况下,金钱应该是促进者而不是互动的推动者。

加密货币激励的社交网络最初由看好所用加密货币的社区形成,因此讨论通常围绕价格和货币本身的未来展开。最古老的加密货币激励社交网络只有几年的历史,因此它们是否会吸引加密货币社区以外的更广泛的受众还有待观察。



用于数据存储和货币化的区块链



STEEM



Steem 加密货币是为社交网站的内容货币化而创建的。 Steemit 是第一个使用 Steem 构建的站点,并在第一周内开采了 Steem 的 80%。后来,包括去中心化 Youtube 的 Dtube 在内的其他几个平台也使用 Steem 进行货币化。 Steemit 在 2017 年加密货币上涨期间受益于 Steem 的升值,但未能很好地应对熊市,不得不裁员大量员工。当一家公司的货币化战略取决于波动性资产时,其领导者必须是谨慎的投资组合经理以及优秀的运营商。



Steemit



Steemit 是一个 Reddit/Medium 风格的社交网络,它使用 Steem 将用户内容货币化。有超过一百万的用户。用户身份和帖子数据存储在 Steem 区块链上。除了依靠 Steem 价格上涨之外,Steemit 还通过用户宣传他们的帖子来获利。当用户在 Steemit 上执行某些操作时,他们将获得 Steem。创建获得点赞的帖子使用户有资格从奖励池中获得收益。支持后来流行的帖子可以为选民赢得策展奖励。投票按声誉加权,声誉随着年龄的增长而累积,因此早期采用者的旧账户在网络中拥有更大的权力。这一点,以及 Steem 代币可以在早期轻松开采的事实,意味着 Steemit 的激励措施面向早期采用者。

Steemit 帐户充当加密货币钱包,用户负责自己的密钥管理。没有可用的帐户恢复,如果密钥被泄露,资金可能会丢失或被盗。帐户无法停用或删除,因为它们永久存储在 Steem 区块链上。为了减少垃圾邮件,创建新帐户需要电子邮件和电话号码,并且必须经过审核过程。

Dtube



Dtube 是 YouTube 的去中心化版本。大约有 187,000 个用户帐户,每月有 170 万访问者。它将数据存储在比区块链扩展性更好的分散网络中。视频存储在 IPFS 中,GunDB 用于消息传递。

Dtube 开始使用 Steem 进行货币化,但目前正在新的区块链上推出自己的代币。视频的创作者根据给他们视频点赞的用户的声誉按比例获得代币,类似于 Steemit。用户可以通过 Steemit 账户使用 Dtube,也可以在 Dtube 运行的新测试网区块链上创建身份。

BCH, BSV



一些社交网络建立在比特币分叉上,使用加密货币来货币化和存储数据。 Memo 建立在比特币的分叉比特币现金 (BCH) 上,而 Twetch 建立在比特币现金的分叉比特币 SV (BSV) 上。对于那些不熟悉历史的人来说,这些分叉来自比特币的区块大小战争。那些想要更大区块的人分裂成 BCH,然后另一个派别分裂成 BSV。这些社区试图使用更大的块大小来开发新的应用程序,例如在区块链上存储社交内容。

Memo



Memo 是一个建立在比特币现金上的 Twitter 风格的社交网络。它将用户数据永久且公开地存储在区块链上——每个操作都存储在比特币现金上的 OP_RETURN 交易中。它有一个新颖的声誉系统,它基于您关注的共有人数量与将您静音的人数之比。



Twetch



Twetch 是一种基于比特币 SV 的 Twitter 替代品。新用户创建一个用于发送和接收资金的 moneybutton 帐户。一旦用户拥有货币按钮,他们就可以与 Twetch 网络进行交互,该网络的外观和工作方式与 Twitter 类似,但大多数操作都是货币化的。新用户必须将钱存入他们的帐户才能写作、评论、喜欢或关注。创建帖子的成本为 2 美分——这项功能很可能是为了防止垃圾邮件而添加的。喜欢一个帖子并关注一个用户需要多花几美分。发布数据永久存储在 BSV 区块链上。

Twetch 中存在一个交叉发布到 Twitter 的功能,他们使用 Twitter 来获得可见性。在我的帐户创建过程中,我受到了增长黑客营销策略的影响,例如要求新用户在授权帐户之前关注他们并发布有关他们的推文。我不会为我没有尝试过的应用发布促销文本,但很多社区情绪都围绕着 BSV 的推广,这意味着新 Twetch 用户可能不会像普通用户加入新社交网络那样对这些策略感到恼火。



用于货币化的区块链



Minds



Minds 是在代币化网络存在之前创建的 Facebook 替代品,但此后它添加了 ERC-20 代币以将用户内容货币化。数据层和用户身份不是去中心化的。他们拥有超过 100 万注册用户和约 100,000 MAU(每月活跃用户)。该平台本身通过内容推广获利。用户可以通过投票、评论或上传来赚取代币,并使用这些代币来推广他们的帖子。 1 个代币大约等于一千次展示。用户也可以互相小费。

Dlive



Dlive 是一个 Twitch 风格的直播平台,从使用 Steem 开始,转为使用自己的代币,然后被波场收购,目前正在再次更换代币。用户身份和数据不是去中心化的,因此它本质上是带有加密货币小额支付的 Twitch。它拥有大约 500 万用户。流行的 Youtuber PewDiePie 于 2019 年 4 月切换到 Dlive 上的流媒体,导致用户增长 67%。



用于数据存储的区块链



Peepeth



Peepeth 是一个建立在以太坊和 IPFS 上的“永久推特”,拥有约 6,500 名用户。它专注于分散数据,而不是通过用户交互获利。账户信息存储在以太坊区块链上,数据存储在 IPFS 中,并在以太坊上有一个链接。在区块链上存储帖子的永久性在 Peepeth 中被视为一种设计选择,旨在鼓励用户更加注意他们所写的内容。 Peepeth 的主要客户有一些货币化策略,包括对用户提示收取 10% 的费用,以及对社交帐户的验证收费。用户通过 Metamask 登录 Peepeth,然后通过将帐户信息发布到将其与他们的地址相关联的智能合约来注册他们的身份。我很担心在区块链上公开存储包含电子邮件地址的帐户信息,所以我做了一个新的注册。 Peepeth 允许交叉发布到 Twitter。



Zbay



Zbay 是一个基于 Zcash 的新型社交消息应用程序。它将消息存储在私人交易的加密备忘录字段中。大多数将数据存储在区块链上的社交应用程序都没有隐私,因为所有交互都永久记录在公共分类账上。 Zbay 将消息永久存储在 Zcash 区块链上,但只有控制其发送地址的私钥持有者才能看到这些消息。用户名通过以指定用户名与其地址之间关联的格式发送到地址的交易进行注册。

结论



加密货币激励应用程序已经开始涉足去中心化社交网络的货币化。 他们还尝试在区块链上存储社交数据。 在区块链上存储诸如用户帖子之类的可变和短暂数据是对全局分类账的不当使用,但使用区块链来管理身份可能是一个很好的方向。 为用户名声明一个唯一的、人类可读的命名空间需要全球共识。 在完全 p2p 网络中可能有争议且难以跟踪的功能,例如“喜欢”计数,也可以合理地放在区块链上。

请随时在评论中提及您选择的加密社交网络。 如果有一个很好的技术论证来说明它为什么新颖有趣,我会研究一下。

原文:https://medium.com/decentralized-web/blockchain-social-networks-c941fb3…

本文:

SEO Title
Blockchain Social Networks

【区块链】想要部署企业区块链应用程序?

Chinese, Simplified

当今的企业必须适应快速的数字化转型。区块链是最新的颠覆性技术之一,为企业创造了光明的未来。区块链技术最初由比特币普及,目前正在探索其管理企业运营的广泛潜力。区块链技术已证明其在许多工业应用中进行交易的能力。分散的交易性质和准确性使企业能够有效地管理数据并保持安全和信任。



我们看到区块链领域出现了各种跨行业的用例。我们当然可以依赖区块链,它已经在金融、制药、供应链、制造和汽车等多个行业得到广泛应用。区块链技术可以为您的组织提供更高的透明度、增强的安全性和更简单的可追溯性,因为它具有去中心化、不可变和无需信任的特性,因此可以跨公司网络交换数据。



多年来,在各种基于区块链的企业中花费的金额是该技术受欢迎程度最显着的标志之一。如果你有自己的区块链,你就有能力随时起飞并产生巨额利润。



虽然关于区块链的炒作正在建立,但我们在 Nautilus Technologies 发现,许多组织仍处于采用的早期阶段,并且不愿冒险尝试。根据最近的研究,超过 65% 的组织认为实施复杂性是采用的最大障碍,其次是缺乏立法明确性。查看这些数据,我们可以看到构建、部署和监控区块链基础设施对于许多小型和大型企业来说仍然是一个重大的采用障碍。



我们发现,许多组织在准备开始其区块链之旅时,将区块链视为其 IT 环境中的新实体。但是,根据我们的经验,我们觉得这种技术非常昂贵,实施起来非常困难,使他们无法掌握该技术。



目前,我们还意识到运行去中心化应用程序可能会涉及许多基础架构问题,这些问题会使开发人员的注意力从他们的实际产品上转移开。为此,我们提供了一个平台,允许区块链公司开发强大的区块链解决方案并将它们与当前的 IT 基础设施连接起来,以提供全面的多云战略,同时确保持续的安全性和合规性。

原文:https://medium.com/@Nautilus_Technologies/looking-to-deploy-an-enterpri…

本文:https://jiagoushi.pro/node/2009

SEO Title
Looking to deploy an enterprise blockchain app?

【区块链】通过构建一个来学习区块链

Chinese, Simplified

如何使用 JavaScript 创建一个简单的区块链

[区块链] 是我们在未来十年左右能想到的最大机会集。

~鲍勃·格雷菲尔德



如果您从事科技行业,那么几乎可以肯定您听说过区块链技术。区块链是所有加密货币和大多数去中心化应用程序背后的基础技术。它们也被认为是这一代人最重要的发明之一,并迅速在大众中流行起来。

区块链是跟踪网络中交换的所有数字数据或资产的技术,该记录称为“分类帐”。每个交换的数据都是“交易”,每个经过验证的交易都会作为一个区块添加到分类帐中。将块想象成一个包含一些数据的盒子,这些块中的多个被放在一起形成一个区块链。同理,区块链可以被想象成一个容纳多个盒子的容器。

今天我们将通过在 JavaScript 中构建区块链来了解它是如何工作的。但是在我们开始编程之前,我们为什么要首先学习它呢?



为什么是区块链?



区块链始于 2008 年,作为一种存储和保护数字货币的方式。这是中本聪为比特币提出的提案的一部分。而比特币是区块链网络的第一个应用。它的主要好处之一是,如果没有所有相关方或节点之间的协议,就不能更改记录的信息。

其他好处包括:

  • 去中心化:交易发生在计算机网络上。
  • 不变性:如果一个事务被创建,它就不能被修改
  • 开放:所有交易对所有节点都是可见的。
  • 安全性:由于加密功能,区块链几乎总是安全的

现在,我们了解了它的特性,让我们开始使用 NodeJS 从头开始​​构建我们的区块链。



先决条件



要遵循和理解本教程,您应该熟悉以下内容:

  • JavaScript 中的类和其他 ES6 特性的工作知识。
  • 机器上安装了 NodeJS。



开始使用块



我们之前提到块是一个包含一些有用信息的框。我喜欢将区块链视为 LinkedList(数据结构),将区块链中的每个块视为 LinkedList 中的一个节点。它可以表示为 JavaScript 中的对象,其中包含以下属性:

  • 记录在区块链上的数据,例如交易数据。
  • 块哈希——它是使用加密技术生成的块的 ID。
  • 链中前一个块的哈希。它被记录在每个区块中,以将其链接到链上并提高其安全性。
  • 创建块并将其添加到区块链时的时间戳。

工作量证明 (PoW),这是推导出当前区块哈希的努力量(我们将使用这种共识,因为权益证明超出了本文的范围)。



定义具有上述属性的块类。

 

class Block {
  constructor(data, previousHash) {
    this.data = data;
    this.hash = "";
    this.previousHash = previousHash;
    this.timestamp = new Date();
    this.pow = 0;
  }
}

计算块的哈希



块的哈希是使用加密技术生成的标识符。 我们将通过使用 SHA256 算法对前一个块哈希、当前块数据、时间戳和 PoW 进行哈希处理来获得块哈希。 我们将使用crypto,一个用于散列数据的NodeJS内置库。

const calculateHash = (block) => {
  const data = JSON.stringify(block.data);
  const blockData =
    data +
    block.previousHash +
    block.timestamp.toISOString() +
    block.pow.toString();
  return createHash("sha256").update(blockData).digest("hex");
};

在上面的代码中,我们做了以下事情:

  • 将块的数据转换为 JSON 格式,以便我们可以将其与其他信息作为字符串连接。
  • 连接块的先前哈希、数据、时间戳和工作证明 (PoW)。
  • 使用 SHA256 算法为较早的连接生成哈希。
  • 返回以 16 为底的散列结果,小写字母表示 A-F。



挖掘新区块



挖掘新块涉及使用一定数量的前导零(0)生成块的散列。前导零的数量由当前区块链的难度级别提供。这意味着如果区块链的难度为 3,我们必须生成一个以三个零“000”开头的块,例如“000f34abad……”。

由于我们从块的内容中派生了哈希,我们无法更改内容,但我们当然可以增加工作量证明 (PoW) 值,直到我们满足挖掘条件。

为了实现这一点,我们将为 Block 类创建一个 mine() 方法,该方法将不断增加 PoW 值并计算块哈希,直到我们得到一个有效的哈希。

 

class Block {
  // constructor we used earlier
  mine(difficulty) {
    const regex = new RegExp(`^(0){${difficulty}}.*`);
    while (!this.hash.match(regex)) {
      this.pow++;
      this.hash = calculateHash(this);
    }
  }
}

//alternatively we can do this:

// Block.prototype.mine = (difficulty) => {
//   const regex = new RegExp(`^(0){${difficulty}}.*`);
//   while (!this.hash.match(regex)) {
//     this.pow++;
//     this.hash = calculateHash(this);
//   }
// };

定义区块链类



正如我们之前提到的,区块链是多个区块的集合,区块链类将具有三个属性,即创世区块、包含链中其他区块的数组以及表示难度级别的数字。 创世块是添加到区块链的第一个块。

 

class Blockchain {
  constructor(genesisBlock, chain, difficulty) {
    this.genesisBlock = genesisBlock;
    this.chain = chain;
    this.difficulty = difficulty;
  }
  static create(difficulty) {
    const genesisBlock = new Block(null); //the genesis block has no data i.e. null
    return new Blockchain(genesisBlock, [genesisBlock], difficulty);
  }
}

我们还在区块链内部声明了一个静态方法,这样我们就可以直接使用 const blockchain = Blockchain.create(2) 这样的难度来初始化区块链——将创建一个难度为 2 的区块链实例以及一个创世块。



向区块链添加新区块



我们已经成功地为我们的块实现了计算它们的哈希和自己挖掘的功能。 现在让我们在 Blockchain 类中定义一个方法来将新块添加到链属性。

Blockchain.prototype.addBlock = (from, to, amount) => {
  const blockData = { from, to, amount };
  const lastBlock = this.chain[this.chain.length - 1];
  const newBlock = new Block(blockData, lastBlock.hash);
  newBlock.mine(this.difficulty);
  this.chain.push(newBlock);
}

这里我们将 addBlock 方法添加到 Blockchain 类的原型中。 它类似于直接在类中定义 addBlock 方法。

addBlock 方法说明:

  • 从参数中收集交易的详细信息(发送方、接收方和转账金额)。
  • 使用交易详细信息创建一个新块。
  • 使用 Block 类的 mine 方法挖掘新块。
  • 将新创建的区块推送到区块链的链属性。

验证区块链



现在我们已经实现了区块链的所有功能,我们需要检查区块链的真实性,以便我们可以验证区块链没有被篡改。 我们将 isValid 方法添加到区块链原型中。

 

Blockchain.prototype.isValid = () => {
  if (this.chain.length === 1) return true;
  for (let index = 1; index < this.chain.length; index++) {
  const currentBlock = this.chain[index];
  const previousBlock = this.chain[index - 1];
  if (
    currentBlock.hash !== calculateHash(currentBlock) ||
    previousBlock.hash !== currentBlock.previousHash
  )
    return false;
  }
  return true;
}

在这里,我们重新计算了链上每个块的哈希值,并将它们与其中存储的哈希 id 进行比较,并比较下一个块的 previousHash 属性应该等于当前块的哈希 ID。 由于哈希是使用区块的内容计算出来的,内容稍有变化就会产生完全不同的哈希值。



测试区块链



由于我们有一个功能齐全的区块链,让我们测试一下到目前为止我们已经实现的所有功能。 在文件中添加测试函数并使用 node <filename.js> 从命令行运行它。

 

function () {
  const blockchain = Blockchain.create(2); // difficulty increases exponentially with each increase
  blockchain.addBlock("Alice", "Bob", 5);
  blockchain.addBlock("John", "Doe", 100);
  console.log(blockchain);
  console.log(blockchain.isValid()); // true - since we haven't tampered with it
  blockchain.chain[1].data.amount = 200; // tampering with the blockchain
  console.log(blockchain.isValid()); // false - tampered with the blockchain
})()

结果应该类似于下图,但由于时间戳会不同,因此预计哈希值会有所不同。

奖励:出块时间和难度调整



块时间是挖掘后将新块添加到链中所需的估计时间。它是一个常数值。一些常见平台的出块时间是比特币 10 分钟,以太坊大约 13 秒。



比特币根据所花费的时间为每个 2016 年开采的区块调整其区块时间。以每 10 分钟一个区块的理想速度,2016 个区块将需要两周时间才能找到。如果之前的 2016 块需要两个多星期才能找到,则难度会降低,否则会增加。难度的变化与前一个 2016 年区块所花费的超过或不到两周的时间成正比。是这样的 →

新难度=旧难度*(2016个区块*10分钟)/前2016个区块的挖矿时间

new difficulty = old difficulty * (2016 blocks * 10 minutes) / mining time of the previous 2016 blocks



对于我们的简单区块链,如果新块花费的时间超过块时间,我们将调整难度。如果需要更多时间,我们将其减少 1,否则将其增加 1。



我们将宣布我们的阻塞时间为 10 秒或 10000 毫秒。在 Blockchain 构造函数上添加 blockTime 属性,并给它一个固定值,例如 10000。然后编辑 addBlock 方法以在每次交易后调整难度。

注意:不要忘记将 blockTime 属性添加到区块链构造函数中。 否则,代码会抛出错误。



结论



今天我们学习了区块链是如何在底层工作的,以及如何使用 JavaScript 从头开始创建我们的区块链。 源代码可作为 GitHub Gist 获得,包括难度调整。 GitHub 存储库中提供了更具交互性的代码,它使用 TypeScript 在终端中运行程序来与我们今天创建的区块链进行交互。

原文:https://levelup.gitconnected.com/learn-blockchain-by-building-it-f2f8cc…

本文:https://jiagoushi.pro/node/2038

SEO Title
Learn Blockchain by Building One

【区块链算法】ConsensusPedia:30多种共识算法的百科全书 (1)

Chinese, Simplified

共识算法是所有区块链/ DAG的基础。 它们是区块链/ DAG平台中最重要的部分。

没有它们(共识算法),我们将只留下一个愚蠢的,不可变的数据库。

在这里,我们列出所有主要的共识算法,并将评估它们的优缺点。 如果您发现任何遗漏或错误,请在评论中注明。 此外,随着我对这些算法及其经济影响的更多研究,本文将定期更新。

附: 本文假设您了解什么是共识算法及其在区块链中的重要性。

以下是30种共识算法的列表。

1.工作证明 (POW)

 

 

优点:

  • 它自2009年以来在野外进行了测试,并且今天也保持稳定。

缺点:

  • 这很慢。
  • 耗费大量能源,对环境不利。
  • 易受规模经济影响。

使用者:比特币,以太坊,Litecoin,狗狗币等。

类型:竞争共识。

说明:这是第一个共识算法(Satoshi Nakamoto在他的文章中提出)创建分布式无信任共识并解决双重花费问题。 POW并不是一个新的想法,但Satoshi将这个和其他现有概念 - 加密签名,merkle链和P2P网络 - 结合成一个可行的分布式共识系统,其中加密货币是第一个和基本的应用程序,是相当创新的。

它的工作方式是区块链的参与者(称为矿工)必须解决一个复杂但无用的计算问题,以便将一块交易添加到区块链中。

基本上,这是为了确保矿工投入一些资金/资源(采矿机器)来完成工作,这表明它们不会损害区块链系统,导致系统损害将导致投资损失;从而伤害自己。

可以在运行时更改问题的难度,以确保恒定的块时间。有时候,有一个以上的矿工同时解决问题。在这种情况下,矿工选择其中一个链条,最长的链条被认为是赢家。因此,假设大多数矿工在同一条链上工作,那么最快的增长将是最长和最值得信赖的。因此,只要矿工投入的工作中超过50%是诚实的,比特币就是安全的。

进一步阅读:工作证明

2.股权证明 (Proof of Stake)

优点:

  • 高效节能。
  • 对攻击者来说攻击更加昂贵。
  • 不易受规模经济影响

缺点:

  • 无关紧要的问题

使用者:以太坊(很快),Peercoin,Nxt。

类型:竞争共识。

说明:创建股权证明作为工作证明(PoW)的替代,以解决后者的固有问题。在这里,您不必使用挖掘,而是必须在系统中拥有一些赌注(硬币)。因此,如果您持有10%的股份(硬币),那么您下一次开采的概率将为10%。

挖掘需要大量的计算能力来运行不同的加密计算以解决计算挑战。计算能力转化为工作证明所需的大量电力和电力。 2015年,据估计,一笔比特币交易需要每天为1.57个美国家庭供电所需的电量。因此,为了节省电源浪费,引入了PoS。

在PoS中,一美元是一美元。例如,考虑10,000个矿工,每个花费1美元/分钟(8760万美元/年)可能比一个花费10,000美元/分钟的采矿池(尽管每年花费8,760万美元)的散列能力更少。但是在PoS的情况下,你不能一次性使用它。这里一美元是一美元。因此,它不易受规模经济影响。

此外,攻击PoS系统比攻击PoW系统更昂贵。引用Vlad Zamfir

PoS重复51%攻击的成本情况就好像每隔一轮“你的ASIC农场被烧毁”一样。

你的ASIC农场被烧毁了

这意味着每次攻击PoS系统时都会丢失赌注,而在PoW中,如果攻击系统,则不会丢失采矿设备或硬币;相反,你只是让它(攻击PoW系统)难以执行。

但是可能出现的一个问题是“没有利害关系”的问题,其中块生成器通过投票支持多个区块链历史(分叉)而没有任何损失,从而阻止了共识的实现。

[区块链 ]ConsensusPedia:30多种共识算法的百科全书 (1)

 

因为与工作量证明系统不同(你需要进行大量计算以扩展链),因此在几个链上工作的成本很低。许多项目试图以不同的方式解决这个问题(在进一步阅读中提到)。例如。如上所述,其中一个解决方案是惩罚不好的验证者。

进一步阅读:股权证明

3.延迟工作证明 (Delayed Proof-of-Work )

优点:

  • 高效节能
  • 提高安全性
  • 可以通过间接提供比特币(或任何安全链)安全性来增加其他区块链的价值,而无需支付比特币(或任何安全链)交易的成本

缺点:

  • 只有使用PoW或PoS的区块链才能成为这种共识的一部分。
  • 在“Notary Active”模式下,必须校准不同节点(公证节点和普通节点)的哈希值,否则,哈希值之间的差异可能会爆炸(有关更多说明,请参见下文)

使用者:Komodo

类型:协作共识

说明:延迟工作证明(dPoW)是一种混合共识方法,它允许一个区块链利用通过二级区块链的散列能力提供的安全性。这是通过一组公证节点实现的,这些公证节点将第一个区块链中的数据添加到第二个区块链上,这将要求两个区块链被破坏以破坏第一个区块链的安全性。第一个使用这种共识方法的是Komodo,它与比特币区块链相连。

[区块链 ]ConsensusPedia:30多种共识算法的百科全书 (1)

 

依赖于dPoW的区块链可以利用工作证明(PoW)或股权证明(PoS)共识方法来运作; 它可以附加到任何所需的PoW区块链。 但是,比特币的哈希率目前为dPoW保护的区块链提供了最大程度的安全性。 下图显示了各个记录与主要区块链及其附加的PoW区块链之间的关系:

[区块链 ]ConsensusPedia:30多种共识算法的百科全书 (1)

 

dPoW系统中有两种类型的节点:公证节点和普通节点。 64个公证节点由dPoW区块链利益相关者选出,以将来自dPoW区块链的已确认块添加(公证)到附加的PoW区块链上。一旦块完成,其哈希值将被添加到由33个公证节点签名的比特币交易中,从而在比特币区块链上创建dPoW块哈希记录,该记录已由大多数网络公证节点公证。

为了防止公证节点之间的采矿战争,这会降低网络的效率,科莫多设计了一种循环采矿方法,可以在两种模式下运行。 “无公证”模式允许所有网络节点挖掘块,类似于传统的PoW共识机制;但是,在“公证人活动”模式下,网络公证人将以显着降低的网络难度率进行挖掘。在该方案中,允许每个公证人以其当前难度率挖掘一个块,而其他公证节点必须在10倍高度挖掘并且所有正常节点将总是以公证节点的难度率的100倍挖掘。

但这会导致一些问题。正如我与Komodo创始人的一次谈话中所提到的,它可能导致公证矿工和普通矿工的哈希值之间存在很大差异:

[区块链 ]ConsensusPedia:30多种共识算法的百科全书 (1)

 

dPoW系统旨在允许区块链在没有公证节点的情况下继续运行。 在这种情况下,dPoW区块链可以根据其初始共识方法继续运行; 但是,它将不再具有附加区块链的附加安全性。

[区块链 ]ConsensusPedia:30多种共识算法的百科全书 (1)

 

因此,延迟工作证明可以利用这种共识方法提高安全性并减少任何区块链的能耗。例如,由于Komodo使用Equihash散列算法来防止使用ASIC进行挖掘,并且它依赖于循环挖掘公证节点的方法,因此激励结构可以降低节点之间竞争导致过度使用能源或计算的可能性。功率。

此外,像Komodo这样的dPoW区块链可以通过间接提供比特币安全性而不需要支付比特币交易的成本来增加其他区块链的价值:使用dPoW的第三个区块链可以将自己附加到Komodo,随后附加到比特币。通过这种方式,dPoW区块链可以从比特币的高哈希率中受益,而无需直接连接到比特币区块链。

最后,系统内公证节点和正常节点的分离功能确保初始共识机制在公证节点失败的情况下继续运行。这种相互依赖性激励其他网络支持比特币网络的持续维护,而不会完全依赖其直接功能。

进一步阅读:委托工作证明

4.委托证明股权

优点:

  • 高效节能。
  • 快速。高流量的博客网站Steemit使用它。 EOS的阻塞时间为0.5秒。

缺点:

  • 有点集中。
  • 高风险的参与者可以投票自己成为验证者。最近在EOS中看到的东西。

使用者:BitShares,Steemit,EOS,Lisk,Ark

类型:协作共识

说明:在DPoS中,系统中的利益相关者可以选出将代表他们投票的领导者(证人)。这使得它比普通的PoS更快。

例如。在EOS的情况下,21名证人一次当选,并且一组节点(潜在证人)保持待命状态,这样如果证人节点的某人死亡或做了一些恶意活动,那么它可以立即被新节点取代。证人收取生产积木的费用。费用由利益相关者确定。

通常,所有节点以循环方式一次一个地生成块。这可以防止节点发布连续的块,从而阻止他执行双重攻击。如果见证人的时段中没有产生阻止,则跳过该时间段,下一个证人产生下一个阻止。如果证人不断错过他的积木或发布无效交易,那么赌注者会将他投票并以更好的证人取代他。

在DPoS中,矿工可以合作制作积木,而不是像PoW和PoS那样竞争。通过部分集中创建块,DPoS能够比大多数其他一致性算法快几个数量级地运行。 EOS(使用dPoS)是第一个实现0.5秒阻塞时间的区块链!

那很快。

进一步阅读:委托证明

5.权威证明

优点:

  • 高效节能。
  • 快速。

缺点:

  • 有点集中。可以在公共区块链中使用,但通常用于私有的,允许的区块链。

使用者:POA.Network,Ethereum Kovan testnet,VeChain

类型:协作共识

说明:在基于PoA的网络中,事务和块由经过批准的帐户验证,称为验证程序。验证器运行软件,允许它们将事务放入块中。该过程是自动化的,不需要验证器持续监控其计算机。但是,它确实需要维护计算机(授权节点)不妥协。

要建立验证器必须满足的三个主要条件是:

必须在链上正式验证身份,并且可以在公共可用域中交叉检查信息

必须难以获得资格,才能有权验证所获得和重视的区块。 (例如:潜在的验证人需要获得公证书)

建立权威的检查和程序必须完全统一

PoA个人有权成为验证人,因此有动力保留他们获得的职位。通过将声誉附加到身份,激励验证者维护交易过程,因为他们不希望自己的身份与负面声誉相关联,从而失去了来之不易的验证者角色。

进一步阅读:权威证明

SEO Title
ConsensusPedia:30多种共识算法的百科全书 (1)