Skip to content

TypeScript module to pegin Bitcoin into Liquid Bitcoin in the browser

License

Notifications You must be signed in to change notification settings

tdex-network/pegin

Repository files navigation

Pegin

TypeScript module to pegin Bitcoin into Liquid Bitcoin in the browser

Usage

Install from npm

npm install --save pegin
# or with yarn
yarn add pegin

Use in your JavaScript or TypeScript project, works in the browser!

import ElementsPegin from 'pegin';

const peginModule = new ElementsPegin(
  await ElementsPegin.withGoElements(),
  await ElementsPegin.withLibwally(),
  // Optionals, defaults are dynfed is off, mainnet and hardcoded fedpeg script
  ElementsPegin.withDynamicFederation(false),
  ElementsPegin.withMainnet(),
  ElementsPegin.withFederationScript('my_Fed_Peg_Script_XXXYYYXXX')
);

const address = await peginModule.getMainchainAddress(
  '0014efcee7e291eb23654650b3eb950fca21d01ee37e' // Liquid script
);

console.log(address); // Bitcoin address

Development

Compile wasm wrappers

git submodule update --init --recursive

Build Go Elements and Libwally to WASM

make build

Test

npm test

Build the TS lib

npm run build

Project

  • The Typescript lib entrypoint is src/index.ts.
  • resources/wallycore.js is the compiled WebAssembly lib from LibwallyCore build using resources/Dockerfile.libwally.
  • resources/wasm_exec.js is the WebAssembly runner for Golang.
  • elements.wasm is compiled from wrappers in main.go using resources/Dockerfile.goelements.
  • elements.js is the JavasScript glue with the base64 encoded wasm file packaged in the npm module.

License

Distributed under the MIT License. See LICENSE for more information.

About

TypeScript module to pegin Bitcoin into Liquid Bitcoin in the browser

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published