LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 深入了解DC--Substrate框架

深入了解DC--Substrate框架

2021-03-08 DC中文社区 来源:区块链网络

Substrate采用模块化的方法进行区块链开发,并定义了一组丰富的原语,允许开发人员使用强大的、熟悉的编程习惯用法。

架构

那么什么是 Substrate 呢?你可以将其看作类似于 Express 或其他 Web 应用程序的框架,但它是用于构建分布式或去中心化的系统的框架,可以构建例如加密货币项目,或消息总线系统。正如大多数 We b应用程序不需要重新实现自己的 HTTP 协议一样,我们认为,对于每一个团队创建新链时,也不需要从头实现网络和共识的代码,这浪费精力的。更不用提为了实现业务逻辑,必须雇用的密码学家、安全研究员、网络工程师、开发人员(以协调更新)等等了。如果你想使用 Substrate 来构建一个新项目,只需要在代码中实现少量的函数回调,然后就能获得以下特性:

共识机制,确定性(Finality),出块投票机制。即使你不需要加密货币,甚至是构建不需要区块链的项目,这些特性也是可用的——这意味着你将获得拜占庭容错特性,也就是说网络中部分节点宕机、失效或者被恶意控制时,你的整个网络系统仍然可以继续正常工作。一个有效的、确定的、沙箱式的 WebAssembly 运行时,可以用于运行智能合约,以及其他基于Substrate 的项目。当然你也可以不用 WebAssembly ,自己写虚拟机解释器,但是我们坚信使用WebAssembly 运行时的好处,能让你利用我们全球社区开发的工具与我们在 WebAssembly 的工作成果。客户端平滑更新——任何可能影响共识的更新都是通过将代码编译成 WebAssembly 的执行文件,然后把它作为网络上的一条消息进行部署。不仅如此,你可以保存多个你想编译为本地的不同版本的共识代码,Substrate 会去处理复杂的正在执行的本机代码与发布的 WebAssembly 部署环境的差异。你将获得本地代码所拥有的速度,但是因为 WebAssembly 有回退机制,可以以自己的速度部署本地版本,而且不会有硬分叉或者共识问题。您需要自己实现的部分那你需要自己实现哪些内容呢?本质上来说,Substrate 只是你的状态机,包含交易之类的东西。为了使 Substrate 尽可能的通用,它本身没有交易。相反,它有我们所谓的能够存储任何数据的、只是二进制块的“外部交易(extrinsics)”。对于大多数链而言,这些 extrinsics 包含交易,但是你并不需要那样去实现。你完全可以从网络中去掉货币的概念,然后基于 Substrate 创建一个去中心化的 Erlang 模式的 actor 模型并发系统,并为网络初始化一组可信的机构,验证网络的正确行为。假设你确实需要货币和交易,但是,交易格式可能并不重要——只需要一个交换格式和可以访问的一个数据库。甚至 Substrate 比其他分布式体系结构(就像微服务)更容易——因为代码和数据存储在同一个位置,你不需要实现交易的后向兼容,仅实现存储就好。对于有私有交易的链来说,实现起来可能会更加复杂。

这种设计的一个缺点是,你必须手动确认在创建块时完成的状态转换与验证现有块时完成的状态转换保持同步。如果你不这样做,会产生共识错误。虽然将来可能会改变该方式,但现在还需要这么做,不过在实践中可能不是什么大问题,因为你可以将交易执行委托给一个公共函数来处理。

此外,你需要自己维护一个验证者集合。包含 PoA 和 PoS 共识验证,不过我们目前还没有支持 PoW 的验证。验证者集合是一个公钥的列表,其对应的私钥应被视为可对给定区块签名的有效私钥。该集合可以变,但每个区块都由它创建时选择的集合进行验证。你不必处理验证者投票的困难问题,甚至不必处理他们对每个“区块”的投票,这是由 Substrate 自动处理的。验证者集合可大可小,但是这里有一个权衡:在区块达到确定性(即不可逆)之前,验证者越少,它们之间就越容易勾结越容易通过验证,验证者越多,验证耗费越多 。

我们不能让 Substrate 自动处理 PoS 共识,因为 PoS 依赖于具体项目,例如包含价值代币的,但并非所有项目都包含。测试网的代币可能就故意设计成没有价值的,而基于 Substrate 实现消息总线的项目可能根本没有代币。然而,基于 Substrate 编写一个强制使用代币的库将很容易,并自动为您提供交易处理和 PoS 共识[3]。关于 Substrate 的一点是,在它上面构建更高级的库相对容易。即使用 Substrate 构建新的区块链时也可以得到很多,但是它仍然是一组相对最小的原语,并不真正打算直接使用。相反,它应该作为一个项目模块,其他功能可以被分解成帮助库。虽然细节尚未得到证实,但 DC并不是唯一一个基于 Substrate 的链;随着 Substrate 平台的成熟,开发人员可以构建更多的库,使得构建新链像开发 web 应用程序一样简单。

—-

编译者/作者:DC中文社区

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

LOADING...
LOADING...