去中心化交换协议的发展
从Bitshare,Stellar到以太坊上的Etherdelta,Bancor,0x协议,去中心化交换协议也经过了好几代发展和很多模式的探索,每一代都通过前面的协议的痛点来进行改进和深化,
主要分为:
链上orderbook,链上结算;
链下orderbook,链上结算;
基于智能合约管理的资金池;
链上orderbook,链上结算
最早的基于以太坊的去中心化交换协议的成功探索非Etherdelta莫属,曾一度占据去中心化交换市场的半壁江山。Etherdelta是较为完全的去中心化模式,用户充值、挂单、吃单、结算及提现全部在链上完成。
具体运行机制如下:
Etherdelta的整个运行都在链上完成,用户保管自己的私钥,平台不会触碰用户资产,保证了资产和交换的安全、透明。但其弊病也较为明显:
1)由于所有的交换环节都在链上完成,且每一个挂单、撤单、吃单等操作都会消耗GAS费用,导致延时高、成本效益低下。
2)存在矿工非法预先交换的可能。
链下orderbook,链上结算
为了解决纯链上效率低下,且手续费低廉的问题,0x协议引入了relayer(中继)的概念,所有订单都发给relayer,无需上链,只有成交才会上链。
0x的“链下订单中继、链上最终结算”运作模式如下:
zkSync联创提出新的治理解决方案L1 Fork,以应对智能合约实施过程中的风险:金色财经报道,Matter Labs联合创始人兼首席执行官Alex在社交媒体发文,提出“L1 Fork作为终审法院”概念拟解决智能合约实施风险问题,并且表示zkSync愿意资助相关研究。Alex指出,L2合约在紧急升级时存在中心化问题,相比之下L1是可分叉的,任何用户都可以选择加入他们主观认为正确且规范的分叉分支,但这种模式不适用于L2和DeFi协议,因为L2和DeFi协议无法分叉从L1桥接的底层原生资产(例如ETH)。
因此,Alex建议建立一个类似于现实世界司法机构的“链上法院”等级制度,每个协议都有自己的治理并定义正常和紧急升级机制且必须指定一份特殊合约作为上诉实例,这种模式可以解决紧急升级时的中心化问题。对于紧急升级,必须有一个上诉期,在此期间任何人都可以向上级“法院”提出质疑但必须缴纳预先确定的保释金,然后,该法院可以取消紧急升级(并且不执行任何其他操作),每个“法院”必须指定可以对任何决定提出上诉的更高一级“法院”,直到以太坊最高“法院”。[2023/9/3 13:14:42]
0x协议的主要问题在于,如果需要共享订单,运用0x协议的交易所每一笔成交都需要广播出来,以便其他交易所得知和确认,因此单纯地使用0x协议无法实现瞬时成交;另外,由于需要将ETH转化为WETH,也增加了交换成本。
基于智能合约管理的资金池
最具典型的资金池模式有Bancor和Kyber。所谓资金池,可以理解为平台利用智能合约建立了一个用于储备各类资产的池子,资金池中资产的提供方可以是普通用户或者做市商。
声音 | 瑞士加密货币银行SEBA高管:需要一个加密银行让人们理解区块链在银行部门的用例:据消息,瑞士加密货币银行SEBA托管存储和交易银行业务负责人Phil Dettwiler表示,比特币确实是一个投资机会,鉴于其估值不断上升,他强调了比特币作为价值储存工具的资格。而Dettwiler被问及为什么在使用比特币不需要银行的情况下甚至需要加密银行时,他表示,需要一个加密银行来让人们理解区块链在银行部门的用例。Phil Dettwiler说:“纯粹的比特币最大化主义者可能永远不会进入一家银行,但看看区块链的三难困境:分散、可扩展性和安全性……我确实认为,为了增加安全,我正在减少一些权力下放,这是值得的,特别是在带来便利的同时。”[2020/2/15]
MOV去中心化交换协议介绍
我们在考察各个交换协议时,其实纯链上交换协议才是最发挥区块链价值的方案,但是因为以太坊等公链性能问题,导致像Etherdelta这样的纯链上方案受挫,才有0x这样的链下orderbook出现,来改善性能的问题。究其根本,是本身的基础设施不完善,导致的迫不得已的改变。所以比原链MOV从一开始就先着手解决区块链性能问题。
高速侧链是保障
MOV采用了高速侧链Vaporpro作为底层的基础设施,Vapor每0.5s出块,每个区块可以容纳8000笔交易,即每秒16000tps,在增大区块,提升节点服务器的情况下,仍然有进一步提升空间。这个性能能够满足当前非高峰时段的用户需求,可以比肩部分的中心化的方案。
同时MOV采用了DPoS作为共识机制,虽然丧失了一定的去中心化,但是增加了可以进行链上撮合的门槛,提高准入门槛可以更好的防止部分有不良企图的“矿工”进行预先交易,同时因为链上撮合本身具有一定的撮合收入,所以通过这个经济激励可以防止DPoS的出块节点作恶来破坏系统。
声音 | Anthony Pompliano:人们需要时间去熟悉并理解比特币的重要性:针对监管者往往支持区块链、禁止加密货币的做法,Morgan Creek Digital联合创始人Anthony Pompliano认为,比特币这个游戏规则改变者需要的只是时间,“我认为每个人都进入这个行业,他们通常通过比特币来实现。他们听说了它,开始观察,然后就有了进化。他们去检查企业区块链、代币化证券、DeFi,但几乎每个人都会回到比特币。现在,这段旅程可能需要6个月、12个月或者18个月,但我认为对比特币来说最好的事情是时间。人们需要时间来熟悉它,开始使用它,理解它为什么至关重要。我认为这将发生在政府层面、私人层面和机构层面。所以这只是人们更熟悉它所需要的时间。”[2019/12/9]
订单共享
0x协议为了解决性能问题,所以采用链下orderbook,但带来的问题就是订单的割裂,采用0x协议的各个不同参与方,为了自己的利益,必然不会将自己用户的订单共享出来,从而影响整体的交易深度,而mov采用链上orderbook,所有的用户订单都在链上,公开透明,所有参与撮合的共识节点都可以共享这个深度,从而增强mov上资产的流动性。
磁力合约的优势
因为比原链是基于比特币的UTXO模型,所以在UTXO模型上的磁力合约来做交换协议具有更大的优势,因为UTXO模型本身以资产为基本单位,和账户模型相比,对于资产的操作更加简易和方便,我们来对比两者的流程。
以0x为例,0x整个交互流程:
Maker授权DEX合约访问自己的TokenA余额
Maker创建订单并用私钥签名
声音 | 朱嘉明:必须重新理解货币体系、金融秩序、资本规则和商业模式的关系:在数字资产研究院与OK联合主办的《Libra:一场牵动全球的智慧、技术、经济、、权力的全方位博弈》线下研讨会上,朱嘉明教授发表《Facebook数字货币在全息货币经济体系中的位置》的主题演讲。
朱嘉明认为,Facebook数字货币迫使我们必须重新思考和理解货币体系、金融秩序、资本规则和商业模式的关系。[2019/6/20]
Maker使用任意通信手段广播订单
Taker接收订单并愿意执行
Taker授权DEX合约访问自己的TokenB余额
Taker提交订单给DEX
DEX验证订单的合法性,在两个账户之间按照订单上的汇率进行转账
那么磁力合约的整个流程就简易很多:
Maker创建一个磁力合约
Taker创建一个磁力合约
共识节点根据合约中的价格和数量,触发能够匹配的磁力合约,并交换两者的资产。
不仅在流程上简单,手续费因为流程的简化也会更低,我们只要在用户设置磁力合约的时候收取手续费即可,事实上,我们还可以尝试0手续费,因为使用DPoS的模式,关于手续费,各个节点之间的博弈也不会太复杂。
跨链资产的生态
我们观察现行以太坊上的去中心化交换协议,还停留在以太坊本身的生态上,虽然不能否认以太坊生态的强大,但其实外面才是更大的世界,当然跨链是后续的主旋律,包括Cosmos和Polkdot都是想做跨链的事情,所以MOV在一开始就考虑到了跨链的事情,通过OFMF将比原链之外的资产映射到比原链上来,然后形成囊括所有数字资产的大生态,用户在MOV中体验的是跟中心化一样的体验,可以交易多种资产,这些资产也不单独是在某一个链的生态。
声音 | 赵余:“彩虹表攻击”可以简单理解为“字典攻击”:EOS LaoMao 的赵余在《宁话区块链》之全球EOS节点答疑的节目中称 “前两天发生的’彩虹表攻击’,是由于有些开发者通过设计的自定义助记词功能不完善。既没有过滤空字符串,也没有强制用户设置足够长的助记词。导致黑客可以通过简单的穷举,就能拿到部分账户的私钥。EOS 彩虹表攻击始末:EOS 官方库 eosjs-ecc(https://github.com/EOSIO/eosjs-ecc) 提供了一个自定义助记词生成密钥的接口。有些开发者使用这个接口,做了一个用户可以自定义助记词的密钥生成工具。但是由于产品设计问题,具体问题是下面两个:1. 没有过滤空字符串;2. 没有强制要求用户自己填写的助记词的长度必须达到足够安全的长度(比如 12 个独立的单词作为助记词,就可以认为安全性很高了)。导致部分用户,使用了简单的字母或单词作为助记词生成了自己的私钥。比如 a, b, c, hello, world 等等。这就导致黑客可以轻而易举地“穷举”常见的单词,字母,以及单词组合,进而拿到用户私钥,最终转移用户资产。这个“穷举”的方法,一般也被称为“彩虹表”攻击。对于使用自定义助记词功能生成私钥的用户,建议自查助记词长度,确保助记词长度不少于 12 个单词。”[2018/7/17]
MOV磁力合约详解
这里再详细展开一下MOV磁力合约,看它到底是如何实现的。
MOV磁力合约本质上是一个挂单合约,不管是Taker还是Maker都需要生成这样的一个合约,本质上其实并不区分Maker和Taker,只是根据挂单的先后来区分Maker和Taker,两者在相反的交易对上提升了交易深度,实际上也可以认为都是Maker。
挂单交易合约是高级版的币币交易合约,合约的本质目的是锁定任意数量的资产A,愿意以某特定的汇率兑换资产B。合约的内部应该保存有四个常量:期望兑换的资产B的ID,期望兑换的汇率,和挂单用户的公钥,挂单用户接受资产B的地址。合约可以通过三种模式解锁:
全部解锁:所有合约中的资产A都被兑换成了资产B并转入挂单用户的地址中。
部分解决:部分合约中的资产A被兑换成了资产B并转入挂单用户的地址中,剩余的资产A通过递归合约的模式从新锁定回合约本身。
取消挂单:挂单用户通过私钥签名将合约中的资产A都转回自己的地址。
磁力合约Equity的代码如下:
MagneticContractsourcecode:
contractMagneticContract(requestedAsset:Asset,
ratioNumerator:Integer,
ratioDenominator:Integer,
sellerProgram:Program,
standardProgram:Program,
sellerKey:PublicKey)locksvalueAmountofvalueAsset{
clausepartialTrade(exchangeAmount:Amount){
defineactualAmount:Integer=exchangeAmount*ratioDenominator/ratioNumerator
verifyactualAmount>0&&actualAmount<valueAmount
lockexchangeAmountofrequestedAssetwithsellerProgram
lockvalueAmount-actualAmountofvalueAssetwithstandardProgram
unlockactualAmountofvalueAsset
}
clausefullTrade(){
definerequestedAmount:Integer=valueAmount*ratioNumerator/ratioDenominator
verifyrequestedAmount>0
lockrequestedAmountofrequestedAssetwithsellerProgram
unlockvalueAmountofvalueAsset
}
clausecancel(sellerSig:Signature){
verifycheckTxSig(sellerKey,sellerSig)
unlockvalueAmountofvalueAsset
}
fullTrade()就是全部解锁方法;partialTrade()是部分解锁,当触发部分解锁时,会讲为解锁的资产放入一个新生成磁力合约中去,从而等待下一次匹配;cancel()方法将用户的资产转回自己的地址,取消这个合约。
我们在看看磁力合约的输入参数:
typeMagneticContractArgsstruct{
RequestedAssetbc.AssetID
RatioMoleculeint64
RatioDenominatorint64
SellerProgrambyte
SellerKeybyte
}
RequestedAsset是想要兑换的的资产,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的进一步开发和完善,必将发挥该方案的优势,从而让区块链能在资产交换领域发挥巨大的价值,能够让去中心化的资产兑换落地。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。