国産仮想通貨KOTOの作業メモ


Ubuntu, CLIでkotoの基本的な使い方のメモです。 GUIは飾りなので使いません。
こちらのスレッドの内容を追いかけつつ、手を動かしてみたメモです。

koto ウォレットのインストール

基本的にこちらに書いてあるとおり。

https://github.com/koto-dev/koto/wiki/%E8%A7%A3%E8%AA%AC

$ sudo apt-get install build-essential pkg-config libc6-dev m4 g++- multilib autoconf libtool ncurses-dev unzip git python python-zmq zlib1g-dev wget bsdmainutils automake curl
$ git clone https://github.com/koto-dev/koto.git
$ cd koto
$ ./zcutil/fetch-params.sh
$ ./zcutil/build.sh --disable-rust -j$(nproc)

Windows Subsystem for Linuxを使用する場合は、build.shの実行前にパスを通しておく必要がある。

$ export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

設定ファイル作成

設定ファイルをホームディレクトリに作成する。

ユーザー名とパスワードを決めて設定する。

$ mkdir -p ~/.koto
$ echo "rpcuser=username" >>~/.koto/koto.conf
$ echo "rpcpassword=password" >>~/.koto/koto.conf

使い方

無事インストールができると、koto/src 以下に kotod, koto-cli の2つが生成される。

kotod

kotodのほうがデーモンで、使うときには立ち上げておく。
tmuxやscreen、別のターミナルなどで別途立ち上げておくと良い。

$ ./src/koto-cli kotod

するとこんな画面が現れる。

この状態では、マイニングはされてない。もう少し設定をしてこの画面を立ち上げればマイニングできる。方法は後述する。

koto-cli

koto-cliはウォレットの状況を見たり、送金、取引状況確認など色々できる。kotodを立ち上げておかないと使えない。

kotodを用いたソロマイニング方法

kotodを別に立ち上げた状態で、まず新しくアドレスを発行します。

$ ./src/koto-cli getnewaddress

すると、このようなkから始まるアドレスが発行される。
k1FfeBWP9WtaUvuQKWt8DrNyRAeAgW3bnso

このアドレスは自分のウォレットで管理されるアドレスになる。

次にマイニングをするための設定をする。

以下を実行

$ echo "gen=1" >>~/.koto/koto.conf

もしくはこちらを実行

$ ./src/koto-cli setgenerate true

どちらでもよいようです。

これでマイニングのための設定は終わり。

採掘したkotoをこのアドレスに入れるようにオプションを加えて、kotodを実行する。

$ src/kotod -mineraddress=k1FfeBWP9WtaUvuQKWt8DrNyRAeAgW3bnso -genproclimit=4

kから始まるアドレスは、自分のアドレスに変更してください。

アドレスを指定しない場合、採掘に成功するたびに新しくアドレスが発行されてしまい、後で移し替える必要が出てきます。
genproclimitでは、スレッド数を指定します。お持ちのCPUに応じて変更してください。

正常に実行されると、以下のような画面になります。

先程の採掘していない時と比べると、少し情報が多くなっています。

Local solution rateが0.0000 Sol/sとなっていますが、正常に表示できていないだけで採掘はできているそうです。

もう少し時間を置いて、採掘に成功すると、このような画面になります。

You have mines n blocks という部分が、あなたが採掘に成功したブロック数、
Orphaned: n blocks が無効になってしまったブロック数、
Immature :n KOTO がまだ未承認のKOTO数です。
Mature: n KOTO  が承認済みとなりあなたのものになったKOTOです。
ブロックチェーン通貨では、採掘に成功したあと、他のマイナーに一定数承認されるまで使えないので注意してください。

ウォレットの確認

採掘に成功したら、自分のウォレットの状況を見てみましょう。

もし採掘できていない場合、動作確認のため、Fauset(蛇口)でkotoを少し分けてもらいましょう。

https://koto-faucet.torifuku-kaiou.tokyo/koto/
にアクセス、先程入手した自分のアドレスを入力して、kotoをもらいます。

それでは、サイフの状況を確認します。
kotodの画面はそのままで、別のターミナルで以下を実行します。

$ ./src/koto-cli getwalletinfo
{
  "walletversion": 60000,
  "balance": 81.31085682,
  "unconfirmed_balance": 0.00000000,
  "immature_balance": 0.00000000,
  "txcount": 7,
  "keypoololdest": 1513424256,
  "keypoolsize": 104,
  "paytxfee": 0.00000000
}

こんな感じで、ウォレットの状況が見られます。

採掘に成功していれば、以下のコマンドで採掘したブロックが入っているアドレスを表示させることができます。

$ ./src/koto-cli listaddressgroupings
[
  [
    [
      "k1FfeBWP9WtaUvuQKWt8DrNyRAeAgW3bnso",
      81.31085682,
      ""
    ]
  ]
]

さらに詳しい採掘状況、取引状況を確認したいときは、以下のコマンドでこのように詳細が表示されます。

