V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dw2693734d
V2EX  ›  以太坊

为什么太坊这种几千亿市值的项目,居然连断电保护都做不好?

  •  
  •   dw2693734d · 2022-12-18 08:56:16 +08:00 · 7924 次点击
    这是一个创建于 704 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家里的电脑突然断电,然后重启 Geth 全节点,然后数据就丢了

    第 1 条附言  ·  2022-12-18 13:03:26 +08:00
    还好只删除了 prysm 信标链的数据,geth 居然又恢复了,看来一台电脑上得多搞一个节点的数据备份才行

    32 条回复    2023-02-21 15:31:20 +08:00
    lloovve
        1
    lloovve  
       2022-12-18 09:02:45 +08:00 via iPhone   ❤️ 1
    这不就骗子项目么,再说你自己断电,跟他也没关
    ltkun
        2
    ltkun  
       2022-12-18 09:09:08 +08:00 via Android   ❤️ 2
    加个 UPS
    smallyu
        3
    smallyu  
       2022-12-18 09:11:00 +08:00
    你断电了,以太坊又没受影响
    wang2tiger
        4
    wang2tiger  
       2022-12-18 09:19:01 +08:00
    不明白,能丢啥?块链信息都在数据库里,断电顶多进度差几个 block ,来电了联网了一般很快就恢复好了。你啥数据能丢?
    jfdnet
        5
    jfdnet  
       2022-12-18 09:24:02 +08:00
    区块链会因为某个小小的节点丢数据?你怕是个假节点吧。
    0o0O0o0O0o
        6
    0o0O0o0O0o  
       2022-12-18 09:27:33 +08:00
    不会修复就重新同步,在家跑加个 UPS
    xinh
        7
    xinh  
       2022-12-18 09:40:57 +08:00 via iPhone
    报道称 FTX 内部有一个名叫“Wirefraud”的秘密聊天群
    这新闻你看看😂
    lasuar
        8
    lasuar  
       2022-12-18 11:00:17 +08:00   ❤️ 4
    这发言,懂区块链?
    jworg
        9
    jworg  
       2022-12-18 11:06:00 +08:00 via iPhone
    你家数据库意外断电能保证数据完全不损坏吗。
    jworg
        10
    jworg  
       2022-12-18 11:09:38 +08:00 via iPhone
    @wang2tiger 大概率刚好把 head state 弄坏了,然后重建 head state 需要遍历所有区块,本地的 geth 数据也还在,只是验证完毕前不给用,如果是机械硬盘,这个遍历所有数据的速度非常慢。
    baibing
        11
    baibing  
       2022-12-18 11:23:15 +08:00
    Geth 只是 ethereum 的一个客户端而已,你可以说这个客户端做得不咋滴,出现数据不一致后 client 得做一次 full sync 。你也可以试试其它客户端或者自己开发执行层客户端哈。
    Perry
        12
    Perry  
       2022-12-18 11:29:17 +08:00
    丢数据难道不是你硬件的问题么。。。哪有软件可以做好断电保护的?
    ZaneCheney
        13
    ZaneCheney  
       2022-12-18 11:32:14 +08:00 via iPhone
    还是中心化思维在理解区块链。
    你机子上的数据只是一块没被认可碎链。
    dw2693734d
        14
    dw2693734d  
    OP
       2022-12-18 12:50:16 +08:00
    @lasuar 做 Ethereum 开发了有半年了,可能没你懂
    dw2693734d
        15
    dw2693734d  
    OP
       2022-12-18 12:54:42 +08:00
    @ZaneCheney 我说的是我电脑的上面的 block 数据全部丢失

    @jworg 我本地的 PostgresSQL 数据库没有丢

    @wang2tiger 恢复不了,一直 Reparing ,数据全部损坏了

    @lasuar 自己去 Google , “geth power outage”
    dw2693734d
        16
    dw2693734d  
    OP
       2022-12-18 13:04:53 +08:00
    @lasuar 你这种人说话完全不过脑子的
    jworg
        17
    jworg  
       2022-12-18 13:09:42 +08:00 via iPhone
    @dw2693734d 再说一遍你的数据都在,只是 head state 没了,不信你查看前后每个 blk 的 checksum ,然后重建 head state 需要本地的数据和外面的 peer 连接验证,和全量同步是有区别的。
    dw2693734d
        18
    dw2693734d  
    OP
       2022-12-18 13:19:51 +08:00
    @jworg 确实,现在不知道为啥又恢复了
    dw2693734d
        19
    dw2693734d  
    OP
       2022-12-18 13:21:36 +08:00
    @jworg 只不过 log 很多错误:

    Failed to decode block body
    dw2693734d
        20
    dw2693734d  
    OP
       2022-12-18 13:31:00 +08:00
    @jworg 只能获取 7-8 天内的 tx 数据了,超出的直接返回 null
    ryants
        21
    ryants  
       2022-12-18 13:38:06 +08:00   ❤️ 1
    @dw2693734d 那就损坏到 blk 数据了,这种情况我没遇到过,建议重新起一个跑,可以把同目录 ancient 文件夹拷贝到新的目标的文件夹,应该会少同步一些。
    dw2693734d
        22
    dw2693734d  
    OP
       2022-12-18 13:46:11 +08:00
    @ryants 好的,谢谢,原来还可以复制 ancient 数据
    Aumujun
        23
    Aumujun  
       2022-12-18 15:11:00 +08:00 via Android
    单节点程序没办法在断电时完美保障数据吧
    leavic
        24
    leavic  
       2022-12-18 15:32:47 +08:00
    几千亿市值是给写客户端的程序员了吗?
    zmy2000
        25
    zmy2000  
       2022-12-18 17:02:51 +08:00
    每日一笑
    meeop
        26
    meeop  
       2022-12-18 17:44:12 +08:00
    这是你的问题,是你挂了,又不是以太坊挂了

    这倒是说明以太坊很稳定,你看你挂了并不影响以太坊网络,说明其非常健壮
    dw2693734d
        27
    dw2693734d  
    OP
       2022-12-18 17:45:44 +08:00
    @meeop 是的,我没有说是以太坊的问题,我说的是 geth 的问题,可能表达欠妥,不好意思
    greensea
        28
    greensea  
       2022-12-19 18:08:54 +08:00 via Android   ❤️ 1
    恭喜楼主入坑,我之前做区块链项目,也是自己跑全节点,结果各种坑层出不穷,都是客户端的锅。
    你以后还会遇到更多的问题,如果已经上线的话,请做好服务中断的准备。
    当时我们用了两台服务器互作热备,也出现过双机失效的情况,最大的原因是这东西数据一坏,就有可能要重头开始同步,没一两周跑不完。
    如果数据库是因为断电坏了那还说得过去,可这东西自己跑着跑着自己就崩溃了,然后数据库就挂了,我真是不知道说什么好。
    geth 和 parity 都有问题,楼主也别想通过更换客户端解决。
    最后建议就是,直接用现成的 RPC 服务,不要自己搭全节点,如果非要自己搭全节点,搞四台服务器,跑不同版本的客户端,每小时停一个节点做个磁盘快照,这可能就样比较稳妥了吧
    DiffView
        29
    DiffView  
       2022-12-19 19:32:11 +08:00
    geth 问题多的一批,你做啥要自己搞 full node ?
    hadesjaky0607
        30
    hadesjaky0607  
       2022-12-21 15:37:04 +08:00
    @greensea 可以自己写脚本对区块数据进行备份, 直接替换,省的每次都 reindex
    greensea
        31
    greensea  
       2022-12-23 23:52:56 +08:00
    @hadesjaky0607 有考虑过,但是上 TB 的数据备份起来也挺花时间的,在这期间数据库一改,全部完蛋,所以只能停了节点再备份。
    然而,就算是停了节点再备份,等备份完毕之后,这节点又要花时间去赶进度,这又多了额外的调度逻辑,越来越复杂了。
    结果最后就是停节点然后做快照是最合适的。
    74123gzy
        32
    74123gzy  
       2023-02-21 15:31:20 +08:00
    你不就是那几千万分之一么,你自己没做好断电保护
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5141 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:31 · PVG 17:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.