LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 如何启动区块链:选择引擎

如何启动区块链:选择引擎

2020-04-20 wanbizu AI 来源:区块链网络

在开发自己的区块链之前,您的团队必须清楚地了解区块链的用途以及可以为其内容分配的预算。

区块链的设计和发布都有自己的细微差别。如果您错误地估计了任务的数量和复杂性,在计划时很容易错过它们。

为了帮助项目避免此类错误,MixBytes研究部门负责人Sergey Prilutsky编写了有关如何启动区块链的分步指南。

本文将帮助您确定用于构建自己的区块链的引擎的选择。此处描述了区块链的技术特性和局限性,此处是共识算法的选择。

从头开始的区块链

从头开始创建区块链的尝试无疑是值得赞扬的,因为有了它们,许多现有的解决方案已经出现。但是,您需要清醒地评估团队的能力。

从头开始编写区块链节点代码就像使用可靠的网络复制机制创建自己的数据库一样。如果您寻找过去几十年中创建了多少个这样的数据库,您将发现最多一百个项目。只有极少数公司(Oracle,MS SQL Server,MySQL,PostgreSQL)拥有巨大的市场份额,并且此类系统的核心开发人员受到高度评价。

要开发区块链节点,您将必须组建一个非常酷的稀有专家团队,他们在多线程编程,密码学,网络协议,复杂的内部算法以及对现代操作系统的操作有丰富的经验

测试在区块链中占有特殊的位置,因为共识算法可以在多个验证器上完美运行,并且在负载数十万个节点时完全不同。在这种情况下,开发人员数量的增加只会导致团队内部沟通的复杂化。

根据我们公司的经验,商业客户很少选择这种方式。创建自己的区块链是一群研究人员,发烧友的任务,他们可以负担得起的工作自由,没有紧迫的期限和商业计划。这样的团队应该能够自由地探索遇到的任何问题,而不必担心项目的截止日期。目前,世界各地的独立开发人员正在开展比特币和以太坊等项目的工作,而没有严格的期限。商业因素的外部压力可能会在您的项目中发挥作用,迫使您更快地解决问题,而无需考虑后果。

准备就绪的区块链引擎

我特意将其称为“引擎”部分,因为在软件领域,该术语通常用于指代旨在解决特定问题的各种软件的复合体。例如,“搜索引擎”或“图形引擎”不仅是代码,而且是辅助软件,附加实用程序,算法描述等等。鉴于存在几个主要的区块链核心,并在此基础上构建了现有网络,因此将它们称为引擎(例如,“在以太坊引擎上构建”)很方便。

如果您的区块链没有独特的架构,而您的任务是在特定时期内提供解决方案,那么最好的选择就是与现有引擎一起使用。它们使您能够以自己的方式来实现您的共识和交易类型,从而组织网络验证器的管理。您可以使用已经在真实网络上经过测试的现成的开放源代码。您不必更改区块链节点的代码,而要实现您的逻辑,您只需要更改引擎开发人员提供的部分即可。在不引入新漏洞且不解决网络层问题的情况下,您只能专注于区块链的业务逻辑。

我们将分析已准备就绪的区块链引擎,您可以使用它们启动自己的区块链,设计和实现其内部经济并组织复杂交易的启动。

以太坊

该软件包基于以太坊公共区块链的核心。公共以太坊使用工作量证明类型共识,并且其许多测试网络使用不同类型的权威性证明和权益证明共识。该软件符合最严格的安全标准,已经在数十个实际工作的网络中进行了测试,并且我认为,该软件是开发用于创建具有各种共识和完整,多功能智能合约的区块链的最先进软件。

应当指出,项目POA网络的角色,其开发人员做得很好,并且已经启动了多个快速而可靠的网络。 POA网络比原始的以太坊快得多,但同时具有完成所有交易的相同的持久性和多功能性,并且验证者(矿工)的作用是由经过合法认证的诚实计算机进行的。该网络可以被认为是启动基于以太坊的公司区块链的标准。

区块链节点代码和共识

以太坊节点代码的两个主要实现:Rust(代码,名称:poa-parity(旧)或openethereum(新))和Go(代码,名称:geth)。

