【Bitcoin】PHP LaravelからBitcoinへのRPC接続方法
1.前提
2.環境
- 使用OS
- Ubuntu v16.04.4
- 使用言語
- Bitcoin v0.16
- PHP v7.2.4
- Laravel v5.5.40
3.ライブラリのダウンロード
- 使用OS
- Ubuntu v16.04.4
- 使用言語
- Bitcoin v0.16
- PHP v7.2.4
- Laravel v5.5.40
3.ライブラリのダウンロード
PHPからBitcoinへRPC接続を行うため、今回はEasyBitcoin-PHPというライブラリを使用していきます。
→ https://github.com/aceat64/EasyBitcoin-PHP
Laravelのディレクトリから以下のコマンドを叩いていきます。
lib-download
# こちらは環境に合わせて変更してください
$ cd <laravel project>
# Libs ディレクトリ作成
$ mkdir app/Libs
# easybitcoin.php のダウンロード
$ wget -O app/Libs/Bitcoin.php https://raw.githubusercontent.com/aceat64/EasyBitcoin-PHP/master/easybitcoin.php
$ vim app/Libs/Bitcoin.php
# namespace を記載
# namespace App¥Libs;
これでライブラリが使えるようになったので、続いて実装へ移っていきます。
4.PHP LaravelからBitcoinへのRPC接続
Bitcoinがregtestモードで起動している前提で進めていきます。
.env
### 上記省略 ###
BITCOIN_RPC_USERNAME=user
BITCOIN_RPC_PASSWORD=password
BITCOIN_RPC_HOST=localhost
# regtest default port
BITCOIN_RPC_PORT=18443
config/bitcoin.php
<?php
return [
'bitcoin_rpc_username' => env('BITCOIN_RPC_USERNAME', 'user'),
'bitcoin_rpc_password' => env('BITCOIN_RPC_PASSWORD', 'password'),
'bitcoin_rpc_host' => env('BITCOIN_RPC_HOST', 'localhost'),
# mainnet default port
'bitcoin_rpc_port' => env('BITCOIN_RPC_PORT', '8956'),
];
routes/web.php
<?php
Route::get('/', 'IndexController@index');
app/Http/Controllers/IndexController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Config;
# 先ほどダウンロードしたライブラリをuseする
use App\Libs\Bitcoin;
class IndexController extends Controller
{
public function index()
{
$bitcoin = new Bitcoin(
# rpc username
Config::get('bitcoin.rpc_username'),
# rpc password
Config::get('bitcoin.rpc_password'),
# host
Config::get('bitcoin.rpc_host'),
# regtest port
Config::get('bitcoin.rpc_port')
);
# getbalance() で残高を取得する
print_r($bitcoin->getbalance());
}
}
これでPHP側からBitcoinのRPCコマンドを叩くことができるようになりました。
あとはbitcoin-cliから叩くのと同じような形で使っていけばOKです。
よく使うコマンドについては別記事にまとめてありますので、こちらを見ながら色々なコマンドもお試しください!
→ bitcoin-cli でよく使うコマンドまとめ(ver 0.16.0)
sample.php
<?php
# listaccounts() でアカウントごとの残高を取得する
print_r($bitcoin->listaccounts());
# getaccountaddress() で引数のアカウントが持つビットコインアドレスを1つ取得する
print_r($bitcoin->getaccountaddress('アカウント名'));
# getaddressesbyaccount() で引数のアカウントが持つビットコインアドレスを全て取得する
print_r($bitcoin->getaddressesbyaccount('アカウント名'));
# getblock() で引数のブロックハッシュ値のブロックの中身を取得する
print_r($bitcoin->getblock('ブロックのハッシュ値'));
# gettransaction() で引数のトランザクションIDのトランザクションの中身を取得する
print_r($bitcoin->gettransaction('トランザクションID'));
# sendfrom() でコインを送金し、発行されたトランザクションIDを取得する
print_r($bitcoin->sendfrom('送金元アカウント名', '送金先アドレス', '送金額'));
5.参考文献
Author And Source
この問題について(【Bitcoin】PHP LaravelからBitcoinへのRPC接続方法), 我々は、より多くの情報をここで見つけました https://qiita.com/daiki44/items/5cfaef3200b557308735著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .