Замечательный модуль сообщества

BitcoinJS (bitcoinjs-lib)

Статус сборки НПМ совет для следующей фиксации

js-стандартный стиль

Библиотека Bitcoin на чистом JavaScript для node.js и браузеров. Предполагается, что ее используют более 15 миллионов пользователей кошельков, и она является основой почти всех веб-кошельков Bitcoin, работающих сегодня.

Характеристики

  • Clean : чистый JavaScript, лаконичный код, легко читаемый.
  • Tested : охват> 90%, сторонние интеграционные тесты.
  • Careful : процесс утверждения небольших целенаправленных запросов на вытягивание двумя людьми.
  • Compatible : работает на Node.js и во всех современных браузерах.
  • Powerful : поддержка расширенных функций, таких как мульти-подпись, HD-кошельки.
  • Secure : надежная генерация случайных чисел, выпуски с подписью PGP, проверенные разработчики.
  • Principled : нет поддержки браузеров с хреновым ГСЧ (IE <11)
  • Standardized : стиль кодирования сообщества узлов, Browserify, stdlib узла и буферы.
  • Fast : оптимизированный код, для повышения производительности использует типизированные массивы вместо массивов байтов.
  • Experiment-friendly : Bitcoin Mainnet и Testnet поддержки.
  • Altcoin-ready : возможность работы с криптовалютами, полученными из биткойнов (такими как Dogecoin).

Следует ли мне использовать это в производстве?

Если вы думаете об использовании основной ветки этой библиотеки в производстве, остановите .Master нестабильно; это наша ветка разработки, и только выпуски с тегами могут быть классифицированы как стабильные .

Установка

1
npm install bitcoinjs-lib

Настроить

Node.js

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

Browser

Если вы знакомы с тем, как использовать browserify, проигнорируйте это и продолжайте в обычном режиме. Эти шаги носят рекомендательный характер и могут не подходить для вашего приложения.

Предполагается, что Browserify установлен для этих шагов.

Для вашего проекта создайте файл 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 }

Теперь, чтобы скомпилировать для браузера:

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

Теперь вы можете поместить <script src="app.js" /> на свою веб-страницу, используя foo.myFunction для создания нового закрытого ключа Биткойн.

ПРИМЕЧАНИЕ : Если вы уберете javascript, вы должны исключить следующие имена переменных из-под искажения: BigInteger , ECPair , Point . Это из-за того, что в typeforce используется тип -утиное имя- функция .

Пример:

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

Примечание: Эта библиотека треков Node LTS есть, если вам необходимо строгое ES5, использовать --transform babelify в сочетании с browserify шагом (используя es2015 предустановка).

ПРИМЕЧАНИЕ . Если вы ожидаете, что эта библиотека будет работать на устройстве iOS 10, убедитесь, что вы используете buffer@5.0.5 или выше.

Typescript or VSCode users

Объявления типов для Typescript доступны для версии библиотеки ^3.0.0 .

1
npm install @types/bitcoinjs-lib

Теперь вы можете использовать bitcoinjs-lib в качестве библиотеки, совместимой с машинописным bitcoinjs-lib .

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

Для VSCode (и других редакторов) пользователям рекомендуется устанавливать объявления типов, поскольку Intellisense использует эту информацию, чтобы помочь вам кодировать (автозаполнение, статический анализ).

Сообщайте обо всех ошибках, связанных с машинописным текстом, на вилке @dlebrecht ОпределенноТипед , отправляйте PR в ОпределенноТипед

Flow

Определения для проверки типов Flow доступны в репозитории потокового типа.

Вы можете загрузить их прямо из репозитория или с помощью интерфейса командной строки потокового типа.

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

Определения являются полными и актуальными до версии 2.2.0. Определения поддерживаются @ runn1ng .

Примеры

Приведенные ниже примеры реализованы как интеграционные тесты, они должны быть очень простыми для понимания. В противном случае приветствуются запросы на вытягивание. Некоторые примеры взаимодействуют (через HTTPS) со сторонним поставщиком цепочки блоков (3PBP).

Если у вас есть вариант использования, который, по вашему мнению, может быть указан здесь, попросите его !

Проекты с использованием BitcoinJS

Содействие

Мы всегда принимаем запросы на вытягивание, но придерживаемся определенных стандартов в отношении стиля кодирования, разработки через тестирование и сообщений о фиксации.

Пожалуйста, приложите все усилия, чтобы придерживаться их, внося свой вклад, чтобы сэкономить на незначительных исправлениях.

Running the test suite

1 2
npm test npm run-script coverage

Дополнительные библиотеки

  • BIP21 -A Библиотека кодирования URL, совместимая с BIP21
  • BIP38 - закрытые ключи, защищенные паролем
  • BIP39 - Генерация мнемоники для детерминированных ключей
  • BIP32-Utils - Набор утилит для работы с BIP32
  • BIP66 - строгое декодирование подписи DER
  • BIP68 - библиотека относительного кодирования времени блокировки
  • BIP69 - Лексикографическое индексирование входов и выходов транзакций
  • Кодирование / декодирование Base58 -Base58
  • Base58 Check -Base58 проверить кодировку / декодирование
  • Bech32 -A BIP173 совместимая библиотека кодирования Bech32
  • coinselect - оптимизирующий комиссию модуль выбора ввода транзакции для bitcoinjs-lib.
  • merkle-lib - библиотека, ориентированная на производительность, для вычислений корня и дерева Меркла.
  • minimaldata -Модуль для проверки политики биткойнов: SCRIPT_VERIFY_MINIMALDATA

Альтернативы

ЛИЦЕНЗИЯ MIT