作者:何巖,禁止轉載。
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格式的數據:

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)造比特幣1:從一個簡單的web交易系統(tǒng)開始
重新創(chuàng)造比特幣3:舍棄賬戶模型,讓交易更自由
重新創(chuàng)造比特幣8:基于UTXO的系統(tǒng)重構
重新創(chuàng)造比特幣11:群系統(tǒng)(上)
重新創(chuàng)造比特幣12:群系統(tǒng)(下)
比特幣SV(Bitcoin satoshi vision,BSV)是目前唯一一個遵循中本聰原始白皮書,遵循中本聰原始協(xié)議和設計的比特幣。BSV是唯一的公共區(qū)塊鏈,維持比特幣的原始愿景,并將大規(guī)模擴容成為企業(yè)級區(qū)塊鏈和世界新貨幣。