首页 > 编程知识 正文

小米10充电协议,华为荣耀10快充协议

时间:2023-05-04 22:53:22 阅读:186078 作者:2496

BUMO DEX 10合同概述BUMO DEX 10 (中断的交换)是基于bumo智能合约制定的中心化资产交换合同。 该协议提供了对基于BUMO发行的各种资产进行中心化和自由交换的能力。

基于该标准接口实现的非中心化资产交换协议,发布到BUMO的各类资产可以安全快捷地在链上自由交换,无需依赖中心化交易所,并且可以与其他APP应用程序和第三方快速对接使用

规则BUMO智能约定用JavaScript语言实现,包括初始化函数init和两个条目函数main、query。 init函数用于创建合同时的初始化。 main函数主要负责数据的写入,query函数负责数据查询。

DEX 1.0协议支持ATP token和BU之间的自由兑换,兑换后的服务费由BU收取。 资产兑换时,支付BU的一方需要在预定兑换额之外按照服务费的比率另外支付服务费。 就像计税方式中的价外税一样,服务费不包括在兑换金额中。 支付atp或ctp token的一方从成交后收到的BU中,按照服务费的比例支付服务费。 就像计税方式中的价内税,服务费包含在兑换金额中。 服务费与交易额的比率可以在DEX合同中自行设定。

DEX属性DEX属性可以在合同的dexInfo功能函数中查询,并存储在智能合同的帐户中。 包括以下内容

变量包括ownerDEX合同所有者feeRate服务费率versionDecentralized exchange版本注意

owner :默认dex合同的创建者(如果在创建dex合同时未指定默认值)。 feeRate:的单位为1/(10^8)。例如,如果feeRate的值为50000,则服务速率为50000 ) 10^8)=5/10000。 版本: dex的版本。 例如,1.0功能函数makeOrder发表ATP token或CTP token和BU的兑换订单,对应ATP的兑换BU、CTP的兑换BU、BU的兑换ATP、BU的兑换CTP。

兑换ATP token时,使用issuer (发行者地址)、code (资产代码)、value )的表述;

在兑换CTP token时,使用issuer(CTP合同地址)和值;

BU是内置BUMO的原生token,不需要显示,兑换时只需输出value (数量)

如果订单token是CTP资产,则在发出订单之前,订单用户需要在对应的CTP协议中信用DEX协议,信用额度是对token的额度;

如果订购的token为ATP资产,则下达订单时需要通过payAsset (转移资产)操作触发,转移资产的内容和金额为转移资产的内容和金额;

如果订单的token为BU,则提交订单时必须通过“payCoin (转账)”操作触发。 汇款金额是BU的金额加上兑换服务费后的金额。

入口函数main。

参数json结构:

