1. 程式人生 > >如何從零打造一個去中心化應用的區塊鏈

如何從零打造一個去中心化應用的區塊鏈


挖礦以太幣


最後我們決定自己挖掘以太幣。如果想了解一下在以太坊挖礦到底是不是有利可圖,自己挖確實也是一個很好的方法。我們製作了一個非常大的亞馬遜EC2例項,它具有強大的GPU計算能力(是一個g2.2xlarge例項)。這個例項的價格是每天17美元。我們安裝了乙太網,並啟動了我們的節點。由於高記憶體和儲存需求,我們很快就必須增強這個例項。加入區塊鏈時節點做的第一件事就是下載過去交易的全部歷史記錄。這需要大量的儲存空間:區塊鏈歷史記錄超過14GB,Ethash工作證明大約需要3GB。

一旦以太坊節點啟動,我們就必須要挖掘3天才能創建出一個有效的區塊:

640?wx_fmt=png

提醒一下,以太坊區塊鏈每10秒鐘挖一塊。開採一個區塊可以獲得5個以太幣,售價大約為55美元(作者寫文章時的價格)。我們的增強版EC2例項執行3天的成本約為51美元。總而言之,。但是我們非常幸運:我們開發這個區塊的時候挖掘難度並不很大,在開發完之後,網路的挖掘難度就增加了三倍。

5個以太幣可以讓我們執行“零美元主頁”多長時間呢?現在我們來計算一下。

“零美元主頁”的工作流程意味著每天都會有一筆交易,另外每個宣告的PR都會有一筆交易。假設貢獻者每天宣告一個PR,那麼執行該平臺每年最多將花費365 * 2 * 0.00098 = 0.72 以太幣。5個以太幣可以讓我們執行該平臺近7年。

正如你所看到的,在以太坊執行合約並不是免費的,不過以目前的價格來說,它仍然很便宜。當然,以太幣價值的變化很大。由於挖比特幣的利潤越來越低,一些大型比特幣礦場開始轉向以太坊。這也讓採礦變得越來越困難,並且使得乙太網每天都在變得更加昂貴。

最終的驚喜


最終,我們的智慧合約在EC2上託管的現實世界以太坊節點中執行非常好。

但當我們完成這個專案的時候,以太坊釋出了它們的Homestead版本,這帶來了很多新東西,完全破壞了我們的程式碼。我們花了大約一個星期的時間才明白,並且通過反覆試驗修復了因不明原因而不相容的程式碼。

Tip

Homestead釋出了一個隱藏的以太坊功能——私有網路——來簡化開發。之前以太坊缺乏私有網路是我們當時選擇使用Eris的原因之一。

“零美元主頁”平臺現在已經啟動並且開始運行了。你可以通過在GitHub上的marmelab的開源庫之一上開一個Pull請求來使用它,上當前顯示的廣告,或瀏覽marmelab / ZeroDollarHomePage上的應用程式程式碼。是的,我們正在開源整個廣告平臺,以便你可以詳細瞭解其工作原理,並在本地進行復制。

640?wx_fmt=png

除錯

以太坊留給開發者的體驗其實是非常糟糕的。想象一下沒有日誌,也沒有除錯工具,你發現程式失敗的唯一方法是通過一行一行輸出“I'm here”字串來查詢問題。甚至有時(例如在Solidity合約中),你都不能這樣做。或者某些在開發環境中完美工作的程式在生產環境中卻無法實現。這就是以太坊的開發者體驗。

如果你將資料儲存在智慧合約中,是沒有內建的方式可以在交易後顯示此資料當前狀態的。這意味著你需要構建自己的視覺化工具來排除錯誤。

可用於跟蹤以太坊合約和交易的工具有:

  • etherscan.io:顯示有關合約,交易,區塊的資料

  • etherchain.org:區塊和乙太網資訊

  • 你還可以獲得有關網路和節點的彙總統計資訊

例如,這是我們的合約在etherscan上的視覺化介面:

640?wx_fmt=png

每次交易(對合約方法的呼叫)以及合約執行的痕跡都會用機器語言記錄下來。除了用於確保你呼叫到了合約之外,這個工具不能用於除錯的其他部分。

