洞察以太坊智慧合約開發
許多人可能已經質疑了區塊鏈的總體有效性,特別是以太坊的有效性。一些人可能在好奇心中走得更遠,遇到了許多奇特的特性,例如分散、透明、沒有中介的信任和黑客抵抗。這很了不起,不是嗎?的確如此,但是……
在目前的狀態下,區塊鏈完全適合於完成範圍狹窄的任務,除非您考慮將“新增一些奈米技術以達到wow效果”——實際上,您可以調整幾乎任何東西來與此目標保持一致。當然,首先需要做一些事情,通過各種各樣的實驗來幫助理解潛在的需求,並顯示需求可能在哪裡,一個意想不到的死衚衕在哪裡,以及缺陷在哪裡。但是,您確實需要了解這些邊界,以便做出明智的決定,並在特定場景中嘗試並跳過它們是否合理。
順便說一句,以太坊不是有史以來最好的選項。也許,區塊鏈是實現目標的正確工具,儘管它是一種不同型別的區塊鏈。然而,我們將在本文中進一步提到“區塊鏈”時聯絡“以太坊”。
讓我們嘗試概述一下區塊鏈和智慧合約的特性,它們使解決表面上有希望的任務的過程變得無效或完全不可能。我想從一開始就指出,下面的特性是一般化的,因此對於特定的用例,仍然有相當可行的解決方案。因此,您應該將此列表視為在開始專案之前需要考慮的以太坊弱點的一個集合。
1、高進入壁壘
如果你的受眾是普通使用者而不是區塊鏈的狂熱者,那麼很少有人會費心給你的解決方案一個機會。想想看,他們不僅需要安裝帶有節點的MetaMaskor Mist,而且還需要購買以太幣,這對初學者來說是一個很重要的過程。因此,如果你想要覆蓋最多的受眾,那麼目前為止以太坊不是一個正確的選擇。例如,僅僅基於智慧合約建立線上商店可能不是一個好主意。
措施:
• 提供的優勢要超過劣勢。
• 目標受眾在該主題上具有一定的專業知識。
• 通過將區塊鏈邏輯移到後端,混淆使用者的區塊鏈邏輯是有意義的。
2、分散集中
無論你如何劃分,區塊鏈都是非常棒的,因為即使參與者彼此不信任,它也能工作。然而,只有當用戶是其私鑰的唯一所有者時,這個標誌才成立。這是簽署事務和從它們的地址做其他事情的主要先決條件。如果區塊鏈邏輯位於後端會發生什麼?金鑰以集中的方式使用,並且沒有機制來避免使用者不認可的事務。因此,剩下要做的就是希望伺服器足夠安全並得到適當的維護。
措施:
• 瞭解是否需要透明性和不可變性,或者是否需要操縱加密貨幣。如果不這樣做,那麼使用常規資料庫會更經濟、更方便。
• 詳細說明您的操作機制,以便技術保證到位。
3、所有資料都是公開的
不管智慧合約是如何編寫的,如果需要,相關方可以檢索其中任何資料欄位的值。事務歷史也是如此。因此,如果您記錄並保留關於使用者的任何個人身份資訊,比如他們的電子郵件地址和姓名,那麼這些使用者所做的一切都是公開可訪問的。因此,您可能不得不在此基礎上進行某種型別的加密。如果是這樣,它的金鑰必須儲存在接收者的終端,這意味著使用者必須再次信任第三方提供他們的個人資料。使用普通的私有儲存來儲存或多或少有些敏感的資訊可能是一個更好的主意。如果你打算簽訂基於區塊鏈的合約,那麼你的損失可能大於收益。
措施:
• 瞭解您的智慧合約邏輯是否需要使用者的個人資料。如果有,考慮使用雜湊而不是適當的資料。
4、區塊鏈不是一臺超級計算機
有些人可能會認為,礦工利用巨大的處理能力可以進行良性計算,但這是一種誤解。恕我直言:以太坊的生產力類似於嵌入式系統的生產力,因為它涉及有限的資源、有限的記憶體和有限的“韌體”(合約位元組碼)大小。因此,應該將最大限度的非臨界計算移出鏈。這就是為什麼在智慧合約或加密貨幣之類的東西中執行復雜資料分析很難實現的原因。
措施:
• 任何型別的計算都不要使用區塊鏈。
• 如果需要進行與區塊鏈相關的計算,請考慮利用Oraclize的計算特性
5、區塊鏈不是一個通用儲存
一些人認為區塊鏈可以用來儲存資訊或文件。在這方面需要注意的是:首先,以這種方式儲存資料是昂貴的;其次,區塊鏈不適合像搜尋這樣的東西——您要麼需要有鍵值對映,這會給每個條目增加額外的成本,或者您必須手動查詢感興趣的資訊。但是,沒有許可權管理。因此,用區塊鏈替換傳統的資料庫沒有多大意義,除非您確切地知道為什麼需要它。當涉及到儲存特定檔案時,請記住公共可訪問性方面:例如,如果您儲存一個IPFS連結,每個人都會看到它,並可以下載您儲存在那裡的所有內容。長話短說,如果你打算在區塊鏈上儲存個人照片,請三思。
措施:
• 您最好簡單地儲存一個雜湊值,以驗證所有儲存在鏈外的內容。
• 只儲存智慧合約工作邏輯所需的資料。
6、將區塊鏈與現實世界繫結
區塊鏈本身可以很容易地傳送代幣,但如何傳送你為他們購買的東西?即使它是一個檔案,您如何驗證傳送它而不涉及第三方的事實?這裡有一個快速的答案:這並不容易,因為我們假設雙方都想欺騙對方,所以我們需要一些驗證以及加密和解密的例項。如果有爭議,你就不能沒有非鏈式計算或裁判。
很明顯,對於實物商品或服務來說,整個過程將變得更加複雜,因為需要輸入一些資訊,粗略地說,這些商品已經被接收了。這個人不能是利益相關方,這意味著他或她是我們應該信任的第三方。在這種情況下,我們的區塊鏈解決方案在這個裁判的形式下有一個薄弱環節。而且,假設我們相信那個人,為什麼不把其他的事情都託付給他或她呢,例如,託管一個常規的資料庫並進行支付?這是你在開始區塊鏈計劃之前應該問自己的一個基本問題。舉個例子,我真的不明白線上下商店裡,你提供一個代幣來換取折扣有什麼用。
措施:
• 給自己一個明確的答案,為什麼集中式邏輯不適合。如果你做不到,那就放棄你的區塊鏈想法。
7、總有人為失誤的時候
如果你不小心把錢轉錯了人,或者你的銀行賬戶被黑了,你可以提交一個技術支援票,然後有一段時間取消或回滾交易。有了智慧合約,您就不能手工做程式碼中沒有涉及到的事情。這再次讓我們意識到,有必要聘請一名裁判,他將擁有巨大的特權,使整個解決方案几乎集中起來。
措施:
在適當的情況下,智慧合約可以延遲資金轉移。
8、交易需要時間
如果您有一個動態系統,其特性是永久地改變狀態和邏輯,那麼等待時間很可能會讓您不滿意。例如,在以太坊中,正常的事務驗證時間是半分鐘甚至更長。即使您的解決方案不需要額外的幾秒鐘,您仍然應該考慮不確定事務超時的可能性,並定義足夠的時間間隔。因此,到目前為止,像撲克這樣的遊戲要麼完全不可能在以太坊智慧合約的基礎上進行創造,要麼它們非常原始,需要強調離線邏輯。
措施:
• 如果您打算頻繁地查詢區塊鏈,那麼以太坊可能不適合您,並且您可能不應該將您的願景僅限於區塊鏈。
• 如果可能,將多個事務合併為一個事務,執行邏輯鏈外的部分。
• 在最壞的情況下,你可以在適當的時候提高費用 (執行一個操作的費用)。
• 如果一個事務需要很長時間才能完成,您可以指定更高的價格並重新提交它。
• 到目前為止,審查規避還不完美
如果您打算使用區塊鏈來抵制政府或類似的東西,請記住web服務仍然是一個集中的實體,即使它是基於區塊鏈的。換句話說,域名或IP地址仍然很容易阻塞,使用者必須知道映象地址或找到VPN服務。這樣做的好處是您不必進行資料庫備份,而且通過了解以太坊網路中的地址,您可以通過不太使用者友好的技術獲得訪問許可權,比如mist、MyEtherWallet、Etherscan等。然而,審查制度仍是一個問題。
措施:
• 抗阻塞能力無疑是一個好處,但是您不應該僅僅基於這個事實就決定使用區塊鏈。
有什麼替代方案?
有很多。其他區塊鏈和非區塊鏈解決方案可以犧牲其分散性、開放性或無限制的使用者受眾,以換取更高的事務速度、可靠的隱私保護等。這些例子包括EOS、Hyperledger、Exonum、Hashgraph、Corda等的解決方案。不過,一個流行的品牌名稱仍然是一個重要因素。它意味著擁有龐大的使用者群,大量的應用程式,資料管理和開發工具,以及嚴謹的測試機制。
有那麼糟糕嗎?
貫穿上述所有觀點的根本問題是,除了區塊鏈,什麼都不選。這項技術應該能解決這個問題。將區塊鏈整合到已經解決的任務中不太可能使解決方案更加有效。例如,如果你是賭博業的新玩家,想要開一家賭場,那麼你最關心的就是贏得聲譽,展示正直,吸引使用者群。通過提供一個基於區塊鏈的解決方案,你至少可以在理論上保證客戶的透明度,儘管很少有人會在他們開始玩之前審計你的聰明合約。通過這種方式,您還可以吸引那些手頭有備用加密貨幣資產和大量使用該資產的人。在某種程度上,你的目標實現了。
另一方面,如果您打算在信使r的架構中新增區塊鏈,那麼您可能無法解決任何問題,比如審查和隱私風險。相反,你會得到新的問題。
當用戶數量增長,購買加密貨幣變得比現在更容易的時候,找到更好的用例可能是不久的事情。但是,一般來說,考慮以下應用程式域是有意義的:
• 官僚主義的和耗時的過程,如匯款到國外和繁瑣的文書工作。
• 基於平臺信任的流程,包括慈善基金和賭場。
• 管理在不同領域或不相關的公司使用的資料:旅遊經營者,貸款歷史,和各種黑名單。
• 控制本質上不可信的過程,比如投票和籌款。
這不一定意味著區塊鏈能夠完美地融入其中。您應該始終掌握其他更優化的技術。你的思路應該集中在解決一個特定的問題上,而不是就簡單將區塊鏈嵌入到你的活動中。