Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

みなさん、ビットコインしてますか〜?
この記事は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の各種引数を変更(自前で実装)すれば書けるようになりますので、興味があればチャレンジしてみてください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away