1. 首页
  2. 智能合约

EOS智能合约测试

最近汤姆师傅在研究智能合约,写了篇总结。

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 (系统设置表)

键值 类型 注释 备注
id uint64_t 序号 自增
status uint8_t 根据系统的战备等级,根据设定规则,关闭合约内相应的Action
update_timepoint time_point 更新时间
status (系统状态)
战备级别 类型 备注
COMBAT_LEVEL_NORMAL uint8_t 1 正常
COMBAT_LEVEL_LOW uint8_t 2 低级
COMBAT_LEVEL_MIDDLE uint8_t 3 中级
COMBAT_LEVEL_HIGH uint8_t 4 高级
COMBAT_LEVEL_CRITICAL uint8_t 5 危急

global (全局数据)

键值 类型 注释 备注
id uint64_t 序号 自增
last_total_limit_amount uint64_t 上一次时累计的交易总额度
update_timepoint time_point 更新时间

orderidtb (为计算唯一订单ID)

键值 类型 注释 备注
id uint64_t 序号 只保留一条记录
order_id uint128_t 唯一订单ID

tokeninfotb (币种信息表)

键值 类型 注释 备注
id uint64_t 代币id 自增
ext_symbol extended_symbol 包含代币符号,代币精度,代币合约
token_score uint8_t 代币评分(0-10) {从0到10,分数越低,属性越差,默认是5}
create_timepoint time_point 创建时间点
update_timepoint time_point 创建或修改时间点
is_exist_quote uint8_t 是否存在计价交易区,默认0
memo std::string 代币备注
token_score (RATING_TOKEN_VALUE 代币评分)
代币评分 类型 备注
TOKEN_SCORE_0 uint8_t 0 被DEX拉黑的代币,禁止交易
TOKEN_SCORE_1 uint8_t 1
TOKEN_SCORE_2 uint8_t 2
TOKEN_SCORE_3 uint8_t 3
TOKEN_SCORE_4 uint8_t 4
TOKEN_SCORE_5 uint8_t 5 默认值
TOKEN_SCORE_6 uint8_t 6

tokenpairtb (交易币对信息表)

键值 类型 注释 备注
id uint64_t 交易币对id
base_id uint64_t 基准货币id
quote_id uint64_t 计价货币id
price_precision uint8_t 价格精度位数{计价货币}
volume_precision uint8_t 数量精度位数{基准货币}
min_volume_amount uint64_t 最小交易数量
pair_status uint8_t 交易对状态 1启用,2暂停,3停止
create_timepoint time_point 创建时间点
update_timepoint time_point 修改时间点
memo std::string 交易对备注
pair_status (交易对状态)
状态值 注释 备注
PAIR_NORMAL 1 普通状态
PAIR_PAUSE 2 暂停状态
PAIR_STOP 3 停止状态

ordertb (交易单数据 buyordertb/sellordertb )

键值 类型 注释 备注
id uint128_t 订单号,唯一
transaction_id capi_checksum256 交易单id
transfer_type uint8_t 交易类型 (买/卖)
token_pair_id uint64_t 币对id
creator capi_name 创建账户名
unit_price_amount uint64_t 下单单价
balance_amount uint64_t 剩余未成交数量
total_amount uint64_t 下单总数量
order_type uint8_t 订单类型 (市价/限价)
status uint8_t 订单状态
update_timepoint time_point 更新时间
create_timepoint time_point 创建时间
order_memo std::string 订单备注
order_type (交易单类型)
交易单类型 类型 备注
ORDER_LIMIT_TYPE uint8_t 1 限价
ORDER_MARKET_TYPE uint8_t 2 市价
status (订单状态)
交易单状态 类型 备注
ORDER_PENDING uint8_t 1 交易等待 {从未交易过}
ORDER_IN_TRANS uint8_t 2 交易进行 {部分交易}
ORDER_PAUSE uint8_t 3 交易暂停 {预留}
ORDER_STOP uint8_t 4 交易停止 {预留}
OEDER_ERROR uint8_t 5 交易出错 {预留}
OEDER_CANCEL uint8_t 6 交易撤销
ORDER_FINISH uint8_t 7 交易完成 {短期保留,后面通过clearram定期清理}

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

键值 类型 注释 备注
orderid uint128_t 订单id
freeze_amount uint64_t 冻结数量
update_timepoint time_point 更新时间
create_timepoint time_point 创建时间点

accounttb (账户信息)

键值 类型 注释 备注
account_name capi_name 账户名
account_type uint8_t 账号类型:0, 普通账号; 1, 合约账号
normal_account_score uint8_t 从0到10,分数越低,账号属性越差,默认是5
code_account_score uint8_t 合约账号评分:从0到10,分数越低,账号属性越差,默认是5
balance_limit_amount uint64_t 交易额剩余量
total_limit_amount uint64_t 交易额总量
limit_update_time_point time_point 交易额最后刷新
perblock_bucket_asset asset 待领取的出块奖励
last_claim_time_point time_point 最后一次领取奖励的时间
account_type (RATING_ACCOUNT_TYPE 账号类型)
账号类型 类型 备注
NORMAL_ACCOUNT_TYPE uint8_t 1 普通账户
CODE_ACCOUNT_TYPE uint8_t 2 合约账户 (由后台过滤更新)
account_score (RATING_ACCOUNT_VALUE 账户评分)
账号评分 类型 备注
ACCOUNT_SCORE_0 uint8_t 0 被BP拉黑或已知恶意合约账号,如实施过合约攻击行为
ACCOUNT_SCORE_1 uint8_t 1
ACCOUNT_SCORE_2 uint8_t 2 拉黑的羊毛党账号
ACCOUNT_SCORE_3 uint8_t 3 疑似羊毛党账号
ACCOUNT_SCORE_4 uint8_t 4
ACCOUNT_SCORE_5 uint8_t 5 默认值
ACCOUNT_SCORE_6 uint8_t 6 通过KYC人脸比对验证

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

键值 类型 注释 备注
ext_symbol extended_symbol 代币扩展符号
unit_limit_amount uint64_t 单个成交消耗交易额

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

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

dtokentb (抵押赎回币记录)

键值 类型 注释 备注
account_name capi_name 抵押账户名
balance_asset asset 抵押余额
total_asset asset 抵押总数
undelegate_asset asset 取消抵押数
request_time_point time_point 请求时间

brewardtb (交易挖矿奖励)

键值 类型 注释 备注
id uint64_t 序号
current_block_id uint64_t 当前所在块id 已替换,先做后期功能扩展保留
perblock_total_bucket_asset asset 总的待分配的出块奖励
account_amounts vector 期间内交易各自账户消耗的交易额
update_timepoint time_point 更新时间

account_transaction_amount

键值 类型 注释 备注
account_name capi_name 交易账户名
current_limit_amount uint64_t 期间内总的消耗

extracttb (提币记录)

键值 类型 注释 备注
id uint128_t 订单号
account_name capi_name 提币账户
to_name capi_name 提币到账户
ext_asset extended_asset 提币金额
status uint8_t 提币状态
update_timepoint time_point 更新时间

原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

QR code