Author Topic: 测试网版本 test-5.0.0 及 AMM 池命令行教程  (Read 5665 times)

0 Members and 1 Guest are viewing this topic.

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
AMM 流量池相关操作 ( cli_wallet 命令 和 API )

1. 建池

op code: 59

参数
Code: [Select]
fee                     手续费,测试网默认手续费 50 TEST
account                 账号,格式 1.2.x
asset_a                 资产A,格式 1.3.x
asset_b                 资产B,格式 1.3.x
share_asset             权益资产(即LP TOKEN),格式 1.3.x
taker_fee_percent       交易手续费,整数表示,单位是万分之一
withdrawal_fee_percent  提现手续费,整数表示,单位是万分之一

注:
* 资产 A 的 ID 必须小于资产 B 的 ID
* 建池必须绑定权益资产,只有权益资产持有人才能绑定,且自动成为池主
* 权益资产必须预先建好,不能是AB之一,必须是普通UIA,不能有存量

貌似池子创建者可以获得maker fee分成?这个费率是在哪里设置的?
如果池内的资产(A/B)本身设置了市场交易费返佣,交易发生时,池作为maker,该笔交易的返佣受益人为池主的注册人和引荐人。
BitShares committee member: abit
BitShares witness: in.abit

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 1928
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
AMM 流量池相关操作 ( cli_wallet 命令 和 API )

1. 建池

op code: 59

参数
Code: [Select]
fee                     手续费,测试网默认手续费 50 TEST
account                 账号,格式 1.2.x
asset_a                 资产A,格式 1.3.x
asset_b                 资产B,格式 1.3.x
share_asset             权益资产(即LP TOKEN),格式 1.3.x
taker_fee_percent       交易手续费,整数表示,单位是万分之一
withdrawal_fee_percent  提现手续费,整数表示,单位是万分之一

注:
* 资产 A 的 ID 必须小于资产 B 的 ID
* 建池必须绑定权益资产,只有权益资产持有人才能绑定,且自动成为池主
* 权益资产必须预先建好,不能是AB之一,必须是普通UIA,不能有存量

貌似池子创建者可以获得maker fee分成?这个费率是在哪里设置的?
Email:bitcrab@qq.com

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
更新命令行工具包下载地址。见顶楼
BitShares committee member: abit
BitShares witness: in.abit

Offline xixi002020

       波场的JUSTSWAP学习改进了以太坊的 UNISWAP,简单易用,很适合国人玩。BTS能学习好波场的JUSTSWAP,并且发个类似UNI币的就可以了。现在这样复杂怎么玩?
简单易用的用户界面后面,功能的实现都是复杂的。
上面发的东西,不是给最终玩家看的。
玩起来越简单越好,希望9.30上线后  第一时间有教程 详细说明 之内的

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
       波场的JUSTSWAP学习改进了以太坊的 UNISWAP,简单易用,很适合国人玩。BTS能学习好波场的JUSTSWAP,并且发个类似UNI币的就可以了。现在这样复杂怎么玩?
简单易用的用户界面后面,功能的实现都是复杂的。
上面发的东西,不是给最终玩家看的。
BitShares committee member: abit
BitShares witness: in.abit

Offline gghi

  • Hero Member
  • *****
  • Posts: 510
    • View Profile
  • BitShares: ttt888
       波场的JUSTSWAP学习改进了以太坊的 UNISWAP,简单易用,很适合国人玩。BTS能学习好波场的JUSTSWAP,并且发个类似UNI币的就可以了。现在这样复杂怎么玩?

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
问题1:作为一名普通用户,从什么渠道知道已在运行的池子呢...
池子的ID 是 1.19.x ,可以直接遍历找。
UI内置也是一个办法。

3. 批量查询 API

* 按资产A查所有池 get_liquidity_pools_by_asset_a (asset_a, limit, start_id)
* 按资产B查所有池 get_liquidity_pools_by_asset_b (asset_b, limit, start_id)
* 按交易对查询池列表 get_liquidity_pools_by_both_assets ( asset_a, asset_b, limit, start_id)
* 按权益资产批量查询池 get_liquidity_pools_by_share_asset( [assets], subscribe )

注:
* limit和start_id 用于翻页。limit最大值默认101,是节点运行参数之一,可调节。
* subscribe 用于订阅通知

BitShares committee member: abit
BitShares witness: in.abit

Offline binggo

  • Hero Member
  • *****
  • Posts: 2374
  • 世间太多瘪犊子
    • View Profile
问题1:作为一名普通用户,从什么渠道知道已在运行的池子呢...

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
AMM 流量池相关操作 ( cli_wallet 命令 和 API )

1. 建池

op code: 59

参数
Code: [Select]
fee                     手续费,测试网默认手续费 50 TEST
account                 账号,格式 1.2.x
asset_a                 资产A,格式 1.3.x
asset_b                 资产B,格式 1.3.x
share_asset             权益资产(即LP TOKEN),格式 1.3.x
taker_fee_percent       交易手续费,整数表示,单位是万分之一
withdrawal_fee_percent  提现手续费,整数表示,单位是万分之一

