Develop with pleasure!

福岡でCloudとかBlockchainとか。

Ruby

Rubyで書かれたテスティングフレームワークtethでコントラクトをテストする

Ethereum使ったアプリケーションをRubyで書けないかなーと思ってRubyのライブラリを調べてみた。 EthereumのRubyライブラリ 公式ドキュメントで紹介されているのは以下の3つ。 ruby-ethereum Rubyで書かれたEVM(Ethereum Virtual Machine)の実装 github.c…

witnessデータを含むブロックのwitness rootとcommitment hashの計算

Segwitの導入にあたってブロック作成時にwitness トランザクションの署名が確かにブロックに含まれていることを保証するために新しいCommitment構造が導入されている。 techmedia-think.hatenablog.com コインベーストランザクションに追加されたCommitment…

Asset Definition URLをP2SHのredeem scriptに設定する

Open Assets Protocolではアセットのメタデータを定義したAsset DefinitionをURLで指定する。 techmedia-think.hatenablog.com ↑に記載されているように、Asset Definition URLとブロックチェーン上のアセットを紐付ける方法は以下の2種類がある。 アセット…

Segwit導入におけるRPCの主要な変更点

techmedia-think.hatenablog.com 先月リリースされたBitcoin Core 0.13.0にSegwitのコードがマージされtestnetで利用可能になったので、関連するRPCの変更点を見てみる。 RPCの変更点 getblock と getblockheader の変更点 出力内容に新しく以下の項目が追加…

Segwitなトランザクションをパースしてみる

witnessなトランザクション用にBIP-144で新しいシリアライゼーションフォーマットが定義された↓ techmedia-think.hatenablog.com ので実際にそのフォーマットに従ってトランザクションをパースしてみた。 フォーマットの変更点 詳細はBIP-144に定義されてい…

bitcoin-rubyを使ったマルチシグアドレスの作成と署名

bitcoin-rubyを使ってマルチシグの作成とマルチシグでロックされたUTXOへの署名をする。 他の言語のライブラリもそうだけど、bitcoin-rubyもBitcoin::ScriptクラスでP2SHを使ったマルチシグアドレスの作成と署名をサポートしている。 マルチシグアドレスの作…

OP_CSVで指定期間まで資金を凍結

以前、絶対時間を使用するOP_CLTV(BIP-65)で指定期間まで資金をロックするスクリプトを作成したので↓ techmedia-think.hatenablog.com 今回は、相対時間を使用するOP_CSV(BIP-112)↓を使って同様のことをやってみる。 techmedia-think.hatenablog.com OP_…

Open Assets Protocolを使ったアセットのAtomic Swap

Open Assets Protocolのアセットを1トランザクションで交換するAtomic Swapをやってみた。 シナリオ アリスはアセットID”oQWgTxFmK2EAYuoDvs2bLPNo9MG5nXnmyM”のアセットを1,000個持っている。 ボブはアセットID”oM4p6N7CqTTcujSHkiRKXzzVcMuXek8aiz”のアセ…

CHECKLOCKTIMEVERIFYで指定期間まで資金を凍結

techmedia-think.hatenablog.com ↑のCHECKLOCKTIMEVERIFYを使って、指定した期間まで出力を凍結するトランザクションを作ってみた。 資金凍結をするスクリプト 実際に作成したのは↓のScript <expiry time> CHECKLOCKTIMEVERIFY DROP <pubkey> EQUALVERIFY CHECKSIG expiry timeに</pubkey></expiry>…

neo4j with ruby

BItcoinのブロックチェーンのデータをグラフDBに突っ込もうと思い、neo4jを使ってみる。neo4jをrubyで扱うのにはneo4jってgemが便利そう。github.comneographyってneo4jのREST APIをラップしたgemもあるけど、neo4jではノードの構造をモデルとして扱えるのが…

Open Assets Protocolのアセットをburn(焼却)する

Open Assets Protocolを利用することで、Blockchain上で任意のアセットの発行・送付が可能になるが、ユースケースとしてアセットの流通の他にアセットの消滅というユースケースも考えられる。Open Assets Protocolをアセットを消滅させるには以下のような方…

複数のアセットを1トランザクションで送付できるようになったopenassets-ruby v0.2.9をリリース

Open Assets Protocolのカラーリングは、order-based coloringという方式を採用しており、トランザクションの入力に色(Asset ID)の異なるアセットが含まれていても、出力で指定されたアドレスにそれぞれ指定した量ずつアセットを送付することができる。複…

dumpprivkeyで取得した秘密鍵から公開鍵を生成

bitcoin-rubyを使ってBitcoin Coreのウォレットで管理している秘密鍵からから公開鍵を作成する手順。 dumpprivkeyの戻り値 最初、Bitcoin Coreのdumpprivkeyコマンドで秘密鍵を入手できるので、その秘密鍵から公開鍵を再作成するだけと思い、bitcoin-rubyを…

openassets-ruby

Open Assets ProtocolのRuby版の実装をOSSで公開してます。github.come-ZUKA Tech Night vol.33 - Blockchain & SVM で、そのopenassets-rubyの紹介をしてきました。 Openassets ruby from shigeyuki azuchi

Open Assets Protocolのasset IDを生成する

