取引のシミュレーション
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 6 分
結論
シミュレーションは、取引を実際に送信する前に、その取引が実行されたら残高や権限がどう変わるかを事前に確かめる手段です。署名の前に「何が出ていき、何が入ってくるのか」を数字で確認できれば、意図しない承認や資産の流出をかなりの割合で防げます。ただし、すべての悪意を検出できるわけではありません。
要点
- 署名前に、資産の増減と権限の付与を数字で確認できる
- 多くのウォレットに簡易的なプレビュー機能があり、専用ツールもある
- 「何も出ていかないはずの操作で資産が出ていく」表示は、即座に中止する合図
- シミュレーションを通ったことは、安全の証明にはならない
定義
ブロックチェーンへ送信する前の取引を、実行結果だけを計算して確認する仕組みのこと。残高の増減、承認の付与、失敗の有無などが事前に分かる。
背景から説明します。ブロックチェーンでの取引は、署名して送信すると取り消せません。そして署名画面に表示されるのは、多くの場合、宛先と手数料と、人間には読みにくいデータの塊です。この状態で「承認する」を押すことが、被害の入口になっています。シミュレーションは、この不透明さを埋めるための仕組みです。
使い方は大きく2通りあります。ひとつは、ウォレットに組み込まれたプレビュー機能です。近年のウォレットでは、署名の要求画面に「この取引でこの資産が減り、この資産が増える」という予測が表示されるようになっています。まずは、自分が使っているウォレットにこの機能があるか、有効になっているかを確認してください。
もうひとつは、外部のシミュレーションツールです。取引の内容を入力すると、実行結果を詳細に表示します。開発者向けのものが多く操作はやや専門的ですが、承認の対象と数量、どのコントラクトが何を動かせるようになるのかまで読み取れます。高額の取引や、初めて触るプロトコルで有効です。
読み方の要点は、期待と実際の差分です。たとえば、NFTを受け取るだけの操作のはずなのに、保有トークンが出ていく結果になっているなら、その取引は意図したものではありません。同様に、スワップのはずなのに無制限の承認が付与される表示が出たら、そこで止めてください。「よく分からないが、たぶん大丈夫」で署名しないことが、この手順の全てです。
ただし限界もあります。シミュレーションは、その時点の状態での実行結果を示すものです。実行までの間に状態が変われば結果も変わりますし、条件によって挙動を変えるコントラクトや、後から管理者が動作を変更できる設計であれば、シミュレーション時点では無害に見えることがあります。シミュレーションは強力な補助ですが、コントラクトの真贋確認や、失っても困らない金額に抑える運用の代わりにはなりません。
注意点
- · シミュレーションで問題が出なかったことは、そのコントラクトが安全である証明ではありません。管理者が後から挙動を変えられる設計もあります
- · 署名要求の内容が読めないまま承認することが、資産流出の最大の入口です。分からないなら署名しないでください
- · 「シミュレーションツール」を装った偽サイトで、取引内容の入力と称して秘密鍵やシードフレーズを求める手口があります。これらを入力する必要は一切ありません
よくある質問
シミュレーションにも手数料はかかりますか?
かかりません。シミュレーションは実際にブロックチェーンへ書き込む操作ではなく、結果を計算して表示するだけだからです。手数料が必要になるのは、確認したうえで実際に署名して送信するときです。