BitcoinJS(bitcoinjs-lib)
node.jsとブラウザ用の純粋なJavaScriptビットコインライブラリ。1500万人以上のウォレットユーザーが使用していると推定されており、現在生産されているほぼすべてのビットコインウェブウォレットのバックボーンです。
特徴
- Clean:純粋なJavaScript、簡潔なコード、読みやすい。
- Tested:カバレッジ> 90%、サードパーティの統合テスト。
- Careful:小規模で焦点を絞ったプルリクエストに対する2人の承認プロセス。
- Compatible:Node.jsおよびすべての最新のブラウザーで動作します。
- Powerful:マルチシグ、HDウォレットなどの高度な機能のサポート。
- Secure:強力な乱数生成、PGP署名付きリリース、信頼できる開発者。
- Principled:がらくたRNG(IE <11)を使用するブラウザーはサポートされていません
- Standardized:ノードコミュニティのコーディングスタイル、Browserify、ノードのstdlib、およびバッファ。
- Fast:最適化されたコード。パフォーマンスのために、バイト配列の代わりに型付き配列を使用します。
- 実験に適した:ビットコインメインネットとテストネットのサポート。
- Altcoin対応:ビットコインから派生した暗号通貨(Dogecoinなど)を処理できます。
これを本番環境で使用する必要がありますか?
このライブラリのマスターブランチを本番環境で使用することを検討している場合は、stop .Masterは安定していません。これは開発ブランチであり、タグ付きリリースのみが安定として分類される場合があります。
インストール
1npm install bitcoinjs-lib
設定
Node.js
1var bitcoin = require('bitcoinjs-lib')
Browser
browserifyの使用方法に精通している場合は、これを無視して通常どおりに続行してください。これらの手順は助言のみであり、アプリケーションに適していない可能性があります。
これらの手順では、Browserifyがインストールされていることを前提としています。
プロジェクト用に、index.js
ファイルを作成します
1
2
3
4
5
6
7
8
9
10let bitcoin = require('bitcoinjs-lib')
// your code here
function myFunction () {
return bitcoin.ECPair.makeRandom().toWIF()
}
module.exports = {
myFunction
}
さて、ブラウザ用にコンパイルするには:
1browserify index.js --standalone foo > app.js
これで<script src="app.js" />
、を使用foo.myFunction
して新しいビットコイン秘密鍵を作成して、Webページに配置できます。
注:JavaScriptを使用する場合は、以下の変数名は、マングルされたビーイングを除外しなければならないuglify: 、、そのためダックタイピングで使用されている関数名のこの。Typeforce。BigInteger
ECPair
Point
例:
1uglifyjs ... --mangle reserved=['BigInteger','ECPair','Point']
注:このライブラリはノードLTS機能を追跡します。厳密なES5が必要な場合--transform babelify
は、browserify
ステップと組み合わせて使用します(es2015
プリセットを使用)。
注:このライブラリがiOS 10デバイスで実行されることが予想される場合は、buffer @ 5.0.5以降を使用していることを確認してください。
Typescript or VSCode users
Typescriptの型宣言^3.0.0
は、ライブラリのバージョンで使用できます。
1npm install @types/bitcoinjs-lib
これでbitcoinjs-lib
、typescript準拠のライブラリとして使用できます。
1import { HDNode, Transaction } from 'bitcoinjs-lib'
VSCode(およびその他のエディター)の場合、Intellisenseはその情報を使用してコーディング(オートコンプリート、静的分析)を行うため、型宣言をインストールすることをお勧めします。
@dlebrecht DefinitelyTypedフォークでタイプスクリプト関連のバグを報告し、PRをDefinitelyTypedに送信します
Flow
フロータイプチェッカーの定義は、フロータイプのリポジトリで利用できます。
リポジトリから直接ダウンロードするか、フロータイプのCLIを使用してダウンロードできます。
1
2# npm install -g flow-typed
$ flow-typed install -f 0.27 bitcoinjs-lib@2.2.0 # 0.27 for flow version, 2.2.0 for bitcoinjs-lib version
定義は完全で、バージョン2.2.0で最新です。定義は@ runn1ngによって維持されます。
例
以下の例は統合テストとして実装されているため、非常に理解しやすいはずです。それ以外の場合は、プルリクエストを歓迎します。一部の例は、サードパーティのブロックチェーンプロバイダー(3PBP)と(HTTPS経由で)対話します。
- ランダムアドレスを生成する
- SHA256ハッシュからアドレスを生成します
- WIF経由で住所をインポートする
- 2-of-3P2SHマルチシグアドレスを生成します
- SegWitアドレスを生成します
- SegWitP2SHアドレスを生成します
- SegWit3-of-4マルチシグアドレスを生成します
- SegWit 2-of-2P2SHマルチシグアドレスを生成します
- アドレスのトランザクションの取得をサポートします(サードパーティのブロックチェーン)
- Testnetアドレスを生成する
- ライトコインアドレスを生成する
- 1対1のトランザクションを作成する
- 2対2のトランザクションを作成する
- 典型的なトランザクションを作成(および3PBP経由でブロードキャスト)
- OP_RETURN出力を使用してトランザクションを作成(および3PBP経由でブロードキャスト)
- 2-of-4 P2SH(multisig)入力を使用してトランザクションを作成(および3PBP経由でブロードキャスト)
- SegWit P2SH(P2WPKH)入力を使用してトランザクションを作成(および3PBP経由でブロードキャスト)
- SegWit 3-of-4 P2SH(P2WSH(multisig))入力を使用してトランザクションを作成(および3PBP経由でブロードキャスト)
- BIP32 testnet xprivをインポートし、WIFにエクスポートします
- BIP32 xprivをエクスポートしてから、インポートします
- BIP32xpubをエクスポートする
- BIP32、ビットコイン、アカウント0、外部アドレスを作成します
- BIP44、ビットコイン、アカウント0、外部アドレスを作成します
- BIP49、ビットコインテストネット、アカウント0、外部アドレスを作成します
- BIP39を使用してBIP32アドレスを生成する
- アリスが有効期限後に出力を引き換えることができるトランザクションを作成(および3PBPを介してブロードキャスト)
- アリスとボブがいつでも出力を引き換えることができるトランザクションを作成(および3PBP経由でブロードキャスト)
- アリスが有効期限が切れる前に償還を試みるトランザクションを作成します(ただし、3PBP経由でブロードキャストできません)。
- 重複するR値から秘密鍵を回復する
- 親公開鍵からBIP32親秘密鍵を回復し、派生した、強化されていない子秘密鍵を回復します
- シングルキーステルスアドレスを生成する
- シングルキーステルスアドレスを(ランダムに)生成します
- 派生した秘密鍵が漏洩した場合(およびナンスが明らかになった場合)、親の受信者を回復します。
- デュアルキーステルスアドレスを生成する
- デュアルキーステルスアドレスを(ランダムに)生成します
ここにリストされていると思われるユースケースがある場合は、それを要求してください。
BitcoinJSを利用したプロジェクト
- BitAddress
- Blockchain.info
- ブロックトレイル
- ダークウォレット
- DecentralBank
- Dogechain Wallet
- EI8HTウォレット
- GreenAddress
- Helperbit
- メリスウォレット
- ロボコイン
- スカイフックATM
- CoinbaseMultisigツール
貢献
プルリクエストは常に受け付けていますが、コーディングスタイル、テスト駆動開発、コミットメッセージに関しては特定の基準に準拠しています。
些細な修正を節約するために貢献するときは、これらを遵守するために最善を尽くしてください。
Running the test suite
1
2npm test
npm run-script coverage
ライブラリを補完する
- BIP21 -ABIP21互換のURLエンコードライブラリ
- BIP38-パスフレーズで保護された秘密鍵
- BIP39-決定論的キーのニーモニック生成
- BIP32-Utils-BIP32を操作するためのユーティリティのセット
- BIP66-厳密なDER署名のデコード
- BIP68-相対ロック時エンコーディングライブラリ
- BIP69-トランザクションの入力と出力の辞書式索引付け
- Base58- Base58エンコーディング/デコーディング
- Base58チェック-Base58チェックエンコーディング/デコーディング
- Bech32 -BIP173準拠のBech32エンコーディングライブラリ
- coinselect -bitcoinjs-lib用の料金最適化トランザクション入力選択モジュール。
- merkle- lib-マークルルートとツリーの計算のためのパフォーマンスを意識したライブラリ。
- minimumdata-ビットコインポリシーをチェックするモジュール:SCRIPT_VERIFY_MINIMALDATA