Everything that can be decentralized, will be decentralized.
——David A. Johnston
經過這幾年移動互聯網以及智能手機的普及,相信幾乎所有人都知道了什么是APP(Application的簡稱)。 時間轉眼邁入區塊鏈時代, 一個新的名詞DAPP(Decentralized Application)出現了。時常看到走在技術前沿的開發者在問:什么是DAPP? 如何開發一個DAPP? 為什么要開發DAPP而不是APP? 本文及接下來的一系列文章將會對DAPP的概念、優勢以及如何開發DAPP進行詳細的探討。本篇主要討論一些DAPP的基本概念。
根據David Johnston在文章DavidJohnstonCEO/DecentralizedApplications里的定義,只有當滿足以下所有條件時,一個應用才可以稱之為DAPP。
應用必須完全開源、自治并且沒有一個實體控制著該應用的大部分代幣(Token)。該應用必須能夠根據市場的反饋及技術要求進行升級,但是升級必須由應用的用戶達成共識之后才可以進行;
應用的數據必須加密后存儲在公開的區塊鏈上;
應用必須擁有代幣機制(可以使用已存在的代幣或者新發行一種內置代幣),礦工或者應用維護節點需要得到代幣獎勵;
應用代幣的產生必須依據標準的加密算法,有價值的節點可以根據該算法獲取應用的代幣獎勵。
根據以上的標準,比特幣、Asch都算是DAPP,以Bitcoin為例:
比特幣的代碼完全開源且不受中心組織的控制,所有比特幣的交易等信息都可以在區塊鏈上查到;
比特幣的代幣獎勵機制有預先內置的加密算法決定,無法修改。礦工由于維護比特幣節點的安全和穩定獲取獎勵;
所有比特幣區塊鏈上數據的修改都要經過大多數用戶的認可(共識)。
所以比特幣是一個DAPP,Asch是一個DAPP,而基于Asch開發的[CCTIME](CCTime 加密貨幣時訊)也是一個DAPP。不同的是,有些DAPP扮演了操作系統的角色(比如Ethereum、Asch),基于這些平臺可以很容易的開發出特定需求的DAPP,而有些DAPP(比如CCTIME)則是具體的應用。但它們都滿足上面的標準。
你可以從零開始,自己創造一個完整的區塊鏈系統并開發自己的應用。這相當于開發一個新的區塊鏈項目,比較費事費力且對個人能力要求較高。如果你只是一個普通的開發者想基于區塊鏈開發自己的應用,那選擇一個成熟的區塊鏈應用開發平臺就好了。這些平臺一般會提供完善的接口以及開發工具,你只需要操心業務邏輯及其實現就好了。關于區塊鏈的底層部分,這些平臺都會幫你處理好。
1. 開發平臺
目前最流行的開發平臺是Ethereum:Ethereum是目前全球除了比特幣以外第二大的區塊鏈項目,它就像一臺遍及全世界的分布式計算機,你只需要把你的應用部署在Ethereum上,應用的運行就可以由所有的Ethereum節點來保證了。應用的運行需要支付手續費(GAS)。缺點是需要學習一門新的語言Solidity。
另外一個建議就是基于筆者所在團隊開發的Asch(中文名叫做阿希)。只要掌握JavaScript,就可以基于Asch開發DAPP。 Asch采用的是側鏈架構,每一個DAPP就是一套側鏈。側鏈可以有獨立的區塊鏈和節點網絡。不同的DAPP之間互相不會影響。不同于Ethereum, Asch系統上DAPP數量的增加不會增加主鏈的負擔,是一套更加先進的機制。
2. 共識機制
共識機制決定了運行DAPP的各節點如何達成共識及獲取獎勵,目前最常用的共識機制有POW、POS以及DPOS等。POW依據計算資源分配獎勵,目前Bitcoin、Ethereum都采用了這種機制(不過Ethereum后面可能要遷移到POS)。Asch采用的是經過PBFT優化后的DPOS機制,核心系統是由 101 個委托人節點組成,委托人是被社區選舉的可信賬戶,得票最高的 101 個委托人負責生產區塊。得票排名未進入前 101 名的賬戶被稱為候選人,當他們將來獲得足夠多的選票并進入前 101 名后,將成為正式的委托人。基于阿希開發的DAPP默認采用這種共識機制,不過開發者可以自己修改并決定使用哪種共識機制。
3. 代幣分發
一般DAPP都會內置代幣(Token), 而想讓更多用戶參與到DAPP的維護與使用中的話,就需要考慮好如何把代幣分發到用戶手中。目前最常見的有以下幾種方案:
挖礦:以Bitcoin為例,任何擁有計算資源的人都可以加入到Bitcoin的挖礦中來,通過挖礦獎勵來獲取新的Bitcoin。
ICO: 可以簡單理解為眾籌。通過收集市面上已經成熟的其他代幣,根據一定比例兌換為本DAPP內的代幣來完成。Ethereum就是按照 1BTC/2000ETH的比例通過ICO眾籌到了很多BTC作為起始資金。這種分發方式在國內已被禁止。
空投: 將代幣免費分發到用戶手中。持有其他代幣的用戶只需要完成一個簡單的綁定流程,就可以得到代幣。最近的案例有CCTIME空投,具體方式可參考[CCTIME官網](CCTime 加密貨幣時訊)。
私募:這個就跟找投資一樣,依個人能力而定了。
一個DAPP的生命周期主要分為三部分:
1. 撰寫白皮書
白皮書描述了DAPP的技術原理、要解決的問題以及特點等。社區對白皮書的反饋可以添加到后期的更新中。
2. 分發代幣
可以采用上一章節描述的代幣分發機制的一種。
3. 開發DAPP,逐步進化完善
在DAPP發布之后,如果該DAPP走向了一個健康發展的道路,可以期望會有越來越多掌握各種技能的用戶加入到社區,一起維護DAPP的發展。這時早期開發者在社區所占的比重越來越小,DAPP的發展交由社區整體進行運營、更新。無論是比特幣還是比特股,早期開發者所起到的作用已經越來越小,去中心化的社區已經可以推動這些項目的繼續發展。
目前社會對DAPP開發的關注剛要開始,市面上還難以看到流行的DAPP應用。隨著區塊鏈技術的發展,傳統的C/S模式可能會被顛覆,開發者也不用再去買云服務器部署自己的應用。有了區塊鏈開發平臺,開發者可以很容易的把應用部署到區塊鏈上,這是一個基于全球服務器,7*24不間斷服務的應用平臺。另外由于DAPP代幣機制的存在,開發者可以很容易的基于代幣獲得價值回報。相信在不久的將來,DAPP會超越傳統APP,在人們的社會生活中扮演越來越重要的角色。
參考:
DavidJohnstonCEO/DecentralizedApplications