在撰写本文时,在geth(Go)上构建PoA网络时,只有Clique共识可供您使用-这是最简单,最不安全的协议,没有最终确定,只能用于测试目的。

以Poa-parity(Rust)达成的共识由两种算法组成:Aura验证程序schedule和GRANDPA finality小工具。经过验证和安全的此选项才可以在基于以太坊的POA网络中使用。 POA Network也正在努力实现HoneyBadger充满希望的BFT共识。

值得特别提及的是用C#为.NET Core平台编写的新Nethermind区块链节点。它完全支持以太坊和大量操作系统,对于使用.NET Core的公司来说,它是一个不错的选择。

智能合约和网络管理

以太坊POA使用EVM虚拟机和智能合约,最好用Solidity编写。 EVM早已成为具有许多现成代码和开发模式的虚拟机的标准。 EVM合同代码负责大量的加密货币,发现的任何漏洞都会引起社区和媒体的强烈反应,因此EVM合同的安全性目前非常高。

验证者列表通过智能合约进行管理-这非常方便。您可以使用一个或多个令牌,甚至摆脱它们。通过添加“全能”帐户,可以使添加验证器的过程变得灵活或尽可能简化。该方案的强大功能是,实际上,一个合同开发人员可以在一个具有最高安全性和可移植性的平台上创建完整的网络经济,并立即实施网络管理,交易逻辑和其他属性。

附加软件

通过以太坊,您可以使用web3.js JavaScript库,而不管共识,验证器或其位置如何。

对于以太坊POA,有一个用于自动完成网络部署的存储库-部署手册。

如果您打算启动以太坊POA,请使用此说明。它将指导您从创建验证器密钥到启动第一个节点,部署系统协定以及启动验证器和阻止浏览器界面。

AWS中存在一个现成的以太坊POA网络,但我仍然建议您自己控制启动。您必须了解您运行的服务及其工作方式。

EOS及其分支

EOS是第二大可保证的健康与安全。名称中的“ OS”并非偶然出现。

EOS可以在PoS或PoA版本中作为单独的网络启动。像以太坊一样,该软件已经在战斗中经过测试,具有很高的安全性和功能,可让您通过智能合约运行自己的区块链以自动执行任何交易

如果以太坊有一个简单的地址系统,那么EOS会立即使用一个分级的帐户系统和各种操作的权限。所有这些使EOS在设计上与操作系统类似-“一个程序可以运行其他程序”。

作为一个企业间平台,EOS使您可以方便地使用便捷的帐户管理系统并快速达成共识,并且可以轻松地将几乎所有功能与C ++插件和C ++ / WebAssembly智能合约集成在一起(例如,您可以添加其他加密技术)。

EOS共识设计和快速阻止功能使您能够快速响应用户,这对于构建具有复杂功能的分散式应用程序(例如Cyber??way,Golos.io项目或Commun社交网络)非常重要。赛博威最近将所有业务逻辑从以前的区块链迁移到用户的最复杂迁移透明化,这再次证明了EOS的灵活性和多功能性。

区块链节点代码和共识

EOS代码是用C ++编写的,并且是根据开发人员在使用Graphene,Bitshares,Steemit引擎时获得的经验开发的。它使用自己的DPoS共识版本。

现在,几乎所有使用DPoS的项目都以与EOS非常相似的方式构建其算法:这些帐户使用顶级验证者的令牌余额“投票”。验证者根据时间表分别对块进行签名,但每个签名块均在指定的时隙内签名。然后,他们共同记录所谓的“最后不可逆块”(LIB),该块从验证者那里收集2/3 +1签名。

许多EOS分支都在努力改善这种共识。例如,我们的Haya版本使用另一种Finality小工具RANDPA来修复LIB,以达到2-3秒的最终时间。

过渡到公司POA共识很简单,因为验证者列表由系统智能合约控制。

智能合约和网络管理

EOS中的智能合约使用修改后的WebAssembly虚拟机,它们通常用C ++编写,并且可以由任何帐户创建和使用。编写智能合约并不难,因为它们在许多方面与Solidity都有共同之处。