而且,這些工具只能監視公共以太坊網路。所以你不能用它們來除錯本地的區塊鏈。

如果你曾經見過比特幣交易審計網站,千萬不要以為以太坊可以達到相同的複雜程度。此外,比特幣網路只有一種交易,因此比設計用於執行智慧合約的網路更容易監控。

文件

這還不是全部:以太坊文件與程式碼不同步(至少在Frontier版本中),所以大多數時候我們必須要通過檢視這些庫的原始碼來了解如何寫程式碼。由於有些出問題的庫使用的語言(Solidity)很少人用,所以我們在這裡只能祝福它們的工作方式不出問題了。還有,也不要指望Stack Overflow的幫助。像我們這樣敢於做一些認真的事情來為社群提供支援的人太少了。

不過這裡需要明確的是:我們不是在批評以太坊社群缺乏努力。以太坊背後的發展勢頭巨大,事情進展迅速。所有文件貢獻者的工作都值得讚賞。但還是要承認在我們開發應用程式時,現有文件狀態不足以讓新的以太坊開發人員啟動一個專案。

在網上搜索以太坊的教程很容易,但大多數時候,這些教程中複製貼上的程式碼根本無法使用。

結論

經過,我們的程式碼終於可以在公有以太坊網路中工作了(心累)。在Frontier和Homestead版本之間的以太坊庫中的迴歸和相容性中斷也並沒有起到什麼作用。檢視marmelab / ZeroDollarHomePage上的專案原始碼可以詳細瞭解其內部工作原理。因為確實是第一次開發,我們在這方面的經驗也實在有限,請原諒我們程式碼中的潛在錯誤,以及本文中的不準確之處。請隨時在GitHub向我們提交更正或評論。

通過糟糕的文件和不成熟的軟體庫摸索程式設計的方式並不是很讓人開心。用半熟的語言來實現簡單的功能(如字串操作)也不好玩。尤其是意識到自己儘管有著多年豐富的指令碼語言程式設計經驗,但卻無法編寫簡單的可靠合約,這就更令人沮喪。最重要的是,以太坊生態系統的年輕人完全無法預測他們實現一個簡單的功能所需的時間。由於時間就是金錢,目前我們還無法確定開發去中心化應用到底需要多少代價。

在時間和資源方面,“零美元主頁”代表著超過20,000歐元的開發成本——即使它是一個非常簡單的系統。與我們在其他專案中使用的工具(Node.js,Koa,React.js,PostgreSQL等)相比,在區塊鏈上開發非常昂貴。對於開發團隊來說,這也是非常令人失望的。我們還可以從中發現一個很強烈的訊號:這個生態系統還沒有準備好!

對區塊鏈的看法


在探索了區塊鏈的理論,並真正開發之後,我們已經對它的優缺點有了切身的體會。但令人驚訝的是,我們的大部分結論都和媒體上一直吹捧的不太一樣。或許這是因為我們並沒有迷信比特幣和其他人的瘋狂估值,也可能是因為區塊鏈確實面臨著不夠成熟的現狀。

區塊鏈確實是一個非常聰明的想法,具有巨大的潛在影響。但是目前的方案究竟能否為下一個十年顛覆性應用的誕生提供動力還尚未可知。

在技術方面,它的一些基本特徵根本不可行。區塊鏈效率不夠高,對開發人員不夠友好,而且它的技術特性很有可能被恐怖分子或地下黑市利用,,而難以監管。

在商業方面,區塊鏈變化速度過快,價格昂貴。費用可能會無緣無故地變化數十倍。在這樣一個不穩定的平臺上開展業務是非常危險的。

我的意思是,我們必須等待。它需要更成熟些,需要成為另一個殺手級應用而不是成為一個投機引擎,需要更大的開發者社群,需要承擔更多的生態和經濟責任。這需要多長時間?也許一年或兩年?沒人能說出來。


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

相關推薦

如何打造一個中心應用區塊

