為什麼在交易中使用“腳本”而不是輸出地址?
我看到每個輸出都包含事務
script
,但這個“腳本”似乎是從與輸出關聯的地址確定性地派生的。為什麼比特幣協議選擇在交易中使用這個腳本衍生工具,而不是簡單地使用輸出地址?
腳本可以用來做更多的事情,而不僅僅是公鑰和簽名。有一整套比特幣腳本語言可用於指定多重簽名、雜湊鎖、時間鎖、條件等。它非常廣泛,只是難以掌握和推理。此類腳本不映射到地址(在 P2SH 之前),因此如果在輸出中沒有腳本,您將被鎖定為僅使用單個公鑰和簽名。
首先,腳本是比特幣工作的一種堆棧程式語言。出於安全原因,腳本非常基本且有限。出於同樣的原因,腳本不是圖靈完備的。
為什麼比特幣協議選擇在交易中使用這個腳本衍生工具,而不是簡單地使用輸出地址?
這是因為使用腳本(也稱為智能合約)鎖定比特幣允許使用特定比特幣的多種條件(多重簽名、未來日期、簡單的數學難題等)。
比特幣有一些標準交易:
P2PKH(支付給公鑰雜湊)
P2SH(支付給腳本雜湊)
P2WPKH(支付給見證公鑰雜湊)
P2SH_P2WPKH(這樣做是為了使 P2WPKH 向後兼容。)
P2WSH(支付給見證腳本雜湊)
P2SH_P2WSH(這樣做是為了使 P2WSH 向後兼容。)
該腳本允許告訴網路如何使用這些比特幣。
因此,在P2PKH交易的情況下,您將比特幣鎖定到某個由地址表示的公鑰。地址是公鑰雜湊的 base58 表示,只有擁有該公鑰私鑰的人才能使用這些比特幣。
然而,真正發揮比特幣腳本語言潛力的是標準P2SH。在這裡,您將資金鎖定到腳本程序(或智能合約)而不是公鑰。因此,誰能解決該計劃中的問題,誰就可以解鎖資金並使用它們。值得注意的是,這個標準裡面有一個標準。根據某些條件,P2SH 可以是標準的或非標準的。然而,P2SH 交易的主要使用案例是多重簽名交易和 SegWit 向後兼容交易(P2SH_P2WPKH、P2SH-P2WSH)。
P2WPKH和P2WSH是旨在降低交易費用的 SegWit 標準,但上述原則仍然存在(P2PKH、P2SH)。