Script

Miniscript 編譯器的策略是否應該被視為確定性的,這是最終目標嗎?

  • July 24, 2020

Miniscript 編譯器的策略是否應該被視為確定性的,這是最終目標嗎?

Jeremy Rubin 在 IRC 上的##miniscript 上提出了這個問題,並已被轉述。

有關 Policy 和 Miniscript 的基本解釋,請參閱這個先前提出的問題

Miniscript 和 Script 之間的映射永遠不會改變。(至少,不是沒有這個庫的主要版本凸起,在這一點上,可能是一個“Miniscript 2”,它被稱為另一種語言。)

即使在編譯器的連續執行之間,從 Policy 到 Miniscript 的映射也可能發生變化。目前,Miniscript 編譯器在平均滿意度成本方面產生最佳編譯,但編譯器內部使用非確定性 HashMap 遍歷。它可能會產生相同平均滿意度成本的兩種不同的編譯。因此,不建議依賴 Policy 編譯器產生相同的結果。即使是 C++ 和 Rust 實現在實際 Miniscript 中也可能不同,但平均滿意度成本相同。

將來可以改進編譯器並擴展 Miniscript。此外,可能還有一些輔助資訊可以更改最佳腳本,但不適合目前接受的策略編譯器。策略語言和目前編譯器應被視為展示,而不是 Miniscript 聲明的最終權威。Miniscript 的真正價值在於能夠推理人們給你的任意腳本,不管他們是如何想出來的。如果您將其減少為需要從您那裡編譯的策略,則會大大限制其可能性。

有人擔心生態系統會隱含地依賴於這種快速而骯髒的策略語言中的策略,並且編譯器因此無法進化。最終目標應該是最終的互操作性,並且事物互動的層應該是腳本/迷你腳本而不是策略。

Sanket Kanjalkar、Pieter Wuille 和 Andrew Poelstra 在 IRC 的 ##miniscript 上回答了這個問題,但已被改寫。任何錯誤都是我自己的(我很樂意糾正)。

引用自:https://bitcoin.stackexchange.com/questions/97160