VIPPOOL storage の紹介

今回のおはなし

みなさんこんにちは。
VIPPOOL でエンジニアをやっています、星月です。

株式会社 VIPPOOL は、3 月に OSS として VIPPOOL clerk/storage の
2 製品をリリースしましたが、今回はそのうちの 1 つ、使い方が簡単な方、
VIPPOOL storage の紹介をしたいと思います。

VIPPOOL storage とは

VIPPOOL storage とは、VIPPOOL がクラウドで運用しているサービス、
VIPPOOL clerk に Python から簡単にアクセスできるための Python ライブラリです。

VIPPOOL clerk へアクセスするだけのラッパーなので、できることはそれに準じますが、
電子署名作成の機能も実装していますので、新規トランザクション作成が
メソッド呼び出し一発で済むところがポイントです。

また、VIPPOOL clerk が秘密鍵をアップロードすることなくトランザクション
作成する機能を持つため、秘密鍵の漏洩の心配なく送金やデータの書き込みが行えます。

...などと説明してもわかりづらいと思いますので、
実際に使ってみましょう。

VIPPOOL storage をインストールする

PyPI に登録してありますので、インストールはコマンド一発、

$ python -m pip install vippool_storage

です。

初期設定等は特に不要です。

VIPPOOL storage を使ってみる ~ウォレットとして~

まずは秘密鍵を作りましょう。

$ python3
>>> from vippool.storage import vippool_storage
>>> w = vippool_storage( coind_type = 'monacoind_test' )
>>> print( w.privKey() )
363312610E6224A0DB04E9D3BCDCF72A1AC24CC6BFEEEF9EEB3766DD7CCD0B11
>>> print( w.address() )
mmSM1sFdMUBqPkGUPQPs72zXcXxJgrfY3g
>>> print( w.balance() )
None

今回はテストネットで試しているので coind_type = 'monacoind_test' と書いてますが、
メインネットでやる場合は省略できます。coind_type = 'monacoind' と書いても OK です。

最初に表示された HEX が秘密鍵です。その次にコインアドレスを表示しています。
まだ使われたことのないアドレスなので残高は None が返ってきています。
このアドレスにモナを送金してから続きを試します。

まずは以下の 2 行だけのファイルを作ります。ファイル名は wallet.py にでもしましょうか。

from vippool.storage import vippool_storage
w = vippool_storage( coind_type = 'monacoind_test', privKey = '363312610E6224A0DB04E9D3BCDCF72A1AC24CC6BFEEEF9EEB3766DD7CCD0B11' )

privKey は先ほど表示されたものをそのままコピペします。

$ python3
>>> from wallet import w
>>> print( w.balance() )
429.637

はい、残高がちゃんと見れますね。

送金してみましょう。

$ python3
>>> from wallet import w
>>> w.send( 'mt5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 1, 0.001 )
'b25c6d563dbd6f9a7bf021a247dc8b218a92a56563ddcc26690b55c1f53d49e7'
>>> print( w.balance() )
428.636

1 tMONA を手数料 0.001 tMONA で送金しています。第一引数は送金先のアドレスです。
そうすると送金トランザクションの ID が返ってきます。しばらく待ってから残高を確認すると
ちゃんと送金額と手数料が減っていますね。

この時、秘密鍵はローカルの VIPPOOL storage ライブラリ内で電子署名作成に使うだけで、
サーバに送らずに送金を完結できるところがポイントです。流出を心配する必要がないわけです。

あとはこれに適当な UI をかぶせればウォレットアプリの完成です。
簡単ですね!

VIPPOOL storage を使ってみる ~ブロックチェーンライタ・リーダとして~

名前の由来としては、こちらの用途が先にありました。
送金機能はあくまでおまけです。

さて、それでは先ほどと同じように wallet.py を作ります。

$ python3
>>> from wallet import w
>>> print( w.balance() )
428.636
>>> print( w.write( b'ABCDEFG', 0.001 ) )
7eb74a8d2e85da3c971f7ee63cf2a2e284f2dd6350d4c57ce1a7e49b852e295e
>>> print( w.read( '7eb74a8d2e85da3c971f7ee63cf2a2e284f2dd6350d4c57ce1a7e49b852e295e' ) )
None
>>> print( w.read( '7eb74a8d2e85da3c971f7ee63cf2a2e284f2dd6350d4c57ce1a7e49b852e295e' ) )
b'ABCDEFG'

残高が残っていることを確認して、write メソッドでデータを書いてみます。
手数料は 0.001 tMONA です。帰ってきた TXID を引数にしばらく承認を待つと、
read メソッドで読めるようになります。

このデータはブロックチェーン上に記録されているため、
メインネットに書いたものはそう簡単には改ざんできません。

これに適当な UI をかぶせれば何か素敵なサービスが作れそうな気がしませんか?

何か作られた方はぜひ、開発チームまで教えていただけると、
今後のやる気になりますので、よろしくお願いします。

それでは、今回はこの辺で。