鏈客,專爲開發者而生,有問必答!html
此文章來自[區塊鏈技術社區](https://www.liankexing.com),未經容許拒絕轉載。linux
開發系列c++
一、【區塊鏈】以太坊區塊鏈技術初探 二、【區塊鏈】以太坊區塊鏈環境搭建 三、【區塊鏈】以太坊區塊鏈概念瞭解 四、【區塊鏈】以太坊區塊鏈技術進階
源碼系列git
一、【以太坊源碼】編譯以太坊源碼,打造本身的公鏈私鏈 二、【以太坊源碼】以太坊源碼研究系列(以太坊模擬機、挖礦、點對點網絡庫、節點發現、合約代碼傳輸、加密簽名等)
區塊鏈基本概念github
區塊鏈就是經過密碼學的方式造成的一個由集體維護的分佈式數據庫。 區塊鏈的概念最近很火,它來自於比特幣等加密貨幣的實現,可是目前,這項技術已經逐步運用在各個領域。什麼是區塊鏈技術?爲了感性認識這個問題,咱們可使用谷歌地球的例子作類比,ajax不是什麼新技術,但組合在一塊兒就成就了產品谷歌地球,與之相似,區塊鏈也不是什麼新技術,但與加密解密技術、P2P網絡等組合在一塊兒,就誕生了比特幣。技術人員,特別是Web開發工程師,學習瞭解ajax技術最先是被谷歌地球酷炫的效果所吸引。而如今,歷史再一次重演,不少人被比特幣的瘋狂發展所吸引,進而開始研究其背後的技術——區塊鏈。 區塊鏈做爲比特幣背後的技術,無需中心服務器,可實現各種存儲數據公開、透明、可追溯。本來是比特幣等加密貨幣存儲數據的一種獨特方式,是一種自引用的數據結構,用來存儲大量交易信息,每條記錄從後向前有序連接起來,具有公開透明、沒法篡改、方便追溯的特色。實際上,這種特性也直接體現了整個比特幣的特色,所以使用區塊鏈來歸納加密貨幣背後的技術實現是很是直觀和恰當的。區塊鏈是一項技術,加密貨幣是其開發實現的一類產品(含有代幣,也有不含代幣的區塊鏈產品),不能等同或混淆。與加密貨幣相比,區塊鏈這個名字拋開了代幣的概念,更加形象化、技術化、去政治化,更適合做爲一門技術去研究、去推廣。 因此,目前當你們單獨說到區塊鏈的時候,就是指的區塊鏈技術,是實現了數據公開、透明、可追溯的產品的架構設計方法,算做廣義的區塊鏈。而當在具體產品中談到區塊鏈的時候,能夠指相似比特幣的數據存儲方式,或許是數據庫設計,或許是文件形式的設計,這算做狹義的區塊鏈。廣義的區塊鏈技術,必須包含點對點網絡設計、加密技術應用、分佈式算法的實現、數據存儲技術的使用等4個方面,其餘的可能涉及到分佈式存儲、機器學習、VR、物聯網、大數據等。狹義的區塊鏈僅僅涉及到數據存儲技術,數據庫或文件操做等。本文的區塊鏈,指的是廣義的區塊鏈。
區塊鏈架構web
區塊鏈專業名詞ajax
特定用戶:指按照中國法律法規及政策規定必需要配合融識履行我的信息披露義務的用戶。算法
待續~shell
以太坊經常使用網址數據庫
一、以太坊官方網站:https://ethereum.org/
該網站爲以太坊的官方網站,有詳細的以太坊介紹和各類鏈接地址,推薦詳細看一看
二、以太坊全部源碼地址(官方):https://github.com/ethereum/
該github爲以太坊全部項目的源碼地址,以及更新和發佈。
三、以太坊Homestead文檔地址(官方):http://www.ethdocs.org/en/lat...
該網站爲以太坊的詳細介紹文檔,基本包括了以太坊的方方面面,若是有什麼不清楚的原理和應用,基本均可以在這裏找到答案和線索。
四、以太坊網絡狀態地址(官方):https://ethstats.net/
該網站能全面的顯示網絡狀態,包括節點、難度、算力等等,很是直觀
五、以太坊資源網站(官方):http://ether.fund/
該網站提供了以太坊不少應用資源,好比市場狀況、合約輔助工具、已發佈的智能合約、以太坊網絡、DAAP等,方便開發和發佈。
六、Solidity編程文檔(官方):http://solidity.readthedocs.i...
該網站提供了以太坊Solidity語言的全面參考手冊,學習Solidity語言必備。
七、以太坊網絡掃描(官方):http://etherscan.io/
該網站提供了以太坊網絡的各類狀態,好比賬號的詳情、TOKEN詳情,難度詳情、區塊詳情,很是方便和直觀。
八、以太坊官方博客:https://blog.ethereum.org/
九、以太坊wiki百科地址:https://github.com/ethereum/w...
在這裏有白皮書、黃皮書以及開發指南,比較全面。
十、以太坊中文愛好者網站:http://ethfans.org/
該網站爲國內以太坊愛好者自發創建的網站,內容比較全,信息更新很快。
十一、以太坊的gitter的實時交流網站:https://gitter.im/orgs/ethere...
該網站是以太坊的gitter chart的網站,根據項目分了不少房間,只要你提問題,大部分有人回答,很不錯,不過只能英語交流。
十二、以太坊的官方論壇:https://forum.ethereum.org/
官方論壇,沒什麼好說的,我遇到的幾個問題,都是在這裏找到的答案
1三、以太坊第三方強大的IDE:https://live.ether.camp/
這個是第三方發佈的Solidity IDE,我看了一下,很強大,強大到還不太會用,他的目標是企業級IDE,老外用的較多。
1四、以太坊開發框架Truffle說明書:http://truffle.readthedocs.io...
以太坊目前很流行的開發框架Truffle的說明書,這個框架比較流行。
1五、以太坊開發框架dapple說明書:http://dapple.readthedocs.io/...
這個開發框架是在gitter chart上看到的,感受用的人很少,先觀察
1六、以太坊官方推薦開發框架Meteor說明書:https://github.com/ethereum/w...
這個開發框架是以太坊官方推薦的,寫進了以太坊的官方wiki,值得學習,固然,以太坊官方常常轉換方向,之後換別的也沒準
以太坊各個項目說明
(一)Go-ethereum項目
開發語言:go語言 客戶端文件:Geth 界面:命令行 適用平臺:windows、linux和OSX 功能和特色:該項目是使用最普遍的以太坊客戶端,大部分節點都是運行的該客戶端,教程和例子也最多,推薦使用,可用於挖礦,組建私有鏈,管理帳號,部署智能合約等經常使用功能,不能夠編譯智能合約。
(二)webthree-umbrella項目
此項目包含3個客戶端 開發語言:c++ 客戶端文件:AlethZero、Mix和Eth 使用平臺:windows、linux和OSX 界面:圖形化界面 功能和特色:該項目嚴格來講是cpp-ethereum 項目的一個shell,是以太坊基金會的前CTO,Gavin Wood主持編寫的,因此人氣也很高,易用性也很好。AlethZero是圖形化的錢包客戶端,對應的是Geth的功能,不過是全圖形化的。可是隨着後續以太坊基金會主推的圖形化錢包Mist的推出,漸漸沒落。Mix 是智能合約(以太坊稱爲DAPP)的開發IDE,能夠支持智能合約(DAPP)的編寫、調試,部署,全圖形化界面,可是目前已經中止開發了,開發組轉向了Remix。Eth是C++編寫的命令行客戶端功能和Geth同樣。
(三)Mist項目
開發語言:JavaScript 客戶端文件:Mist(目前使用Ethereum-Wallet的名稱) 使用平臺:windows、linux和OSX 界面:圖形化界面 功能和特色:該項目是以太坊基金會主推的項目,Mist定位不僅是一個錢包,而是未來DAPP(智能合約的應用APP)市場,相似於蘋果市場,在這裏能夠有你的帳號,能夠瀏覽、發佈和買賣以太坊的DAPP應用。目前由於開發還不夠全面,名稱暫時顯示爲Ethereum-Wallet,做用也很簡單,就是一個錢包的功能。強烈推薦,將來的主流客戶端。
(四)solidity項目
開發語言:C++ 客戶端文件:solc 使用平臺:windows、linux和OSX 界面:命令行界面 功能和特色:該項目是以太坊智能合約(DAPP)的編程語言,使用solc做爲編譯程序,該項目主要用於編譯,嚴格來講是一個基本的編譯平臺,通常開發可用MIX替代。
(五)browser-solidity項目
開發語言:C++ 客戶端文件:瀏覽器中顯示 使用平臺:windows、linux和OSX 界面:瀏覽器界面 功能和特色:該項目是智能合約瀏覽器版本的開發環境,能夠支持在瀏覽器中直接開發、調試和編譯,對於初學者來講,能夠快速上手,不須要安裝,很是方便,直接訪問地址使用:https://ethereum.github.io/browser-solidity/
(六)pyethereum項目和ethereumj項目
pyethereum項目是用Python語言編寫的以太坊客戶端,ethereumj項目是用Java語言編寫的以太坊客戶端,只是語言不一樣,和前面GO語言編寫的客戶端Geth的功能徹底相同。
(七)etheminer項目
開發語言:C++ 客戶端文件:ethminer 使用平臺:windows、linux和OSX 界面:命令行 功能和特色:該項目是cpp-ethereum項目的一部分,用於和Geth配合進行GPU挖礦,比CPU挖礦效率高100多倍,也能夠用於礦池挖礦
區塊鏈的誕生是爲了解決什麼問題?
在支付寶轉帳的時候,做爲用戶的你感受是把你的錢直接打到對方的帳戶中。但!....事實是這樣的:
這裏的支付寶等公司就是「第三方」,那爲何咱們倆轉帳爲何要有一個「第三方」出現?
這是阿里巴巴的紀錄片《造夢者》中的一段話,ps:下文會屢次引用,就能夠很好解釋「第三方」這個名詞,這也是淘寶和支付寶誕生的伊始。換句話說,當時的阿里是被逼作了這個「第三方」,由於當時沒有任何一家公司可以擔任這樣的角色,因而阿里成爲了信任的中心,商家和用戶由於「信任」,選擇把錢給阿里。可是,若是阿里攜款潛逃了(儘管不可能...)或者財務運營商出了問題(畢竟是人嘛...)怎麼辦?若是有一個機器或者一個「超級系統」來作這些事就行了!在互聯網技術更新替換了十幾年後的今天,區塊鏈出如今咱們面前,沒錯!它就是那個「超級系統"!一個信任的機器。
有了區塊鏈,事情開始變得不同了。
傳統中心化的方式:
區塊鏈網絡下的」去中心化的方式:
在去中心化的網絡下,每一個用戶之間均可以是直接聯繫的,再也不有任何第三方的參與,用戶間的轉帳就像手遞手付現金同樣,這也是爲何比特幣會被稱爲」電子現金「。
好了,如今A已經把錢轉給B了,那麼誰來記這筆帳呢?以前有支付寶幫我記帳對帳,會統一存在支付寶後臺系統中。爲了讓全部用戶的交易都被記錄下來而且帳目都是正確的,支付寶會爲此付出巨大努力。看看支付寶的初期...
天天1000筆的帳單,人工對帳就已經很痛苦了。以如今支付寶的體量,天天少則幾十萬的帳單,即便是系統對帳也不免漏單,而且要付出相應的人力、物力來維護這一套很是複雜的收支清算系統。說了這麼多,那區塊鏈是怎麼對帳的呢?答案是:沒有!在區塊鏈的網絡中根本不須要對帳,零清算,由於區塊鏈中的每個節點(就是一臺計算機或理解爲一個用戶)本身都有一個帳本,這個帳本是實時更新的,區塊鏈網絡中發生的任何交易都會被記到你本身的帳本中,沒錯,別人的賬你也有,可是你是不知道這我的是誰的,由於他們統一都長這個樣子:
0x3c7e7bd1ff2952fbf5a16d0d8b0fc2803162b088
這就意味着,之前由一箇中心化的機構幫你記帳對帳,如今由每個網絡中的參與者幫你記帳,你們都有同一個帳本。以下圖
每一個人擁有同一個帳本,即便你篡改了你本身的帳本,讓你的帳上多了1億,但是51%以上的帳本中你的帳戶仍是1分錢,那就說明你的賬上餘額就是1分錢,沒法抵賴。固然,若是你能控制網絡51%的人在帳本中幫你把一分錢變成1億,你就能得到一億,但基本上就要動用舉國之力了....騷年,你肯定你能夠?
這就是爲何你們說區塊鏈網絡是安全的,由於攻擊成本太過巨大,打個比方:比特幣如今市值80億美圓,若是你想攻破它並獲得這80億美圓,你可能要花費200多億美圓......
說了上面這麼多其實就是想說明區塊鏈的幾個特性:
去中心化,沒有第三方中介,一切都由程序來完成。
安全性,主要體如今分佈式、51%攻擊,即便一個節點被攻擊或宕機也不會影響網絡的運行。
最核心的就是:去信任。一切社會行爲都要創建在」信任「的基礎上,這也是區塊鏈解決的最根本的問題。
區塊鏈的落地場景
全球P2P租賃 https://atlant.io/cn/#contribute 京東區塊鏈 https://www.leiphone.com/news/201612/VGtxUJDpj12JswTv.html 微衆銀行:貸款清算 中國銀聯:積分兌換 Ripple:跨境支付 ABRA:跨境支付 Circle:境內外支付 BTCJam:網絡借貸 Wave:供應鏈金融& 貿易金融 Chain:股權交易發行 ShoCard:身份識別