素晴らしいコミュニティモジュール

BitcoinJS(bitcoinjs-lib)

ビルドステータスNPM次のコミットのヒント

js-標準スタイル

node.jsおよびブラウザ用の純粋なJavaScriptBitcoinライブラリ。1500万人を超えるウォレットユーザーが使用していると推定されており、現在生産されているほぼすべてのBitcoinWebウォレットのバックボーンです。

特徴

  • Clean :純粋なJavaScript、簡潔なコード、読みやすい。
  • Tested :カバレッジ> 90%、サードパーティの統合テスト。
  • Careful :小規模で焦点を絞ったプルリクエストに対する2人の承認プロセス。
  • Compatible :Node.jsおよびすべての最新のブラウザーで動作します。
  • Powerful :マルチシグ、HDウォレットなどの高度な機能のサポート。
  • Secure :強力なランダム番号の生成、PGP署名付きリリース、信頼できる開発者。
  • Principled :がらくたRNG(IE <11)を備えたブラウザーはサポートされていません
  • Standardized :ノードコミュニティのコーディングスタイル、Browserify、ノードのstdlib、およびバッファ。
  • Fast :最適化されたコード。パフォーマンスのためにバイト配列の代わりに型付き配列を使用します。
  • Experiment-friendly :ビットコインメインネットとテストネットのサポート。
  • Altcoin-ready :ビットコインから派生した暗号通貨(Dogecoinなど)を処理できます。

これを本番環境で使用する必要がありますか?

このライブラリのマスターブランチを本番環境で使用することを検討している場合は、 stop .Masterは安定していません。これは開発ブランチであり、タグ付きリリースのみが安定として分類される場合があります

インストール

1
npm install bitcoinjs-lib

セットアップ

Node.js

1
var bitcoin = require('bitcoinjs-lib')

Browser

browserifyの使用方法に精通している場合は、これを無視して通常どおりに続行してください。これらの手順は助言のみであり、アプリケーションに適していない場合があります。

これらの手順では、 Browserifyがインストールされていることを前提としています。

プロジェクトの場合、 index.jsファイルを作成します

1 2 3 4 5 6 7 8 9 10
let bitcoin = require('bitcoinjs-lib') // your code here function myFunction () { return bitcoin.ECPair.makeRandom().toWIF() } module.exports = { myFunction }

さて、ブラウザ用にコンパイルするには:

1
browserify index.js --standalone foo > app.js

これで、 foo.myFunctionを使用して新しいBitcoin秘密鍵を作成し、 <script src="app.js" />をWebページにfoo.myFunctionできます。

:javascriptを醜くする場合は、次の変数名をECPairから除外する必要があります: BigIntegerECPairPoint 。これは、 ECPairで使用されるfunction-name-duck-typingが原因です。

例:

1
uglifyjs ... --mangle reserved=['BigInteger','ECPair','Point']

:このライブラリはノードLTS機能を追跡します。厳密なES5が必要な場合は、 browserifyステップと組み合わせて--transform babelifyを使用してください( es2015プリセットを使用)。

:このライブラリがiOS 10デバイスで実行されることが予想される場合は、 buffer @ 5.0.5以降を使用していることを確認してください。

Typescript or VSCode users

Typescriptの型宣言は、ライブラリのバージョン^3.0.0で使用できます。

1
npm install @types/bitcoinjs-lib

これで、 bitcoinjs-libをtypescript準拠のライブラリとして使用できます。

1
import { 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を介して)対話します。

ここに記載されていると思われるユースケースがある場合は、お問い合わせください。

BitcoinJSを利用したプロジェクト

貢献

プルリクエストは常に受け付けていますが、コーディングスタイル、テスト主導の開発、コミットメッセージに関しては特定の基準に準拠しています。

些細な修正の節約に貢献するときは、これらを遵守するために最善を尽くしてください。

Running the test suite

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

代替案

ライセンスMIT