閃電小費

2026年6月16日 星期二

解鎖比特幣智慧合約潛力:深入探討 比特幣 Miniscript

解鎖比特幣智慧合約潛力:深入探討 比特幣 Miniscript (全文完整版)
解鎖比特幣智慧合約潛力:深入探討 比特幣 Miniscript
Unlocking Bitcoin's Smart Contract Potential: A Deep Dive into Bitcoin Miniscript
作者: Rafael Turon Balbino(Custody Agents 創辦人 | 銀行與家族辦公室之 Bitcoin Miniscript 治理、Nostr 架構)
發布日期: 2025 年 9 月 5 日
文件格式: 通用網頁架構 (支援直接全選複製至 Word / Pages 編輯)

比特幣遠不只是數位黃金或簡單的支付系統。在它的表面之下,隱藏著一個強大的可程式化層,稱為比特幣腳本(Bitcoin Script),它能夠實現複雜的金融安排。然而,原生比特幣腳本以極難處理而聞名——這就像是在大多數開發者更偏好高階抽象語言時,卻必須用組合語言(Assembly)來編寫程式。這正是比特幣 Miniscript(Bitcoin Miniscript)登場的契機,它將比特幣的可程式化能力從「專家專屬領域」轉化為一種觸手可及的工具,用以創建安全、高效且人類可讀的支出條件。

在這本全面性的指南中,我們將探討 Miniscript 如何讓比特幣的智慧合約功能變得易於使用、檢視其技術基礎、看看現實世界中的錢包實作,並提供創建您專屬自定義金融安排的實用範例。無論您是開發者、比特幣愛好者,還是對自託管解決方案感興趣的金融專業人士,Miniscript 都為保護您的數位資產開闢了全新的可能性。

一、 什麼是比特幣 Miniscript?從策略到安全腳本

從核心來看,比特幣 Miniscript 是比特幣腳本的一個結構化子集,專為可組合性(Composability)靜態分析(Static Analysis)而設計。它充當了人類可讀的支出策略(Spending Policies)與實際在區塊鏈上運行的複雜、低階比特幣腳本之間的橋梁。

比特幣策略 (Bitcoin Policy)

▼ 編譯為 (Compiles to) / 使用其表達 (Expressed using)
Miniscript

▼ 編譯為 (Compiles to)
比特幣腳本 (Bitcoin Script)

1. 人類可讀的支出策略

使用 Miniscript 的起點是「支出策略」——一個简单、具邏輯性的陳述,描述了誰可以在什麼條件下花費比特幣。例如:

支出策略場景:
「Alice 可以在任何時間花費這筆資金,或者 Bob 在等待 1 年後可以花費它們。」

這個直觀的策略可以在 Miniscript 的策略語言中表達為:

or(pk(Alice), and(older(52560), pk(Bob)))

在這裡,52560 代表一年的區塊數量(大約為每天 144 個區塊 × 365 天)。這種策略語言使得表達複雜條件變得輕而易舉,而不會迷失在比特幣腳本所要求的堆疊操作(Stack Manipulation)細節中。

2. 編譯過程

一旦您定義好了策略,Miniscript 就會處理將其轉換為高效比特幣腳本的複雜任務。這個過程類似於 C++ 程式如何被編譯成機器碼:

  • 策略 (Policy):描述支出條件的人類可讀邏輯。 (用戶編寫)
  • Miniscript:帶有型態資訊(Type Information)的結構化表示法。 (編譯器生成)
  • 比特幣腳本 (Bitcoin Script):低階的、基於堆疊的指令。 (在區塊鏈上執行)

針對我們範例中的策略,編譯器可能會產生如下的 Miniscript:

or_d(pk(Alice), and_v(v:pkh(Bob), older(52560)))

而這最終會變成以下的底層比特幣腳本碼:

<Alice_pubkey> OP_CHECKSIG OP_IFDUP OP_NOTIF
OP_DUP OP_HASH160 <Bob_pubkey_hash>
OP_EQUALVERIFY OP_CHECKSIGVERIFY 52560
OP_CHECKSEQUENCEVERIFY OP_ENDIF

二、 比特幣 Miniscript 的核心優勢

  • 安全性(Safety):Miniscript 允許在腳本部署之前進行靜態分析。這意味著您可以在將任何資金置於風險之中前,先驗證其正確性、檢查安全漏洞,並確保您的腳本不會受到第三方可延展性(Malleability)的影響。
  • 可組合性(Composability):Miniscript 使得將不同的條件(簽章、時間鎖、雜湊原像等)結合以建立複雜邏輯變得非常容易。這種可組合性意味著您可以創建高階的金融安排,而不需要每次都從頭開始。
  • 高效性(Efficiency):Miniscript 編譯器會為您的策略尋找經濟效益最高的比特幣腳本表示法,並針對體積(Size)和執行成本進行優化。這能節省交易手續費,並確保您的腳本保持在比特幣的資源限制之內。

