当前位置:首页 > 物联网 > 区块链
[导读] R1协议是一种高效的去中心化Token互换协议。它解决了传统Token互换协议撮合效率低、用户体验差等问题,将去中心化Token互换协议带入了一个新的高度。目前,基于以太坊的版本已经实现,后续会

R1协议是一种高效的去中心化Token互换协议。它解决了传统Token互换协议撮合效率低、用户体验差等问题,将去中心化Token互换协议带入了一个新的高度。目前,基于以太坊的版本已经实现,后续会开发其他公链版本如NEO、QTUM等。

去中心化Token互换协议的发展

传统互联网是传递信息的网络,信息都保存在中心化的机构中,由于缺乏可靠的信任机制,陌生节点间无法完成大规模的价值互换。比特币的出现使可信的价值转移成为了可能,它对中心化互联网发起了挑战,同时也带动了区块链技术的蓬勃发展。在后比特币时代,涌现了一大批区块链创新技术,以太坊正是新型区块链的卓越代表,除了价值转移外,它实现了智能合约,将现实世界的规则以算法的形式映射在区块链上,极大的扩展了区块链的应用范围。一大批区块链项目基于以太坊的ERC-20标准发行了自己的代币,据不完全统计,目前以太坊上运行的代币超过一千种, 构成了庞大的代币经济体系。

种类繁多的代币对于交换提出了强劲的需求,带动了去中心化Token互换协议的研究,陆陆续续涌现了Etherdelta、0x、IDEX等去中心化交易所,不断的挑战中心化交易所的地位。但是,受限于当前以太坊的性能,他们都存在着或多或少的问题,交易体验不尽如人意。

· Etherdelta

Etherdelta的用户需要把资产存入Etherdelta智能合约。在交易时,用户将订单拦到链FRelayer,等待别人来成交。如果想要吃别人的订单,用户需要手动指定对应的订单发起交易。Etherdelta不会自动撮合用户的订单,交易体验较差。

· 0x

0x用户不需要将资产存入智能合约,只需要钱包中拥有ETH或T oken即可。在开始交易之前,用户需要将钱包中的ETH转换为一种叫做WETH的代币。WETH是与ETH等价的ERC-20代币,转换比例为1:1,将ETH转换成W ETH可以使0x合约方便的与其他ERC-20Tokcn进行结算。

开始新交易对的交易前,用户还需要设置对应Token的权限,授权允许0x合约转移该Token。尽管0x做到了足够的去中心化,但是其撮合效率还是很低。对接0x协议的撮合引|擎必须不问断的监听用户钱包的资金进出,如果用户钱包的余额不足,就需要把用户的委托订单从订单簿中剔除,一旦剔除不及时,该委托订单的对手方将交易失败。在网络拥堵或者波动大时,这种情况可能频繁出现,严重影响用户体验。

· IDEX

意识到0x协议的不足——0x智能合约和Rela yer无法完美的协调合作,IDEX选择由中心化的Relayer将交易提交到链上。这样IDEX可以很好的空制订单顺序,但是任然没有解决抢单的问题。

R1协议

1. 架构

R1协议的架构包含三部分。

作为去中心化的媒介,R1智能合约部署在以太坊区块链上,可以存储用户的资产、交易记录,达到资产去中心化、交易记录可审计的目标。

Relayer是订单中继系统,与R1智能 合约交互,主要负责订单撮合与提交上链。Relayer对外提供OpenAPI,允许第三方交易所提交订单到撮合引擎。

第三方交易所的主要职责是收集用户的订单数据,并将签名后的订单提交给Relayer。通过R1协议,不同交易所可以成为分布式商业系统的一部分,共享订单数据和流动性,为用户带来更好的交易深度和体验。

2. 订单交易

2.1订单交易流程

订单交易处理流程描述了从用户提交订单开始,到Relayer撮合订单,再到将交易数据提交到区块链上的过程。如图所示:

