您的位置
主页 > 联盟资讯 » 正文

以德跑路、被攻击?一文详解去中心化交易所以德的底层运作协议

来源:www.jz265.com 点击:1612

雷锋网络人工智能财务回顾:加密货币市场的繁荣与蓬勃发展的交易所,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将如何从分散交易中获利以及如何维持4.52亿美元的市场价值。

基本上,0x白皮书是EtherDelta分散交换的一个很好的描述。 EtherDelta是最具吸引力的分散交易所之一。它主要基于以太坊,其最近的智能合约价值约为1.4亿美元。即使是技术最精明的用户也发现他们的用户界面难以使用,因此数量可能非常惊人。

EtherDelta UI

了解EtherDelta交换如何工作将使我们彻底了解分散交换的当前状态以及0x将如何工作。0x的本质是EtherDelta,具有更好的代码和附加功能。

下面我们将分析合同的两个最重要的方面:基金管理和交易逻辑。

EtherDelta智能合约

以太坊智能合约是一个代码块,可以以分布式和不可变的方式在以太坊区块链上执行。 EtherDelta和以太坊交换的核心逻辑在于这些智能合约。与传统节目相比,实施这些智能合约就像发射火箭一样。它需要超级安全和强大,因为任何错误都可能导致巨大的经济损失。

智能合约通常以人类可读的语言(称为Solidity)编写,并编译为以太坊虚拟机指令(EVM指令)。这些EVM指令实际上是人类无法读取的。有些项目选择永不共享智能合约的“Solidity”代码,以通过隐身实现安全。例如,Crypto Kitties遗传多样性智能合约是“封闭源”。即便如此,从理论上讲,我们通常可以将智能合约的原始结构放在一起,因此闭源智能合约总是令人厌烦。

基金管理

EtherDelta为用户提供了资金控制。即便如此,要使用EtherDelta资金,您需要将它们转移到智能合约中。资金基本上集中在智能合约上,但都是在分布式账本上完成的。我知道这很令人困惑。归根结底,用户可以随时撤回或存入资金而无需任何第三方干预。

EtherDelta资金管理能力代码

正如您在上面的摘要中所看到的,有两种移动货币的机制。一个用于移动ETH,这是以太坊的本地货币。另一个是移动令牌ERC20。事实上,大多数ICO和可交易代币实际上是基于泰芳区块链的ERC20代币。以太坊提供了一种处理这些标准令牌的特殊机制。

您可能会注意到,在上面的代码中,只有一种方法被标记为“已复制”。这是Solidity的一种安全机制,它明确允许将ETH资金发送到呼叫。任何想要存储令牌的客户都需要执行额外的步骤来授权转让ERC20令牌。

EtherDelta的资金管理看起来非常可靠。一些智能合约有一种管理员用户吸收资金的机制。这是IDEX分散交易智能合约的情况。人们应该对这种机制非常不耐烦。

交易逻辑

在EtherDelta中,新的市场订单可以存储在“链上”或“链下”。链式存储意味着它们存储在智能合约中,并且链式存储在第三方(例如中央服务器)中。实际上,由于成本和速度,EtherDelta不会在链上存储订单。相反,他们使用以下机制。

可以为给定的ERC20令牌提交公开买入或卖出订单。作为交换条件,此人是创客。另一个交易者可以浏览这些订单并选择执行它们。这个人被称为Taker。

接下来,获得订单开始订单的关键因素来自区块链的核心椭圆曲线数字签名算法,也可以称为ECDSA。这是非对称密码的一种特殊变体,允许公钥和私钥加密和签名验证。所有这些都是以计算上有益的方式完成的。

在更高的层次上,这就是它在EtherDelta中的工作方式:

制造商创建新订单:ERC20令牌,其金额,其ETH金额以及是否为买入或卖出订单。

Maker为此订单创建密码哈希(使用SHA3)

然后Maker使用以太坊私钥来签署订单哈希(使用ECDSA,尤其是比特币中也使用的Secp256k1)

Maker在链下发送订单和签名(在EtherDelta中,此步骤通过使用WebSockets通过一组服务器传递JSON消息来完成)

当Toker想要与订单交易时,签名和订单信息被发送到智能合约的交易功能。

智能合约验证签名来自Maker

智能合约确认订单尚未到期或已履行

转移资金并收取费用。

步骤5到7发生在合同代码中的以下关键位置:

在代码的第5行中,订单的金额,价格,到期日期和称为随机数的随机数被组合以生成散列。此哈希是一个32字节的序列,表示唯一的市场订单。

第7行首先检查链上的订单簿(这是一个未使用的订单簿),如果链上没有订单则验证签名。

此签名验证使用Maker签署的订单,并验证它是否来自Maker的帐户地址。如果订单参数有任何更改,则哈希将需要不同的签名。

验证完成后,tradeBalances功能将围绕资金和费用。

必须指出的是,第一个是从(主动)Taker收款,最后只收取Toker借记卡。我认为这对合同的安全性至关重要,因为它可以发送(并验证)错误的用户地址。如果这是故意的,Toke很容易赔钱。可以看出保护这种软件安全性是多么困难和具有挑战性。

结论

我们现在简要回顾了基于以太坊的DEX的本质。0x项目有很多内容,例如链式订单管理的开放标准,已经过全面测试和记录的智能合约,更多类型的交易机制等等。但是在DEX的核心,使用了相同的基本过程和密码原则。

但是,根据德国目前的表现,在安全性和可信度方面仍有许多方面需要改进。