Skip to content

GettingStarted

metalefty edited this page Mar 22, 2021 · 13 revisions

はじめに

このドキュメントではTaaSをはじめて利用する方向けに、無償で開放している体験用のTapyrusネットワーク&エンドポイントを使用して基本的な送金を行うための手順を解説しています。

前提条件

このドキュメントは、Ubuntu 20.04 を前提として書かれています。OSやGNU/Linuxディストリビューションに強く依存する部分は少なく、他のOSやバージョンでも基本的な部分は共通ですが、OSやバージョンに依存する部分は適宜読み替えてください。

インストール

Ubuntu では、snap というパッケージ管理の仕組みがあり、tapyrus-core を簡単にインストールすることができます。snap パッケージは他のGNU/Linuxディストリビューションでも使用することができます。

$ sudo snap install tapyrus-core --channel=0.4/stable

インストールが完了すると、tapyrus-core.cli というコマンドが実行できるようになっています。

$ tapyrus-core.cli
Tapyrus Core RPC client version v0.4.1

Usage:  tapyrus-cli [options] <command> [params]  Send command to Tapyrus Core
or:     tapyrus-cli [options] -named <command> [name=value]...  Send command to Tapyrus Core (with named arguments)
or:     tapyrus-cli [options] help                List commands
or:     tapyrus-cli [options] help <command>      Get help for a command

Options:
(略)

socatというツールも使用するので、合わせてインストールしておきます。こちらはaptでインストールします。

$ sudo apt install socat

ポートフォワード

tapyrus-core.cli はHTTPSでのJSON-RPCアクセスに対応していないため、socatを使用してHTTPSをHTTPに変換するポートフォワードを行います。HTTPS化されていないJSON-RPCへアクセスする場合はこの作業は必要ありません。またこのポートフォワードは必ずしもsocatを使用する必要はなく、nginxなどで任意の方法で同様のフォワードを実現しても構いません。

ここではPlaygroundのJSON-RPCエンドポイントへ接続するため、以下のコマンドで、localhost:2377 (平文) <-> playground.taas.haw.biz:2820 (TLS) というポートフォワードを作成します。

$ socat TCP-LISTEN:2377,reuseaddr,fork,bind=localhost OPENSSL:playground.taas.haw.biz:2820 &

試しにcurlコマンドで localhost:2377 へアクセスしてみると、レスポンスが返ってくることが確認できます。

$ curl -v http://localhost:2377
*   Trying 127.0.0.1:2377...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 2377 (#0)
> GET / HTTP/1.1
> Host: localhost:2377
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 405 Method Not Allowed
< Date: Mon, 01 Mar 2021 09:33:45 GMT
< Content-Length: 41
< Content-Type: text/html; charset=ISO-8859-1
<
* Connection #0 to host localhost left intact
JSONRPC server handles only POST requests

ここまでできたら、準備完了です。

ブロックチェーン情報の取得

まずは、以下のようなコマンドを実行してブロックチェーンの情報を取得してみます。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus getblockchaininfo

すると、次のような結果が返ってきます。

{
  "chain": "843",
  "mode": "prod",
  "blocks": 168369,
  "headers": 168369,
  "bestblockhash": "024f1bc0ac3df58b5cf215862004c703eb9d454b601fe9f5ccb63809e4687ef5",
  "mediantime": 1614591249,
  "verificationprogress": 1,
  "initialblockdownload": false,
  "size_on_disk": 52416670,
  "pruned": false,
  "aggregatePubkeys": [
    {
      "03b3ef922860c50a411f5f884e4ee7c67775bc8d6c7ae23dff55f84c42b05e6ac9": 0
    }
  ],
  "warnings": ""
}

ブロックチェーンの情報を取得できていることが確認できました。

同様のことを、curlコマンドで実行すると以下のようになります。curlはHTTPS通信に対応しているため、ポートフォワードを通す必要はなく直接Playgroundの公開エンドポイントへアクセスすることができます。末尾のjqコマンドへのパイプは、JSONデータの整形のためにつけているものでリクエストには関係ありません。

$ curl --user tapyrus:tapyrus --data-binary '{"method":"getblockchaininfo"}' https://playground.taas.haw.biz:2820 | jq
(結果は省略)

送金: ウォレットの作成

まずは、RPCコマンド listwallets を使用して既存のウォレットのリストを取得してみます。すると、以下のような結果が得られます。

Playgroundは公開されている体験環境なので、あなた以外の誰かが作成したウォレットも表示されています。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus listwallets
[
  "",
  "test_nakajo",
  "faucet",
  "luigi"
]

新しいウォレットを作成する場合は、既存のウォレットと名前が重複してはいけません。重複しなければ名前はなんでもかまいませんが、ここでは jupiter という名前のウォレットを作成してみます。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus createwallet jupiter
{
  "name": "jupiter",
  "warning": ""
}

再びウォレットの一覧を取得してみると、先程作成したjupiterというウォレットが作成できていることが確認できます。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus listwallets
[
  "",
  "test_nakajo",
  "faucet",
  "luigi",
  "jupiter"
]

ウォレットを作成できたら、送金するためのアドレスを作成します。1CniSGHLt93XGRAydkdnW5nUTYJWV1rH5 というのがここで作成したjupiterウォレットのアドレス(のひとつ)です。このアドレスはいくつでも作成できます。このアドレスは、本稿の後のステップで使用するので控えておきます。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus -rpcwallet=jupiter getnewaddress
1CniSGHLt93XGRAydkdnW5nUTYJWV1rH5

送金: faucet から自分のウォレットへの送金

まずは、faucet の残高を確認します。ここで表示される残高の単位は TPC です。潤沢な残高があることがわかります。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus -rpcwallet=faucet getbalance
3140500.25051350

以下のコマンドで、faucet ウォレットの残高から 1CniSGHLt93XGRAydkdnW5nUTYJWV1rH5 へ 1 TPC 送金してみます。トランザクションIDが結果として表示されていれば成功です。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus -rpcwallet=faucet sendtoaddress 1CniSGHLt93XGRAydkdnW5nUTYJWV1rH5 1
1f18c61c208ea43f34bc8963be5c19ff594b9f3b0fb30cac6ad0776d6b3bebc3

送金が成功したか確かめるために、jupiterウォレットの残高を確認します。1 TPC 表示されていることがわかります。送金は成功です。

$ tapyrus-core.cli -rpcuser=tapyrus -rpcpassword=tapyrus -rpcwallet=jupiter getbalance
1.00000000