写Celestia脚本后有感:Cosmos存在很多不足

《写 Celestia 脚本后有感:Cosmos 很多工作没搞好》

作者:雾月,极客 Web3

12 月 17 日时,我知道 Celestia 上要出铭文 CIAS,打算临时赶工写一个刷铭文的脚本。现在,对于 Celestia 及其所在的 Cosmos 生态,还有 CIAS 这个活动本身,我都有挺多想吐槽的。

其实,写一个刷铭文的脚本不难,主要分为三个模块:钱包构建、连接节点、泛洪交易。前两步只需要在目标公链的开发者文档里,就能找到快速实现的方法。

我先去 Celestia 官网和 Github 看了一圈,并没有面向开发者 build 用户场景的用例,主要都是节点运行等相关的文档。当然这可以理解,因为 Celestia 并不是一个 ToC 的区块链Celestia 只是在一个不起眼的地方,提到自己是基于 Cosmos 的,用 CosmJS 就可以与其主网交互。

于是我就直奔 CosmJS。但 Cosmos 怎么说呢,连文档都做不好。我直接去的 Github,按常理说,一般这种 JS 都会在 Github 上有使用用例。但它的教程隐藏在一个二级页面里,而且点进去以后,按照它的配置做一通,最后报错。

这报错还不是环境问题,是因为它的教程没有跟随教程版本更新,经常这个类名字改了那个调不了等等。我在老的教程版本上切换了 npm 库的版本,依然有些用例跑不通,折腾了一会就放弃了。

于是又谷歌了一下,结果发现正确的文档在官网而不是 Github 上,这有点不符合常理。再次,Github 的 readme 更新一下教程指向官网不好吗?

拿到正确的教程后,我迅速完成了钱包构建、连接节点这两个步骤,开始构建泛洪交易模块。这个模块说简单了就是一个处理交易签名+网络请求的 for 循环。但这里却又碰上一些问题:

CosmJS 库里所有的交易方法,都只暴露出了交易本身的参数,但它的 sequence 却没有暴露出来(sequence 类比于以太坊里的 nonce,是为了防止重放攻击而设置的交易计数器,每笔交易发出后,nonce 和 sequence 都自动+1)。

写Celestia脚本后有感:Cosmos存在很多不足

Sequence 居然是它在 sign 签名的时候去连接网络获取(chainId 等也是),要经过 sendTokens() -> signAndBroadCast -> sign()。每次提交交易都去网络请求等待返回会影响刷的速度,也会增加没用的网络请求,对于泛洪是不利的,当然也不利于加速/取消某笔交易

写Celestia脚本后有感:Cosmos存在很多不足

我们可以回顾下以太坊 Web3JS 的发送交易的方法,其中你可以自己指定 nonce。但 CosmJS 里不可以。我还是觉得以太坊的设计要合理很多,可以直接指定 nonce 用于取消/加速交易,如果一笔交易卡住了,你可以自定义一个 nonce 相同的交易去替代卡住的交易,当然也可以用于我们的泛洪攻击。

写Celestia脚本后有感:Cosmos存在很多不足

由于时间很紧张,还有其他几个需要修改的库里的函数,我决定不使用 Proxy 去 hook 重写了,而是直接在 CosmJS 库里修改

脚本触发泛洪交易的思路是,通过 for 循环不断的发起交易并生成签名,发送给 RPC 节点,发起一笔交易后 sequence/nonce 就+1,发起 20 笔交易后,再重新循环一个周期。

Sequence 只在每次泛洪周期开始前,拉取到本地,不必像 CosmJS 库默认的那样,每次交易后都向节点重新请求一遍 sequence。而 chainId 则写成固定的值,不必反复向节点请求。(编者注:这里的循环次数设置的比较低,显然作者还没那么暴力。某人在打 Conflux 铭文时,曾将每个周期的循环次数改为 1000,每分钟差不多发出去 200 笔不同的交易)

写Celestia脚本后有感:Cosmos存在很多不足

最终,我得到了一个简陋的 Celestia 脚本,12 月 17 日当晚 CIAS 拔网线后,我简单测试了一下这个脚本,发出去了几百笔交易。在 12 月 19 日凌晨 CIAS 继续开打后,我确实打到了一些 CIAS(大概 1800 个)。但还是有其他要吐槽的地方:

·12 月 17 日,Celestia 的 RPC 节点出现了数据严重不同步的问题,不同 RPC 节点的区块高度差异很大,你向节点请求自己账户的 Sequence 时,返回的结果基本不一致,让人很痛苦。Celestia 区块浏览器也不可用,基本抓瞎。可以说,此时 Celestia 网络虽然没宕机,还能出块,但估计也快到极限了。

