應該在何時何地添加 coinbase 交易(包括礦工密鑰)?
我正在製作一個簡單的展示程序,幾乎是一個簡化的比特幣複製,主要基於原始白皮書。
請耐心等待,因為我還沒有找到更簡潔地描述問題的方法。
我的區塊鏈基於本教程。
但是,它完全忽略了交易部分,因此我將交易基於原始文件的這一部分:如此處所述 ,我的交易包括下一個所有者的公鑰和前一個所有者簽署的最後一筆交易的簽名。我還添加了轉移的金額(為了簡單起見,我沒有使用輸入/輸出系統)。
由於每筆交易都需要前一筆交易的雜湊值,因此我還創建了一個 coinbase 交易。它只包含開採量和礦工的公鑰(知道將開採量提供給誰)。這允許一個塊中的第一個正常交易有一個先前的交易來散列和簽名。
但是,這也意味著必須在進行第一次交易之前指定礦工密鑰(因為所有未來的交易都要求 coinbase 的雜湊值保持不變)。同時,在他們挖出一個區塊之前指定礦工是*沒有意義的。*換句話說,這將要求交易使用者先驗地知道誰將通過他們的交易探勘區塊。
到目前為止,我的假設是在前一個塊被探勘後,coinbase 交易被添加到未確認的交易列表中,並且新的交易引用它。然後將整個列表放入一個塊中,然後進行探勘。然而,這種假設導致了上述問題。
我能想出的唯一可能的解決方案是使用前一個區塊中的最後一個交易雜湊來簽署新交易,從而有效地繞過 coinbase 交易。但這對我來說似乎不對。
請告訴我我是否遺漏了什麼,或者在某個地方有錯誤的想法。
應該在何時何地添加 coinbase 交易(包括礦工密鑰)?
還是我應該完全放棄這個想法並使用“繞過”方法?
PS。我已經嘗試過搜尋各種 wiki 和問題,但沒有什麼能真正給我一個明確的解決方案。特別是,這個答案太模糊了
你的想法是錯誤的:每筆交易不需要引用某個區塊中它之前的交易,它需要引用創建它現在花費的輸出的交易。這種“交易鏈”是指隨著時間的推移跟踪某些輸出的歷史,而不僅僅是塊內的任意交易排序。
因此,一個區塊中的第二個交易(第一個非幣基交易)將引用創建它正在花費的輸出的交易。它不會引用 coinbase 交易。