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

相关文章

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2