OP_IFはタップルートスクリプトでは常に不要であると主張されています。 これは誤りです。 @mononauticalから引用されたこのスクリプトは、バンドルすると実際には安価です:すべての支出パスには、とにかく4つの公開鍵が必要です。4 OP_CHECKSIGADD以降、残りのスクリプトは 32 バイト未満であるため、バンドルしたままにしておく方が安価です。 バンドルを解除すると、タイムロックをチェックしているスクリプトの末尾を削除しますが、スクリプトの深さが 0 ではなく 1 になるため、制御ブロックに 32 バイトを追加します。 したがって、支出コストを最適化しているコンパイラは、プライマリ支出パス (3/4) でもわずかに安価であるため、バンドルされたスクリプト (つまり、1 つのリーフを持つタップツリー) を生成します。 プライバシーのみを最適化するユーザーは、おそらくそれを分割したいと思うでしょう。 言い換えれば、最高のタップツリーを生成することは、支出コストとプライバシーという2つの変数を持つ最適化の問題であり、両方を同時に最適化することはできないことがよくあります。ほとんどのユーザーは、どちらの変数に対してもっぱら完全に最適化するのではなく、かなり良いコストとかなり優れたプライバシーを備えたタップツリーを選択することを期待します。ここで@mononauticalが示すスクリプトの場合、2つの葉だけのタップツリーはかなり良いでしょう:プライマリパスは単純な3/4であり、ほとんどの支出に使用され、残りの支出条件(おそらく1つのタグルにバンドルされている)は、いずれにせよチェーンにヒットしないことを願っています。 MuSigとFROSTを方程式に入れると、さらに多くの変数があります:MuSigとFROSTはコストを削減し、プライバシーを向上させることができますが、インタラクティブ性の要件と実装の複雑さを増大させます。 開発者とユーザーは何を選択しますか?知りません! 愚か者だけが疑いを持たない。