本文へ移動
SaferICO SaferICOスマートコントラクトのセキュリティ
自由に利用できます — サブスクリプションも支払いも不要

署名の前に、 その取引を読む。

ウォレットは「0xa9059cbb…」とだけ見せて、確認を待ちます。ラボはそれを人間の言葉に戻します。どの関数が呼ばれ、引数は何か。その隣に、手作業ではとても答えられない問いに答える 6 つのツールが並びます。

サブスクリプション不要コードはブラウザから出ません公開 API誰も告発しません
//7 つのツール

手作業では 答えにくい問い

ここにある各ツールは、具体的な問いを 1 つだけ答えます — そして、答えられないことも同じように伝えます。

トランザクションデータの解読

calldata、4 バイトのセレクタ、関数名のいずれかを貼り付けてください。4 バイトには複数のシグネチャが対応しうるため — ときには意図的にそう作られています — 候補を 1 つに絞らず、すべて並べます。

失敗の理由を読む

近ごろのトランザクションは、失敗すると誰にも読めない 4 バイトのカスタムエラーを返します。それを本来のエラーメッセージへ復元し、panic コードは 16 進のままにせず名前で示します。

このコントラクトのどこが独自なのか

ほとんどの ERC-20 は OpenZeppelin に数十行を足したものです。まずライブラリの指紋を差し引きます。残った部分こそ、開発者が実際に書いた箇所 — 改変はそこに潜みます。

2 つのコントラクトを比べる

変数名をすべて変え、整形し直しても、何も隠せません。比較はテキストではなくトークン構造に基づきます。重なりの大きさを報告するだけで、どちらがどちらを写したとは決して言いません。

この資金はどこから来たのか

最大 3 ホップまで遡り、そのアドレスへ最初に送金した相手までたどります。各ホップには証拠となるトランザクションが付きます。距離は罪の証拠ではなく、そのことはページ上に明記されています。

2 つのアドレスの最短経路

どちらのアドレスもご自身が指定します。名簿は一切使わず、告発でもありません。3 ホップ以内に限定されます — 「この制限の中では経路が見つかりませんでした」は真実ですが、「経路は存在しません」はこのツールに出せる結論ではありません。

公開リポジトリのスキャン

当社が解析するのはファイル一覧だけで、取得と解析はブラウザが GitHub から直接、手元で行います — コードが当社のサーバーを通ることはありません。公開リポジトリのみ対応です。認証情報を送信しないためです。

ツール本体(スキャナー、各ダッシュボード、SAFI ワークスペース)のインターフェースは現時点では英語です。これらのページは、その中に入る前にすべてを日本語で説明するためにあります。

このツールを分けているのは その抑制です

追跡ツールは、簡単に告発の機械になってしまいます。このツールは、そうしないという選択の上に立っています。

⚖️ 距離は罪の証拠ではありません

2 つのアドレスの間の 1 ホップが表しているのはネットワークであって、人ではありません。大手取引所から出金したことのあるウォレットは、数万のアドレスから 1 ホップの距離にあり、その中には当然、悪いものも含まれます。

だからツールは各ホップを裏付けるトランザクションを示し、判断はご自身に委ねます。あるアドレスを「詐欺師」と呼ぶことはありません。それは意図についての推論であり、チェーンは意図を記録しないからです。

01測ったことを言い、推測は言いません

4 バイトの関数セレクタには複数のシグネチャが対応しえます。しかもその衝突は、ざっと読む人を誤らせるために意図して作られることがあります。だから一致するものはすべて並べます。自信ありげに 1 つだけ示すことこそ、攻撃者が突いてくる誤りです。

02「見つからない」は「存在しない」ではありません

経路の探索は 3 ホップと、決められた回数の問い合わせに限定されています。何も見つからなかったとき、誠実な言い方はこうです — その制限の中では見つかりませんでした。

この 2 つの言い方の差が、信頼できるツールと、聞きたい言葉だけを返すツールの差です。

03似ていることは盗用ではありません

2 つの ERC-20 の生の類似度が主に測っているのは、OpenZeppelin がどれだけ普及しているかです。まずライブラリの指紋を差し引き、結果がこのプロジェクトのために書かれたコードについてのものになるようにします。

それでもツールが報告するのは、重なりの大きさだけです。どちらが写したのかはコードには答えられません — それに答えるのは時系列であり、それを読むのはご自身です。

//よくある質問

ラボに ついて

サブスクリプションは必要ですか。
不要です。解析ラボはアカウントも支払いもなしで使えます。さらにすべてのツールが公開 API エンドポイントとしても提供されており、ご自身のコードから呼び出せます。
リポジトリのコードはそちらへアップロードされますか。
されません。当社が解析するのはファイル一覧だけで、各ファイルの取得と解析はブラウザが GitHub から直接、手元で行います。どの段階でもコードが当社のサーバーを通ることはありません。プライベートリポジトリは、そもそも認証情報を送らないため非対応です。
なぜ解読の結果が 1 つに絞られないのですか。
関数セレクタはわずか 4 バイトで、複数のシグネチャが同じセレクタを生みうるからです — 偶然のこともあれば、意図的なこともあります。他の候補を隠して 1 つだけ自信ありげに示すことこそ、攻撃者が利用する点です。
追跡結果に出たアドレスは、関与しているということですか。
そうではありませんし、ツールもそうは言いません。示すのは、それらのアドレスをつないだトランザクションと、あればその出所のラベルだけです。結論を出すのはご自身であり、距離そのものは証拠になりません。

送金する前に、コントラクトをスキャン

コントラクトアドレスを貼り付ければ、リスクを取る前にオーナー権限、流動性、売却シミュレーションの結果が分かります。1 回ごとに少額の手数料がかかり、金額は署名の前に表示されます — どのプランでも、加入後は無制限に含まれます。