Blockscan JSON APIを使ってみる(Swift) (1/2)

f:id:yzono:20150118215336j:plain

はじめに

今回は[Blockscan](https://www.blockscan.comが提供しているJSON APIの使い方について書きます。Blockscan APIを利用すると自前でCounterpartydをインストールする必要が無いため、アプリケーション開発に資源を集中することができます。

現在は参照系のAPIのみの提供ですが、将来的にBlockchain.infoのようにウォレット作成など更新系のAPIが公開されることを期待します。(ただし、今のところそういったアナウンスは一切聞きません)

今回は確認用のプログラム言語としてSwift(iOS)を使用します。Swiftの導入手順も少し書きます。

目次

  • はじめてのSwift
  • Blockscanが提供しているJSON API
  • API実行(アセット一覧)

はじめてのSwift

Swift

Swiftについての細かい説明はしません。著者のセミナーに参加するという理由だけで私は以下の書籍から学び始めました。(推薦する、しないの話ではありません)

HTTP通信ライブラリ Alamofire

HTTP通信ライブラリはSwift版AFNetworkingのGithub Alamofire/Alamofireを利用します。matttにはいつもお世話になっております...

Objective-Cとは違いCocoapodsでさっとインストールできなくて、以下手順に従いました。

[Swift] HTTP通信OSS Alamofire 導入編

Blockscanが提供しているJSON API

Blockscanが提供しているJSON APIは以下です。JSON API Blockscan APIs

1. Asset APIs

* Get a list of all available Assets
* Get a specific asset detail
* Get asset holders
* Get asset issuances

2. Address APIs

* Get Address Balance for a specific Asset
* Get Address Balance for all available Assets
* Get Address credit/debits for a specific Asset (Last 100 transactions)
* Get Address credit/debits for all available Assets (Last 100 transactions)

3. Broadcast APIs

* Get the latest broadcasts

4. Transaction APIs (in progress)

* Get the latest transactions
* Get transactions by specific block index
* Get a specific transaction detail

5. DEX APIs

* Get the Latest Dex BTCPAY Price for an Asset
* Get the Latest Dex OrderMatch Price for other assets pairs

6. Money Supply APIs

* Get XCP Money Supply

7. Misc APIs

* Get Counterparty Running Info
* Get Block Info

API実行(アセット一覧)

利用可能なアセット一覧を取得します。

仕様

http://api.blockscan.com/api2?module=asset&action=list  OR
http://api.blockscan.com/api2?module=asset&action=list&page=1&count=10 
(To get paginated results use page=<page number> and count=<max records to return>)

リクエスト(Swift)

let params = [
    "module":"asset",
    "action":"list",
    "page":"1",
    "count":"3",
]
Alamofire.request(.GET, "http://api.blockscan.com/api2", parameters: params)
    .responseJSON { (_, _, JSON, _) in
        println(JSON)
}

レスポンス(JSON)

Optional({
    data =     (
                {
            asset = A100000000000000000;
            circulation = 1;
            divisible = True;
            locked = False;
            owner = 1QEx9kdYQqmNzC8HW8FPQS3Mb7vVXYa7bK;
        },
                {
            asset = A1000000000000000000;
            circulation = 1;
            divisible = True;
            locked = False;
            owner = 1QD5oHa3QZdeaXVbtwqWkSiW8nLUB1jrCx;
        },
                {
            asset = A10000000000000000000;
            circulation = 1;
            divisible = True;
            locked = False;
            owner = 1Bemb8LJMY5TxWJPvbW4QFEYRQ6wXKRFo2;
        }
    );
    message = "list of assets from page=1 with count=3 out of 7574 assets";
    status = success;
    totalcount = 7574;
})

まとめ

1ヶ月前にBlockscanのサイトを見た時に比べてAPI数が増えている気がします。最近Testnetにも対応するなどBlockscanの開発も進んでいる印象があります。ただし、Blockchain.infoと同じように更新系のAPIを用意するのはかなり先、または無いかもしれません。(あくまで想像です)

今日のSwiftメモ

間違っている可能性大いにあり。解決方法探し中。

  1. クラス名のリファクタリングができない
  2. AlamofireがCococPodsでインストールできない。

補足

Github Alamofire/Alamofire

[Swift] HTTP通信OSS Alamofire 導入編

JSON API Blockscan APIs