# 【DeFi】Timelockが重要ではない3つの理由を徹底解説します

今回の記事では、『Timelockが重要ではない理由』について解説していきたいと思います。 主にDeFiの、イールドファーミングにおける話になります。 今までは、Rugpull関連の動画などでも『Timelockがあるかどうか確認してください』という話をお伝えしてきたと思います。ただ、この数週間で結構状況も…

正規URL: https://3mikan.com/archives/1753

著者: みかん
公開: 2021-07-10T02:18:23.000Z
更新: 2021-10-19T03:55:36.000Z

<p>今回の記事では、<span class="marker">『Timelockが重要ではない理由』</span>について解説していきたいと思います。</p>



<p>主にDeFiの、<strong>イールドファーミング</strong>における話になります。</p>



<p>今までは、Rugpull関連の動画などでも<span class="marker">『Timelockがあるかどうか確認してください』</span>という話をお伝えしてきたと思います。ただ、この数週間で結構状況も変わり色々考えた結果Timelockはさほど重要ではないなという結論に至りました。その理由を今回は紹介したいなと思うので、是非最後まで読んで頂ければと思います。</p>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
https://youtu.be/OUcfU6YE79A
</div></figure>



<h2>Timelockとは</h2>



<p>Timelockのメインは引き抜き用のコード対策です。人のプールに入れてあるトークンを勝手に引き出すことができるので危険なコードと言われています。</p>



<p>そのため、悪意のあるプロジェクトがこういった機能を使うとどんどん資金を引き抜く事が可能でした。なので、TImelockをしている間はそうゆう機能が使えなくなるので安全だと思われています。</p>



<p>この記事の前提として、Timelockがあるから悪いというわけではありません。機能としては良い機能ですし、防御するという点においては、役に立つ場面もあるかと思います。</p>



<p>ただ、『<strong>Timelockがあるから安全</strong>』『<strong>Timelockがあるから大丈夫</strong>』という考え方は無くしてほしいなと思いこの記事を書いています。</p>



<p>まずはTimelock主な仕組みを2つ紹介します。</p>



<h4>①オーナーのみの機能の実行を遅らせる</h4>



<p>（例）MasterChef<br />MasterChefに一番利用されていることが多いです。</p>



<p>MasterChefのオーナーにTimelockを設定することで、オーナーの機能を使いたい場合はTimelock経由でMasterChefに機能を飛ばす必要があります。</p>



<p>Timelockにこの関数を実行したいという物を飛ばすと、<span class="marker">６時間や２４時間後</span>ぐらいにMasterChefで実行されます。具体的に何時間後に実行されるかは、Timelock側で決められます。この<span class="marker">【何時間後に実行する】</span>というこの機能がTimelockです。</p>



<h4>②結果的にMasterChefなどの変更が即座に行われたりしない</h4>



<p>Timelockを設定した事で結果的に、MasterChefの変更がすぐに行われる事はないです。逆にTimelockがない場合だと、開発者が実行したらすぐに変更されます。</p>



<p>なので、その時間何も変更されないということは<strong>ラグプル起こらないよね</strong>と思われていました。ここが結果的に、<span class="marker">勘違いの原因</span>になってしまっていました。</p>



<h2>重要ではないと思う理由３つ</h2>



<p>私自身もTimelockがあることで安全だと思い込んでいました。ただ、最近のラグり方やRugpullのケースを見ているとTimelockが関係ないと思い始めました。</p>



<p>逆に、Timelockがあることで人が集まってしまいより被害が拡大しやすです。自分自身が被害を受けない為にも、Timelockに対する考え方は直したいと思った理由が、下記３つです。</p>



<h4>①オーナー機能以外は利用できる</h4>



<p>Timelockをしている間、<span class="marker"><strong>オーナー機能以外は利用でき</strong></span>ます。<br />そして、現在のRugpullの主要なやり方はオーナー機能以外を使って行うやり方になっています。</p>



<p>例えば最近、stablemagnetでRugpullがありました。Swapと言われる普通のユーザーが使える機能を使ってラグっています。</p>



<p><span class="marker"><strong>ユーザーが使える機能</strong></span><strong>＝</strong><span class="marker"><strong>オーナーもすぐに発行ができる</strong></span>ので、Timelockのあるなしに関係なく実行できます。</p>



<p>つまり、ユーザーも触れる範囲に何かセキュリティのホールを作っておくとすぐにラグることが可能です。これが、今の主要なやり方になっています。このようなRugpullが増え結果的にオーナー機能を使わなくても、ラグれてしまうという状況になっています。</p>



<h5>結論：Timelockがあっても無くても、普通の機能は使えてしまうので意味がない！</h5>



<h4>②防御も遅らせてしまう</h4>



<p>Timelockは攻撃を受けたときの防御も遅らせてしまいます。この場合、悪意の無いプロジェクトにとっては邪魔でしかないです。</p>



<p>Timelockは運営がラグるパターンだけでなく、第三者からの攻撃を受ける場合もあります。</p>



<p>例えば、パンケーキバニー／IRONFINANCEのように、運営側に悪意が無くても攻撃を受けてしまった場合。防御の際もTimelockを経由する必要があるので、その度に２４時間待つことになります。これだと明らかに手遅れになり、防御を遅らせてしまう事に繋がります。</p>



<h5>結論：Timelockは防御の邪魔になる！</h5>



<h4>③逐一確認する労力をかけるユーザーや機関が無い</h4>



<p>Timelockは<span class="marker">delay（実行されるまでの時間）</span>が設定されていてQueueという形で実行される予定のものが蓄積されていきますが逐一確認する労力をかけるユーザーや機関が無いです。</p>



<p>Queueで蓄積されていくことで、ユーザーはそれを見てRugpullと判断し抜けていくと思いますが。プロジェクトやプロトコルがありすぎて、全て確認することは出来ていないと思います。</p>



<p>確認する機関もないので、現実的に全てを把握すること自体が不可能だと思っています。なので、Queueで保存されていてもいなくても気づかなかったら意味がないと思います。仮にQueueに入っていても、気づかないうちに実行されラグられたら終わりです。</p>



<h5>結論：気づかなかったらTimelockを設定してあっても意味がない！</h5>



<h2>まとめ</h2>



<p>大きく上記３つの理由で、Timelockがそこまで重要ではないと考えてます。</p>



<p>私個人の意見として、Timelockがあるかないかではなく。そもそも、Timelockがないと安心できないようなプロジェクトには大金を突っ込まないというのが結論です。</p>



<p>Timelockを信用しすぎないようにし、一つの材料として見れるようになるといいんじゃないかなと思い解説しました。</p>



<h2>RugDoc</h2>



<p>RugDocが出しているWikiでTimelockについてよく知って欲しいという内容があったので紹介していきたいと思います。</p>



<p>紹介URL▶<a href="https://bit.ly/3vXcxY8">RugDocWiki</a></p>



<figure class="wp-block-image size-large"><img class="wp-image-1822" src="/media/1822.webp" alt="【DeFi】Timelockが重要ではない3つの理由を徹底解説しますの説明画像" width="1600" height="737" loading="lazy" decoding="async" /></figure>



<h4>背景情報</h4>



<p>背景情報から見ていきます。</p>



<figure class="wp-block-image size-large"><img class="wp-image-1833" src="/media/1833.webp" alt="【DeFi】Timelockが重要ではない3つの理由を徹底解説しますの説明画像" width="1600" height="754" loading="lazy" decoding="async" /></figure>



<p><span class="marker">①ラグらないか確認したいという意味。</span></p>



<p>Masterchefのプールにユーザーはデポジットしていると思いますが、Masterchefのオーナーが外に資金を流したら結果的に全部資金が流されてしまうので金庫のように考えてください。</p>



<p><span class="marker">②ラグってしまうと100%と</span><span class="marker">ら</span><span class="marker">れてしまうという意味。</span></p>



<p>みんなの資金をまとめて集めている金庫があったとして、その金庫の鍵を持っている人はいつでもアクセスできるし全部持っていけます。しかも、今回は電子情報なので物量的に持てないとい事もないし、一瞬で持っていけてしまう。</p>



<h5>結論：安全なプロジェクト・信頼できるプロジェクトに資金は入れましょう！</h5>