1. 用户输入订单信息。用户以一定价格和数量买入或者卖出token, 客户端将数据转换成约定的订单数据格式。

2. 用户使用私钥对订单签名。私钥由用户保管,任何交易所以及Relayer不存储用户的私钥。放入后台订单池。签名完成后,客户端将订单信息发送给Relayer, Relayer对订 单信息进行合法性校验后,放入订单池进行撮合。

3. 后台撮合成功。Relayer的撮合引擎对来自不同交易所的所有订单进行统一撮合。

4. 后台提交到链上交易。撮合成功后,Relayer会将匹配的两个订单信息及交易额提交到区块链上进行最终的结算。

以上为订单交易的基本流程,下面详细说明每个过程的技术细节,包含:

●订单的数据格式;

●订单签名算法;

●Relayer职责;

●链上结算逻辑。

2.2 订单

订单数据格式

在交易所中,用户的订单信息体现为:交易对+交易价格+交易数量。

而在R1智能合约中,订单的数据格式如下:

参数说明如下:

● tokenBuy: 用户希望购买的token合约地址

● amountBuy: 用户 希望购买的token数量

● tokenSel: 用希望卖出的token合约地址

● amountSell: 用户希望卖出的token数量

●baseToken:交 易对锚定的基础token。默认填0,表示对ETH的交易对。如果是对RNT的交易对,此处填RNT的合约地址

● expires:订单过期区块数。默认设置-一个比较大的值,表示永不过期

● nonce: 随机数。 用来保证订单唯一性,目前的方案是nonce值为时间藏

●feeToken: 手续 费支付方式。如果为0,按传统方法支付,即手续费从用户获得的token中扣除。如果为token合约地址,则使用该种Token支付手续费,前提是用户存入了该token到R1智能合约中

订单签名

为了让用户的订单能够在网络中安全的传播并且不被篡改,需要用户的私钥对订单数据进行签名。

订单数据的签名过程为:

其中

客户端将订单数据签名完成后,会将订单原始数据、订单哈希值和订单签名一起发生到Relayer。Relayer会对这些数据进行合法性校验,主要校验订单哈希值是否一致、订单签名是否正确,以防止订单数据被篡改。

需要强调的一点是,对于Relayer来说,在接收到用户的订单信息之前,无法知道这个用户是maker还是taker。Relayer会根据订单信息到达的时间先后和当前订单池的数据,来决定这个用户是taker还是maker。如果订单池中有对应的订单匹配价格,则最新提交订单的用户成为taker,另一方则成为maker。所以,每个用户提交的订单都应该包含订单原始数据、订单哈希值和订单签名,对于Relayer来说每个用户都是对等的。

2.3 Relayer撮合

Relayer主要负责订单撮合、钱包余额维护、提交上链等。Relayer内部各系统组成如下图所示:

● OpenAPl: Relayer 对外提供API,第三方可以通过OpenAPI提交订单、查询交易状态、订单深度以及钱包余额

● Valiator: 对订单数据合法性进行校验,对账广余额进行校验

● AccountSystem: 负责维护钱包余额

● BlockSyncing: 负责区块信息同步,同步区块链余额信息等

● MatchingEngine: 撮合引擎,负责撮合订单

● MessageQueue: 消息系统。负责系统间通信

●Store: 存储模块。负责存储信息,临时数据缓存等。

Relayer处理逻辑

Relayer收到订单数据后的内部处理流程如下:

1. 对订单数据进行校验。 这里主要校验订单的哈希值是否匹配,防止订单数据被篡改;校验用户签名是否正确,保证订单数据确实由某个拥有正确私钥的账号发起; 校验余额是否充足; 这里任何一步交易不通过都会引发订单提交的失败

2. 订单撮合。订单数据校验成功后,订单被放入撮合引擎进行撮合,同时订单数据记录到数据库中。撮合引擎会根据订单提交时间和价格高低来匹配订单,一旦撮合成功,会标记订单成交。并且会将匹配的两个订单放入消息队列,等待提交到链上结算。

