区块链的可拓展性研究【04】分片
分片属于layer1扩容
区块链分片是一种技术实现,可以将区块链网络分成多个片段,每个片段负责处理一部分的交易数据。这种方法可以提高区块链网络的处理速度和吞吐量,降低交易确认时间和费用,同时也可以减轻节点运行负担。
在传统的区块链网络中,所有的交易都需要被所有节点共同验证和记录,这会造成网络拥堵和交易速度缓慢等问题。而区块链分片则将整个网络拆分成若干个小的片段,每个片段独立处理和验证其所包含的交易数据,从而大幅提高了网络的处理性能。
分片技术将整个区块链网络分成不同的分片,由各分片的节点负责处理所在分片的事务以及存储分片的状态,通过并行验证事务,整个区块链的吞吐量近似线性地提升;同时,随着节点数目的增加,整个网络的分片数量也随之增多,全网处理事务的能力将进一步提高。分片技术一般需要定义分片配置、片内和跨片共识协议、重配置方案等阶段,从而构成一个完整的分片区块链系统。
对于任何一种分片方式来说,需要解决如下两个主要问题:
内部共识的安全性
跨片操作的原子性
分类
网络分片 network sharding
网络分片是通过一定的组织方式将整个网络分成不同的分片,各个分片并行处理整个区块链中的部分交易,各部分的交易完全不相同,从而同时完成多笔交易的验证。
为了避免恶意节点过分填充一个分片、从而控制网络,通过可验证随机函数VRF,每隔一段时间随机抽取节点形成分片。
交易分片 transaction sharding
交易分片使得各个网络分片对交易具有更强的处理能力,将客户端的跨片交易分成若干个相关的子交易,不同分片的跨片易可以并行处理。
但是在基于UTXO的账本系统,一笔交易可能由多个输入和多个输出构成,因此一般通过交易的hash值分片。为了防止双花交易,必须要在所有分片间建立通讯。但是这种相互之间的通信开销可能会破坏交易分片的扩容效果。 在基于帐户的系统,每个交易都将具有发件人的地址,通过发件人地址分片,造成双花的两笔交易会在同一个分片中得到验证,因此不需要在不同的分片中建立通讯,避免额外的通讯开销。
状态分片 state sharding
状态分片是将各部分完全不同的账本分别存储在各个分片(分片内的节点往往存储同一版本的账本),整个分片网络组成一个完整的账本,可以减少各个节点存储账本的压力。
状态分片的关键是将整个存储区分开,让不同的分片存储不同的部分,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。可以减少状态的冗余存储,使得整个区块链网络具有存储的可扩展性。 但是状态分片有以下几个问题需要解决,1)会导致频繁的跨片通讯;2)由于系统状态没有在所有分片中复制,因此网络一旦有交易的输入是来自脱机的分片,那么这笔交易将无法得到验证;3)而且由于每个分片只保留了状态的一部分,所以在每次重新调整网络的过程中,必须要考虑防止调整过大而导致在同步完成前可能会出现的整个系统失效的问题;
总体上来说,分片技术虽然在一定程度上有效地解决了区块链可扩展性问题,但还存在很多方面的不足需要改进。一方面,整个分片机制运行过程中有大量的时间用于处理交易以外的事情,组织分片、分片重配置需要花费大量的时间和开销。另一方面,状态分片是分片方式中极为难实现的一环,在状态分片的情境下,跨片交易的验证过程就变得极为困难,不同分片节点由于其存储账本不同而需要通过一定的方式进行交易转移或账本状态交流。
步骤
分片配置
对于整个网络来说,首先要实现网络分片,基于安全性和效率考虑,通常使用随机函数进行分片。
例如,可以让加入的节点去计算PoW,通过计算结果的hash分片;或者通过账号地址,等参数分片,其地址本身也是hash值,因此也相当于随机分片。分片重配置
为了保证各个分片的安全性以及防止节点之间作恶的行为发生,在一个分片纪元过后,一部分节点从原有分片中取出与其他分片中的节点进行交换。
虽然二次全随机分片能够尽量保证分片后区块链网络的安全性,但是在重配置的过程中整个网络对于交易的验证停滞,全网都要在重配置前后进行新旧账本的交接,无论在开销上还是时间上都大幅度降低整个区块链的性能。因此还有部分重分配和自由选择重分配的方式减少再次分片中的开销,但这都是以安全性为代价的。片内共识
在完成分片配置后,区块链需要进行交易共识,共识分为片内共识和跨片共识。片内共识要求同一分片内各个节点按照所在分片的协议进行共识和广播,最终得出整个分片的共识结果。片内共识协议主要分为基于PoW的片内共识协议和基于BFT的片内共识协议。跨片共识
跨片共识不同于片内共识,片内共识时片内各个节点经过彼此间广播可直接进行交流,由于所存储信息不相交,跨片共识时不同分片之间各节点在交易验证过程中需要交流账本状态,因此跨片交流的基本单位是各个分片,不同分片执行共同的跨片协议实现共识。跨片共识的主要方式有交易原子化、交易集中化和采用类路由协议。
相关文章:
区块链的可拓展性研究【04】分片
分片属于layer1扩容 区块链分片是一种技术实现,可以将区块链网络分成多个片段,每个片段负责处理一部分的交易数据。这种方法可以提高区块链网络的处理速度和吞吐量,降低交易确认时间和费用,同时也可以减轻节点运行负担。 在传统…...
blender 粒子系统 roughness 属性
粒子系统中的Roughness是一种用来控制粒子的随机性和不规则性的属性,它可以影响粒子的发射方向、速度、大小、旋转等。Roughness有以下几个子属性: - **Uniform**:这个属性用来控制粒子的发射方向的随机性,即粒子在法线方向上的偏…...

