帶你玩轉區塊鏈--區塊鏈面試問題及答案-第四章【總結篇】

一、意義:

        通過區塊鏈部分面試問題的總結,我們不僅僅能複習區塊鏈相關的知識,還能更好的擁抱瞭解區塊鏈在市場中的詳細應用。廢話不多說,開幹,歐力給!!

二、內容

ps:問題的答案是我自己寫的,可能闡述的不到位,有心人,可幫忙回答,在評論區留言。我會及時修改過來。

1.區塊鏈是何如構成的?

區塊鏈是由區塊頭和區塊體構成。
區塊頭中存放了 版本號、上一級哈希,梅克爾根,當前哈希,時間戳,挖礦難度值,以及一個常數nonce,其中上一級哈希,當前哈希時間戳沒有什麼可說的,而梅克爾根是用來防止數據篡改的,nonce就是pow中要求出的那個值。

區塊體中 就是存在各種交易數據的

2.比特幣是如何防止篡改的?

說道比特幣防篡改,就要談一談梅克爾根了。梅克爾根在區塊頭中是一個常量hash、
因爲梅克爾根 是由交易+簽名後兩兩做哈希,得到值,此值再次與其他兩兩做hash的值做hash運算,最終得到一個樹狀結構。樹狀結構最終的這個hash值 就是梅克爾根。由於梅克爾根與交易數據有上述關係,所以一旦交易數據被篡改,梅克爾根的值就會發生變化。而梅克爾根變化後,就會被全節點發現,一旦區塊值對應不上,就會被剔除。所以想修改比特幣數據,只能通過修改超過51%的區塊節點,但這種代價是十分大的,幾乎可以說是不可能,因爲就形成了比特幣難篡改的特性

3.pow是如何實現的?

所謂的pow就是工作量證明。
在工作量證明中,需要礦機端計算出一個值與難度值進行比較,若此哈希值小於難度值,則代表挖礦成功,此時該值就是區塊頭中的nonce,若大於則將nonce ++,繼續循環。
該值是通過區塊頭中,前哈希,當前哈希,時間戳,等數據進行數據拼接,再進行hash256運算後進行bit.int賦值得到一個big.int值。

4.比特幣之間是怎麼通信的?

比特幣是基於p2p進行網絡通信的,舉一個新節點加入的例子。
首先比特幣源碼中會寫死一些DNS 種子地址,通過這些地址可以獲取到其他節點的IP和端口,同時DNS Seeds也會記錄你的IP和端口
新節點加入時,會向該全節點ip發送一個version握手協議,全節點通過version檢測版本號和區塊高度。
若不一致,則返回一個結果給新節點,新節點就會通過全節點提供的地址下載區塊。這個過程是提供了很多下載地址的。
若一致,新節點則會將自己IP信息等發送給全節點 通過全節點進行廣播,這樣整個區塊中就會發現有新的節點,同理該節點也會收到其他其他節點的信息,從而到達區塊同步。

5.如何對於避免過度依賴DNS seeds(過度依賴全節點的解決方案)?

可以參考BitcoinJs的方法 ,每次都會使用不同的DNS seed取獲取當前運行的節點。

6.比特幣錢包是何如生成的?

7.UTXO是什麼?比特幣是何如實現交易和雙花問題的?

先喫飯~~~等會寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章