1. 程式人生 > >比特幣基礎概念–交易(Transactions)

比特幣基礎概念–交易(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的私鑰是唯一的,他無法抵賴這單交易。

clip_image002

圖 1 比特幣交易過程

資料來源:Nakamoto(2008)

上述過程略顯複雜。我們可以換一種不太精確但更容易理解的解釋。依然以交易 1 為例,交易單 1 中其實包含以下六種資訊:

一是交易單 1 的 ID;

二是資金的來源,即交易單 0 的 ID;

三是 A 對資金的簽名,以證明是他把 100BTC 給 B的;

四是資金的去向,即 C 的賬號(公鑰);

五是資金的數額,即 100 BTC;

六是 B的簽名(即 B用自己私鑰進行的數字簽名),以證明是他自己簽發的交易。

由於每筆交易單都記錄了該筆資金的前一個擁有者、當前擁有者以及後一個擁有者,我們就可以依據交易單實現對資金的全程追溯。這也是比特幣的典型特徵之一。最後,當每一筆交易完成時,系統都會向全網進行廣播,告訴所有使用者這筆交易的實施。