主頁 > 區塊鏈 > 區塊鏈到底是啥?一個故事告訴你位元幣的原理及運作機制

區塊鏈到底是啥?一個故事告訴你位元幣的原理及運作機制

2020-09-11 10:05:59 區塊鏈

一個故事告訴你位元幣的原理及運作機制
推薦:
《人工智能:法國浪漫之都的人工智能時代》
《 花非花,物非物,AI豈是池中物(人工智能篇)》
《致我們的青春,一個敬禮》

圖片可能丟失,建議【原文閱讀】

周末花時間看了一些位元幣原理相關的資料,雖然不敢說把每個細節都完全搞懂了,不過整體思路和關鍵部分的主要原理還是比較明白,寫一篇文章分享給大家,這篇文章的定位會比較科普,盡量用類比的方法將位元幣的基本原理講出來,這篇文章不會涉及演算法和協議中比較細節的部分,打算后面會再寫一篇程式員視角下的位元幣原理,那里會從技術人員的視角對位元幣系統中較為關鍵的資料結構、演算法和協議進行一些講解,

在這篇文章中我會給出一個虛擬的村莊叫“位元村”,整個文章會以講故事的方式,逐步告訴大家位元幣提出的動機、解決了什么問題以及一些關鍵組件的目標和設計方案,

問題的提出
我們先從位元幣產生的動機開始,

以物易物的位元村
話說在這個世界上,有一個叫位元村的小村莊,村莊共有幾百戶人家,這個村莊幾乎與世隔絕,過著自給自足的生活,由于沒有大規模貿易,位元村村民一直過著以物易物的生活,也就是說村民之間并沒有使用統一的貨幣,互相間的貿易基本上就是老張家拿一袋面粉換老李家一只羊,王大嫂拿一筐野果換劉大嬸兩尺布,村民們一直就這么純樸的生活著,

實物貨幣
終于有一天,村民覺得一直這樣以物易物實在太不方便了,于是村子全員開會,討論如何解決這個問題,有人提議,以便于分割且稀有的東西,例如黃金,作為一般等價物,把其它物品和黃金的對應關系編成一張表格,例如一克黃金對應一只羊,一克黃金對應一袋面粉等等,此時老張再也不用扛著一袋面粉氣喘吁吁的去老李家換羊了,他只要從家里摸出一克金子,就可以去老李家牽回一只羊,而老李拿著這一克黃金可以從任何愿意出讓面粉的人那里換回一袋面粉,當然也可以換取任何和一克黃金等值的物品,

此時位元村進入了實物貨幣時代,

符號貨幣
好景不長,過了一段時間,實物貨幣的弊端也出現了,因為位元村附近金礦并不多,開采和冶煉金子太費時費力了,而隨著使用,金子總是不斷會因為磨損、丟失或有人故意囤積而發生損耗,全村人又一次坐在了一起,開始商討對策,此時有人說,其實大家也不必一定要真的用黃金啊,隨便找張紙,寫上“一克黃金”,只要全村人都認同這張紙就等于一克黃金,問題不就解決了,其他人紛紛表示認同,但同時也有了新的問題:真實的黃金是需要開采和冶煉的,金礦有限,開采和冶煉也需要成本,所以沒有人可以短期憑空制造大量的黃金,可寫字就不同了,只要我紙夠筆夠,隨便像寫多少寫多少,那這就變成拼誰家里紙多了,搞不好到時一萬張紙才能換一只羊(實際上這就發生了經濟學上的通貨膨脹),

