ウォレット接続前にスマートコントラクトを確認する方法

ウォレット接続前にスマートコントラクトを確認するための実践ガイド。コード、承認、proxy、honeypot、スキャナー、revoke、DeFiリスクを整理します。

||
更新日

スマートコントラクト分析が重要な理由

ウォレットをスマートコントラクトに接続する行為には常にリスクがあります。新しいトークンや若いDeFiプロトコルには、隠れた権限、honeypot、upgrade機能、過剰なowner権限が含まれることがあります。このガイドでは、ウォレット接続前にスマートコントラクトを確認する方法を整理します。

目的は、初心者でも使える確認手順を示すことです。どのblock explorerを見るか、コードのどこを確認するか、よくある警告サインは何か、署名やapprove前にどうリスクを下げるかを扱います。

スマートコントラクトのソースコード確認

最初に見るべきなのは、Etherscan、BscScan、Polygonscanなどのblock explorer上でのコード検証です。検証済みコントラクトでは、公開されたソースコードがデプロイ済みbytecodeと一致していることを確認できます。ABI、ファイル構成、Read ContractWrite Contractも確認できます。

コントラクトアドレスを開き、ContractタブでVerified状態を確認します。開発者でなくても、コードが公開されていること自体が重要です。公開コードはscannerに通せますが、未検証コードはブラックボックスです。

要点:検証なし = 透明性なし。新規または知名度の低いプロジェクトでは、それだけで接続を避ける理由になります。

重要な関数と権限:approvetransferFrompermit

approve(spender, amount)は、コントラクトにトークンを使う権限を与える関数です。その後、コントラクトはtransferFromを使って承認済み数量を移動できます。無制限approvalやNFTのSetApprovalForAllは特に危険です。

実務上の基本は、必要な数量だけ許可し、無制限承認を避け、誰に権限を与えるかを確認し、不要な承認は使用後にrevokeすることです。

ヒント:署名前にシミュレーション拡張機能を使うと、実際の動作が送金なのか、グローバルapprovalなのか、owner変更なのかを把握しやすくなります。

Proxyとアップグレード:なぜリスクになるのか

Proxyパターンでは、同じアドレスを維持しながら実装部分を差し替えられます。大規模プロトコルには便利ですが、admin、multisig、governanceへの追加の信頼が必要になります。

重要:ExplorerにProxyまたはUpgradeableと表示される場合、誰がupgradeできるか、timelockがあるか、multisigか、バージョン履歴が公開されているかを確認してください。今日安全に見えるコントラクトも、upgrade後に挙動が変わる可能性があります。

分析ツール:静的スキャナーから拡張機能まで

1つのツールだけでは不十分です。異なる種類のリスクを補完するため、複数の情報源を組み合わせます。

  • SlitherはSolidityの典型的な問題を検出し、具体的な指摘を出します。
  • MythXは静的解析、 symbolic execution、ヒューリスティックを組み合わせます。
  • Remix IDEはブラウザ上で基本チェックを行うのに便利です。
  • Token Snifferは既知の詐欺パターンやhoneypotリスクを確認します。
  • GoPlus Securityはトークンリスク、phishing、疑わしい操作を評価します。
  • De.Fi Scannerは非エンジニアにも読みやすいレポートを提供します。
  • 補助ツール:Honeypot.is、revokeサービス、Wallet Guard、Pocket Universeなど。

トークンコードでよくある詐欺パターン

詐欺的なトークンでは、同じような仕組みが繰り返し使われます。

  • Honeypot:購入はできるが、ほとんどのアドレスでは売却できない。
  • 動的ロック:tradingのオンオフ、blacklist、取引時間の制御。
  • 変更可能な手数料:ownerが税率を極端に上げ、売却を事実上止める。
  • 無制限mint:上限なしで新しいトークンを発行できる。
  • 流動性の抜き取り:LP lockがない、または突然Remove Liquidityが行われる。

Scannerは多くのサインを検出しますが、最終判断はユーザー側にあります。複数の警告が重なる場合は接続しないのが安全です。

隠れたリスク:owner権限、pausable、backdoor

Ownableパターンはownerに特別な権限を与えます。それ自体が詐欺とは限りませんが、権限の範囲を理解する必要があります。

  • 手数料、制限、送信先アドレス、重要パラメータの変更。
  • Pausable:送金やtradingを停止できる機能。
  • mintまたはburnFrom:新規発行や他人の残高からのburn。
  • 無害に見える名前の隠れたbackdoorメソッド。

OwnershipTransferredRoleGrantedPausedなどのイベントを確認してください。ownerが本当に権限を放棄したのか、まだ操作しているのかも重要です。

DeFiコントラクト:流動性、レンディング、ファーミング

DeFiではトークンだけでなく、pool、lendingプロトコル、farmともやり取りします。基本チェックは次の通りです。

  • DEX pool:信頼性のあるDEXを優先し、カスタムforkの隠れたfeeやwithdraw機能に注意します。
  • Lending:audit、cap、清算メカニズム、oracleを確認します。
  • Farming/staking:報酬発行量、入金上限、owner roleを確認します。
  • 全体:bug bounty、multisig、TVL、プロトコル年齢、過去のincidentを比較します。

