Skip to content

Commit a06082e

Browse files
committed
💥 breaking: isolate into standalone project
Migrate the bitcoin-related dependencies from `chainify` and create a unified `bitcoin-abstraction-layer` project
1 parent 0363497 commit a06082e

File tree

84 files changed

+5503
-958
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+5503
-958
lines changed
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
'@atomicfinance/bitcoin-cfd-provider': major
3+
'@atomicfinance/bitcoin-dlc-provider': major
4+
'@atomicfinance/bitcoin-networks': major
5+
'@atomicfinance/bitcoin-wallet-provider': major
6+
'@atomicfinance/client': major
7+
'@atomicfinance/provider': major
8+
'@atomicfinance/types': major
9+
'@atomicfinance/bitcoin-esplora-api-provider': major
10+
'@atomicfinance/bitcoin-esplora-batch-api-provider': major
11+
'@atomicfinance/bitcoin-js-wallet-provider': major
12+
'@atomicfinance/bitcoin-utils': major
13+
'@atomicfinance/crypto': major
14+
'@atomicfinance/errors': major
15+
'@atomicfinance/node-provider': major
16+
'@atomicfinance/utils': major
17+
---
18+
19+
Create unified standalone `bitcoin-abstraction-layer` package

‎.gitignore

-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616

1717
.DS_Store
1818

