Transactions

如何驗證它是否是 Segwit 交易?

  • July 17, 2018

關注使用圖表範例:https ://p2sh.info/dashboard/db/segwit-usage?orgId=1

我想通過檢查 tx 來驗證它是否是 Segwit 交易。

有什麼簡單的方法可以做到這一點嗎?

  • legacy -> P2SH tx(這是 Segwit 交易嗎?)
  • P2SH -> legacy tx(這是 Segwit 交易嗎?)
  • bech32 -> legacy tx(這是隔離見證交易嗎?)

當許多類型的地址被設置為輸入和輸出時怎麼辦?

如果至少有一個輸入包含見證,則交易是 segwit tx。或者,如果您正在檢查原始 tx,則檢查第 5 個字節(輸入計數),如果是,0x00則它是一個 segwit tx。

範例: tx1

02000000 05 5f4e5315ffe854e75db92f8dda952a8db2f63b37838fca4c32bd4bb692fe7ea2000000006a47304402200ab62a9d1858dceeaa2101cda3f31b7bae60471c0355c54a6eae48f723555806022010d2aad6362a8c56ed66b0670ff84175f534f4f0995f8724a9b2a5fc89a2a4b4012102c424c2670a7aade9cf867576064013d02cc7669c418968993e73e6b25fc122bcfeffffff80cb1bfcde0f309490c717eca07f1353f121fb13e105 …

不是 segwit tx,因為輸入計數0x05= 5

TX2

01000000 00 010106325bac2f2e7ca67fa46c8304fb3b747e5578df1eef0394349ce2cdd744f7f10100000000ffffffff02db355202000000001976a91489ea1263056ac068adba4844efb376a3a19635ad88ac43b72f07000000002 …

是一個 segwit tx,因為輸入計數0x00= 0

還:

  • 花費 P2PKH 輸入(地址以 1 開頭)的交易不能被隔離見證。
  • 如果交易是嵌套的 P2SH,則花費 P2SH 輸入的交易將被隔離見證,否則不會。
  • 花費 P2WPKH 或 P2WSH(從 bc1 開始)的交易將被隔離見證。

在您的範例中:

遺留 -> P2SH

這不能是 segwit tx,因為它使用來自舊地址的輸入

P2SH -> 傳統

如果地址是 P2SH-P2WPKH 或 P2SH-P2WSH(將 segwit 嵌套到 P2SH),這可以是 segwit tx。如果它不是你的,你不會知道它是否是嵌套的,除非有人已經從中花費(在這種情況下,你檢查支出 tx)。

bech32 -> 傳統

這始終是一個 segwit tx

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