おはようございます。
web3リサーチャーのmitsuiです。
今日はweb3の基礎の基礎レポートということで「ウォレット」について深堀します。
基礎と言いつつ、専門用語が多く出てきて少し難しいかもしれませんが、適度に読み飛ばしていただき、なんとなくでも伝われば嬉しいです!
1. はじめに(前編振り返りと後編のねらい)
前編では、ウォレットの基本的な概念や公開鍵暗号・アドレス生成の仕組み、基礎的なセキュリティ対策について解説しました。後編では、より高度なウォレット機能や、実運用における応用的な知識を掘り下げます。
マルチシグウォレット(Multi-Signature Wallet)
スマートコントラクトウォレットとアカウント抽象化
ソーシャルリカバリーと復旧メカニズム
ウォレットのセキュリティ対策(高度編)
ウォレットを使いこなす上で、「ただインストールして送受金できる」というレベルではなく、「組織的に管理する」「高度なセキュリティを構築する」「DApp利用時に安全な署名を行う」といった応用的な運用スキルが必要です。
後編では、さらに一歩進んだ実践知識を解説します。
2. マルチシグウォレットの仕組みと実装例
2.1 マルチシグの基本概念
マルチシグネチャウォレット(Multi-Signature Wallet、以下マルチシグウォレット)とは、あるウォレットアドレスからトランザクションを実行するために「複数の署名(複数の秘密鍵)」が必要となる仕組みです。一般的には「m-of-n(例:2-of-3)」の形式で設定し、n個の鍵のうちm個の署名が揃わないと資産を移動できません。これにより、単一の秘密鍵を盗まれただけでは即座に資産を奪われにくくなります。
m-of-n方式
n:ウォレットに紐づく鍵の総数(例:3)。
m:トランザクション実行に必要な鍵の数(例:2)。
例)3-of-5:5つの鍵を用意し、そのうち3つの署名が揃わないと送金できない。
マルチシグのメリット・デメリットを整理します。
メリット
セキュリティ強化:単一の鍵が漏洩しても、ほかのm−1鍵が保持されていなければ資金は動かせない。
組織的な管理に向いている:取締役や開発チームなど、複数人で資金管理するケースで有効。1人1鍵ずつ保持し、一定数の承認を得た上で資金移動を行う。
権限分散による不正抑止:1人の内部犯行では資産を動かせないため、不正行為のハードルが上がる。
デメリット
初期設定・運用コストが高い
ガス代が高い(コントラクト作成・呼び出しに通常より多く検証処理が必要)。
鍵を安全に保管し、各署名者と連携する手間がかかる。
緊急時のリスク
m人中m人が同時に署名できない状況では(例えば災害や連絡不能時)、資金移動が滞る可能性がある。
複雑性
一般的なEOA(Externally Owned Account:個人の鍵1つで管理するアカウント)に比べて、トランザクション実行の流れが複雑になる。
2.2 マルチシグウォレットの種類と具体例
Gnosis Safe
概要
Gnosis Safeは、最も普及しているスマートコントラクト型マルチシグウォレットのひとつです。Ethereumメインネットおよび各種Layer 2(Optimism、Arbitrum、Polygonなど)で利用可能。Webインターフェースから誰でも無料でセットアップできます。構成のポイント
Gnosis Safeコントラクトをデプロイする
デプロイ時に「各オーナーのアドレス」と「必要な署名数(m)」を指定する。
オーナーごとにウォレットを用意
それぞれがMetaMaskやCoinbase Walletなど既存のEOAを持つ。
トランザクション送信フロー
提案者(オーナーの1人)が「トランザクションを提案」し、Safeに登録する。
その提案に対して、ほかのオーナーが自分のウォレットで承認(署名)を行う。
必要な数の署名が揃うと、トランザクションを実行(execute)できる。
利点
ウェブUIが直感的で分かりやすく、企業やDAOでも多く採用されている。
さまざまなチェーンと連携可能で、ガス代を節約できるLayer 2にも対応。
Gnosis Safe Labsによる開発・保守が活発で、機能拡張や監査も定期的に行われている。
注意点
初回デプロイにはガス代がかかる(コントラクト作成時)。
オーナーのアドレス紛失やアカウント乗っ取りに注意。SECURITYの場合、m=nに設定すると1人の鍵紛失で資金が凍結するリスクがあるため、m<nの設定が望ましい。
BitGo
概要
BitGoは、企業向けに特化したカストディソリューションを提供するサービスです。マルチシグ機能を利用しつつ、API連携によるウォレット管理やカストディ業務を一気通貫で提供します。暗号資産取引プラットフォームや金融機関が自社ウォレット構築のバックエンドとして利用する例が多いです。構成のポイント
コールドウォレットとホットウォレットを分離
企業アカウントとしてBitGo上に作成したウォレットをホットウォレットとして利用し、資金の一部をホットウォレットに預け、残りはコールドウォレットに保管する。
MPC(マルチパーティ計算)ベースの署名
鍵管理を複数のパーティに分散し、BitGoシステム側と企業側で秘密鍵を分割して保管する方式。
カストディAPIによる操作
トランザクション提案・承認をAPI経由で行い、ホワイトリスト制御やIP制限、2FAなど企業向けのセキュリティ機能を備える。
利点
金融機関やマネージドサービスに最適化されており、監査対応やレポーティング機能が充実。
MPCにより、複数の当事者で鍵を分割保管し、不正利用リスクを低減。
24時間サポートやSLA(Service Level Agreement)があり、企業運用でも安心して利用できる。
注意点
サービス利用料が高めに設定されている(主に機関投資家向け)。
カストディを外部企業に預けるため、真の意味での「セルフカストディ」にはならず、ある程度Trust(信頼)が必要。
3. スマートコントラクトウォレットとアカウント抽象化
3.1 スマートコントラクトウォレットの概要
従来のウォレット(EOA:Externally Owned Account)は、「秘密鍵とアドレスを紐づけて、ユーザーが直接署名を行う」という方式でした。一方、スマートコントラクトウォレット(以下、スマートウォレット)は、アドレス自体がスマートコントラクトとしてデプロイされ、「トランザクション実行のロジックを自分で定義できる」アカウントです。
EOA(Externally Owned Account)
秘密鍵と公開鍵ペアで構成され、何らかのコントラクト呼び出しや送金をするとき、必ず秘密鍵で署名しなければならない。
スマートコントラクトウォレット(Contract Wallet / Smart Wallet)
アドレスがスマートコントラクトであり、スマートコントラクト内に「どのような条件でトランザクションを承認するか」をプログラムとして実装できる。
例)Argent、Gnosis Safe、Zerion Smart Wallet、Authereum、SafePal、Coinbase Wallet(内部でスマートウォレット機能を利用)など。
スマートウォレットが持つ代表的な特徴を以下に示します。
ガス代支払いの柔軟化
ERC-4337アカウント抽象化を実装することで、「ガスをETHではなくERC-20トークンで支払う」「ガスをDApp側がスポンサーとして支払う」など、ユーザーがETH残高を気にせずにトランザクションできる仕組みを提供できる。
スマートリカバリー機能
「ソーシャルリカバリー」や「デリゲートキー」によって、万が一メインの秘密鍵を紛失しても、信頼できる友人(ガーディアン)やサードパーティによる承認で新しい鍵を発行できる。
マルチアクションのバッチ処理
複数の操作(例:ERC-20トークンの承認 + トークン送金 + 合意事項のコントラクト呼び出し)をまとめて一度のトランザクションとして実行できる場合がある。
運用ルールのプログラマビリティ
「日次の引き出し制限」「特定時間帯のみ利用可」「ホワイトリスト登録アドレス以外には送金不可」など、カスタムルールをスマートコントラクト内に組み込める。
3.2 代表的なスマートコントラクトウォレット事例
Gnosis Safe(マルチシグ+コントラクトウォレット)
概要
既に前節で紹介したGnosis Safeは、マルチシグウォレットであると同時に、スマートコントラクトウォレットとしての機能も兼ね備えています。Safeコントラクトをデプロイすることで、そのアドレス自体がスマートウォレットとなり、「承認フロー」をスマートコントラクト内で完結します。特徴
マルチシグの他に「Module」という拡張機能を使い、ソーシャルログイン連携、Daily Spend Limit(1日あたりの引き出し上限)設定、Gas Tokenによるガス支払いといった機能を追加できる。
Safeコントラクトは定期的に監査されており、バグバウンティプログラムも実施されているため、企業やDAOでの利用実績が豊富。
Safe UI上で「Custom Transaction Builder」を使うと、個別にコントラクト呼び出しを構築できるため、複雑なマルチアクションも簡単に実行可能。
Argent(ソーシャルリカバリー付きスマートウォレット)
概要
Argentは、スマートコントラクトウォレットとして設計され、主に以下のような機能を提供します。ソーシャルリカバリー:あらかじめ信頼できるガーディアン(友人、家族、ハードウェアウォレットなど)を登録しておくと、メイン鍵を紛失してもガーディアンの承認で復旧できる。
ガスレストランザクション:独自の「トラステッドトークン」によるガス代サポートや、スポンサー型ガス代支払いを実現している。
DeFi統合:UIから直接CompoundやAave、Uniswapなど代表的なDeFiプロトコルにアクセスし、ワンクリックでイールドファーミングやスワップができる。
特徴
シンプルなモバイルUIでありながら、高度なスマートウォレット機能を多数備えており、初心者から中級者まで幅広く利用されている。
ガス代を気にせずにDeFi操作を行えるため、web3初心者でも直感的に操作できる。
スマートリカバリー機能の設定により、シードフレーズを覚えることが難しい人でも、安全に資金を管理できる。
注意点
ウォレット内で自動的にDeFi操作を行うため、スマートコントラクトの脆弱性が影響しうるリスクがある(ただしArgentチームは定期的に監査を受けている)。
ガス代のスポンサーには限度があるため、大規模な操作や複数回のトランザクション連続実行時にはETH残高が必要となるケースもある。
ZeroWallet / Stackup (ERC-4337アカウント抽象化対応)
概要
ERC-4337(Account Abstraction:アカウント抽象化)に基づく新たなスマートウォレットが登場しつつあります。これらのウォレットは、「ガス代前払いサービス(Paymaster)」を通じて、ユーザーがETHを持たずともERC-20トークンでガス代を支払ったり、DApp開発者側がガス代をサポートする仕組みを実現します。構成のポイント
UserOperation
従来のEOAとは異なり、「UserOperation」というRPC仕様を用いて、署名済みのトランザクション情報をBundlerに送信する。
Bundler
UserOperationをプールし、ある程度集まったらまとめて1つのトランザクションとしてEthereumメインネットにコミットする。
Paymaster
ガス代を誰が負担するかを定義するスマートコントラクトで、ガス代支払いを承認または拒否できる。DAppやサービス提供者は、Paymasterを使ってユーザーのガス代をスポンサーとして負担できる。
利点
ユーザー体験の向上:ガス代にETHを用意する必要がなく、DApp利用時のハードルを大幅に下げる。
柔軟なガス代戦略:ERC-20やステーブルコインでのガス代支払いが可能になり、仮想通貨をあまり知らない初心者でも気軽に利用できる。
注意点
ERC-4337は提案段階(2023年末頃に実装スタート)であり、バグの可能性やネットワーク負荷の課題が残っている。
Bundler/Paymasterを運用するため、エコシステム全体の二次開発コストがかかる。
初期のサポート対象チェーンはEthereumのみ。PolygonやAvalancheなどへの展開は今後検討段階。
4. ソーシャルリカバリーと復旧メカニズム
4.1 ソーシャルリカバリーの概念
シードフレーズを厳重に保管していても、ユーザーがスマホを紛失したり、ハードウェアウォレットが故障したりすると資産を取り戻せなくなるリスクがあります。そこで登場したのが「ソーシャルリカバリー(Social Recovery)」と呼ばれる仕組みです。
これは、あらかじめ信頼できる「ガーディアン」と呼ばれる第三者(友人、家族、別のウォレット、あるいはハードウェアデバイスなど)を複数人登録し、メインの鍵を紛失したときにガーディアンの一定数の承認を得れば、新しい鍵を発行してウォレットを復旧できるというものです。
ソーシャルリカバリーの流れ
ガーディアン選定:ユーザーは、信頼できる友人や家族、あるいは自分が別途持つハードウェアウォレットなどをガーディアンとして登録する。
復旧リクエスト:万が一メインの鍵を紛失した場合、ユーザーは別のデバイス(例えば2台目のスマホやPC)から「復旧」をリクエストする。
ガーディアン承認:ガーディアンに対して、「新しいウォレットアドレスへの復旧を承認してください」という署名要求が送られる。
必要数の承認獲得:事前に設定した閾値(例:3-of-5)の数だけガーディアンが署名すると、新しいメイン鍵(秘密鍵)が発行され、ウォレットが復旧される。
メリット
秘密鍵一元管理のリスク分散:シードフレーズの紛失やスマホの盗難が起きても、複数のガーディアンが承認しなければ復旧できないため、不正復旧リスクが下がる。
PCやスマホが一時的に使えなくても復旧可能:メインデバイスが壊れた際、別デバイスから復旧プロセスを始められる。
初心者の安心感向上:シードフレーズを厳重に覚えられない初心者でも、信頼できる人に依頼するだけでウォレットを復旧できる。
デメリット
ガーディアンの信頼性依存:ガーディアンが悪意ある場合、ウォレットを不正に復旧される可能性がある。
ガーディアン管理の手間:事前にガーディアンを登録し、承認プロセスを理解してもらう必要があるため、面倒に感じることもある。
復旧の遅延リスク:ガーディアンの承認待ちが必要なため、緊急時にすぐに復旧できない可能性がある。
5. ウォレットのセキュリティ対策(高度編)
前編で解説した「フィッシング対策」「マルウェア対策」「シードフレーズのオフライン保管」は基礎中の基礎です。後編ではさらに踏み込んで、より高度なセキュリティ対策を体系的に解説します。
メッセージ署名の安全なやり方
署名要求の内容確認
DAppを利用すると「あなたはこのメッセージに署名しますか?」というウィンドウが表示される。
単に「Permit」をクリックするのではなく、メッセージフィールドに何が含まれているかを必ず可視化してから承認する。
署名要求は「Pay-To-Play(Pay-to-Approve)」詐欺や「ワームホール契約(Parasitic Contract)」と呼ばれる手口で、署名するだけで悪意あるコントラクトに資金移動権限を与えてしまうケースがある。
ハードウェアウォレットによる署名
LedgerやTrezorなどのハードウェアウォレットを利用すると、署名内容がデバイス上で明確に表示されるため、DAppが要求しているメッセージ内容(関数呼び出しや引数)を実際のデバイス画面で確認してから「Approve」/「Reject」できる。
これにより、ブラウザ上でのフィッシングサイトによる見かけ上無害な署名画面ではなく、オフラインデバイス上での署名承認を必ず行う習慣をつけることが重要。
ブラウザ分離
MetaMaskなどを使うときは、専用ブラウザプロファイルを作り、ウォレット専用にする。通常のブラウジング(メールチェックやSNS閲覧)とは明確に分離する。
これにより、マルウェアやキー紛失のリスクを減らし、Cookieや拡張機能の競合などによる思わぬ情報流出を防げる。
Approve(許可)とTransfer(送金)の違い理解
Approve:自分のトークンを特定コントラクトに「最大○○枚まで引き出す権限を与える」操作。これを許可すると、その後コントラクトはユーザーのトークンを第三者へ移動できる。
Transfer:実際にトークンを移動する操作。多くのフィッシング詐欺や悪意あるサイトでは、「Approveだけ押せばOK」「ちょっとだけApproveで大丈夫」と言いながら、無制限Approveを求めるケースがあるため、Approveの数量を「0」ではなく必要最低限に設定するか、Approveを必要としないトークン操作(Permit方式を使う)を優先する。
DNSスプーフィングや偽スマートコントラクトを見分ける方法
SSL/TLS証明書の確認
Web版のDAppを使うとき、必ずブラウザのアドレスバーをチェックし、SSL証明書が正規のものであるかを確認する。
証明書情報をクリックして「発行先(Organization)」が正しいかを目視する。
コントラクトアドレスの検証
DAppが自動的にコントラクトアドレスを指定する場合でも、本当に公式のコントラクトアドレスかをEtherscanやPolygonscanなどのブロックチェーンエクスプローラーで検索して確認する。
例:Uniswapなら
0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
がV2 Factoryコントラクト。コントラクトソースコードがVerified(検証済み)かどうかもチェックする。
コード監査レポートの確認
スマートコントラクトウォレットやDAppが「オープンソース」で監査レポートを公開している場合、監査会社名や監査日付、発見された脆弱性とその修正状況を必ずチェック。
監査済みとはいえ、最新のバージョンにアップデートされているかを確認し、古いバージョンの脆弱性を狙われないように注意する。
定期的なセキュリティ監査・テスト
スマートコントラクト監査レポートの読み方
監査レポートには、「発行元」「監査会社名」「注記」「脆弱性リスト」「修正内容」「監査日」が記載されている。
脆弱性リストでは「Critical」「High」「Medium」「Low」などリスクレベルが示されるため、必ずCritical/Highリスクの項目がすべて修正済みか確認することが重要。
コントラクトソースコードをGitHubで公開している場合は、修正コミットを遡って該当箇所が消えているかを確認し、最新バージョンが監査済みかを把握する。
ユーザー自身のウォレットチェックポイント
残高モニタリング
EtherscanやBscScanなどで、自分のアドレスの残高や承認済みトークン(Approve状態)を定期的にチェックし、身に覚えのない承認がないか確認する。
「Revoke.cash」などのツールを使い、不要なApprove権限をまとめて取り消せる。
デバイスのログ監視
スマホやPCのログを見て、不審なアクセスやウォレット操作履歴がないか定期的にチェックする。
可能であれば、リアルタイム通知を有効にしておくと、急なトランザクション発生にすぐ気づける。
不正アクセス後の対応手順
緊急ウォレット一時凍結
取引所口座と連携している場合は、速やかに取引所側に連絡し、該当アドレスからの出金をブロックするよう依頼する。
鍵のローテーション
侵害された可能性のあるウォレットからすべての資産を新しいウォレットに移動し、古いウォレットは使用停止する。
最後までお読みいただきありがとうございます。前編・後編を通じてウォレットの基礎から応用までを少しでも伝われば幸いです。
免責事項:リサーチした情報を精査して書いていますが、個人運営&ソースが英語の部分も多いので、意訳したり、一部誤った情報がある場合があります。ご了承ください。また、記事中にDapps、NFT、トークンを紹介することがありますが、勧誘目的は一切ありません。全て自己責任で購入、ご利用ください。
About us:🇯🇵🇺🇸🇰🇷🇨🇳🇪🇸の5ヶ国語で展開されるweb3ニュースレターの日本語版。「1日5分でweb3をより深く学ぶ」をコンセプトに、web3の注目トレンドやプロジェクトの解説、最新ニュース紹介などのリサーチ記事を毎日配信しています。
Author:mitsui @web3リサーチャー
「web3 Research」を運営し、web3リサーチャーとして活動。
Contact:法人向けのリサーチコンテンツの納品や共同制作、リサーチ力を武器にしたweb3コンサルティングや研修なども受付中です。詳しくは以下の窓口よりお気軽にお問い合わせください。(📩 X / HP)
→お問い合わせ先はこちら