分片技术简介与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

相关文章

python协程实现高并发的技术详解

《python协程实现高并发的技术详解》协程是实现高并发的一种非常高效的方式,特别适合处理大量I/O操作的场景,本文我们将简单介绍python协程实现高并发的相关方法,需要的小伙伴可以了解下... 目录核心概念与简单示例高并发实践:网络请求协程如何实现高并发:核心技术协作式多任务与事件循环非阻塞I/O与连接

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Java Docx4j类库简介及使用示例详解

《JavaDocx4j类库简介及使用示例详解》Docx4j是一个强大而灵活的Java库,非常适合需要自动化生成、处理、转换MicrosoftOffice文档的服务器端或后端应用,本文给大家介绍Jav... 目录1.简介2.安装与依赖3.基础用法示例3.1 创建一个新 DOCX 并添加内容3.2 读取一个已存

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP