erc20
<p>[[toc]]</p>
<h3>修改历史</h3>
<ul>
<li><code>2018-08-21</code> 增加<strong>获取gasPrice估计值</strong>接口</li>
<li><code>2018-07-26</code> 自定义助记词升级,修改<strong>发送交易</strong>接口</li>
<li><code>2018-07-13</code> 增加<strong>批量查询余额</strong>接口</li>
<li><code>2018-07-06</code> 增加<strong>一对多转账</strong>接口</li>
<li><code>2018-07-05</code> 增加<strong>估计手续费</strong>接口</li>
<li><code>2018-07-04</code> <strong>发送交易</strong>增加uuid参数,保证幂等性</li>
<li><code>2018-07-04</code> <strong>发送交易</strong>改为强制使用HTTPS,使用443端口(HTTPS默认端口,可以不指定),请求时需要指定<a href="https://www.tapd.cn/21308131/documents/file_list/1121308131001000093">CA根证书</a></li>
</ul>
<h2>1 总体说明</h2>
<p>所有方法均返回JSON数据,所有调用应先检查status code,若不是<strong>200</strong>,则调用出错,返回的HTTP body中包含具体错误信息,如</p>
<pre><code> {
"error" : "some error message"
} </code></pre>
<p><code>所有的代币均以代币的合约地址作为唯一标识</code>
<strong>文档中没有提及到的接口,比如</strong></p>
<ul>
<li>创建账户</li>
<li>根据私钥生成地址</li>
<li>查看交易确认次数</li>
<li>查看交易打包信息</li>
</ul>
<p><strong>都可以调用以太坊的接口</strong></p>
<h2>2 查询代币信息</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询指定指定代币的相关信息</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.254.40.107:8080/[:tokenAddress]/info</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">tokenAddress</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>代币的合约地址</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong>
<code>curl 47.254.40.107:8080/0xf230b790e05390fc8295f4d3f60332c93bed42e2/info</code></p>
<p><strong>返回示例</strong></p>
<pre><code>{
"name": "Tronix",
"totalSupply": "100000000000000000",
"decimals": "6",
"symbol": "TRX"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">name</td>
<td style="text-align: left;">string</td>
<td>代币的名字</td>
</tr>
<tr>
<td style="text-align: left;">totalSupply</td>
<td style="text-align: left;">string</td>
<td>代币的总发行量</td>
</tr>
<tr>
<td style="text-align: left;">decimals</td>
<td style="text-align: left;">string</td>
<td>这个代币的小数位数</td>
</tr>
<tr>
<td style="text-align: left;">symbol</td>
<td style="text-align: left;">string</td>
<td>代币的符号</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>需要注意的是:</strong>
上面的信息不一定全,因为erc20相当于一个接口,每一种代币相当于它的一种实现,但是有的实现并不严格,有的代币这些信息提供并不全。我们的程序只是强制要求代币实现decimals,如果没有实现,则会返回错误</p>
</blockquote>
<h2>3 查询余额</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询指定地址的指定代币的余额</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>47.254.40.107:8080/[:tokenAddress]/account/[:accountAddress]/balance</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">tokenAddress</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>代币的合约地址</td>
</tr>
<tr>
<td style="text-align: left;">accountAddress</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>要查询的账户的地址</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong>
<code>curl 47.254.40.107:8080/0xf230b790e05390fc8295f4d3f60332c93bed42e2/account/0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83/balance</code></p>
<p><strong>返回示例</strong></p>
<pre><code>{
"address": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"coinName": "Tronix",
"coinSymbol": "TRX",
"coinDecimals": "6",
"coinAddress": "0xf230b790e05390fc8295f4d3f60332c93bed42e2",
"balance": "34251888354.9"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">address</td>
<td style="text-align: left;">string</td>
<td>地址</td>
</tr>
<tr>
<td style="text-align: left;">coinName</td>
<td style="text-align: left;">string</td>
<td>代币名称</td>
</tr>
<tr>
<td style="text-align: left;">coinSymbol</td>
<td style="text-align: left;">string</td>
<td>代币符号</td>
</tr>
<tr>
<td style="text-align: left;">coinDecimals</td>
<td style="text-align: left;">string</td>
<td>代币精度</td>
</tr>
<tr>
<td style="text-align: left;">coinAddress</td>
<td style="text-align: left;">string</td>
<td>代币合约地址</td>
</tr>
<tr>
<td style="text-align: left;">balance</td>
<td style="text-align: left;">string</td>
<td>代币余额</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>需要注意的是</strong>
上面的余额是已经做了换算了的,在这里就是已经除以了1000000(decimals决定的,代币的decimals不同,除数就不同)</p>
</blockquote>
<h2>4 查询交易历史</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询指定地址,指定代币的历史交易记录</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>47.254.40.107:8080/[:tokenAddress]/account/[:accountAddress]/history?page=1&pagesize=10&detail=true</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">tokenAddress</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>代币合约地址</td>
</tr>
<tr>
<td style="text-align: left;">accountAddress</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>账户地址</td>
</tr>
<tr>
<td style="text-align: left;">detail</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">bool</td>
<td>为false只返回交易hash,为true返回详细记录</td>
</tr>
<tr>
<td style="text-align: left;">page</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>分页,默认为1</td>
</tr>
<tr>
<td style="text-align: left;">pagesize</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>每页数量,默认为10</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong>
<code>curl 47.254.40.107:8080/0xf230b790e05390fc8295f4d3f60332c93bed42e2/account/0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83/history</code></p>
<p><strong>返回示例</strong></p>
<pre><code>{
"address": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"coinName": "Tronix",
"coinSymbol": "TRX",
"coinDecimals": "6",
"coinAddress": "0xf230b790e05390fc8295f4d3f60332c93bed42e2",
"transactions": [
"0xd430a03f07a4addd20340d827da7dd1a6a3027c2c0e72ee899edec0e9767619a",
"0x6b2f38941c997a26d26791b02a8e63f65d9ceb30883f0c10239ebcc82934257a",
"0xed61e9b27f5f53105ed54040fada31730da564bb3a6819d93c276bd36f572bcb",
"0x5408fa1d987d110acac4738bec87c892eac19bdfe86585f192abfd4459cf47eb",
"0x88b0ea1b8654d9f64723f42a2ff9ef407589b0283a3f60eb096bbab1b2adb3da"
]
}</code></pre>
<p><strong>调用示例</strong>
<code>curl 47.254.40.107:8080/0xf230b790e05390fc8295f4d3f60332c93bed42e2/account/0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83/history?detail=true</code></p>
<p><strong>返回示例</strong></p>
<pre><code>{
"address": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"coinName": "Tronix",
"coinSymbol": "TRX",
"coinDecimals": "6",
"coinAddress": "0xf230b790e05390fc8295f4d3f60332c93bed42e2",
"transactions": [
{
"from": "0xd551234ae421e3bcba99a0da6d736074f22192ff",
"to": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"value": "80831",
"hash": "0xd430a03f07a4addd20340d827da7dd1a6a3027c2c0e72ee899edec0e9767619a",
"timestamp": "1516096933"
},
{
"from": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"to": "0x2c95d08a3d3a27d7b235ab9de0a32e8c0d8de144",
"value": "1",
"hash": "0x6b2f38941c997a26d26791b02a8e63f65d9ceb30883f0c10239ebcc82934257a",
"timestamp": "1513677493"
},
{
"from": "0x9ea145606c4f694c28cf2a5a021f526a6764e1ba",
"to": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"value": "34251807524",
"hash": "0xed61e9b27f5f53105ed54040fada31730da564bb3a6819d93c276bd36f572bcb",
"timestamp": "1513677127"
},
{
"from": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"to": "0x2c95d08a3d3a27d7b235ab9de0a32e8c0d8de144",
"value": "0.1",
"hash": "0x5408fa1d987d110acac4738bec87c892eac19bdfe86585f192abfd4459cf47eb",
"timestamp": "1513676732"
},
{
"from": "0x2c95d08a3d3a27d7b235ab9de0a32e8c0d8de144",
"to": "0xa18ff761a52ce1cb71ab9a19bf4e4b707b388b83",
"value": "1",
"hash": "0x88b0ea1b8654d9f64723f42a2ff9ef407589b0283a3f60eb096bbab1b2adb3da",
"timestamp": "1513675988"
}
]
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">address</td>
<td style="text-align: left;">string</td>
<td>地址</td>
</tr>
<tr>
<td style="text-align: left;">coinName</td>
<td style="text-align: left;">string</td>
<td>代币名称</td>
</tr>
<tr>
<td style="text-align: left;">coinSymbol</td>
<td style="text-align: left;">string</td>
<td>代币符号</td>
</tr>
<tr>
<td style="text-align: left;">coinDecimals</td>
<td style="text-align: left;">string</td>
<td>代币精度</td>
</tr>
<tr>
<td style="text-align: left;">coinAddress</td>
<td style="text-align: left;">string</td>
<td>代币合约地址</td>
</tr>
<tr>
<td style="text-align: left;">transactions</td>
<td style="text-align: left;">array</td>
<td>交易记录</td>
</tr>
</tbody>
</table>
<p><strong>详细记录里的value也是已经换算过的</strong></p>
<h2>5 发起交易</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>发起一笔交易</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.254.39.140/[:tokenAddress]/transaction</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>POST </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">ansa</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>自定义助记词a</td>
</tr>
<tr>
<td style="text-align: left;">ansb</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>自定义助记词b</td>
</tr>
<tr>
<td style="text-align: left;">ansc</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>自定义助记词c</td>
</tr>
<tr>
<td style="text-align: left;">time</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>时间戳</td>
</tr>
<tr>
<td style="text-align: left;">enc</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>因子B</td>
</tr>
<tr>
<td style="text-align: left;">to</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>目的地址</td>
</tr>
<tr>
<td style="text-align: left;">amount</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>转账金额,0.1个代币就传'0.1'</td>
</tr>
<tr>
<td style="text-align: left;">gas</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>gas数量,未花费的gas会退回</td>
</tr>
<tr>
<td style="text-align: left;">fee</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>手续费</td>
</tr>
<tr>
<td style="text-align: left;">uuid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>唯一识别码,保证幂等性</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>需要注意的是</strong>
请一定确保tokenAddress正确并且这个代币实现了transfer(address,uint256)这个函数。因为即使代币地址错了或者代币未实现这个函数,交易还是会生成,发送并扣除手续费,但是代币转账则不会成功。
同时,这里即使from地址代币余额不足,交易还是会生成,发送并扣除手续费,但是代币转账则不会成功。
只有当from地址中的以太坊余额不足以支付手续费时,交易才会构造失败,并返回错误。</p>
</blockquote>
<p><strong>调用示例</strong></p>
<pre><code>curl --cacert ROOT.crt -H "Content-Type:application/json" -X POST –data \
'{"privateKey": "0x965da9d169db3da5b81f4d02a76eb2b403a0e505836050e250e947c4345df89b", \
"to": "0x1dbe35dB279c0e0Ce0d0e1b92173d2216606d763", "amount":"1559.0123", "gas":"91000", \
"fee":"21001","uuid":"some universally unique identifier}' \
https://47.254.40.107/0xf230b790e05390fc8295f4d3f60332c93bed42e2/transaction
</code></pre>
<p><strong>返回示例</strong></p>
<pre><code> {
"transactionHash": "0x972b58d8331ad4bca2d6fd565ce1754bd4c35be40d29940c1b3cc5d4270be803"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">transactionHash</td>
<td style="text-align: left;">string</td>
<td>交易ID</td>
</tr>
</tbody>
</table>
<h2>6 估计手续费</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>获取手续费的估计值,这个值取决于最近几个区块中的所有交易的Gas Price的中位数</li>
<li>此值仅供参考</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>47.254.40.107:8080/[:tokenAddress]/transaction/fee?from=0x746eaf033c9e088642efe2e96fe321e7abebd014&to=0xfd00B35A4029338AB79db21c94D1331c742C4F56&amount=1.01234568</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">from</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>from地址</td>
</tr>
<tr>
<td style="text-align: left;">to</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>to地址</td>
</tr>
<tr>
<td style="text-align: left;">amount</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>交易金额(0.1就是0.1,不用转换单位)</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>curl 47.254.40.107:8080/0x7A3B079688B3808D92bDDB021F59d525371615E0/transaction/fee?from=0x746eaf033c9e088642efe2e96fe321e7abebd014&to=0xfd00B35A4029338AB79db21c94D1331c742C4F56&amount=1.01234568</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"gas": "37886",
"fee": "95473"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">gas</td>
<td style="text-align: left;">string</td>
<td>gas数量</td>
</tr>
<tr>
<td style="text-align: left;">fee</td>
<td style="text-align: left;">string</td>
<td>估计手续费</td>
</tr>
</tbody>
</table>
<h2>7 一对多转账</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>发起一对多转账,因为一对多转账并不在ERC20标准中,所以目前只支持CPS和INC</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.254.40.107/[:tokenAddress]/transactions</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>POST </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">privateKey</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>私钥</td>
</tr>
<tr>
<td style="text-align: left;">tos</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">Array</td>
<td>to地址数组</td>
</tr>
<tr>
<td style="text-align: left;">amounts</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">Array</td>
<td>交易金额数组(0.1就是0.1,不用转换单位)</td>
</tr>
<tr>
<td style="text-align: left;">uuid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>唯一识别码,保证幂等性</td>
</tr>
</tbody>
</table>
<p><strong>tos和amouts均为数组,且长度必须一致</strong></p>
<p><strong>调用示例</strong></p>
<pre><code>//POST body
{
"privateKey": "0x09245f031c604f2954b23c5429ae34b0954dc419e8da5ab7450b7f61fa439e00",
"tos":["0x4c6072cA2200A63D50fCd7715A56B18b54991F38", "0x5E3CDCF0B6F67C82E7313b426AFFf5cFD9Ed74fe"],
"amounts": ["0.11", "9.87"],
"uuid": "01fbfee1-bc66-479e-9360-62f67c7fb295"
}</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"transactionHash": "0x031799df70cbd5df3c0e3c5aa2c6ae578e744716923d0765b1c295421de500d6"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">transactionHash</td>
<td style="text-align: left;">string</td>
<td>交易hash</td>
</tr>
</tbody>
</table>
<h2>8 批量查询余额</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询多个地址,多个代币的余额</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.254.40.107:8080/balances</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>POST </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">tokens</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">array</td>
<td>代币地址数组</td>
</tr>
<tr>
<td style="text-align: left;">addrs</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">array</td>
<td>用户地址数组</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>//POST body
{
"tokens":["0x1130547436810DB920FA73681c946feA15E9b758", "0xf239fab41de78533fa974b74d7605f1e68f8772e", "0xf230b790e05390fc8295f4d3f60332c93bed42e2"],
"addrs":["0x007821b9a9d1ADe9ed44Ac32A61b2DBB44337cbb", "0xa1dacb7d193259724c59a3e497e881089af2decd"]
}</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>[
{
"address": "0x007821b9a9d1ADe9ed44Ac32A61b2DBB44337cbb",
"balances": [
{
"coinName": "bitcoin",
"coinSymbol": "btc",
"coinDecimals": "8",
"coinAddress": "0x1130547436810DB920FA73681c946feA15E9b758",
"balance": "0"
},
{
"coinName": "CPSCoin",
"coinSymbol": "CPS",
"coinDecimals": "8",
"coinAddress": "0xf239fab41de78533fa974b74d7605f1e68f8772e",
"balance": "0"
},
{
"coinName": "Tronix",
"coinSymbol": "TRX",
"coinDecimals": "6",
"coinAddress": "0xf230b790e05390fc8295f4d3f60332c93bed42e2",
"balance": "0"
}
]
},
{
"address": "0xa1dacb7d193259724c59a3e497e881089af2decd",
"balances": [
{
"coinName": "bitcoin",
"coinSymbol": "btc",
"coinDecimals": "8",
"coinAddress": "0x1130547436810DB920FA73681c946feA15E9b758",
"balance": "0"
},
{
"coinName": "CPSCoin",
"coinSymbol": "CPS",
"coinDecimals": "8",
"coinAddress": "0xf239fab41de78533fa974b74d7605f1e68f8772e",
"balance": "0"
},
{
"coinName": "Tronix",
"coinSymbol": "TRX",
"coinDecimals": "6",
"coinAddress": "0xf230b790e05390fc8295f4d3f60332c93bed42e2",
"balance": "0"
}
]
}
]</code></pre>
<p><strong>返回参数说明</strong>
结果数组</p>
<h2>9 私钥发起交易</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>使用私钥发起一笔交易,而不是助记词</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.254.40.107/[:tokenAddress]/transaction/admin</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>POST </li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">privateKey</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>私钥</td>
</tr>
<tr>
<td style="text-align: left;">to</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>目的地址</td>
</tr>
<tr>
<td style="text-align: left;">amount</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>转账金额,0.1个代币就传'0.1'</td>
</tr>
<tr>
<td style="text-align: left;">gas</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>gas数量,未花费的gas会退回</td>
</tr>
<tr>
<td style="text-align: left;">fee</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>手续费</td>
</tr>
<tr>
<td style="text-align: left;">uuid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>唯一识别码,保证幂等性</td>
</tr>
</tbody>
</table>
<blockquote>
<p><strong>需要注意的是</strong>
请一定确保tokenAddress正确并且这个代币实现了transfer(address,uint256)这个函数。因为即使代币地址错了或者代币未实现这个函数,交易还是会生成,发送并扣除手续费,但是代币转账则不会成功。
同时,这里即使from地址代币余额不足,交易还是会生成,发送并扣除手续费,但是代币转账则不会成功。
只有当from地址中的以太坊余额不足以支付手续费时,交易才会构造失败,并返回错误。</p>
</blockquote>
<p><strong>调用示例</strong></p>
<pre><code>curl --cacert ROOT.crt -H "Content-Type:application/json" -X POST –data \
'{"privateKey": "0x965da9d169db3da5b81f4d02a76eb2b403a0e505836050e250e947c4345df89b", \
"to": "0x1dbe35dB279c0e0Ce0d0e1b92173d2216606d763", "amount":"1559.0123", "gas":"91000", \
"fee":"21001","uuid":"some universally unique identifier}' \
https://47.254.40.107/0xf230b790e05390fc8295f4d3f60332c93bed42e2/transaction/admin
</code></pre>
<p><strong>返回示例</strong></p>
<pre><code> {
"transactionHash": "0x972b58d8331ad4bca2d6fd565ce1754bd4c35be40d29940c1b3cc5d4270be803"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">transactionHash</td>
<td style="text-align: left;">string</td>
<td>交易ID</td>
</tr>
</tbody>
</table>
<h2>10 获取gasPrice估计值</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>获取gasPrice估计值(前若干区块中的gasPrice的中位数)</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.254.40.107:8080/gasprice</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</strong>
-None</p>
<p><strong>调用示例</strong>
<code>curl http://47.254.40.107:8080/gasprice</code></p>
<p><strong>返回示例</strong></p>
<pre><code>{
"gasPrice": "2875000000"
}</code></pre>
<p><strong>返回参数说明</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">gasPrice</td>
<td style="text-align: left;">string</td>
<td>建议的gasPrice</td>
</tr>
</tbody>
</table>