Tolles Community-Modul

BitcoinJS (bitcoinjs-lib)

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

js-standard-style

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.

Eigenschaften

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

Soll ich das in der Produktion verwenden?

Wenn Sie daran denken, den Master-Zweig dieser Bibliothek in der Produktion zu verwenden, stoppen Sie .Master ist nicht stabil, es ist unser Entwicklungszweig, und nur mit Tags versehene Releases können als stable klassifiziert werden .

Installation

1
npm install bitcoinjs-lib

Einrichten

Node.js

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

Browser

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

Es wird davon ausgegangen, dass Browserify für diese Schritte 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 }

Um nun für den Browser zu kompilieren:

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

Sie können jetzt <script src="app.js" />Ihre Webseite eingeben, foo.myFunctionum einen neuen privaten Bitcoin-Schlüssel zu erstellen.

HINWEIS : Das JavaScript hässlich Wenn Sie, MÜSSEN Sie die folgenden Variablennamen vom verstümmelten Wesen ausschließen: BigInteger, ECPair, PointDies wegen des IS-Funktionsnamens, der in Duck-Typing verwendet wird .

Beispiel:

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

HINWEIS : Diese Bibliothek verfolgt Node LTS-Funktionen, wenn Sie strikten ES5 benötigen, verwenden Sie ihn --transform babelifyin Verbindung mit Ihrem browserifySchritt (mit einem es2015Preset).

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 jetzt bitcoinjs-libals typskriptkonforme 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 Code zu helfen (automatische Vervollständigung, statische Analyse).

Melden Sie alle Fehler im Zusammenhang mit Typoskript unter @dlebrecht DefinitelyTyped fork , senden Sie PRs an DefinitelyTyped

Flow

Definitionen für Flow Typechecker sind im Flow- typed Repository verfügbar.

Sie können sie entweder direkt aus dem Repo herunterladen oder mit der Flow-typisierten 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

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

Beispiele

Die folgenden Beispiele sind als Integrationstests implementiert, sie sollten sehr einfach zu verstehen sein. Ansonsten sind Pull-Requests willkommen. Einige Beispiele interagieren (über HTTPS) mit einem 3rd Party Blockchain Provider (3PBP).

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

Projekte mit BitcoinJS

Beitragen

Wir akzeptieren immer Pull-Requests, 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 einzuhalten, wenn Sie dazu beitragen, triviale Korrekturen zu sparen.

Running the test suite

1 2
npm test npm run-script coverage

Ergänzende Bibliotheken

  • BIP21 -Eine BIP21-kompatible URL-Codierungsbibliothek
  • BIP38 -Passwortgeschü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 -Strenge DER-Signatur-Decodierung
  • BIP68 - Relative Lock-Time-Codierungsbibliothek
  • BIP69 -Lexikographische Indexierung von Transaktions-Inputs und -Outputs
  • Base58 -Base58-Kodierung/-Dekodierung
  • Base58 Check -Base58 check Kodierung/Dekodierung
  • Bech32 -Eine BIP173-kompatible Bech32-Kodierungsbibliothek
  • coinselect -Ein gebührenoptimierendes Modul zur Auswahl von Transaktionseingaben für bitcoinjs-lib.
  • merkle-lib -Eine leistungsbewusste Bibliothek für Merkle-Wurzel- und Baumberechnungen.
  • minimaldata -Ein Modul zur Überprüfung der Bitcoin-Richtlinie: SCRIPT_VERIFY_MINIMALDATA

Alternativen

LIZENZ MIT