EOS智能合约测试

EOS智能合约测试

整体步骤功能大概如下

本地钱包

  • 创建钱包

    ./cleos wallet create -n 钱包名 --file ./save.txt
  • 开启钱包

    cleos wallet unlock -n 钱包名 --password 密钥
  • 账户导入私钥

    cleos wallet import -n 钱包名 --private-key 私钥
  • 查看钱包导入的密钥

    cleos wallet keys
  • 激活钱包

    cleos wallet unlock -n jiji --password 密钥
  • 删除钱包

    rm -f ~/eosio-wallet/*.wallet

代币管理

  • 添加新代币

    cleos push action 合约账户 addtoken '{"ext_symbol":{"symbol":"8,FEOS","contract":"发行FEOS账户"},"memo":"FEOS create by 发行FEOS账户"}' -p 合约账户@backmange
  • 查询代币表

    cleos get table 合约账户 合约账户 tokeninfotb
  • 更新代币

    cleos push action 合约账户 updatetoken '{"id":0, ext_symbol":{"symbol":"8,FEOS","contract":"发行FEOS账户"},"memo":"FEOS create by 发行FEOS账户"}' -p 合约账户@backmange
  • 删除代币

    cleos push action 合约账户 deltoken '{"id": 0}' -p 合约账户@backmange

交易对管理

  • 添加交易对

    cleos push action 合约账户 addtokenpair '{"base_id":0, "quote_id":1, "price_precision": 7, "volume_precision": 2, "min_volume_amount": 1000000, "pair_status": 1, "memo":"addtokenpair test"}' -p 合约账户@backmange
  • 查询交易对表

    cleos get table 合约账户 合约账户 tokenpairtb
  • 更新币对

    cleos push action 合约账户 uptokenpair '{"id":1, "price_precision": 7, "volume_precision": 2, "min_volume_amount": 1000000, "pair_status": 1, "memo":"addtokenpair test"}' -p 合约账户@backmange
  • 删除币对

    cleos push action 合约账户 deltokenpair '{"id":0}' -p 合约账户@backmange

交易单管理

  • 发送买单

    cleos push action 发行FBTC账户 transfer '["挂单账户", "交易所合约账户","100.00000000 FBTC","{\"transfer_type\":1,\"token_pair_id\":0,\"unit_price_amount\":1000,\"order_type\":1,\"order_memo\":\"\"}"]' -p 挂单账户@active -p 合约账户@multisig
  • 查询买单表

    cleos get table 合约账户 交易对ID ordertb
  • 发送卖单

    cleos push action 发行FUSDT账户 transfer '["挂单账户", "交易所合约账户","100.00000000 FUSDT","{\"transfer_type\":2,\"token_pair_id\":0,\"unit_price_amount\":1000,\"order_type\":1,\"order_memo\":\"\"}"]' -p 挂单账户@active -p 合约账户@multisig
  • 查询卖单表

    cleos get table 合约账户 交易对ID ordertb

订单撮合

  • 授权code权限

    cleos set account permission 合约账户 active '{"threshold": 1,"keys": [{"key": "EOS7oR9AvZVu7sgwUCmPDyuKfpJEt7qFXPrHfLoHjh7rUigQZNoCM","weight": 1}],"accounts": [{"permission":{"actor":"合约账户","permission":"eosio.code"},"weight":1}]}' owner -p 
  • 执行限价撮合

    cleos push action 合约账户 matchlimit '{"buy_orderid":2, "sell_orderid":3, "token_pair_id": 0}' -p 合约账户@multisig
  • 查看执行结果

    cleos push action 合约账户 matchlimit '{"buy_orderid":2, "sell_orderid":3}' -p 合约账户@active
  • 查询卖单

    cleos get table 合约账户 交易对ID ordertb
  • 查询买单

    cleos get table 合约账户 交易对ID ordertb
  • 插销订单

    cleos push action 合约账户 cancelorder '{capi_name user, uint64_t orderid, uint64_t token_pair_id, uint8_t trans_type}' -p 挂单账户@active -p 合约账户@multisig

交易额管理

  • 衡量增加

    cleos push action 合约账户 addeamount '{"ext_symbol":{"symbol":"8,FEOS","contract":"发行FEOS账户"}, "unit_limit_amount":1000}' -p 合约账户@backmange
  • 查询elimittb表

    cleos get table 合约账户 合约账户 elimittb
  • 衡量更新

    cleos push action 合约账户 upeamount '{"ext_symbol":{"symbol":"8,FEOS","contract":"发行FEOS账户"}, "unit_limit_amount":1000}' -p 合约账户@backmange
  • 衡量删除

    cleos push action 合约账户 deleamount '{"ext_symbol":{"symbol":"8,FEOS","contract":"发行FEOS账户"}}' -p 合约账户@backmange

抵押增加额度计算管理

  • 计算更新

    cleos push action 合约账户 updamount '{"unit_limit_amount": 100}' -p 合约账户@active
  • 查询抵押增加额度表

    cleos get table 合约账户 合约账户 dlimittb

抵押操作

  • 抵押平台代币

    cleos push action 代币发行合约账户 transfer '["抵押账户", "合约账户","100.00000000 EOS","{\"transfer_type\":3}"]' -p 抵押账户 -p 多签账户@active
  • 查询账户额度数据

    cleos get table 合约账户 合约账户 accounttb
  • 查看已抵押数据

    cleos get table 合约账户 合约账户 dtokentb
  • 执行取消抵押

    cleos push action 合约账户 undelegate '{"account": "抵押账户", "delegate_asset": "10.00000000 EOS"}' -p 抵押账户@active -p 合约账户@multisig
  • 赎回到期

    cleos push action 合约账户 refund '{"account": "抵押账户"}' -p 抵押账户@active -p 合约账户@multisig

交易及挖矿

  • 获取奖励

    cleos push action 合约账户 claimrewards '{"account": "赎回账户"}' -p 赎回账户@active -p 合约账户@multisig

提取场外币

  • 转出场外币

    cleos push action 发币合约账户 transfer '["提币测试账户", "合约账户","100.00000000 FBTC","{\"transfer_type\":4,\"to_name\":\"testaccount\"}"]' -p 提币测试账户 -p 多签账户@active
  • 修改提币记录状态

    cleos push action 合约账户 changeextst '{"id": 111, "status": 1}' -p 交易所合约账户@backmange
  • 删除提取记录

    cleos push action 合约账户 delextract '{"id": 111}' -p 交易所合约账户@backmange
  • 查询提币记录

    cleos get table 合约账户 合约账户 extracttb

合约表

systemtb (系统设置表)

键值类型注释备注
iduint64_t序号自增
statusuint8_t根据系统的战备等级,根据设定规则,关闭合约内相应的Action
update_timepointtime_point更新时间
status (系统状态)
战备级别类型备注
COMBAT_LEVEL_NORMALuint8_t1正常
COMBAT_LEVEL_LOWuint8_t2低级
COMBAT_LEVEL_MIDDLEuint8_t3中级
COMBAT_LEVEL_HIGHuint8_t4高级
COMBAT_LEVEL_CRITICALuint8_t5危急

global (全局数据)

键值类型注释备注
iduint64_t序号自增
last_total_limit_amountuint64_t上一次时累计的交易总额度
update_timepointtime_point更新时间

orderidtb (为计算唯一订单ID)

键值类型注释备注
iduint64_t序号只保留一条记录
order_iduint128_t唯一订单ID

tokeninfotb (币种信息表)

键值类型注释备注
iduint64_t代币id自增
ext_symbolextended_symbol包含代币符号,代币精度,代币合约
token_scoreuint8_t代币评分(0-10) {从0到10,分数越低,属性越差,默认是5}
create_timepointtime_point创建时间点
update_timepointtime_point创建或修改时间点
is_exist_quoteuint8_t是否存在计价交易区,默认0
memostd::string代币备注
token_score (RATING_TOKEN_VALUE 代币评分)
代币评分类型备注
TOKEN_SCORE_0uint8_t0被DEX拉黑的代币,禁止交易
TOKEN_SCORE_1uint8_t1
TOKEN_SCORE_2uint8_t2
TOKEN_SCORE_3uint8_t3
TOKEN_SCORE_4uint8_t4
TOKEN_SCORE_5uint8_t5默认值
TOKEN_SCORE_6uint8_t6

tokenpairtb (交易币对信息表)

键值类型注释备注
iduint64_t交易币对id
base_iduint64_t基准货币id
quote_iduint64_t计价货币id
price_precisionuint8_t价格精度位数{计价货币}
volume_precisionuint8_t数量精度位数{基准货币}
min_volume_amountuint64_t最小交易数量
pair_statusuint8_t交易对状态 1启用,2暂停,3停止
create_timepointtime_point创建时间点
update_timepointtime_point修改时间点
memostd::string交易对备注
pair_status (交易对状态)
状态值注释备注
PAIR_NORMAL1普通状态
PAIR_PAUSE2暂停状态
PAIR_STOP3停止状态

ordertb (交易单数据 buyordertb/sellordertb )

键值类型注释备注
iduint128_t订单号,唯一
transaction_idcapi_checksum256交易单id
transfer_typeuint8_t交易类型 (买/卖)
token_pair_iduint64_t币对id
creatorcapi_name创建账户名
unit_price_amountuint64_t下单单价
balance_amountuint64_t剩余未成交数量
total_amountuint64_t下单总数量
order_typeuint8_t订单类型 (市价/限价)
statusuint8_t订单状态
update_timepointtime_point更新时间
create_timepointtime_point创建时间
order_memostd::string订单备注
order_type (交易单类型)
交易单类型类型备注
ORDER_LIMIT_TYPEuint8_t1限价
ORDER_MARKET_TYPEuint8_t2市价
status (订单状态)
交易单状态类型备注
ORDER_PENDINGuint8_t1交易等待 {从未交易过}
ORDER_IN_TRANSuint8_t2交易进行 {部分交易}
ORDER_PAUSEuint8_t3交易暂停 {预留}
ORDER_STOPuint8_t4交易停止 {预留}
OEDER_ERRORuint8_t5交易出错 {预留}
OEDER_CANCELuint8_t6交易撤销
ORDER_FINISHuint8_t7交易完成 {短期保留,后面通过clearram定期清理}

freezeinfotb (交易下单时记录用户冻结资金的结构)

键值类型注释备注
orderiduint128_t订单id
freeze_amountuint64_t冻结数量
update_timepointtime_point更新时间
create_timepointtime_point创建时间点

accounttb (账户信息)

键值类型注释备注
account_namecapi_name账户名
account_typeuint8_t账号类型:0, 普通账号; 1, 合约账号
normal_account_scoreuint8_t从0到10,分数越低,账号属性越差,默认是5
code_account_scoreuint8_t合约账号评分:从0到10,分数越低,账号属性越差,默认是5
balance_limit_amountuint64_t交易额剩余量
total_limit_amountuint64_t交易额总量
limit_update_time_pointtime_point交易额最后刷新
perblock_bucket_assetasset待领取的出块奖励
last_claim_time_pointtime_point最后一次领取奖励的时间
account_type (RATING_ACCOUNT_TYPE 账号类型)
账号类型类型备注
NORMAL_ACCOUNT_TYPEuint8_t1普通账户
CODE_ACCOUNT_TYPEuint8_t2合约账户 (由后台过滤更新)
account_score (RATING_ACCOUNT_VALUE 账户评分)
账号评分类型备注
ACCOUNT_SCORE_0uint8_t0被BP拉黑或已知恶意合约账号,如实施过合约攻击行为
ACCOUNT_SCORE_1uint8_t1
ACCOUNT_SCORE_2uint8_t2拉黑的羊毛党账号
ACCOUNT_SCORE_3uint8_t3疑似羊毛党账号
ACCOUNT_SCORE_4uint8_t4
ACCOUNT_SCORE_5uint8_t5默认值
ACCOUNT_SCORE_6uint8_t6通过KYC人脸比对验证

elimittb (成交消耗额度衡量数据)

键值类型注释备注
ext_symbolextended_symbol代币扩展符号
unit_limit_amountuint64_t单个成交消耗交易额

dlimittb (抵押增加额度计算数据 限定只支持平台币)

键值类型注释备注
iduint64_t序号
unit_limit_amountuint64_t单个平台币获取的交易额

dtokentb (抵押赎回币记录)

键值类型注释备注
account_namecapi_name抵押账户名
balance_assetasset抵押余额
total_assetasset抵押总数
undelegate_assetasset取消抵押数
request_time_pointtime_point请求时间

brewardtb (交易挖矿奖励)

键值类型注释备注
iduint64_t序号
current_block_iduint64_t当前所在块id已替换,先做后期功能扩展保留
perblock_total_bucket_assetasset总的待分配的出块奖励
account_amountsvector期间内交易各自账户消耗的交易额
update_timepointtime_point更新时间

account_transaction_amount

键值类型注释备注
account_namecapi_name交易账户名
current_limit_amountuint64_t期间内总的消耗

extracttb (提币记录)

键值类型注释备注
iduint128_t订单号
account_namecapi_name提币账户
to_namecapi_name提币到账户
ext_assetextended_asset提币金额
statusuint8_t提币状态
update_timepointtime_point更新时间