在 EKT 通用积分的生态中,EKT 主链是其中最重要的组成部分。基于 EKT 提供的多链机制,其他项目可以基于 EKT 运行一条独立的主链。这条独立的主链可以根据需求灵活的配置代币的种类、数量以及共识算法,同时也可以方便的接入 EKT 通用积分的生态并共享 EKT 通用积分生态的资源。
一、EKT 的多链架构
EKT 通用积分生态是一个并行多主链的结构。其中最重要的主链是 EKT 主链,它是维持整个系统生态运转的核心。EKT 主链除了承担交易记录、用户体系以及跨公链资产交换的功能以外,还记录了生态中所有其他链的信息,基于 EKT 主链可以实现天然的跨链资产交换。
在 EKT 通用积分生态里,其他主链的底层代码和 EKT 主链几乎是一致的,不同的在于其他主链的代币情况和共识算法的区别。其他主链在 fork 了 EKT 主链的代码以后,可以部署到自己的节点独立运行,这种情况下该主链相当于一条独立的区块链,和 EKT 通用积分生态没有产生直接的关联。
如果一条基于 EKT 代码运行的主链想要加入到 EKT 通用积分生态的话,他该如何操作呢?EKT 通用积分会提供一个统一的客户端。这个客户端可以看做是其他主链和 EKT 主链进行连接的入口。其他主链可以在这个客户端里提交自己的主链信息,包括部署节点、代币名称、代币数量以及共识算法等信息。在向 EKT 主链注册成功以后,这条主链就可以共享 EKT 通用积分生态的资源了。
每一条基于 EKT 代码运行的主链都需要有自己的代币,即所谓的“一链一主币”。主币可以充当该链上的交易手续费。另外由于 DApp 开发也可以基于主链,是主链的上层应用。主币的功能及消费都可以在 DApp 里进行定义。
二、多链的资产交换
上面提到在 EKT 通用积分生态里,每条主链都需要有一个主币。基于 EKT 提供的钱包,不同主链的代币可以同时存在于一个账户下,这就是为用户的跨链资产交换提供了基础。只有加入到 EKT 通用积分生态的主链才可以分享生态的用户资源并且把自己主链的代币在全网中流通。
不同主链上的代币进行交易时所消耗的手续费根据交易发生在的主链来决定。比如 A 链向 B 链转发了一笔资产,这笔交易是记录在 A 链上的,因此需要消耗 A 链的主币作为手续费。
三、多链多共识
区块链可以看做是一本记录所有交易的分布式公开账簿,而区块链中每个节点都是对等的。这就带来一个问题:谁有权往这个账本录入数据?如果有好几个节点同时对区块链进行数据写入,最终以谁的为准?这就是一个在分布式网络中如何保持数据一致性的问题。共识就是在一个分布式的网络中,让各个参与网络的节点达成数据上的一致性。在区块链中,共识算法的作用还包括区块生产、区块验证以及系统的经济激励等功能。不同的共识算法适用于不同的应用场景,不同的应用场景对共识算法也有不同的需求。这就要求一个区块链应用开发平台能够提供不同的共识算法供开发者进行选择。
EKT 主链采用的共识算法是授权股权证明机制(DPOS),这是一种兼顾效率和去中心化的解决方案。默认情况下,基于 EKT 生成的其他主链的共识机制也是 DPOS。但是不同的共识算法的适用场景也各有不同,而共识算法自身也在进化,每年都有许多新的共识算法被提出。因此如果能提供一种机制,能够 EKT 生态支持的共识算法根据技术的发展而不断扩展,这对基于 EKT 主链进行开发的开发者是一个非常大的优势。
在项目初期,EKT 除了默认提供的 DPOS 共识算法以外,还会陆续支持工作量证明(POW)以及股权证明机制(POS)。 用户在基于 EKT 主链的代码部署自己的主链时,可以选择使用哪种共识算法。在部署完以后再去 EKT 的客户端中进行注册。共识算法一旦选定就会记入 EKT 主链,不可更改。
EKT 通用积分生态是一个开放的系统,任何开发者都可以提交pull request, 向 EKT 主链提交自己实现的新的共识算法。如果用户想要使用的共识算法暂时不被 EKT 所支持,那用户也可以基于 EKT 开源的代码进行开发,引入自己想要使用的共识算法。等用户提交的 PR 被 EKT 主链接受。被 EKT 主链合并的共识算法也可以向其他用户提供。我们鼓励并欢迎开发者向 EKT 项目提交自己实现的共识算法。
四、多链多共识的优势
相比较目前大多区块链应用平台只能提供一种默认的共识机制,EKT 的‘一链一主币,多链多共识“ 的机制为后来的区块链项目开发提供了很大的便利,可以使用于任何区块链适用的应用场景。 EKT 提供了一套低层的区块链机制,其他的区块链项目可以很容易的基于 EKT 的主链代码部署一套自己的主链。在部署主链时可可以灵活的发行自己主链的代币以及选择共识算法。新部署的主链也可以加入到 EKT 通用积分的整个生态,共享 EKT 生态的用户资源,代币也可以和EKT 主币以及其他主链的代币进行交换和流通。
EKT 的多链多共识提供了低层的区块链技术支持,开发者可以基于这个支持进行业务层面的 DApp 开发,关于这部分内容我们会在后续的文章中详细阐述。