メインコンテンツまでスキップ

統合クイックスタート

完全な統合は 5 つの要素で構成されます。各ステップから正確なフォーマットを説明したページにリンクしており、どのフォーマットにもテストベクターが用意されているので、実機に触れる前にコードを検証できます。

1. UR に対応した QR スキャナーを追加する​

BitTool Signer の QR コードは、プレーンなアドレスを除き、すべて Uniform Resource (UR) です。これは ur:<type>/ で始まるテキストです。大きなペイロードはアニメーション表示され、複数のフレームが連なってデータを運びます。テキストを自前でパースせず、UR デコーダーを使ってください。

プラットフォームライブラリ
JavaScript / TypeScript@ngraveio/bc-ur(BitTool Signer が使用)
SwiftURKit
Kotlin / JavaHummingbird
Rustur

スキャンしたフレームは、デコーダーが完了を報告するまですべて渡し続けます。フレームは順不同で届き、重複することもあります。

2. ペアリング:アカウントをインポートする​

BitTool Signer で対象ウォレットの Connect(接続)画面を開くよう、ユーザーに依頼します。ペアリング QR コードは 2 種類あります。

  • Wallet level(ウォレットレベル):Bitcoin(4 種類のアドレスタイプ)、EVM、TRON、3 つの Solana アドレスをまとめた、1 つのアニメーション ur:bytes QR コード。マルチチェーンウォレットに最適です。ウォレットレベル QR を参照してください。
  • Coin level(コインレベル):チェーンごとに 1 つの標準 QR コード(ur:crypto-account、ur:crypto-hdkey、ur:crypto-multi-accounts、またはプレーンなアドレス)。他の QR 署名デバイスと同じフォーマットです。コインレベル QR を参照してください。

アカウントの xpub(Solana の場合はアドレス)、その導出パス、そして マスターフィンガープリント を保存してください。署名リクエストの作成には、この 3 つすべてが必要です。各アカウントの最初のアドレスを表示し、BitTool Signer が QR コードの下に表示するアドレスと照合するようユーザーに促してください。

3. 署名リクエストを作成する​

ユーザーが送金するときは、通常どおり未署名トランザクションを作成し、それをチェーンごとのリクエスト型で包みます。

チェーンリクエスト中身
Bitcoinur:crypto-psbtすべてのインプットとおつり出力に bip32Derivation(フィンガープリント + フルパス)を持つ PSBT
EVMur:eth-sign-request未署名の RLP トランザクション、EIP-712 JSON、またはメッセージのバイト列に、パス、フィンガープリント、チェーン ID、アドレスを加えたもの
TRONur:tron-sign-requestraw_data の protobuf バイト列に、パス、フィンガープリント、アドレスを加えたもの
Solanaur:sol-sign-requestシリアライズしたメッセージ(トランザクションではない)に、パス、フィンガープリント、公開鍵を加えたもの

リクエストをアニメーション QR コードとして表示します。未署名トランザクションとランダムなリクエスト ID は、保留中レコードとして保持しておきます。QR による署名 を参照してください。

4. 署名をスキャンする​

BitTool Signer はすべてのフィールドを表示し、ウォレットパスワードを求めたうえで、結果を QR コードとして表示します。それをスキャンし、次の順序で確認してください。

  1. UR の型が、期待するレスポンス型であること。
  2. リクエスト ID が保留中のリクエストと一致すること(Bitcoin の場合:PSBT 内の未署名トランザクションが変更されていないこと)。
  3. 署名が、期待する公開鍵と、署名を依頼したバイト列そのものに対して検証できること。

5. 組み立ててブロードキャストする​

署名をトランザクションに挿入し(EVM:r、s、v、TRON:signature[] に追加、Solana:署名者のスロットに格納、Bitcoin:PSBT をファイナライズ)、ブロードキャストします。BitTool Signer がブロードキャストすることはなく、トランザクションが送信されたかどうかを知ることもありません。

実機なしでテストする​

このサイトの例はすべて、公開テストフレーズを使って BitTool Signer のエンジンで生成したものです。

テスト用リカバリーフレーズ(公開済み、絶対に入金しないこと)
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about

これをテスト端末の BitTool Signer(または自分のテスト)にインポートすると、このドキュメントに掲載しているアドレス、QR コード、署名とまったく同じものが得られるはずです。すべて テストベクター からダウンロードできます。

リリース前のチェックリスト
  • アニメーション QR コードが、フレームを取りこぼした後も含め、双方向でスキャンできる。
  • ユーザーが資金を受け取る前に、すべてのアカウントの最初のアドレスを照合できる。
  • すべてのレスポンスをブロードキャスト前に検証し、別のリクエストに対するレスポンスは拒否する。
  • SegWit v0 とレガシーのインプットでは、Bitcoin インプットに前のトランザクション全体(nonWitnessUtxo)を含める。
  • Solana トランザクションは静的なアカウントキーを使う(アドレスルックアップテーブルなし)。