大家一想也是啊,不過此時又有人提出了解決方案:這個紙不是誰寫都有效,我們只認村里德高望重的老村長寫得,大家都認識老村長的字,老村長寫一些紙,同時按照各家黃金存量發給大家等量的紙,例如老張家有二百克黃金,老村長就發給老張二百張寫著“一克黃金”的紙,同時將老張家的黃金拿走作為抵押,就這樣,老村長將村里所有黃金收歸到自己的家里,并按各家上交的黃金數量發給等值的寫有字的紙,此時村民就可以拿著這些紙當黃金進行貿易了,而且大家都認得老村長的字,其他人偽造不出來,另外,如果誰的紙磨損太嚴重,也可拿到老村長那里兌換新的等值的紙,另外老村長承諾任何人如果想要換成真黃金,只要拿紙回來,老村長就會把等值的黃金還給那人,因為老村長寫得紙的黃金量和真實放在家里的黃金量是一樣的,所以只要嚴格按照銷毀多少紙新寫多少紙的原則,每一張有效的紙總能換回相應的真黃金,

此時,位元村進入了符號貨幣(紙幣)時代,而老村長就承擔了政府和銀行的角色,

中央系統虛擬貨幣
又過了幾年,老村長由于每天都要核對大量的舊紙幣,寫新的紙幣,還要把各種賬目仔細做好記錄,一來二去,老村長操勞過度不幸駕鶴西去了,

位元村再次召開全體大會,討論應該怎么辦,此時老村長的兒子二狗子自告奮勇接過了父親的筆,承擔起貨幣發行的責任,這個年輕的村長二狗子很聰明,他做了幾天,發現好像也不用真的寫那么多紙,完全可以這樣:村民把紙幣都交上來,銷毀,但是二狗子會記錄下每戶上交的紙幣數量,以后如果要進行付錢,例如老張要拿一克金子向老李換一只羊,就一起給二狗子打個電話,說明要將老張名下的一克金子劃歸老李名下,二狗子拿出賬本,看看老張名下是否有一克金子,如果有就在老張的名下減掉一克,在老李的名下加上一克,這樣就完成了支付,此時老李在電話中聽到二狗子確認轉賬完成,就可以放心讓老張把羊牽走了,

此時位元村進入了中央系統虛擬貨幣時代,每個村民都不需要用實物支付,支付程序變成了二狗子那邊維護的賬本上數字的變更,

分布式虛擬貨幣
這新上任的二狗子是聰明,不過這人有時候是聰明反被聰明誤,有一天二狗子盯著這賬本,心想這全村各戶誰有多少錢就是我說的算,那我豈不是……,于是他頭腦一熱,私自從老張帳下劃了十克金子到自己名下,

本以為天衣無縫,但沒想到老張也有記賬的習慣,有一天他正要付錢卻被二狗子告知賬戶沒錢了,老張核對了一下自己的賬本,明明還有十克啊,于是拿著賬本去找二狗子理論,這一核對發現了那筆未經老張同意的轉賬,

東窗事發!位元村炸開鍋了,二狗子被彈劾是不可避免了,不過通過這件事,大家發現了賬本集中在一個人手里的弊端:

這個體系完全依賴于賬本持有人的個人信用,如果這個人不守規矩,隨意篡改賬本,那么整個貨幣系統就會崩潰
如果這個人家里失火或者賬本失竊,同樣也會為整個體系帶來毀滅性的打擊
正當人們不知所措時,村里一個叫中本聰的宅男科學家走上了臺,告訴大家他已經設計了一套不依賴任何中央處理人的叫位元幣的虛擬貨幣系統,可以解決上述問題,然后他緩緩講述了自己的方案,

下面我們就來看看中本聰同學是如何設計這套系統的,

基礎設施搭建
賬簿公開機制
中本聰首先說明,要對現有賬簿進行如下改造:

賬簿上不再記載每戶村民的余額,而只記載每一筆交易,即記載每一筆交易的付款人、收款人和付款金額,只要賬簿的初始狀態確定,每一筆交易記錄可靠并有時序,當前每個人持有多少錢是可以推算出來的,
賬簿由私有改為公開,只要任何村民需要,都可以獲得當前完整的賬簿,賬簿上記錄了從賬簿創建開始到當前所有的交易記錄,
此言一出,下面立刻炸鍋了,第一潭訓無所謂,但是第二條簡直無法接受,因為賬簿可是記錄了所有村民的交易,這樣大家的隱私不全暴露了嗎,

中本聰倒是不慌不忙,拿出了一對奇怪的東西,

身份與簽名機制(公鑰加密系統)
中本聰說,大家不要慌,在他的這套機制下,任何人都不使用真實身份交易,而是使用一個唯一的代號交易,

他展示了手里神奇的東西,說這兩件東西分別叫保密印章和印章掃描器,后面他會給村里每一戶發一個保密印章和一個印章掃描器,兩者的作用如下:

保密印章可以在紙上蓋一個章,每個印章蓋出的章都隱含了一個全村唯一的一串字符,但是憑肉眼是看不出來的,也無法通過觀察來制造出相應的印章,
印章掃描器可以掃描某個已經蓋好的章,讀出隱含的資訊,并在液晶屏上顯示出一串字符,
有了這兩個神奇的東西,大家就可以在不暴露真實身份的情況下進行交易了,而印章隱含的那一串字符就是這戶人家的代號,具體如何巧妙利用保密印章和印章掃描器進行交易,會在下文詳述,

成立虛擬礦工組織(挖礦群體)
下一步,中本聰面向全村招募虛擬礦工,招募要求如下:

礦工以組為單位,一組可以是單獨的一戶,也可以是幾戶聯合為一組
成為礦工不影響正常使用貨幣
礦工每天要花費一定時間從事位元幣“挖礦”活動,但是不同于挖金礦,虛擬礦工不需要拿著工具去野外作業,在家里就可以完成作業
礦工有一定可能性獲得報酬,在挖礦活動中付出的努力越多,獲得報酬的可能性越大
礦工可以隨時退出,也可以隨時有新的礦工加進來
很快,大約有五分之一的村民加入位元幣礦工組織,共分成了7個組,

建立初始賬簿(創世塊)
下面,中本聰宣布,先根據二狗子手里的賬簿,把抵押的所有黃金按賬簿記錄的余額退還給每位村民,然后徹底銷毀這本賬簿,

然后,中本聰拿出一本新賬簿,在賬簿的第一頁上記錄了一些交易記錄,特別的是,這些記錄的付款人一欄全都是“系統”,而收款人分別是每個印章對應的隱含字符,代表初始時刻,系統為每一戶默認分配了一定數量位元幣,但是數量非常少,都只有幾枚,甚至有些不幸的村戶沒有獲得位元幣,

接著中本聰說,由于目前市面上位元幣非常少,大家可以先回到用黃金做貨幣的時代,由于我不是村長,我也沒有權利強迫大家一定要承認位元幣,大家可以自行決定要不要接受位元幣,不過隨著位元幣的流動和礦工的活動,位元幣會慢慢多起來,

支付與交易
做了這么多鋪墊,終于說到重點了,下面說一下在這樣一個體系下如何完成支付,以老張付給老李10個位元幣為例,

付款人簽署交易單
為了支付10個位元幣,老張首先要詢問老李的標識字串,例如是“ABCDEFG”,同時老張也有一個標識字串例如是“HIJKLMN”,然后老張寫一張單子,內容為“HILKLMN支付10位元幣給ABCDEFG”,然后用自己的保密印章改一個章,將這張單子交給老李,另外為了便于追溯這筆錢的來源,還要在單子里注明這筆錢的來源記在哪一頁,例如這個單子里,老張的10位元幣來自建立賬簿時系統的贈送,記錄在賬簿第一頁,

收款人確認單據簽署人
老李拿到這個單子后,需要確認這個單子確實是來自“HIJKLMN”這個人(也就是老張)簽署的,這個并不困難,因為單子上必須有保密章,老李拿出印章掃描器,掃一下章,如果液晶屏顯示出的字符和付款人字符是一致的(這里是“HIJKLMN”),就可以確認單子確實是付款人簽署的,這是因為根據保密印章的機制,沒有其他人可以偽造印章,任何一個人只要掃描一下印章,都可以確認單子的付款人和蓋章人是否一致,

