仮想通貨サービス BitCapitalZ の日記

仮想通貨関連のブログです Ripple, Ethereum 仮想通貨2.0に注目しています

bitcoin API (JSON-RPC) を 使って送金する件 (sendtoaddress と sendfrom の違い)

基本的に monacoin APIbitcoin API も一緒で Original Bitcoin client/API calls list にある通りです。

パッと見ると誰かのアドレスに送金する場合 sendtoaddress を使えばよさそうですが、想定と違う結果になってしまいました。 sendfromが想定する結果になりました。その詳細を書きます。

想定する動作としては 5.0MONA持っているアカウント yuma3000 から 1MONA をMMhwb8rehZt2iFH87USvJmi6WHKLPfSdS2 というアドレスへ送りたいとします。

初めは monacoin_client を用いてこのように実装しました。

require 'monacoin_client'

lt = MonacoinRPC.new('http://username:password@127.0.0.1:9332')
p lt.sendtoaddress('MMhwb8rehZt2iFH87USvJmi6WHKLPfSdS2', 1)
p lt.listaccounts

これの実行後 wallet 内の各アカウントの残高は以下のようになっていました。

{""=>-1.0, "yuma3000"=>5.0}

このようになっていました。yuma3000のアカウントではなくて "" のアカウントから 1MONA引かれてマイナスになっていました。

確かに、sendtoaddress は送り元のアカウントを指定するパラメータがないのでこうなりそうですね。 Original Bitcoin client/API calls list を見ると sendfrom という API があります。

これには送り元のアカウントを指定するパラメータがあります。どうもこれが正解のようです。


require 'monacoin_client'

lt = MonacoinRPC.new('http://username:password@127.0.0.1:9332')
p lt.sendfrom('yuma3000', 'MMhwb8rehZt2iFH87USvJmi6WHKLPfSdS2', 1)
p lt.listaccounts


これの実行後 wallet 内の各アカウントの残高は以下のようになっていました。

{""=>-1.0, "yuma3000"=>4.0}


目論見通り yuma3000 のアカウントから 1MONA 送れていました。

仮想通貨技術研究会 へのご参加お待ちしております。