Seele Stem子链协议发布 公链产业应用加速落地!

2024-03-21 18:50

本文主要是介绍Seele Stem子链协议发布 公链产业应用加速落地!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Seele Stem子链协议发布 公链产业应用加速落地!

1. 简介

  区块链被认为是构建价值互联网的关键技术,但是因为吞吐量不够高,目前还不能满足很多应用的要求。有几个因素限制了区块链的吞吐量。比如,去中心化的区块链需要各节点达成共识,区块不能生成太快。我们熟知的比特币大约每10分钟产生一个区块。同时,为了方便网络传输,区块不能过大。为了增加区块链吞吐量,人们提出了一些区块链扩展的方案,其中包括分片和子链。分片的基本思路是把区块链网络和状态划分成几个相互等价的片。子链架构是一种具有主从关系的设计。子链依赖主链,提供不同功能。子链可以用一种比主链更中心化的共识机制来提高吞吐量,满足各种应用的需要。最知名的子链架构当属Plasma,这是以太坊项目提出的一种layer 2的扩展方案。它的基本想法是,用主链上的智能合约作为子链的锚,资产可以在主链和子链间转移。在子链上,资产可以快速地转移,也可以被提取到主链中。人们提出了很多不同的Plasma模型,包括Plasma MVP,Plasma Cash, Plasma snapp,Gluon Plasma 等等。Plasma MVP和Plasma Cash的子链采用UTXO模型,而Plasma snapp和Gluon Plasma的子链使用了账户余额模型。在UTXO模型中,一个主体拥有的资产被分为很多部分,每部分是未消费的交易输出。尽管方便于资产追踪,UTXO模型在资产管理和智能合约兼容上都有局限性。使用账户余额模型的Plasma snapp和Gluon Plasma有更好的灵活性。但是,Plasma snapp不支持子链资产的部分退出,而且也没有完整的“数据不可见”问题 (子链出块者拥有的区块数据对子链普通用户完全或部分不可见)的解决方案。Gluon Plasma支持子链资产部分退出,但是当区块数据对子链普通用户不可见时,它采用了了用户投票的解决方案。用户投票的方案是易受攻击的,特别是在子链用户少的时候。因此,有必要提出一种更可靠,拥有更强大功能的子链模型。本文提出Seele Stem子链协议(下文简称Stem) , 在保障子链资金安全的同时,提供齐全的服务功能。Stem支持账户余额模型、安全和灵活的资金存取/退出操作、从主链的Stem智能合约快速获取账户余额信息、可调整的子链状态确认时间。更重要的是,它有完整的针对“数据不可见”问题的解决方案,这是其他Plasma方案所不具有的。以下,我们将介绍Stem模型的基本设计和主要特性。

2. Seele Stem概况

  SeeleStem子链协议主要由两部分组成:子链和在主链上部署的Stem智能合约。子链可以支持不同的共识机制,比如BFT, POS和DPOS等等。Stem智能合约是主链和子链联系的接口(见图1)。在Seele Stem子链协议中有三种角色:子链创建者,子链维护者和普通用户(参见图2)。

图1. 主链子链结构示意图
图1. 主链子链结构示意图

  子链创建者是Stem智能合约的创建者。创建合约需要一定量的押金。子链维护者需在Stem智能合约上注册并且承担生成子链区块的任务。维护者可以在合约创建时注册,也可以在合约创建后注册。注册时维护者要存放一定的初始押金,这些押金在子链是可以消费的,但要维持账户最低余额。一个主要的对子链维护者的经济激励是他们可以从区块生成中获取交易费。这些交易费可以从Stem智能合约中提取。普通用户可以存放资金在Stem智能合约并且在子链得到相应价值的代币。他们可以参与子链的多数活动,但不能生成子链的区块。由于子链维护者可能会作恶, Stem提供了让普通用户监督子链维护者的机制,并且不会降低子链出块的效率。

图2. 子链的各角色功能图
图2. 子链的各角色功能图

  Stem智能合约里记录了子链维护者和普通用户的账户余额。子链维护者或者子链创建者按照一定的频率提交中继区块(中继区块由选取的子链区块的部分数据组成)到Stem智能合约。基于中继区块,Stem智能合约里的账户状态会被更新,并提交某些数据的哈希作为新状态的证明。如果用户发现他们的账户余额不正确,可以提交挑战,要求子链维护者证明最新提交的中继区块是正确的。有效的证明可以移除相应的挑战。在一定的挑战期过后,如果没有待回应的挑战存在,中继区块和新的Stem 合约状态将被确认,不可更改。对中继区块的挑战流程见图3。为了减少无效的中继区块提交,子链维护者或创建者每次提交中继区块都需要付一定量的保证金。如果一个中继区块被挑战成功,相应的保证金将被转给成功的挑战者。相似的,为了减少无效的挑战,每次提交挑战需要付挑战保证金。如果挑战失败,相应的保证金将被转给证明提供者。以上的机制提供了一个减少恶意操作的经济奖惩模型。除了存放资金到子链,从子链撤出资金是Stem另外一个关键的功能。在已确认的账户余额有充足的资金时,撤出请求才能生效。如果子链维护者不想继续参与维护子链,他们可以从子链完全退出。他们也可以选择从子链中提取交易费。对于普通用户,他们可选择撤出部分子链资金。这是一个用户友好的特性,因为在很多其他Plasma模型中,用户在撤出时必须撤出所有资金。在Stem中,有效的撤出请求总是可以被执行。存放和撤出操作会使主链和子链的状态发生改变。Stem的设计确保主链和子链在两个中继区块提交的间隔里独立运行,保证了整体效率。