在EOS中,就像在以太坊POA中一样,可以在系统智能合约(例如,系统令牌)中实现网络管理,主令牌(或多个令牌)和交易类型。 EOS合同的一个有趣功能是使用表抽象来存储合同数据。以太坊主要使用映射(关联数组)。

EOS中智能合约的另一个功能是可升级性。合同的所有者可以通过更新逻辑或更正错误来替换它。这与以太坊非常不同,在以太坊中,合约的不可变性是确保除非硬分叉发生,否则合约的逻辑永远不会改变的重要条件。

在我看来,对于企业间的区块链而言,更改合同代码的能力是一个重要的优势。仍然无法窃取此处未注意的内容,但是您可以在各方同意的情况下更新代码,而无需任何验证人的参与。

在EOS中,可以组织由合同所有者而非用户自己支付的“赞助”交易。这是吸引新用户的强大机会。您还记得在区块链中不存在不损失安全性的“免费”交易吗?

附加软件

BOSCore,Telos,Haya和十几个EOS分支证明了该软件对于许多项目都很有趣。有足够的EOS工具,您无需从头开始实施相关软件。

Eosjs-web3.js的类似物,使您可以从浏览器和任何应用程序处理任何基于EOS的网络的合同。

EOSTracker是一个开放源代码的块浏览器,具有用于验证者的分散投票应用程序。

EOS没有像以太坊的POA网络那样强大的集成商,因此每个项目都构建自己的解决方案。但是,该节点的主要代码是稳定的,并且在严重的负载下也可以正常工作。

奇偶校验基板

底物由奇偶校验团队创建。已经开发了大量软件:钱包,区块链节点,智能合约系统,编译器,虚拟机。

通过Parity Substrate,开发人员可以使用具有复杂共识和交易处理逻辑的现成模块轻松创建自己的区块链版本。 Substrate是一个区块链构造函数,例如,您可以在其上制作以太坊或比特币区块链节点。

基板是Polkadot重大项目的一部分,该项目由主链和许多具有独立逻辑的分片链组成。

将您的区块链“连接”到Polkadot的好处是可以与其他链进行链上数据交换,并且无需额外软件即可使用其合同,账户,令牌的能力。

区块链节点代码和共识

基板代码是用Rust编写的。我认为,在Substrate结构中,您可以感受到区块链团队的丰富经验,因为所有组件的结构都很好,分为单独的模块,并且代码包含详细的注释。该引擎灵活性的证明是存在基于底物代码的比特币和ZCash网络客户端。

至于共识,您可以从几个现成的选项中进行选择或编写自己的选项。在大多数情况下,这是PoA或DPoS,在Substrate的情况下,这意味着使用Aura算法和GRANDPA。

基板区块链性能很高。我们对Polkadot的主要链条进行了测试,并配置了99个验证器,分布在三大洲,并显示出出色的结果。

我认为Substrate是一个经过深思熟虑的体系结构,开发堆栈(Rust)和广阔的开发领域。这是一个非常灵活的网络,您可以在此基础上构建任何复杂性的解决方案。

智能合约和网络管理

与以太坊和EOS不同,底物使用验证者而非用户托管的代码来处理交易。该代码称为“运行时”,由WebAssembly虚拟机执行。

让我提醒您,运行时本质上是一个大的智能合约,由验证程序更新并由开发人员从单独的模块中收集。这些模块包含帐户,令牌,任何复杂性的交易等的逻辑。正是此属性将Substrate变成了构造函数。为了解决您的问题,您可能只需要组合几个现成的模块或对其中一个模块稍加修改即可。

用户智能合约的模块值得特别提及:WASM和EVM。它们使用户能够放置其智能合约,因此也可以在Substrate上启动通用区块链。

交易启动的限制是由运行时开发人员实施的-您可以使所有交易以相同的价格进行交易,可以将资源精确到位,或者使所有内容免费,并且完全不使用内部加密货币。

就灵活性而言,运行时具有许多优势-开发人员可以将它们结合起来,创建复杂的角色,结合网络管理,内部逻辑和经济性。请记住,更新运行时代码是验证者的法定人数。

附加软件

