Потрясающий модуль сообщества

BitcoinJS (bitcoinjs-lib)

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

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

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

Функции

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

Должен ли я использовать это в производстве?

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

Монтаж

1
npm install bitcoinjs-lib

Настраивать

Node.js

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

Browser

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

Для выполнения этих шагов предполагается, что 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библиотеку, совместимую с машинописным текстом.

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

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

Сообщайте о любых ошибках, связанных с машинописным текстом, на форке @dlebrecht DefinitelyTyped , отправляйте PR в DefinitelyTyped.

Flow

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

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

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 — библиотека кодирования URL-адресов, совместимая с BIP21.
  • BIP38 — закрытые ключи, защищенные парольной фразой
  • BIP39 — генерация мнемоники для детерминированных ключей
  • BIP32-Utils — Набор утилит для работы с BIP32.
  • BIP66 — строгое декодирование подписи DER
  • BIP68 — библиотека кодирования относительного времени блокировки.
  • BIP69 — Лексикографическое индексирование входов и выходов транзакций
  • Base58 — кодирование/декодирование Base58.
  • Проверка Base58 — проверка кодирования/декодирования Base58.
  • Bech32 — библиотека кодирования Bech32, совместимая с BIP173.
  • coinselect — модуль выбора ввода транзакций с оптимизацией комиссий для bitcoinjs-lib.
  • merkle-lib — библиотека, ориентированная на производительность, для вычислений корней Меркла и деревьев.
  • минимальные данные — модуль для проверки политики биткойнов: SCRIPT_VERIFY_MINIMALDATA

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

ЛИЦЕНЗИЯ _