收款人確認付款人余額
這個系統到目前還是很有問題,通過保密印章,收款人雖然可以確認付款人確實簽署了這份單子,但是無法自行確認付款人是否有足夠的余額支付,之前的中央虛擬貨幣系統中,二狗子負責檢查付款人的余額,并通知收款人交易是否有效,現在把二狗子開了,誰來負責記賬和確認每筆交易的有效性呢?

之前說過,中本聰設計的這個系統是分布式貨幣系統,不依賴任何中央人物,所以不會有一個或少數幾個人負責這件事,最終承擔這份作業的是之前所提到的礦工組織,老張、老李和全村其他任何使用位元幣進行交易的村民都依賴礦工組織的作業才能完成交易,

礦工的作業
礦工的作業是整個系統的核心,也是最復雜性最高的地方,下面逐步介紹礦工的作業內容和目的,

礦工的工具
俗話說,工欲善其事,必先利其器,位元幣礦工雖然不用鐵撅、鐵锨和探照燈等工具,不過也要有一些必備的東西,

初始賬簿,每個組首先自己復制一份初始賬簿,初始賬簿只有一頁,記錄了系統的第一次贈送

空賬簿紙,每個小組有若干賬簿紙,每一頁紙上僅有賬簿結構,沒有填內容,具體內容的書寫規則后面講述,下面是一張空賬簿紙的樣子,各個欄位的意義后面會說到

編碼生成器(哈希函式),中本聰又向礦工組織的每個組分發了若干編碼生成器,這個東西很神奇,將一頁賬簿填好內容的賬簿紙放入這個機器,機器會在賬簿紙的“本賬單編號”一欄自動列印一串由“0”和“1”組成的編號,共256個,最神奇的是,編號生成器有如下功能:

生成的編號僅與賬簿紙上填入的內容有關,與填寫人、字體、填寫時間等因素均無關
內容相同的賬簿紙生成的編號總是相同,但是如果內容哪怕只改一個字符,編號就會面目全非
編碼生成器在列印編碼時還需要將所有填入賬簿紙的交易單放入,機器會掃描交易單和填入交易單的一致性,尤其是保密印章,如果發現保密印章和付款人不一致,會拒絕列印編碼
將一張已列印的賬簿紙放入,機器會判定編號是否是有效的機器列印,并且判定編號和內容是否一致,這個編號無法偽造
交易單收件箱,每個礦工小組需要在門口掛一個箱子用于收集交易單, 公告板,每個礦工小組同樣需要一個公告板公示一些資訊,

有了上面的工具,礦工組織就可以開工了!

收集交易單
中本聰規定,每筆交易的發起人,不但要將交易單給到收款人,還要同時復制若干份一模一樣的交易單投遞到每個礦工小組的收件箱里,

礦工小組的人定期到自己的收件箱里把收集到的交易單一并取出來,

填寫賬簿
此時小組的人拿出一張空的賬簿紙,把這些交易填寫到“交易清單”一欄,同時找到當前賬簿最后一頁,將最后一頁的編號抄寫到“上一張賬單編號一欄”, 注意還有個“幸運數字”,可以隨便填上一個數字,如12345,然后,將這樣賬簿紙放入編號生成器,列印好編號,一張賬簿就算完成了,

如果你以為礦工的作業就這么簡單,那就大錯特錯了,中本聰有個變態的規定:只有編號的前10個數均為0,這頁賬簿紙才算有效,

根據之前對編號生成器的描述,要修改編號,只能修改賬簿紙的內容,而“交易清單”和“上一張賬簿紙編號”是不能隨便改的,那么只能改幸運數字了,于是為了生成有效的賬簿紙,小組里的礦工就不斷抄寫賬簿紙,但每張紙的幸運數字都不同,然后不斷的重復將紙放入編碼器,如果生成的編號不符合規定,這張紙就算廢了,重復這個程序直到生成一串有效的編號,

