簡介Dapp(Decentralized Application)



  • 原文地址:https://medium.com/@ksin751119/ethereum-dapp初心者之路-1-簡介dapp-decentralized-application-cf12ce581f90

    現今大部份Application像是Gmail、Facebook或Twitter等,都是採用Centralized(中心化)架構。

    Centralized Application背後都會有一間公司或組織(例如Facebook、Google或Amazon)來進行管理。這些Application通常運行在某些特定的電腦上,並且分散在世界各地不同的資料中心。

    alt text

    目前的網路服務大部分都有單一公司或組織提供

    Centralized Application問題

    現今Centralized Application十分普遍,管理和操作上也非常方便。但也存在一些問題:

    • Single Points Of Failure(SPOF): 單一節點故障。

    當系統中某個零件故障會造成整個系統無法正常運作。

    容易被攻擊: 因為是中心化的架構,容易成為駭客或有心人士攻擊的目標。有一些交易所因為這個原因,而被駭客攻擊遭受到鉅額的損失。

    • 昂貴的中介費用: 人與人基本上是不可信任的,所以我們需要一個中立可信的第三方機構幫我們做擔保。

    Paypal或支付寶就是擔任這個角色。甚至連銀行也屬於信任的第三方。所以我們才能利用匯款或轉帳的服務將金錢轉移給他人。第三方機構為了維持服務通常會收取昂貴的中介費用如轉帳手續費。

    • 喪失個人資料的自主權: 我們在使用網路服務時通常會伴隨產生出很多使用者資料(User Data)。這些資料由我們產生但我們卻無法使用這些資料。這些資料通常會被服務背後的公司拿去分析利用或著販售給廣告商以獲取利利潤。

    因為Centralized Application有著上述的問題,關於Dapp(Decentralized Application)的討論也就隨之而起。

    alt text

    Centralized Application架構,易於被攻擊且使用者資料還易於被公司販售獲利

    Decentralized Application

    Dapp(Decentralized Application)定義是運行在Decentralized Newtork上的Application。Decentralized Network指的是Peer-To-Peer(P2P)架構的網路。Blockchain本身就是P2P網路的架構。在Blockchain網路下的資料具有不可篡改的特性。在P2P的網路中,每一台電腦的地位都一樣,且擁有相同的資料和皆能執行Dapp的程式碼。

    Dapp必須符合以下4項標準:

    • Dapp必須要是完全Open Source和自我管理。任何一個機構都不應該控制大部分的Token。Dapp所有的更動都必須通過社區大家的一致同意才能所變動。
    • Dapp的所有資料和紀錄都必須經過加密保存在公開的Blockchain網路上以防止Single Points Of Failure(SPOF)。
    • Dapp必須要使用Cryptographic Token,使用者可以利用Token換取Dapp的服務。所有提供價值貢獻的人(ex. miner)都可以獲得Token以示獎勵。
    • Dapp Token的產生必須經由crytptographic algorithm像是PoW或PoS的方式來得到。

    Decentralized Application解決問題

    基於Dapp的特性就可以來解決Centralized Application的問題

    P2P網路中只要存有一台以上的電腦運作,在網路上的Dapp便不會中斷,也就沒有Single Points Of Failure(SPOF)問題。

    資料存在網路中的每一台電腦上,並無一個集中存放的地方,使得駭客難以攻擊。除非駭客有能力在一瞬之間同時改變網路中51%電腦的資料(這就是所謂51%算力攻擊),但這所需付出的代價太高變得幾乎不可能執行。

    Blockchain網路具有資料不可篡改的特性,當Dapp佈署在Blockchain網路中就不可被篡改。即使是撰寫和佈署Dapp的人也無法佈署完後對Dapp做任何的修改。我們可以放心相信放在Blockchain網路的Dapp,而不需要第三方機構來幫我們做擔保。只需要付出少許的手續費用就可以在Blockchain網路上交易。

    因為Open Source和去中介化的特性,第三方機構無法直接獲取使用服務中所產生出來的User Data,加上Token機制讓我們自己可以選擇保留這些User Data或者將User Data賣給廣告商來獲利,針對User Data能有更高的掌握度。

    Decentralized Application架構可以幫我們解決駭客攻擊奪回User Data的自主權

    alt text

    Decentralized Application類型

    依照Ethereum white paper所述,主要可以把Dapp分成三種類型:

    • Financial applications: Dapp只處理金錢方面的問題並協助使用者進行錢包管理和交易。最著名的Dapp就是Bitcoin。
    • Semi-financial applications: 這類Dapp除了處理金錢之外也會處理chain以外的資訊。像是保險方面的Dapp,飛機延誤可以自動處理理賠事項(Fizzy)。ICO也算在這個類型之中。
    • Non-financial applications: 最後一種Dapp就完全與處理金錢無關,它們指專注在使用Dapp的特性來解決問題。像是去中心化政府或線上投票系統就屬於這個類型。

    Blockchain也被稱之為Web3.0,因為基於Blockchain架構我們可以在上面開發各式各樣的Dapp。下圖是網路上有人整理了一下Web2.0和Web3.0服務的對應表格。

    0_1539606670883_微信图片_20181015203047.png
    表格可以看到一些已經運行在Web2.0的Application所對應在Web3.0的DAAPs

    BitTorrent: 非Blockcahin的DAPP

    BitTorrent,也就是我們俗稱的BT。它是P2P網路架構的檔案下載軟體,它將檔案切割並複製到每一台電腦上面,沒有一個中央存放檔案的地方。在這個檔案分享網路下,每個人都可以去其他的人的電腦把檔案下載到自己的電腦。雖然BitTorrent不是這裡所定義的Dapp,但它在概念上非常相似。一樣是建立在P2P的網路下,沒有中心化的機構來管理。差別在於它不是建立在Blockchain的網路且沒有Token的機制。其實Decentralized Applications這個概念很早就出現,而我們也真真確確在生活中運用過它,所以Dapp並不是一個遙不可及的概念。

    結尾

    Blockchain的技術在2008年被提出來。Bitcoin在2009年才有第一個block。這幾年人們也發現了Centralized Application的一些問題,Blockchain的出現使得Decentralized Applications可行性大幅增加。有些人會把Blockchain跟早期Web的發展放在一起做比較。Web走了多少歲月到現在已經成為了人們生活不可或缺的養分。而Blockchain呢?Blockchain現在還處在於一個非常早期的階段,如同Web早期的發展,還有需多問題尚待解決。等到經過幾年後,Blockchain技術越發成熟,相信會有更多有趣的Dapp會像雨後春筍般出現在我們生活之中。不是每個Application都適合做成Dapp,但未來Dapp肯定會在我們生活中佔有一席之地吧!

    以上是我對於Dapp(Decentralized Application)的一些理解。若觀念或理解有誤,也拜託各位大大不吝嗇給於糾正。若有問題也歡迎留言在下面,我們可以一起討論尋找答案。希望這篇文章可以給各位有一點點的幫助,下篇見囉!

    Reference:
    [1] https://medium.com/ethereum-dapp-builder/what-are-decentralized-applications-dapps-ed7459a27786
    [2] https://www.youtube.com/watch?v=XGa-8txQo6E
    [3] https://espeo.eu/blog/dapps-blockchain-applications/
    [4] https://www.youtube.com/watch?v=gSQXq2_j-mw
    [5] https://www.youtube.com/watch?v=-_Qs0XdPpw8

    若您覺得我的文章有所幫助,歡迎按下「拍手」給我支持並轉發給你的朋友們!
    若想請小弟喝杯咖啡也非常歡迎喔XD
    BTC: 35wkJ1LvrjnqjxaUqfkx3XCnRrmiZv57XJ
    ETH: 0xe5206a8d961a2af5d0be28549432db99e22c5be5
    LTC: LYQFY4sKU8CWqae8DCQ8NTLcwZMazdHuKB
    EthereumDecentralized AppsBlockchainSmart Contracts

    原文地址:https://medium.com/@ksin751119/ethereum-dapp初心者之路-1-簡介dapp-decentralized-application-cf12ce581f90