三、 技術基礎:描述符與 Taproot

1. 輸出描述符 Output Descriptors (BIPs 380-386)

輸出描述符提供了一種標準化的方式,用以告訴錢包如何生成地址以及如何創建支出地址所需的腳本。它們本質上是一種用於描述比特幣輸出(Outputs)應如何被建構和支出的語言。

當使用 Miniscript 時,您的策略會被嵌入到一個描述符字串中。例如,使用我們前面提到過的 Miniscript,一個 P2WSH (Pay-to-Witness-Script-Hash) 輸出看起來可能像這樣:

wsh(or_d(pk(Alice), and_v(v:pkh(Bob), older(52560))))

這個描述符告訴了錢包它所需知道的一切資訊:包含如何為該支出條件生成地址,以及如何建構交易來支出它。描述符的標準化,意味著不同的錢包都能理解並與相同的複雜腳本進行互動。

2. Taproot 的角色 (BIP 341)

於 2021 年 11 月激活的 Taproot,讓基於 Miniscript 的複雜策略變得更具隱私性且使用成本更低。它引入了兩條支出路徑:

  1. 密鑰路徑(Key Path):在區塊鏈上看起來就像一個簡單的單人簽章支出。這會在所有參與者達成共識時使用,使得複雜的安排與常規交易無法區別。
  2. 腳本路徑(Script Path):僅在需要時(例如在糾紛解決或使用後備備用條件時)才揭露複雜的邏輯。這能讓您的支出條件在實際被使用之前保持隱密。

配合 Taproot,一個 Miniscript 策略可以被嵌入至腳本路徑(Script Path)中,這意味著 Alice 可以透過簡單的簽章進行支出(密鑰路徑);或者如果 Alice 無法處理,則可以使用腳本路徑,讓 Bob 與 Carol 在時間鎖過後共同簽章支出。

四、 現實世界:現代錢包實作

錢包/工具名稱 核心應用場景與機制 Miniscript 實際策略範例
Liana Wallet
(Wizardsardine)
專注於具備內建繼承(Inheritance)與遺失保護功能的自託管方案。利用 Miniscript 實作「主密鑰」以及「帶有時間鎖的恢復密鑰」,建立起一個簡單但高效的保險庫系統。 or(pk(MyKey), and(older(105120), pk(HeirKey)))
Nunchuk Wallet 為家庭、企業和去中心化自治組織(DAO)創建高階的共同託管(Shared Custody)安排。它的協同方法允許跨多個設備的多個用戶共同參與託管架構。 thresh(2, pk(AlicePhone), pk(AliceHW), pk(BobPhone), pk(BobHW))
Sparrow Wallet 提供 Miniscript 支援,透過使用者友好的介面來創建自定義支出策略,讓非開發者也能直觀地建構並調試進階比特幣腳本。 自定義多路徑策略支援
Specter DIY 開源硬體錢包項目,融入了 Miniscript 以支持複雜支出條件的解析與校驗,同時仍能保持隔離防彈(Air-gapped)簽章的安全優勢。 硬體級多簽與時間鎖防護

五、 進階應用場景:受保的多實體保險庫

Miniscript 最具前景的應用之一,是實現受保的比特幣託管解決方案。這些安排將安全責任分散在資產所有者與可信賴的第三方之間,並由正式的保險政策作為後盾。

1. AnchorWatch 模型

AnchorWatch 代表了一種將自託管與保險保障相結合的創新比特幣託管方法。該模型使用了一種 5 簽 3 的多重簽章安排:用戶持有 3 把私鑰(保持完全的自主權);AnchorWatch 持有 1 把私鑰(作為受保事件的共同簽署者);中立的第三方密鑰代理人(Key Agent)持有 1 把私鑰(用於恢復)。

這種安排創造了多條可以透過 Miniscript 來精確定義的支出路徑:

  • 標準路徑(Standard Path):用戶可以使用其 3 把私鑰正常花費資金,維持對資產的完整控制。
    thresh(3, pk(UserKey1), pk(UserKey2), pk(UserKey3), pk(AnchorWatchKey), pk(AgentKey))
  • 緊急路徑(Emergency Path):如果用戶遺失了部分私鑰,一條帶有時間鎖的恢復路徑允許在延遲一段時間後,使用不同的私鑰組合來恢復資金。
    or(thresh(3, pk(UserKey1), pk(UserKey2), pk(UserKey3), pk(AnchorWatchKey), pk(AgentKey)), and(older(10080), thresh(2, pk(UserKey1), pk(AnchorWatchKey), pk(AgentKey))))

