LoginSignup
3
3

More than 5 years have passed since last update.

BitcoinKitでWalletを作り、残高を確認する

Last updated at Posted at 2018-08-08

Bitcoinを使ったiOSアプリを手軽に使えるようにするBitcoinKit

今回は
- walletの作成
- APIを利用して、残高を確認する

初歩的なところを解説していきます。
ソースコードはこちらにあるので、良かったら参照してください。

ビルド方法

こちらを参照して下さい
「BitcoinKit」のinstall方法

walletの作成

今回は、HDWalletではなく、1つしかアドレスを持たない一番単純なwalletを作ります。

まずはprivate keyを生成し、それを引数にとってwallet作成します。

let privateKey = PrivateKey(network: .testnet)
let wallet = Wallet(privateKey: privateKey)

networkでは、BCH/BTC, Mainnet/Testnetの4種類が選べます。

上のコードでは、省略されていますが、private keyのinitializerの第2引数には、isPublicKeyCompressedが本来あります。

pubkeyには非圧縮と圧縮の2つの形があり、非圧縮のpubkeyは65バイトなのに対して、圧縮公開鍵は33バイトです。非圧縮のpubkeyを使うメリットが基本的に無いので、実装する際は圧縮公開鍵を使いましょう。Libraryでは、デフォルトで圧縮になっているので、気にする必要はありません。

WIF(Wallet Import Format)

生成したprivate keyをkeychainなどに保存したい場合、WIF(Wallet Import Format)に変換すると便利です。Libraryでは以下のコードから、WIFの生成及び、WIFからwalletを復元する方法が示されています。

let wif = privateKey.toWIF()
let wallet = wallet = Wallet(wif: wif)

Addressの表示

walletが作成できたら、walletのpubkeyを使って、アドレスが表示できます。

let pubkey = wallet!.publicKey
let base58Address = pubkey.toAddress()
// mjYvGxpiE9hyXFmkrMr9qyiNfNWSWm58FX
let cashAddr = pubkey.toCashaddr()
// bchtest:qqkrlfjuxtvkldq4pel3zxzc8tzwsyta7smhre48m5

アドレスは、base58でエンコーディングするものと、BCHの新しいアドレス表示方式のcashAddressに対応した2種類があります。

残高を確認する

まずは、Bitcoin Cash Testnetのfaucetにアクセスして、BCHを受け取りましょう(動作がが非常に不安定です)。
受け取れたら、TxIDを教えてくれるので、Bitcoin Cash Testnet Explorerで確認しておくと良いと思います。
今回は、BitPayのInsight APIを利用して、ブロックチェーンから残高を取得していきます。

End pointはこちら

let apiEndPoint = "https://test-bch-insight.bitpay.com/api" 
// Mainnet: "https://bch-insight.bitpay.com/api"

取得するUnspent Outputsの形は、以下のようになります。

struct UnspentOutput: Codable {
    let address: String
    let txid: String
    let vout: Int
    let scriptPubKey: String
    let amount: Decimal
    let satoshis: Int
    let height: Int
    let confirmations: Int
    let ts: Int
}

レスポンスをDecodeして、amountをチェックすれば、残高を確認することが出来ます。

スクリーンショット 2018-08-08 9.38.09.png

ひとこと

次回は、トランザクションの作成及び、送金のやり方について解説したいと思います!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3