我們知道,如果編號的每一個數字都是隨機的,那么平均寫1000多張幸運數字不同的紙才能獲得一個有效的編號,

這就奇怪了,這些礦工為什么要拼命干這看似無意義的事情呢?還記得之前說過礦工有報酬吧,這就是礦工的動力了,中本聰規定:每一張賬簿紙的交易清單第一條交易為“系統給這個小組支付50個位元幣”,也就是說,如果你生成了一張有意義的賬簿紙,并且被所有挖礦小組接受了,那么就意味著這條交易也被接受了,你的挖礦小組獲得了50個位元幣,

這就是礦工被叫做礦工的原因,也是為什么之前說隨著交易和礦工的活動,位元幣的數量會不斷增多,例如下面是一個挖礦程序,這個小組的公共位元幣帳號為“UVWXYZ”,

在幸運數字嘗試到“533”時,系統生成了一頁有效賬簿,

確認賬簿
當某挖礦小組幸運的生成了一張有意義的賬簿,為了得到獎勵,必須立刻請其它小組確認自己的作業,前面說過,當前村里有7個挖礦組,所以這個小組必須將有效賬簿紙謄抄6份快馬加鞭送到其他6個小組請求確認,

中本聰規定,當某個小組接到其他小組送來的賬簿紙時,必須立即停下手里的挖礦作業進行賬簿確認,

需要確認的資訊有三個:

賬簿的編號有效
賬簿的前一頁賬簿有效
交易清單有效
首先看第一個,這個確認比較簡單,只要將送來的賬簿紙放入編碼生成器進行驗證,如果驗證通過,則編號有效,

第二部分需要將賬簿頁上的“上一頁賬簿紙編號”和這個小組目前保存的有效賬簿最后一頁編號比對,如果相同則確認,如果不同,需要順著已有賬簿向前比對,直到找到這個編號的頁,如果沒有找到指定的“上一頁賬簿紙編號”對應的頁,這個小組會將此頁丟掉,不予確認,

注意,由上面的機制可以保證,如果各個小組手里的賬簿紙是相同的,那么他們都能按同樣的順序裝訂成相同的賬簿,因為后面一張紙的編號總是依賴前面的紙的編號,編碼生成器的機制保證了所有合法賬簿紙的相對先后順序在每個小組那里都是相同的(可能會有分支,但不會出現環,后面細講),

最后是如何確認交易清單有效,其實也就是要確認當前每筆交易的付款人有足夠的余額支付這筆錢,由于交易資訊里包含這筆錢是如何來的,還包含了記錄來源交易的賬單編號,例如,HIJKLMN要給ABCDEFG10個位元幣,并注明了這10個位元幣來自之前OPQRST支付給HIJKLMN的一筆交易,確認時首先要確認之前這筆交易是否存在,同時還要檢查HIJKLMN在這之前沒有將這10個位元幣支付給別人,這一切確認后,這筆交易有效性就被確認了,

其中第一筆是系統獎勵給生成這頁賬簿的小組的50個,這筆交易大家都默認承認,后面的只要按照上述方法追溯,就可以確認HIJKLMN是否當前真有10個位元幣支付給ABCDEFG,

如果完成了所有了上述驗證并全部通過,這個小組就認可了上述賬簿紙有效,然后將這張賬簿紙并入小組的主賬簿,舍棄目前正在進行的作業,后面的挖礦作業會基于這本更新后的主賬本進行,

賬簿確認反饋
對于挖礦小組來說,當賬簿紙送出去后,如果后面有收到其他小組送來的賬簿紙,其“上一頁賬簿紙編號”為自己之前送出去的賬簿紙,那么就表示他們的作業成功被其他小組認可了,因為已經有小組基于他們的賬簿紙繼續作業了,此時,可以粗略的說可以認為已經得到了50個位元幣,

