Tolles Community-Modul

BitcoinJS (bitcoinjs-lib)

Build-Status NPM Tipp für den nächsten Commit

js-Standard-Stil

Die reine JavaScript-Bitcoin-Bibliothek für node.js und Browser. Wird schätzungsweise von über 15 Millionen Wallet-Benutzern verwendet und ist das Rückgrat für fast alle Bitcoin-Web-Wallets, die heute in Produktion sind.

Merkmale

  • Clean: Reines JavaScript, prägnanter Code, leicht zu lesen.
  • Tested: Abdeckung > 90 %, Integrationstests von Drittanbietern.
  • Careful: Zwei-Personen-Genehmigungsprozess für kleine, gezielte Pull-Anfragen.
  • Compatible: Funktioniert auf Node.js und allen modernen Browsern.
  • Powerful: Unterstützung für erweiterte Funktionen wie Multi-Sig- und HD-Wallets.
  • Secure: Starke Zufallszahlengenerierung, PGP-signierte Veröffentlichungen, vertrauenswürdige Entwickler.
  • Principled: Keine Unterstützung für Browser mit schlechtem RNG (IE < 11)
  • Standardized: Node-Community-Codierungsstil, Browserify, Node's stdlib und Puffer.
  • Fast: Optimierter Code, verwendet aus Leistungsgründen typisierte Arrays anstelle von Byte-Arrays.
  • Experimentierfreundlich: Bitcoin Mainnet- und Testnet-Unterstützung.
  • Altcoin-fähig: Kann mit von Bitcoin abgeleiteten Kryptowährungen (wie Dogecoin) arbeiten.

Soll ich das in der Produktion verwenden?

Wenn Sie darüber nachdenken, den Master-Zweig dieser Bibliothek in der Produktion zu verwenden, hören Sie auf . Master ist nicht stabil; es ist unser Entwicklungszweig und nur getaggte Releases können als stabil klassifiziert werden .

Installation

1
npm install bitcoinjs-lib

Aufstellen

Node.js

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

Browser

Wenn Sie mit der Verwendung von browserify vertraut sind, ignorieren Sie dies und fahren Sie normal fort. Diese Schritte dienen nur zur Beratung und sind möglicherweise nicht für Ihre Anwendung geeignet.

Für diese Schritte wird davon ausgegangen, dass Browserify installiert ist.

Erstellen Sie für Ihr Projekt eine index.jsDatei

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 }

Nun zum Kompilieren für den Browser:

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

Sie können nun <script src="app.js" />auf Ihrer Webseite foo.myFunctioneinen neuen privaten Bitcoin-Schlüssel erstellen.

HINWEIS : Wenn Sie das Javascript verfälschen, müssen Sie die folgenden Variablennamen von der Verstümmelung ausschließen: BigInteger, ECPair, Point. Dies liegt an der in typeforce verwendeten function-name-duck-typing .

Beispiel:

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

HINWEIS : Diese Bibliothek verfolgt die Funktionen von Node LTS. Wenn Sie striktes ES5 benötigen, verwenden Sie es --transform babelifyin Verbindung mit Ihrem browserifySchritt (unter Verwendung einer es2015Voreinstellung).

HINWEIS : Wenn Sie erwarten, dass diese Bibliothek auf einem iOS 10-Gerät ausgeführt wird, stellen Sie sicher, dass Sie buffer@5.0.5 oder höher verwenden .

Typescript or VSCode users

Typdeklarationen für Typescript sind für die Version ^3.0.0der Bibliothek verfügbar.

1
npm install @types/bitcoinjs-lib

Sie können es jetzt bitcoinjs-libals TypeScript-kompatible Bibliothek verwenden.

1
import { HDNode, Transaction } from 'bitcoinjs-lib'

Für VSCode (und andere Editoren) wird Benutzern empfohlen, die Typdeklarationen zu installieren, da Intellisense diese Informationen verwendet, um Ihnen beim Codieren zu helfen (automatische Vervollständigung, statische Analyse).

Melden Sie alle Typoskript-bezogenen Fehler unter @dlebrecht DefinitelyTyped fork und senden Sie PRs an DefinitelyTyped

Flow

Definitionen für die Flow-Typprüfung sind im Flow-Typ-Repository verfügbar.

Sie können sie entweder direkt aus dem Repo oder mit der flow-typisierten CLI herunterladen

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

Die Definitionen sind vollständig und auf dem neuesten Stand mit Version 2.2.0. Die Definitionen werden von @runn1ng gepflegt .

Beispiele

Die folgenden Beispiele sind als Integrationstests implementiert und sollten sehr einfach zu verstehen sein. Ansonsten sind Pull-Anfragen willkommen. Einige Beispiele interagieren (über HTTPS) mit einem Drittanbieter-Blockchain-Anbieter (3PBP).

Wenn Sie einen Anwendungsfall haben, der Ihrer Meinung nach hier aufgeführt werden könnte, fragen Sie bitte danach !

Projekte, die BitcoinJS nutzen

Mitwirken

Wir akzeptieren jederzeit Pull-Anfragen, halten uns jedoch an bestimmte Standards in Bezug auf Codierungsstil, testgetriebene Entwicklung und Commit-Nachrichten.

Bitte bemühen Sie sich nach besten Kräften, diese bei Ihren Beiträgen einzuhalten, um triviale Korrekturen zu vermeiden.

Running the test suite

1 2
npm test npm run-script coverage

Ergänzende Bibliotheken

  • BIP21 – Eine BIP21-kompatible URL-Kodierungsbibliothek
  • BIP38 – Passphrase-geschützte private Schlüssel
  • BIP39 – Mnemonische Generierung für deterministische Schlüssel
  • BIP32-Utils – Eine Reihe von Dienstprogrammen für die Arbeit mit BIP32
  • BIP66 – Strikte DER-Signaturdekodierung
  • BIP68 – Relative Lock-Time-Codierungsbibliothek
  • BIP69 – Lexikografische Indexierung von Transaktionseingaben und -ausgaben
  • Base58 – Base58-Kodierung/Dekodierung
  • Base58-Prüfung – Base58-Prüfung der Kodierung/Dekodierung
  • Bech32 – Eine BIP173-kompatible Bech32-Kodierungsbibliothek
  • Coinselect – Ein gebührenoptimierendes Modul zur Auswahl von Transaktionseingaben für bitcoinjs-lib.
  • merkle-lib – Eine leistungsorientierte Bibliothek für Merkle-Wurzel- und Baumberechnungen.
  • minimaldata – Ein Modul zur Überprüfung der Bitcoin-Richtlinie: SCRIPT_VERIFY_MINIMALDATA

Alternativen

LIZENZMIT_ _