如何驗證它是否是 Segwit 交易?
關注使用圖表範例: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
= 501000000 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