當前位置:
首頁 > 新聞 > 以德跑路、被攻擊?一文詳解去中心化交易所以德的底層運作協議

以德跑路、被攻擊?一文詳解去中心化交易所以德的底層運作協議

雷鋒網AI金融評論按:加密貨幣市場的繁榮離不開蓬勃發展的交易所的支撐,Poloniex、Bittrex、Bitfinex、Yunbi、Okcoin、Kraken、Liqui等等,它們為區塊鏈市場的資產代幣化發展提供了全球化全天候的充足流動性。然而這些中心化交易所存在一些顯著的風險和問題。因此基於區塊鏈去中心的特性在區塊鏈網路上來搭建去中心化交易所的嘗試,看起來就順理成章了。

然而去中心化交易所目前還屬於比較年輕的技術,對很多人來說都有些陌生。日前hackernoon知名博主Dominiek Ter Heide發布博文,簡單探討了去中心化交易所的內部運作。雷鋒網為您做如下編譯:

以德跑路、被攻擊?一文詳解去中心化交易所以德的底層運作協議

世界上大多數的加密貨幣交易都是通過Coinbase / GDax,Binance,Bittrex等中心化交易所完成的。這些交易所管理著人們的資本(和私人密鑰)並幫助交易。在過去的幾年乃至幾周中,發生過一些高調的黑客事件,竊取了大量的資金。我認為,在短期內這個問題不太可能得到解決,且只會變得更糟。軟體和硬體越來越複雜,這將導致更嚴重的安全漏洞,例如英特爾CPU固件中最近發生的熔斷和幽靈漏洞。

去中心化交易所也被稱為DEX,是一種促使在分散式賬本上進行加密貨幣交易的新技術。這些交易所將資金和交易的控制權交還給用戶,消除了單個故障點。其次,政府徵稅或資金沒收幾乎不可能再發生。這對宏觀經濟和地緣政治格局可以說具有深遠的長期影響。

然而,DEX技術仍然年輕,仍然有相當多不足之處,包括某些攻擊途經。在這篇文章中,我們將研究去中心化交易所的內部運作。

EtherDelta和0x

有一個叫做0x(Zero X)的流行項目。該項目的目標是為基於以太坊的去中心化交易所提供開放協議。該項目還出售$ ZRX代幣,目前交易市值 5.42億美元。(順便說一句,我持有其中一些)。該代幣的目的是為智能合約和協議提供治理機制。

0x有一些很好的想法,開源代碼應用現象和文件記錄。然而,我不確定0x要如何通過去中心化交易來盈利,以及如何維持5.42億美元的市值。

基本上來說,0x白皮書很好的描述了EtherDelta去中心化交易所。EtherDelta是首批具備吸引力的去中心化交易所之一。它主要基於以太坊運行,其最近的智能合約價值約為1.4億美元。即使是最懂技術的用戶,也覺得它們的用戶界面很難使用,因此這個數額可以說是相當驚人的。

EtherDelta UI

了解EtherDelta交易所如何工作,就能讓我們透徹的了解去中心化交易所的當前狀態,以及0x將如何運行。0x的本質是具有更好的代碼和附加功能的EtherDelta。

下面我們將分析合同中最重要的兩個方面:資金管理和交易邏輯。

EtherDelta智能合約

以太坊智能合約是能夠以分散式和不可變的方式在以太坊區塊鏈上執行的代碼塊。EtherDelta和基於以太坊的交易所的核心邏輯就在於這些智能合約。與傳統的編程相比,實施這些智能合約就像是發射火箭。需要超級安全和強大,因為任何錯誤都可能導致巨額的資金損失。

智能合同通常是用人類可讀的語言(稱為Solidity)編寫的,被編譯成以太坊虛擬計算機指令(Ethereum Virtual Machine instructions,簡稱EVM指令)。這些EVM指令實際上是人類無法讀取的。有些項目選擇永遠不共享智能合約的「Solidity」代碼,通過隱匿實現安全性。例如,Crypto Kitties(加密貓咪)遺傳多樣性智能合約就是「閉源」的。即便如此,從理論上講,我們通常都能夠把智能合約的原始結構拼湊起來,所以閉源智能合約總讓人感到厭倦。

EtherDelta合同的Solidity代碼可以在Etherscan這裡免費獲得:https://etherscan.io/address/0x8d12a197cb00d4747a1fe03395095ce2a5cc6819

資金管理

EtherDelta將資金控制權完全給了用戶。即便如此,要使用EtherDelta資金,需要將其轉移到智能合約中。資金基本上集中在智能合約中,但全部在分散式賬本上完成。我知道這令人困惑。歸根到底,在任何時候用戶都可以在沒有任何第三方介入的情況下提取或存入資金。

