FISCO-BCOS / FISCO-BCOS/java-sdk

事件topics不应该只截取前4字节!

オープン
#352 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
resolved test-doc v2.9.0
主要言語
Java
スター
58
フォーク
62
PR マージ指標
30日以内にマージされた PR はありません

説明

在sdk中的ContractABIDefinition类中,事件主题的计算方式逻辑如下:
![企业微信截图_16306675012145](https://user-images.githubusercontent.com/6778136/131996832-bad58ffb-729d-4d30-a0c0-53c370358681.png)

这样的话,就截取了sha3([事件签名])的前4字节,得到结果类似于:
“0xb8b1cbdd”

但是交易回执抛出的事件中,其实事件topics是应该保存整个32字节的,例如
“0x8d85a70fd2c5d140a4a01143492d27ff82cfad4cead313e66c53f39b0feb5e0f”

这造成的后果是,ContractABIDefinition类的eventTopicsToEvents就没有办法直接拿来匹配交易回执中的事件主题了。

解决办法:
修改ContractABIDefinition.addEvent方法,不要再复用methodId的生成方法,直接对事件签名做sha3即可。

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

SDK の ContractABIDefinition.addEvent メソッドから始め、イベントシグネチャが現在どのようにメソッド ID の生成を再利用しているかを調べます。eventTopicsToEvents を確認し、完全な 32 バイトのハッシュを含むトランザクションレシートの topic を照合できることを検証します。完了条件は、イベント topic の計算と照合で最初の 4 バイトではなく完全なハッシュを使用することです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
blockchain
issue の種類
バグ
難易度
2/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。