分片技术简介与Trias分片MVP

2024-04-22 03:32
文章标签 技术 简介 mvp 分片 trias

本文主要是介绍分片技术简介与Trias分片MVP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

区块链发展的关键因素有两个,一个是数据的隐私和确权,一个就是区块链的扩容,即区块链性能的提升。区块链数据的隐私和确权我们前面的文章已经提到过,今天我们主要讨论的是区块链的扩容方法。


区块链为什么要扩容?我们先来看看比特币和以太坊的吞吐量,比特币是7TPS左右,以太坊是20TPS左右,但是中心化的VISA的TPS大概在8000左右。所以如果一个支付系统放在区块链上,区块链的性能将远远不能满足支付系统的吞吐量要求,这就像一个高速公路收费站,我们只开了一个收费口,而且这个收费口的工作效率也很低,那么就会有大量的汽车被堵在收费口外,这会造成高速公路也就是网络的拥堵,一笔交易可能要等几天才能完成。但是如果我们开了10个收费口甚至更多,那交通状况将大大得到缓解直到畅通无阻。如果一个收费口可以比喻为一个分链的话,设置“多个”或“多种”收费口的技术来使区块链的吞吐量增加的技术就是分片技术。


分片技术最早源自数据库的扩容技术,是一种基于数据库分成若干片段的传统概念扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上,在这些不同服务器上的数据就能同时并行处理,在同样的时间环境下,处理速度成倍增加。这种分片技术应用于区块链上就是将网络中的节点分成不同的分片,也可以说分在不同的分链上,各分片可以并行处理不同交易,以提高网络并发量,也就是我们常说的TPS。区块链分片的特点是具有动态扩容性,随着节点数量的增加,区块链的性能也随之增加。将网络分割为碎片会使得更多的交易同时被处理和验证。但是它仅仅可以并行处理相互之间未建立连接的交易,对于之间有关联的交易,分片对性能的提升将会受到影响。所以分片技术应用于区块链有其独有的优势和挑战,现在应用于区块链的分片技术主要有几种:网络分片、交易分片以及状态分片等。

网络分片

网络分片就是开发一种机制来确定哪些节点可以按照安全的方式保留在哪些碎片中。这样能避免那些控制大量特定碎片的人所发起的攻击。通常随机抽样的方式可以防止恶意节点过度填充单个碎片。

交易分片
交易分片就是通过用户交易的输入输出数据并根据一种算法(如哈希值)来确定交易数据的分片。但是这种方法不能有效避免双花攻击,除非数据跨碎片进行通信,但这又可能会破坏交易分片的目的——提升交易吞吐量。但根据交易者的地址信息来分片的话就可有效检测到双花攻击,而不需要进行任何跨碎片的通信。

状态分片

状态分片就是通过把区块链数据分成不同状态的数据来分片的一种技术。在状态分片的情况下,重新分配节点是非常棘手的。一个特定的碎片只会保留一部分状态,如果在一次重新调整网络的过程中,在同步完成前可能会出现导致整个系统失效的问题。
但是Trias探索了分片技术的新方向,通过把交易分片和状态分片技术组合,弥补了各自技术的缺点,使分片技术可以更好地应用于区块链。

Trias分片MVP在真实区块链基础上,加入主链用来协调处理各分片交易,另外又在此基础上加入负载均衡和数据库,分别用来分发交易请求和存储账号数据。

具体的架构请参照下图:

LoadBalance

LoadBalance是一个负载均衡层,所有的交易请求通过LoadBalance进行处理,当前分为两类请求,一类是查询请求,LoadBalance会直接请求Storage查询并返回,还有一类是交易请求,LoadBalance请求storage获取交易涉及的Chain,将请求转发给Root_Chain处理。当前LoadBalance通过Openresty实现。

Storage

Storage做为存储层保存交易账号数据,包括账号名,Chain ID,余额等,只有LoadBalance会直接与Storage交互,涉及到查询和更新。当前Storage通过etcd实现。

Root_Chain

Root_Chain作为一个主链在跨链交易时会生成交易凭据,各Child_Chain依据主链的凭据进行操作。当前版本Child_Chain要接收到Root_Chain请求就会操作,还未实现Root_Chain和Child_Chain的校验。当前Root_Chain通过python实现,开启一个rpc,api接受LoadBalance请求,判断是否跨链,产生交易生成凭据并将结果返回给LoadBalance。

Child_Chain

Child_Chain是独立的区块链,有单独的节点和数据,通过接受Root_Chain请求处理交易。当前通过Tendermint实现共识,Tendermint内account作为内建的app提供交易场景。
 

这篇关于分片技术简介与Trias分片MVP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3