EtherDelta資金管理Solidity代碼

正如你在上面的摘要中所看到的,有兩種移動資金的機制。一個是針對移動ETH——也就是以太坊的本幣。另一個是移動代幣ERC20。事實上,現在大多數ICO和可交易代幣實際上就是基於太坊區塊鏈的ERC20代幣。以太坊提供了處理這些標準代幣的特殊機制。

您可能會注意到,在上面的代碼中,只有一種方法被標記為「應付」。這是Solidity的一個安全機制,明確允許將ETH資金髮給該調用。任何客戶要存儲代幣都需要執行額外的步驟,來授權ERC20代幣的轉移。

EtherDelta的資金管理看起來非常穩固。一些智能合同有管理員用戶吸取資金的機制。IDEX分散交易智能合約就是這種情況。人們對這樣的機制應該是很不耐煩的。

交易邏輯

在EtherDelta中,新的市場訂單可以「鏈上」或「鏈下」存儲。鏈上存儲意味著它們被存儲在智能合約中,鏈下則意味著存儲在第三方如中央伺服器中。在實踐中,由於成本和速度的影響,EtherDelta沒有鏈上存儲訂單。相反,它們使用以下機制。

人們可以為給定的ERC20代幣提交一個公開的買入或賣出定單——用交換術語來說,這個人就是Maker。另一個交易者可以瀏覽這些訂單,並選擇執行它們——這個人被稱為Taker。

接下來,使鏈下訂單開始運轉的關鍵因素來自區塊鏈的核心——橢圓曲線數字簽名演算法 ,也可以簡稱為ECDSA。這是不對稱密碼的一個特殊變體,它允許公鑰和私鑰加密以及簽名驗證——所有這些都以有利於計算的方式進行。

以德跑路、被攻擊?一文詳解去中心化交易所以德的底層運作協議

在較高層面來說,這是它在EtherDelta中的工作原理:

  • Maker創建一個新的訂單:ERC20代幣,它的數額,它的ETH金額,以及是買入還是賣出訂單。

  • Maker創建該訂單的密碼散列(使用SHA3)

  • 然後Maker使用以太坊私鑰為訂單散列簽名(使用ECDSA,還有特別是在比特幣中也使用的Secp256k1來實現)

  • Maker在鏈下發送訂單以及簽名(在EtherDelta中,這一個步驟通過一組伺服器用WebSockets傳遞JSON消息來完成)

  • 當Taker想要與該訂單進行交易時,簽名和訂單信息被發送到智能合約的交易功能。

  • 智能合約驗證簽名來源於Maker

  • 智能合約確認訂單沒有過期或已經履行

  • 資金轉移並收取費用。

步驟5到7發生在合同代碼的以下關鍵位置:

代碼的第5行中,訂單的金額、價格、到期日期和被稱為nonce的一次隨機數,一起生成一個散列。這個散列是一個32位元組的序列,代表一個獨一無二的市場訂單。

第7行首先檢查鏈上訂單簿(是未使用過的訂單簿),如果沒有鏈上訂單,則對簽名進行驗證。

此簽名驗證採用由Maker簽署的訂單——並驗證是否源自Maker的帳戶地址。如果訂單參數有任何更改,該散列將需要不同的簽名。

一旦驗證完成,tradeBalances功能將圍繞金錢並收費。

以德跑路、被攻擊?一文詳解去中心化交易所以德的底層運作協議

必須指出的是,首先是從(活躍的)Taker處收錢,最後只記入Taker借方。我認為這對合同的安全至關重要,因為有可能會發送(並驗證)一個錯誤的用戶地址。如果這是有意為之,會很容易讓Taker賠錢。可見,保護這樣的軟體安全是多麼棘手和具有挑戰性。

結論

我們現在已經簡單的回顧了基於以太坊的DEX的本質。0x項目還有很多的內容,比如鏈下訂單管理的開放標準,經過充分測試和記錄的智能合約,更多類型的交易機制等等。但是在DEX的核心,都使用了相同的基本流程和密碼原則。

但據目前以德的表現來說,在安全、可信方面,協議仍有許多待完善之處。

在以後的文章中,雷鋒網將繼續為您編譯一些關於DEX以及以太坊智能合約的內容,敬請期待。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

小鵬汽車量產版 SUV 小鵬 G3 亮相,「太空駕駛座艙」 奪眼球
多倫多企業級數字化解決方案提供商Blanc Labs加入R3區塊鏈聯盟

TAG:雷鋒網 |