·当天,CIAS 铭文官方眼见 Celestia 快扛不住,临时宣布 48460 号区块高度后上链的铭文铸造交易全部无效,颇有「交易所拔网线」之风。而且 CIAS 自己的网站也崩了。

写Celestia脚本后有感:Cosmos存在很多不足

·有人认为 Cosmos 链原生的共识协议,在区块的共识方面做的很差,对此不作置评,但显然昨晚 CIAS 拔网线的目的耐人寻味。

·12 月 17 日时,你很难选中一个同步数据最快的节点,因为几乎所有的 RPC 节点都被挤爆了,经常无响应。我后来尝试写了一些自动切换节点的代码。

·CIAS 本身的铭文格式,和其他铭文不太一致,比如 brc-20 的 json 里,所有数字都是字符串,而 cia-20 里的却是一个数字。

写Celestia脚本后有感:Cosmos存在很多不足

·CIAS 铭文的成本昨晚最高时,飙涨到了每张 1.5~2U,甚至有人付出了 80U 打了一张铭文。这么高的手续费反映的就是 TPS 有限,Celestia 创始人自称,每秒可以处理 10k 笔交易,显然是在扯淡。

写Celestia脚本后有感:Cosmos存在很多不足

总体下来,12 月 17 日当晚的体验就是一句话:Celestia 当时肯定没做好应对大规模流量的举措,在 RPC 节点配置方面也很敷衍(很难想象 1 小时就能打炸几十号 RPC 节点)。

19 号当晚这种情况好了很多,除了 gas 费飙涨之外,其他方面倒没什么太大问题,只能说 Celestia 作为一个专门给轻节点分发数据的 DA 网络,暂时性的经受住了考验,但不知道以后还会不会有什么别的坑。

原文链接

文章来源于互联网:写Celestia脚本后有感:Cosmos存在很多不足

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策井自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场

上一篇 2023年12月20日 上午11:09
下一篇 2023年12月20日 上午11:40

相关推荐

  • Stacks即将迎来中本聪升级

    作者:Hal Press 自从我们提出 Stacks 论点以来,已经有几项关键的发展使得这一理论变得更加清晰。对此我们将在后续进行详细阐述,但从高层面来看,对比特币区块空间(Bitcoin block-space)的需求已经趋于稳固,这将进一步增加对 Stacks 所构建的产品的需求。我们确信 Stacks 正在创建一个平台,该平台将用于探索更复杂更精细的以…

    2023年12月1日
  • 律动晚报|Jito:1 亿枚JTO空投中80%分配给JitoSOL用户;Arbitrum One网络TVL达81.2亿美元,创历史新高

    精选要闻: 1.Jito:已上线空投检查网站,1 亿枚 JTO 空投中 80% 分配给 JitoSOL 用户; 2.Arbitrum One 网络 TVL 达 81.2 亿美元,创历史新高; 3. 贝莱德已为其拟议的比特币现货 ETF 筹集 10 万美元种子基金; 4.SBF 决定不提出审后动议,或有可能提出上诉; 5.FTX 关联地址取消质押 150 万枚…

    2023年12月5日
  • 和Coinbase、Lens合作的社交协议XMTP,究竟是何方神圣?

    《和 Coinbase、Lens 合作的社交协议 XMTP,究竟是何方神圣?》 来源:星球日报 近期,Coinbase Wallet 官推发布视频讲解,宣布 Coinbase Wallet 与开源通讯网络XMTP集成,合作开启钱包地址之间的即时通讯。 经了解,XMTP 不仅和 Coinbase Wallet 合作,也帮助本周刚发布 v2 的去中心化社媒协议 …

    2023年7月20日
  • Intent-centric可能会带来哪些商业机会?

    来源:Haotian 都感觉 Intent-centric 是一个宏大的叙事,尤其是 AI 人工智能加持下,Intent-based 生态似乎总有喷薄欲出,掀起下一轮牛市的全民憧憬「爽感」。事实呢?AA 钱包这种最基础的 intent 叙事目前都只能在幕后默默耕耘,何况乍一听很酷细想下则无从落地的 AI+intent 呢? 本文带大家探讨下,Intent-c…

    2023年9月1日
  • 律动早报|比特币短时回升至44,000美元上方;Solana网络TVL突破12亿美元

    精选要闻: 1. 比特币短时回升至 44,000 美元上方; 2.Solana 网络 TVL 突破 12 亿美元,生态多个协议 TVL 周增幅超 20%; 3.Ordinals 铭文累计费用收入突破 2 亿美元; 4. UniSat Wallet 官推疑似被黑,请勿与其交互; 5.以太坊开发者计划于 1 月 17 日在 Goerli 测试网络上运行 Denc…

    2023年12月22日
返回顶部