在區塊鏈的世界裡,交易是最核心的動作。這篇文章將帶你從輸入到輸出,一探交易結構背後的秘密。
從比特幣的 UTXO 觀念到以太坊的帳本模型,我們會用生動、輕鬆的語氣,讓你一次看懂交易如何被打包、驗證與記錄。
交易結構大揭秘:從輸入到輸出
在區塊鏈上,交易不是一個簡單的「發送金錢」動作,而是一個由數據、簽名與驗證組成的複雜結構。今天我們就從最常見的 UTXO 模型說起,並且跟你聊聊以太坊那種「帳本」式的交易。
1. 輸入(Input)— 錢包出場的時刻
輸入是交易中「我想把這筆錢給誰」的前置條件,通常包含三個關鍵資訊:
- UTXO ID:指向上一筆交易中某個輸出的唯一標識,確保這筆錢沒被重複花費。
- Amount:目前輸入所代表的數量,單位通常是最小貨幣單元(如 satoshi)。
- Signature:由輸入方的私鑰簽署,證明擁有該 UTXO 的權利。
舉個簡單範例:
{
"inputs": [
{
"utxo_id": "abcd1234efgh5678",
"amount": 5000000,
"signature": "MEUCIQD..."
}
],
"outputs": [],
"locktime": 0
}
這裡的 utxo_id 指向上一筆交易的某個輸出,amount 以 satoshi 為單位(1 BTC = 10^8 satoshi),而 signature 則是使用 ECDSA 生成的簽名。
2. 輸出(Output)— 金錢去向的定義
輸出告訴區塊鏈「誰現在擁有這筆錢」。它包含:
- Recipient Address:接收方的公鑰哈希,通常是錢包地址。
- Amount:轉移的數量,同樣以最小單位表示。
- Script / Locking Script:定義解鎖條件,例如只能由某個私鑰簽名方才能花費。
以比特幣為例,輸出格式大致如下:
{
"outputs": [
{
"recipient_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
"amount": 3000000,
"script_pubkey": "OP_DUP OP_HASH160 ab680... OP_EQUALVERIFY OP_CHECKSIG"
},
{
"recipient_address": "1dice8EMZmqKvrGE4Qc9sK6gF7N2iXW5r4",
"amount": 1500000,
"script_pubkey": "OP_DUP OP_HASH160 a1b2c3... OP_EQUALVERIFY OP_CHECKSIG"
}
]
}
輸出不只指定金額,還會說明「誰可以花」的規則。這些規則叫做鎖定腳本(locking script),在以太坊中對應的是「合約地址」或「簡易可執行程式」。
3. 整體流程:從輸入到輸出再成為新 UTXO
- 收集輸入:錢包軟體搜尋本人的 UTXO,挑選足以覆蓋交易金額的幾筆。
- 產生輸出:決定要送給誰、多少,以及鎖定條件。
- 簽名:對整筆交易(除輸出外)進行哈希,並用私鑰簽名。
- 廣播:把已簽好的交易傳送到網路,礦工或驗證節點會檢查輸入的有效性。
- 打包進區塊:礦工將交易加入區塊,完成後區塊被添加到鏈上。
整個過程中,輸入驗證是關鍵:若某筆 UTXO 已被花費,或簽名不符合,就會被拒絕。這正是區塊鏈防止雙重支付的核心機制。
4. 以太坊的「帳本」式交易
比特幣使用 UTXO,追蹤每一筆「可花費」的金額。以太坊則採用 帳本(account) 模型,交易只包含:
from、to 地址
value 金額
gas/gasPrice 用於計算交易成本
data(可選)用於呼叫合約
這種模式讓以太坊更適合執行複雜的智能合約,交易不需要像 UTXO 那樣逐筆拆解。
5. 小結:交易就是「數據+驗證」
無論是 UTXO 還是帳本,交易的結構都圍繞兩大核心:
- 數據(輸入、輸出或帳本變更)
- 驗證(簽名、腳本或合約執行)
掌握這些基本概念,就能快速閱讀任何區塊鏈交易,並對其安全性有更深入的認識。祝你在區塊鏈世界裡玩得開心,交易無懈可擊!