Module communautaire génial

BitcoinJS (bitcoinjs-lib)

État de la construction NMP conseil pour le prochain commit

js-standard-style

La bibliothèque Bitcoin JavaScript pure pour node.js et les navigateurs. Elle est estimée être utilisée par plus de 15 millions d'utilisateurs de portefeuilles et constitue l'épine dorsale de presque tous les portefeuilles Web Bitcoin en production aujourd'hui.

Caractéristiques

  • Clean: JavaScript pur, code concis, facile à lire.
  • Tested: Couverture > 90%, tests d'intégration tiers.
  • Careful: Processus d'approbation par deux personnes pour les petites demandes d'extraction ciblées.
  • Compatible: Fonctionne sur Node.js et tous les navigateurs modernes.
  • Powerful: Prise en charge de fonctionnalités avancées, telles que les portefeuilles HD multi-signatures.
  • Secure: Génération de nombres aléatoires forts, versions signées PGP, développeurs de confiance.
  • Principled: Pas de support pour les navigateurs avec Crap RNG (IE <11)
  • Standardized: Style de codage de la communauté Node, Browserify, stdlib de Node et Buffers.
  • Fast: code optimisé, utilise des tableaux typés au lieu de tableaux d'octets pour les performances.
  • Convivial pour les expériences : prise en charge de Bitcoin Mainnet et Testnet.
  • Prêt pour l'Altcoin : capable de fonctionner avec des crypto-monnaies dérivées du bitcoin (telles que Dogecoin).

Dois-je l'utiliser en production ?

Si vous envisagez d'utiliser la branche master de cette bibliothèque en production, stop .Master n'est pas stable ; c'est notre branche de développement, et seules les versions étiquetées peuvent être classées comme stables .

Installation

1
npm install bitcoinjs-lib

Installer

Node.js

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

Browser

Si vous savez comment utiliser browserify, ignorez cela et procédez normalement. Ces étapes sont uniquement indicatives et peuvent ne pas convenir à votre application.

Browserify est supposé être installé pour ces étapes.

Pour votre projet, créez un index.jsfichier

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 }

Maintenant, pour compiler pour le navigateur :

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

Vous pouvez maintenant mettre <script src="app.js" />dans votre page Web, en utilisant foo.myFunctionpour créer une nouvelle clé privée Bitcoin.

REMARQUE : Le JavaScript uglify le Si vous, vous DEVEZ Les noms de variables suivants de l'exclure l'être mutilé : BigInteger, ECPair, PointCeci en raison du nom de la fonction IS utilisé dans Duck-Typing. Typeforce .

Exemple:

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

REMARQUE : Cette bibliothèque suit les fonctionnalités de Node LTS, si vous avez besoin d'un ES5 strict, utilisez-la --transform babelifyen conjonction avec votre browserifyétape (à l'aide d'un es2015préréglage).

REMARQUE : si vous prévoyez que cette bibliothèque s'exécutera sur un appareil iOS 10, assurez-vous que vous utilisez buffer@5.0.5 ou supérieur.

Typescript or VSCode users

Les déclarations de type pour Typescript sont disponibles pour la version ^3.0.0de la bibliothèque.

1
npm install @types/bitcoinjs-lib

Vous pouvez maintenant l'utiliser bitcoinjs-libcomme une bibliothèque compatible avec le dactylographe.

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

Pour VSCode (et autres éditeurs), il est conseillé aux utilisateurs d'installer les déclarations de type, car Intellisense utilise ces informations pour vous aider à coder (autocomplétion, analyse statique).

Signalez tout bogue lié au dactylographe à @dlebrecht DefinitelyTyped fork , soumettez les PR à DefinitelyTyped

Flow

Les définitions du vérificateur de types de flux sont disponibles dans le référentiel de types de flux.

Vous pouvez soit les télécharger directement depuis le repo, soit avec la CLI typée flux

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

Les définitions sont complètes et à jour avec la version 2.2.0. Les définitions sont maintenues par @runn1ng .

Exemples

Les exemples ci-dessous sont implémentés en tant que tests d'intégration, ils doivent être très faciles à comprendre. Sinon, les pull request sont appréciés. Certains exemples interagissent (via HTTPS) avec un fournisseur de blockchain tiers (3PBP).

Si vous avez un cas d'utilisation qui, selon vous, pourrait être répertorié ici, n'hésitez pas à le demander !

Projets utilisant BitcoinJS

Contribuant

Nous acceptons toujours les demandes de tirage, mais nous adhérons à des normes spécifiques en ce qui concerne le style de codage, le développement piloté par les tests et les messages de validation.

Veuillez faire de votre mieux pour les respecter lorsque vous contribuez à économiser sur les corrections insignifiantes.

Running the test suite

1 2
npm test npm run-script coverage

Bibliothèques complémentaires

  • BIP21 -Une bibliothèque d'encodage d'URL compatible BIP21
  • BIP38 - Clés privées protégées par mot de passe
  • BIP39 -Génération mnémonique pour clés déterministes
  • BIP32-Utils - Un ensemble d'utilitaires pour travailler avec BIP32
  • BIP66 -Décodage de signature DER strict
  • BIP68 -Bibliothèque de codage de temps de verrouillage relatif
  • BIP69 - Indexation lexicographique des entrées et sorties de transaction
  • Base58 -Encodage/décodage Base58
  • Base58 Check -Base58 vérifie l'encodage/décodage
  • Bech32 -Bibliothèque d'encodage Bech32 conforme à BIP173
  • coinselect -Un module de sélection d'entrée de transaction optimisant les frais pour bitcoinjs-lib.
  • merkle-lib - Une bibliothèque soucieuse des performances pour les calculs de racine et d'arbre de merkle.
  • minimaldata -Un module pour vérifier la politique bitcoin : SCRIPT_VERIFY_MINIMALDATA

Alternatives

LICENCE MIT