Ox协议,全称OxProject。Ox是一个点对点交易的开源协议,以促进以太坊区块链中ERC20代币的交易。
该协议旨在作为开放标准和通用构建模块,推动包括交易所功能的去中心化应用(DApps)之间的互操作性。交易由以太坊智能合约系统执行,可以公开访问,免费使用,且任何DApp都可以接入。 建立在协议之上的DApps可以访问公共流动资金池或创建自己的流动资金池,并对其交易量收取交易费用。该协议不会把成本强加于用户之上,也不会任意地从一组用户中获取价值来惠及其他用户。去中心化管理用于将更新以持续而安全的方式集成到基本协议中,而不会中断更高级别的进程。
0x是基于以太坊区块链的去中心化交易所开源协议。这个协议是通过以太坊的智能合约来创建的,它可以让任何人都能开设和运行去中心化交易所。
0x是基于以太坊区块链的p2p的ERC20代币交易所协议。它有标准的开源协议、通用的创建区块,在分布式应用中实现交易功能的互操作性。基于0x协议的去中心化应用可以进入公开的流动池,或创建自己的流动池,并收取一定的手续费。
未来的世界很大概率会走向代币化。它会成为未来公司或者其他组织的经济模式,未来所有资产都可以代币化,包括所有公司的股票、汽车、房子等各种资产都可上链。代币化将让资产膨胀成千上万倍,并且存在交易需求。
0x可以提供更好的方法来创建去中心化交易所,可以让ERC20代币间可以不通过任何第三方就可完成交易,比如Augur 代币和Omisgeo代币之间不通过任何第三方即可完成直接兑换。
(1)去信任化的交易机制。
基于以太坊的分布式网络构建,去除中心体系单点故障,保证无间断运营,每笔交易都自动操作进行结算,完全解除交易对手风险。
(2)共享流动性。
通过共享标准 API,让中继方轻松聚集流动池,随着越来越多的中继方纷纷上线,将形成充裕的流动性,创造网络效应。
(3)开源优势。
0x 是一种开源协议,全网无边界,可供免费使用。用户可以直接联系已知的交易对象进行免费交易,还可以支付一定数额的 ZRX 代币,以访问中继方的流动池 。
(1)首先跟中心化交易所相比,更安全。
所有参与过数字货币交易的人都使用过中心化交易所,比如火币、okcoin、云币、币安等。当购买各种数字货币时,需要用法币购买比特币或以太坊等各种数字货币。中心化的交易所从用户使用习惯上看,更符合用户习惯,简单易用,交易速度快。这是它独特优势,另外,对于很多普通用户来说,中心化交易所的托管式服务也更省心。
但是,中心化交易所也有致命缺点:一是容易被黑客攻击,代币被盗取;二是运营者卷款逃跑。最后,还可能因政策原因被监管关闭。Mt.Gox,Bitfinex等中心化交易所都经历过安全问题,让用户丢失了大笔资金,比如poloniex,coinbase等都遭受过DDOS攻击。
这样的结果导致了一些去中心化交易所的产生,比如etherdelta等,这些交易所不用把资金存储到运营方进行交易,不用担心黑客、运营者卷款跑路、被关闭等问题。但去中心化交易所同样也有问题:交易速度慢、交易规模小、费用高等,体验比中心化交易所要差。
中心化交易所占据绝对优势,去中心化交易所还处于早期,在相当长时间内,两者都有自己的空间,不过长期看,去中心化交易所在解决了速度慢等问题后,可能会逐步扭转局面,并逐步取得优势。
(2)其次跟去中心化交易所比,交易体验更好。
去中心化交易所普遍存在速度慢、交易量小、费用高等问题。去中心化交易所的每笔订单,不管是买入、卖出还是挂单、取消订单等操作都进入区块链,交易依赖区块时间,不仅如此,每个操作都会产生网络交易费用。这是去中心化交易所的短板,这就是为什么出现了比特币失窃的门头沟事件之后,交易者还是首选中心化交易所的重要原因。
0x协议其中的一个目标就是要解决这些去中心化交易的问题,它把交易订单移出区块链,在结算时才移入链内,从而提升交易效率,降低交易费用。同时,0x并不收取任何使用协议的费用,由各去中心化交易所的创建者来决定自己的收费方式。
0x通过创建基于以太坊的标准协议,让所有人都可以交易ERC-20代币和运营去中心化交易所。基于0x协议的运营者相当于0x的中继方,它们托管订单,可以向代币交易者收取服务费。
除了为中继方提供标准协议服务之外,0x还有直接面向消费者的产品,比如基于0x的OTC,可以让交易双方直接进行以太坊ERC20代币交易,并且无须中继者的交易所存在 。
0x是基础的创建区块,可以作为Dapps的共享基础设施,长远看,它是开源的技术标准,比封闭架构更有优势。
在0x的白皮书上提到,自动做市商的智能合约是链上订单簿的替代性方案。它采用价格调整的模式。它的好处是容易对外部智能合约进行整合。价格调整模式让它们对市场流动性非常敏感,自动做市商对供给曲线施加了人为约束。如果价格调整模型太敏感,小额交易也会产生大的现价波动。如果价格调整模型不敏感,自动做市商资金将很快被套利者消耗。
另外,状态通道被看作是以太坊区块链扩张的一种方式,还可减少不同应用的费用。状态通道中的参与者来回传递加密签名信息,可累积中间状态的变化,与此同时无须把它们发布到规范链,许多中间状态改变可以链下累计,直到链上完成结算。状态参与者必须实时在线,以挑战不诚实的参与方,因此对于DDOS攻击很脆弱。
为了解决这个问题,0x提出的解决方案是:链下订单中继,链上最终结算。它结合了状态通道效率和链上订单簿的快速结算。加密签名的订单在链下广播,这些订单送进链上智能合约以去信任化方式执行。这样对于做市商来说,交易摩擦成本低。
Maker 批准后,去中心化交易所的智能合约获取账户要交易代币(假设为A)的余额。
Maker 创建一个订单,要用代币A交换目标代币(假设为B),确定具体的汇率、截止时间等,并用私钥加密签名订单。
Maker可在任何媒体广播订单(twitter、邮件、博客、论坛等)。
Taker 获取订单并决定接受订单。
Taker 同意后,去中心化交易所的智能合约获取代币B的余额。
Taker 提交Maker签名的订单到去中心化交易所合约。
去中心化交易所合约认证Maker的签名,确认订单没有过期,确认订单没有被交易,之后按确定汇率进行代币交换。
每个订单是一个数据包,包括订单参数和加密签名。订单参数通过Keccak SHA3功能链接并散列为32字节。maker用私钥签名订单哈希以产生ECDSA签名。
订单数据包数百字节大小,可以通过邮件、社交网络、即时通讯等任何媒介发送。订单只接收特定的taker的地址,窃听者或外部第三方都无法接收。
买卖双方要交易,需要有一个流动性的市场,可以进行订单发布,以形成订单簿。对于大多数项目团队来说,创建和运营交易所需要耗费巨大资金。而0x协议可以让项目团队以较小成本维持交易所,并自定义交易费用。托管和维护订单簿的主体都是一个中继者。普通的中心化交易所创建和运营基础设施,需要管理交易和处理用户资金。而中继者只需通过托管和传播订单簿来推动市场交易。这个过程中,中继者并不代表交易者执行交易,Taker必须自己执行交易。
广播订单的信息格式也相对灵活。一是广播订单并不要求taker地址,允许订单被任何人接收;二是订单的费用值等参数都可以设置。中继者托管和维持一个链下的订单簿,当交易清算后,交易费从maker或taker(也可能两者都需要)转到中继者。其中:
中继者创建费用计划和设置用于收取交易费用的地址。
maker创建订单,设置fee A(代币)和fee B(代币)的值,这些值满足relayer的费用计划,设置fee接收人的地址,并用私钥签署订单。
maker把签名订单转移到relayer。
relayer接到订单,检查订单有效性及要求费用。如果订单无效,或不满足relayer要求,订单会被拒绝。如果满足条件,relayer把它发布到订单簿。
taker接收到订单簿,其中包括maker的订单簿。
taker接受maker的订单,并提交到交易所的智能合约。
虽然maker设置交易费用,但最终来说relayer控制进入订单簿的订单,因此,maker想要把订单发布到订单簿,就需要满足relayer。Relayer也可以设置费用计划,可以是固定费用、按比例收取、按交易量收取或分层收取等模型。但relayer接收了订单,进入了订单簿,就不能改变。
传统的交易服务是由交易所设定机制来进行买卖双方的匹配,交易双方必须相信交易所能提供最好的价格。而在0x,所有的交易都是去中心化的,即relayer不能像传统的交易所代表maker和taker进行交易,relayer智能推荐,最终由taker决定签名和发送交易到区块链上。
智能合约
交易所协议是在以太坊智能合约上执行,开放且免费使用,不会向用户收取除gas费用之外的任何费用(执行智能合约的必须费用)。它用solidity语言编写,包括两个相对简单的功能:成交和取消。整个合约大概100行代码,大概需要花费90k gas来成交订单。
签名确认
交易所智能合约能够认证发起人使用ecrecover函数的签名,它将哈希和签名哈希作为参数,并返回产生签名的公钥。如果ecrecover返回的公钥等于发起人的地址,该签名是真实的。
成交和部分成交
交易所智能合约存储之前每个成交的记录,防止单个订单多次成交。这个参考记录存储进一个映射,数据结构可以映射一个32字节数据到256位未签名整数。传递与一个订单相连的参数到keccak SHA3函数可以产生32字节哈希,它可以用于确认的订单,每次一个订单成交,影射存储订单哈希并积累成交值。
当调用交易所智能合约成交功能时,一个taker通过制定附加参数实现部分成交。只要部分成交的总额没超过总订单额度,多方部分成交就可能在单个订单上执行。当试图成交订单时,Takers必须提供额外的参数。
截止时间
一个订单的截止时间由maker指定,截止时间是一个未签名的整数值,它代表从unix纪元绝对秒数。签名后值就不能改变。以太坊虚拟机的时间是由区块时间戳来给定的,当一个新的区块被挖出来之后,时间就出来了。因此,一个订单的截止时间状态并不依赖于一个taker广播它们的成交意图,它依赖于一个矿工在EVM上执行交易后的时间状态。
取消交易
一个没有成交或到期的订单可以由相关的maker通过交易所智能合约的取消功能进行取消。取消功能映射一个订单的哈希,对应着订单的最大值,防止后续交易。取消订单花费gas。该方法可能有一个尴尬情况:一个maker试图取消交易,一个taker试图接收该订单。考虑到交易挖矿的序列有不确定性,会导致意料之外的结果。如果以太坊区块链有大量的积压订单待处理,不确定性就会增加。
ZRX代币
跟其他代币一样,0x的ZRX代币也是为了驱动形成代理网络,它想通过协议成为开源标准,协调所有参与方,通过激励促使大规模采用代币,在一个没有中心治理下实现自运行的网络。
0x的代币主要用于支付relayer的交易服务费,另外就是0x协议升级时的去中心化治理用。根据ZRX代币的拥有量,在协议升级等方面拥有相应的影响力。
去中心化的治理
一旦一个以太坊智能合约部署到区块链,它的内部逻辑不能改变。因此,升级协议必须部署一个完全新的智能合约,要么对网络分叉,要么升级用户和处理流程,直到选择最新版本。交易场景下,协议升级可以让所有公开订单无效,并要求每个市场参与者批准新的智能合约来获取它们的交易余额。或者,协议分叉成为两个版本运营。尽管智能合约可以持续地集成升级到协议中,同时不会中断更高级的进程,这样的升级机制可能给终端用户带来极大的安全隐患。
协议代币可用于驱动去中心化的升级机制,允许把升级持续地集成到协议中,与此同时也能保护协议用户和持有人。
一个简单的多方签名合约将用于去中心化的治理,最后会有一个复杂的DAO产生。0x协议和它原生代币将不会对用户强加非必要的费用,或者从relayer那里抽取费用。
股份持有人提出和选出协议改善计划,通过DAO用完全新的智能合约执行。DAO批准新的智能合约以获取用户的代币,获取的方式是增加它们到代理协议的白名单,并且最终不上不推荐的协议版本。
代币注册
订单由十六进制字节码组成,机器可读,不适合普通用户阅读。代币注册合约将用于存储ERC20代币的列表,每个代币都有相关的元数据:名称、符号、合约地址、表示代币的最小单元所需的小数。注册将用于官方的链上参考,可以被是参与者使用,在执行交易前用来独立确认代币地址和交易汇率。代币注册将用作可信的信息资源,监管是必须的,包括从注册处增加、修改或移除代币。
未来协议的订单格式可修改,便于用户阅读。代币在代币注册处显示为3个字母而不是代币合约地址。以太坊域名服务(ENS)可用于确认maker、taker、relayer,这些都是要变成用户可读的名称,比如“theDunkle.eth”,而不是账户或合约地址 。