惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
量子位
博客园 - 三生石上(FineUI控件)
博客园 - Franky
博客园_首页
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
IT之家
IT之家
Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
Last Week in AI
Last Week in AI
U
Unit 42
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MyScale Blog
MyScale Blog
H
Help Net Security
V
V2EX
S
SegmentFault 最新的问题
月光博客
月光博客
Martin Fowler
Martin Fowler
Vercel News
Vercel News
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

smallyu的博客

为什么买的加密货币一定要去中心化 RISC-V 虚拟机无法代替 EVM 虚拟机 Polkadot 的 Existential Deposit 机制错在哪里 利息,套利,交易策略,金融市场 LayerZero 从来不挑战比特币的地位 默认参数引起的以太坊节点运行错误 硬件钱包与资产安全 预测市场比币圈更赌场 为什么去中心化的跨链桥不可能实现 我对于 AI 时代的答案 不要投资任何隐私币 区块链技术世界的三大真理 以太坊 AA 钱包的致命问题是什么 基于 AI 语义执行的 MCP 区块链的设计 一个集成 Geth 和 CometBFT 的兼容层 我的加密货币定投策略(二) DeFi 基础: 理解 AMM 定价机制 Go 语言 GMP 调度器的原理是什么 Web3 项目分析计划 对 Psyche Network 项目的分析 continuation 教程: 理解 CPS 如何开发一个比特币符文(Runes)协议 比特币脚本开发教程 我从王垠的计算机科学视频班学到了什么 区块链技术面试题(2025年版) Rust 语言容易让新手困惑的一个“过度优化” Solana 智能合约开发教程 (1) 尝试开发一个最小 EVM 虚拟机 基于 ZK 的链上身份系统设计 一个 Web3 打赏系统的设计
一种区块链节点存储扩容的方式
2021-11-10 · via smallyu的博客

一种区块链节点存储扩容的方式

2021-11-10

区块链是天然支持水平扩容的系统,节点扩展能力首屈一指。

但区块链的垂直扩展能力还是一个经常被讨论的课题。单个节点的硬盘容量总是有限,如果节点拥有全部的数据,对单机性能要求会比较高;如果节点没有全量数据,就不能认为是 P2P 网络的节点之一。

最直接的办法就是用分布式数据库,数据库本身就支持扩容,区块链节点的存储模块就也算是支持扩容了。(如果区块链在立场上和数据库没有冲突的话。)

这里描述一种简单的实现思路的设想。

节点的垂直扩展,是想用多个节点合力代替原有的一个节点的位置,整体形式上一个集群提供了和单个节点一样的输入输出。

节点完全可以将块数据分散储存在不同的子节点上,比如按照数据库分库分表的经典思路,对块号取模,或者随机分发也行。

节点可以区分为索引节点和存储节点,索引节点只记录块号和子节点的对应关系,子节点集群就作为索引节点的储存模块。索引节点同时负责发送和接收块等操作。除了网络延迟带来的存取速度的降低,似乎没有大碍。

对于节点类型的问题,是必须要有不只一种类型的节点吗?有没有办法实现只要一份源代码、只有一种二进制程序、只用一种类型的节点,就能实现所有的功能?当然,不是说把三种类型的节点打包到一起就行了。由于功能侧重点的不同,尤其是节点 “身份” 的不同,可能节点不得不区分类型。一个节点对外提供能力和一个集群合作对外提供能力,集群内的节点和单个节点应该是一样的地位吗?

将块数据分散开后,对于 “世界状态” 一类的数据,可以全部储存在索引节点上。

如果状态数据也想扩容,同样可以只在索引节点上保留索引数据,然后将状态数据也分散到储存节点上。

这样的方案也许过于简单了,万一行之有效呢。