從UTXO理解位元幣機制

2021-09-28 21:27:12 字數 1555 閱讀 1019

要了解uxto,首先我們要理解狀態和事件:

確定的行為一定導致確定的結果,這是同步的本質。這在程式裡面叫做事件與狀態。

狀態是無法同步的,因為狀態的資訊非常巨大,所以計算機同步的任何資訊都是事件。

接著來看位元幣中utxo的概念:

比如一百萬人的賬戶數字,是乙個狀態,我不需要把這一百萬人的資訊全部發過來。

我只需要發,現在誰的賬戶變動了,這就是事件。

基於同步的實際需要,同步的東西就應該是事件,而utxo,就是這個事件。乙個底層資料結構。

如果你要得到狀態,你需要遍歷所有的未使用事件,這是龐大的工作。

那麼什麼是utxo

utxo 是 unspent transaction output 的縮寫,transaction act發音簡寫為x。既-未花費的輸出。

utxo是中本聰最早在位元幣中採用的乙個具體的技術方案。

在位元幣的設計中,並沒有賬戶概念,那麼如何回答如下問題:

使用者a有多少錢?

utxo的答案是,看多少筆交易給了a錢並且a沒有花費掉,a就有多少錢。

以某個人為例,每一筆交易有n個輸出,每個輸出都包括如下資訊

address,//給誰

assetid,//什麼資產

value,//多少

找出所有 交易輸出位址為a的並且沒有花費的交易,即可回答使用者a有多少錢。

花費與未花費

花費是什麼概念,每乙個transaction output都猶如現實中的一張紙幣,他只有兩種狀態,屬於你或者不屬於你。

未花費就是該張紙幣屬於你,已花費就是該張紙幣不屬於你。

以某個人為例,每一筆交易有n個輸入,每個輸入都包括如下資訊

txid,//該輸入是哪一筆交易的輸出

n,//該輸入是上述交易的第幾個輸出

txid 和 n 可以對應到相應的交易輸出上,只要有txid 和 n 對應到交易輸出上。 該交易輸出稱為已花費交易輸出

沒有txid 和 n 對應到的交易輸出,稱為未花費交易輸出

聰明如你一定發現了,是不是如紙幣一樣只能花一次呢,是的。

你一定也發現了,現實中經常有找零的問題,utxo的花費是否也存在找零問題呢,是的

找零

每個utxo 都是一次性的,當使用者a給使用者b轉賬時,一定會碰到想轉的數額和自己的utxo數值不匹配的問題。

此時採用的方法是,用多個輸出,有一些輸出還給自己,例如:

輸入(from x gas:10)

輸出[0](to y gas:2)

輸出[1](to x gas:8)

這個機制稱為找零,其實並不只是找零,如果用兜裡一把零碎utxo去轉賬,反而是找回乙個整的。

輸入輸出都是由客戶端自行決定的。 可以在一筆交易中產生大量的輸出找給自己。

簡單理解位元幣中UTXO模型

假設每個區塊中只打包一筆交易,有四個區塊,四個交易 1.區塊1為創世區塊,假設該區塊的交易雜湊值為111,input輸入的三個引數分別是空的位元組陣列,1,空字串。創世區塊中給zhongbencong轉賬50個幣。2.接下來區塊2中要發生一筆交易 zhongbencong給xiaoming轉賬10個...

位元幣UTXO交易模型

因為位元幣網路有個天然的問題 分叉問題,總是可能出現多個位元幣礦工挖出合法區塊,然後在鏈上產生分叉。在這個時候位元幣有一條規則 多條分叉鏈出現時,最長鏈 積累工作量最多的鏈 是有效的。如果你挖出一條比現有的誠實鏈更長的攻擊鏈,那大家就會承認你的攻擊鏈是有效的,誠實鏈會被作廢。這個時候就會產生雙花問題...

區塊鏈 位元幣的賬戶模型 UTXO

在位元幣中,是不存在乙個中心化的機構對位元幣的交易進行結算清算的,自然也就沒有中心化的資料庫對使用者的賬戶進行管理。事實上,在位元幣系統中是沒有賬戶這個概念的,取而代之的是utxo unspent transaction output 即未消費的交易輸出。這是中本聰的乙個極其天才的設計。通過utxo...