7
2

More than 5 years have passed since last update.

BitcoinKitを使って、たった9行で実装するビットコインウォレットアプリ

Last updated at Posted at 2018-12-02

みなさん、ビットコインしてますか〜?
この記事はBitcoin Cash Advent Calendar 2018 2日目の記事です。

実装することのざっくりとした流れは以下

1. 秘密鍵の生成、アドレスの生成、QRコードの表示
2. アドレスにコインを受け取る
3. 受け取ったコインを他のアドレスに送金する

早速いってみましょう。

1. 秘密鍵の生成、アドレスの生成、QRコードの表示

let privkey: PrivateKey = PrivateKey(network: .mainnet)
let wallet: Wallet = Wallet(privateKey: privkey)
let qrCodeImage: UIImage = wallet.address.qrImage()

実は、たった3行でQRコードの表示までができます。
テストネット用にしたい場合は、PrivateKeyを生成する時の引数を .testnetに変更して下さい。

2. アドレスにコインを受け取る

まずは、他のウォレットアプリ等から、先ほど生成したアドレス宛に送金してみましょう。

以下の2行で、受け取ったコインの残高を確認できます。
balanceの単位はsatoshiでかえってきます。
(1億satoshi = 1 BitcoinCash)

wallet.reloadBalance()
let balance: UInt64 = wallet.balance

3. 受け取ったコインを他のアドレスに送金する

最後に、他のアドレスに受け取ったビットコインキャッシュを送金してみましょう。

let address = try! AddressFactory.create("bitcoincash:qz936smm809wq0eqthqyh2sgdzhs7v08nvnuq0dmps")
try wallet.send(to: address, amount: 10000)

まずはアドレスの文字列 bitcoincash:qz936smm809wq0eqthqyh2sgdzhs7v08nvnuq0dmps からAddressクラスを生成します。
walletクラスを使って宛先のAddressと送金したい量(satoshi)を指定すれば、すぐに送金することができます。たった2行。

ここまでたった7行で、ウォレットの機能としては一応一通り実装できたと思います!

※秘密鍵の保存

最初に生成したPrivateKeyは、毎回ランダムに生成されています。(生成するたびに違う秘密鍵になる=受け取ったコインが取り出せなくなるので注意!)

ですので、通常PrivateKeyの生成を行うのは初回だけです。
初回に生成してそれを保存しておいて、後からは保存していた秘密鍵を使ってウォレットを生成します。

秘密鍵の保存

wallet.save()

デフォルトではUserDefaultsに保存されます。

保存していた秘密鍵を使ってウォレットを生成

let wallet: Wallet? = Wallet()

デフォルトではUserDefaultsに保存されている秘密鍵からWalletを生成します。

終わりに

以上で、この記事は終わりです。
合計たった9行でしたが、いかがでしたでしょうか?笑

この記事ではBitcoinCash(BCH)のウォレットを実装しましたが、BitcoinCore(BTC)などを使いたい方は、networkとWalletの各種引数を変更(自前で実装)すれば書けるようになりますので、興味があればチャレンジしてみてください。

7
2
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
7
2