CSDN社群十問十答(區塊鏈第一期)

CSDN學院發表於2019-06-14

過去的一週,我們從CSDN 區塊鏈社群中,整理了小夥伴們提問較多的問題,並請技術達人對這些問題進行了回答,現整理如下。歡迎大家在社群中積極提問哦,積極提問的小夥伴還將獲得CSDN提供的神祕紀念禮品哦!

問題1、比特幣/區塊鏈 中的“小於目標hash值 該區塊有效”, 該怎麼理解呢?    
沒有什麼特別含義,就是人為規定的而已。既然不是所有hash都有效,你總要規定一個範圍,哪一個範圍內的hash有效,你可以規定說小於目標hash的有效,也可以規定說大於目標hash的有效,但是中本聰規定了說以小於目標hash有效,那麼大家就這麼約定俗成的下來了。你完全可以發明自己的比特幣,偏就要以大於目標hash才有效,也可以,只要有人願意陪著你這麼玩就行。

問題2、"在比特幣裡面,區塊鏈的共識機制用了 POW,需要六個區塊的最長鏈選擇確認過程。
假設現在可探測的全節點數量是 10000 個,如果有人惡意接入 20000 個全節點,並且不遵循六個區塊的最長鏈選擇規範,這樣對這條鏈會產生什麼影響麼?"    

"我的想法相當於是一套區別於原鏈的共識機制,並且不相容原鏈
其實這就是所謂的 硬分叉、山寨幣
即使你的節點數量多於正規節點,但你不會被同樣遵循官方共識機制的人所認可,不被認可的分支,即使你數量再多,也沒有存在的意義"


問題3、區塊鏈共識要求所有礦工對要寫入的節點進行驗證,並且所有礦工都確認之後才能寫入鏈中,那麼如何讓所有礦工知道是“所有”呢?難道每個節點之間是完全互相連線的麼?    
最終一致性和強一致性的區別。類似Paxos、Raft、PBFT都是在提交時就已經保證了Safety。公鏈採用的共識演算法,節點會把通過驗證的當前最長鏈看作主鏈,如果探測到更長的鏈,則切換過去,從概率上最終保證一致性。

問題4、當有新礦工加入鏈中,如何讓全網的礦工更新這個“所有”的資訊呢,並且讓新節點知道“全網”的資訊呢?    
公鏈節點可以隨時加入、退出,共識達成不需要節點互動達成強一致,網路層的路由資訊由類似DHT的表來維護;而執行PBFT等演算法的聯盟鏈必須提前知道節點數量(節點變更會執行檢視切換協議,但很複雜)

問題5、誰能用通俗易懂的言語解釋一下區塊鏈中的節點和區塊的意思啊 。

 “節點”(Nodes)對應於一臺執行區塊鏈程式的電腦,“區塊”(Block)是區塊鏈賬本(資料庫)的一個單元。

問題6、如何用JavaScript實現區塊鏈?
"一個適合新手的以太坊DApp開發教程:
http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=20180321sf"

問題7、智慧合約中的變數讀取時需要遍歷整個區塊鏈中的相關交易嗎?    
可以看一下這個,https://medium.com/aigang-network/how-to-read-ethereum-contract-storage-44252c8af925

問題8、如何獲取區塊鏈上的所有資料?
以ETH為例,克隆這個倉庫:https://github.com/ethereum/go-ethereum,然後本地跑ETH節點,同步完你所有資料都有了。

問題9、區塊鏈eos建立了錢包,但是wallet list並沒有錢包的存在?    
cleos wallet import <your key>

問題10、智慧合約中的變數讀取時需要遍歷整個區塊鏈中的相關交易嗎?    
不需要,合約本質是一個賬戶,以太坊的賬戶體系中是可以儲存資料的,沒增加一個區塊,有些賬戶的資料就變動了,如果合約被呼叫,資料變動了,其實在區塊上鍊後,也就是新的資料了。

歡迎大家掃碼進群交流哦!我們還將每週分享技術學習資源+每月推出技術主題月活動+群主、技術達人線上答疑互動!

相關文章