當以太坊的新用戶跑來問為什麼要用DAPP,而不是傳統的網路服務時,我們總會說「去中心、去中心,因為去中心啊。」集中式網路服務受到相關部門監管,DAPP就更為便捷。
集中式網路可能在一夕之間丟失所有數據,但是DAPP可以和以太坊一樣長壽。在一般情況下,集中式服務是受限的,而DAPP可以自己發幣,並在交易所公開交易。
但人們不會告訴你,DAPP比以太坊的痛點更多,且更容易受到攻擊。並且,僅僅靠在分散式區塊鏈上運行,並不能使DAPP免受其發布者決策的影響。
隨著近期區塊鏈世界的養貓遊戲 「CryptoKitties」 的風行,很多人沒理解清楚DAPP是什麼,就參與了這個遊戲。在此,我將以 「CryptoKitties」為例,談談隱藏在DAPP背後的隱憂。
一人一指令,引來這款遊戲的冰河世紀
小貓的所有權儲存在一個單獨的合約裡 _「 KittyOwnership」,再上傳至以太坊主鏈。謝天謝地,這個合約沒有自毀功能,所以所有者不能自行殺掉小貓。但是,只要他想,他也可以做出同樣具有破壞性的事。
合約所有者可以暫停該合約(不需要任何節點同意)。如果其他節點也使用「合約升級」(upgrade contract)功能,則目前的合約就會被暫停,永遠不能被解凍。這也意味著小貓將永遠沈睡。
DAPP不是區塊鏈,在區塊鏈裡,你的一個指令,不足以對以太坊網路構成任何威脅,就算單個節點做出自殺性的毀滅行為,整個網路仍然可以完整運行。但是,以太坊有這些功能,並不能代表基於以太坊的「CryptoKitties」也具備這個功能。就以太坊而言,只有一個版本的「KittyOwnership合約」,而這個合約由單個的錢包所有。
數位貓可能沒那麼稀有
CryptoKitty的核心概念之一是,你有機會培育出一隻稀有且市價很好的貓。比如,一個人花了246以太(按當時價格計算的話為11.5萬美元)買了一隻「Geno貓 - 創世貓」。他可能覺得這種貓很獨特,他對貓的所有權將記錄在鏈,並將永久保存。現實也確實如此。
但是,控制數位貓性行為的基因科學合約不僅來源不明(以太坊上未核實),而且也可以被CEO取代。
function setGeneScienceAddress(address _address)external onlyCEO {
GeneScienceInterface candidateContract =
GeneScienceInterface(_address);
這意味著,「CryptoKitties」的CEO,隨時可以通過改變遺傳算法,來創造更多創世型貓,或者採取其他方式來影響數位貓的稀有性。一個人的貓本來是獨一無二,可能轉眼間就出現許許多多同款。
雖然「CryptoKitties」的合約所有者不太可能這樣做,但將來總有人這樣做。真正獨特的東西和社會協議所特有的東西,在價值上是有區別的。
數位貓可能長出另一條尾巴_分叉
以太坊運行和儲存的成本很高,所以DApp儲存的邏輯和數據,會盡可能簡潔。數位貓的唯一性,體現在它的無號數( unsigned numbers ):
讀取這些毫無意義的數字,並將其轉換為數位貓。這些數位貓的外觀、顏色、描述等的代碼,都被儲存在集中式伺服器,封閉原始碼中。
區塊鏈中,軟體由每個節點運行,每次升級都會出現硬/軟分叉,但與區塊鏈不同,「CryptoKitties分叉」可以在任何時候,單方面地改變核酸序列的解釋方式。
它可以為小貓增加一條尾巴、改變牠的顏色、調整牠的描述,甚至,把這隻小貓變成一隻汪星人。
如果個人擁有一隻貓及其基因的「ERC 721」,但他依然沒有生成貓的全部數據。這樣,你的貓就不會因為一個人的決策而發生改變。
但不必如此...
我必須明確指出,「CryptoKitties」的製造者這麼做,並不是出於惡意。他們利用當時可用的非常有限的基礎建設,已經盡可能使DAPP完美,並且成功吸引到許多新用戶。
但人們真正需要的是一種成熟的應用程式,整個代碼都在節點中運行。它的數據不僅是分散式的,也是可以擁有的。那些願意自己運行節點的人,都可以擁有這些數據。
只有實現這些的時候,我們才真正擁有了完全意義上的DAPP。
本文為巴比特資訊授權刊登,原文標題為「你的CryptoKitty怎麼樣了_為什麼DApp都沒有你想的那麼完美」