另外,任何一個小組當新生成有效賬簿紙或確認了別的小組的賬簿紙時,就將最新被這個小組承認的交易寫到公告牌上,那么收款人只要發現相關交易被各個小組認可了,基本就可以認為這筆錢已經到了自己的賬上,后面他就可以在付款時將錢的來源指向這筆交易了,

以上就是整個位元幣的支付體系,下面我們來分析一下,這個體系為什么可以作業下去,以及這個體系可能面臨的風險,

作業機制分析
雖然上面闡述了位元幣的基本運作規則,但是村民們還是有不少疑問,所以中本聰同學專門開了個答疑會,解答常見問題,下面總結一下村民最集中關心的問題,

核心問題答疑
如果同時收到兩份合法的賬簿頁怎么辦?
注意在上面的運行機制中,各個挖礦小組是并行作業的,因此完全可能出現這樣的情況:某小組收到兩份不一樣的賬簿頁,它們都基于當前這個小組的主賬簿的最后一頁,并且內容也都完全合法,怎么辦?

關于這個問題,中本聰同學說,小組不應該以線性方式組織賬簿,而應該以樹狀組織賬簿,任何時刻,都以當前最長分支作為主賬簿,但是保留其它分支,舉個例子,某小組同時收到A、B兩份賬簿頁,經核算都是合法的,此時小組應該將兩頁以分叉的形式組織起來,如下圖所示:

黑色表示當前賬簿主干,此時,可以隨便選擇一個頁作為當前主分支,例如選擇A:

此時如果有一個新的賬簿頁是基于A的,那么這個主干就延續下去:

如果這個主干一直這么延續下去,表示大家基本都以A為主干,B就會被遺忘,但是也有可能忽然B變成更長了:

那么我們就需要將B分支作為當前主干,基于這個分支進行后續作業,

從區域來看,雖然在某一時刻各個小組的賬簿主干可能存在不一致,但大方向是一致的,那些偶爾由于不同步產生的小分支,會很快被淹沒在歷史中,

如果挖礦小組有人偽造賬簿怎么辦
關于這個問題,中本聰同學說,只要挖礦組織中大多數人是誠實的,這個系統就可靠,具體分幾個方面給予答復,

首先,基于保密印章機制,沒有人能偽造他人身份進行付款,因為編碼生成器在列印編碼時會核對所有交易單的保密印章,印章和付款人不一致會拒絕列印,

而且誠實的礦工也不會承認不合法的交易(如某筆交易付款方余額不夠),

所以只有一種可能的攻擊行為,即在收款人確認收款后,從另一條分支上建立另外的交易單,取消之前的付款,而將同一筆錢再次付款給另一個人(即所謂的double-spending問題),下面同樣用一個例子說明這個問題,

先假設有一個攻擊者擁有10個位元幣,他準備將這筆錢同時支付給兩名受害者A和B,并都得到承認,

第一步,攻擊者準備從受害者A手里買10位元幣的黃金,他簽署交易單給受害者A,轉10個位元幣給受害者A,

第二步,這筆交易在最新的賬簿頁中被確認,并被各個挖礦小組公告出來,受害人A看到公告,確認位元幣到賬,給了攻擊者10個位元幣等值的黃金,

第三步,攻擊者找到賬簿,從包含剛才交易的賬簿頁的前一頁做出一個分支,生成更多的賬單頁,超過剛才的分支,由于此時剛才攻擊者制造的分支變成了主干分支,而包含受害者A得到錢的分支變成了旁支,因此挖礦組織不再承認剛才的轉賬,受害者A得到的10位元幣被取消了,

第四步,攻擊者可以再次簽署交易單,將同一筆錢支付給受害者B,受害者B確認錢到賬后,支付給攻擊者等值黃金,

至此,攻擊者將10個位元幣花了兩次,從兩名受害者那里各購得等值黃金,攻擊者還可以如法炮制,取消與受害者B的轉賬,將同一筆錢再支付給其他人……

