社区观点 | 理解比原链MOV链上交换协议

简介:

去中心化交换协议的发展

从Bitshare,Stellar到以太坊上的Etherdelta,Bancor,0x协议,去中心化交换协议也经过了好几代发展和很多模式的探索,每一代都通过前面的协议的痛点来进行改进和深化,

主要分为:

  1. 链上orderbook,链上结算;
  2. 链下orderbook,链上结算;
  3. 基于智能合约管理的资金池;

链上orderbook,链上结算

最早的 基于以太坊的去中心化交换协议的成功探索非Etherdelta莫属,曾一度占据去中心化交换市场的半壁江山。Etherdelta是较为完全的去中心化模式,用户充值、挂单、吃单、结算及提现全部在链上完成。

具体运行机制如下:

Etherdelta的整个运行都在链上完成,用户保管自己的私钥,平台不会触碰用户资产,保证了资产和交换的安全、透明。但其弊病也较为明显:

1) 由于所有的交换环节都在链上完成,且每一个挂单、撤单、吃单等操作都会消耗GAS费用,导致延时高、成本效益低下。

2) 存在矿工非法预先交换的可能。

链下orderbook,链上结算

为了解决纯链上效率低下,且手续费低廉的问题,0x协议引入了relayer(中继)的概念,所有订单都发给relayer,无需上链,只有成交才会上链。

0x的“链下订单中继、链上最终结算”运作模式如下:

0x协议的主要问题在于,如果需要共享订单,运用0x协议的交易所每一笔成交都需要广播出来,以便其他交易所得知和确认,因此单纯地使用0x协议无法实现瞬时成交;另外,由于需要将ETH转化为WETH,也增加了交换成本。

基于智能合约管理的资金池;

最具典型的资金池模式有Bancor和Kyber。所谓资金池,可以理解为平台利用智能合约建立了一个用于储备各类资产的池子,资金池中资产的提供方可以是普通用户或者做市商。

MOV去中心化交换协议介绍

我们在考察各个交换协议时,其实纯链上交换协议才是最发挥区块链价值的方案,但是因为以太坊等公链性能问题,导致像Etherdelta这样的纯链上方案受挫,才有0x这样的链下orderbook出现,来改善性能的问题。究其根本,是本身的基础设施不完善,导致的迫不得已的改变。所以比原链MOV从一开始就先着手解决区块链性能问题。

高速侧链是保障

MOV采用了高速侧链Vapor pro作为底层的基础设施,Vapor每0.5s出块,每个区块可以容纳8000笔交易,即每秒16000 tps,在增大区块,提升节点服务器的情况下,仍然有进一步提升空间。这个性能能够满足当前非高峰时段的用户需求,可以比肩部分的中心化的方案。

同时MOV采用了DPoS作为共识机制,虽然丧失了一定的去中心化,但是增加了可以进行链上撮合的门槛,提高准入门槛可以更好的防止部分有不良企图的“矿工”进行预先交易,同时因为链上撮合本身具有一定的撮合收入,所以通过这个经济激励可以防止DPoS的出块节点作恶来破坏系统(其作恶的成本高于其不作恶的正常收益)。

订单共享

0x协议为了解决性能问题,所以采用链下orderbook,但带来的问题就是订单的割裂,采用0x协议的各个不同参与方,为了自己的利益,必然不会将自己用户的订单共享出来,从而影响整体的交易深度,而mov采用链上orderbook,所有的用户订单都在链上,公开透明,所有参与撮合的共识节点都可以共享这个深度,从而增强mov上资产的流动性。

磁力合约的优势

因为比原链是基于比特币的UTXO模型,所以在UTXO模型上的磁力合约来做交换协议具有更大的优势,因为UTXO模型本身以资产为基本单位,和账户模型相比,对于资产的操作更加简易和方便,我们来对比两者的流程。

以0x为例,0x整个交互流程:

  • Maker授权DEX合约访问自己的Token A余额
  • Maker创建订单(订单有固定的格式)并用私钥签名
  • Maker使用任意通信手段广播订单
  • Taker接收订单并愿意执行
  • Taker授权DEX合约访问自己的Token B余额
  • Taker提交订单给DEX
  • DEX验证订单的合法性,在两个账户之间按照订单上的汇率进行转账

那么磁力合约的整个流程就简易很多:

  • Maker创建一个磁力合约(在磁力合约中放入自己的资产,并指定要兑换的资产和数量)
  • Taker创建一个磁力合约(在磁力合约中放入自己的资产,并指定要兑换的资产和数量)
  • 共识节点根据合约中的价格和数量,触发能够匹配的磁力合约,并交换两者的资产。