$ ./src/koto-cli listtransactions
[
  {
    "account": "",
    "address": "k1FfeBWP9WtaUvuQKWt8DrNyRAeAgW3bnso",
    "category": "receive",
    "amount": 0.01000000,
    "vout": 1,
    "confirmations": 1400,
    "blockhash": "6b263ada50eb2365c35ebc6882acbca6b9e92118e72c580c79287122cacb5d35",
    "blockindex": 2,
    "blocktime": 1513450914,
    "txid": "2d6d88bbb453b597d7db1c53c27b4667da334734e459d1e9a1da68ce55d43c4e",
    "walletconflicts": [
    ],
    "time": 1513450893,
    "timereceived": 1513450893,
    "vjoinsplit": [
    ],
    "size": 225
  },
  {
    "account": "",
    "address": "k1FfeBWP9WtaUvuQKWt8DrNyRAeAgW3bnso",
    "category": "generate",
    "amount": 12.49534438,
    "vout": 0,
    "confirmations": 1141,
    "generated": true,
    "blockhash": "6b7d55d5e33a90b169c0ea547dcb35043851813daad9da3c7dba950a660df913",
    "blockindex": 0,
    "blocktime": 1513466647,
    "txid": "1bafd885ba815e4c1766feff03510a665205ed1c5554383bec0bb23d0e5882f9",
    "walletconflicts": [
    ],
    "time": 1513466647,
    "timereceived": 1513466647,
    "vjoinsplit": [
    ],
    "size": 90
...
...

その他使えるkoto-cliコマンド

  • $ ./src/koto-cli helpでコマンド一覧と使い方が見られます。
  • listaddressgroupings もってるアドレスと残高確認
  • getnewaddress 新アドレス取得
  • listtransactions 取引のリスト
  • getaddressesbyaccount "" 持ってるアドレス一覧

zから始まるアドレス プライベートアドレス

kやjから始まるアドレスと、zから始まるアドレスがある。

zから始まるものは、プライベートアドレスというもので、取引内容が他の人から見えない匿名性のあるアドレス。

kから始まるアドレスを使った場合、トランザクションを追えば、k12345の人がどんな取引を今までに行ったのかが誰にでも分かる。しかし、匿名アドレスを使うとそれができなくなる。

zcashの取引で説明すると、(参考)
この取引では、input側は見えるが、output側は見えない。これは受け手が匿名アドレスを使ったためである。
逆にこちらの取引では、inputが見えない。

一度個人とアドレスが紐付いてしまうと、すべての取引履歴が追えてしまうのはプライバシー的によくないことがある。これを回避するために作られたのが匿名仮想通貨。

プライベートアカウントへの移行

プライベートアドレスを使うためには、アドレスを発行して残高を移す必要があるみたい。

  • ./src/koto-cli z_getnewaddressでプライベートアドレス取得
  • ./src/koto-cli z_shieldcoinbase "*" [z_getnewaddressで作成したアドレス]で採掘したkotoをプライベートに移す
  • ./src/koto-cli z_gettotalbalance で残高確認

やってみる。

$ ./src/koto-cli z_getnewaddress
zkQhUbGP9Fh1xJwwme4Ms2y1ZpBhNdEkhKiYNGdtBA7sG7Anwg1xBLLXdoKUXcPAwWCuMTWAt3nbm8EnuGU9K2JSVk3V1X5

発行できたみたい。

$ ./src/koto-cli z_shieldcoinbase "*" zkQhUbGP9Fh1xJwwme4Ms2y1ZpBhNdEkhKiYNGdtBA7sG7Anwg1xBLLXdoKUXcPAwWCuMTWAt3nbm8EnuGU9K2JSVk3V1X5
{
  "remainingUTXOs": 0,
  "remainingValue": 0.00000000,
  "shieldingUTXOs": 6,
  "shieldingValue": 81.30085682,
  "opid": "opid-879048b1-7519-4651-a7cb-2c4fafc7acc9"
}

プライベートに移動されたみたい。
元のアドレスの残高を確認してみる。

$ ./src/koto-cli listaddressgroupings
[
  [
    [
      "k1FfeBWP9WtaUvuQKWt8DrNyRAeAgW3bnso",
      0.01000000,
      ""
    ]
  ]
]

Faucetで貰った0.01を除いて、自分で採掘した分のkotoはなくなってた。
プライベートの残高を確認してみる

$ ./src/koto-cli z_gettotalbalance
{
  "transparent": "0.01",
  "private": "81.30075682",
  "total": "81.31075682"
}

移行できてるみたい。取引の詳細は、z_getoperationresultで見られる。

$ ./src/koto-cli z_getoperationresult
[
  {
    "id": "opid-879048b1-7519-4651-a7cb-2c4fafc7acc9",
    "status": "success",
    "creation_time": 1513538543,
    "result": {
      "txid": "31a8ba32cd7fcf8f35611415aafec6339f3a7ce3791d0ca2913a24620d1b2cb8"
    },
    "execution_secs": 45.451398521,
    "method": "z_shieldcoinbase",
    "params": {
      "fromaddress": "*",
      "toaddress": "zkQhUbGP9Fh1xJwwme4Ms2y1ZpBhNdEkhKiYNGdtBA7sG7Anwg1xBLLXdoKUXcPAwWCuMTWAt3nbm8EnuGU9K2JSVk3V1X5",
      "fee": 0.00010000
    }
  }
]

通常アドレス⇔プライベートアドレスの送受信

W.I.P