图3. 对中继区块的挑战流程示意图。
图3. 对中继区块的挑战流程示意图。

**

3.Seele Stem的主要特性

**

和其他Plasma模型比较,Stem有几个突出的特性

a. 解决了数据不可见问题

  数据不可见问题指在子链维护者隐藏了信息的情况下,子链普通用户不能在Stem智能合约挑战子链维护者。这是一个大多数Plasma模型都未解决的难题。比如,Gluon Plasma和 Stem在账户余额模型和通过中继区块更新账户状态上有相似之处。但是,Gluon Plasma没有很好地解决数据不可见问题,故采用了用户投票的方式来试图解决。而在子链用户不多的情况下,用户投票是不安全的。Stem确保普通用户可以在不依赖于其他用户的情况下保护自己的账户。普通用户不需要提供子链维护者作弊的证明,只需让维护者证明某一个账户的状态更新是有效的即可。因为子链维护者应该拥有子链的所有区块数据,他们可以提供有效的证明。加上其他的一些机制比如防止子链通胀,Stem可以完全解决数据不可见问题。

b. 账户余额模型

  很多Plasma模型,比如Plasma MVP,使用UTXO模型来追踪子链资产。但UTXO模型的缺点是和智能合约不好兼容,也不方便处理大量交易。而账户余额模型更适合于处理复杂状态,和智能合约更兼容。为了向子链提供智能合约的支持,Stem将采用账户余额模型。账户余额将被记录在子链和Stem智能合约中。Stem智能合约里的余额在每次中继区块提交时被更新。

c. 可定制的状态确认时间

  Stem的状态确认时间是可以定制的,也就是说,在Stem智能合约中的子链状态可以按一定的频率进行确认。子链维护者和普通用户的账户余额被记录在Stem智能合约中。按照一定的频率,子链维护者提交中继区块到Stem智能合约并且更新相关的账户余额。中继区块的数据准确性在挑战期内可以被挑战。如果在挑战期结束后,所有的挑战(如果有)被正确回应,那么中继区块将被确认,同时所有相关账户余额更新也被确认。在上一中继区块被确认后,下一个中继区块才被允许提交。如果中继区块在挑战期结束后没有被确认,那么它需要被回滚,使Stem智能合约可以接受新的中继区块。最多可以回滚一个中继区块。

d. 灵活的资金存取

  在Seele Stem中,子链维护者和普通用户可以安全地存放资金在子链上,并且从子链撤回资金。有一些Plasma模型只支持账户资金完全退出, Stem支持一个账户部分和全部资金退出。所有的存放和撤回请求在Stem智能合约中有三种状态:请求状态,执行状态和执行后状态。在请求状态中的请求是可以被取消的。如果存放和撤回请求在子链中没有被正确执行,子链维护者和普通用户仍然可以从Stem智能合约中撤回他们的资金。

e. 轻量的信息存储

 每次提交的中继区块,Stem智能合约并不存放整个区块的信息。它仅存储中继区块提交者,当前时间戳,需要更新的账户信息,以及两个Merkle树的根哈希。其中一个Merkle树的每个叶子代表了一个账户的余额。另一个Merkle树的每个叶子记录了一个账户从上一个中继区块到新中继区块发生的交易记录。主链增加的存储数据实际上是很少的。因此,Seele主链可以同时支持多个子链。

4. 结论

  本文引进和介绍了Seele Stem子链协议, 一个提高区块链扩展性的新协议。Stem 具有安全,效率高和用户友好的特性。更多的技术细节我们将在未来的文章中发布。本文省略了Stem子链智能合约的介绍。如何保护子链智能合约的安全是我们研究的重要问题之一。

这篇关于Seele Stem子链协议发布 公链产业应用加速落地!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/833591

相关文章

PyTorch核心方法之state_dict()、parameters()参数打印与应用案例

《PyTorch核心方法之state_dict()、parameters()参数打印与应用案例》PyTorch是一个流行的开源深度学习框架,提供了灵活且高效的方式来训练和部署神经网络,这篇文章主要介绍... 目录前言模型案例A. state_dict()方法验证B. parameters()C. 模型结构冻

线程池ThreadPoolExecutor应用过程

《线程池ThreadPoolExecutor应用过程》:本文主要介绍如何使用ThreadPoolExecutor创建线程池,包括其构造方法、常用方法、参数校验以及如何选择合适的拒绝策略,文章还讨论... 目录ThreadPoolExecutor构造说明及常用方法为什么强制要求使用ThreadPoolExec

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动