ビットコインって流行っているよね。
少し前にマウント・ゴックスが破産して、
マイクロソフトが決済を取りやめにしたり
2014年から急激に下落したものの
既に当時の価格に迫ってきています。
ホットワードでもあるFintechのBitcoin、聞いたことは誰にでもありますが
実際に触った(?)、所持している人はまだまだ少数かと思います。
bitcoin APIを実際に手を動かして実装してみよう。
さて、いざBitcoinApiを使ってみると言っても
初見の場合には何がなんだかさっぱりわかんない!!だと思います。
ちょっと前までの自分と全く一緒です。
そのうちまとめますね。
railsが既にインストールされていればすぐに始められます。
railsのバージョンは特に関係ないです。
実際にmacではなくwindows10+vagrant+centos7でも問題なく動いたので
最悪macじゃなくても仮想環境で同じようなWebアプリが作成可能です。
仮想環境で仮想通貨をいじる感覚はたまりませんね。
ターミナルでデスクトップに移動してRails new しましょう。
1 2 |
$ cd Desktop $ rails new walet |
もしインストールしていなければrbenvを使ってインストールしてください。
たぶんコピペで大丈夫。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/…/install )” $ echo 'export PATH=/usr/local/bin:$PATH' >> .bash_profile $ source .bash_profile $ brew doctor $ brew update $ brew install ruby-build $ brew install rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bash_profile $ echo 'eval "$(rbenv init -)"' >> .bash_profile $ source .bash_profile $ rbenv install -l $ rbenv install 2.2.3 $ rbenv global 2.2.3 $ rbenv versions $ ruby -v $ gem install rails $ gem install bundler $ rbenv rehash $ source ~/.bash_profile $ rails -v $ rails new wallet $ cd wallet |
今回の勉強会で使用したのはblock_ioというGemです。
このgemを使用してBitcoinAPIを手軽に操作することが出来ます。
1 |
gem 'block_io' |
まずはBitcoinAPiであるblock_ioサインアップをして自分のアカウントを作成します。
実際に使うならいくらか入金しておきましょう。
config/initializers/block_io.rb にAPIKeyなどを記述します。
1 |
BlockIo.set_options :api_key=> '0000-0000-8f6e-79fe', :pin => 'SAMPLESAMPLE', :version => 2 |
https://block.io/
Refarenceもさほど長くないので参考にしてみてください。
APIを使って新しいアドレスを作成してみます。
今回はHomeControllerを作ってみます。
app/controller/home_controller.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def index data = BlockIo.get_balance @balance = data['data']['available_balance'] all_address = BlockIo.get_my_addresses @addresses = all_address['data']['addresses'] price_usd = BlockIo.get_current_price @price = price_usd['data']['prices'][3]['price'] end def quick_send BlockIo.withdraw :amounts => '0.0001', :from_addresses => '3LeHRsVz9U4gZqRNc52cgha4PYz37GUqtb' , :to_addresses => '3ECdULY7m1JB1h9W5LLFG9bffk8QLoLSNa' redirect_to :back end def new_address @label = params[:new_address][:label] BlockIo.get_new_address :label => @label redirect_to :back end |
Viewにも記入します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
balance: <%= @balance %> <%= @addreses %> <a href="/new_address">New Address</a> <form action="/new_address" method="get"> <div class="field"> <label for="name">Name</label><br> <input id="name" name="new_address[name]" type="text"> </div> <div class="field"> <label for="label">Label</label><br> <input id="label" name="new_address[label]" type="text"> </div> <div class="actions"> <input name="commit" type="submit" value="Create Address"> </div> </form> <a href="/new_address">New Address</a> <a href="/quick_send">send 0.0001 BTC</a> |
routes.rbにも記入します。
1 2 3 4 |
#get 'home/index' root :to => 'home#index' get '/new_address' => 'home#new_address' get '/quick_send' => 'home#quick_send' |
ここまで来たところで、実際にbitcoin APIを使ってWebアプリを作ることになりました。
APIでどういったこと出来るかは、Documentにあるので各々作業に取り掛かりました。
https://www.block.io/api/simple/ruby
使いやすいのが、Withdrowとnewadrressやpriceなのかと思います。
そこで、今回はユーザーを作成し
そのユーザーがアップロードした画像を気に入った
そのときに自動的にアドレスを作成し
オリジナルのアドレスから希望するユーザーに
0.0001bitcoinを送金する機能を実装しました。
ビットコインを実際に扱ってみて一番感じたことは
ビットコインを扱うことが想像以上に簡単だったことです。
ちょこっとコードを書けば、仮想ではありますが実際の通貨を
送金出来てしまうことに
そして取引手数料が高すぎでした。
もちろん元々の送金額が少ないだけなので
本来は決して高すぎる額ではありません。
それでも開発中にワンクリックするたびに送金額の十倍以上も
手数料で取られていたのは笑ってしまいました。
0.0001bitcoin を送金したら
手数料は、ななんと.........
0.0030
うぉぉぉぉぉぉぉぉい!!!!!!
たけえよたけえw!!!
もちろん決してそれが高いわけではないです。
送る金額が少ないだけなんだけどね。
相対的なはなし。
でもちょっとびっくりしたので(笑)
今回の記事は
ちょっと雑だったな...
じゃあね~