比特幣交易中每一筆輸入
A. 交易及記賬(上) | 小白學比特幣之二
在 精讀「Mastering Bitcoin」1 中, 提到比特幣不僅是一個 電子現金 (系統),也是一個公開的賬本,這賬本上記錄了每筆交易的信息。用比特幣交易,其實就跟我們用人民幣或者美元交易買賣東西一樣。作者給比特幣交易行為的定義是:
那麼,在比特幣系統里,是以什麼樣的形式將這些交易記錄下來的呢?
跟傳統記賬一樣,在比特幣系統中也對交易採用復式記賬的方法 (double-entry bookkeeping ledger),直白點翻譯就是雙入口記賬。復式記賬,簡單理解就是以下兩點 [1] :
每一筆交易都要至少在兩個賬戶上進行記錄 ,在會計記賬中有三個基本賬戶也就是資產賬戶、負債賬戶以及所有者權益賬戶,跟會計等式 資產(Assets) = 負債 (Liabiliteis) + 所有者權益 (Equity) 是一一對應的。那麼單獨每個賬戶又是以怎麼樣的方式呈現出來的呢?方法是每個賬戶都需要記錄這個賬戶的debits和credits(見上圖):
說完復式記賬,再回到《Mastering Bitcoin》(精通比特幣) ,在書中,作者給出的記賬例子如下面那張截圖;一筆交易中可以包含多個Input和output。這里的Input和output如何理解呢?
總結一下:
通過作者這句話, 可以看到比特幣系統其實執行的是價值交易。更進一步地,可以理解為價值的輸入和輸出。
上筆交易和下筆交易之間會形成一個「無形的鏈」:
作者用一張圖形象的說明了什麼是「交易鏈」。
對於同一個地址而言,上一筆交易中的output將會作為下一筆交易的輸入,這樣就形成了一個交易鏈。
在上面的交易截圖中,我們可以看到這幾筆交易里有 spent 、 unspent 和 change 。 change 為找零地址,為什麼會有找零地址呢?
比特幣系統中的找零概念和平時用現金交易的找零概念是一樣的,如果你要買一個1塊錢的包子,但是你身上只有一張20塊錢的紙幣,這個時候就需要包子鋪老闆找給你19元零錢。
在比特幣系統中,每一個input就相當於一定面值的紙幣。如果一筆交易中只包含一個Input,為20個BTC,當這個地址向其他地址支付1個BTC時候,就需要對方找還19個BTC。不同的是,比特幣不像紙幣那樣只有幾種面值固定的紙幣,比特幣系統可以隨時創建「新面值」。
出於保護隱私的考慮,找零地址沒必要跟原先的付款地址一樣,通常錢包會生成一個新的找零地址。
在真實應用中,並不會在找零地址旁邊標注 change 的字樣,如下圖顯示(截圖來自blockchain.info上的某筆交易),
比特幣系統可以隨時創建「新面值」來用於找零,而且這「零錢」可以用於下次交易。在每個輸出(output)記錄里,可消費的比特幣數量會被標記成 unspent ,這樣的輸出有一個專門的名字叫做 Unspent Transaction Outputs (UTXO)。可以把unspent的輸出理解為面值不同的、可用於下次消費的紙幣,就好像10元面值紙幣、100元面值紙幣那樣。
[1] Mastering Bitcoin 第二版 https://github.com/bitcoinbook/bitcoinbook
[2] http://learnmeabitcoin.com
B. 提幣網路確認是什麼意思
提幣網路確認是指在加密貨幣網路中,對一筆提幣交易進行驗證和確認的過程。具體來說:
確認的含義:在加密貨幣網路中,每一筆交易都需要經過網路中節點的驗證和確認,以確保交易的合法性和真實性。提幣網路確認就是指這筆提幣交易在網路中被足夠多的節點驗證並確認的過程。
確認的過程:以比特幣為例,平均每10分鍾全球網路會對交易進行一次確認。當一筆提幣交易發生後,它會被發送到比特幣網路中,由網路中的礦工(可以理解為維護網路運行的節點)進行驗證。礦工們會檢查交易的合法性,包括交易雙方的簽名、交易的輸入輸出等。一旦交易被驗證為真實合法,它就會被添加到比特幣的區塊鏈上,並被網路中的其他節點所確認。這個過程通常需要6個確認(也就是大約1個小時)才能認為交易完全到帳,可以用於再次支付或轉出。
確認的重要性:提幣網路確認是保障交易安全的重要環節。只有經過足夠多的確認,才能確保交易的真實性和不可篡改性。未經確認或確認不足的交易可能會存在被撤銷或雙花的風險。
不同網路的確認差異:不同的加密貨幣網路可能有不同的確認機制和時間。例如,以太坊網路的確認速度可能比比特幣網路快,而波場上的TRC20-USDT則承諾零轉賬費和秒級到賬。因此,在進行提幣操作時,需要了解並遵守所使用網路的確認規則。
C. 比特幣網路支付是怎麼樣儲存的
比特幣網路支付是怎麼儲存的
比特幣網路支付是通過區塊鏈技術實現的,而區塊鏈是一種分布式資料庫,其中所有交易都被記錄在一個公共賬本上。這個公共賬本被所有網路中的節點共同維護,任何人都可以查看和驗證其中的交易記錄,但是修改交易記錄卻需要獲得網路中大部分節點的認可。
具體來說,比特幣網路中的每個交易都包含一個輸入和一個輸出,輸入記錄了之前交易的輸出地址和金額,輸出則記錄了本次交易的接收地址和金額。在網路中,每個比特幣錢包都有一個或多個地址,這些地址用來接收和發送比特幣。當一個比特幣交易發生時,其輸入中所包含的輸出被標記為已使用,這樣同樣的輸出就不能再次被使用,確保了比特幣的不可復制性。
當一筆交易被發出後,它會被廣播到整個網路,然後被節點記錄到區塊中。每個區塊包含多個交易,而每個區塊都必須包含一個特殊的交易,稱為「coinbase交易」,這是礦工通過挖礦獲得比特幣獎勵的方式。當一個區塊被成功挖出後,它會被廣播到整個網路,其他節點也會驗證該區塊中的交易是否合法。如果區塊被大多數節點認可,則該區塊就被添加到區塊鏈中,交易也就得到了確認。
所有的交易記錄都被保存在區塊鏈中,而區塊鏈本身則保存在所有節點的計算機上。這意味著,即使某些節點離線或關閉,整個比特幣網路仍然可以正常工作。由於區塊鏈的分布式特性和加密演算法的保護,比特幣網路支付具有高度的安全性和防篡改能力。