<h4>タイムロックとは正確には何ですか？なぜ気にする必要がありますか？</h4>



<p>タイムロックとは、<strong>【Timelock】</strong>というクッションを挟む事で、<span class="marker">オーナーの実行を遅らせる事ができる</span>。</p>



<p>Timelockの事を、<strong>box</strong>とここでは表記してあります。</p>



<figure class="wp-block-image size-large"><img class="wp-image-1834" src="/media/1834.webp" alt="【DeFi】Timelockが重要ではない3つの理由を徹底解説しますの説明画像" width="1600" height="972" loading="lazy" decoding="async" /></figure>



<p><span class="marker">①金庫の鍵を開けようと思うと、すぐに開けることができない。</span></p>



<p>このボックスは設定可能なタイマーが設定されているという点で特別である。所有者がキー入れて閉じると、ボックスが自動的にロックされる。所有者が鍵を中に入れたい場合はタイマーを開始する必要があり、タイマーが切れるとロックが解除される。これによって悪意のある所有者の能力が低下される。</p>



<p><span class="marker">②内部のコードを書き換える事ではなくて、いつ呼び出すかだけが変更される。</span><br />※金庫の話から、スマートコントラクトの話に切り替わっています。</p>



<p>Queueに入れられるトランザクションは、通常変数を更新したりMasterchefスマートコントラクトに存在する関数を呼び出したりすることを目的にしている。</p>



<h4>タイムロックについての真実 </h4>



<figure class="wp-block-image size-large"><img class="wp-image-1835" src="/media/1835.webp" alt="【DeFi】Timelockが重要ではない3つの理由を徹底解説しますの説明画像" width="1600" height="959" loading="lazy" decoding="async" /></figure>



<p><span class="marker">①オーナーが資金を盗む可能性がある場合のみに便利。</span></p>



<p>鍵のコピーが無ければ、銀行の金庫室の鍵を使っていつでも金庫室にアクセスすることができる。そのため、所有者の能力が重要ではない。</p>



<p><span class="marker">②ラグのリスクが低い場合は、そもそもTimelockは関係ない。</span></p>



<p>Timelockは、オーナーから身を守るのを助けるだけです。そのため、オーナーではない機能を使われてしまうと意味がない。</p>



<p><span class="marker">③オーナー機能ではない所にセキュリティホールを作ると実行できてしまう。</span></p>



<p>所有者は、マスターボールトキーをタイムロックに『デポジット』する前にそのコピーを作成でき全てを盗むことが可能。これは、スマートコントラクトが開発者ロールの機能を隠してアクションを実行できるようにする場合のようになります。</p>



<p><span class="marker">④所有者はTimelockのタイマーを短く設定することも可能。</span></p>



<p>タイマーが６時間しかない場合、所有者は夜にタイマーを開始しユーザーが目を覚ます前にユーザーの資金で逃げることが可能。</p>



<h4>タイムロックが有害な場合</h4>



<figure class="wp-block-image size-large"><img class="wp-image-1836" src="/media/1836.webp" alt="【DeFi】Timelockが重要ではない3つの理由を徹底解説しますの説明画像" width="1600" height="528" loading="lazy" decoding="async" /></figure>



<p><span class="marker">オーナーが悪意がない場合Timelockをかけるだけ邪魔になる。</span></p>



<p>Timelockの間は誰も中に入ることができない為、その間に事件が大きくなりやっと中に入れた時には資金が全てなくなってしまう。</p>



<h5>結果的に守る時にも邪魔になる！！</h5>



<h2>まとめ</h2>



<p>以上がRugDocに記載してあった内容になります。</p>



<p>DeFiを行う上で、基本的に自分で情報を集め実践されている方がほとんどだと思います。是非このRugDocも参考にしていただいて、一つの学びとして見ていただければと思います。</p>



<p>今回はTimelockが重要ではないという内容をお伝えしましたが、もちろんTimelockがあってはいけないというわけではないです。Timelockも目的があって一つの機能を守ることができています。</p>



<p>ただ、<strong>『Timelock＝安全・安心』</strong>この考えが少しでも変われば自分の資金を守ることに繋がるのではないかなと思います。</p>

