區塊鍊開發教程及環境搭建--------------------------------------------
fabric+go的系列教程
https://www.cnblogs.com/efish/category/1413426.html?page=1
公司内部區塊鍊技術入門教育訓練
https://cloud.tencent.com/developer/article/1525469
基于java開發一套完整的區塊鍊系統詳細教程(附源碼)
https://blog.csdn.net/victory_long/article/details/106604338
官方教程 -----------首推參考學習使用
https://hyperledger-fabric.readthedocs.io/en/latest/developapps/developing_applications.html
區塊鍊程式設計 語言選擇go聯盟鍊,solidity 以太坊---------------------------
1.以太坊+solidity
2.IBM hyperlegger Fabric+ go
原理剖析
fabric的一些基礎知識點
https://www.cnblogs.com/qiangjiyi/p/9562480.html
公司部分業務上鍊而進行教育訓練的PPT-陶輝筆記
https://www.taohui.pub/
https://www.taohui.pub/2018/05/26/%e5%8c%ba%e5%9d%97%e9%93%be%e5%bc%80%e6%ba%90%e5%ae%9e%e7%8e%b0hyperledger-fabric%e6%9e%b6%e6%9e%84%e8%af%a6%e8%a7%a3/
區塊鍊知識點總結-------------------------------------------
#區塊鍊必須滿足三個條件:
1.區塊鍊是一個放在非安全環境中的分布式資料庫(系統)。
2.區塊鍊采用密碼學的方法來保證已有資料不可能被篡改。
3.區塊鍊采用共識算法來對于新增資料達成共識。
https://developer.aliyun.com/article/585458?spm=a2c6h.12873639.0.0.70097c960qt1v7
https://developer.aliyun.com/article/581437?spm=a2c6h.12873639.0.0.c43348caHWE6G2
https://developer.aliyun.com/article/585458?spm=a2c6h.14164896.0.0.2aa036bfgqfhHR
https://cloud.tencent.com/developer/article/1525469
https://blog.csdn.net/russell_tao/article/details/80459698--區塊鍊開源實作hyperledger fabric架構詳解
基于java開發一套完整區塊鍊
https://blog.csdn.net/victory_long/article/details/106604338
https://gitee.com/luckytuan/dce-blockchain
https://blog.csdn.net/hui_yong/article/details/80621377
wiki百科Hyperledger+Fabric
https://wiki.hyperledger.org/display/fabric/Hyperledger+Fabric
https://github.com/hyperledger/fabric
fabric問答社群
https://chat.hyperledger.org/channel/fabric
#區塊鍊涉及的關鍵詞了解:
”系統中“:參與區塊鍊平台系統内的人
去中心化:
就是說交易會記在無數個不可控的小賬本上,由不得人賴賬,普遍可通路的賬本,不可以編輯或修改。
去中心化并不代表着不接受監管,“去中心化”去的是中央控制方和中介方,而不是監管方。
比特币:概念由中本聰提出,是一種點對點,去中心化的數字資産。
智能合約:
區塊鍊社群:
節點:任何人都可以架設伺服器,加入區塊鍊網絡,成為一個節點。區塊鍊的世界裡面,沒有中心節點,每個節點都是平等的,都儲存着整個資料庫。你可以向任何一個節點,寫入/讀取資料,因為所有節點最後都會同步,保證區塊鍊一緻。
共識:共識機制的核心作用在于能夠将單一個體使用者意志轉變為生态意志。
采礦:
由于必須保證節點之間的同步,是以新區塊的添加速度不能太快。試想一下,你剛剛同步了一個區塊,準備基于它生成下一個區塊,但這時别的節點又有新區塊生成,你不得不放棄做了一半的計算,再次去同步。因為每個區塊的後面,隻能跟着一個區塊,你永遠隻能在最新區塊的後面,生成下一個區塊。是以,你别無選擇,一聽到信号,就必須立刻同步。
是以,區塊鍊的發明者中本聰(這是假名,真實身份至今未知)故意讓添加新區塊,變得很困難。他的設計是,平均每10分鐘,全網才能生成一個新區塊,一小時也就六個。
這種産出速度不是通過指令達成的,而是故意設定了海量的計算。也就是說,隻有通過極其大量的計算,才能得到目前區塊的有效 Hash,進而把新區塊添加到區塊鍊。由于計算量太大,是以快不起來。
這個過程就叫做采礦(mining),因為計算有效 Hash 的難度,好比在全世界的沙子裡面,找到一粒符合條件的沙子。計算 Hash 的機器就叫做礦機,操作礦機的人就叫做礦工。
難度系數:difficulty
難度系數的動态調節:
區塊鍊的分叉:
賬簿:
分布式賬簿:
一緻性的分布式賬簿:
以太坊鍊上代碼:鍊上代碼”能把數字貨币應用變成功能強大的平台
P2P是英文peer to peer lending(或peer-to-peer)的縮寫,意即個人對個人(夥伴對夥伴),又稱點對點
ICO:公開币發行(Initial Coin Offering, ICO)
以太坊:屬于公有鍊
區塊鍊:公有鍊(目前實際應用價值不大)、許可鍊(私有鍊、聯盟鍊(目前聯盟鍊是各個區塊鍊技術團隊主要研究的對象)、企業鍊(比如Hyperledger))
PoW:工作量證明(Proof of Work, PoW)
PoS:權益證明(Proof of Stake, PoS)機制
PBFT:許可鍊中主要使用拜占庭共識協定(Practical Byzantine General Fault Tolerance, PBFT)
CBTF:并發的拜占庭共識協定(Concurrent Byzantine Fault Tolerance, CBFT)。
OBCC:開放的區塊鍊應用接口(Open Blockchain Connector, OBCC)
共識機制:就是所有參與者對每個合約的确認過程。舉個簡單的例子,A 轉賬給 B100 元:“A 付款,B 收款确認”,這些資訊被記錄在賬本上,這就是共識機制。
資料隐私問題:
區塊鍊的賬本是共享的,像比特币,以太坊等,交易資料大家都可以檢視。
雖然不知道是誰的資料(區塊頭被加密了、區塊體即資料是開放的可見的),但是讓人們很擔心。
在 Fabric 中,賬本不是共享給所有人的。而是通過 channel 隔離資料,雖然大家都在同一個區塊鍊網絡裡,
但是不在同一個 channel,也沒辦法共享賬本。是以,通過建立不同的 channel 可以達到按需共享的目的
Fabric :
節點Peer:它在 Fabric 網絡中主要負責接收交易請求的具有一定功能的服務或軟體,節點之間通過 gRPC 進行通信
排序者 (Orderer)
CA 節點
創世區塊:區塊鍊中的第一個區塊被稱作為創世區塊,無需關聯上一個區塊
區塊鍊靈魂:共識機制
趣味解讀以太坊:
比特币網絡看作是一套分布式的資料庫,而以太坊則更進一步,它可以看作是一台分布式的計算機:區塊鍊是計算機的ROM,合約是程式,而以太坊的礦工們則負責計算,擔任CPU的角色。
Token機制:
以太坊的運作和BTC網絡一樣,采用的是Token機制,平台性能不足,經常出現網絡擁堵的情況,平台用來學習開發與測試區塊鍊技術還可以,用于實際生産的話不太現實
公有鍊的範疇:區塊鍊代币的發行和配置設定機制,區塊鍊貓,挖礦為主題
資料結構Merkle tree(默克爾樹):https://www.cnblogs.com/s-lisheng/p/11301063.html
p2p為何快:
在點對點網絡中資料傳輸的時候,為了提高效率往往會同時從多個機器下載下傳資料的不同部分,即,不是從一台機器下載下傳整個資料,而是将完整資料分成不同的部分,分别同時從不同的機器擷取完整資料的不同組成部分
e2e:即end to end(端到端),指任意一個人的社交、交易、休bai閑都可以直接與另外任意一個人産生關系,去中心化、管道化
LevelDB:BTC核心網絡采用的是K-V資料庫(節點上的存放鍊的資料庫)
區塊鍊記賬權:實際的區塊鍊是有多個節點同時運作的分布式網絡系統,所有節點同時計算搶奪記賬權,共同維護一條完整的區塊鍊。
#區塊鍊模式
(1)塊鍊結構 :每一塊有時間戳,每一塊都含有前面一塊的哈希加密資訊,對每個交易進行驗證。
(2)多獨立拷貝存儲 :區塊鍊系統的每個節點都存儲同樣資訊。
(3)拜占庭容錯 [3] :容忍少于1/3節點惡意作弊或被黑客攻擊,系統仍然能夠正常工作。
模式 1 :(1) + (2) + (3) + P2P + 挖礦 -----------比特币
模式 2 :(1) + (2) + (3) + P2P + 挖礦 + 默克爾-帕特裡夏樹(Merkel Patricia tree) ---------以太坊
模式 3 :(1) + (2) + (3) + 拜占庭共識協定
#比特币和區塊鍊有什麼“不可告人”的關系?
區塊鍊技術是比特币的底層技術,比特币是區塊鍊的第一個應用。比特币的交易資訊都被記錄在一個去中心化的賬本上面,這個賬本就是區塊鍊。如果我們把區塊鍊類比成一個實物賬本,那麼每個區塊就相當于這個賬本中的一頁。
每10分鐘形成一頁新的賬本,每一頁賬本上記載着比特币網絡這10分鐘的交易資訊,每個區塊之間依據密碼學原理,按照時間順序依次相連,形成鍊狀結構,是以得名區塊鍊。
自白皮書《比特币:一種點對點的電子現金系統》誕生後,國内外各大金融機構争相研究比特币底層技術區塊鍊,并不斷尋求區塊鍊技術的實際應用。
比特币:比特币,其實質是“中本聰”在2009年提出的一個去中心化的P2P版本的貨币系統,中本聰是誰到現在也沒有一個定論,有人說是一個日本人,有人是一個日本集團,也有人說是中國
比特币屬于公有鍊(全網記賬):
比特币是數字貨币應用而不是平台:
#沒有了管理者,人人都可以往裡面寫入資料,怎麼才能保證資料是可信的呢?被壞人改了怎麼辦?請接着往下讀,這就是區塊鍊奇妙的地方。
區塊:區塊頭(Head):
記錄目前區塊的元資訊(目前時間,上一個區塊的hash,本區塊體的hash),區塊的 Hash 都是針對”區塊頭”(Head)計算的。Hash = SHA256(區塊頭)
區塊體(Body):
實際資料
hash:Hash 就是計算機可以對任意内容,計算出一個長度相同的特征值。區塊鍊的 Hash 長度是256位,
推論1:每個區塊的 Hash 都是不一樣的,可以通過 Hash 辨別區塊。
推論2:如果區塊的内容變了,它的 Hash 一定會改變。
目前區塊的hash=前一塊的hash+這一塊的nonce+這一塊的資料體Transaction
不可更改性:
區塊頭包含很多内容,其中有目前區塊體的 Hash(注意是”區塊體”的 Hash,而不是整個區塊),還有上一個區塊的 Hash。這意味着,如果目前區塊的内容變了,或者上一個區塊的 Hash 變了,一定會引起目前區塊的 Hash 改變。
這一點對區塊鍊有重大意義。如果有人修改了一個區塊,該區塊的 Hash 就變了。為了讓後面的區塊還能連到它,該人必須同時修改後面所有的區塊,否則被改掉的區塊就脫離區塊鍊了。由于後面要提到的原因,Hash 的計算很耗時,同時修改多個區塊幾乎不可能發生,除非有人掌握了全網51%以上的計算能力。
正是通過這種關聯機制,區塊鍊保證了自身的可靠性,資料一旦寫入,就無法被篡改。這就像曆史一樣,發生了就是發生了,從此再無法改變。
#5分鐘玩轉一個區塊鍊
https://github.com/hyperledger/fabric
#總結
區塊鍊作為無人管理的分布式資料庫,從2009年開始已經運作了8年,沒有出現大的問題。這證明它是可行的。
但是,為了保證資料的可靠性,區塊鍊也有自己的代價。一是效率,資料寫入區塊鍊,最少要等待十分鐘,所有節點都同步資料,則需要更多的時間;二是能耗,區塊的生成需要礦工進行無數無意義的計算,這是非常耗費能源的。
是以,區塊鍊的适用場景,其實非常有限。
目前,鍊上代碼基本是固定的合約模闆,未來智能合約由誰來編寫、檢驗、測試、認證、修改,以及合約雙方怎樣認可等,都是需要探索的問題。
另外,随着區塊鍊技術的成熟,未來各行各業都可以使用區塊鍊,包括食品、金融服務、能源、制藥、航空航天、IT等多個行業和領域。
今後,還需要進一步研究區塊鍊技術完備的标準和完善的監督監管機制。
目前公有鍊在實際應用中并沒有太多的業務場景落地,大部分都是以挖礦為主題或者線上寵物飼養的遊戲為主,并且由于數字貨币的匿名性,有些不法分子利用這一特點,将數字貨币用于洗錢、暗網買賣等違法行為,是各個國家的打擊對象,我國政策法規也嚴厲禁止,是以對于技術人員來說,公有鍊可以作為研究學習的對象,其他方面暫時沒有太多實際意義。
目前大部分區塊鍊企業的研究方向主要是針對企業的聯盟鍊和私有鍊,并且國家層面也在大力支援區塊鍊技術的發展,特别是區塊鍊底層核心技術的研發,倡導把區塊鍊作為核心技術自主創新的重要突破口,明确主攻方向,加大投入力度,着力攻克一批關鍵核心技術,加快推動區塊鍊技術和産業創新發展。不過現在市面上主流的區塊鍊平台大部分還是以國外公司主導的為主,國内區塊鍊底層核心技術的發展,還需要技術人員的加倍努力。