Develop with pleasure!

福岡でCloudとかBlockchainとか。

Open Assets ProtocolとColorcore

今回は、Bitcoind 2.0プロジェクトとされてるColored Coinsの環境を作ってみる。
※Colored Coinsというのは、Bitcoinに色を付加することで、Bitcoinに様々な意味付け(価値付け)を可能にするプロジェクト。

関連する要素技術
openassets Python moduleのセットアップ

前提としてPython 3.4とpipを入れて下記ライブラリをインストール。

$ sudo pip3 install python-bitcoinlib
...
$ sudo pip3 install openassets
...
Colorcoreのセットアップ

必要なソフトウェアをインストール

$ git clone https://github.com/OpenAssets/colorcore.git
...
$ cd colorcore
$ sudo pip3 install --upgrade -r requirements.txt
...

また、bitcoindが-txindex=1 -server=1のオプションで起動されてる必要がある。bitcoin.confに

...
txindex=1
server=1
...

と定義されてあれば大丈夫。

続いてconfig.iniファイルを編集。

...
[bitcoind]
# Replace username, password and port with the username, password and port for Bitcoin Core
# The default port is 8332 in MainNet and 18332 in TestNet
#
rpcurl=http://user:password@localhost:8332
...

このuserとpasswordの部分をbitcoin.confに定義しているrpcuserとrpcpasswordと同じ内容にする。(別のホストで動作してる場合はlocalhostの部分も書き換える)

colorcoreを使った操作

利用可能なコマンドは

$ python3 colorcore.py -h

で表示される。現在利用可能なコマンドは、

  • server
    ColorcoreのJSON/RPCサーバを起動する。起動するポートはconfig.iniにて設定可能でデフォルトは8080。
    起動すると、
    "http://対象のホスト:8080/操作コマンド"
    の形式でPOSTリクエストを送ると(GETは許可されない)操作コマンドが実行される。コマンドに引数がある場合は、引数をリクエストのBodyに含める。
  • getbalance
    有効な自分の全てのBitcoinウォレットからbitcoinとcolored coinのアセットの資産を取得する。
  • issueasset
    アセットを発行するためのトランザクションBitcoinの標準のトランザクション)を生成する。
    発行の際は、ウォレットに指定したアドレスの秘密鍵を保持してる必要があるのと、アセットの発行を成功させるために最低でも0.000006 BTCをそのアドレスに持っている必要がある。
  • listunspent
    未使用のトランザクションのアウトプットの配列を取得する。各アウトプットのアセットIDと量が分かる。ちなみに未使用のアウトプットじゃないと支払いに使えない。使用済みのアウトプットを利用すると二重支払いになる。
  • sendasset
    アセットを別のアドレスに送るためのトランザクションを生成する。
  • sendbitcoin
    Bitcoinを別のアドレスに送るためのトランザクションを生成する。
  • distribute
    トークンを作成するのと、作成したトークンをcrowdsaleの参加者に配布するために使う、トランザクションのバッチを生成する。
    (crowdsaleというのは独自に発行したコインをビットコイン払いで販売し、開発費用等を捻出するBitcoinを使った新しいクラウドファウンディングのことらしい。)