Fantastico modulo comunitario

BitcoinJS (bitcoinjs-lib)

Stato build NPM suggerimento per il prossimo commit

js-standard di stile

La pura libreria Bitcoin JavaScript per node.js e browser, stimata in uso da oltre 15 milioni di utenti di portafogli ed è la spina dorsale di quasi tutti i portafogli Web Bitcoin in produzione oggi.

Caratteristiche

  • Clean : JavaScript puro, codice conciso, facile da leggere.
  • Tested : copertura> 90%, test di integrazione di terze parti.
  • Careful : processo di approvazione per due persone per richieste pull minime e mirate.
  • Compatible : funziona su Node.js e su tutti i browser moderni.
  • Powerful : supporto per funzionalità avanzate, come multi-sig, portafogli HD.
  • Secure : forte generazione di numeri casuali, versioni firmate PGP, sviluppatori fidati.
  • Principled : nessun supporto per i browser con merda RNG (IE <11)
  • Standardized : stile di codifica della community di nodi, Browserify, Node's stdlib e buffer.
  • Fast : codice ottimizzato, utilizza matrici tipizzate anziché matrici di byte per le prestazioni.
  • Experiment-friendly prova di esperimento: supporto Bitcoin Mainnet e Testnet.
  • Altcoin-ready : in grado di lavorare con criptovalute derivate da bitcoin (come Dogecoin).

Dovrei usarlo in produzione?

Se stai pensando di utilizzare il ramo master di questa libreria in produzione, fermati , il Master non è stabile, è il nostro ramo di sviluppo e solo le versioni taggate possono essere classificate come stabili .

Installazione

1
npm install bitcoinjs-lib

Impostare

Node.js

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

Browser

Se hai familiarità con l'uso di browserify, ignoralo e procedi normalmente. Questi passaggi sono solo consultivi e potrebbero non essere adatti alla tua applicazione.

Si presuppone che Browserify sia installato per questi passaggi.

Per il tuo progetto, crea un file 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 }

Ora, per compilare per il browser:

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

Ora puoi inserire <script src="app.js" /> nella tua pagina web, usando foo.myFunction per creare una nuova chiave privata Bitcoin.

NOTA : se si annulla il javascript, è necessario escludere i seguenti nomi di variabili dall'essere alterati: BigInteger , ECPair , Point . Questo a causa della funzione-name-duck-typing utilizzata in typeforce .

Esempio:

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

NOTA : questa libreria tiene traccia delle funzioni del nodo LTS, se hai bisogno di ES5 rigoroso, usa --transform babelify insieme al tuo passaggio browserify (usando un preset es2015 ).

NOTA : se si prevede che questa libreria venga eseguita su un dispositivo iOS 10, assicurarsi di utilizzare buffer@5.0.5 o versione successiva.

Typescript or VSCode users

Le dichiarazioni di tipo per Typescript sono disponibili per la versione ^3.0.0 della libreria.

1
npm install @types/bitcoinjs-lib

Ora puoi usare bitcoinjs-lib come libreria conforme a dattiloscritto.

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

Per VSCode (e altri editor), si consiglia agli utenti di installare le dichiarazioni di tipo, poiché Intellisense utilizza tali informazioni per facilitare la codifica (completamento automatico, analisi statica).

Segnala eventuali bug relativi ai dattiloscritti sul fork @dlebrecht DefinitelyTyped , invia i PR a DefinitelyTyped

Flow

Le definizioni per il typechecker Flow sono disponibili nel repository tipizzato flow.

È possibile scaricarli direttamente dal repository o con la CLI a flusso tipizzato

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

Le definizioni sono complete e aggiornate con la versione 2.2.0 Le definizioni sono gestite da @ runn1ng .

Esempi

Gli esempi seguenti sono implementati come test di integrazione, dovrebbero essere molto facili da capire, altrimenti sono apprezzate le richieste pull. Alcuni esempi interagiscono (tramite HTTPS) con un provider Blockchain di terze parti (3PBP).

Se hai un caso d'uso che ritieni possa essere elencato qui, ti preghiamo di richiederlo !

Progetti che utilizzano BitcoinJS

contribuire

Accettiamo sempre richieste pull, ma aderiamo a standard specifici per quanto riguarda lo stile di codifica, lo sviluppo guidato dai test e il commit dei messaggi.

Si prega di fare del proprio meglio per aderire a questi quando si contribuisce a risparmiare correzioni banali.

Running the test suite

1 2
npm test npm run-script coverage

Librerie complementari

  • BIP21 -A Libreria di codifica URL compatibile BIP21
  • BIP38 - Chiavi private protette da frase
  • BIP39 - Generazione nememonica per chiavi deterministiche
  • BIP32-Utils -Un set di utilità per lavorare con BIP32
  • BIP66 - Decodifica rigorosa della firma DER
  • BIP68 -La libreria di codifica relativa al tempo di blocco
  • BIP69 -Indicizzazione lessicografica degli input e degli output delle transazioni
  • Base58 -Base58 codifica / decodifica
  • Base58 Check -Base58 controlla codifica / decodifica
  • Bech32 -A Libreria di codifica Bech32 conforme a BIP173
  • coinselect -Un modulo di selezione dell'input di transazione che ottimizza le commissioni per bitcoinjs-lib.
  • merkle-lib -Una libreria attenta alle prestazioni per i calcoli della radice e dell'albero di merkle.
  • minimaldata -Un modulo per controllare la politica bitcoin: SCRIPT_VERIFY_MINIMALDATA

alternative

MIT DI LICENZA