作者:何巖枫攀,禁止轉載蛀缝。
1.重構交易模型
中本聰在腦中,模擬運行著UTXO的設計:“現(xiàn)在的設計應該沒有大的缺陷了橄抹,可以進入交易模型的設計啦”。
Gilfoyle:“UTXO的確優(yōu)雅惕味,交易模型的改動會很大”
所謂交易模型的設計楼誓,就是說,通過重新構建交易模型名挥,來承載UTXO機制疟羹。
新的交易模型,分為四個部分:
1.TXID:交易的Hash值(關于Hash是什么,后續(xù)會詳細介紹榄融,現(xiàn)在可以簡單理解為:任何數(shù)據(jù)作為參數(shù)参淫,輸入到hash函數(shù)中,都會生成一個固定長度愧杯,并且唯一字符串黄刚,即, Hash值=FuncHash(m)民效。)
2.IN部分:本交易引用的所有UTXO
3.OUT部分:本交易生成的所有UTXO
4.ScriptSIG部分:本交易的簽名腳本:數(shù)字簽名(密文)+付款者公鑰(明文)
解釋一下:
TXID:計算交易數(shù)據(jù)的Hash值:TXID=FuncHash(TX)
IN中引用的每一條UTXO的字段:TXID憔维、VOUT(VOUT是本UTXO其所在的TX的OUT中的排序號)
OUT中每條新生成的UTXO的字段:排序號,收款者公鑰畏邢,金額
數(shù)字簽名密文:加密交易的TXID生成的密文:數(shù)字簽名=FunSig(付款者私鑰, TXID)
ScriptSIG部分:數(shù)字簽名密文+付款者公鑰(明文)业扒,這兩個部分用逗號拼接。
例如這樣的場景: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的數(shù)字簽名+Alice的公鑰(見下圖)
用JSON結構來表示交易模型:(見下圖)
從此之后我們的賬本中的每一條記錄咆贬,都是這樣的JSON格式的數(shù)據(jù):
2.重構程序部分
服務端的程序也需要重構败徊。
2.1服務端的重構
服務端的主要功能:
1.解析消息:解析客戶端發(fā)來的交易消息請求。
2.驗證交易:包括掏缎,驗證UTXO皱蹦,驗證ScriptSig,驗證額度
? ? 2.1驗證UTXO:驗證交易引用的UTXO是否可用眷蜈。
? ? 2.2驗證ScriptSig:驗證簽名腳本沪哺,解密簽名,得到TXID酌儒,驗證TXID是否合法辜妓。
? ? 2.3驗證額度:驗證交易中IN的額度是否,大于等于忌怎,OUT中的額度籍滴。
3.交易寫入:將交易數(shù)據(jù)寫入賬本transaction.txt
4.UTXO查詢:根據(jù)公鑰,查詢對應的可用UTXO列表(用于支持客戶端計算余額的時候呆躲,發(fā)起的查詢UTXO請求)异逐。
(見下圖)
2.2客戶端的重構
當然捶索,客戶端的程序也要重構插掂,主要功能包括:
1.導入私鑰:用戶可以直接導入自己自己保存的私鑰。
2.創(chuàng)建私鑰:用戶也可以通過客戶端的算法運行生成私鑰。
3.生成公鑰:根據(jù)私鑰生成公鑰
4.余額查詢:調用服務端提供的辅甥,UTXO查詢服務酝润,求和得到余額
5.創(chuàng)建交易
? ? 5.1生成IN部分:調用服務端的UTXO查詢服務,構建可引用的UTXO
? ? 5.2生成OUT部分:生成新的UTXO
? ? 5.3生成TXID:計算交易數(shù)據(jù)的hash值
? ? 5.4生成ScriptSig:加密TXID得到簽名和公鑰明文
6.消息發(fā)送:將交易數(shù)據(jù)放入消息璃弄,請求服務端要销。
(見下圖)
這里要提醒一下,所謂的客戶端的程序夏块,雖然是運行在瀏覽器中疏咐,但是程序的代碼的來源,是來自于服務端脐供,瀏覽器訪問bitcoin.org就是在請求代碼浑塞,然后將代碼緩存在瀏覽器里,等待后面的運行政己。
由于服務端實質上酌壕,控制著客戶端代碼的變更,所以這種設計模式歇由,還是不夠自由公平卵牍。因為我們無法防止服務端的維護人員作惡,例如私自改動客戶端的代碼沦泌。
如何降低客戶端對服務端的依賴糊昙,這個是一個大問題,我們留給中本聰后面再去解決吧谢谦。
經過數(shù)據(jù)部分和程序部分的重構溅蛉,加入了UTXO機制的新版本,已經設計完畢他宛。
3.后記
UTXO的重構已經完成船侧,但是中本聰不禁會想,交易模型是否還有進化的空間厅各?
難道交易只是轉賬嗎镜撩?交易能否抽象成函數(shù)?
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ū)塊鏈和世界新貨幣。