Module communautaire génial

BitcoinJS (bitcoinjs-lib)

État de la construction NPM Astuce pour le prochain commit

js-standard-style

La bibliothèque Bitcoin JavaScript pure pour node.js et les navigateurs. Estimée utilisée par plus de 15 millions d'utilisateurs de portefeuilles et est 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 à deux pour les petites demandes de tirage ciblées.
  • Compatible : fonctionne sur Node.js et tous les navigateurs modernes.
  • Powerful : prise en charge de fonctionnalités avancées, telles que le multi-sig, les portefeuilles HD.
  • Secure : génération de nombres aléatoires forte, versions signées PGP, développeurs de confiance.
  • Principled : pas de support pour les navigateurs avec RNG merdique (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.
  • Facilité d' Experiment-friendly : prise en charge de Bitcoin Mainnet et Testnet.
  • Altcoin-ready : Capable de travailler avec des crypto-monnaies dérivées de Bitcoin (telles que Dogecoin).

Dois-je l'utiliser en production?

Si vous envisagez d'utiliser la branche master de cette bibliothèque en production, arrêtez .Master n'est pas stable; c'est notre branche de développement, et seules les versions marqué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-le et procédez normalement. Ces étapes sont à titre indicatif et peuvent ne pas convenir à votre application.

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

Pour votre projet, créez un fichier 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 }

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.myFunction pour créer une nouvelle clé privée Bitcoin.

REMARQUE : Si vous uglify le javascript, vous devez exclure les noms de variables suivants d'être mutilés: BigInteger , ECPair , Point . Cela est dû au type de fonction-nom-canard utilisé dans 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 --transform babelify en conjonction avec votre étape browserify (en utilisant un préréglage es2015 ).

REMARQUE : si vous prévoyez que cette bibliothèque s'exécute 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.0 de la bibliothèque.

1
npm install @types/bitcoinjs-lib

Vous pouvez maintenant utiliser bitcoinjs-lib comme une bibliothèque compatible avec les bitcoinjs-lib .

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

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

Signalez tous les bogues liés au typographie à @dlebrecht DefinitelyTyped fork , soumettez les PR à DefinatelyTyped

Flow

Les définitions du vérificateur de type Flow sont disponibles dans un référentiel de type flux.

Vous pouvez les télécharger directement à partir du référentiel ou avec la CLI de type 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 gérées par @ runn1ng .

Exemples

Les exemples ci-dessous sont implémentés sous forme de tests d'intégration, ils doivent être très faciles à comprendre. Sinon, les pull requests 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, demandez-le !

Projets utilisant BitcoinJS

Contribuant

Nous acceptons toujours les pull requests, 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 y adhérer lorsque vous contribuez à économiser sur des corrections insignifiantes.

Running the test suite

1 2
npm test npm run-script coverage

Compléter les bibliothèques

  • Bibliothèque d' encodage d'URL compatible BIP21 -A BIP21
  • BIP38 - Clés privées protégées par mot de passe
  • BIP39 - Génération mnémonique pour les 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
  • Encodage / décodage Base58 -Base58
  • Base58 Check -Base58 vérifier l'encodage / décodage
  • Bibliothèque de codage Bech32 conforme à Bech32 -A BIP173
  • coinselect -Un module de sélection d'entrée de transaction optimisant les frais pour bitcoinjs-lib.
  • merkle-lib -Une bibliothèque soucieuse de la performance pour les calculs de racine et d'arbre merkle.
  • minimaldata -Un module pour vérifier la politique Bitcoin: SCRIPT_VERIFY_MINIMALDATA

Alternatives

LICENCE MIT