lian/bitcoin-ruby · GitHubを使って、Open Asset Ptotocolで使われるasset IDを生成してみる。asset IDの生成手順は以前ブログに書いた↓の手順。 1.発行者は初めに秘密鍵を生成する (こんな→ 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A20…

ruby on puma

Rackアプリが動作するPumaっていうRubyのサーバ実装を発見。Engine Yardのプロジェクトみたいね。プーマという名前からして速さがウリか?A Modern, Concurrent Web Server for Ruby - Puma puma/puma · GitHub 概要 Mongrelをベースに作られたサーバみたい…

BeanstalkにRailsアプリをデプロイしてみた。

【AWS発表】 AWS Elastic Beanstalk - Rubyのサポート開始、さらにVPC統合も可能に - Amazon Web Services ブログと遂にBeanstalkがRubyにも対応したので、早速RailsアプリをBeanstalk使ってデプロイしてみた。 環境構築 コマンドラインでBeanstalkを使用す…

HRForecastでAWSの利用料金グラフ生成してみた。

WebAPIを叩くことで様々な値をグラフ化してくれるGrowthForecastを使ってAWSの利用料金とリソースの使用状況をグラフ化してみた。最初はGrowthForecastを使おうと思ったんだけどGrowthForecastだとリアルタイムでログを出力する分には問題ないんだけど、時刻…

knife ec2 を使ってインスタンスを起動した際の鍵の配布

opscode/knife-ec2 · GitHubを使って、EC2のインスタンスを起動すると、インスタンスがChef Serverに接続し、インスタンスに対し登録されているレシピの適用を始める。その際にどうやってChef Serverとインスタンス間で認証が行われているのか気になったので…

Passenger vs Unicorn

EnginYardのブログにポストされてた記事を意訳してみた。Passenger vs. Unicorn | Engine Yard Blog | Engine Yard Developer BlogUnicornとPassengerは根本的な動作仕様が異なってるけど、 ワーカーを生成するマスタープロセスの存在 マスタープロセスから…

mod_mruby入れてみた。

mruyをApacheのモジュールとして組み込むmod_mruby入れてみる。 インストール まず、mrubyのインストールから。 $ git clone https://github.com/mruby/mruby.git $ makemakeが終わるとbinフォルダ直下にバイナリが生成される。 $ mruby -v mruby - Embeddab…

JavaとRubyで暗号化/復号化

Rubyで暗号化したデータをJavaで復号化、またその逆を行ってみた。今回はAES128ビットの暗号化モードCBC、パディングはPKCS#5で実施。 まずRuby側のコード。 require 'openssl' require 'base64' class CryptUtil def self.encrypt(pass, value) enc = OpenS…

c2dm_on_railsでC2DM連携

Android2.2から追加された、サーバ上からAndroid端末にメッセージの通知を行えるC2DM(Cloud to Device Messaging )。実際にAndroid端末にメッセージを送るのはGoogleのC2DMサーバなので、端末に送信したいメッセージをC2DMサーバに送信する必要がある。も…

CapistranoとBundlerの連携

gemの依存性やバージョンを管理するのにとても便利なBundlerとCapistranoを連携してみる。連携といっても、capistranoのcapコマンドで対象サーバにbundler使って依存gemをインストールするくらいだけど。連携自体は簡単で、capistranoで生成したdeploy.rbの…

久しぶりにBundler入れてみた。

久しぶりにBundlerを入れてみた。現在のバージョンが1.0.2で随分バージョンアップしてた。公式サイトもBundler: The best way to manage Ruby applicationsに。早速 gem install bundler。今までと変わらずRailsのプロジェクトにgemの依存性を定義したGemfil…

Rhodes 2.0.0β セットアップ

RubyとHTMLのコードを書けばAndroid、iPhone、Black Berry、Windows Mobile、Symbianで動作するネイティブアプリケーションを構築できるオープンソースのフレームワーク「Rhodes」をインストールしてみた。2.0になってライセンスもMITライセンスとなっており…

AP4RのデプロイをCapistranoで行う。

Rubyの非同期メッセージングライブラリAP4R。このAP4Rの起動/停止もCapistranoでやってみた。最初は自分でCapistranoのタスクを定義しないといけない?と思ってたけど、0.3.4からCapistranoのレシピが追加されてた。lib/ap4r/recipes.rbにAP4Rの操作系のタス…

Capistranoを使ってRails以外のアプリケーションをデプロイ。

CapistranoはRailsのデプロイツールとしてメジャーだけど、Rails以外のアプリケーションのデプロイもできる。ただ、デフォルトの設定のままだと、デプロイ時に、ログファイルやPIDファイルの格納先へシンボリックリンクをはったり、publicフォルダ以下のimag…

Ruby MineがBundler対応してる。

ちょっと前に、(Javaのmavenでの依存性管理と同様で)Bundler入れて便利だなーBundler入れてみた。 - Develop with pleasure!って思ってたらIntellijのRubyMineでもBundlerをサポートしたみたい。What’s mining: Bundler support in RubyMine | JetBrains R…

Capistranoでローカルリポジトリからソースを取得する。

Capistranoを利用してデプロイを行う場合、デフォルトの設定では、デプロイ先のサーバからモジュールを取得するためにソースが管理されているリポジトリにアクセスする。ただ、ソースを管理しているリポジトリは社内にあって、デプロイ先のサーバからは直接…