Module communautaire génial

BitcoinJS (bitcoinjs-lib)

Statut de construction MNP astuce pour le prochain commit

style standard js

La bibliothèque Bitcoin JavaScript pure pour node.js et les navigateurs. On estime qu'elle est 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 à 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 multi-sig et HD.
  • Secure: Forte génération de nombres aléatoires, versions signées PGP, développeurs de confiance.
  • Principled: Pas de support pour les navigateurs avec du RNG merdique (IE < 11)
  • Standardized: Style de codage de la communauté Node, Browserify, stdlib et Buffers de Node.
  • Fast: Code optimisé, utilise des tableaux typés au lieu de tableaux d'octets pour les performances.
  • Adapté aux expériences : prise en charge de Bitcoin Mainnet et Testnet.
  • Prêt pour 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, arrêtez . 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

Installation

Node.js

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

Browser

Si vous savez utiliser Browserify, ignorez ceci 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 insérer <script src="app.js" />votre page Web en utilisant foo.myFunctionpour créer une nouvelle clé privée Bitcoin.

REMARQUE : si vous laidez le javascript, vous devez exclure les noms de variables suivants d'être mutilés : BigInteger, ECPair, Point. Cela est dû au nom de fonction-duck-typing 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'ES5 strict, utilisez --transform babelify-la conjointement avec votre browserifyétape (à l'aide d'un es2015préréglage).

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 version ultérieure.

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 désormais l'utiliser bitcoinjs-libcomme bibliothèque compatible TypeScript.

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 (auto-complétion, analyse statique).

Signalez tout bug lié à la dactylographie sur @dlebrecht DefinitelyTyped fork , soumettez les PR à DefinitelyTyped

Flow

Les définitions pour Flow typechecker sont disponibles dans le référentiel typé flow.

Vous pouvez soit les télécharger directement depuis le dépôt, 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 demandes d'extraction sont appréciées. 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 d'extraction, 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 afin d'économiser sur des corrections triviales.

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 strict de la signature DER
  • BIP68 - Bibliothèque de codage à temps de verrouillage relatif
  • BIP69 - Indexation lexicographique des entrées et sorties de transactions
  • Base58 - Encodage/décodage Base58
  • Base58 Check - Encodage/décodage de vérification Base58
  • Bech32 - Une 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 racines et d'arbres Merkle.
  • minimaldata - Un module pour vérifier la politique Bitcoin : SCRIPT_VERIFY_MINIMALDATA

Alternatives

LICENCEMIT _