著者: Wuyue, Geek Web312月17日、CIASの碑文がセレスティアに掲載されることを知り、その碑文を刷毛で磨くスクリプトを書くために臨時で作業する予定でした。 さて、私はセレスティアとそのコスモスエコシステム、そしてCIASイベント自体について不満を言うことがたくさんあります。実際、碑文をブラッシングするためのスクリプトを書くことは難しくなく、それは主にウォレットの構築、ノードの接続、トランザクションのフラッディングの3つのモジュールに分かれています。 **最初の2つのステップは、ターゲットのパブリックチェーンの開発者ドキュメントに記載されているだけで、迅速な実装を見つけることができます。まずはCelestiaの公式サイトやGithubに行って調べてみたのですが、開発者がユーザーシナリオを構築するユースケースはなく、主にノード操作などの関連ドキュメントがあります。 もちろん、CelestiaはToCブロックチェーンではないため、これは理解できます。 Celestiaは、Cosmosに基づいており、CosmJSを使用してメインネットと対話できることをあいまいな場所で言及しています。それで、私はCosmJSに直行しました。 しかし、Cosmosはドキュメント化すら得意ではありません。 **私はGithubに直接行きましたが、常識的には、一般的にこの種のJSはGithubにユースケースがあります。 しかし、そのチュートリアルはセカンダリページに隠されています,そしてそれをクリックした後,その構成に従ってパスを実行します,最後に、エラーが報告されます。**このエラーは環境上の問題ではありません,チュートリアルがチュートリアルバージョンで更新されていないためです。**多くの場合、このクラスの名前が変更され、調整できません。 古いチュートリアル版でnpmライブラリのバージョンに切り替えたのですが、まだうまくいかないユースケースもあるので、しばらく投げて諦めました。そこで、もう一度グーグルで検索したところ、正しいドキュメントはGithubではなく公式サイトにあることが判明し、少し直感に反していました。 **繰り返しになりますが、Githubのreadmeチュートリアルを公式Webサイトに更新するのは良いことではありませんか?正しいチュートリアルを取得した後、ウォレットの構築とノードの接続の2つのステップをすぐに完了し、フラッドトランザクションモジュールの構築を開始しました。 簡単に言うと、このモジュールはトランザクション署名+ネットワークリクエストを処理するforループです。 しかし、ここにいくつかの問題があります。**CosmJSライブラリのすべてのトランザクションメソッドは、トランザクション自体のパラメータのみを公開しますが、そのシーケンスは公開されません**(シーケンスは、ETHワークショップのnonceに類似しており、リプレイ攻撃を防ぐために設定されたトランザクションカウンターであり、各トランザクションが発行された後、nonceとシーケンスは自動的に+1になります)。シーケンスとは、実際には署名時にネットワークに接続して署名(chainIdなど)を取得することであり、sendTokens() -> signAndBroadCast -> sign()を経由する必要があります。 **トランザクションが送信されるたびにネットワークにアクセスしてリクエストし、戻りを待つと、ブラシの速度に影響し、無駄なネットワークリクエストも増加し、フラッディングには適さず、もちろんトランザクションの高速化/キャンセルには役立ちません。 **Web3JS ETHトランザクションの送信方法、つまりナンスを自分で指定できる方法を確認しましょう。 しかし、CosmJSでは違います。 **私はまだETH牙のデザインがはるかに合理的であると思います、あなたは直接トランザクションをキャンセル/加速するためにノンスを指定することができます**、トランザクションがスタックしている場合、あなたはスタックしたトランザクションを置き換えるために同じトランザクションでナンスをカスタマイズすることができます、もちろん、それは私たちの洪水攻撃にも使用できます。時間の制約により、ライブラリには他にもいくつかの関数を変更する必要がありましたが、** Proxy を使用して書き換えをデフックするのではなく、CosmJS ライブラリで直接変更することにしました。 **フラッドトランザクションをトリガーするスクリプトのアイデアは、forループを介してトランザクションを継続的に開始し、署名を生成してRPCノードに送信し、トランザクションを開始した後、シーケンス/ノンスは+1になり、20トランザクションを開始した後、サイクルがリサイクルされることです。シーケンスは、各フラッディングサイクルの開始前にローカルでのみプルされ、CosmJSライブラリのデフォルトであるように、各トランザクションの後にノードからシーケンスを再要求する必要はありません。 一方、chainIdは固定値として書き込まれるため、ノードから繰り返し要求する必要はありません。 (編集者注:ここでのループの数は比較的少なく設定されており、作者がそれほど暴力的ではないことは明らかです。 誰かがConfluxの碑文を入力するときに、サイクルあたりのサイクル数を1000に変更し、毎分約200の異なるトランザクションを送信しました)最終的に、私は初歩的なCelestiaスクリプトを入手し、12月17日の夜にCIASがプラグを抜いた後、簡単にテストし、何百ものトランザクションを送信しました。 12月19日未明にCIASが再開された後、私はいくつかのCIAS(約1,800)を攻撃しました。 しかし、他にも文句を言うべきことがあります。* 12月17日、CelestiaのRPCノードで深刻なデータ同期の問題が発生し、異なるRPCノードのブロック高さが大きく異なり、アカウントのシーケンスにノードをリクエストすると、返される結果が基本的に一貫性がなく、非常に苦痛です。 セレスティアブロックエクスプローラーも利用できず、基本的にブラインドです。 現時点では、Celestiaネットワークはダウンしておらず、まだブロックを生成できますが、限界に近いと推定されます。※同日、CIASの碑文関係者は、セレスティアが耐えられなくなりそうになっているのを見て、ブロック48460の高さ以降のチェーン上の碑文の鋳造取引はすべて無効であると一時的に発表しましたが、これは「取引所のネットワークケーブルを抜く」というかなりの傾向でした。 そして、CIA自身のウェブサイトは崩壊した。* Cosmosチェーンのネイティブコンセンサスプロトコルがブロックのコンセンサスに乏しいという認識についてはコメントはありませんが、昨夜CIASがネットワークケーブルを引き抜いた目的が興味をそそられることは明らかです。* 12 月 17 日には、ほとんどすべての RPC ノードが過密状態になり、応答しないことが多いため、データが同期された最速のノードを選ぶのは困難です。 後で、ノードを自動的に切り替えるコードを書いてみました。* CIAS自体の碑文の形式は、他の碑文と完全に一致していません、例えば、brc-20のjsonでは、すべての数字は文字列ですが、CIA-20では数字です。* CIASの碑文のコストは、昨夜最も高かったときに碑文あたり1.5~2Uに高騰し、碑文に80Uを支払った人もいました。 このような高い手数料はTPSが限られていることを反映しており、Celestiaの創設者は毎秒10kのトランザクションを処理できると主張していますが、これは明らかにナンセンスです。全体として、12 月 17 日の夜の体験は、Celestia は大規模なトラフィックに対処する準備ができておらず、RPC ノードの構成に関して非常におざなりでした (1 時間で数十の RPC ノードを爆破できるとは想像しにくい)。 **19日の夜は、ガス代の高騰を除けば状況はだいぶ良くなり、それ以外は大きな問題はなく、ライトノードへのデータ配信に特化したDAネットワークであるCelestiaは一時的にテストに耐えているとしか言いようがありませんが、今後、他に落とし穴があるかどうかはわかりません。
セレスティアの文字を書き、碑文をタイプした後、彼は不満を漏らしました:コスモスの基本スキルはしっかりしていません
著者: Wuyue, Geek Web3
12月17日、CIASの碑文がセレスティアに掲載されることを知り、その碑文を刷毛で磨くスクリプトを書くために臨時で作業する予定でした。 さて、私はセレスティアとそのコスモスエコシステム、そしてCIASイベント自体について不満を言うことがたくさんあります。
実際、碑文をブラッシングするためのスクリプトを書くことは難しくなく、それは主にウォレットの構築、ノードの接続、トランザクションのフラッディングの3つのモジュールに分かれています。 **最初の2つのステップは、ターゲットのパブリックチェーンの開発者ドキュメントに記載されているだけで、迅速な実装を見つけることができます。
まずはCelestiaの公式サイトやGithubに行って調べてみたのですが、開発者がユーザーシナリオを構築するユースケースはなく、主にノード操作などの関連ドキュメントがあります。 もちろん、CelestiaはToCブロックチェーンではないため、これは理解できます。 Celestiaは、Cosmosに基づいており、CosmJSを使用してメインネットと対話できることをあいまいな場所で言及しています。
それで、私はCosmJSに直行しました。 しかし、Cosmosはドキュメント化すら得意ではありません。 **私はGithubに直接行きましたが、常識的には、一般的にこの種のJSはGithubにユースケースがあります。 しかし、そのチュートリアルはセカンダリページに隠されています,そしてそれをクリックした後,その構成に従ってパスを実行します,最後に、エラーが報告されます。
**このエラーは環境上の問題ではありません,チュートリアルがチュートリアルバージョンで更新されていないためです。**多くの場合、このクラスの名前が変更され、調整できません。 古いチュートリアル版でnpmライブラリのバージョンに切り替えたのですが、まだうまくいかないユースケースもあるので、しばらく投げて諦めました。
そこで、もう一度グーグルで検索したところ、正しいドキュメントはGithubではなく公式サイトにあることが判明し、少し直感に反していました。 **繰り返しになりますが、Githubのreadmeチュートリアルを公式Webサイトに更新するのは良いことではありませんか?
正しいチュートリアルを取得した後、ウォレットの構築とノードの接続の2つのステップをすぐに完了し、フラッドトランザクションモジュールの構築を開始しました。 簡単に言うと、このモジュールはトランザクション署名+ネットワークリクエストを処理するforループです。 しかし、ここにいくつかの問題があります。
CosmJSライブラリのすべてのトランザクションメソッドは、トランザクション自体のパラメータのみを公開しますが、そのシーケンスは公開されません(シーケンスは、ETHワークショップのnonceに類似しており、リプレイ攻撃を防ぐために設定されたトランザクションカウンターであり、各トランザクションが発行された後、nonceとシーケンスは自動的に+1になります)。
シーケンスとは、実際には署名時にネットワークに接続して署名(chainIdなど)を取得することであり、sendTokens() -> signAndBroadCast -> sign()を経由する必要があります。 **トランザクションが送信されるたびにネットワークにアクセスしてリクエストし、戻りを待つと、ブラシの速度に影響し、無駄なネットワークリクエストも増加し、フラッディングには適さず、もちろんトランザクションの高速化/キャンセルには役立ちません。 **
Web3JS ETHトランザクションの送信方法、つまりナンスを自分で指定できる方法を確認しましょう。 しかし、CosmJSでは違います。 私はまだETH牙のデザインがはるかに合理的であると思います、あなたは直接トランザクションをキャンセル/加速するためにノンスを指定することができます、トランザクションがスタックしている場合、あなたはスタックしたトランザクションを置き換えるために同じトランザクションでナンスをカスタマイズすることができます、もちろん、それは私たちの洪水攻撃にも使用できます。
時間の制約により、ライブラリには他にもいくつかの関数を変更する必要がありましたが、** Proxy を使用して書き換えをデフックするのではなく、CosmJS ライブラリで直接変更することにしました。 **
フラッドトランザクションをトリガーするスクリプトのアイデアは、forループを介してトランザクションを継続的に開始し、署名を生成してRPCノードに送信し、トランザクションを開始した後、シーケンス/ノンスは+1になり、20トランザクションを開始した後、サイクルがリサイクルされることです。
シーケンスは、各フラッディングサイクルの開始前にローカルでのみプルされ、CosmJSライブラリのデフォルトであるように、各トランザクションの後にノードからシーケンスを再要求する必要はありません。 一方、chainIdは固定値として書き込まれるため、ノードから繰り返し要求する必要はありません。 (編集者注:ここでのループの数は比較的少なく設定されており、作者がそれほど暴力的ではないことは明らかです。 誰かがConfluxの碑文を入力するときに、サイクルあたりのサイクル数を1000に変更し、毎分約200の異なるトランザクションを送信しました)
最終的に、私は初歩的なCelestiaスクリプトを入手し、12月17日の夜にCIASがプラグを抜いた後、簡単にテストし、何百ものトランザクションを送信しました。 12月19日未明にCIASが再開された後、私はいくつかのCIAS(約1,800)を攻撃しました。 しかし、他にも文句を言うべきことがあります。
全体として、12 月 17 日の夜の体験は、Celestia は大規模なトラフィックに対処する準備ができておらず、RPC ノードの構成に関して非常におざなりでした (1 時間で数十の RPC ノードを爆破できるとは想像しにくい)。 **
19日の夜は、ガス代の高騰を除けば状況はだいぶ良くなり、それ以外は大きな問題はなく、ライトノードへのデータ配信に特化したDAネットワークであるCelestiaは一時的にテストに耐えているとしか言いようがありませんが、今後、他に落とし穴があるかどうかはわかりません。