19-
/packages/**/lib/*.d.ts
20-
/packages/**/lib/models/*.d.ts
21-
/packages/**/lib/utils/*.d.ts
2219

2320
/packages/**/lib/*.js
2421
/packages/**/lib/models/*.js

‎README.md

+31-24
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Chainify Finance
1+
# Bitcoin Abstraction Layer
22

33
> :warning: This project is under heavy development. Expect bugs & breaking changes.
44
55
Query different blockchains with account management using a single and simple interface.
66

77
## Dependencies
88

9-
This repository was built as an extension to the [Chainify](https://github.com/liquality/chainify) maintained by the core contributors of [Liquality](https://liquality.io). It is necessary to include the `Client` and `providers` from the `@liquality` npm packages in order to use providers such as the `BitcoinDlcProvider`.
9+
This repository is a standalone project based off of [Chainify](https://github.com/liquality/chainify), with heavy modifications to the core Bitcoin wallet libaries. There are no dependencies on the upstream project.
1010

1111
## Chain Support
1212

@@ -20,13 +20,22 @@ This repository was built as an extension to the [Chainify](https://github.com/l
2020

2121
|Package|Version|
2222
|---|---|
23-
|[@atomicfinance/bitcoin-cfd-provider](./packages/bitcoin-cfd-provider)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/bitcoin-cfd-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-cfd-provider)|
24-
|[@atomicfinance/bitcoin-dlc-provider](./packages/bitcoin-dlc-provider)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/bitcoin-dlc-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-dlc-provider)|
25-
|[@atomicfinance/bitcoin-wallet-provider](./packages/bitcoin-wallet-provider)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/bitcoin-wallet-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-wallet-provider)|
26-
|[@atomicfinance/bitcoin-networks](./packages/bitcoin-networks)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/bitcoin-networks.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-networks)|
27-
|[@atomicfinance/client](./packages/client)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/client.svg)](https://npmjs.com/package/@atomicfinance/client)|
28-
|[@atomicfinance/provider](./packages/provider)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/provider.svg)](https://npmjs.com/package/@atomicfinance/provider)
29-
|[@atomicfinance/types](./packages/types)|[![Chainify-Finance](https://img.shields.io/npm/v/@atomicfinance/types.svg)](https://npmjs.com/package/@atomicfinance/types)
23+
|[@atomicfinance/bitcoin-cfd-provider](./packages/bitcoin-cfd-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-cfd-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-cfd-provider)|
24+
|[@atomicfinance/bitcoin-dlc-provider](./packages/bitcoin-dlc-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-dlc-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-dlc-provider)|
25+
|[@atomicfinance/bitcoin-esplora-api-provider](./packages/bitcoin-esplora-api-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-esplora-api-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-esplora-api-provider)
26+
|[@atomicfinance/bitcoin-esplora-batch-api-provider](./packages/bitcoin-esplora-batch-api-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-esplora-batch-api-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-esplora-batch-api-provider)
27+
|[@atomicfinance/bitcoin-js-wallet-provider](./packages/bitcoin-js-wallet-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-js-wallet-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-js-wallet-provider)
28+
|[@atomicfinance/bitcoin-utils](./packages/bitcoin-utils)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-utils.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-utils)
29+
|[@atomicfinance/bitcoin-wallet-provider](./packages/bitcoin-wallet-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-wallet-provider.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-wallet-provider)|
30+
|[@atomicfinance/bitcoin-networks](./packages/bitcoin-networks)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/bitcoin-networks.svg)](https://npmjs.com/package/@atomicfinance/bitcoin-networks)|
31+
|[@atomicfinance/client](./packages/client)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/client.svg)](https://npmjs.com/package/@atomicfinance/client)|
32+
|[@atomicfinance/provider](./packages/provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/provider.svg)](https://npmjs.com/package/@atomicfinance/provider)
33+
|[@atomicfinance/types](./packages/types)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/types.svg)](https://npmjs.com/package/@atomicfinance/types)
34+
|[@atomicfinance/utils](./packages/utils)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/utils.svg)](https://npmjs.com/package/@atomicfinance/utils)
35+
|[@atomicfinance/crypto](./packages/crypto)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/crypto.svg)](https://npmjs.com/package/@atomicfinance/crypto)
36+
|[@atomicfinance/errors](./packages/errors)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/errors.svg)](https://npmjs.com/package/@atomicfinance/errors)
37+
|[@atomicfinance/node-provider](./packages/node-provider)|[![Bitcoin-Abstraction-Layer](https://img.shields.io/npm/v/@atomicfinance/node-provider.svg)](https://npmjs.com/package/@atomicfinance/node-provider)
38+
3039

3140
## DLC Spec Compliance
3241

@@ -50,28 +59,26 @@ Missing features:
5059

5160
## Usage
5261

53-
```javascript
54-
55-
import { Client } from '@liquality/bundle'
56-
import BitcoinNetworks from '@liquality/bitcoin-networks'
57-
import BitcoinRpcProvider from '@liquality/bitcoin-rpc-provider'
58-
import BitcoinJsWalletProvider from '@liquality/bitcoin-js-wallet-provider'
59-
60-
import { Client as FinanceClient } from '@atomicfinance/bundle'
62+
```typescript
63+
import Client from '@atomicfinance/client'
6164
import BitcoinCfdProvider from '@atomicfinance/bitcoin-cfd-provider'
6265
import BitcoinDlcProvider from '@atomicfinance/bitcoin-dlc-provider'
6366
import BitcoinWalletProvider from '@atomicfinance/bitcoin-wallet-provider'
67+
import BitcoinJsWalletProvider from '@atomicfinance/bitcoin-js-wallet-provider'
68+
import BitcoinNetworks from '@atomicfinance/bitcoin-networks'
6469

6570
const network = BitcoinNetworks.bitcoin_testnet
6671

6772
const bitcoin = new Client()
68-
const bitcoinFinance = new FinanceClient(bitcoin);
69-
bitcoin.finance = bitcoinFinance
70-
bitcoin.addProvider(new BitcoinRpcProvider('https://liquality.io/bitcointestnetrpc/', 'bitcoin', 'local321'))
71-
bitcoin.addProvider(new BitcoinJsWalletProvider(network, '_insert_mnemonic_', 'bech32'))
72-
bitcoin.finance.addProvider(new BitcoinCfdProvider(network));
73-
bitcoin.finance.addProvider(new BitcoinDlcProvider(network));
74-
bitcoin.finance.addProvider(new BitcoinWalletProvider(network));
73+
bitcoin.addProvider(new BitcoinJsWalletProvider({
74+
network,
75+
mnemonic: 'mnemonic_here',
76+
baseDerivationPath: `m/84'/${network.coinType}'/0'`,
77+
addressType: 'bech32',
78+
}))
79+
bitcoin.addProvider(new BitcoinCfdProvider(network));
80+
bitcoin.addProvider(new BitcoinDlcProvider(network));
81+
bitcoin.addProvider(new BitcoinWalletProvider(network));
7582

7683
const offerMessage = await alice.dlc.createDlcOffer(...)
7784
```

‎package.json

+4-9
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,13 @@
66
],
77
"devDependencies": {
88
"@changesets/cli": "^2.22.0",
9-
"@liquality/bitcoin-esplora-api-provider": "^1.4.4",
10-
"@liquality/bitcoin-js-wallet-provider": "^1.4.4",
11-
"@liquality/bitcoin-networks": "^1.4.4",
129
"@liquality/bitcoin-node-wallet-provider": "^1.4.4",
1310
"@liquality/bitcoin-rpc-provider": "^1.4.4",
14-
"@liquality/bitcoin-utils": "^1.4.4",
15-
"@liquality/client": "^1.4.4",
16-
"@liquality/crypto": "^1.4.4",
17-
"@liquality/errors": "^1.4.4",
18-
"@liquality/utils": "^1.4.4",
1911
"@node-dlc/core": "0.18.3",
2012
"@node-dlc/messaging": "0.18.3",
2113
"@swc/cli": "^0.1.57",
2214
"@swc/core": "^1.2.172",
15+
"@swc/register": "^0.1.10",
2316
"@types/chai": "^4.2.12",
2417
"@types/chai-as-promised": "^7.1.4",
2518
"@types/mocha": "^8.0.3",
@@ -64,7 +57,9 @@
6457
"lint": "turbo run lint",
6558
"lint:fix": "turbo run lint:fix",
6659
"build": "turbo run build",
67-
"test": "nyc --reporter=text --reporter=lcov cross-env NODE_ENV=test mocha --parallel",
60+
"test": "yarn run test:unit && yarn run test:integration",
61+
"test:unit": "turbo run test",
62+
"test:integration": "nyc --reporter=text --reporter=lcov cross-env NODE_ENV=test mocha --parallel",
6863
"prepublishOnly": "yarn build",
6964
"changeset": "changeset",
7065
"version": "yarn changeset version",

‎packages/bitcoin-cfd-provider/lib/BitcoinCfdProvider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ import {
139139
VerifySignRequest,
140140
VerifySignResponse,
141141
} from '@atomicfinance/types';
142-
import { sleep } from '@liquality/utils';
142+
import { sleep } from '@atomicfinance/utils';
143143

144144
export default class BitcoinCfdProvider
145145
extends Provider

‎packages/bitcoin-cfd-provider/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"dependencies": {
1818
"@atomicfinance/provider": "^2.5.1",
1919
"@atomicfinance/types": "^2.5.1",
20-
"@liquality/utils": "1.1.5",
20+
"@atomicfinance/utils": "^2.5.1",
2121
"lodash": "^4.17.20"
2222
},
2323
"devDependencies": {

‎packages/bitcoin-dlc-provider/lib/BitcoinDlcProvider.ts

+18-14
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
import { chainHashFromNetwork } from '@atomicfinance/bitcoin-networks';
1+
import {
2+
BitcoinNetwork,
3+
chainHashFromNetwork,
4+
} from '@atomicfinance/bitcoin-networks';
25
import Provider from '@atomicfinance/provider';
36
import {
47
AdaptorPair,
8+
Address,
59
AddSignaturesToRefundTxRequest,
610
AddSignaturesToRefundTxResponse,
711
AddSignatureToFundTransactionRequest,
812
AddSignatureToFundTransactionResponse,
13+
bitcoin,
914
CalculateEcSignatureRequest,
1015
CreateCetAdaptorSignatureRequest,
1116
CreateCetAdaptorSignatureResponse,
@@ -44,9 +49,7 @@ import {
4449
VerifyRefundTxSignatureResponse,
4550
VerifySignatureRequest,
4651
} from '@atomicfinance/types';
47-
import { BitcoinNetwork } from '@liquality/bitcoin-networks';
48-
import { Address, bitcoin } from '@liquality/types';
49-
import { sleep } from '@liquality/utils';
52+
import { sleep } from '@atomicfinance/utils';
5053
import {
5154
DualClosingTxFinalizer,
5255
DualFundingTxFinalizer,
@@ -647,9 +650,9 @@ export default class BitcoinDlcProvider
647650
network,
648651
);
649652

650-
const {
651-
derivationPath,
652-
} = await this.client.financewallet.quickFindAddress([fundingAddress]);
653+
const { derivationPath } = await this.client.wallet.findAddress([
654+
fundingAddress,
655+
]);
653656

654657
const fundPrivateKeyPair = await this.getMethod('keyPair')(derivationPath);
655658
const fundPrivateKey = Buffer.from(fundPrivateKeyPair.__D).toString('hex');
@@ -1737,11 +1740,11 @@ Payout Group not found',
17371740
network,
17381741
);
17391742

1740-
let walletAddress: Address = await this.client.financewallet.quickFindAddress(
1741-
[offerFundingAddress],
1742-
);
1743+
let walletAddress: Address = await this.client.wallet.findAddress([
1744+
offerFundingAddress,
1745+
]);
17431746
if (walletAddress) return true;
1744-
walletAddress = await this.client.financewallet.quickFindAddress([
1747+
walletAddress = await this.client.wallet.findAddress([
17451748
acceptFundingAddress,
17461749
]);
17471750
if (walletAddress) return false;
@@ -2950,9 +2953,9 @@ Payout Group not found',
29502953
let derivationPath: string;
29512954

29522955
if (findDerivationPath) {
2953-
const inputAddress: Address = await this.client.financewallet.quickFindAddress(
2954-
[_address],
2955-
);
2956+
const inputAddress: Address = await this.client.wallet.findAddress([
2957+
_address,
2958+
]);
29562959
if (inputAddress) {
29572960
derivationPath = inputAddress.derivationPath;
29582961
}
@@ -2992,6 +2995,7 @@ Payout Group not found',
29922995
);
29932996
}
29942997
}
2998+
29952999
const tx = Tx.decode(StreamReader.fromHex(txRaw));
29963000

29973001
fundingInput.prevTx = tx;

‎packages/bitcoin-dlc-provider/package.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,10 @@
1616
},
1717
"dependencies": {
1818
"@atomicfinance/bitcoin-networks": "^2.5.1",
19+
"@atomicfinance/bitcoin-utils": "2.5.1",
1920
"@atomicfinance/provider": "^2.5.1",
2021
"@atomicfinance/types": "^2.5.1",
21-
"@liquality/bitcoin-utils": "1.1.5",
22-
"@liquality/provider": "1.1.5",
23-
"@liquality/types": "1.1.5",
24-
"@liquality/utils": "1.1.5",
22+
"@atomicfinance/utils": "^2.5.1",
2523
"@node-dlc/core": "0.18.3",
2624
"@node-dlc/messaging": "0.18.3",
2725
"@node-lightning/bitcoin": "0.26.1",

0 commit comments

Comments
 (0)