挖礦以太幣最後我們決定自己挖掘以太幣。如果想了解一下在以太坊挖礦到底是不是有利可圖,自己挖確實也是一個很好的方法。我們製作了一個非常大的亞馬遜EC2例項,它具有強大的GPU計算能力(是一個g2.2xlarge例項)。這個例項的價格是每天17美元。我們安裝了乙太網,並啟動了我們

區塊虛擬收藏品+手機挖礦:構建中心區塊會員積分系統

手機挖礦系統 區塊鏈會員積分系統 區塊鏈虛擬收藏品開發 距離以太坊的“CryptoKitties”上線已過去了半年的時間。在這半年中各種各樣的區塊鏈寵物養成遊戲層出不窮,同時人們也對區塊鏈有了深刻的認識。從區塊鏈寵物養成遊戲中衍生而來的則是各類區塊鏈虛擬收藏品遊戲,除了那些加密寵物,還有不同展現形

基於Ethereum & IPFS的中心Ebay區塊專案開發實戰

孔壹學院:國內區塊鏈職業教育引領品牌,專注於區塊鏈產品底層研發和職業教育培訓,孔壹學院是一家集產品研發、外包服務、脫產班、週末班、企業內訓、區塊鏈人才服務提供商為一體的綜合性區塊鏈商學院。 官方網站:http://www.kongyixueyuan.

構建一個簡單的以太坊+IPFS+React.js中心應用DApp

我們為什麼要構建這個?在以太坊區塊鏈上儲存大量資料是非常昂貴的。根據以太坊的黃皮書,它是大約20,0000gas,256bit/8位元組(1字)。基於02/28/2018 gas價格為4gwei/gas。請參閱:https://ethgasstation.info瞭解當前價格。 每個交易

區塊技術開發之以太坊開發入門教程——一個中心DApp應用投票系統。

第一節 課程概述本課程面向初學者,內容涵蓋以太坊開發相關的基本概念,並將手把手地教大家如何構建一個 基於以太坊的完整去中心化應用 —— 區塊鏈投票系統。通過本課程的學習,你將掌握:以太坊區塊鏈的基本知識開發和部署以太坊合約所需的軟體環境使用高階語言(solidity)編寫以太

以太坊dApp開發教程(如何一步步構造一個全棧式中心應用)(四)實現投票功能

