搞NFT的還是懂下原理(區塊鏈)
前言
我印象中,大家對挖礦、比特幣很熟悉,對區塊鏈技術體感并不強,直到16年國家規劃十三五計劃時,中央人民政府網上發布了《國務院關于印發“十三五”國家信息化規劃的通知》,該文件是“十三五”國家規劃體系的重要組成部分。規劃中首次提及區塊鏈,并將其認定為重點加強的戰略性前沿技術。
從此國內各種搞區塊鏈的潮流,有正規軍,也有各種“妖魔鬼怪”,只要是跟區塊鏈沾邊的都能夠飛起來,不是有句話么,“站在風口,豬都能夠飛起來”。
直到近期,因為新規劃“碳中和 碳達峰”,國內各種挖礦的礦機、礦池被關閉,那國家是在打壓區塊鏈技術了么?我想不是的,由數字人民幣就可以看到,國家支持新技術的善用,打擊新技術的惡用。溯源,記賬,發票等各項基于區塊鏈的應用也給區塊鏈帶來很多善用的地方。
比特幣
談論區塊鏈技術,不得不談及比特幣,建立在區塊鏈技術之上的虛擬貨幣,其具有的去中心化性質,使得其在世界范圍內被廣泛使用。并且比特幣的總量是一定的,我們必須通過“挖礦”的方式或者說“記賬”的方式來獲取一定量的比特幣。而這些幣可以在虛擬網絡世界換來等價的實物,這也就是為什么大家熱衷于挖礦。
比特幣本質
上述挖礦的本質其實是區塊鏈技術節點共識的一個過程,比特幣采用了比較舊的POW(工作量證明機制)算法來達到共識,而這個算法的本質是誰先算出某一個值,就會獲得對應激勵,這個激勵就是比特幣,曠工挖礦的過程就是對一個大數或者簡單書對一個定值hash進行尋找的過程,誰先計算出這個hash值,誰就先完成記賬過程,獲得激勵。
區塊鏈起源(分布式賬本)
區塊鏈技術起源于 2008 年化名為“中本聰”(Satoshi nakamoto)的學者在密碼學郵件組發表的奠基性論文 《比特幣:一種點對點電子現金系統》具有去中心化、透明性、開放性、自治性、匿名性和信息不可篡改等特點,被認為是繼大型機、個人電腦、互聯網、移動社交網絡之后計算范式的第五次顛覆式創新, 是人類信用進化史上繼血親信用、貴金屬信用、央行紙幣信用之后的第四個里程碑。區塊鏈技術為解決中心化機構普遍存在的高成本、低效率和數據存儲不安全等問題提供了解決方案。
區塊鏈技術
區塊鏈技術涵蓋 p2p 網絡、加解密算法、共識機制、分布式存儲。其實看到這里,不由得想到了 AJAX(基于現有技術的重新排列組合實現的新技術,你有同感么!!正是因為有這些技術的支持,才有了區塊鏈的各種逆天的特性!
區塊鏈的特性
去中心化:無需第三方介入,實現人與人點對點交易和互動(p2p)udp 協議,節點之間的建立,連接和廣播內網穿透,如何能讓兩個處在內網的節點,相互發現自己的存在,并且建立通信。
信息不可篡改:數據信息一旦被寫入區塊中就不能更改撤銷(散列安全算法)SHA 接收一段明文,然后以一種不可逆(高數據敏感性)的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),并把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種”指紋”或是”摘要”所以對散列值的數字簽名就可以視為對此明文的數字簽名。
公開透明:極短時間內,區塊信息會被復制到網絡中的所有區塊,實現全網數據同步,每個節點都能回溯交易雙方過去的所有交易信息。
集體維護性:在整個互聯網金融系統,無論是資金的供給者還是資金的借貸者都可以充當保護者的作用;共同維護整個區塊鏈信息的可靠和安全性。節點共同維護。
可靠數據庫:只有掌握整個**系統 51%**節點,才能對區塊鏈信息進行篡改,這樣顯然不可能做到,因為整個系統參與者眾多,掌握這么多節點成本極高,也無法實現,這樣能確保數據的完整性、真實性和安全性。
區塊鏈分類
本質來說,鏈的分類是為了適用不同大環境而催生的去中心化的創新,現有鏈的分類如下,其中,聯盟鏈的實際應用比較多,具有代表性的就是以太坊,億書等。A.公有鏈
公有鏈上的數據所有人都可以訪問,同時所有人也都可以發出自己的** 交易并等待寫入區塊鏈**中。它具有完全去中心化、不受任何機構控制、賬本完全公開透明等特點。公有鏈項目包括比特幣、以太坊、瑞波、超級賬本,還有大多數的競爭幣以及智能合約平臺等。
B.聯盟鏈
聯盟鏈指對特定的組織團隊開放,是指參與區塊鏈的節點是事先選擇好的,節點之間可以實現資源與信息的共享。比如你在 10 所大學之間建立聯盟鏈,進行學生的課程信息共享。那么這個鏈上的課程內容只能被這 10 所大學的學生看到,內容也只能由這 10 所大學的老師和學生發布。聯盟鏈可以視為部分去中心化,其特點是交易速度非???,數據也可以有一定的隱私。
C.私有鏈
私有鏈是指對單獨的個人或實體開發的區塊鏈,參與的節點只有自己,數據的訪問和使用有嚴格的權限管理,是存在一定的中心化控制的區塊鏈。
共識算法介紹
我記得之前在學??聪嚓P論文時候,好像都在討論共識算法的改進帶來的區塊生成的時間效率,空間成本上的提升和節約,以及相關共識算法下的安全攻防;常見的共識算法如下:
- 拜占庭將軍問題:經典分布式共識 PBFT,參與的多個節點中進行投票,選出新的區塊。
- Pow:利用節點算力來選擇區塊的生產者,節點通過找到滿足要求的函數函數原像完成 Pow。其會造成巨大的資源浪費,礦機礦池的出現,也直接使去中心化失特點去了意義,還可能造成相關的攻擊(女巫攻擊,雙花攻擊,分布式拒絕服務攻擊(DDOS)等)。
- Pos(DPos):根據節點擁有的財產的數量隨機決定區塊的生產者,擁有的財產越多的節點,成為區塊生產者的概率越大,其實就有問題了!開發者完全可以在創世的時候給自己分配足夠多的財產,這也就失去了去中心化的意義。解放了工作量證明,但是作為區塊生產者和驗證者進行惡意操作的成本較低,基于理性節點的自利假設,參與者惡意操作可能性較大,可以同時在鏈的不同分叉上挖礦,無需花費額外的成本,導致傾向于分叉,PoS 的安全性就降低了!造成粉碎攻擊 ,長程攻擊等。
- 單一委員會的混合共識機制:利用 PoW 或者 PoS 的形式先選擇出一定數量的節點組成“委員會”,然后在委員會內部使用經典分布式共識完成區塊的生產和確認。
- 混合共識(分片共識):采用多個并行的委員會同時處理。多委員會的混合共識機制:突破了比特幣中區塊大小和出塊速度的限制,交易規模有了明顯的提升,缺點就是混和共識一旦使用 PBFT 之類的委員會內共識算法需要確保誠實節點占 2/3 以上,才能保證確證的投票,不被敵手控制。
區塊鏈應用常規架構
這里有一張我之前在讀研時候,在網上學習后理解后,畫的一張區塊鏈應用的架構設計圖。優秀的服務的平臺往往具有多層架構,底層是數據層用于數據分布式存儲,向上是網絡層用于節點共識,再向上就可以理解為拓展層用于各種服務拓展提供api以及應用層提供各種具體服務。我畫了一張大概的架構圖,我想這張圖聽該能夠代表現在各大區塊鏈平臺的總體架構設計方向。
寫了一個防bitcoin的web應用
BWCoin(https://qcblog.hmbstudio.cn/items/)是利用nodeJS實現的原生區塊鏈demo,是仿造的最古老的POW機制實現的共識,共識過程采用了計算定值hash值的方式實現,可以點擊BWCoin訪問,進行實際操作,其實也可以看到javascript進行計算密集型操作時候的不足,這里的優化可以使用webworker,wasm,調GPU加速等等
總結
凡是總有兩面性,我聽過太多的對于區塊鏈技術的評價,其實好的也好,壞的也罷,重要的是作為技術開發者的我們,要科技向善,我們應該利用新的技術,往小的說,應該思考如何為我們的業務帶來實質性增長,如何為業務帶來新的切入點,往大了說,應該思考如何做出更有意義的事,更好的為社會創造價值,這才是正確的導向!