关闭 More 保存 重做 撤销 预览

   
关闭   当前为简洁模式,您可以更新模块,修改模块属性和数据,要使用完整的拖拽功能,请点击进入高级模式

重播

上一主題 下一主題
»
mini01020304
LV5 水面的小草
帖子    204
新博币    49 提现
提现    0
TA的勋章:勋章中心
     
    5184 2 | 显示全部楼层 |倒序浏览

    本文内容精选自华章鲜读专栏《深入理解以太坊》一书第八章“典型应用”。

    《深入理解以太坊》纸书预计出版时间:2018年9月

    华章鲜读上线:2018年7月(按章更新,纸书出版前更完本书全部内容)

    去中心化交易所借助智能合约技术运行,不得不说这是区块链技术带来的伟大变革。去中心化交易所的交易过程虽然没有中心化交易所的便利,但整个交易从入金到交易再到出金,整个过程还是比较快的。去中心化交易所产生的交易数已经占以太坊网络上全部交易的两成。
    Etherdelta是一个去中心化的交易所。从智能合约代码来看,只要是符合ERC20标准的代币都可以在Etherdelta上挂单交易。Etherdelta连接了以太坊全节点并使用metamask做交易签名,所有交易数据支持通过etherscan查看。Etherdelta的智能合约代码部署在以太坊网络上,由以太坊节点负责运行。合约代码一旦部署完成则无法修改,交易规则也无法变更。
    Etherdelta的基本工作原理如下:首先,搜集所有的挂单(Order),如果有其它使用者看到感兴趣的挂单,则可以申请与之交易(Trade)。如果挂单没有人问津,则挂单者可以取消(Cancel)。另外,智能合约只能操作自己账户的余额,无法操作其它账户,所以若要交易,需要先入金(Deposit),交易结束后可以通过出金(Withdraw)提出账户余额。
    出金入金的逻辑比较简单。合约用一个二维mapping结构来记录使用者的余额,余额只有当存钱、取钱和交易成功情况下才会有变更。除此之外,在存入ERC20代币时,并不是直接把ERC20代币转入合约,而是通过调用tranferFrom授权交易所操作用户账户。挂单是告诉智能合约,用户需要将多少代币换成以太币(或相反)。当有人愿意交易时,才会触发余额状态的改变。
    图8-2 去中心化交易所Etherdelta设计架构
    假设以下场景,用户A挂单某代币换以太币,而最后B会用以太币买代币,那么流程可以描述如下,每一步都是一个区块链交易:
    • 1. 用户A调用代币合约的approve函数,让交易所合约可以操作用户A的代币。
    • 2. 用户A调用交易所合约的depositToken函数,让交易所合约转移A的代币到交易所合约,更新余额状态后,用户A入金完毕。
    • 3. 用户B调用交易所合约的order挂单,表示希望以token换以太币。
    • 4. 用户B调用交易所合约的deposit,存入相对应的以太币。
    • 5. 用户B调用交易所合约的trade,并附上3生成的单号,交易所合约更新双方余额后交易成功。
    • 6. 用户A调用交易所合约的withdraw,提出以太币。
    • 7. 用户B调用交易所合约的withdrawToken,提出token。
    在金额波动大的时候,需要反复下单,以免过时的单子被成交。下单的时候,仅仅需要通过签名表示有下单意向,并不需要区块链来最终确认。因此,下单也可以转移到线下来做,节省手续费,同时提升挂单服务的吞吐量。
    Etherdelta最大的好处是交易全部在区块链上完成,而且跟中心化交易所不同,Etherdelta不持有任何私钥。当用户将加密货币存入时,其实是存储到智能合约中。这虽然不能保证Etherdelta绝对安全,但是比起中心化交易需要处理私钥,Etherdelta的方式只要确保智能合约本身的安全性,被盗的风险就相对降低了。最近一次Etherdelta的安全性事件是2017年底黑客通过DNS劫持,假造了一个完全模仿Etherdelta的网站来欺骗使用者。这种盗用方法可以攻击任何的交易所,无论是中心化还是去中心化的。
    Etherdelta的缺点有:
    • ● 没有自动撮合机制:使用者要自己找到需要的交易单,手动撮合。
    • ● 交易速度受限:受制于以太坊网络,每完成一笔交易时,需要等一段时间才会知道是否成功。如果多个使用者同时撮合一张买单,则需要等到下个区块产生时,才会知道自己有没有成功撮合该张订单。
    • ● 较多的区块链交易:从存款、建立买卖单、提款至少需要三个交易。

    个人签名

    ........................................

    六爷
    LV3 流浪的疾风
    帖子    46
    新博币    97 提现
    提现    0
    TA的勋章:勋章中心
       
      顶下
      个人签名

      ssa9208
      LV1 初心者
      帖子    1
      新博币    21 提现
      提现    0
         
        666
        个人签名

        您需要登录后才可以回帖 登录 | 立即注册

        本版积分规则

        快速回复 返回顶部 返回列表