2. 保險層的角色

讓這個模型特別強大的原因在於,Miniscript 策略具備正式、可審計的特性,這允許保險公司對私鑰遺失或被盜的風險進行承保。由於支出條件被精確定義且可以進行靜態分析,保險人可以準確地評估風險並相應地提供保額覆蓋。這為比特幣託管創造了全新的範式:帶有安全網的自託管

六、 動手實作:自定義支出策略實用範例

範例 1:帶時間鎖的遺產繼承計劃
策略口語描述:「主要所有者 Alice 可以花費這筆資金,或者在 5 年後,繼承人 Bob 可以花費它們。」
Miniscript 表示法:or(pk(Alice), and(older(262800), pk(Bob)))

範例 2:企業財務庫
策略口語描述:「需要 3 位高階主管(CEO、CFO、CTO)中的 2 位簽章;或者在 90 天後,需要董事會 5 位成員中的 3 位共同簽章。」
Miniscript 表示法:or(thresh(2, pk(CEO), pk(CFO), pk(CTO)), and(older(12960), thresh(3, pk(Board1), pk(Board2), pk(Board3), pk(Board4), pk(Board5))))

範例 3:非託管第三方代管(Escrow)
策略口語描述:「3 位參與者(買方、賣方、仲裁者)中的任意 2 位簽章即可釋放資金。」
Miniscript 表示法:thresh(2, pk(Buyer), pk(Seller), pk(Arbiter))

七、 在您的專案中實作 Miniscript

對於希望將 Miniscript 整合到其專案中的開發者,目前有數個程式庫與工具可供使用:Bitcoin Core (C++ 實作)、Rust-Miniscript 以及前端 JavaScript 程式庫。

JavaScript 基礎實作範例

const { compilePolicy, satisfier } = require('@bitcoinerlab/miniscript');

// 1. 定義一個支出策略
const policy = 'or(and(pk(A),older(8640)),pk(B))';

// 2. 將其編譯為 Miniscript 與底層比特幣腳本
const { miniscript, asm, issane } = compilePolicy(policy);

console.log("Miniscript:", miniscript);

// 3. 生成可能的滿足條件 (Satisfactions)
const { nonMalleableSats } = satisfier(miniscript);

八、 常見問答集 (FAQ)

問:比特幣腳本(Bitcoin Script)與比特幣 Miniscript 有何不同?
答:比特幣腳本是內置於比特幣中、用以定義支出條件的低階程式語言,功能強大但極難安全地使用。而比特幣 Miniscript 是比特幣腳本的一個結構化子集,它使創建、分析和組合支出條件變得更容易,同時確保它們能被編譯成有效且高效的底層比特幣腳本。

問:我需要成為程式設計師才能使用 Miniscript 嗎?
答:雖然理解程式設計概念會有所幫助,但您不需要是程式設計師也能使用 Miniscript。像 Liana 和 Nunchuk 這樣的現代錢包提供了使用者友好的圖形介面,讓您可以直接創建常見的支出策略而無需編寫任何程式碼。

問:Miniscript 是否與所有比特幣錢包相容?
答:目前尚未普及。Miniscript 支援需要錢包開發者實作特定的功能。目前包括 Liana、Nunchuk 和 Sparrow 等專業錢包提供支援。不過,任何錢包都可以發送資金到基於 Miniscript 的地址;只有在創建地址以及從該地址花費資產時,才需要錢包具備 Miniscript 功能。

問:Miniscript 與 Taproot 的關係是什麼?
答:兩者是互補的技術。Taproot 提供了一種讓複雜支出條件在區塊鏈上更具隱私且更高效率的方法;而 Miniscript 則提供了一種安全創建這些支出條件的方法。Miniscript 已經適應並全面支援 Taproot 的腳本路徑(Script Path)。

沒有留言:

精選文章

解鎖比特幣智慧合約潛力:深入探討 比特幣 Miniscript

解鎖比特幣智慧合約潛力:深入探討 比特幣 Miniscript (全文完整版) 解鎖比特幣智慧合約潛力:深入探討 比特幣 Miniscript Unlocking Bitcoin's Smart Contract Potential:...

熱門文章