一、更新智慧合約 增加投票功能後的智慧合約如下: pragma solidity ^0.4.2; contract Election { //候選者結構體 struct Candidate { uint id; string name; uint vot

一步步教你開發、部署第一個中心應用(Dapp) - 寵物商店

區塊鏈今天我們來編寫一個完整的去中心化(區塊鏈)應用(Dapps), 本文可以和編寫智能合約結合起來看。 寫在前面 閱讀本文前,你應該對以太坊、智能合約有所了解,如果你還不了解,建議你先看以太坊是什麽除此之外,你最好還了解一些HTML及JavaScript知識。 本文通過實例教大家來開發去中心化應用,應用效果

區塊入門與中心應用實戰

證明 清晰 添加節點 簡單 鞏固 lan 問題 框架 ide 第1章 課程簡介與學習安排本章主要介紹為什麽要開設這門課,課程目標是什麽,誰適合學習這門課以及學習這門課需要哪些要求,然後詳細介紹本課程要講的主要內容,希望通過這章的學習,可以讓大家對課程有一個整體的,清晰的了解

程序員如何切入區塊中心應用開發

str image its 後端 evm 展現 Dapp開發 客戶端 以及 前段時間一個以太坊遊戲應用:Fomo3D異常火爆,在短短的幾天內就吸引了幾萬的以太幣投入遊戲,第一輪遊戲一個“×××”用了一個非常巧妙的利用以太坊規則成為了最終贏家,拿走了1萬多以太幣獎金。 區塊鏈

打造一個CMDB(一)資料庫設計

俠義的CMDB都是偏向純資產管理,但運維繫統往往圍繞著這些資產中心,從資產進行不斷外充擴容 在其基礎之外擴展出各功能,通過cmdb 擴展出各個子系統  涉及工具:workbench 一個例子:設計一個數據庫實現主機資訊、交換機資訊,如何將之間的資訊關聯起來 初步的傳統設計:

贈書啦!不管中本聰是誰,他終究開創了一個中心時代

想了解中本聰關於比特幣和區塊鏈的孕育、創立和發展過程以及圍繞著理念、邏輯、原理、實施、安全、設計和普及所進行的深入探討嗎? 這可能是他唯一留下的關於比特幣的建立、運作方式和理論基礎的闡述,因為中本聰的真實身份可能永遠都不會公開了...

20181117——一步步教你開發、部署第一個中心應用(Dapp) - 寵物商店

DApp是Decentralized Application 分散式應用 npm Node Package Manager. 包管理工具 用來下載安裝升級解除安裝安裝包 完了沒發出來,結果快取都沒了。 用MetaMask測試私有網路 從Ganache建立的賬戶中選擇一個匯入

最新區塊入門與中心應用實戰

第1章 課程簡介與學習安排本章主要介紹為什麼要開設這門課,課程目標是什麼,誰適合學習這門課以及學習這門課需要哪些要求,然後詳細介紹本課程要講的主要內容,希望通過這章的學習,可以讓大家對課程有一個整體的,清晰的瞭解。第2章 區塊鏈技術的核心概念和原理本章會講解比特幣的由來,比特幣概念及原理,如:

ONEROOT攜手Bithumb打造分散式中心交易所

9月12日,ONEROOT宣佈啟動“火箭計劃”,進軍全球市場,正式進入2.0時代。 9月14日, RNT登陸韓國第一大數字貨幣交易所Bithumb,為ONEROOT獲取全球流量打下了堅實基礎。 9月27日,ONEROOT獲加拿大政府頒發的首張數字金融牌照。 10月1日,“火箭計劃”再下一城:

GPS:一個中心的抽獎式Token Offering模型

隨著區塊鏈行業的逐漸理性化,大量Token Fund和散戶投資者對區塊鏈專案心存戒備。究其原因,主要是由於傳統的Token Offering存在以下弊端: 第一,專案團隊擁有特權,濫用甚至侵吞投資者資金。 第二,融資模式中心化,資金管理人為掌控,沒有做到去中心化。 第三,沒有兼顧投

CAO:一個中心的社群自治Token發放模型

許多區塊鏈專案的Token已經被大量投資者證明是騙局,究其原因是因為每個區塊鏈專案的團隊都擁有毫無限制的權力來管控所有的錢和資源,並且很多都是暗箱操作毫無公開記錄。有鑑於此,GDOC基金會建立了一個更加去中心化的Token發放模型,稱為CAO(Community Autonomous Offerin

一步步教你開發、部署第一個中心應用(Dapp)

今天我們來編寫一個完整的去中心化(區塊鏈)應用(Dapps), 本文可以和編寫智慧合約結合起來看。寫在前面閱讀本文前,你應該對以太坊、智慧合約有所瞭解,如果你還不瞭解,建議你先看以太坊是什麼除此之外,你最好還了解一些HTML及JavaScript知識。本文通過例項教大家來開發

搭建一個IdentityServer——單頁應用身份驗證

  上一篇文章我們介紹了Asp.net core中身份驗證的相關內容,並通過下圖描述了身份驗證及授權的流程:      注:改流程圖進行過修改,第三方使用者名稱密碼登陸後並不是直接獲得code/id_token/access_token,而是登入後可以訪問identityServer中受保護的資源(Au

網路——新一代中心分散式公有平臺

2018年被稱為是公有鏈發展的元年,這一年,應用與技術發展突飛猛進,區塊鏈技術正在加速革新中來,高速發展的同時也呈現全球化的特徵。但是隨著行業內技術瓶頸的問題,搭建一個與時俱進的基礎性服務開發平臺,保證區塊鏈平臺的技術優勢,同時又具備可持續的發展能力,成為亟待區

IOST——打造一個真正可用的中心區塊基礎架構

致 IOST 社群: 在過去的幾年中,各個區塊鏈專案都面臨著一個難題,即“不可能三角”——在可拓展性、安全性和去中心化之間尋求平衡並不容易,不少專案會因為走捷徑而破壞了區塊鏈的可靠性。IOST技術團隊一直致力於尋找“不可能三角”的解決方案,努力打造一個真正可用的去中心化基礎架構。 經