请选择 进入手机版 | 继续访问电脑版
  • 搜索
  •  找回密码
     立即注册
  • 登录
  • 注册
  • 找回密码
  • 管理
量子文章详情

Qtum量子链QRC20(标准代币)集成技术文档

2017-11-23阅读 6 量子链平台Qtum

以下内容仅代表Qtum量子链齐唯羽个人观点

本文档说明了怎么使用qtumd提供的命令完成基础的QRC20操作

QRC20集成技术文档

一、基础说明

二、获取账户金额

三、提现

四、获取新充值地址

五、获取充值\提现记录

六、查询交易确认数


一、基础说明

交易所使用一个主地址来存储所有用户的token,以下用MAIN_QRC_ADDRESS来指代。 
QRC20代币的合约地址以下使用
TOKEN_CONTRACT_ADDRESS来指代。 
gas limit使用
DEFAULT_GAS_LIMIT指代,推荐为250000。 
gas price使用
DEFAULT_GAS_PRICE指代,推荐为0.00000040。 
TOKEN_DECIMALS定义了token的小数点位置,值为8。 
还需要定义如下操作: 
addressToHash160把编码后的地址转义为hash160地址,这是基础概念,不过多解释。 
to32bytesArg把十六进制字符串的参数进行编码,编码后的结果为向参数前补字符0,扩展到64个字符的字符串。 
addDecimals把金额转为十六进制字符串, 具体操作可以参考如下php代码:

  1. function addDecimals($amount){

  2.    $decimalPos=getNumberOfDecimals($amount);

  3.    $amount= gmp_init(str_replace(".","",$amount));

  4.    return gmp_strval(gmp_mul($amount,gmp_pow(10,(TOKEN_DECIMALS-$decimalPos))),16);

  5. }

  6. function getNumberOfDecimals($amount){

  7.    if (($pos = strpos($amount, ".")) !== FALSE) {

  8.        return strlen(substr($amount, $pos+1));

  9.    }else{

  10.        return 0;

  11.    }

  12. }

请使用-logevents -txindex参数运行qtumd。 
命令行中出现
{}的地方请带入前面定义的值进行替换。 
注意命令行中的空格。

二、获取账户金额

账户地址为$userAddress

1.qtum-cli callcontract {TOKEN_CONTRACT_ADDRESS} 70a08231{to32bytesArg(addressToHash160($userAddress))}

输出结果为json,里面的executionResult.output即为账户余额。

三、提现

提现地址为$userAddress, 提现金额为$amount(单位为1token)。

1.qtum-cli sendtocontract {TOKEN_CONTRACT_ADDRESS} a9059cbb{to32bytesArg(addressToHash160($userAddress))}{to32bytesArg(addDecimals($amount)) 0 {DEFAULT_GAS_LIMIT} {DEFAULT_GAS_PRICE} {MAIN_QRC_ADDRESS}

命令执行结果的txid即本次交易id,可以用来查询。

四、获取新充值地址

QTUM的充值地址和QRC20代币的充值地址都是同样的格式,对于交易所来说,同一个用户下面的QTUM充值地址和QRC20代币的充值地址可以是同一个。 
也可以使用如下命令获取新的充值地址:

1.qtum-cli getnewaddress


五、获取充值\提现记录

要查询的地址为$depositAddress。开始查询的区块高度为$startingBlock(含此区块,可以为0,为了提高效率建议从用户触发操作后区块开始查)

1.qtum-cli searchlogs {$startingBlock} 999999999 '{"addresses": ["{TOKEN_CONTRACT_ADDRESS}"]}' '{"topics": ["ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}'

注意:参数里面有json,最外层的{}不需要去替换。

查询结果是一个json数组,通过解析log字段可以得到所需要的记录。

六、查询交易确认数

交易id为$txid

1.qtum-cli gettransaction {$txid}

命令结果的confirmations字段即为确认数。

关注Qtum量子链(qtumchain)公众号,回复关键字查阅Qtum量子链相关资料,以下是部分文档关键字

回复:‘白皮书’,查看《Qtum量子链白皮书,设计原理,实现方案,及应用》

回复:‘未来’,查看《Qtum量子链未来2年技术路线规划-简略版》

回复:‘指南’查看《首篇Qtum量子链区块链开发指南系列面世》

回复:‘专访’,查看《Nasdaq专访Qtum:区块链会成为世界最大的信任服务商》

回复:‘文档’,查看英文版本《Qtum量子链实现文档》

回复:‘中文文档’,查看中文版本《Qtum量子链实现文档》

分享到:

相关文章