3. 提交上链。 提交到链上结算调用合约的batchTrade或trade方法, 并且只有admin账号进行提交。admin账号是由合约owner设置的账号,有权限调用trade方法。为了提高并发,Relayer可以用多个admin账号调用trade方法。

交易手续费

由于调用trade方法的是admin账号,因此gas费用是从admin账号中扣除的。Relayer需 要保证admin账号有足够的ETH额度,否则可能由于额度不足以支付gas费用而无法提交上链。

这笔gas费用会由admin事先垫付,但是最终还是需要由交易双方来共同承担。目前的做法是maker和taker各承担gas费用的50%。

所以,用户的手续费包含两部分:交易额的0.1%+ gas费用的50%。Relayer会根据这 个原则算出需要扣除的token数量,传入trade方法作为参数,trade方法 会扣除相应的费用。对于用户来说,用户实际得到的token数量会比交易计算得到的数量少一些,少的部分即为扣除的费用。

2.4 链上结算

链上结算的逻辑主要在R1智能合约的trade方法中实现。trade方法主要对maker和taker的订单进行校验,以及做资产的链上交割。

以下说明trade方法的具体实现细节

输入参数

trade方法的输入参数包含以下几部分: ;

1. maker的订单数据(见订单数据格式一节说明)

2. taker的订单数据 (见订单数据格式一节说明)

3. maker的签名信息(υ,r,s)

4. taker的签名信息 (υ,r,s)

5. 交易额( Relayer根据撮合结果设置本次交易额)

6. maker和taker的应收手续费(由Relayer设置)

7. 接收手续费的账号 (由Relayer设置)

其中1、2、3、4这四部分的信息由用户提供,其他人都不可篡改;而5、6、7三项数据由Relayer设置,

输入参数校验

在进行最终的资产交割前,需要交验输入的参数是否合法,以保证交易能够按照用户的意图进行成交。需要校验的步骤包含:

●必须是admin账号调用trade方法

●feeAccount (手续费接收账号)必须合法。也就是说feeAccount必须是合约owner授权过的

●交易双方的订单必须是同一交易对。合约中的代码片段:

· maker和taker的签名确认。 合约中的代码片段如下:

· 订单价格必须匹配。订单成交的基础是价格匹配,价格必须满足:

其中:

合约中代码片段如下:

●余额充足。需要保证订单交易的时候有足够的额度,不会超过用户希望交易的额度

以上所有条件校验通过,才能进行最终的资产交割。交割成功,该笔交易会完整的记录在区块链上。

3. 充值与提现

R1协议的充值提现与中心化交易所的流程基本一致,不同的是使用R1协议的用户将资金存入智能合约中,不受任何第三方控制,即使交易所被黑客攻击,用户的资金也是安全的,做到了资产的去中心化。需要注意的是,只有私钥的所有者才能操作转入R1智能合约的资产,用户需要妥善保管自己的私钥。

3.1充值

R1智能合约中用户通过两个方法进行充值:

●deposit ()

●depositToken

deposit方法允许用户将eth充入R1智能合约中。该方法会在区块链上登记用户的资产余额,同时抛出一个Deposit 充值事件; Relayer通过监听该事件感知用户的充值。

depositToken方法允许用户将token充入R 1智能合约中。与充值eth的不同之处在于,根据ERC-20 Token的标准,用户充值前需要调用token合约的approve 方法,授权R 1智能合约转账token。只有完成这一步操作, 用户才能成功将token充入智能合约中。为了减少approve操作次数,接入R1协议的交易所可以在用户第一次充值token时让用户授权一个比较大的额度。这样,用户再次充值该token时,不需要进行额外的approve操作,消耗gas 费用。

3.2 提现

用户可以随时取出自己的资金,不需要人工审核。R1智能合约的用户提现有以下几种方法:

