「力場(chǎng) lichang.io」公鏈挖礦第一社區(qū)!
上一篇我們說了高飛幣是有雙重支付問題的,一旦有這個(gè)問題,就不具備貨幣的屬性了,否則天下大亂。為了解決這個(gè)雙重支付的問題,我們今天就來說說另一種加密貨幣,叫財(cái)奴幣(ScroogeCoin)。這個(gè)幣是在高飛幣的基礎(chǔ)上創(chuàng)建的,為了解決雙重支付的問題,所以數(shù)據(jù)結(jié)構(gòu)上會(huì)比高飛幣復(fù)雜一些。
結(jié)構(gòu)
假設(shè)一個(gè)叫財(cái)奴的人,專門負(fù)責(zé)公布所有發(fā)生過交易的歷史記錄的僅增賬目(即這個(gè)賬目上的數(shù)據(jù)只可以增加,不能刪除和修改),這個(gè)僅增賬目的特性就保證了寫入這個(gè)賬目的任何數(shù)據(jù)都將被永久的保留下來。這樣就可以所有的交易在被接收錢都寫入賬目,然后利用這個(gè)特性來防止雙重支付的發(fā)生。因?yàn)槿绻暗膸乓呀?jīng)轉(zhuǎn)給了另外一個(gè)擁有者,那么大家都可以在這個(gè)賬目上看到。
為執(zhí)行這個(gè)僅增功能,財(cái)奴可以建立一個(gè)區(qū)塊鏈,對(duì)于區(qū)塊鏈,財(cái)奴要進(jìn)行數(shù)字簽名,因此,這就形成了一系列數(shù)據(jù)區(qū)塊,每個(gè)數(shù)據(jù)區(qū)塊都包含一次交易,每個(gè)區(qū)塊包含交易的ID、交易的內(nèi)容,以及上一個(gè)區(qū)塊的哈希指針。財(cái)奴數(shù)字簽名是針對(duì)最后一個(gè)哈希指針(它約束整個(gè)結(jié)構(gòu)中所有的數(shù)據(jù)),并將簽名與區(qū)塊鏈一起發(fā)布。

在財(cái)奴幣中,只有在由財(cái)奴簽名的區(qū)塊鏈的交易才有效。任何人都可以通過檢驗(yàn)財(cái)奴在區(qū)塊中的簽名來驗(yàn)證交易是否經(jīng)過財(cái)奴的認(rèn)可,財(cái)奴會(huì)確保不會(huì)認(rèn)可企圖雙重支付的交易。
為什么除了讓財(cái)奴簽署每個(gè)區(qū)塊,我們還需要一個(gè)帶哈希指針的區(qū)塊鏈?這樣做是保證僅增特性。因?yàn)樨?cái)奴有可能試圖增加或移除交易記錄,或者改變已有交易,而一旦有了哈希指針,將會(huì)影響到后面所有的區(qū)塊。只要有人監(jiān)督財(cái)奴發(fā)布的最新哈希指針,如果有變化,就可以被輕易發(fā)現(xiàn)。在一個(gè)財(cái)奴分別簽署不同區(qū)塊的系統(tǒng)中,你需要記錄他簽署的每一個(gè)簽名。就這樣,所有的用戶可以輕易驗(yàn)證他們確實(shí)觀察到了同樣的,由財(cái)奴簽署的交易記錄。
交易
財(cái)奴幣中有兩種交易。第一種是造幣(CreateCoins),類似于在高飛幣中,高飛可以創(chuàng)建新幣的程序,而財(cái)奴將其進(jìn)行了擴(kuò)展,那就是可以在一次交易中創(chuàng)建多個(gè)幣。造幣交易如果是由財(cái)奴簽署,從定義上說它總是有效的。我們不會(huì)擔(dān)心財(cái)奴什么時(shí)候有權(quán)創(chuàng)建新幣或者可以創(chuàng)建多少,正如我們不擔(dān)心在高飛幣中,高飛可以創(chuàng)建新幣那樣。
第二種交易是付幣(PayCoins)。這一交易會(huì)消耗幣,就是說先銷毀它們,然后創(chuàng)建數(shù)量相同的新幣。新幣可能屬于不同的人(公鑰),這一交易必須由每一個(gè)支付該幣的人來進(jìn)行簽署。因此,如果你是本次交易中將會(huì)消耗的某只幣的所有人,那么你就需要數(shù)字簽署該交易,表明你同意花掉這只幣。