conflux没有对档案节点(Archive Node)的激励政策吗?

满载情况,每年30TB,10年300TB,这个量级没有激励措施就只能官方自己维护了。但这对去中心化是个不能接受的伤害!
难道就不能对档案节点给个激励措施吗? 按照查询次数收费?

Archive Node(档案节点):
Archive Node中会存储Conflux网络中的所有历史区块数据,因此存储的数据比也会比较大。Archive Node挖矿时,需要同步数据的时间比较长,占用的存储空间比较多。

Conflux 会允许任何人运行一个Archive Node,但是Archive Node对存储的要求比较高,以现在 Conflux 的网络参数为例,平均每秒生成 2 个区块,每个区块大小限制约为 600KB。那么在满载的情况下,一秒的吞吐量为 1.2MB,一天约 100GB,每年新增的交易历史数据可达 30TB。未来完全去中心化的Conflux网络中,Conflux 基金会和社区共同维护若干个档案节点

目前哈希头是被所有全节点存储的,那里存了档案节点数据的哈希。如果档案节点想作恶,最多不提供数据,无法篡改数据。所以,这对去中心化的影响是有限的。

保证数据不被篡改是区块链天经地义的义务,那么,保证数据不丢失是不是区块链的义务呢?

Conflux 的答案是,这是一个可选功能。想把数据永久地存储在区块链上也简单,只需要把数据写入智能合约的状态,付一些存储押金。那么所有 full node 都会存一份。这样价格会比较高,不过肯定比记在比特币或以太坊上便宜。

如果不愿意付钱买这个可选功能,那么默认用户不需要全节点以去中心化的方式保证数据不丢失。全节点只对全部交易的执行结果(比如执行账户余额)提供永久存储保证。

这背后的一个基本的逻辑是,数据价值是不等的。

有的应用更重视数据不丢失,比如存证。有的应用更重视数据不被篡改,比如 Defi. Defi 解决的痛点是交易所卷钱跑路。用户更重视去中心化保证的资产安全,但未必关心去中心化保证交易历史可查。对于不那么需要去中心化的数据,不应该花大价钱让去中心化的节点们来存,而应该由业务运营方或利益相关方负责存储,且只记录和他们相关的部分数据

比如,Defi 产品展示你几个月以来的交易历史时,一定是从中心化服务器读的,而不是档案节点。如果有一天 Defi 产品停止运营了,你是几乎不可能通过档案节点查询你的交易历史的,那无异于大海捞针。

这种中心化存储未来可以做成像 SaaS 这样的服务,需要维护业务数据的一方点几个按钮就可以付费,让他人来提供存储和查询服务。而且这种服务还可以将数据结构化存储、建立索引,便于统计和条件查询。按需提供服务,按需付费,这比鼓励所有人都存所有数据(维护档案节点)效率更高。

那么存所有数据的档案节点有用吗?有用。因为你不确定当前有哪些数据在未来会变得有价值。把这些数据保存起来,在需要的时候可以找回来,也是有必要的。这有点像收拾屋子,有些东西怕以后用得上不想扔,但其实很难会用到。 所以说,档案节点目前不需要太多,未来也不需要。除非这种存储全部数据的需求从不确定变成确定。

1 Like

感谢回复。

提这个问题是因为想不明白如果历史区块不存储的话,全节点如何知道某地址余额,从而验证新交易是否合法

我不确定conflux是不是基于UTXO实现的。如果是的话,一个新节点入网必须从某几个档案节点下载全部的区块历史,逐一验证,得到所有未花费UTXO集合。那么1年以后,区块历史数据30TB,如果新节点网络带宽100Mb,需要36天才能下载完。2,3年以后更是不敢想了。

conflux现在是怎么做的呢?

Conflux 和以太坊一样是账本模型。像地址余额这些信息是写在一棵 Merkle Patricia Tree 里。它的 Merkle Root 会写在账本的根哈希里。所以,新节点是可以从其他节点同步地址余额,并验证正确性的。所以,如果你相信 10000 个 epoch 前的区块头是正确的,就可以同步那个时间截面上的 Tree, 然后只执行 10000 个 epoch 的交易。

以太坊的 Openethereum 客户端里也可以开启这个逻辑,叫 wrap mode.

我再扯远一点。如果比特币或以太坊上的某个区块在最长链上,而且已经跟了 10000 个(或 100000个)确认块,你是否愿意在不检查它的历史区块的前提下,相信它是对的。

如果你相信,那么 Conflux 的全节点设计和以太坊的 wrap mode 都是 OK 的。而如果你不相信,重跑历史数据是唯一的选择。

而重跑历史数据最大的开销是执行。以太坊至今交易数据不超过 1TB, 100Mb 跑满一天就同步完了。但我最近正在尝试从创世块开始重跑以太坊。我用了 16 GB 的内存满负荷跑,还有 1TB nvme 的硬盘。结果同步到 2018 年后,它只能同步两个月的数据,却产生 5TB - 10TB 的 SSD 写入量.我不知道进入 Defi 时代后会不会更慢。目测这个 SSD 硬盘的最大写入量到达前是同步不完的。

高性能公链注定使不能通过重跑全部历史数据接收新节点的。甚至像以太坊这样性能不行的公链,重跑全部历史数据也是成本极高的开销。Conflux 的方案是唯一的选择。

1 Like

这个问题很关键,档案节点的引入从某种意义上来讲已经使得Conflux不再是区块链架构,而是中心化的档案节点(目前数量极其有限,仅有几个在运行)和去中心化的普通节点构成,从这种意义上来讲,Conflux是否能够仍然被称作公有区块链?

在目前的激励机制下,一般用户从经济角度没有任何成为档案节点的理由,也即是说,全部链上信息仅由几个官方维持的档案节点提供,一般节点仅存放指向档案节点的链接。假如这几个档案节点的数据丢失,那么Conflux的历史链上数据永远丢失了。从这个角度来看,中心化的档案节点数量极其有限,如何保障 DeFi 应用的数据安全性?尤其是 DeX 例如 MoonSwap 和 NFT 平台,假如链上信息安全性有限,开发者如何能够信任Conflux 平台并在上面完成相关DAPP的开发?假如档案节点全部宕机,所有链上生态应用无法使用的后果谁来担保?假如数字资产市场发生巨大波动,价格下跌或上涨20%以上,如果DeFi 应用的用户无法及时使用Conflux平台,可能导致去中心化交易所Dex和借贷平台发生大量清算,用户资产直接归零。

官方公布的代码来看 (https://github.com/Conflux-Chain/conflux-rust/blob/f427ae583101b3a8dad947c45f9c11c0a6a7d863/core/storage/src/impls/storage_db/sqlite.rs),档案节点使用的是SQLite SQL 关系数据库存储信息,这种方式进行链上信息的存储仍能算是区块链架构吗,并且使用SQLite 能保证安全性吗?

综上所述,如果从经济层面无法提供合理的激励来解决档案节点的数量过少问题,那么Conflux 就不能称得上是去中心化的公有区块链,甚至不能称作区块链。我们是否可以称 Conflux 为分布式 SQLite 数据库系统?

我上面的回答已经说了,不同的数据,它们的重要程度是不一样的,存储方式也不一样,请不要混淆概念。用户的资金余额这种数据,也就是你说的关系到 Defi 应用数据安全的数据,属于合约变量数据,这些数据是所有全节点都存的。历史交易记录和执行记录是由档案节点存的。

以太坊也分 full sync mode 和 wrap sync mode. 以太坊的 full sync mode 全节点相当于 Conflux 的档案节点,wrap sync mode 全节点的相当于 Conflux 的全节点。如果做一个矿工想要独立进行挖矿,对他来说,最好的方法是跑一个 wrap sync mode的节点,因为 full sync mode 同步全部历史数据需要一个多月的时间才能同步完,而wrap sync mode 足以执行交易和挖矿。矿工毫无动力去跑一个 full sync mode 的节点,最优选择是跑一个 wrap sync mode 的全节点。

问题来了,以太坊的 full sync mode 是不是没有激励,那以太坊是不是也不能被称作公有区块链?

建议你先去同步一个 full sync mode 的以太坊节点,然后想一想在以太坊,与跑一个 wrap sync mode 的节点相比,full sync mode 有没有额外激励?以太坊是不是一个中心化的区块链?

1 Like

现在不是没有区块链存储,而是没有廉价低成本的区块链存储。只要你足够有钱,可以把数据存进智能合约里,Conflux 1CFX/KB, 以太坊 0.02 ETH/KB. 所有全节点为你存数据,而且任意合约随时可读。

随着数据价值的下降,数据存储的付费能力也会下降,这些数据无法承受智能合约的价钱。然而,所有全节点都存,随时可读取需要的成本确实很高。如果不想付太多钱,又不想中心化地存储,就需要一些中间的方案了。比如 Filecoin, 三个节点存,还有一些别的项目。

但 Filecoin 有一些其他的问题,导致它只适合存冷数据。

1 Like

这个有点乱带节奏了。。。

首先现在"档案节点目前数量极其有限,仅有几个在运行”完全是没有根据的凭自己的想象了,实际情况是,目前除了矿池矿场之外很多的生态应用、接入CFX的中心化交易所等生态伙伴为了方便的查询历史数据都运行的是档案节点。

SQLite是一款嵌入式的数据库,Conflux的节点默认使用SQLite来存储Snapshot的数据,也可以配置其他数据库使用,本地节点使用什么类型的数据库和区块链架构没有任何关系,不知道你的疑问的点在哪里。

Conflux网络中每个节点都记录了整个网络的全部状态信息,只不过档案节点保存所有历史区块数据,全节点对于Checkpoint前的区块,只需存储区块头而不用存储区块内的具体交易信息,这样做的原因是为了让更多人可以以更低的成本加入进来,在实现高性能的共识算法的同时保持了非常低的全节点运行成本——甚至一台配置稍好点的笔记本电脑都可以运行一个 Conflux 全节点。

除 Chenxing提到的 “数据价值”是不等的” 之外,粗暴的认为 “经济角度没有任何成为档案节点的理由。。。全部链上信息仅由几个官方维持的档案节点提供” 也完全是没有根据的凭想象。实际情况是任何人都可以成为档案节点,未来Conflux的使用广泛起来之后,经济角度也会很多人都会选择成为档案节点,Dapp和交易所等查询数据的需求也会增加,高频的访问档案节点本身就可以成为对外出售的服务,类似于以太坊上Infura的服务就会出现。

最近我一直在研究以太坊的 eth rpc节点,想了解一下大家的看法和经验。我知道这是一个涉及到网络稳定性和性能的复杂话题,但我相信通过分享我们的经验,我们可以更好地了解和优化我们的节点。通过GetBlock,您可以轻松为项目创建一个以太坊 API端点,而无需烦恼ETH节点的运行细节。这意味着您可以专注于项目的开发和创新,而不必担心节点的复杂管理。