BitcoinKitでWalletを作り、残高を確認する
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
をチェックすれば、残高を確認することが出来ます。
ひとこと
次回は、トランザクションの作成及び、送金のやり方について解説したいと思います!
Author And Source
この問題について(BitcoinKitでWalletを作り、残高を確認する), 我々は、より多くの情報をここで見つけました https://qiita.com/akifuji/items/539a2f1729a9075567ce著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .