在收到資金的同一塊上發送資金。確認未收到發送?
我的問題很概念化:
為了創建原始交易,我只需要舊交易中的 txid 和發送它的地址。投入資金,找零,剩下的就是手續費。簽名並廣播。
假設 Alice 向 Bob 的一次性地址發送了一些資金。Bob 有一個“主地址”。無論他從一次性地址中獲得什麼資金,他都會發送給他的主人。Bob 執行一個完整的節點並在交易被區塊鏈確認之前獲得交易。
當 Bob 收到廣播的 Alice 交易時,Bob 將原始交易發送到他的一次性地址,獲取 txid,放入資金,放入他的“主”地址的地址,更改,費用,簽名並廣播新交易,得到從 Alice 發送到他的主地址的資金。
所以,現在,Alice 發送給 BobDisp(Bob 的一次性地址),BobDisp 發送給 Bob。所有這些交易都有 0 個確認,並且都是有效的。
對於論點。Alice 以 0(零)費用發送交易。Bob 以“標準”費用(比如 0.0003 BTC)簽署了他的交易,該費用具有高優先級。
當礦工獲得交易進行開採時,他們是否知道兩者必須在同一個區塊上?或者,如果僅使用“BobD -> Bob”交易(沒有 Alice -> BobD)開採區塊會發生什麼?塊無效嗎?
礦工不會重新掃描整個區塊鏈來知道“BobD -> Bob”使用了新交易的資金,對吧?Alice 交易可能是 50000 個舊區塊,或者在這種情況下是一個新區塊。
PS:不確定是否清楚。謝謝
只是為了擴展 Jannes 的答案:在將交易包含在塊中之前,礦工確實有效地檢查了該交易的所有輸入是否已經在該塊或某個先前的塊中,以及這些交易的所有輸入,等等遞歸返回到創建硬幣的地方。事實上,網路上的每個完整節點都會對它們收到的每個新塊中的每筆交易執行相同的檢查,因為這是該塊被接受為有效的要求。
但礦工或節點無需每次都重新掃描區塊鏈即可完成此操作。當他們第一次下載區塊鏈時,他們創建了所有有效交易的本地索引,該索引儲存在磁碟上。除非其所有輸入都已在索引中,否則不會將新交易輸入此索引。如果您考慮一下檢查的遞歸性質,您會發現在索引中找到交易意味著它及其所有父項都是有效的 - 因此檢查可以在很短的時間內完成。