比特幣基礎概念–交易(Transactions)
比特幣的交易(Transation,縮寫Tx),並不是通常意義的交易,例如一手交錢一手交貨,而是轉賬。以圖 1 中的交易 1 為例,如果 B想支付 100 個比特幣(100BTC)給 C,那麼 B不僅需要在交易單上註明金額,而且需要註明這 100 個比特幣的來源。如圖 1 所示,B的 100BTC 其實來自 A,是 B通過交易 0 得到的(交易0 已經通過了全網使用者的認證,儲存在所有使用者的電腦中)。為完成交易 1,B 需要在交易單上填寫的資訊包括:
一是 100BTC 的來源,此處為交易單 0 的 ID;
二是 C 的公鑰,也即 C 的比特幣收款地址;
三是將交易單 0 的內容和 C 的公鑰輸入雜湊函式,得到一串數字。B用自己的私鑰加這串數字,作為數字簽名放在交易單 1 中。C 在收到交易單 1 之後,可以通過其中存放的 ID 找到交易單 0,並獲取 B的公鑰。C 可以使用該公鑰對交易單 1 中的數字簽名進行解密。與此同時,C 可以把自己的公鑰和交易單 0 的內容,按照同樣的方式輸入雜湊函式,並將得到的數字與數字簽名解密的結果進行比對。
如果比對成功,就可以確定如下兩個事實:
其一,100BTC 的來源屬實。因為交易單 0 中包含了 A 的簽名,且交易單 0 是經過全網認證過的,即 A 確實將 100BTC 給了 B;
其二,交易 1 的確是經由 B簽署的。由於 B的私鑰是唯一的,他無法抵賴這單交易。
圖 1 比特幣交易過程
資料來源:Nakamoto(2008)
上述過程略顯複雜。我們可以換一種不太精確但更容易理解的解釋。依然以交易 1 為例,交易單 1 中其實包含以下六種資訊:
一是交易單 1 的 ID;
二是資金的來源,即交易單 0 的 ID;
三是 A 對資金的簽名,以證明是他把 100BTC 給 B的;
四是資金的去向,即 C 的賬號(公鑰);
五是資金的數額,即 100 BTC;
六是 B的簽名(即 B用自己私鑰進行的數字簽名),以證明是他自己簽發的交易。
由於每筆交易單都記錄了該筆資金的前一個擁有者、當前擁有者以及後一個擁有者,我們就可以依據交易單實現對資金的全程追溯。這也是比特幣的典型特徵之一。最後,當每一筆交易完成時,系統都會向全網進行廣播,告訴所有使用者這筆交易的實施。