注:
* 资产 A 的 ID 必须小于资产 B 的 ID
* 建池必须绑定权益资产,只有权益资产持有人才能绑定,且自动成为池主
* 权益资产必须预先建好,不能是AB之一,必须是普通UIA,不能有存量

比如:

abit-test 建池,交易对 TEST/CONTEST.BTC ,权益资产 CONTEST.LP1

sign_transaction { "operations": [[59,{ "fee": { "amount": 5000000, "asset_id": "1.3.0" }, "account": "1.2.3833", "asset_a": "1.3.0", "asset_b": "1.3.1515", "share_asset": "1.3.1560", "taker_fee_percent": 12, "withdrawal_fee_percent": 50 }]] } true


1.1 检查操作结果

可以用 get_account_history 命令查看帐户操作历史,比如
Code: [Select]
get_account_history abit-test 10

结果示例
Quote
40057890 2020-09-19T14:28:06 liquidity_pool_create_operation abit-test fee: 50 TEST   result: {"new_objects":["1.19.0"],"updated_objects":["1.3.1560"],"removed_objects":[]}

格式为:块号 时间 操作 帐号 手续费 结果

结果里 new_objects 里 1.19.x 就是池 ID ,可以通过 get_object 命令查看
updated_objects 里的 1.3.1560 表示权益资产 ID
Code: [Select]
>>> get_object 1.19.0
[{
    "id": "1.19.0",
    "asset_a": "1.3.0",
    "asset_b": "1.3.1515",
    "balance_a": 0,
    "balance_b": 0,
    "share_asset": "1.3.1560",
    "taker_fee_percent": 12,
    "withdrawal_fee_percent": 50,
    "virtual_value": "0"
  }
]

结果说明:
id 池 ID
asset_a 资产A
asset_b 资产B
balance_a 余额A
balance_b 余额B
share_asset 权益资产
taker_fee_percent       交易手续费,整数表示,单位是万分之一
withdrawal_fee_percent  提现手续费,整数表示,单位是万分之一
virtual_value 恒定乘积 = balance_a * balance_b

