區塊鏈交易過程詳解

一個Transaction的生命週期

一共6個步驟:web

  1. Someone Requests a Transaction via something called a wallet.
  2. The transaction is send (broadcast) to all participation computers in the specific blockchain network.
  3. Every computer in the network checks (validate) the transaction against some validation rules that are set by the creators of the specific blockchain network.
  4. Validated transactions are stored into a block and are sealt with a lock (hash).
  5. This block becomes part of the blockchain when other computers in the network validate if the lock on the block is correct.
  6. Now the transaction is part of the blockchain and can not be altered in any way.

簡化來講就是:算法

  1. 某人發出交易請求
  2. 廣播交易請求到 P2P 網絡
  3. 驗證,miners驗證交易正確性
  4. 多個交易組成一個區塊
  5. 新的區塊加入到一個已經存在區塊鏈中
  6. 交易完成

這裏寫圖片描述

幾個問題:

如何證實你有錢?

根據過往的交易記錄,看是否有 UTXO 的公鑰與交易發起人的公鑰是一致的.
若是遍歷整個去區塊鏈來判斷你是否有錢,那麼效率將會及其低下.因此通常會維護一個 UTXO集合網絡

如何證實你是你?

這麼說有點像個哲學問題,不如換個說法,如何防止別人冒用你的錢包?或者說如何防止別人仿冒你的簽名.
這就涉及一個密碼學問題了.先須要弄清楚私鑰,公鑰,錢包地址之間的關係.
簡單地來講,私鑰能夠生成公鑰,公鑰能夠生成公鑰哈希,公鑰哈希又能夠生成錢包地址.整個過程當中除了公鑰哈希生成錢包地址是可逆的,其餘都是不可逆的.svg

這裏寫圖片描述
詳細的錢包抵制生成過程以下:區塊鏈

這裏寫圖片描述

在發起交易時,交易發起人須要使用[私鑰]對交易進行簽名,生成交易的過程以下:3d

這裏寫圖片描述
因此,爲了防止別人冒用你的錢包,你須要在每筆交易下進行簽名.也就是說,轉出簽名證實了你是你xml

其實每一個TX就像一個轉帳支票,轉出公鑰就是出票人帳號,轉入錢包地址就是收款人,而轉出簽名就是出票人簽章!blog

如何防止你的錢被使用兩次?

這個就涉及到比較複雜的共識算法了,比特幣是使用的PoW(Proof of Work)算法.每一個交易都須要廣播請求到P2P網絡.通過你們驗證,你們驗證就須要驗證你是否有錢,驗證你是否是真正錢包的主人,智能合約整個驗證過程仍是比較複雜的,以後單獨再寫一篇博客來說.生命週期

這裏寫圖片描述