-
Notifications
You must be signed in to change notification settings - Fork 13
BaerChain pendingOrder transaction
woodbaer edited this page Aug 22, 2019
·
4 revisions
1. 请求Json文件说明 返回目录
{
"from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"to":"0x00000000000000000000000000000000766f7465",
"value":"0x0",
"data":[
{
"type":3,
"m_from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"m_type":2,
"m_token_type":1,
"m_buy_type":0,
"m_num":"0x0",
"m_price":"0x5f5e100"
}
],
"chainId":"0x1",
"nonce":"0x0",
"gas":"0x9c40",
"gasPrice":"0x5"
}- 可查看代码进行json组装
- params参数说明
- 备注:当to填其他地址,且data不为空时,默认to为调用的合约地址,且将from中转出value(value如果也有值)的值到to中,一般禁止此种操作
from :类型为string,挂单交易(pendingOrder)发起地址
to :类型为string,固定地址,不能更改
value : 类型为string,默认为"0x0"
data : 类型为string,挂单详细数据
> type : 类型为int,固定为3,表示挂单交易(pendingOrder)
> m_from : 类型为string,挂单交易(pendingOrder)发起地址,与from相同
> m_type : 类型为int (1 : 卖,2 : 买)
> m_token_type : 类型为int,币种(1 : cookie)
> m_buy_type : 类型为int,价格类型(0 : 市价, 1 : 限价)
注 : (1)当m_buy_type为1时,m_num和m_price不能为0
(2)m_type为2,m_buy_type为0,m_num为0,m_pirce不能为0
(3)m_type为1,m_buy_type为0,m_num不能为0,m_pirce为0
(4)以市价挂单时(即m_buy_type为0时),交易池中需要有能将其戳和成功的对应的单,否则,校检不能通过,导致不能挂单
> m_num : 类型为string,16进制,买、卖的数量(cookie) (数量为8位精度,即1颗Cookie为100000000;可传入最小值为10000,表示0.0001颗Cookie;此时规定m_num的值转换为10进制时必须以4个0结尾)
> m_price : 类型为string,16进制,当m_buy_type为1时,为买、卖每个cookie的单价(单价为8位精度,即单价1为100000000;可传入最小值为10000,表示单价的0.0001;此时规定m_price的值转换为10进制时必须以4个0结尾)
当m_buy_type为0时,为买、卖cookie的总价(总价为8位精度,发起交易时为100000000为1个cookie, 可传入的最小值为10000,表示0.0001个cookie;
此时规定此时规定m_price的值转换为10进制时必须以4个0结尾,注意当挂单地址没有cookie时,挂的单买的cookie成交后不足以支付gas费用,则挂单不成功)
chainId : 类型为string,16进制,链ID, 必须和链创世chainId相同
nonce : 类型为string,16进制,nonce值,每次执行后+1
gas : 类型为string,16进制,为交易执行提供的 gas 整数
gasPrice : 类型为string,16进制,用于每一个支付 gas 的 gasPrice 整数
2. 挂单交易(pendingOrder)过程说明 返回目录
2.1 确认余额 返回目录
-
说明: 查询地址余额,确认余额是否能够进行挂单交易
- 地址d0e89b32875f5a1d68ecbfb3995263adc3439bea以市价买cookie
-
指令
curl -d '{"jsonrpc":"2.0","id":9,"method":"brc_getBalance","params":["d0e89b32875f5a1d68ecbfb3995263adc3439bea","latest"]}' 10.0.5.40:8111 -
返回结果
{ "id": 9, "jsonrpc": "2.0", "result": { "Address": "0xd0e89b32875f5a1d68ecbfb3995263adc3439bea", "BRC": "0x2e90edd000",(转为10进制为200000000000,因为为8为精度,所以有2000个BRC) "FBRC": "0x0", "FBalance": "0x0", "balance": "0x0", (可以看见cookie为0) "ballot": "0x0", "cookieinsummury": "0x0", "nonce": "0x0", "poll": "0x0", "vote": null } } -
备注: 当前没有cookie的时候,可以用 市价买cookie 的方式挂单买cookie,挂单撮合成功后会自动扣出消耗的gas
2.2 市价买cookie 返回目录
- 地址d0e89b32875f5a1d68ecbfb3995263adc3439bea以市价买cookie
{
"from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"to":"0x00000000000000000000000000000000766f7465",
"value":"0",
"data":[
{
"type":3,
"m_from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"m_type":2, (2表示买)
"m_token_type":1, (1表示cookie)
"m_buy_type":0, (0表示市价)
"m_num":"0x0", (此时默认为0)
"m_price":"0x5f5e100" (此时m_price表示用于买cookie的BRC总数,转为10进制为100000000,
因8位精度,可得当前用1个BRC市价去买cookie)
}
],
"chainId":"0x1",
"nonce":"0x2",
"gas":"0x9c40",
"gasPrice":"0x5"
}
- 查询当前地址余额情况得
{
"id": 9,
"jsonrpc": "2.0",
"result": {
"Address": "0xd0e89b32875f5a1d68ecbfb3995263adc3439bea",
"BRC": "0x2e8af7ef00", (转为10进制为199900000000,因为为8为精度,所以为1999个BRC,因为上面用了1个BRC去买cookie)
"FBRC": "0x0",
"FBalance": "0x0",
"balance": "0x5f29450", (表示cookie的数量,转为10进制为99783760,因为为8为精度,所以扣除gas费用后,
此时得到0.9978376个cookie,当然由于市价的不同,得到的cookie数量会不同,
具体以实际为准,本次用于测试,以帮助大家了解)
"ballot": "0x0",
"cookieinsummury": "0x0",
"nonce": "0x1",
"poll": "0x0",
"vote": null
}
}
- 此时,我们有足够的BRC和cookie了,那么再测试限价买cookie
2.3 限价买cookie 返回目录
- 地址d0e89b32875f5a1d68ecbfb3995263adc3439bea以限价买cookie
{
"from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"to":"0x00000000000000000000000000000000766f7465",
"value":"0x0",
"data":[
{
"type":3,
"m_from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"m_type":2, (2表示买)
"m_token_type":1, (1表示cookie)
"m_buy_type":1, (1表示限价)
"m_num":"0x5f5e100", (转换为10进制得100000000,8位精度为1,即表示买1个cookie)
"m_price":"0x5f5e100" (转换为10进制得100000000,8位精度为1,此时表示买cookie的单价是1个BRC)
> (1)可知此时是限价用BRC去买cookie,买cookie的个数是1个,单价是1个BRC,那么数量乘以单价
即1 * 1 = 1,说明此时我想花费1个BRC去买1个cookie
> (2)如果我想买100个cookie单价仍然是1个BRC,那么数量乘以单价,
即100 * 1 = 100,说明此时我想花费100个BRC去买100个cookie
> (3)如果卖盘有对应的单,则会撮合交易成功,我得到我想要的cookie,别人得到需要的BRC,
当然,具体以实际需求为主,本测试便于于帮助大家理解
}
],
"chainId":"0x1",
"nonce":"0x2",
"gas":"0x13880",
"gasPrice":"0x5"
}
- 查询余额(brc_getBalance)
{
"id": 9,
"jsonrpc": "2.0",
"result": {
"Address": "0xd0e89b32875f5a1d68ecbfb3995263adc3439bea",
"BRC": "0x2e85020e00", (转换为10进制为199800000000,因8位精度,可知现在有1998个BRC)
"FBRC": "0x0",
"FBalance": "0x0",
"balance": "0xbe52490",(转换为10进制为199566480,因8位精度,可知现在有1.99566480个cookie,
表明刚才限价买了1个cookie)
"ballot": "0x0",
"cookieinsummury": "0x0",
"nonce": "0x2",
"poll": "0x0",
"vote": null
}
}
2.4 限价卖cookie 返回目录
- 地址d0e89b32875f5a1d68ecbfb3995263adc3439bea以限价卖cookie
{
"from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"to":"0x00000000000000000000000000000000766f7465",
"value":"0x0",
"data":[
{
"type":3,
"m_from":"d0e89b32875f5a1d68ecbfb3995263adc3439bea",
"m_type":1, (1表示卖)
"m_token_type":1, (1表示cookie)
"m_buy_type":1, (1表示限价)
"m_num":"0x5f5e100", (转换为10进制得100000000,8位精度为1,此时表示卖掉1个cookie)
"m_price":"0x5f5e100" (转换为10进制得100000000,8位精度为1,此时表示卖掉1个cookie的单价为1个BRC)
}
],
"chainId":"0x1",
"nonce":"0x2",
"gas":"0x13880",
"gasPrice":"0x5"
}
- 查询余额得
{
"id": 9,
"jsonrpc": "2.0",
"result": {
"Address": "0xd0e89b32875f5a1d68ecbfb3995263adc3439bea",
"BRC": "0x2e85020e00", (转换为10进制为199800000000,因8位精度,可知现在有1998个BRC)
"FBRC": "0x0",
"FBalance": "0x5f5e100",(转换为10进制得100000000,8位精度为1,FBalance表示此时冻结了1个cookie,因为刚才测试
挂单限价去卖了1个cookie,但并没有被交易,还在卖盘上,所以这个cookie被冻结直到交易成功
或者自己撤单)
"balance": "0x5ecb620",(转换为10进制得99399200,8位精度为0.993992个cookie,因为刚才有1个cookie拿去卖了,由上述可知)
"ballot": "0x0",
"cookieinsummury": "0x0",
"nonce": "0x3",
"poll": "0x0",
"vote": null
}
}
2.5 市价卖cookie 返回目录
- 以市价卖cookie时,如果此时买盘没有对应的买单,则挂单不成功
{
"from":"cccc7a30bf688c060524dfd759fe2627ed3387bc",
"to":"0x00000000000000000000000000000000766f7465",
"value":"0",
"data":[
{
"type":3,
"m_from":"cccc7a30bf688c060524dfd759fe2627ed3387bc",
"m_type":1, (1表示卖)
"m_token_type":1, (1表示cookie)
"m_buy_type":0, (0表示市价)
"m_num":"0x5f5e100", (转换为10进制得100000000,8位精度为1,此时表示卖掉1个cookie)
"m_price":"0"
}
],
"chainId":"0x1",
"nonce":"0x2",
"gas":"0x9c40",
"gasPrice":"0x5"
}
备注: 如果此时以市价卖cookie时,如果此时买盘没有对应的买单,则会显示校检不过,没有对应的单,如下:
{
"error": {
"code": 0,
"data": null,
"message": "verifyPendingorder failed :There is no order for the corresponding order pool!"
},
"id": 1,
"jsonrpc": "2.0"
}