用 get_asset CONTEST.LP1 命令也可以看到里面有一项 "for_liquidity_pool": "1.19.0"
表示该资产是不是一个 LP TOKEN ,以及对应的池ID是多少
Code: [Select]
>>> get_asset CONTEST.LP1
{
  "id": "1.3.1560",
  "symbol": "CONTEST.LP1",
  ...
  "for_liquidity_pool": "1.19.0",
  ...

2. 删池

op code: 60

参数
Code: [Select]
fee                     手续费,测试网默认手续费 0 ,也就是免费
account                 账号,格式 1.2.x
pool                    池 ID ,格式 1.19.x

注:
* 只有池主才可以删
* 只有空池才可以删
* 删后对应的权益资产可再利用

比如:

abit-test 删除 CONTEST.LP1 对应的池

sign_transaction { "operations": [[60,{ "fee": { "amount": 0, "asset_id": "1.3.0" }, "account": "1.2.3833", "pool": "1.19.0" }]] } true


2.1 检查操作结果

可以用 get_account_history 命令查看帐户操作历史,比如
Code: [Select]
get_account_history abit-test 10

结果示例
Quote
40057890 2020-09-19T14:28:06 liquidity_pool_delete_operation abit-test fee: 0 TEST   result: {"new_objects":[],"updated_objects":["1.3.1560"],"removed_objects":["1.19.0"]}

格式为:块号 时间 操作 帐号 手续费 结果

结果里 removed_objects 里 1.19.x 就是池 ID ,表示已删除
updated_objects 里的 1.3.1560 表示权益资产 ID

3. 批量查询 API

* 按资产A查所有池 get_liquidity_pools_by_asset_a (asset_a, limit, start_id)
* 按资产B查所有池 get_liquidity_pools_by_asset_b (asset_b, limit, start_id)
* 按交易对查询池列表 get_liquidity_pools_by_both_assets ( asset_a, asset_b, limit, start_id)
* 按权益资产批量查询池 get_liquidity_pools_by_share_asset( [assets], subscribe )

注:
* limit和start_id 用于翻页。limit最大值默认101,是节点运行参数之一,可调节。
* subscribe 用于订阅通知


4. 充值,即将交易资产存入池中,换取对应的权益资产

op code: 61

参数
Code: [Select]
fee                     手续费,测试网默认手续费 0.1 TEST
account                 账号,格式 1.2.x
pool                    池 ID ,格式 1.19.x
amount_a                资产A数量,标准金额格式(数量+币种)
amount_b                资产B数量,标准金额格式(数量+币种)

注:
* 空池只有池主才可以充,非空池任何人都可以充
* 空池充值确定初始兑换比例
* 非空池充值时,资产按比例进池,按比例得到权益资产,多的充值会退还
* 池上限由权益资产(LP TOKEN)的最大供应量来调节

比如:

abit-test 往 CONTEST.LP1 池 充值 100 TEST 和 0.1 CONTEST.BTC

sign_transaction { "operations": [[61,{ "fee": { "amount": 10000, "asset_id": "1.3.0" }, "account": "1.2.3833", "pool": "1.19.0", "amount_a": { "amount": 10000000, "asset_id": "1.3.0" }, "amount_b": { "amount": 10000000, "asset_id": "1.3.1515" } }]] } true


4.1 检查操作结果

可以用 get_account_history 命令查看帐户操作历史,比如
Code: [Select]
get_account_history abit-test 10

结果示例
Quote
40058486 2020-09-19T15:00:33 liquidity_pool_deposit_operation abit-test fee: 0.10000 TEST   result: {"paid":[{"amount":10000000,"asset_id":"1.3.0"},{"amount":10000000,"asset_id":"1.3.1515"}],"received":[{"amount":10000000,"asset_id":"1.3.1560"}],"fees":[]}

格式为:块号 时间 操作 帐号 手续费 结果

结果里 paid 数组表示实际付款金额, received 数组表示得到的数量

也可以用 list_account_balances 命令查余额,此处略。

用 get_object 1.19.0 命令检查池信息


5. 提现,即将权益资产归还给池,换取所对应权益的交易资产

op code: 62

参数
Code: [Select]
fee                     手续费,测试网默认手续费 5 TEST
account                 账号,格式 1.2.x
pool                    池 ID ,格式 1.19.x
share_amount            权益资产数量,标准金额格式(数量+币种)

注:
* 按所支付的权益资产占比计算对应的交易资产,扣除提现手续费后支付给提现者
* 提现手续费存留于池中,最后一个提现的不扣手续费

比如:

abit-test 从 CONTEST.LP1 池 提现 100 LP1

sign_transaction { "operations": [[62,{ "fee": { "amount": 500000, "asset_id": "1.3.0" }, "account": "1.2.3833", "pool": "1.19.0", "share_amount": { "amount": 1000000, "asset_id": "1.3.1560" } }]] } true


5.1 检查操作结果

可以用 get_account_history 命令查看帐户操作历史,比如
Code: [Select]
get_account_history abit-test 10

结果示例
Quote
40058679 2020-09-19T15:11:30 liquidity_pool_withdraw_operation abit-test fee: 5 TEST   result: {"paid":[{"amount":1000000,"asset_id":"1.3.1560"}],"received":[{"amount":995000,"asset_id":"1.3.0"},{"amount":995000,"asset_id":"1.3.1515"}],"fees":[]}

格式为:块号 时间 操作 帐号 手续费 结果

结果里 paid 数组表示实际付款金额, received 数组表示得到的数量

也可以用 list_account_balances 命令查余额,此处略。

用 get_object 1.19.0 命令检查池信息


6. 交易,即用A资产换B资产或者用B资产换A资产

op code: 63

参数
Code: [Select]
fee                     手续费,测试网默认手续费 1 TEST
account                 账号,格式 1.2.x
pool                    池 ID ,格式 1.19.x
amount_to_sale          卖出数量和币种,标准金额格式(数量+币种)
min_to_receive          最少买入数量和币种,标准金额格式(数量+币种)

注:
* 池上限由权益资产(LP TOKEN)的最大供应量来调节

比如:

abit-test 往 CONTEST.LP1 池 卖 20 TEST,希望最少获得0.01 CONTEST.BTC

sign_transaction { "operations": [[63,{ "fee": { "amount": 100000, "asset_id": "1.3.0" }, "account": "1.2.3833", "pool": "1.19.0", "amount_to_sell": { "amount": 2000000, "asset_id": "1.3.0" }, "min_to_receive": { "amount": 1000000, "asset_id": "1.3.1515" } }]] } true


6.1 检查操作结果

可以用 get_account_history 命令查看帐户操作历史,比如
Code: [Select]
get_account_history abit-test 10

结果示例
Quote
40058783 2020-09-19T15:17:06 liquidity_pool_exchange_operation abit-test fee: 1 TEST   result: {"paid":[{"amount":2000000,"asset_id":"1.3.0"}],"received":[{"amount":1631296,"asset_id":"1.3.1515"}],"fees":[{"amount":0,"asset_id":"1.3.0"},{"amount":3269,"asset_id":"1.3.1515"}]}

格式为:块号 时间 操作 帐号 手续费 结果

结果里 paid 数组表示实际付款金额, received 数组表示得到的数量, fees 表示交易手续费

也可以用 list_account_balances 命令查余额,此处略。

用 get_object 1.19.0 命令检查池信息

« Last Edit: September 19, 2020, 03:18:35 pm by abit »
BitShares committee member: abit
BitShares witness: in.abit

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
测试网升级出块正常。
BitShares committee member: abit
BitShares witness: in.abit