交易是如何形成/簽署的?
每筆交易都將未使用的輸出作為輸入並創建新的輸出。交易的創建者使用他的私鑰簽署交易,節點使用創建者的公鑰驗證該交易。
但是交易的形成有多準確呢?我在比特幣維基上看到了這個:
Input: Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6 Index: 0 scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10 90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501 Output: Value: 5000000000 scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG
如果我們以這個交易為例,我們如何從中獲取數據並將其格式化為 RAW 簽名交易,我可以直接發送到網路而不需要錢包?
此外,在創建簽名的 RAW 交易後,它只是由 SHA256 散列以創建其散列 ID 還是創建 ID 包含其他步驟?
最後,什麼是scriptSig?我一般不太懂腳本,所以如果有人也能給我一個簡短的解釋,我將不勝感激
提前致謝!
菲迪
如果我們以這個交易為例,我們如何從中獲取數據並將其格式化為 RAW 簽名交易,我可以直接發送到網路而不需要錢包?
引用的 tx 已經用完。所以不能重複使用。您也不能將其重新格式化為 RAW 簽名的 tx。需要2個步驟。首先重新格式化為“RAW UNSIGNED” tx,然後通過另一組命令對其進行簽名。只有這樣它才能被發送到網路。在範例中,缺少一些數據,我將快速添加。通過下面的兩個連結可以清楚地看到:
version 01000000 Input(s): 1 Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6 Index: 0 script length 48 scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d1090db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501 Sequence 00000000 Output: 1 Value: 5000000000 script length 19 scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG Locktime: FFFFFFFF
現在您選擇了一個 coinbase tx 作為參考,這增加了一些難度,但忽略這一點,下一步將是序列化。此處不再重複,而是指向 amaclin 的工作或runek 的工作的連結。
此外,在創建簽名的 RAW 交易後,它只是由 SHA256 散列以創建其散列 ID 還是創建 ID 包含其他步驟?
不。沒那麼容易 :-) 請參閱上面的連結,Ken Shirriff 的部落格“ Bitcoins the hard way ”也給了我一個很好的提示。涉及許多不同的數據表示,包括反向十六進制等,這增加了複雜性。
最後,什麼是scriptSig?我一般不太懂腳本
基本上,它確保驗證了花費交易資金的條件。這在 bitcoin.SE 中已經被問過好幾次了,所以我提供了另一個連結(請參閱我的答案進一步向下): 為什麼比特幣使用腳本語言?
正如這個連結中所說,Andreas 的書很好地回答了所有這些問題。真的強烈推薦。