關于這種攻擊,中本聰給出的解決方案是,建議收款人不要在公告掛出時立即確認交易完成,而是應該再看一段時間,等待各個挖礦小組再掛出6張確認賬簿,并且之前的賬簿沒有被取消,才確認錢已到賬,

中本聰解釋道,之前設定變態的編號規則,正是為了防御這一點,根據前面所述,生成有效賬簿頁不是那么簡單的,要花費大量的人力反復試不同的幸運數字,而且程序完全是碰運氣,如果某賬簿頁包含你收到錢的確認,并且在后面又延續了6個,那么攻擊者想要在落后6頁的情況下從另一個分支趕超當前主分支是非常困難的,除非攻擊者擁有非常多的人力,超過其他所有誠實礦工的人力之和,

而且,如果攻擊者有如此多人力,與其花這么大力氣搞這種攻擊,還不如做良民挖礦來的收益大,這就從動機上杜絕了攻擊的形成,

位元幣會一直增加下去,豈不是會嚴重通貨膨脹
中本聰說,這一點我也想到了,前面忘了說了,我給礦工組織的操作細則手冊會說明,剛開始我們協議每生成一頁賬簿,獎勵小組50個位元幣,后面,每當賬簿增加21,000頁,獎勵就減半,例如當達到210,000頁后,每生成一頁賬簿獎勵25個位元幣,420,000頁后,每生成一頁獎勵12.5個,依次類推,等賬簿達到6,930,000頁后,新生成賬簿頁就沒有獎勵了,此時位元幣全量約為21,000,000個,這就是位元幣的總量,所以不會無限增加下去,

沒有獎勵后,就沒人做礦工了,豈不是沒人幫忙確認交易了
到時,礦工的收益會由挖礦所得變為收取手續費,例如,你在轉賬時可以指定其中1%作為手續費支付給生成賬簿頁的小組,各個小組會挑選手續費高的交易單優先確認,

礦工如果越來越多,位元幣生成速度會變快嗎
不會,中本聰解釋,雖然可以任意加入和退出礦工組織,導致礦工人數變化,每個礦工也會拿到一個編碼生成器,不過我已經在編碼生成器中加入了調控機制,當前作業的編碼生成器越多,每個機器的效率就越低,保證新賬簿頁生成速率不變,

雖然每個人的代號是匿名的,但如果泄露了某個人的代號,賬簿又是公開的,豈不是他的所有賬目都查出來了
確實是這樣的,例如你要和某人交易,必然要要到他的代號才能填寫交易單,因為收款人一欄要填入那人的代號,不過中本聰說可以提供無限制的保密印章,建議每一次交易用不同的保密印章,這樣查賬簿就追查不到同一個人的所有賬目了,

答疑完畢,

說明
本文用通俗比喻的方式講解了位元幣的運行機制,有幾點需要說明:

為了便于理解,我做了很多簡化,因此有些機制細節和實際的位元幣可能不完全相同,但總體思想和關鍵原理是一致的,
由于很多計算機世界的東西(如公鑰體系、網路傳輸)在現實世界中并沒有特別好的對等物,所以故事里難免有一些生硬和不合常理的細節,
本文描述的是位元幣網路本身的技術原理和運作機制,當在如Mtgox這種買賣市場中進行位元幣交易時,市場做了中間代理,并不遵從上述機制
參考
Bitcoin: A Peer-to-Peer Electronic Cash System
https://bitcoin.it
易懂的位元幣作業機理詳解

|| 著作權宣告:本文為博主杜錦陽原創文章,轉載請注明出處,


python2048微信公眾號

作者:奧特曼超人Dujinyang

來源:CSDN

原文:dujinyang.blog.csdn.net/

著作權宣告:本文為博主杜錦陽原創文章,轉載請附上博文鏈接!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/5262.html

標籤:區塊鏈

上一篇:《區塊鏈DAPP開發入門、代碼實作、場景應用》筆記5——區塊鏈福利彩票的設計

下一篇:02 什么是去中心化?位元幣是如何實作去中心化的?(非常詳細)轉載

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more