Raw-Transaction

為什麼在交易中使用“腳本”而不是輸出地址?

  • May 13, 2020

我看到每個輸出都包含事務script,但這個“腳本”似乎是從與輸出關聯的地址確定性地派生的。

為什麼比特幣協議選擇在交易中使用這個腳本衍生工具,而不是簡單地使用輸出地址?

腳本可以用來做更多的事情,而不僅僅是公鑰和簽名。有一整套比特幣腳本語言可用於指定多重簽名、雜湊鎖、時間鎖、條件等。它非常廣泛,只是難以掌握和推理。此類腳本不映射到地址(在 P2SH 之前),因此如果在輸出中沒有腳本,您將被鎖定為僅使用單個公鑰和簽名。

首先,腳本是比特幣工作的一種堆棧程式語言。出於安全原因,腳本非常基本且有限。出於同樣的原因,腳本不是圖靈完備的。

為什麼比特幣協議選擇在交易中使用這個腳本衍生工具,而不是簡單地使用輸出地址?

這是因為使用腳本(也稱為智能合約)鎖定比特幣允許使用特定比特幣的多種條件(多重簽名、未來日期、簡單的數學難題等)。

比特幣有一些標準交易:

P2PKH(支付給公鑰雜湊)

P2SH(支付給腳本雜湊)

P2WPKH(支付給見證公鑰雜湊)

P2SH_P2WPKH(這樣做是為了使 P2WPKH 向後兼容。)

P2WSH(支付給見證腳本雜湊)

P2SH_P2WSH(這樣做是為了使 P2WSH 向後兼容。)

該腳本允許告訴網路如何使用這些比特幣。

因此,在P2PKH交易的情況下,您將比特幣鎖定到某個由地址表示的公鑰。地址是公鑰雜湊的 base58 表示,只有擁有該公鑰私鑰的人才能使用這些比特幣。

然而,真正發揮比特幣腳本語言潛力的是標準P2SH。在這裡,您將資金鎖定到腳本程序(或智能合約)而不是公鑰。因此,誰能解決該計劃中的問題,誰就可以解鎖資金並使用它們。值得注意的是,這個標準裡面有一個標準。根據某些條件,P2SH 可以是標準的或非標準的。然而,P2SH 交易的主要使用案例是多重簽名交易和 SegWit 向後兼容交易(P2SH_P2WPKH、P2SH-P2WSH)。

P2WPKHP2WSH是旨在降低交易費用的 SegWit 標準,但上述原則仍然存在(P2PKH、P2SH)。

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