Transactions

交易是如何形成/簽署的?

  • March 7, 2018

每筆交易都將未使用的輸出作為輸入並創建新的輸出。交易的創建者使用他的私鑰簽署交易,節點使用創建者的公鑰驗證該交易。

但是交易的形成有多準確呢?我在比特幣維基上看到了這個:

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 的書很好地回答了所有這些問題。真的強烈推薦。

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