对于Substrate,有许多有用的解决方案:polkascan-块浏览器和一组JS程序,可用于基于Polkadot和基于Substrate的网络。您可能会发现使用ansible脚本部署完成的Substrate集群很有用,该集群用于测试Polkadot。

由于链之间的差异很大,因此Substrate没有丰富的通用软件,钱包和块浏览器选择,例如以太坊或EOS。该项目正在积极开发中,许多团队同时创建了相关软件。

Cosmos SDK

Cosmos是一个基于一个主链和许多子区块链(称为“区域”)的项目。子链是基于Cosmos SDK(一组用于构建区块链的软件)构建的。

Cosmos是Tendermint项目的延续,其关键技术是可靠的共识和应用程序概念,类似于Substrate中的运行时。

与Polkadot + Substrate一样,使用Cosmos SDK创建的区块链可以单独存在,也可以作为子链连接到Cosmos生态系统。

整个Cosmos软件套件都是用Go编写的,具有良好的结构并得到了积极使用。在此基础上,包括Binance Chain在内的多个项目已经在运作。

如果您的开发人员在Go上编写-Cosmos SDK可能适合您。它在实际项目中起作用并且正在积极开发,其项目链和交易可以在公共网络上看到。

区块链节点代码和共识

Cosmos的主要概念称为“应用程序”。任何区块链都是状态机,在Cosmos中,它被放置在代码的单独部分中。

实际上,开发人员只需设置规则即可,通过编程将所谓的状态转换函数根据该规则通过外部影响将一个数据转换为另一个数据。这听起来很复杂,但实际上事务处理是一种状态转换,会更改多个余额。这就是应用程序所做的-它需要一些外部影响(交易)并更改其状态。产生的更改记录在区块链中。在这种情况下,开发人员不必解决共识问题和网络问题-网络本身将在彼此之间达成共识并就结果达成共识。

Cosmos的共识基于Tendermint共识,这与pBFT非常接近。它的独特之处在于,将为每个块收集验证者确认,这意味着该块被网络接受后即刻完成。该算法在验证器之间需要大量消息,并且在网络问题的情况下,这种共识会减慢链的确定。

Зато он является наиболее предсказуемым, защищенным от форков, имеет формальные математические доказательства надежности и, по моему мнению, является наиболее строгим и безопасным решением из всех существующих консенсусов.

Смарт-контракты и управление сетью

Application в Cosmos можно рассматривать как единый смарт-контракт, ответственный за обработку всех видов транзакций. Вот пример структуры Application для сервиса регистрации имен.

Одновременно с созданием кода для блокчейн-нод, Cosmos SDK создает код клиента, который умеет формировать транзакции нужных типов.

Для ограничения транзакций в Cosmos, как в Ethereum, используется газ. Исполняя транзакцию, валидаторы вычисляют ее стоимость в условных единицах ?gas?. Отправляя транзакцию, пользователь указывает цену, которую он готов платить за единицу газа и лимит, который он готов потратить. Это является основанием для вычисления цены за транзакцию.

Важным для Application в Cosmos являются требования к детерминизму кода, т.е. разрабатываемые операции не должны порождать разные результаты в разные моменты времени или на разных архитектурах, иначе блокчейн не будет работать.

Дополнительное ПО

Параллельно с созданием кода Application, Cosmos SDK позволяет сразу же получить код, который вызывает нужные функции с клиентских машин. Этот код можно использовать на сайте, работающем с Cosmos, или в кошельке (клиенте) сети.

На JavaScript я нашел несколько полезных библиотек: js-cosmos, cosmosjs и универсальную js-abci, реализующую интерфейс ABCI. Их удобно использовать, если взаимодействие с вашим блокчейном планируется из браузера. ABCI позволяет создавать Application на разных языках, среди которых Java, C++, Python. Проект lotion, например, позволяет создать блокчейн полностью на Javascript.

Cosmos бурно развивается, на этом движке запускается много разных проектов. Рекомендую обратить на него внимание, если у вас есть экспертиза в Go и вы хотите надежное работающее решение.

订阅Forklog YouTube频道!

—-

原文链接:https://forklog.com/kak-zapustit-svoj-blokchejn-vybiraem-dvizhok/

原文作者:Nick

编译者/作者:wanbizu AI

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...