不仅在流程上简单,手续费因为流程的简化也会更低,我们只要在用户设置磁力合约的时候收取手续费即可,事实上,我们还可以尝试0手续费,因为使用DPoS的模式,关于手续费,各个节点之间的博弈也不会太复杂。

跨链资产的生态

我们观察现行以太坊上的去中心化交换协议,还停留在以太坊本身的生态上,虽然不能否认以太坊生态的强大,但其实外面才是更大的世界,当然跨链是后续的主旋律,包括Cosmos和Polkdot都是想做跨链的事情,所以MOV在一开始就考虑到了跨链的事情,通过OFMF将比原链之外的资产映射到比原链上来,然后形成囊括所有数字资产的大生态,用户在mov中体验的是跟中心化一样的体验,可以交易多种资产,这些资产也不单独是在某一个链的生态。

MOV磁力合约详解

这里再详细展开一下MOV磁力合约,看它到底是如何实现的。

MOV磁力合约本质上是一个挂单合约,不管是Taker还是Maker都需要生成这样的一个合约,本质上其实并不区分Maker和Taker,只是根据挂单的先后来区分Maker和Taker,两者在相反的交易对上提升了交易深度,实际上也可以认为都是Maker。

挂单交易合约是高级版的币币交易合约,合约的本质目的是锁定任意数量的资产A,愿意以某特定的汇率兑换资产B。合约的内部应该保存有四个常量(资产A的ID不需要存因为合约锁定的是资产A):期望兑换的资产B的ID, 期望兑换的汇率(使用分子分母方式解决浮点支持问题),和挂单用户的公钥,挂单用户接受资产B的地址。合约可以通过三种模式解锁:

全部解锁:所有合约中的资产A都被兑换成了资产B并转入挂单用户的地址中。

部分解决:部分合约中的资产A被兑换成了资产B并转入挂单用户的地址中,剩余的资产A通过递归合约的模式从新锁定回合约本身(新生成的UTXO)。

取消挂单:挂单用户通过私钥签名将合约中的资产A都转回自己的地址。

磁力合约Equity的代码如下:

MagneticContract source code:
contract MagneticContract(requestedAsset: Asset,
                          ratioNumerator: Integer,
                          ratioDenominator: Integer,
                          sellerProgram: Program,
                          standardProgram: Program,
                          sellerKey: PublicKey) locks valueAmount of valueAsset {
 clause partialTrade(exchangeAmount: Amount) {
  define actualAmount: Integer = exchangeAmount * ratioDenominator / ratioNumerator
  verify actualAmount > 0 && actualAmount < valueAmount
  lock exchangeAmount of requestedAsset with sellerProgram
  lock valueAmount-actualAmount of valueAsset with standardProgram
  unlock actualAmount of valueAsset
 }

 clause fullTrade() {
  define requestedAmount: Integer = valueAmount * ratioNumerator / ratioDenominator
  verify requestedAmount > 0
  lock requestedAmount of requestedAsset with sellerProgram
  unlock valueAmount of valueAsset
 }
 clause cancel(sellerSig: Signature) {
  verify checkTxSig(sellerKey, sellerSig)
  unlock valueAmount of valueAsset
 }

}

fullTrade()就是全部解锁方法;partialTrade()是部分解锁,当触发部分解锁时,会讲为解锁的资产放入一个新生成磁力合约中去,从而等待下一次匹配;cancel()方法将用户的资产转回自己的地址,取消这个合约。

我们在看看磁力合约的输入参数:

type MagneticContractArgs struct {
 RequestedAsset   bc.AssetID
 RatioMolecule    int64
 RatioDenominator int64
 SellerProgram    []byte
 SellerKey        []byte
}

RequestedAsset是想要兑换的的资产,RatioMolecule,RatioDenominator是想要兑换资产的汇率(RatioMolecule/RatioDenominator 就是汇率),因为当前BVM不支持浮点型,所以额外采用这个参数作为比例,SellerProgram,SellerKey就是合约创建者自己的合约和地址,目标资产就要锁定到合约创建者自己的账户里面。
细心的朋友可能发现,这里面和Equity合约少了一个参数,也就是standardProgram,那么这个参数不用用户自己输入,系统会默认补齐,standardProgram 其实就代表原合约,因为部分匹配会使一部分资产仍然没有使用,就仍然返回到合约中。

最后通过一张图来更直白的描述一下磁力合约:

总结

我们来对比一下当前的几种去中心化交换协议:

交换协议 模式 去中心化程度 成本效益 用户体验
Etherdelta 链上orderbook,链上结算 ★★★★★ ★★
0x 链下orderbook,链上结算 ★★★★ ★★★ ★★★★
Bancor 基于智能合约管理的资金池 ★★ ★★★ ★★★★
mov 链上orderbook,链上结算 ★★★ ★★★★ ★★★★★

最早的完全去中心化交换协议Etherdelta对交换的干扰最少,但完全上链的机制使得成本消耗高且体验较差。之后的几类去中心化交换协议可谓都是在鱼和熊掌之间权衡取舍:Bancor和kyber为代表的储备池模式,管理员在整个过程中参与度较高,如果储备池合约中管理员权限较高比如之前Bancor可以提走用户资产,将会对用户的资金安全造成威胁;二者上链过程比较简单,成本控制表现不错,交易效率也比较高,只是功能性与有orderbook的交换协议相比略逊一筹。0x的中继模式,平台不触碰用户资产,相对而言去中心化程度是较高的,但这也导致成本效益相对较低;交体验整体不错,但如果需要共享订单,就无法实现瞬时成交。

mov在结合这几个前人的基础上,通过提升基础设施的性能,通过DPoS提升撮合准入门槛,并实现链上订单共享,还很好的提升了用户体验,除了通过DPoS牺牲了一定去中心化外,在其他方面都得到了一定提升,随着mov的进一步开发和完善,必将发挥该方案的优势,从而让区块链能在资产交换领域发挥巨大的价值,能够让去中心化的资产兑换落地。

相关文章
|
4月前
|
搜索推荐
共识协议的技术变迁问题之什么是请求的线性序
共识协议的技术变迁问题之什么是请求的线性序
163 53
|
安全 IDE 区块链
BTC比特链/ETH以太链/BSC币安链/TRX波场链/Matic马蹄链智能合约系统开发稳定版丨指南步骤丨源码详情
Developing a smart contract system is actually the process of writing and executing code on a specific blockchain (such as Bitcoin, Ethereum, Binance Smart Chain, Tron, or Polygon (Matic)). These codes (conventions) have the ability to automatically execute and facilitate transactions without interm
|
6月前
|
安全 区块链 数据安全/隐私保护
OP链/ARB链/TRX波场链swap交易所系统开发
区块链智能合约是一种以代码形式编写的合约,可以自动执行和执行的合约
|
运维 安全 算法
TRX链/BSC链/ARB链智能合约系统开发方案逻辑丨详细项目丨规则玩法丨案例详情丨源码出售
需求分析:与客户沟通,了解其业务需求和期望,明确系统的功能和性能要求。确定在哪个链上进行开发(TRX链、BSC链还是ARB链)。
|
安全 区块链
TRX链/BSC链/ARB链/Matic马蹄链公链智能合约系统开发指南需求丨步骤逻辑丨规则方案丨案例开发丨项目程序丨源码说明
Chain selection and environment construction: Select suitable public chains as development environments, such as TRX chains, BSC chains, ARB chains, or Matic horseshoe chains. Establish a corresponding development environment, including node deployment, development tools, and testing network.
|
安全 区块链
ARB链丨OP链丨马蹄链智能合约 dapp 系统开发(成熟技术)
跳出横向的角度来看待Web3.0的方式和方法,真正以一种全新的视角来看待它
|
存储 安全 区块链
ARB链丨OP链丨马蹄链智能合约DAPP系统开发(成熟技术)
分布式云计算是一项创新且迅速发展的技术,有潜力彻底改变Web3行业
|
设计模式 JavaScript 前端开发
从【if...else...】到【责任链】再到【composeAOP】,顺带把【传参】解决了~
从【if...else...】到【责任链】再到【composeAOP】,顺带把【传参】解决了~
从【if...else...】到【责任链】再到【composeAOP】,顺带把【传参】解决了~
|
前端开发
火币链/波场链/OK链/币安链盲盒游戏开发功能版,火币链/波场链/OK链/币安链盲盒游戏系统开发(成熟及方案)
The explanation of the new retail is that individuals and enterprises, relying on the Internet, upgrade and transform the production, circulation and sales process of goods by using advanced technical means such as big data, artificial intelligence and psychological knowledge, thus reshaping the bus
|
存储 算法 NoSQL
波场链/币安链/马蹄链2.0佛萨奇开发源码丨2.0佛萨奇马蹄链/币安链/波场链dapp智能合约系统开发(详情及规则)
 归档后的节点在对其他节点提供区块同步信息时,无法提供已归档的区块信息,所以在需要同步的节点选择连接的peer节点时,会只选择已归档高度比自己高度低的节点。如果是高度为1的全新节点,则只能从未归档的节点(peer)同步区块