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

作者:何巖枫攀,禁止轉載蛀缝。

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結構來表示交易模型



從此之后我們的賬本中的每一條記錄咆贬,都是這樣的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)造比特幣9:萬物皆交易

相關文章:

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

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

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

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

重新創(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)系作者
  • 序言:七十年代末鸿市,一起剝皮案震驚了整個濱河市锯梁,隨后出現(xiàn)的幾起案子即碗,更是在濱河造成了極大的恐慌,老刑警劉巖陌凳,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剥懒,死亡現(xiàn)場離奇詭異,居然都是意外死亡合敦,警方通過查閱死者的電腦和手機初橘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來充岛,“玉大人保檐,你說我怎么就攤上這事〈薰#” “怎么了展东?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炒俱。 經常有香客問我盐肃,道長,這世上最難降的妖魔是什么权悟? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任砸王,我火速辦了婚禮,結果婚禮上峦阁,老公的妹妹穿的比我還像新娘谦铃。我一直安慰自己,他們只是感情好榔昔,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布驹闰。 她就那樣靜靜地躺著,像睡著了一般撒会。 火紅的嫁衣襯著肌膚如雪嘹朗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天诵肛,我揣著相機與錄音屹培,去河邊找鬼。 笑死怔檩,一個胖子當著我的面吹牛褪秀,可吹牛的內容都是我干的。 我是一名探鬼主播薛训,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼媒吗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乙埃?” 一聲冷哼從身側響起闸英,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锯岖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后自阱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚎莉,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡米酬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年沛豌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赃额。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡加派,死狀恐怖,靈堂內的尸體忽然破棺而出跳芳,到底是詐尸還是另有隱情芍锦,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布飞盆,位于F島的核電站娄琉,受9級特大地震影響,放射性物質發(fā)生泄漏吓歇。R本人自食惡果不足惜孽水,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望城看。 院中可真熱鬧女气,春花似錦、人聲如沸测柠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轰胁。三九已至谒主,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赃阀,已是汗流浹背瘩将。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凹耙,地道東北人姿现。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像肖抱,于是被迫代替她去往敵國和親备典。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355