npm ERR! notarget No matching version found for @eslint/eslintrc@^2.1.4.
文章目录 Intro解决流程总结前置信息了解npm 镜像源三个要用到的npm命令 官方源确认查看当前镜像源的详情解决: 切换镜像源后重试重新操作 事后感受华为云再测试 Intro 事由是今天我在用 create-react-app 新建一个用于测试的前端项目。 然后就出现以下报错&#x…...
截取字符串
输入一个字符串和一个整数 k ,截取字符串的前k个字符并输出。 数据范围:字符串长度满足 1≤n≤1000, 1≤k≤n 输入描述: 1.输入待截取的字符串 2.输入一个正整数k,代表截取的长度 输出描述:截取后的字符串…...

【Python】Faker库详解:创建测试数据轻而易举
Python Faker库详解:创建测试数据轻而易举 在软件开发和测试过程中,通常需要大量的测试数据来模拟真实环境。Python的Faker库为开发者提供了一个方便、灵活且强大的工具,用于生成各种虚构数据。本文将深入介绍Faker库,演示其基本…...

Spring boot -- 学习HttpMessageConverter
文章目录 1. Json格式数据获取2. 为什么返回Json格式的数据2.1 注解SpringBootAppliaction2.1.1 SpringBootConfiguration2.1.2 ComponentScan2.1.3 EnableAutoConfiguration2.1.3.1 HttpMessageConvertersAutoConfiguration2.1.3.2 WebMvcAutoConfiguration 2.2 注解RestContr…...

如何选择合适的运筹优化求解器?
文章目录 前言求解器对比问题延伸:商用求解器和开源求解器的差别是什么? 求解器PK总结参考资料 前言 求解器对于运筹算法工程师而言,常常像一个黑盒,我们扔进去输入数据和数学模型,求解器给我们吐出一个解出来。这种状…...

