Bitsocket – BitDBの開発者、BCHのトランザクションデータをリアルタイムで取得するAPIをリリース
2018.11.08
BCHNews編集部
こんにちは、BCHNews編集部です。
2018年10月25日、BitDBの開発者である_unwriter氏が、自身のTwitter上で、Bitsocketのリリースを発表しました。
Today I present Bitsocket, the realtime API for bitcoin. It’s an open infrastructure that lets you subscribe to various patterns of Bitcoin transactions in realtime using Bitquery, the same query language that powers Bitdb https://t.co/bsinDtNyHz
— _unwriter (@_unwriter) 2018年10月24日
Bitsocketは、リアルタイムでBCHブロックチェーン上のトランザクションの情報を取得できるAPIです。本記事では、このBitsocketについて内容を紹介していきたいと思います。
Today I’m releasing Bitsocket, a powerful bitcoin push notification infrastructure for building realtime event driven bitcoin applications.
[日本語訳]
本日、Bitsocketをリリースしました。Bitsocketは、リアルタイムなイベント駆動型ビットコインアプリケーションを構築するための、パワフルなプッシュ通知インフラです。
Bitsocketとは
(画像引用元:https://www.yours.org/content/bitsocket–the-realtime-api-for-bitcoin-0c646d55c152)
Bitcoinのトランザクションをアプリで使用するためには、ブロックチェーンからそのアプリに必要なトランザクションデータを取得する必要があります。その際、通常は、取得した生のトランザクションデータを解析して人間が理解できるフォーマットに変換した上で、条件に一致するトランザクションデータかどうかを判断する必要がありました。
これは、非常に面倒で計算コストもかかりますが、ビットコインが生まれてからおよそ10年近く経過しているにも関わらず、簡単にトランザクションデータを抽出する方法がありませんでした。
そんな中、2018年10月8日に_unwriter氏がリリースしたBitQueryでは、APIのクエリで、簡単にトランザクションデータを取得、解析、フィルタリングすることができます。詳しくは過去記事をご覧ください。
【過去記事】
『Bitquery – チューリング完全なBitDBのクエリがリリースされる』
(https://bchnews.jp/bitcoincashnews-e/3152)
このBitqueryを利用したBitDBは、リクエストを送るたびに結果が返ってくるpull型のAPIでしたが、今回リリースされた、Bitsocketは、リアルタイムで条件に当てはまるデータが送信されてくるpush型のAPIということになります。
以下の画像は、自分のアドレスにBCHを送金した際に、リアルタイムでBitsocketからトランザクションデータが返ってくることを表すデモンストレーションです。
(画像引用元:https://www.yours.org/content/bitsocket–the-realtime-api-for-bitcoin-0c646d55c152)
ウォレットアプリとBitsocketが直接やり取りをしているわけではありません。ウォレットで作成されてネットワークに伝搬されたトランザクションをBitsocketが拾って結果として返してきています。
Bitsocketの仕組み
- 変換
Bitsocketは。トランザクションをTNAと呼ばれるモジュールを使って構造的なフォーマットに変換します。
TNAは、トランザクションの生データをBitDBで使われる形式に変換するモジュールです。(詳しくはこちら。)
(画像引用元:https://www.yours.org/content/bitsocket–the-realtime-api-for-bitcoin-0c646d55c152) - イベント化
Bitsocketは、BitDBとは異なりデータをMongoDBに保存したりはしません。ステップ1で変換されたトランザクションデータを、リアルタイムで、メモリ上でフィルタリングしてイベント化します。
(画像引用元:https://www.yours.org/content/bitsocket–the-realtime-api-for-bitcoin-0c646d55c152) - プッシュ
作成されたイベントは、SSE(Server Sent Events)と呼ばれるpush通知を送るための技術を利用してアプリケーションにプッシュされます。
(画像引用元:https://www.yours.org/content/bitsocket–the-realtime-api-for-bitcoin-0c646d55c152)
使い方
使い方は非常にシンプルです。試しに以下のコードをメモ張などのエディタにコピー&ペーストして、bitsocket.htmlのようなファイル名で保存してください。
<html>
<body>
<script>
var query = { "v": 3, "q": { "find": {} } }
var b64 = btoa(JSON.stringify(query))
var bs = new EventSource('https://bitsocket.org/s/'+b64)
bs.onmessage = function(e) {
var str = JSON.stringify(JSON.parse(e.data), null, 2)
document.write("</p><pre>" + str + "</pre><p>")
}
</script>
</body>
</html>
保存したファイルをブラウザで開くとトランザクションデータを取得できることが確認できます。
これだけでBitcoinCashのブロックチェーンから任意のデータを取得することができます。Bitsocketを利用するために必要なのは、クエリの文法を覚えることだけです。クエリは、BitDBと同じくBitqueryが利用されています。
【過去記事】
『Bitquery – チューリング完全なBitDBのクエリがリリースされる』
(https://bchnews.jp/bitcoincashnews-e/3152)
さいごに
BitDBとBitsocketとBitqueryの関係性がややこしく感じたかもしれませんが、以下のように考えてもられば良いと思います。
- BitDBは、pull型のAPI。
- Bitsocketは、push型のAPI。
- Bitqueryは、BitDBとBitsocketの両方で利用されているクエリ言語。
Bitsocketを利用すれば、特定の条件のトランザクションがネットワークに伝搬された時点でプッシュ通知を行うアプリなどの開発が容易になります。BitDBと同様、開発者にとっては非常に便利なものとなるでしょう。
最新情報はこちら
BCHNewsでは公式のTwitterアカウント(@bchnews_jp)を開設しました。
更新情報を配信しておりますので、よろしければフォローしていただけると嬉しいです。
この記事のカテゴリ
この記事のタグ
BCHNews編集部
BCHNews編集部です。
日々更新される暗号通貨関連のニュースを読者の皆様にお届けします。