在 UTXO 模型的區塊鏈上,資產可以類比為真實世界裡錢包裡面的硬幣,每個硬幣都是獨立的,與之相應的,一個人可能同時持有很多個 UTXO,且每個 UTXO 都可以使用不同的金鑰。
這就給數字貨幣錢包提出了挑戰,不能再通過簡單地轉移一個私鑰,來轉移使用者的全部資產。我們迫切需要一種新的格式,來確切地描述一個 UTXO。
以比特幣為例,花費一個 UTXO 時我們需要以下資訊:
- previous_txid 產生此 UTXO 的交易
- previous_index 此 UTXO 的位置
- lock_script 此 UTXO 的鎖定指令碼
- unlock_script 解鎖此 UTXO 的指令碼
所以如果用json格式來表示一個 UTXO,它可以是這樣的:
{
"txid": "...",
"index": 0,
"lock": "...",
"unlock": "..."
}
有人說可以把 merkle proof 也加入到這個結構中,這樣結合 Block Header 服務,就可以驗證此 UTXO 是否(曾經)在鏈上。
但如果僅僅是用於在不同錢包之間轉移 UTXO,我認為這樣就已經足夠了。