重新創(chuàng)造比特幣8:基于UTXO的系統(tǒng)重構

作者:何巖,禁止轉載。

1.重構交易模型

中本聰在腦中,模擬運行著UTXO的設計:“現(xiàn)在的設計應該沒有大的缺陷了,可以進入交易模型的設計啦”。

Gilfoyle:“UTXO的確優(yōu)雅,交易模型的改動會很大”

所謂交易模型的設計,就是說,通過重新構建交易模型,來承載UTXO機制。

新的交易模型,分為四個部分:

1.TXID:交易的Hash值(關于Hash是什么,后續(xù)會詳細介紹,現(xiàn)在可以簡單理解為:任何數據作為參數,輸入到hash函數中,都會生成一個固定長度,并且唯一字符串,即, Hash值=FuncHash(m)。)

2.IN部分:本交易引用的所有UTXO

3.OUT部分:本交易生成的所有UTXO

4.ScriptSIG部分:本交易的簽名腳本:數字簽名(密文)+付款者公鑰(明文)


解釋一下:

TXID:計算交易數據的Hash值:TXID=FuncHash(TX)

IN中引用的每一條UTXO的字段:TXID、VOUT(VOUT是本UTXO其所在的TX的OUT中的排序號)

OUT中每條新生成的UTXO的字段:排序號,收款者公鑰,金額

數字簽名密文:加密交易的TXID生成的密文:數字簽名=FunSig(付款者私鑰, TXID)

ScriptSIG部分:數字簽名密文+付款者公鑰(明文),這兩個部分用逗號拼接。


例如這樣的場景:Alice要轉賬3.5個Bitcoin給Bob。

Alice的瀏覽器需要創(chuàng)建交易,包括4個部分:

1.IN:引用了2條屬于自己的UXTO。

2.OUT:創(chuàng)建2條新的UXTO,一條UTXO屬于Bob,另一條UTXO屬于自己的找零。

3.TXID:生成當前交易的Hash值:TXID=FuncHash(TX)

4.ScriptSIG:Alice的數字簽名+Alice的公鑰(見下圖)


重構后的交易模型

用JSON結構來表示交易模型:(見下圖)


JSON結構來表示交易模型



從此之后我們的賬本中的每一條記錄,都是這樣的JSON格式的數據:


重構后的賬本

2.重構程序部分

服務端的程序也需要重構。

2.1服務端的重構

服務端的主要功能:

1.解析消息:解析客戶端發(fā)來的交易消息請求。

2.驗證交易:包括,驗證UTXO,驗證ScriptSig,驗證額度

? ? 2.1驗證UTXO:驗證交易引用的UTXO是否可用。

? ? 2.2驗證ScriptSig:驗證簽名腳本,解密簽名,得到TXID,驗證TXID是否合法。

? ? 2.3驗證額度:驗證交易中IN的額度是否,大于等于,OUT中的額度。

3.交易寫入:將交易數據寫入賬本transaction.txt

4.UTXO查詢:根據公鑰,查詢對應的可用UTXO列表(用于支持客戶端計算余額的時候,發(fā)起的查詢UTXO請求)。

(見下圖)


重構后的服務端程序部分

2.2客戶端的重構

當然,客戶端的程序也要重構,主要功能包括:

1.導入私鑰:用戶可以直接導入自己自己保存的私鑰。

2.創(chuàng)建私鑰:用戶也可以通過客戶端的算法運行生成私鑰。

3.生成公鑰:根據私鑰生成公鑰

4.余額查詢:調用服務端提供的,UTXO查詢服務,求和得到余額

5.創(chuàng)建交易

? ? 5.1生成IN部分:調用服務端的UTXO查詢服務,構建可引用的UTXO

? ? 5.2生成OUT部分:生成新的UTXO

? ? 5.3生成TXID:計算交易數據的hash值

? ? 5.4生成ScriptSig:加密TXID得到簽名和公鑰明文

6.消息發(fā)送:將交易數據放入消息,請求服務端。

(見下圖)


重構后的客戶端程序部分

這里要提醒一下,所謂的客戶端的程序,雖然是運行在瀏覽器中,但是程序的代碼的來源,是來自于服務端,瀏覽器訪問bitcoin.org就是在請求代碼,然后將代碼緩存在瀏覽器里,等待后面的運行。

由于服務端實質上,控制著客戶端代碼的變更,所以這種設計模式,還是不夠自由公平。因為我們無法防止服務端的維護人員作惡,例如私自改動客戶端的代碼。

如何降低客戶端對服務端的依賴,這個是一個大問題,我們留給中本聰后面再去解決吧。

經過數據部分和程序部分的重構,加入了UTXO機制的新版本,已經設計完畢。

3.后記

UTXO的重構已經完成,但是中本聰不禁會想,交易模型是否還有進化的空間?

難道交易只是轉賬嗎?交易能否抽象成函數?


BSV打賞地址:1BudFu186jzdP9CBJTTPGsdbSJinbzzCyB

下一篇:重新創(chuàng)造比特幣9:萬物皆交易

相關文章:

重新創(chuàng)造比特幣1:從一個簡單的web交易系統(tǒng)開始

重新創(chuàng)造比特幣2:第一個版本上線啦

重新創(chuàng)造比特幣3:舍棄賬戶模型,讓交易更自由

重新創(chuàng)造比特幣4:數字簽名

重新創(chuàng)造比特幣5:公鑰和私鑰

重新創(chuàng)造比特幣6:第二個版本上線啦

重新創(chuàng)造比特幣7:UTXO

重新創(chuàng)造比特幣8:基于UTXO的系統(tǒng)重構

重新創(chuàng)造比特幣9:萬物皆交易

重新創(chuàng)造比特幣10:交易腳本

重新創(chuàng)造比特幣11:群系統(tǒng)(上)

重新創(chuàng)造比特幣12:群系統(tǒng)(下)

重新創(chuàng)造比特幣13:P2P網絡

重新創(chuàng)造比特幣14:交易的同步

重新創(chuàng)造比特幣15:賬本的同步

重新創(chuàng)造比特幣16:Block Chain

重新創(chuàng)造比特幣17:網絡的彈性

重新創(chuàng)造比特幣18:工作量證明(上)

重新創(chuàng)造比特幣19:工作量證明(下)

重新創(chuàng)造比特幣20:分叉之重組與分裂

比特幣SV(Bitcoin satoshi vision,BSV)是目前唯一一個遵循中本聰原始白皮書,遵循中本聰原始協(xié)議和設計的比特幣。BSV是唯一的公共區(qū)塊鏈,維持比特幣的原始愿景,并將大規(guī)模擴容成為企業(yè)級區(qū)塊鏈和世界新貨幣。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容