xsats / chainabstractionlayer-finance

Bitcoin Finance Library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Chain Abstraction Layer Finance

⚠️ This project is under heavy development. Expect bugs & breaking changes.

Query different blockchains with account management using a single and simple interface.

Dependencies

This repository was built as an extension to the ChainAbstractionLayer maintained by the core contributors of Liquality. It is necessary to include the Client and providers from the @liquality npm packages in order to use providers such as the BitcoinDlcProvider.

Chain Support

Bitcoin:

bitcoin-cfd-provider bitcoin-dlc-provider bitcoin-wallet-provider

Packages

Package Version
@atomicfinance/bitcoin-cfd-provider ChainAbstractionLayer-Finance
@atomicfinance/bitcoin-dlc-provider ChainAbstractionLayer-Finance
@atomicfinance/bitcoin-wallet-provider ChainAbstractionLayer-Finance
@atomicfinance/bitcoin-networks ChainAbstractionLayer-Finance
@atomicfinance/client ChainAbstractionLayer-Finance
@atomicfinance/provider ChainAbstractionLayer-Finance
@atomicfinance/types ChainAbstractionLayer-Finance

DLC Spec Compliance

@atomicfinance/bitcoin-dlc-provider builds on @node-dlc/messaging, @node-dlc/core and cfd-dlc-js and adds wallet support for some parts of the Dlc Specification.

Implemented features:

  • Dlc Offer, Accept, Sign message generation support, including utxo selection and validation
  • Finalize and broadcast Dlc Sign message support
  • Execute and Refund support
  • Mutual Close support
  • HyperbolaPayoutCurve payout generation support
  • DigitDecompositionEventDescriptor support
  • ContractInfo V0 and V1 support
  • ContractDescriptorV1 support

Missing features:

  • PolynomialPayoutCurve payout generation support
  • EnumEventDescriptor support
  • ContractInfoV1 support
  • ContractDescriptorV0 support

Usage

import { Client } from '@liquality/bundle'
import BitcoinNetworks from '@liquality/bitcoin-networks'
import BitcoinRpcProvider from '@liquality/bitcoin-rpc-provider'
import BitcoinJsWalletProvider from '@liquality/bitcoin-js-wallet-provider'

import { Client as FinanceClient } from '@atomicfinance/bundle'
import BitcoinCfdProvider from '@atomicfinance/bitcoin-cfd-provider'
import BitcoinDlcProvider from '@atomicfinance/bitcoin-dlc-provider'
import BitcoinWalletProvider from '@atomicfinance/bitcoin-wallet-provider'

const network = BitcoinNetworks.bitcoin_testnet

const bitcoin = new Client()
const bitcoinFinance = new FinanceClient(bitcoin);
bitcoin.finance = bitcoinFinance
bitcoin.addProvider(new BitcoinRpcProvider('https://liquality.io/bitcointestnetrpc/', 'bitcoin', 'local321'))
bitcoin.addProvider(new BitcoinJsWalletProvider(network, '_insert_mnemonic_', 'bech32'))
bitcoin.finance.addProvider(new BitcoinCfdProvider(network));
bitcoin.finance.addProvider(new BitcoinDlcProvider(network));
bitcoin.finance.addProvider(new BitcoinWalletProvider(network));

const offerMessage = await alice.dlc.createDlcOffer(...)

Development

yarn install
yarn bootstrap
yarn watch

Production

yarn build

About

Bitcoin Finance Library

License:GNU General Public License v3.0


Languages

Language:TypeScript 98.7%Language:JavaScript 1.3%