[开源] “物理级防删”的 Web3 论坛,基于 Svelte 5 + Arbitrum,一条帖子 Gas 仅 $0.005 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
freekindom
0.01D
V2EX    分享创造

[开源] “物理级防删”的 Web3 论坛,基于 Svelte 5 + Arbitrum,一条帖子 Gas 仅 $0.005

  •  2
     
  •   freekindom 3 天前 1450 次点击

    这是继半年前 StoneText 之后的又一次 Web3 实验。 这次不仅仅是刻字,而是构建了一个极度极简的去中心化论坛 Chain Talk

    核心特性

    Chain Talk 没有任何传统后端,也没有数据库。 所有的帖子内容、回复关系,全部存储在 Arbitrum One 链上。

    这意味着:

    1. 物理级防删:没有 delete 接口。只要交易打包上链,这行字就永远刻在那里,神仙也删不掉(我也删不掉)。
    2. 零门槛围观:为了解决 Web3 的交互门槛,我做了Web 只读模式,路人无需钱包、无需登录即可围观所有内容。
    3. 极低成本:得益于 Arbitrum L2 ,目前发一条帖子的 Gas 约 $0.005 (400 个字符),这让“永存”变得稍微没那么奢侈。

    技术栈

    • Frontend: Svelte 5 (Runes Mode) - 彻底抛弃了 store ,全用 runes 做状态管理,开发体验极其丝滑,推荐前端同学看看。
    • Build: Vite + TailwindCSS 4
    • Contract: Solidity 0.8.30 + UUPS Proxy 。
    • Interaction: Ethers.js v6 。

    为什么做这个?

    我们在这个“404 时代”失去了太多东西。 我想看看,用不到 500 行的核心代码,能不能构建一个“永不塌陷”的避难所。

    关于大家可能关心的 Spam/广告问题: 这确实是去中心化社交最大的挑战。目前的防线只有 Gas 费。前端我会做一些基础的过滤(比如折叠明显的垃圾号),但链上数据是无法抹除的。这本身也是实验的一部分:在一个绝对自由且低成本的广场上,内容质量会如何演化?

    传送门

    Demo: https://chain-talk.netlify.app/

    Source Code: https://github.com/picasso250/chain-talk

    Contract: 0xb9A8...6380


    P.S. 目前合约保留了 Admin 升级权限以修复 Bug (毕竟钱还是要在意的),稳定后会销毁 Key 。欢迎来挖坟,或者留下你的第一条“永恒”记录。

    第 1 条附言    2 天前
    问题已修复!之前看不到帖子的同学现在应该能正常浏览了。

    特别感谢反馈"network 里没看到 fetch 请求"的朋友,这条线索帮我们定位到了 Phantom 钱包的兼容性问题。

    问题本质是 Phantom 钱包对 RPC 查询有 1 万区块的限制,导致历史数据拉取失败。解决方案很直接:用 GitHub Actions 每半小时拉取一次链上数据生成缓存,前端优先读缓存。这样无论用户用什么钱包(或者不用钱包)都能看到完整内容,钱包用户还能同时看到最新的实时数据。

    现在所有钱包类型都支持了:MetaMask 、Phantom 、无钱包。保持 Web3 透明可验证的特性,数据都可以从链上查证。
    23 条回复    2026-01-13 14:25:02 +08:00
    iamdaniel
        1
    iamdaniel  
       3 天前   1
    进入 demo 网站看不到贴子啊,在 arbiscan 上能看到有两条记录。
    n18255447846
        2
    n18255447846  
       3 天前   1
    有意思的 web3 实验。好奇一下会实现本人编辑和删除功能吗,需不需要再花一笔 gas 编辑或删除自己的帖子
    freekindom
        3
    freekindom  
    OP
       3 天前
    @iamdaniel 感谢反馈!这应该是由于我目前使用的是公共 RPC 节点( https://arb1.arbitrum.io/rpc),在某些地区或网络环境下连接不稳定导致的读取失败(或者是被限流了)。我本地的 pc 和手机是正常的。请问你的浏览器、操作系统,如果能提供 F12 报错就更好了。
    freekindom
        4
    freekindom  
    OP
       3 天前
    @n18255447846 关于删除: 正如标题所说,一旦上链,神仙也删不掉,包括我自己。这是为了保证内容绝对的‘永存’。可以做软删除。但也要消耗 gas 费。
    关于编辑: 技术上可以实现(通过发新交易指向旧帖子进行覆盖显示),但目前 V1 版本为了极简还没做。如果要加,确实需要消耗 Gas ,因为每一次状态改变都是一次链上交易。
    FlashEcho
        5
    FlashEcho  
       3 天前   1
    确实在 demo 网站上看不到内容,console 里也没有报错或者别的输出,network 里没看到 fetch 请求
    kran
        6
    kran  
       3 天前 via iPhone   1
    挺好,getlogs 这样调不知道会不会触发限制,取评论也可以走批量查询,真正运营可能需要后端缓存+链上存储
    doraemonki
        7
    doraemonki  
       3 天前   1
    还是不太理想。
    - UUPS 意味着合约可以被管理员篡改升级,一点也不去中心化
    - blob 数据大约 18 天 之后就被修剪了,不可能永久存储

    其实不需要永久存储,我个人觉得比较理想的状态是不被篡改是可验证的,然后访问数据还是中心服务器体验会很好,如果重要的数据可以选择自己存。或者论坛真的做大了,你不存别人也会帮你存一份,你被打击了,换一个数据供应商可以立马复活。所以重点是不被篡改。
    NewYear
        8
    NewYear  
       2 天前   1
    钓鱼要打窝的,你说“路人无需钱包、无需登录即可围观所有内容”

    好吧我是路人,实际上啥资料也看不到。
    能不能你自己先花点钱,搞一些“帖子”,让我们看看整体效果啊,空荡荡的,啥也看不出来。

    你自己都不做引导,用户真的是盲人一样搞不清。

    你问问 ai 是不是这个理
    zhcnxyz
        9
    zhcnxyz  
       2 天前   1
    关注
    NomadsWiki
        10
    NomadsWiki  
       2 天前   1
    神仙也删不掉,打广告的怎么办?
    andrew2558
        11
    andrew2558  
       2 天前   1
    这个有个最大的问题,就是广告,键政等信息怎么处理?
    hymxm
        12
    hymxm  
       2 天前   1
    如果有人键政 有关部门会不会顺着楼主的微信公众号二维码找到楼主....
    freekindom
        13
    freekindom  
    OP
       2 天前
    @FlashEcho 终于复现了!如果浏览器没有安装 metamask ,但安装了 phantom ,就会出现这样的情况。让我想想修复办法。感谢反馈。
    sillydaddy
        14
    sillydaddy  
       2 天前   1
    我理解的上链导致的 spam 问题很好解决啊,上链是没错,但是总得有一个客户端来整合这些信息啊。那防 spam 就是客户端做的事。
    举例来说,假如某天 Livid 将 v 站所有的数据都上链了,包括他删除的那些 spam 帖子,也包括那些平时上不了首页的水帖,现在的问题是,这些东西都在链上,又如何呢?无论是谁,都可以从链上拿到数据(区块链可以设置读取需要成本),这个人如果想要构造一个 v 站的客户端,那他就要考虑是不是把 spam 屏蔽掉!不屏蔽就会流失用户。多个人开发的客户端,可能各有侧重,虽然它们都是基于同一套底层的链上数据。
    是我把问题想简单了吗?
    freekindom
        15
    freekindom  
    OP
    nbsp;  2 天前   1
    @FlashEcho 再次感谢你的提示。现在已经修复,请看 append 内容。( Phantom 钱包的兼容性问题。Phantom 钱包对 RPC 查询有 1 万区块的限制,导致历史数据拉取失败。)
    freekindom
        16
    freekindom  
    OP
       2 天前
    @kran 是的,已经更新机制:用 GitHub Actions 每半小时拉取一次链上数据生成缓存,前端优先读缓存。这样无论用户用什么钱包(或者不用钱包)都能看到完整内容,钱包用户还能同时看到最新的实时数据。
    freekindom
        17
    freekindom  
    OP
       2 天前
    @NewYear
    你说得太对了!"钓鱼要打窝"这个比喻非常精准。

    **实际上现在已经有 3 个帖子了**:
    1. 我自己发的创世贴
    2. 朋友的测试帖子
    3. 一个陌生人发的广告(哈哈,真实世界的 Spam 来得真快)

    之前很多人反馈"看不到帖子",我们发现是 Phantom 钱包的兼容性问题,已经修复。

    既然你作为路人用户关心这个产品,能不能请你再访问一次 demo 网站 https://chain-talk.netlify.app/

    如果你能看到帖子,说明我们的修复成功了!这种情况下我会再发个帖子聊聊这次技术修复的过程,也算是给产品留个纪念。
    如果你还是看不到,那正好,你的浏览器和钱包情况能帮我们发现新的兼容性问题,这种反馈对我们特别重要。
    你对这种刚起步的产品特别宝贵。很多人看不到效果就走了,像你这样愿意说出来的反而能帮我们真正解决问题。
    无论测试结果如何,都谢谢你的反馈!
    iamdaniel
        18
    iamdaniel  
       2 天前   1
    @freekindom 今天可以看到有 3 个贴子了。
    bolasblack
        19
    bolasblack  
       2 天前
    挺好的,但就像 @doraemonki 说的那样,blob 感觉还不够永久,要不要考虑存到 arweave 上去?
    nicoljiang
        20
    nicoljiang  
    PRO
       1 天前   1
    能否介绍一下思路:什么样的低价值内容值得永久保留(真正的高价值内容自有各种人、机构、企业拷贝留存)?
    freekindom
        21
    freekindom  
    OP
       1 天前
    @doraemonki
    > UUPS 意味着合约可以被管理员篡改升级,一点也不去中心化
    其实也有不可升级的合约: https://github.com/picasso250/StoneText 欢迎查看项目(发布到 Arbitrum 正式网之后还没推广)
    > blob 数据大约 18 天 之后就被修剪了,不可能永久存储
    你说的很对,Arbitrum 现在确实使用 Blob 将数据发布到 L1 ,而 L1 上的 Blob 确实会在 18 天后被修剪。你非常专业。”
    但是,Blob 被修剪代表数据消失。
    数据的‘永久性’是由 Arbitrum 网络本身 保证的。Arbitrum 的几千个节点、浏览器( Arbiscan )、以及索引服务( The Graph )都会永久保存这些 Log 。只要 Arbitrum 网络不灭亡,文字就永远存在。

    不过,我在思考这个问题时,突然想起:‘理想的状态是不被篡改是可验证的……重点是不被篡改,数据存储可以更多样化。
    其实,现在的 Arbitrum (L2) + Ethereum Blob 架构,恰恰就是您这个理想理念的完美工程实现。
    虽然 Blob 的原始文本会被 L1 修剪,但它的 哈希承诺( KZG Commitment ,即数据的数字指纹) 是永久刻在以太坊主网区块里的。
    freekindom
        22
    freekindom  
    OP
       1 天前
    @zhcnxyz 感谢关注!欢迎去 chain-talk 发帖,有什么想法随时交流!
    freekindom
        23
    freekindom  
    OP
       1 天前
    @NomadsWiki 现在已经有真实案例了链上第三个帖子就是广告。这恰恰给了我们一个独特机会:观察当发言权完全平等时,社区会自发形成什么样的秩序?前端会做基础过滤,但更重要的是,这个实验本身就在探索:没有"删除键"的世界,内容价值会如何重新定义?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     907 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:58 PVG 04:58 LAX 12:58 JFK 15:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86