比特币
<p>[[toc]]</p>
<h3>修改历史</h3>
<ul>
<li><code>2018-07-27</code> 自定义助记词升级,修改<strong>创建账户</strong> 和<strong>发送交易</strong>,增加<strong>导入私钥</strong> 和<strong>导出私钥</strong>,删除<strong>根据私钥生成地址</strong></li>
<li><code>2018-07-13</code> 增加<strong>检查地址是否合法</strong>的接口</li>
<li><code>2018-07-13</code> 增加<strong>批量查询余额</strong>接口</li>
<li><code>2018-07-03</code> 发送交易增加uuid参数,保证幂等性</li>
<li><code>2018-07-03</code> 创建账户,根据私钥生成地址,发送交易改为强制使用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>所有方法的参数如果涉及比特币数量的,请使用单位<strong>“聪”</strong>,所有方法返回的结果中若涉及数量,单位同样也是<strong>“聪”</strong></p>
<h2>2 创建账户</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>创建账户</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.89.244.232/bitcoin/account</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>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>//POST body
{
"ansa":"22f5e8718e",
"ansb":"b62c9d94d3",
"ansc":"5e681fff9b",
"time":"ff3f4036a1164d1ddbad5b3edf9022addb3e1961a54a922708a6c1ffc49e5489"
}</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"address": "1JQ4CtRkF97n2NvBBHAJVGsn7UaMNzfneM",
"enc": "390B2305251C1F20494B48241F7D167748427248154214713C44113B0E3B6438663808317E0A352E5F3002282E26282C777B5474252223264E6C771A1D6A1F6A"
}</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;">enc</td>
<td style="text-align: left;">string</td>
<td>因子B</td>
</tr>
</tbody>
</table>
<h2>3 导入私钥</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>导入私钥</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.89.244.232/bitcoin/account/import</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;">priv</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>要导入的私钥</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>//POST body
{
"ansa":"22f5e8718e",
"ansb":"b62c9d94d3",
"ansc":"5e681fff9b",
"time":"ff3f4036a1164d1ddbad5b3edf9022addb3e1961a54a922708a6c1ffc49e5489",
"priv": "04cbb8964895668f3cb72ebb29f2ecea929f9d341815e3aaeaa0ab5fd65d1d8d"
}</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"address": "1JQ4CtRkF97n2NvBBHAJVGsn7UaMNzfneM",
"enc": "31260755032B2A20245451201C4C237B1C467417137542430B46723D42686D680C370B3308352D7D7A047B2E2A2A57545654241F20522355246C6D1B164B1E46"
}</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;">enc</td>
<td style="text-align: left;">string</td>
<td>因子B</td>
</tr>
</tbody>
</table>
<h2>4 导出私钥</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>导入私钥</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.254.39.140/ethereum/account/dump</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>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>//POST body
{
"ansa":"22f5e8718e",
"ansb":"b62c9d94d3",
"ansc":"5e681fff9b",
"time":"ff3f4036a1164d1ddbad5b3edf9022addb3e1961a54a922708a6c1ffc49e5489",
"enc": "31260755032B2A20245451201C4C237B1C467417137542430B46723D42686D680C370B3308352D7D7A047B2E2A2A57545654241F20522355246C6D1B164B1E46"
}</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"privateKey": "04cbb8964895668f3cb72ebb29f2ecea929f9d341815e3aaeaa0ab5fd65d1d8d"
}</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;">privateKey</td>
<td style="text-align: left;">string</td>
<td>私钥</td>
</tr>
</tbody>
</table>
<h2>4 查询余额</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询指定地址的余额</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/account/[:address]/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;">address</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.89.244.232:8080/bitcoin/account/1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2/balance</code></p>
<p><strong>返回示例</strong></p>
<pre><code> {
"address": "1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2",
"balance": "123"
}</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;">balance</td>
<td style="text-align: left;">string</td>
<td>余额</td>
</tr>
</tbody>
</table>
<h2>5 查询交易历史</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询指定地址的交易记录</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/account/[:address]/history?page=1&pagesize=10</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;">address</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>地址</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.89.244.232:8080/bitcoin/account/1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2/history</code></p>
<p><strong>返回示例</strong></p>
<pre><code> {
"address":"1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2",
"transactions":[
"f15b659cc2288b10e125ed808f2a083df8207ab22e8db4c02def858dcfc031bb",
"61f22bcd7f2ff327a378b91942a2d8cba0aff980204eaea1d2bee2cd903a3719"
]
}</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;">transactions</td>
<td style="text-align: left;">array</td>
<td>交易记录(txid数组)</td>
</tr>
</tbody>
</table>
<h2>6 查询详细交易历史</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询历史记录,除了返回txid外,还附带inputs,outputs,timestamp</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/account/[:address]/history.detail?page=1&pagesize=10</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;">address</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>地址</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.89.244.232:8080/bitcoin/account/1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2/history.detail</code></p>
<p><strong>返回示例</strong></p>
<pre><code> {
"address":"1BkAbua1pp7ZuJFuUK7tUQyxcZTfQLUnZm",
"transactions":[
{
"from":[
{
"address":"1BkAbua1pp7ZuJFuUK7tUQyxcZTfQLUnZm",
"value":"6411300"
}],
"to":[
{
"address":"1PtvNPdPvTqQPAzm5cUAwpnue1SNDM4Tum",
"value":"1000000"
},
{
"address":"1BQ2sVYehveq6RecV51iLtVaLteBM5f1D8",
"value":"5410170"
}],
"timestamp":"1520682123",
"hash":"5473244986df383fa121c9e96c0a9f71440c9e6124c197eb3c71d6567e95f702",
"receive":"-6411300"
},
{
"from":[
{
"address":"174ta15XjBRwEdJfiUJSW2oETzavYbZHTt",
"value":"100000000"
}],
"to":[
{
"address":"1BkAbua1pp7ZuJFuUK7tUQyxcZTfQLUnZm",
"value":"6411300"
},
{
"address":"1JRWpYiVvXfg9xGYHF9BhD1yp9NXqreYd1",
"value":"93419200"
}],
"timestamp":"1520682080",
"hash":"0a03f4a335a8edfe730b0cc322a168cbc52f1b38f43adbfcdcb46c9dca574f68",
"receive":"6411300"
}]
}</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;">transations</td>
<td style="text-align: left;">array</td>
<td>详细交易记录</td>
</tr>
<tr>
<td style="text-align: left;">transactions.from</td>
<td style="text-align: left;">array</td>
<td>此交易引用的未花费交易(utxo)</td>
</tr>
<tr>
<td style="text-align: left;">transactions.to</td>
<td style="text-align: left;">array</td>
<td>此交易的若干接收地址</td>
</tr>
<tr>
<td style="text-align: left;">transactions.receive</td>
<td style="text-align: left;">string</td>
<td>此交易对于查询地址的收支情况(聪)</td>
</tr>
<tr>
<td style="text-align: left;">transactions.hash</td>
<td style="text-align: left;">string</td>
<td>此交易的txid</td>
</tr>
<tr>
<td style="text-align: left;">transactions.timestamp</td>
<td style="text-align: left;">unix time</td>
<td>包含此交易的区块的时间戳</td>
</tr>
</tbody>
</table>
<h2>7 发起交易</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>发起一笔比特币交易,自动找零地址为发起交易地址</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.89.244.232/bitcoin/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>转账金额(单位:聪)</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>通用唯一识别码,请确保每次交易uuid不同</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>curl --cacert=./ROOT.crt -H "Content-Type:application/json" -X POST –data \
'{"privateKey":"690e38139d5282491f5a678d60242eea78fa138fec8062394c1be1b769f4f0d0", \
"to":"1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2", "amount":50000000, "fee":100000}' \
https://47.89.244.232/bitcoin/transaction </code></pre>
<p><strong>返回示例</strong></p>
<pre><code> {
"txid":"bf2f5d9e25420b13dd5110532ca5dfb10a9fc576bafa864c6e5807ed05ea68be"
}</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;">txid</td>
<td style="text-align: left;">string</td>
<td>交易ID</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.89.244.232:8080/bitcoin/transaction/sendsigned/[:rawTransaction]</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;">rawTransaction</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>已签名交易的hex string</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong>
<code>curl 47.89.244.232:8080/bitcoin/transaction/sendsigned/789abcdffadf17247</code></p>
<p><strong>返回示例</strong></p>
<pre><code> {
"txid": "bf2f5d9e25420b13dd5110532ca5dfb10a9fc576bafa864c6e5807ed05ea68be"
}</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;">txid</td>
<td style="text-align: left;">string</td>
<td>交易ID</td>
</tr>
</tbody>
</table>
<h2>9 查看交易确认次数</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查看一笔交易的确认次数</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/transaction/[:txid]/confirmation</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;">txid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>交易ID</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>curl http://47.89.244.232:8080/bitcoin/transaction/61f22bcd7f2ff327a378b91942a2d8cba0aff980204eaea1d2bee2cd903a3719/confirmation </code></pre>
<p><strong>返回示例</strong></p>
<pre><code> {
"number": "9291"
}</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;">number</td>
<td style="text-align: left;">string</td>
<td>确认次数</td>
</tr>
</tbody>
</table>
<h2>10 查询交易打包信息</h2>
<p><strong>简要描述:</strong></p>
<ul>
<li>查看打包此交易的区块的哈希,number,时间戳和这笔交易的实际手续费</li>
</ul>
<p><strong>请求URL:</strong></p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/transaction/[:txid]/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;">txid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>交易ID</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>curl 47.89.244.232:8080/bitcoin/transaction/c40bf20ad531b38b07251f46db84d49af9a549d64b968967b912696b8a4baf82/info</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"blockHash": "00000000000000000011333821d5508f414e4524436c87f1082dc7031fb31723",
"blockNumber": "521871",
"fee": "581782",
"timestamp": "1525847542"
}</code></pre>
<table>
<thead>
<tr>
<th style="text-align: left;"><strong>返回参数说明</strong></th>
<th style="text-align: left;">参数名</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">blockHash</td>
<td style="text-align: left;">stirng</td>
<td>区块哈希</td>
</tr>
<tr>
<td style="text-align: left;">blockNumber</td>
<td style="text-align: left;">string</td>
<td>区块序号</td>
</tr>
<tr>
<td style="text-align: left;">fee</td>
<td style="text-align: left;">string</td>
<td>实际手续费</td>
</tr>
<tr>
<td style="text-align: left;">timestamp</td>
<td style="text-align: left;">unix time</td>
<td>区块时间戳</td>
</tr>
</tbody>
</table>
<h2>11 手续费估计值</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>获取手续费的估计值,这个估计值是前若干个区块中的所有交易的手续费的中位数</li>
<li>此值仅供参考</li>
<li>当节点信息不足时,返回 -1</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/transaction/fee</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</strong> </p>
<ul>
<li>
<p>None</p>
<p><strong>返回示例</strong></p>
</li>
</ul>
<pre><code> {
"fee": "13786"
}</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;">fee</td>
<td style="text-align: left;">string</td>
<td>估计手续费(单位:聪)</td>
</tr>
</tbody>
</table>
<h2>12 批量查询余额</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>查询多个地址的余额</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/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;">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
{
"addrs":["1KkBhdJfipeqjo5dBiTVkKNYPMwZGNWHQ4", "123gHQuRsZVz4AVjFWEFBk8oTq51u9wogC"]
}</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>[
{
"address": "1KkBhdJfipeqjo5dBiTVkKNYPMwZGNWHQ4",
"balance": "2284783"
},
{
"address": "123gHQuRsZVz4AVjFWEFBk8oTq51u9wogC",
"balance": "3404267"
}
]</code></pre>
<p><strong>返回参数说明</strong>
结果数组</p>
<h2>13检查地址是否合法</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>检查地址是否合法</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>http://47.89.244.232:8080/bitcoin/account/[:address]/check</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;">address</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>地址</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>curl 47.89.244.232:8080/bitcoin/account/123gHQuRsZVz4AVjFWEFBk8oTq51u9wogC/check</code></pre>
<p><strong>返回示例</strong></p>
<pre><code>{
"result": true
}</code></pre>
<table>
<thead>
<tr>
<th style="text-align: left;"><strong>返回参数说明</strong></th>
<th style="text-align: left;">参数名</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">result</td>
<td style="text-align: left;">bool</td>
<td>result</td>
</tr>
</tbody>
</table>
<h2>7 私钥发起交易</h2>
<p><strong>简要描述:</strong> </p>
<ul>
<li>使用私钥发起一笔比特币交易,自动找零地址为发起交易地址</li>
</ul>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://47.89.244.232/bitcoin/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;">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>转账金额(单位:聪)</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>通用唯一识别码,请确保每次交易uuid不同</td>
</tr>
</tbody>
</table>
<p><strong>调用示例</strong></p>
<pre><code>curl --cacert=./ROOT.crt -H "Content-Type:application/json" -X POST –data \
'{"privateKey":"690e38139d5282491f5a678d60242eea78fa138fec8062394c1be1b769f4f0d0", \
"to":"1Ka8aikgJCG7B5QWqHCtsm9CzSQEfKfWq2", "amount":50000000, "fee":100000}' \
https://47.89.244.232/bitcoin/transaction </code></pre>
<p><strong>返回示例</strong></p>
<pre><code> {
"txid":"bf2f5d9e25420b13dd5110532ca5dfb10a9fc576bafa864c6e5807ed05ea68be"
}</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;">txid</td>
<td style="text-align: left;">string</td>
<td>交易ID</td>
</tr>
</tbody>
</table>