日曜日, 6月 8, 2025
- Advertisment -
ホームニューステックニュースTapyrus ブロックチェーンに挑戦: RPC を叩いてみる #Docker

Tapyrus ブロックチェーンに挑戦: RPC を叩いてみる #Docker



Tapyrus ブロックチェーンに挑戦: RPC を叩いてみる #Docker

はじめに

「ブロックチェーン技術を学びたい」と思いながらも、なかなか行動に移せずにいました。
ローカル環境で Tapyrus ブロックチェーンを触ってみることで、「ブロックチェーンとは何か?」を体験しながら学んでいきます。

本記事では、前回の記事 で構築した Docker Compose 環境をもとに、
Ruby 製クライアント(tapyrusrb gem)から Tapyrus ノードに JSON-RPC 経由でリクエストを送り、基本的な操作を試してみます。

以下の 3 コマンドを通じて、RPC の流れを体験します:

  1. getblockchaininfo — チェーン情報の取得
  2. getnewaddress — 新しいアドレスの生成
  3. listunspent — 未使用トランザクション出力(UTXO)の確認

Tapyrus とは

TapyrusBitcoin をベースにしたオープンソースのブロックチェーンプラットフォームで、日本の企業 Chaintope によって開発されています。企業や自治体での実用を想定した設計が特徴です。

手元の環境

今回の動作確認は以下のローカル環境で行いました:

  • OS:LMDE 6(Linux Mint Debian Edition)
  • Docker:28.2.2
  • Docker Compose:v2.36.2
  • シェル:bash
  • その他:インターネット接続(イメージ取得のため)

※ Docker 環境があれば、macOS や WSL2 でも同様に動くはずです。

よく使われる RPC コマンド

Tapyrus(および Bitcoin Core)は JSON-RPC を通じてノードやウォレットを操作できます。
ここでは、特に代表的なコマンドを紹介します。

コマンド 説明
getblockchaininfo ブロックチェーン全体の状態を取得(最新ブロック数、難易度、同期状況など)
getnetworkinfo ネットワーク設定や接続情報を取得(プロトコルバージョン、接続中のノード数、サポートするサービスなど)
getblockcount 現在のブロック数(チェーンの高さ)を取得
getblockhash 指定したブロック高さ(height)のブロックハッシュを取得
getblock 指定したブロックハッシュのブロック情報を取得(取得時に verbosity パラメータを指定可能。トランザクション一覧などを含む)
getrawtransaction 指定したトランザクションID(txid)の生データ(hex形式)を取得
decoderawtransaction 生トランザクション(hex)を人間が読める JSON 形式にデコード
getnewaddress 新しいウォレットアドレスを生成
getwalletinfo 現在アクティブなウォレットの情報を取得(残高やアカウント数など)
getbalance デフォルトアカウント(もしくは指定アカウント)の現在のウォレット残高を取得
listunspent ウォレット内の UTXO(未使用出力)の一覧を取得
sendtoaddress 指定したアドレス(addr)に指定金額(amt)を送金
settxfee トランザクション手数料を設定(以降、新しいトランザクションにはこの手数料が適用される)

今回は、特に以下の 3 つに絞って試していきます:

  • チェーン情報の取得(getblockchaininfo
  • アドレス生成(getnewaddress
  • UTXO の確認(listunspent

実際に RPC を叩いてみる

以下は、前回の記事 で構築した Docker Compose 環境が既に起動している前提です。

Tapyrus ノードをバックグラウンドで起動

ターミナル

docker compose up -d tapyrusd

Ruby クライアントで IRB を起動

ターミナル

docker compose run --rm tapyrus-client

この時点で $clientTapyrus::RPC::TapyrusCoreClient のインスタンスとして利用可能です。これで RPC 接続の準備は完了です。

getblockchaininfo — チェーン情報の取得

まずはチェーンの基本情報を取得してみます。

IRB

irb> info = $client.getblockchaininfo
#=> {
#     "chain" => "1905960821",
#     "mode"  => "dev",
#     "blocks"=> 0,
#     "headers"=> 0,
#     …(省略)…
#   }
  • mode: "dev" → 現在 dev モードで動作している
  • blocks: 0 → まだブロックは生成されていない
  • 正常にレスポンスが返っていることで、RPC 接続が機能していると確認できます

getnewaddress — アドレスの生成

次にウォレットから新しいアドレスを作成します。

IRB

irb> address = $client.getnewaddress
#=> "TmTzQ6yvJqSRtCgzBArg2YxwFqvYpabdGe"
  • dev モード用(テストネット相当)のアドレスが返ってきます
  • 今後このアドレス宛にブロック報酬をマイニングすれば、残高が得られます

listunspent — UTXO の確認

最後に、ウォレットが保持する UTXO(未使用出力)を確認してみます。

IRB

irb> $client.listunspent
#=> []
  • 現時点ではまだブロック生成をしていないため、UTXO は存在せず空配列が返ります。
  • 実際にブロックをマイニングすれば、ここに UTXO が表示されるようになります。

おわりに

本記事では、Tapyrus ノードに対して基本的な RPC を実行し、以下の流れを体験しました:

  • ノードの状態を確認(getblockchaininfo
  • 新しいアドレスを取得(getnewaddress
  • ウォレット内の UTXO を確認(listunspent

これにより、外部アプリケーションが JSON-RPC を通じてノードとやり取りする基本的な仕組みを体験できました。

次回は、実際にブロックをマイニングして UTXO を生成し、listunspent の結果がどう変わるかを確認してみる予定です。

資料





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -