比特幣轉帳、交易
當一筆比特幣交易發起時,交易發起人會將「原始交易資料」與經「數位簽章的資料」廣播到網路上,透過點對點網路傳播給每一個礦工。提交給礦工的「原始交易資料」包括「轉帳數額」和「轉入錢包地址」,但是僅有這些是不夠的,因為無法證明交易的生成者對「轉出錢包地址」餘額有使用的權利,所以需要加一個「用私鑰對原始資料進行數位簽章的檔案」。
「轉帳數額」、「轉入錢包地址」、「公鑰」和「簽名後的檔案」,會一起被廣播到比特幣網路上交由礦工驗證。
比特幣轉帳礦工如何驗證
驗證交易有效性
礦工接收到交易後,會先將交易放入 UTXO 池,校驗數位簽章驗證交易有效性,同時檢查交易發起人是否有足夠的 UTXO (未花費交易輸出)。驗證數位簽章時,由於「私鑰」可以推算出「公鑰」,但「公鑰」不能反推出「私鑰」,這個過程不可逆推,礦工的校驗演算法利用了非對稱加密法的原理,只要節點 (礦工) 能夠用「公鑰」證明該檔案確實由交易發起人的私鑰簽名,再核對交易細節無誤後,該筆交易即驗證成功。
注意,礦工只認私鑰不認人,就算交易並非由私鑰所有者親自發起的,只要該交易有用私鑰加密(簽名)過,礦工就會認定交易合法。因此,私鑰務必要妥善保管。
將交易放在交易池等待打包
礦工驗證完交易的有效性後,回將交易放進交易池等待交易,此時,基於最大利益原則,礦工會將交易按照手續費高低進行排序,並在出塊時優先打包處理手續費高的交易。
交易打包進區塊
在這個階段會有兩種可能:
- 礦工取得計帳權:若礦工優先解出題目,獲得記帳權,礦工就會將多筆交易資訊打包整理後,連同礦工挖礦時找到的答案一起廣播到網路上,等待其它礦工驗證。
- 未取得計帳權:若礦工在解出答案前,接受到其他礦工傳來的區塊跟答案,此時礦工便會驗證接收到的區塊是否有效,若答案正確且區塊中包含的交易也沒問題,礦工便會將區塊傳給下一個人,並開始挖下一個區塊。