NFTとmint(ERC-721/1155):基本チェック

mintや取引の前に、最低限これらを確認します。

  • 公式アドレス:プロジェクト公式情報やmarketplaceとコントラクトを照合します。
  • Supply cap:maxSupplyとmintルールを確認します。
  • 危険な権限:第三者サイトが明確な理由なくSetApprovalForAllを求める場合は注意します。
  • Metadata:中央集権CDNよりIPFSやArweaveの方が望ましい場合があります。
リスク例:偽mintページが想定アクションをsafeTransferFromに置き換え、保有NFTを攻撃者に送るケースがあります。

OpenZeppelinと認識しやすいテンプレート

OpenZeppelinライブラリは、広く使われている標準実装なので良いサインです。import "@openzeppelin/..."、標準テンプレート、類似コントラクトを確認します。ただし注意は必要です。問題はテンプレート本体ではなく、追加された数行に潜むことがあります。

トークン機能:税金、blacklist、anti-whale

一部の機能はそれだけで詐欺ではありませんが、リスクと使い勝手を変えます。

  • Taxes/fee:売買コストを増やします。上限があるかが重要です。
  • Blacklist:bot対策として使われる一方、holderに対して使われる可能性もあります。
  • Anti-whale:残高や取引量を制限しますが、通常の送金を妨げることがあります。
  • Reflections/rewards:自動分配は魅力的に見えますが、コードを複雑にします。

Block explorerで見るべき点:履歴、呼び出し、イベント

Block explorerはdue diligenceの中心ツールです。

  • タイムライン:deploy日、相互作用の頻度、活動パターン。
  • Holder:上位アドレスへの集中、owner比率、取引所アドレス。
  • 流動性:LP lock、期間、LP tokenの保有者。
  • Read/Write Contract:frontendだけに頼らず機能を理解します。
  • コメント/ラベル:証拠ではありませんが、警告サインになります。
  • イベント:0x0からのTransferApprovalOwnershipTransferredPaused

接続前チェックリスト

  1. Explorerでアドレス確認:コード、deploy、holder、怪しい取引、ラベル。
  2. Scanner利用:Token Sniffer、De.Fi Scanner、GoPlus。
  3. Frontend確認:URL、公式情報、怪しいギフトリンクの回避。
  4. Burner wallet利用:少額だけ入れた別アドレス。
  5. Approval最小化:無制限承認を避けます。
  6. 取引シミュレーション:署名前に何が変わるか確認します。
  7. Revoke方法を把握:承認一覧を定期的に見直します。

確認しても保証されないこと

  • Frontendの誠実性:UIがアドレスやデータを差し替える可能性があります。
  • チームの誠実性:きれいなコードでもoff-chain rug pullは防げません。
  • トークン経済:技術的に正しくても価値がなくなる場合があります。
  • 将来の変更:upgradeable contractは時間とともにリスクが変わります。
  • ソーシャルエンジニアリング:コード確認はphishingやseed phrase漏えいを防ぎません。

まとめ

スマートコントラクトと安全にやり取りするには、規律、ツール、判断力が必要です。最低限、コード検証、scanner確認、approvalの理解、署名前の表示確認を行います。

どのツールも絶対の保証はしません。複数の情報源を照合し、burner walletから始め、広すぎる権限は定期的にrevokeしましょう。

重要点:アドレスとコードを確認し、取引をシミュレーションし、approveを限定し、proxy upgradeを監視し、revokeツールを使える状態にしておくことです。

よくある質問(FAQ)

Etherscanで未検証のコントラクトはどうすればよいですか?
原則として接続しないのが安全です。未検証コントラクトはブラックボックスです。チームに説明を求め、評判も確認してください。
開発者でなくても確認できますか?
Explorerでdeploy日、holder、eventを確認し、scannerを使い、独立した分析を探します。
検証済みでaudit済みなら安全ですか?
必ずしも安全ではありません。検証は透明性を高め、auditはリスクを下げますが、完全には消せません。
Honeypotとは何ですか?
買えるが売れないトークンです。scannerの警告や売却が見られない状況は強い警告です。
Approvalはどうrevokeしますか?
revokeサービスやToken Approvalsパネルを使い、不要な権限を選んで取り消します。
新しいdApp用に別ウォレットは必要ですか?
はい。少額のburner walletを使うと、問題が起きた場合の損失を限定できます。
詐欺コントラクトに接続してしまいました。どうすればよいですか?
そのアドレスへの権限をすぐにrevokeし、偽の返金メッセージを無視し、メインウォレットをそのdAppで使わないでください。

「DeFi」をさらに詳しく見る

このテーマに関する分析、実践ガイド、レビューをまとめて確認できます。

「DeFi」の記事を見る