首先下载比特币钱包
下载地址:https://bitcoin.org/zh_CN/download
下载安装后,)找到 bitcoin.conf 配置文件,windows可从钱包界面窗口的“设置=>选项>打开配置文件进入”(其他系统版本自行找到 bitcoin.conf文件)。
修改bitcoin.conf文件如下:
regtest=1
listen=1
server=1
rpcuser=admin
rpcpassword=123456
rpcallowip=192.168.3.144
rpcallowip=192.168.3.182
rpcport=8832
参数说明:
regtest:开启测试网络1为开启0为关闭
Listen:开启监听模式,默认开启
Server:1表示接受RPC指令0不接收
Rpcuser:用来访问钱包的RPC用户名
Rpcpassword:用来访问钱包的RPC密码
Rpcallowip:指定哪些IP可以通过RPC访问钱包
Rpcport:RPC访问端口
重启钱包服务后可以做界面看到测试模式开启的标志
然后可以在命令行中操作钱包了
创建账户地址:
Getnewaddress(账户) 根据账户生成钱包地址,没有对应账户则生成新账户
模拟挖矿获得币(此方式用于测试网络,正式网络中有矿工挖矿不需要此操作):
Generate(挖矿次数) 模拟挖矿可获得挖矿奖励,可在测试环境下获得比特币的手段
查看账户余额
Listaccounts 查询钱包所有账户的信息
getbalance (账户) 根据账户查询余额 (未满6次确认的交易不算)
根据地址发送比特币
Sendfrom(转出账户,目标地址,数量) 从某一个账户向目标地址转币
Sendtoaddress(目标地址,数量) 使用钱包默认账户往目标地址转币
模拟挖矿打包
Generate(挖矿次数)
根据TXID查询交易情况
Gettransaction(TXID) 根据交易ID查询交易信息
其他常用指令:
账户余额查询
Getreceivedbyaddress(钱包地址,确认数) 根据地址和区块确认数 查询余额;
Listaccounts 查询钱包所有账户的信息
Getreceivedbyaddress(账户,确认数) 查询该账户下,对应区块确认数收到的金额;
getbalance (账户) 根据账户查询余额 (未满6次确认的交易不算)
Getreceivedbyaccount(账户) 获取账户收款金额
Validateaddress(钱包地址) 查询钱包地址相关信息
地址生成和查询
Listaddressgroupings 查询钱包中所有地址
Getnewaddress(账户) 根据账户生成钱包地址,没有对应账户则生成新账户
getaccountaddress (账户) 获取账户地址
Listaddressgroupings 查询钱包所有地址
交易查询
Listtransactions(账户,查询条数,从多少条开始)根据账户查询交易记录
Gettransaction(TXID) 根据交易ID查询交易信息
发币转币
Move(原账户,目标账户,数量) 从一个账户往另外一个账户转移资产
Sendfrom(转出账户,目标地址,数量) 从某一个账户向目标地址转币
Sendtoaddress(目标地址,数量) 使用钱包默认账户往目标地址转币
其他操作
Generate(确认数量) 模拟挖矿
Walletlock 锁定钱包 ,钱包锁定后就不可以进行转账操作了
Walletpassphrase ‘钱包密码’ 600 解锁钱包 600为时间
好了,我们使用php来连接钱包的本地rpc来操作钱包吧
当我们希望在Php代码中给某个比特币地址发送以太币时,可以使用 sendtoaddress 这个RPC接口,可以传入以下参数:
ToAddress:接收地址
Amount:发送的比特币数量
Comment:备注文本
CommentTo:备注接收人
AutoFeeSubtract:是否自动扣除手续费,默认值:false
上面的参数中,只有ToAddress和Amount是必须的。当调用完成时, 将返回该笔交易对应的ID。
下面的代码使用GuzzleHttp来调用sendtoaddress接口向指定的地址发送 0.12个比特币:
<?php
require('../vendor/autoload.php');
use GuzzleHttp\Client;
$client = new Client();
$opts = [
'json' => [
'jsonrpc' => '1.0',
'method' => 'sendtoaddress',
'params' => ['1LeiqzD6jCwPcdNNAPiT8ayKgdHJMP2EpZ',0.12],
'id' => time()
]
];
$rsp = $client->post('http://user:pass@localhost:8332',$opts);
echo $rsp->getBody() . PHP_EOL;
网友回复