● adminWithdraw

● withdraw

● withdrawNoLimit

adminWithdraw是比较常用的提现方法。它的原理是,用户将提现的操作委托给Relayer,Relayer根据用户的提现请求调用R1合约的admin Withdraw,将资金转账给用户的钱包。由于提现请求需要用户的私钥签名,任何第三方(包括Relayer )都不能篡改用户的数据,保证了提现的安全可靠。该方法的意义在于,提现请求最先由Relayer感知,Relayer可以快速及时地更新订单池,提供更好的交易体验。

withdraw适用于懂得如何调用智能合约的用户。如果用户不希望将提现数据委托给Relayer,那么他可以选择调用合约的withdraw方法。但是在调用该方法前,用户需要经历一个两阶段提现的过程。即用户需要先调用apply Withdraw方法申请提现,在满足以下两个条件的情况下,用户才能调用

withdraw方法成功提现。这两个条件是:

1. Relayer调用了approveWithdraw 方法, 同意用户的提现请求;

2. 申请超过了一定的等待期后;

等待期由合约的owner设置,当前设置的等待期为7天。合约owner会视不同情况调整等待期,如1天甚至1小时,但不能超过7天。

withdrawNoLimit允许用户方便的提现。只需要调用该方法即可提现,前提是合约的owner开启该方法的开关。一般情况下该方法是关闭的,只有在特殊情况如Relayer由于某些原因不能及时响应用户的提现申请时,该方法才会打开,方便用户提现。

4. R1合约的治理

作为以太坊区块链上的-份智能合约,R1 由ONEROOT团队创建并部署,即R1智能合约的owner为ONEROOT团队。为了保证R1协议安全稳定的运行,R1 智能合约的owner拥有一些特殊的权限,包含:

● 设置admin 管理员账号。admin账号负责调用trade、 adminWithdraw、 approveWithdraw等方法,保证Relayer维持正常的交易功能。

● 设置手续费账号。只有经过授权的账号才能接受用户支付的手续费。

● 调整提现等待时间。R1智能合约的owner可以根据情况调整提现等待时间,方便用户提现。

● 开启便捷提现开关。在特殊情况下,如Relayer无法提供提现服务时,R1 合约的owner需要开启该开关,方便用户快速地提现。

admin Withdraw是比较常用的提现方法。它的原理是,用户将提现的操作委托给Relayer,Relayer根据用户的提现请求调用R1合约的adminWithdraw,将资金转账给用户的钱包。由于提现请求需要用户的私钥签名,任何第三方(包括Relayer )都不能篡改用户的数据,保证了提现的安全可靠。该方法的意义在于,提现请求最先由Relayer感知,Relayer可以快速及 时地更新订单池,提供更好的交易体验。

未来研究

作为价值传输网络的重要组成部分,中心化Token互换协议的研究日益深入,相关产品层出不穷。R1协议专注于提升用户的交易体验,力求达到中心化交易所的标准。然而,对所有基于以太坊的协议来说,以太坊网络的处理能力始终是提升交易速度的瓶颈。但这并非一成不变的,即将到来的Plasma技术为以太坊带来了商用化的希望。

Plasma技术的实现将大幅度提升以太坊网络的TPS,改变以太坊网络拥堵的状况。同样的,R1协议也可以采用Plasma技术,在以太坊上部署-份Plasma合约, 同时启动一条Plasma子链,将Relayer的功能迁移到Plasma子链上,在提升性能的同时做到完全的去中心化。

除了以太坊网络的技术发展,在其他公链上实现R1协议也是ONEROOT团队的研究方向。以EOS为例,随着生态的不断发展,基于EOS的Token将越来越多,相应的去中心化交易所也会不断涌现。受益于良好的TPS性能,这些交易所性能将远超以太坊,为用户带来非凡的交易体验,而这也是ONEROOT研究的方向。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