タイムロック:特定の時点まで動かせないコイン

·4 分で読める·SSP Editorial Team 著
SSP Academy のカバー画像:ブロックチェーンのタイムロック

タイムロック:特定の時点まで動かせないコイン

暗号資産のセキュリティの大半は、誰が支出できるか、つまりどの鍵が、いくつの署名が必要かに関するものです。タイムロックはそこに第二の軸、いつを加えます。タイムロックがかかったコインは、誰が鍵を持っていても、設定された日付やブロック高より前には支出できません。

ニッチな機能に聞こえるかもしれませんが、タイムロックは暗号資産の多くの仕組みを陰で支えています。ペイメントチャネル、ベスティングのスケジュール、相続プラン、ガバナンスの遅延などです。タイムロックを理解すると、ほとんどのウォレットで目にするある設計上の選択の理由もわかります。

2 種類の時間

ブロックチェーンは時間を 2 つの方法で測り、タイムロックはその両方を使います。

  • 絶対時間。「2030 年 1 月 1 日より前は不可」や「ブロック 1,000,000 より前は不可」といった指定です。コインはその時点までロックされ、その後は通常どおりに扱えます。
  • 相対時間。「このコインを受け取ってから 1,000 ブロックが経過するまでは不可」という指定です。時計はコインが作られた時点から動き出すため、入金ごとにそれぞれのカウントダウンが進みます。

絶対ロックは、ベスティングのクリフのような固定の日付に向いています。相対ロックは「30 日以内に他の誰も行動しなければ、こちらの別の鍵で支出できる」といったルールに向いており、これはリカバリーや相続の設計でよく見られるパターンです。

ビットコインの仕組み

ビットコインには 2 つのレベルでタイムロックがあります。

  • **トランザクションレベル。**すべてのトランザクションには nLockTime フィールドがあります。これが将来の時刻やブロックに設定されていると、ネットワークはその時点までトランザクションを受け付けません。これがロックするのはトランザクションであってコインではありません。鍵を持つ人は、ロックのない別のトランザクションに署名することができます。
  • スクリプトレベル。OP_CHECKLOCKTIMEVERIFY(絶対)と OP_CHECKSEQUENCEVERIFY(相対)という 2 つのオペコードを使うと、アドレス自体の支出ルールで一定の時間の経過を必須にできます。こちらはコインをロックします。誰が署名しても、どのトランザクションも早期に支出することはできません。

強力なのはスクリプトレベルのほうです。これを使えば、「この 3 つの鍵のうち 2 つでいつでも支出可能、または1 年後にはこの単独のバックアップ鍵でも支出可能」のように、複数の支出経路を持つアドレスを構築できます。

スマートコントラクトチェーンの仕組み

イーサリアムなどのチェーンでは、タイムロックは単なるコントラクトのロジックです。コントラクトが現在のブロック時刻を保存された期限と比較し、期限より前には処理を拒否します。これによりタイムロックは柔軟になります。毎月トークンを解放するベスティングコントラクト、投票の可決から実行までに待機期間を強制するガバナンスシステム、ユーザーが対応できるよう数日前に変更を告知するアップグレード可能なコントラクトなどです。

最後の用途はセキュリティ上重要です。「管理者鍵が何かを決定した」ことと「それが実行された」ことの間に遅延があれば、悪意ある変更に誰もが気づく時間が生まれます。これは、あらゆるコントラクトのアップグレード権限について確認しておくべき点の一つです。

タイムロックが役立つ場面

  • **相続と緊急アクセス。**長期間操作がなかった場合にのみ開くバックアップ経路があれば、あなたが活動している間は相続人が資金に手を出せず、それでいて必要なときには資金を回収できます。相続の計画は、多くの場合まさにこの種のルールに行き着きます。
  • **リカバリー鍵。**単独で行動できるものの、一定の遅延後にしか行動できないリカバリー鍵は、盗まれた場合の危険性がはるかに低くなります。所有者が先に資金を移す時間があるからです。
  • ペイメントチャネル。Lightning Network は相対タイムロックを利用して、不正の試みに異議を申し立てるための時間枠を双方に与えています。
  • **ベスティングと約束。**トークンを特定の日付までロックすることで、約束が信頼ではなくチェーンによって強制されるようになります。

トレードオフ

タイムロックにはコストがあります。

  • **あなた自身も締め出されます。**ロックは攻撃者と緊急事態を区別できません。期日前にお金が必要になっても、ロックされたままです。
  • **複雑さには代償が伴います。**複数の経路を持つスクリプトは、構築も監査も復元も難しくなります。タイムロック付きスクリプトに誤りがあると資金が支出不能になる可能性があり、しかもそれが判明するのは何年も後、ロックの期限が切れたときかもしれません。
  • 相対ロックには手入れが必要です。「1 年間操作がなかったら」という仕組みでは、通常、所有者が定期的にコインを更新して時計をリセットする必要があります。
  • **ウォレットの対応状況はまちまちです。**タイムロック付きアドレスが役に立つのは、最終的に復元に使うソフトウェアがそれを理解できる場合だけです。

タイムロックと SSP

現在の SSP のボールトは純粋なマルチシグです。M-of-N の鍵の組み合わせで、時間に基づく支出条件はありません。あなたの 2-of-2 ボールトは、両方の鍵が同意すればいつでも支出でき、そうでなければ決して支出できません。これは意図的なトレードオフです。シンプルなスクリプトは検証しやすく、標準的なツールで復元しやすく、何年も後にあなたを驚かせるような時計も存在しません。

SSP でのリカバリーは、時間遅延付きの経路ではなく、あなたの鍵とそのバックアップによって行われます。さまざまなマルチシグ構成の比較では、多くの人にとって重要な選択肢を解説しています。チーム向けには、SSP Enterprise のボールトで承認に必要な署名者の数を選べます。

率直なまとめ

タイムロックを使うと、誰がコインを動かせるかだけでなく、いつ動かせるかもチェーンに強制させることができます。相続プラン、リカバリー鍵、ペイメントチャネルを、誰かが待ってくれると信頼することなく実現できます。

一方で、タイムロックは複雑さを増し、攻撃者と同じくらい確実に所有者自身を締め出してしまうこともあります。慎重に使えば暗号資産で最も役立つツールの一つですが、それでも最もシンプルなスクリプトが最も安全であることは少なくありません。

この記事をシェアする

関連記事