作者:Luke Zhang
翻譯:卓張鳳 / 李麗詩

當以太坊的新用戶跑來問爲什麼要用 DAPP,而不是傳統的網絡服務時,我們總會說「去中心,去中心,因爲去中心啊。」集中式網絡服務受到相關部門監管,DAPP 就更爲便捷。集中式網絡可能在一夕之間丟失所有數據,但是 DAPP 可以和以太坊一樣長壽。默認情況下,集中式服務是受限的,而 DAPP 可以自己發幣,並在交易所公開交易。

但人們不會告訴你,DAPP 比以太坊的痛點更多,且更容易受到攻擊。並且,僅僅靠在分佈式區塊鏈上運行,並不能使 DAPP 免受其發佈者決策的影響。

隨着近期 CryptoKitty 的火爆,很多人沒理解清楚 DAPP 是什麼就參與進來。在此,我將以 CryptoKitty 爲例,談談隱藏在 DAPP 背後的隱患。

一人一指令,引來這款遊戲的冰河世紀

小貓的所有權存儲在一個單獨的合約裏 – KittyOwnership –再上傳至以太坊主鏈。謝天謝地,這個合約沒有自毀功能,所以所有者不能自行殺掉小貓。但是,只要他想,他也可以做出同樣具有破壞性的事。

function pause () external onlyCLevel whenNotPaused {

暫停 = 真 ;

}

合約所有者可以暫停該合同(不需要任何節點同意)。如果其他節點也使用「合約級」(upgradeContract)功能,則當前的合同暫停,永遠不能被解凍。這也意味着小貓將永遠沉睡。

DAPP 不是區塊鏈 –在區塊鏈裏,你的一個指令不足以對以太坊網絡構成任何威脅,就算單個節點做出自殺性的毀滅行爲,整個網絡仍然可以完整運行但是,以太坊有這些功能,並不能代表基於以太坊的 CryptoKitties 也具備這個功能。就以太坊而言,只有一個版本的 KittyOwnership 合約,而這合約由單個的錢包所有。這是非常中心化的表現了。

數字貓可能沒那麼稀有

你的 CryptoKitties 怎樣了?爲何 DApp 都沒有想象的完美?

CryptoKitty 的核心概念之一是,你有機會培育出一隻稀有且市價很好的貓。比如,一個人花了 246 以太(按當時價算 11.5 萬美元)買了一隻 Geno 貓 –創世貓。他可能覺得這種貓很獨特,他對貓的所有權將記錄在鏈,並將永久保存。現實也確實如此。

但是,控制數字貓性行爲的基因科學合約不僅來源不明(以太坊上未覈實),而且也可以被 CEO 取代。

function setGeneScienceAddress (address_address) external onlyCEO {

GeneScienceInterface candidateContract =

GeneScienceInterface (_address);

這意味着,CryptoKitties 的 CEO 隨時可以通過改變繁育算法,來創造更多創世型貓,或者採取其他方式來影響數字貓的稀有性。一個人的貓本來是獨一無二,可能轉眼間就出現許許多多同款。

雖然 CryptoKitty 合約所有者不太可能這樣做,但將來總有人這樣做。真正獨特的東西和社會協議所特有的東西,在價值上是有區別的。

數字貓可能長出另一條尾巴 – 分叉

以太坊運行和存儲的成本很高,所以 DApp 存儲的邏輯和數據會盡可能簡潔。數字貓的唯一性體現在它的無符號整數(無符號整數):

Uint256 基因

讀取這些毫無意義的整數,並將其轉換爲數字貓。這些數字貓的外觀,顏色,描述等的代碼,都被存儲在集中式服務器,封閉源代碼中。

區塊鏈中,軟件由每個節點運行,每次升級都會出現硬 / 軟分叉但與區塊鏈不同,CryptoKitties 分叉,可以在任何時候,單邊地改變基因序列的解釋方式。 –可以給小貓增加一個尾巴,改變它的顏色,調整它的描述,甚至,把這隻小貓變成一隻汪星人。

如果個人擁有一隻貓及其基因的 ERC-721 令牌,但他依然沒有生成貓的全部數據。這樣,你的貓就不會因爲一個人的決策而發生改變。

但不必如此…我必須明確指出,CryptoKitties 的製造者這麼做並不是出於惡意或惡意。他們利用當時可用的非常有限的基礎設施,已經儘可能使 DAPP 完美,並且成功吸引到許多新用戶。

但人們真正需要的是一種運行成熟的應用程序,整個代碼都在節點中運行。它的數據不僅是分佈式的,也是可以擁有的。那些願意自己運行節點的人都可以擁有這些數據。只有實現這些的時候,我們才真正擁有了完全意義上的 DAPP。