{ 'method':'makeOrder ',' params ' : { ' own ' : {/at ptoken ' issuer ' 3360 buqxxx ',' code ' : ' 包括以下内容

target :有订单的Token,例如“发行方”、“代码”、“资产代码”、“值”等。 CTPToken没有代码,“BU”没有issuer和代码。

fee )挂在账户上支付给DEX合同的服务费按兑换的资产计算。 如果兑换的token不是BU,结算时DEX合同会从兑换后的BU中按兑换比扣除。

expiration :订单的截止日期、过期后的订单无效。

函数: functionmakeorder(own,target,fee,expiration ); 返回值: true或慢速异常。 用cancelOrder的单一账户取消订单。

入口函数main。

参数json结构:

{ 'method':'cancelOrder ',' params ' : { ' order ' : ' order _1' } } order :已取消的订单编号;

函数: function cancelOrder(order )

回来

回值:true 或者抛异常

takeOrder

对订单填单或者局部填单,如果该订单已完成或者已过期,该函数应该被 throw。

如果填单的兑出 token 为 CTP 资产,填单之前,填单用户需先在对应的 CTP 合约内授信 DEX 合约,授信额度为兑出 token 的额度;

如果填单的兑出 token 为 ATP 资产,填单时,需用 payAsset(转移资产) 操作触发,转移的资产内容和数额为兑出资产的内容和数额;

如果填单的兑出 token 为 BU,填单时,需用 payCoin(转账) 操作触发,转账的数额为兑出 BU 的数额加兑换服务费;

入口函数 main。

参数json结构:

{ 'method':'takeOrder', 'params':{ 'order':'order_1', 'fee':5, }}

order: 填单或局部填单的订单号;

fee: 填单账户支付给 DEX 合约的服务费,以兑出资产计数,如果兑出的 token 非 BU,结算时 DEX 合约会按照兑换比从兑换后的 BU 中扣除;

函数:function takeOrder(order)

返回值:true或者抛异常

updateFeeRate

更改 DEX 合约的服务费比率,如果非合约拥有者调用,该函数应该被 throw。

入口函数 main。

参数json结构:

{ 'method' : 'updateFeeRate', 'params' : { 'rate' : '50000' //单位为 1/(10^8) }}

rate: 服务费与 token 兑换额的比率。

函数:function updateFeeRate(rate)

返回值:true或者抛异常

updateOwner

更改 DEX 合约的拥有者,更改后,原合约拥有者将失去 DEX 合约的控制权,如果非合约拥有者调用,该函数应该被 throw。

入口函数 main。

参数json结构:

{ 'method' : 'updateOwner', 'params' : { 'address' : 'buQnTmK9iBFHyG2oLce7vcejPQ1g5xLVycsj' }}

address: DEX 合约新拥有者的地址。

函数:function updateOwner(address)

返回值:true或者抛异常

clearExpiredOrder

清除 DEX 合约中未完成但已过期的订单,如果非合约拥有者调用,该函数应该被 throw。

入口函数 main。

参数json结构:

{ 'method' : 'clearExpiredOrder',}

函数:function clearExpiredOrder()

返回值:true或者抛异常

withdrawFee

从 DEX 合约中提现服务费,如果非合约拥有者调用,该函数应该被 throw。

入口函数 main。

参数json结构:

{ 'method' : 'withdrawFee', 'params' : { 'value': 10000 }}

参数:value 提现的数额;

函数:function withdrawFee(value)

返回值:true或者抛异常

dexInfo

返回 DEX 合约的基本信息。

入口函数 query。

参数json结构:

{ 'method':'dexInfo'}

函数:function dexInfo()

返回值:

{ 'result':{ 'type': 'string', 'value': { 'dexInfo': { 'owner': 'buQnTmK9iBFHyG2oLce7vcejPQ1g5xLVycsj', 'feeRate': 50000, //单位为 1/(10^8) 'version': '1.0' } } }} getOrder

根据订单号获取订单详细信息。

入口函数 query。

参数json结构:

{ 'method':'getOrder', 'params' : { 'order': 'order_1' }}

order: 订单号;

函数:function getOrder(order)

返回值:

{ 'order_1':{ 'own':{ //ATP token 'issuer':buQxxx', 'code':'EUR', 'value':10000, }, 'target':{ //BU 'value':1000, }, 'fee':5, 'expiration':'2018...' }} getOrderInterval

获取订单号的有效区间。

入口函数 query。

参数json结构:

{ 'method':'getOrderInterval',}

函数:function getOrderInterval()

返回值:

{ 'orderInterval':[9, 1000]} 合约入口 init

创建合约时候,触发合约 init 入口函数,负责合约创建时的初始化。

函数

function init(input_str){}

参数Json结构

{ 'params':{ 'owner':'buQnTmK9iBFHyG2oLce7vcejPQ1g5xLVycsj', 'feeRate':'50000', 'version': '1.0' }}

owner:如果创建 DEX 合约时,没有给出默认值,那么默认 DEX 合约的创建者。

feeRate: 单位为 1/(10^8),例如 feeRate 的值为 50000,那么服务费率是 50000/(10^8) = 5/10000。

version:DEX 的版本。如 1.0

返回值:

​成功:无

​失败:抛出异常

main

负责数据写入,其中包含了 makeOrder、cancelOrder、takeOrder、updateFeeRate、updateOwner、clearExpiredOrder、withdrawFee等接口。

函数体

function main(input_str){ let input = JSON.parse(input_str); if(input.method === 'makeOrder'){ makeOrder(input.params.own, input.params.target, input.params.fee, input.params.expiration); } else if(input.method === 'cancelOrder'){ cancelOrder(input.params.order); } else if(input.method === 'takeOrder'){ takeOrder(input.params.order); } else if(input.method === 'updateFeeRate'){ updateFeeRate(input.params.rate); } else if(input.method === 'updateOwner'){ updateOwner(input.params.owner); } else if(input.method === 'clearExpiredOrder'){ clearExpiredOrder(); } else if(input.method === 'withdrawFee'){ withdrawFee(input.params.value); } else{ throw '<Main interface passes an invalid operation type>'; }} query

负责数据查询,其中包含了dexInfo、getOrder、getOrderInterval等接口。

函数体

function query(input_str){ let result = {}; let input = JSON.parse(input_str); if(input.method === 'dexInfo'){ result.dexInfo = dexInfo(); } else if(input.method === 'getOrder'){ result.order = getOrder(input.params.order); } else if(input.method === 'getOrderInterval'){ result.interval = getOrderInterval(); } else{ throw '<Query interface passes an invalid operation type>'; } return JSON.stringify(result);}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。