Python 精讲 | 奇葩的 is
大家好,欢迎来到 Crossin的编程教室 ! 接下来的几个例子,可能会颠覆你对 Python 的认知。 我们知道,Python 判断两个数值是否相等的运算符是「」。比如有一个变量 a 是整数 1,另一个变量 b 是小数 1.0,尽管…...
遥感卫星综述(下载和预处理)(持续更新)
遥感卫星综述(下载和预处理) 目录 遥感卫星综述(下载和预处理)一、国产卫星GF-1 WFV 二、国外卫星Sentinel-1Sentinel-2 一、国产卫星 GF-1 WFV 下载 分辨率波段16m4(蓝、绿、红、近红) 预处理: ENVI预处理GF-1号W…...
Nmap脚本未来的发展趋势
Nmap脚本技术的发展趋势和前景 Nmap脚本是一种基于Lua语言开发的脚本,可以扩展Nmap的功能,用于自动化扫描、漏洞检测、服务探测、设备管理等方面。随着网络安全的不断发展和漏洞的不断出现,Nmap脚本技术也在不断发展和壮大。在本文中…...
要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 17 章:对话提示
要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 17 章:对话提示 对话提示是一种允许模型生成模拟两个或多个实体之间对话的文本的技术。 通过向模型提供上下文和一组角色或实体,以及他们的角色和背景,并要求模型生成他…...

urllib爬虫 应用实例(三)
目录 一、 ajax的get请求豆瓣电影第一页 二、ajax的get请求豆瓣电影前十页 三、ajax的post请求肯德基官网 一、 ajax的get请求豆瓣电影第一页 目标:获取豆瓣电影第一页的数据,并保存为json文件 设置url,检查 --> 网络 --> 全部 -…...

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第三次作业
part 1 设计一个学籍管理小系统。系统包含以下信息: 学号、学生姓名、性别、出生日、学生所在系名、学生所在系号、课程名、课程号、课程类型(必修、选修、任选)、学分、任课教师姓名、教师编号、教师职称、教师所属系名、系号、学生所选课…...

TP5上传图片压缩尺寸
图片上传,最简单的就是, 方法一: 修改上传限制,不让上传大于多少多少的图片 改一下size即可,默认单位是B换算成M还需要除以两次1024 方法二: 对上传的图片进行缩放,此办法网上找了不少的代码…...

使用 Tailwind CSS 完成导航栏效果
使用 Tailwind CSS 完成导航栏效果 本文将向您介绍如何使用 Tailwind CSS 创建一个漂亮的导航栏。通过逐步演示和示例代码,您将学习如何使用 Tailwind CSS 的类来设计和定制导航栏的样式。 准备工作 在开始之前,请确保已经安装了 Tailwind CSS。如果没…...

docker容器配置MySQL与远程连接设置(纯步骤)
以下为ubuntu20.04环境,默认已安装docker,没安装的网上随便找个教程就好了 拉去mysql镜像 docker pull mysql这样是默认拉取最新的版本latest 这样是指定版本拉取 docker pull mysql:5.7查看已安装的mysql镜像 docker images通过镜像生成容器 docke…...

什么是网站劫持
网站劫持是一种网络安全威胁,它通过非法访问或篡改网站的内容来获取机密信息或者破坏计算机系统。如果您遇到了网站劫持问题,建议您立即联系相关的安全机构或者技术支持团队,以获得更专业的帮助和解决方案。...

LeNet
概念 代码 model import torch.nn as nn import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__() # super()继承父类的构造函数self.conv1 nn.Conv2d(3, 16, 5)self.pool1 nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(16…...

JavaScript 简单理解原型和创建实例时 new 操作符的执行操作
function Person(){// 构造函数// 当函数创建,prototype 属性指向一个原型对象时,在默认情况下,// 这个原型对象将会获得一个 constructor 属性,这个属性是一个指针,指向 prototype 所在的函数对象。 } // 为原型对象添…...

生成对抗网络——研讨会
时隔一年,再跟着李沐大师学习了GAN之后,仍旧没能在离散优化中实现通用的应用,实在惭愧,借着组内研讨会的机会,再队GAN的前世今生做一个简单的综述。 GAN产生的背景 目前与GAN相关的应用 去reddit社区的机器学习板块…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...