@gobob/bob-sdk 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -4
- package/dist/{electrs.d.ts → esplora.d.ts} +2 -2
- package/dist/{electrs.js → esplora.js} +6 -6
- package/dist/{electrs.js.map → esplora.js.map} +1 -1
- package/dist/gateway.d.ts +30 -0
- package/dist/gateway.js +56 -0
- package/dist/gateway.js.map +1 -0
- package/dist/helpers.d.ts +2 -2
- package/dist/helpers.js +6 -7
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/inscription.d.ts +3 -4
- package/dist/inscription.js +11 -11
- package/dist/inscription.js.map +1 -1
- package/dist/ordinal-api/index.d.ts +10 -1
- package/dist/ordinal-api/index.js +1 -0
- package/dist/ordinal-api/index.js.map +1 -1
- package/dist/ordinals/commit.d.ts +0 -1
- package/dist/ordinals/commit.js +1 -2
- package/dist/ordinals/commit.js.map +1 -1
- package/dist/ordinals/index.js +1 -2
- package/dist/ordinals/index.js.map +1 -1
- package/dist/ordinals/reveal.d.ts +0 -1
- package/dist/ordinals/reveal.js +3 -3
- package/dist/ordinals/reveal.js.map +1 -1
- package/dist/ordinals/signer.d.ts +0 -1
- package/dist/relay.d.ts +4 -4
- package/dist/relay.js +11 -12
- package/dist/relay.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +42 -5
- package/dist/utils.js.map +1 -1
- package/dist/wallet/address.d.ts +2 -0
- package/dist/wallet/address.js +19 -0
- package/dist/wallet/address.js.map +1 -0
- package/dist/wallet/index.d.ts +2 -0
- package/dist/wallet/index.js +19 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/inscriptions.d.ts +4 -0
- package/dist/wallet/inscriptions.js +43 -0
- package/dist/wallet/inscriptions.js.map +1 -0
- package/dist/wallet/utxo.d.ts +23 -0
- package/dist/wallet/utxo.js +91 -0
- package/dist/wallet/utxo.js.map +1 -0
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -7,13 +7,45 @@ The BOB SDK helps you interact with BOB and Bitcoin, including Ordinals, BRC20,
|
|
|
7
7
|
- [Website](https://www.gobob.xyz/)
|
|
8
8
|
- [Docs](https://docs.gobob.xyz/)
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Using the sdk in your project
|
|
11
|
+
Install `@gobob/bob-sdk` with your package manager of choice.
|
|
11
12
|
|
|
12
13
|
```shell
|
|
13
|
-
pnpm i @bob-sdk
|
|
14
|
+
pnpm i @gobob/bob-sdk
|
|
14
15
|
```
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
or
|
|
18
|
+
```shell
|
|
19
|
+
yarn add @gobob/bob-sdk
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
or
|
|
23
|
+
```shell
|
|
24
|
+
npm i @gobob/bob-sdk
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Building BOB sdk
|
|
28
|
+
|
|
29
|
+
### Clone the repository
|
|
30
|
+
Clone the repository and change to the `sdk` subfolder.
|
|
31
|
+
```shell
|
|
32
|
+
git clone git@github.com:bob-collective/bob.git
|
|
33
|
+
cd bob/sdk
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Install dependencies
|
|
37
|
+
We use `pnpm` in the examples below. But the steps below should also work when using `yarn` or `npm` instead.
|
|
38
|
+
|
|
39
|
+
```shell
|
|
40
|
+
pnpm i
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Build
|
|
44
|
+
```shell
|
|
45
|
+
pnpm build
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Test
|
|
17
49
|
|
|
18
50
|
```shell
|
|
19
51
|
pnpm test
|
|
@@ -21,4 +53,18 @@ pnpm test
|
|
|
21
53
|
|
|
22
54
|
## Contributing
|
|
23
55
|
|
|
24
|
-
BOB is an open-source project. We welcome contributions of all sorts. There are many ways to help, from reporting issues, contributing code, and helping us improve our community.
|
|
56
|
+
BOB is an open-source project. We welcome contributions of all sorts. There are many ways to help, from reporting issues, contributing code, and helping us improve our community.
|
|
57
|
+
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
|
|
58
|
+
|
|
59
|
+
1. Set up git so you can [sign your commits](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work) (Alternative link: [GitHub: Signing commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits))
|
|
60
|
+
Unsigned PRs cannot be merged, so do not skip this step.
|
|
61
|
+
2. Fork the Project
|
|
62
|
+
3. Create your Feature Branch (git checkout -b yourname/AmazingFeature)
|
|
63
|
+
4. Commit your Changes (git commit -m 'Add some AmazingFeature')
|
|
64
|
+
5. Push to the Branch (git push origin yourname/AmazingFeature)
|
|
65
|
+
6. Open a Pull Request with a description of feature you are adding
|
|
66
|
+
|
|
67
|
+
If you are searching for a place to start or would like to discuss features, reach out to us:
|
|
68
|
+
|
|
69
|
+
- [Discord](https://discord.com/invite/gobob)
|
|
70
|
+
|
|
@@ -67,7 +67,7 @@ export interface Block {
|
|
|
67
67
|
previousblockhash: string | null;
|
|
68
68
|
mediantime: number;
|
|
69
69
|
}
|
|
70
|
-
export interface
|
|
70
|
+
export interface EsploraClient {
|
|
71
71
|
getLatestHeight(): Promise<number>;
|
|
72
72
|
getBlock(hash: string): Promise<Block>;
|
|
73
73
|
getBlockHash(height: number): Promise<string>;
|
|
@@ -79,7 +79,7 @@ export interface ElectrsClient {
|
|
|
79
79
|
getAddressUtxos(address: string): Promise<Array<UTXO>>;
|
|
80
80
|
broadcastTx(txHex: string): Promise<string>;
|
|
81
81
|
}
|
|
82
|
-
export declare class
|
|
82
|
+
export declare class DefaultEsploraClient implements EsploraClient {
|
|
83
83
|
private basePath;
|
|
84
84
|
constructor(networkOrUrl?: string);
|
|
85
85
|
getLatestHeight(): Promise<number>;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DefaultEsploraClient = exports.REGTEST_ESPLORA_BASE_PATH = exports.TESTNET_ESPLORA_BASE_PATH = exports.MAINNET_ESPLORA_BASE_PATH = void 0;
|
|
4
4
|
exports.MAINNET_ESPLORA_BASE_PATH = "https://btc-mainnet.gobob.xyz";
|
|
5
5
|
exports.TESTNET_ESPLORA_BASE_PATH = "https://btc-testnet.gobob.xyz";
|
|
6
6
|
exports.REGTEST_ESPLORA_BASE_PATH = "http://localhost:3003";
|
|
7
|
-
function
|
|
7
|
+
function encodeEsploraMerkleProof(merkle) {
|
|
8
8
|
return merkle.map(item => Buffer.from(item, "hex").reverse().toString("hex")).join('');
|
|
9
9
|
}
|
|
10
|
-
class
|
|
10
|
+
class DefaultEsploraClient {
|
|
11
11
|
constructor(networkOrUrl = "mainnet") {
|
|
12
12
|
switch (networkOrUrl) {
|
|
13
13
|
case "mainnet":
|
|
@@ -49,7 +49,7 @@ class DefaultElectrsClient {
|
|
|
49
49
|
const response = await this.getJson(`${this.basePath}/tx/${txId}/merkle-proof`);
|
|
50
50
|
return {
|
|
51
51
|
blockHeight: response.block_height,
|
|
52
|
-
merkle:
|
|
52
|
+
merkle: encodeEsploraMerkleProof(response.merkle),
|
|
53
53
|
pos: response.pos,
|
|
54
54
|
};
|
|
55
55
|
}
|
|
@@ -93,5 +93,5 @@ class DefaultElectrsClient {
|
|
|
93
93
|
return await response.text();
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
exports.
|
|
97
|
-
//# sourceMappingURL=
|
|
96
|
+
exports.DefaultEsploraClient = DefaultEsploraClient;
|
|
97
|
+
//# sourceMappingURL=esplora.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"esplora.js","sourceRoot":"","sources":["../src/esplora.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type EvmAddress = string;
|
|
2
|
+
type GatewayQuote = {
|
|
3
|
+
onramp_address: EvmAddress;
|
|
4
|
+
dust_threshold: number;
|
|
5
|
+
satoshis: number;
|
|
6
|
+
fee: number;
|
|
7
|
+
gratuity: string;
|
|
8
|
+
bitcoin_address: string;
|
|
9
|
+
tx_proof_difficulty_factor: number;
|
|
10
|
+
};
|
|
11
|
+
type GatewayOrderResponse = {
|
|
12
|
+
onramp_address: EvmAddress;
|
|
13
|
+
token_address: EvmAddress;
|
|
14
|
+
txid: string;
|
|
15
|
+
status: boolean;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
tokens: string;
|
|
18
|
+
satoshis: number;
|
|
19
|
+
fee: number;
|
|
20
|
+
tx_proof_difficulty_factor: number;
|
|
21
|
+
};
|
|
22
|
+
export declare class GatewayApiClient {
|
|
23
|
+
private baseUrl;
|
|
24
|
+
constructor(baseUrl: string);
|
|
25
|
+
getQuote(address: string, atomicAmount?: number | string): Promise<GatewayQuote>;
|
|
26
|
+
createOrder(contractAddress: string, userAddress: EvmAddress, atomicAmount: number | string): Promise<string>;
|
|
27
|
+
updateOrder(id: string, tx: string): Promise<void>;
|
|
28
|
+
getOrders(userAddress: EvmAddress): Promise<GatewayOrderResponse[]>;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
package/dist/gateway.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GatewayApiClient = void 0;
|
|
4
|
+
class GatewayApiClient {
|
|
5
|
+
constructor(baseUrl) {
|
|
6
|
+
this.baseUrl = baseUrl;
|
|
7
|
+
}
|
|
8
|
+
async getQuote(address, atomicAmount) {
|
|
9
|
+
const response = await fetch(`${this.baseUrl}/quote/${address}/${atomicAmount || ''}`, {
|
|
10
|
+
headers: {
|
|
11
|
+
'Content-Type': 'application/json',
|
|
12
|
+
Accept: 'application/json'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return await response.json();
|
|
16
|
+
}
|
|
17
|
+
async createOrder(contractAddress, userAddress, atomicAmount) {
|
|
18
|
+
const response = await fetch(`${this.baseUrl}/order`, {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: {
|
|
21
|
+
'Content-Type': 'application/json',
|
|
22
|
+
Accept: 'application/json'
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify({ onramp_address: contractAddress, user_address: userAddress, satoshis: atomicAmount })
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error('Failed to create order');
|
|
28
|
+
}
|
|
29
|
+
return await response.json();
|
|
30
|
+
}
|
|
31
|
+
async updateOrder(id, tx) {
|
|
32
|
+
const response = await fetch(`${this.baseUrl}/order/${id}`, {
|
|
33
|
+
method: 'PATCH',
|
|
34
|
+
headers: {
|
|
35
|
+
'Content-Type': 'application/json',
|
|
36
|
+
Accept: 'application/json'
|
|
37
|
+
},
|
|
38
|
+
body: JSON.stringify({ bitcoin_tx: tx })
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error('Failed to update order');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async getOrders(userAddress) {
|
|
45
|
+
const response = await fetch(`${this.baseUrl}/orders/${userAddress}`, {
|
|
46
|
+
method: 'GET',
|
|
47
|
+
headers: {
|
|
48
|
+
'Content-Type': 'application/json',
|
|
49
|
+
Accept: 'application/json'
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return response.json();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.GatewayApiClient = GatewayApiClient;
|
|
56
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":";;;AAwBA,MAAa,gBAAgB;IAGzB,YAAY,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,YAA8B;QAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,OAAO,IAAI,YAAY,IAAI,EAAE,EAAE,EAAE;YACnF,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;SACJ,CAAC,CAAC;QAEH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAGD,KAAK,CAAC,WAAW,CAAC,eAAuB,EAAE,WAAuB,EAAE,YAA6B;QAC7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,QAAQ,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;SAC/G,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,EAAU;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,EAAE,EAAE,EAAE;YACxD,MAAM,EAAE,OAAO;YACf,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAuB;QACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,WAAW,EAAE,EAAE;YAClE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;SACJ,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACJ;AA9DD,4CA8DC"}
|
package/dist/helpers.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EsploraClient } from "./esplora";
|
|
2
2
|
import { OrdinalsClient } from "./ordinal-api";
|
|
3
|
-
export declare function getInscriptionIds(
|
|
3
|
+
export declare function getInscriptionIds(esploraClient: EsploraClient, ordinalsClient: OrdinalsClient, bitcoinAddress: string): Promise<string[]>;
|
package/dist/helpers.js
CHANGED
|
@@ -23,26 +23,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getInscriptionIds =
|
|
26
|
+
exports.getInscriptionIds = getInscriptionIds;
|
|
27
27
|
const inscription_1 = require("./inscription");
|
|
28
28
|
const ordinal_api_1 = require("./ordinal-api");
|
|
29
29
|
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
30
|
-
async function getInscriptionIds(
|
|
31
|
-
const utxos = await
|
|
30
|
+
async function getInscriptionIds(esploraClient, ordinalsClient, bitcoinAddress) {
|
|
31
|
+
const utxos = await esploraClient.getAddressUtxos(bitcoinAddress);
|
|
32
32
|
const inscriptionIds = await Promise.all(utxos.sort((a, b) => {
|
|
33
33
|
const heightA = a.height || Number.MAX_SAFE_INTEGER;
|
|
34
34
|
const heightB = b.height || Number.MAX_SAFE_INTEGER;
|
|
35
35
|
return heightA - heightB;
|
|
36
|
-
}).map(utxo => getInscriptionIdsForUtxo(
|
|
36
|
+
}).map(utxo => getInscriptionIdsForUtxo(esploraClient, ordinalsClient, utxo)));
|
|
37
37
|
return inscriptionIds.flat();
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
async function getInscriptionIdsForUtxo(electrsClient, ordinalsClient, utxo) {
|
|
39
|
+
async function getInscriptionIdsForUtxo(esploraClient, ordinalsClient, utxo) {
|
|
41
40
|
if (utxo.confirmed) {
|
|
42
41
|
const outputJson = await ordinalsClient.getInscriptionsFromOutPoint(utxo);
|
|
43
42
|
return outputJson.inscriptions;
|
|
44
43
|
}
|
|
45
|
-
const txHex = await
|
|
44
|
+
const txHex = await esploraClient.getTransactionHex(utxo.txid);
|
|
46
45
|
const tx = bitcoin.Transaction.fromHex(txHex);
|
|
47
46
|
if (utxo.vout == 0) {
|
|
48
47
|
const parentInscriptions = await Promise.all(tx.ins.map(async (txInput) => {
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,8CAYC;AAjBD,+CAAkD;AAClD,+CAA8D;AAC9D,uDAAyC;AAGlC,KAAK,UAAU,iBAAiB,CAAC,aAA4B,EAAE,cAA8B,EAAE,cAAsB;IACxH,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAEhB,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC;QACpD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC;QAEpD,OAAO,OAAO,GAAG,OAAO,CAAC;IAC7B,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,CAChF,CAAC;IACF,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAGD,KAAK,UAAU,wBAAwB,CAAC,aAA4B,EAAE,cAA8B,EAAE,IAAU;IAC5G,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,UAAU,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAI9C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;QAKjB,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;YACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACnG,OAAO,UAAU,CAAC,YAAY,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC;QACJ,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,cAAc,CAAC;QAC1B,CAAC;IACL,CAAC;IAGD,MAAM,YAAY,GAAG,IAAA,+BAAiB,EAAC,EAAE,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACd,CAAC;SAAM,CAAC;QAEJ,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,2BAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,9 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./esplora"), exports);
|
|
18
18
|
__exportStar(require("./relay"), exports);
|
|
19
19
|
__exportStar(require("./utils"), exports);
|
|
20
20
|
__exportStar(require("./ordinals"), exports);
|
|
21
21
|
__exportStar(require("./helpers"), exports);
|
|
22
|
+
__exportStar(require("./wallet"), exports);
|
|
23
|
+
__exportStar(require("./gateway"), exports);
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,2CAAyB;AACzB,4CAA0B"}
|
package/dist/inscription.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import * as bitcoin from "bitcoinjs-lib";
|
|
3
|
-
import {
|
|
2
|
+
import { EsploraClient } from "./esplora";
|
|
4
3
|
export declare const PROTOCOL_ID: Buffer;
|
|
5
4
|
export declare const MAX_CHUNK_SIZE = 520;
|
|
6
5
|
export declare function chunkContent(data: Buffer): Buffer[];
|
|
@@ -20,5 +19,5 @@ export declare namespace Inscription {
|
|
|
20
19
|
function createInscription(contentType: string, content: Buffer): Inscription;
|
|
21
20
|
}
|
|
22
21
|
export declare function parseInscriptions(tx: bitcoin.Transaction): Inscription[];
|
|
23
|
-
export declare function getTxInscriptions(
|
|
24
|
-
export declare function getInscriptionFromId(
|
|
22
|
+
export declare function getTxInscriptions(esploraClient: EsploraClient, txid: string): Promise<Inscription[]>;
|
|
23
|
+
export declare function getInscriptionFromId(esploraClient: EsploraClient, inscriptionId: string): Promise<Inscription>;
|
package/dist/inscription.js
CHANGED
|
@@ -23,7 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.Inscription = exports.MAX_CHUNK_SIZE = exports.PROTOCOL_ID = void 0;
|
|
27
|
+
exports.chunkContent = chunkContent;
|
|
28
|
+
exports.parseInscriptions = parseInscriptions;
|
|
29
|
+
exports.getTxInscriptions = getTxInscriptions;
|
|
30
|
+
exports.getInscriptionFromId = getInscriptionFromId;
|
|
27
31
|
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
28
32
|
const ordinal_api_1 = require("./ordinal-api");
|
|
29
33
|
const textEncoder = new TextEncoder();
|
|
@@ -42,7 +46,6 @@ function chunkContent(data) {
|
|
|
42
46
|
}
|
|
43
47
|
return body;
|
|
44
48
|
}
|
|
45
|
-
exports.chunkContent = chunkContent;
|
|
46
49
|
function convertOpInt(value) {
|
|
47
50
|
if (value >= bitcoin.opcodes.OP_1 && value <= bitcoin.opcodes.OP_16) {
|
|
48
51
|
return value - OP_INT_BASE;
|
|
@@ -106,8 +109,8 @@ exports.Inscription = Inscription;
|
|
|
106
109
|
Inscription.createTextInscription = createTextInscription;
|
|
107
110
|
function createInscription(contentType, content) {
|
|
108
111
|
const inscription = new Inscription;
|
|
109
|
-
inscription.setContentType(contentType)
|
|
110
|
-
|
|
112
|
+
inscription.setContentType(contentType);
|
|
113
|
+
inscription.body = content;
|
|
111
114
|
return inscription;
|
|
112
115
|
}
|
|
113
116
|
Inscription.createInscription = createInscription;
|
|
@@ -172,17 +175,14 @@ function parseInscriptions(tx) {
|
|
|
172
175
|
}
|
|
173
176
|
return inscriptions;
|
|
174
177
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const txHex = await electrsClient.getTransactionHex(txid);
|
|
178
|
+
async function getTxInscriptions(esploraClient, txid) {
|
|
179
|
+
const txHex = await esploraClient.getTransactionHex(txid);
|
|
178
180
|
const tx = bitcoin.Transaction.fromHex(txHex);
|
|
179
181
|
return parseInscriptions(tx);
|
|
180
182
|
}
|
|
181
|
-
|
|
182
|
-
async function getInscriptionFromId(electrsClient, inscriptionId) {
|
|
183
|
+
async function getInscriptionFromId(esploraClient, inscriptionId) {
|
|
183
184
|
const { txid, index } = ordinal_api_1.InscriptionId.fromString(inscriptionId);
|
|
184
|
-
const inscriptions = await getTxInscriptions(
|
|
185
|
+
const inscriptions = await getTxInscriptions(esploraClient, txid);
|
|
185
186
|
return inscriptions[index];
|
|
186
187
|
}
|
|
187
|
-
exports.getInscriptionFromId = getInscriptionFromId;
|
|
188
188
|
//# sourceMappingURL=inscription.js.map
|
package/dist/inscription.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inscription.js","sourceRoot":"","sources":["../src/inscription.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"inscription.js","sourceRoot":"","sources":["../src/inscription.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,oCAQC;AA4GD,8CAmDC;AAED,8CAIC;AAED,oDAIC;AAvMD,uDAAyC;AAEzC,+CAA8C;AAE9C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;AAGhD,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAGrB,QAAA,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAExD,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC9C,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAGrC,QAAA,cAAc,GAAG,GAAG,CAAC;AAElC,SAAgB,YAAY,CAAC,IAAY;IACrC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,sBAAc,CAAC,CAAC,CAAC;QACxD,KAAK,IAAI,sBAAc,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IAC/B,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClE,OAAO,KAAK,GAAG,WAAW,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAa,WAAW;IAIpB,YAAY,IAA0B,EAAE,IAAa;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,cAAc;QACV,MAAM,IAAI,GAAkB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,GAAkB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,WAAmB;QAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,kBAAkB,CAAC,eAAuB;QACtC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,OAAO;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG;YAC3C,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,cAAsB;QAC3B,OAAO;YACH,cAAc;YACd,OAAO,CAAC,OAAO,CAAC,WAAW;YAC3B,OAAO,CAAC,OAAO,CAAC,IAAI;YACpB,OAAO,CAAC,OAAO,CAAC,KAAK;YACrB,mBAAW;YACX,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACpC,CAAC;gBACD,GAAG;gBACH,KAAK;aACR,CAAC,CAAC,IAAI,EAAE;YACT,OAAO,CAAC,OAAO,CAAC,IAAI;YACpB,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,QAAQ;SAC3B,CAAC;IACN,CAAC;CACJ;AAzDD,kCAyDC;AAED,WAAc,WAAW;IAIrB,SAAgB,qBAAqB,CAAC,IAAY;QAC9C,OAAO,WAAW,CAAC,iBAAiB,CAChC,0BAA0B,EAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACxC,CAAC;IACN,CAAC;IALe,iCAAqB,wBAKpC,CAAA;IAKD,SAAgB,iBAAiB,CAAC,WAAmB,EAAE,OAAe;QAClE,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAEpC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;QAC3B,OAAO,WAAW,CAAC;IACvB,CAAC;IANe,6BAAiB,oBAMhC,CAAA;AACL,CAAC,EArBa,WAAW,2BAAX,WAAW,QAqBxB;AAGD,SAAS,YAAY,CAAC,OAAiB;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE,CAAC;QAC9C,iBAAiB,GAAG,CAAC,CAAA;IACzB,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,GAAG,GAAG,iBAAiB,CAAC,KAAK,WAAW,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,iBAAiB,CAAC,EAAuB;IACrD,IAAI,YAAY,GAAkB,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACpB,SAAS;QACb,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAEjE,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC1C,SAAS;YACb,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC/C,SAAS;YACb,CAAC;YAGD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAW,CAAC,EAAE,CAAC;gBACtD,SAAS;YACb,CAAC;YAED,IAAI,IAAI,GAAwB,IAAI,GAAG,EAAE,CAAC;YAC1C,IAAI,IAAI,GAAa,EAAE,CAAC;YACxB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjE,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC1C,YAAY,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC9D,MAAM;gBACV,CAAC;qBAAM,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAE7C,MAAM,GAAG,IAAI,CAAC;oBACd,SAAS;gBACb,CAAC;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;oBACjC,IAAI,OAAO,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBAC7B,CAAC;gBACL,CAAC;qBAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,aAA4B,EAAE,IAAY;IAC9E,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,aAA4B,EAAE,aAAqB;IAC1F,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,2BAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -34,7 +34,13 @@ export interface OutputJson {
|
|
|
34
34
|
address: string | null;
|
|
35
35
|
indexed: boolean;
|
|
36
36
|
inscriptions: string[];
|
|
37
|
-
runes:
|
|
37
|
+
runes: {
|
|
38
|
+
[key: string]: {
|
|
39
|
+
amount: number;
|
|
40
|
+
divisibility: number;
|
|
41
|
+
symbol: string | null;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
38
44
|
sat_ranges: string | null;
|
|
39
45
|
script_pubkey: string;
|
|
40
46
|
spent: boolean;
|
|
@@ -47,6 +53,7 @@ export interface SatJson<InscriptionId> {
|
|
|
47
53
|
degree: string;
|
|
48
54
|
name: string;
|
|
49
55
|
block: number;
|
|
56
|
+
charms: number[];
|
|
50
57
|
cycle: number;
|
|
51
58
|
epoch: number;
|
|
52
59
|
period: number;
|
|
@@ -63,12 +70,14 @@ export interface InscriptionJson<InscriptionId, SatPoint> {
|
|
|
63
70
|
children: InscriptionId[];
|
|
64
71
|
content_length: number | null;
|
|
65
72
|
content_type: string | null;
|
|
73
|
+
effective_content_type: String | null;
|
|
66
74
|
fee: number;
|
|
67
75
|
height: number;
|
|
68
76
|
id: InscriptionId;
|
|
69
77
|
next: InscriptionId | null;
|
|
70
78
|
number: number;
|
|
71
79
|
parent: InscriptionId | null;
|
|
80
|
+
parents: string[];
|
|
72
81
|
previous: InscriptionId | null;
|
|
73
82
|
rune: string | null;
|
|
74
83
|
sat: string | null;
|
|
@@ -69,6 +69,7 @@ class DefaultOrdinalsClient {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
async getInscriptionFromId(id) {
|
|
72
|
+
console.log(`${this.basePath}/inscription/${InscriptionId.toString(id)}`);
|
|
72
73
|
const inscriptionJson = await this.getJson(`${this.basePath}/inscription/${InscriptionId.toString(id)}`);
|
|
73
74
|
return {
|
|
74
75
|
...inscriptionJson,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinal-api/index.ts"],"names":[],"mappings":";;;AAIa,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAM9C,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAM7D,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAQ1E,IAAc,aAAa,CAa1B;AAbD,WAAc,aAAa;IACvB,SAAgB,QAAQ,CAAC,EAAiB;QACtC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAFe,sBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO;YACH,IAAI;YACJ,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;SAC7B,CAAC;IACN,CAAC;IAPe,wBAAU,aAOzB,CAAA;AACL,CAAC,EAba,aAAa,6BAAb,aAAa,QAa1B;AAQD,IAAc,QAAQ,CAarB;AAbD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO;YACH,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;SAC3B,CAAC;IACN,CAAC;IAPe,mBAAU,aAOzB,CAAA;AACL,CAAC,EAba,QAAQ,wBAAR,QAAQ,QAarB;AAQD,IAAc,QAAQ,CAgBrB;AAhBD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO;YACH,QAAQ,EAAE;gBACN,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;aAC3B;YACD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;SAC/B,CAAC;IACN,CAAC;IAVe,mBAAU,aAUzB,CAAA;AACL,CAAC,EAhBa,QAAQ,wBAAR,QAAQ,QAgBrB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinal-api/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ordinals/commit.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.createCommitTxData =
|
|
26
|
+
exports.createCommitTxData = createCommitTxData;
|
|
27
27
|
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
28
28
|
function toXOnly(pubkey) {
|
|
29
29
|
return pubkey.subarray(1, 33);
|
|
@@ -53,5 +53,4 @@ function createCommitTxData(network, publicKey, inscription) {
|
|
|
53
53
|
tapLeafScript,
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
-
exports.createCommitTxData = createCommitTxData;
|
|
57
56
|
//# sourceMappingURL=commit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/ordinals/commit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/ordinals/commit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,gDAkCC;AAtDD,uDAAyC;AAYzC,SAAS,OAAO,CAAC,MAAc;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAMD,SAAgB,kBAAkB,CAC9B,OAAwB,EACxB,SAAiB,EACjB,WAAwB;IAExB,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG;QACf,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,GAAG;KACrB,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxC,cAAc,EAAE,cAAc;QAC9B,UAAU;QACV,MAAM,EAAE,UAAU;QAClB,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG;QAClB,WAAW,EAAE,aAAa,CAAC,aAAc;QACzC,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,MAAM;KACvB,CAAC;IAEF,OAAO;QACH,aAAa;QACb,aAAa;KAChB,CAAC;AACN,CAAC"}
|
package/dist/ordinals/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.inscribeData =
|
|
26
|
+
exports.inscribeData = inscribeData;
|
|
27
27
|
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
28
28
|
const signer_1 = require("./signer");
|
|
29
29
|
const commit_1 = require("./commit");
|
|
@@ -70,5 +70,4 @@ async function inscribeData(signer, toAddress, feeRate, inscription, postage = 1
|
|
|
70
70
|
const revealTx = await (0, reveal_1.signRevealTx)(signer, commitTxData, revealPsbt);
|
|
71
71
|
return revealTx;
|
|
72
72
|
}
|
|
73
|
-
exports.inscribeData = inscribeData;
|
|
74
73
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinals/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinals/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,oCA+CC;AArGD,uDAAyC;AAEzC,qCAAqD;AACrD,qCAA4D;AAC5D,qCAAyE;AAQzE,SAAS,cAAc,CACrB,OAAwB,EACxB,SAAiB,EACjB,YAA0B,EAC1B,SAAiB,EACjB,MAAc;IAEd,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE3C,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IACtD,IAAI,CAAC,QAAQ,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC;QACR,WAAW,EAAE;YACX,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,aAAa,CAAC,MAAO;SAC9B;QACD,aAAa,EAAE,CAAC,aAAa,CAAC;KAC/B,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC;QACb,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,oBAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAA,wBAAe,EAAC,YAAY,CAAC,CAAC,CAAC;IAErD,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACrC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAYM,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,SAAiB,EACjB,OAAe,EACf,WAAwB,EACxB,OAAO,GAAG,KAAK;IAEf,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,IAAA,2BAAkB,EAAC,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAEhF,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAGjG,MAAM,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IAEzC,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;IAE3C,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC,OAAQ,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAExF,MAAM,cAAc,GAAG;QACrB,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,cAAc;KAC7B,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,uBAAc,EAC/B,cAAc,EACd,YAAY,EACZ,cAAc,EACd,SAAS,EACT,OAAO,CACR,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAY,EACjC,MAAM,EACN,YAAY,EACZ,UAAU,CACX,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/ordinals/reveal.js
CHANGED
|
@@ -23,7 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.customFinalizer = void 0;
|
|
27
|
+
exports.createRevealTx = createRevealTx;
|
|
28
|
+
exports.signRevealTx = signRevealTx;
|
|
27
29
|
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
28
30
|
const psbtUtils = __importStar(require("bitcoinjs-lib/src/psbt/psbtutils"));
|
|
29
31
|
const { witnessStackToScriptWitness } = psbtUtils;
|
|
@@ -46,7 +48,6 @@ function createRevealTx(network, commitTxData, commitTxResult, toAddress, amount
|
|
|
46
48
|
});
|
|
47
49
|
return psbt;
|
|
48
50
|
}
|
|
49
|
-
exports.createRevealTx = createRevealTx;
|
|
50
51
|
const customFinalizer = (commitTxData) => {
|
|
51
52
|
const { tapLeafScript } = commitTxData;
|
|
52
53
|
return (inputIndex, input) => {
|
|
@@ -64,5 +65,4 @@ async function signRevealTx(signer, commitTxData, psbt) {
|
|
|
64
65
|
psbt.finalizeInput(0, (0, exports.customFinalizer)(commitTxData));
|
|
65
66
|
return psbt.extractTransaction();
|
|
66
67
|
}
|
|
67
|
-
exports.signRevealTx = signRevealTx;
|
|
68
68
|
//# sourceMappingURL=reveal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reveal.js","sourceRoot":"","sources":["../../src/ordinals/reveal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"reveal.js","sourceRoot":"","sources":["../../src/ordinals/reveal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,wCA4BC;AAgBD,oCAYC;AAzED,uDAAyC;AACzC,4EAA8D;AAK9D,MAAM,EAAE,2BAA2B,EAAE,GAAG,SAAS,CAAC;AAWlD,SAAgB,cAAc,CAC1B,OAAwB,EACxB,YAA0B,EAC1B,cAA8B,EAC9B,SAAiB,EACjB,MAAc;IAEd,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IAEtD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE3C,IAAI,CAAC,QAAQ,CAAC;QACV,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAC/B,KAAK,EAAE,cAAc,CAAC,WAAW;QACjC,WAAW,EAAE;YACT,KAAK,EAAE,cAAc,CAAC,YAAY;YAClC,MAAM,EAAE,aAAa,CAAC,MAAO;SAChC;QACD,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE;QAC5C,aAAa,EAAE,CAAC,aAAa,CAAC;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC;QACX,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,SAAS;KACrB,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AAChB,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,YAA0B,EAAE,EAAE;IAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IAEvC,OAAO,CAAC,UAAkB,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;aACrD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;aAC5B,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAExC,OAAO;YACH,kBAAkB,EAAE,2BAA2B,CAAC,OAAO,CAAC;SAC3D,CAAC;IACN,CAAC,CAAC;AACN,CAAC,CAAA;AAZY,QAAA,eAAe,mBAY3B;AAEM,KAAK,UAAU,YAAY,CAC9B,MAAoB,EACpB,YAA0B,EAC1B,IAAkB;IAGlB,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAGvC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAA,uBAAe,EAAC,YAAY,CAAC,CAAC,CAAC;IAErD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACrC,CAAC"}
|
package/dist/relay.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EsploraClient } from "./esplora";
|
|
2
2
|
export interface BitcoinTxInfo {
|
|
3
3
|
version: string;
|
|
4
4
|
inputVector: string;
|
|
@@ -6,11 +6,11 @@ export interface BitcoinTxInfo {
|
|
|
6
6
|
locktime: string;
|
|
7
7
|
witnessVector?: string;
|
|
8
8
|
}
|
|
9
|
-
export declare function getBitcoinTxInfo(
|
|
9
|
+
export declare function getBitcoinTxInfo(esploraClient: EsploraClient, txId: string, forWitness?: boolean): Promise<BitcoinTxInfo>;
|
|
10
10
|
export interface BitcoinTxProof {
|
|
11
11
|
merkleProof: string;
|
|
12
12
|
txIndexInBlock: number;
|
|
13
13
|
bitcoinHeaders: string;
|
|
14
14
|
}
|
|
15
|
-
export declare function getBitcoinTxProof(
|
|
16
|
-
export declare function getBitcoinHeaders(
|
|
15
|
+
export declare function getBitcoinTxProof(esploraClient: EsploraClient, txId: string, txProofDifficultyFactor: number): Promise<BitcoinTxProof>;
|
|
16
|
+
export declare function getBitcoinHeaders(esploraClient: EsploraClient, startHeight: number, numBlocks: number): Promise<string>;
|
package/dist/relay.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getBitcoinTxInfo = getBitcoinTxInfo;
|
|
4
|
+
exports.getBitcoinTxProof = getBitcoinTxProof;
|
|
5
|
+
exports.getBitcoinHeaders = getBitcoinHeaders;
|
|
4
6
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
5
7
|
const utils_1 = require("./utils");
|
|
6
|
-
async function getBitcoinTxInfo(
|
|
7
|
-
const txHex = await
|
|
8
|
+
async function getBitcoinTxInfo(esploraClient, txId, forWitness) {
|
|
9
|
+
const txHex = await esploraClient.getTransactionHex(txId);
|
|
8
10
|
const tx = bitcoinjs_lib_1.Transaction.fromHex(txHex);
|
|
9
11
|
const versionBuffer = Buffer.allocUnsafe(4);
|
|
10
12
|
versionBuffer.writeInt32LE(tx.version);
|
|
@@ -19,25 +21,22 @@ async function getBitcoinTxInfo(electrsClient, txId, forWitness) {
|
|
|
19
21
|
witnessVector: forWitness ? (0, utils_1.encodeRawWitness)(tx).toString("hex") : undefined,
|
|
20
22
|
};
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const bitcoinHeaders = await getBitcoinHeaders(electrsClient, merkleProof.blockHeight, txProofDifficultyFactor);
|
|
24
|
+
async function getBitcoinTxProof(esploraClient, txId, txProofDifficultyFactor) {
|
|
25
|
+
const merkleProof = await esploraClient.getMerkleProof(txId);
|
|
26
|
+
const bitcoinHeaders = await getBitcoinHeaders(esploraClient, merkleProof.blockHeight, txProofDifficultyFactor);
|
|
26
27
|
return {
|
|
27
28
|
merkleProof: merkleProof.merkle,
|
|
28
29
|
txIndexInBlock: merkleProof.pos,
|
|
29
30
|
bitcoinHeaders: bitcoinHeaders,
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
async function getBitcoinHeaders(electrsClient, startHeight, numBlocks) {
|
|
33
|
+
async function getBitcoinHeaders(esploraClient, startHeight, numBlocks) {
|
|
34
34
|
const range = (start, end) => Array.from({ length: end - start }, (_element, index) => index + start);
|
|
35
35
|
const blockHeights = range(startHeight, startHeight + numBlocks);
|
|
36
36
|
const bitcoinHeaders = await Promise.all(blockHeights.map(async (height) => {
|
|
37
|
-
const hash = await
|
|
38
|
-
return
|
|
37
|
+
const hash = await esploraClient.getBlockHash(height);
|
|
38
|
+
return esploraClient.getBlockHeader(hash);
|
|
39
39
|
}));
|
|
40
40
|
return bitcoinHeaders.join('');
|
|
41
41
|
}
|
|
42
|
-
exports.getBitcoinHeaders = getBitcoinHeaders;
|
|
43
42
|
//# sourceMappingURL=relay.js.map
|
package/dist/relay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":";;AAuDA,4CAsBC;AAmCD,8CAaC;AA0BD,8CAcC;AAjKD,iDAA4C;AAS5C,mCAA8F;AA0CvF,KAAK,UAAU,gBAAgB,CAClC,aAA4B,EAC5B,IAAY,EACZ,UAAoB;IAEpB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,2BAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5C,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7C,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtC,WAAW,EAAE,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/C,YAAY,EAAE,IAAA,uBAAe,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjD,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5E,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KAC/E,CAAA;AACL,CAAC;AAmCM,KAAK,UAAU,iBAAiB,CACnC,aAA4B,EAC5B,IAAY,EACZ,uBAA+B;IAE/B,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IAEhH,OAAO;QACH,WAAW,EAAE,WAAW,CAAC,MAAM;QAC/B,cAAc,EAAE,WAAW,CAAC,GAAG;QAC/B,cAAc,EAAE,cAAc;KACjC,CAAA;AACL,CAAC;AA0BM,KAAK,UAAU,iBAAiB,CACnC,aAA4B,EAC5B,WAAmB,EACnB,SAAiB;IAEjB,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACtH,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IAEjE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QACrE,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACtD,OAAO,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Block } from "bitcoinjs-lib";
|
|
3
2
|
import { Transaction } from "bitcoinjs-lib/src/transaction";
|
|
4
3
|
export declare function encodeRawInput(tx: Transaction): Buffer;
|
|
@@ -9,3 +8,4 @@ export declare function getMerkleProof(block: Block, txHash: string, forWitness?
|
|
|
9
8
|
proof: string;
|
|
10
9
|
root: string;
|
|
11
10
|
};
|
|
11
|
+
export declare function estimateTxFee(feeRate: number, numInputs?: number): number;
|
package/dist/utils.js
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
26
|
+
exports.encodeRawInput = encodeRawInput;
|
|
27
|
+
exports.encodeRawOutput = encodeRawOutput;
|
|
28
|
+
exports.encodeRawWitness = encodeRawWitness;
|
|
29
|
+
exports.getMerkleProof = getMerkleProof;
|
|
30
|
+
exports.estimateTxFee = estimateTxFee;
|
|
4
31
|
const bufferutils_1 = require("bitcoinjs-lib/src/bufferutils");
|
|
5
32
|
const crypto_1 = require("bitcoinjs-lib/src/crypto");
|
|
33
|
+
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
6
34
|
function varSliceSize(someScript) {
|
|
7
35
|
const length = someScript.length;
|
|
8
36
|
return bufferutils_1.varuint.encodingLength(length) + length;
|
|
@@ -22,7 +50,6 @@ function encodeRawInput(tx) {
|
|
|
22
50
|
});
|
|
23
51
|
return inputBuffer;
|
|
24
52
|
}
|
|
25
|
-
exports.encodeRawInput = encodeRawInput;
|
|
26
53
|
function isOutput(out) {
|
|
27
54
|
return out.value !== undefined;
|
|
28
55
|
}
|
|
@@ -44,7 +71,6 @@ function encodeRawOutput(tx) {
|
|
|
44
71
|
});
|
|
45
72
|
return outputBuffer;
|
|
46
73
|
}
|
|
47
|
-
exports.encodeRawOutput = encodeRawOutput;
|
|
48
74
|
function vectorSize(someVector) {
|
|
49
75
|
const length = someVector.length;
|
|
50
76
|
return (bufferutils_1.varuint.encodingLength(length) +
|
|
@@ -63,7 +89,6 @@ function encodeRawWitness(tx) {
|
|
|
63
89
|
});
|
|
64
90
|
return witnessBuffer;
|
|
65
91
|
}
|
|
66
|
-
exports.encodeRawWitness = encodeRawWitness;
|
|
67
92
|
function chunkArray(array, chunkSize) {
|
|
68
93
|
const chunkedArray = [];
|
|
69
94
|
let index = 0;
|
|
@@ -105,5 +130,17 @@ function getMerkleProof(block, txHash, forWitness) {
|
|
|
105
130
|
root: merkleAndRoot.root.toString("hex"),
|
|
106
131
|
};
|
|
107
132
|
}
|
|
108
|
-
|
|
133
|
+
function estimateTxFee(feeRate, numInputs = 1) {
|
|
134
|
+
const tx = new bitcoin.Transaction();
|
|
135
|
+
for (let i = 0; i < numInputs; i++) {
|
|
136
|
+
tx.addInput(Buffer.alloc(32, 0), 0, 0xfffffffd, Buffer.alloc(0));
|
|
137
|
+
}
|
|
138
|
+
tx.ins.map(tx_input => (tx_input.witness = [Buffer.alloc(33 + 32 + 7, 0), Buffer.alloc(33, 0)]));
|
|
139
|
+
tx.addOutput(Buffer.alloc(22, 0), 1000);
|
|
140
|
+
tx.addOutput(Buffer.alloc(22, 0), 1000);
|
|
141
|
+
tx.addOutput(bitcoin.script.compile([bitcoin.opcodes.OP_RETURN, Buffer.alloc(20, 0)]), 0);
|
|
142
|
+
const vsize = tx.virtualSize();
|
|
143
|
+
const satoshis = feeRate * vsize;
|
|
144
|
+
return satoshis;
|
|
145
|
+
}
|
|
109
146
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidBtcAddress = void 0;
|
|
4
|
+
const BTC_MAINNET_REGEX = /\b([13][a-km-zA-HJ-NP-Z1-9]{25,34}|bc1[ac-hj-np-zAC-HJ-NP-Z02-9]{11,71})\b/;
|
|
5
|
+
const BTC_TESTNET_REGEX = /\b([2mn][a-km-zA-HJ-NP-Z1-9]{25,34}|tb1[ac-hj-np-zAC-HJ-NP-Z02-9]{11,71})\b/;
|
|
6
|
+
const mainnetRegex = new RegExp(BTC_MAINNET_REGEX);
|
|
7
|
+
const testnetRegex = new RegExp(BTC_TESTNET_REGEX);
|
|
8
|
+
const isValidBtcAddress = (network, address) => {
|
|
9
|
+
switch (network) {
|
|
10
|
+
case 'mainnet':
|
|
11
|
+
return mainnetRegex.test(address);
|
|
12
|
+
case 'testnet':
|
|
13
|
+
return testnetRegex.test(address);
|
|
14
|
+
default:
|
|
15
|
+
throw new Error(`Invalid bitcoin network configured: ${network}. Valid values are: mainnet | testnet.`);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
exports.isValidBtcAddress = isValidBtcAddress;
|
|
19
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/wallet/address.ts"],"names":[],"mappings":";;;AAEA,MAAM,iBAAiB,GAAG,4EAA4E,CAAC;AACvG,MAAM,iBAAiB,GAAG,6EAA6E,CAAC;AAExG,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnD,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE5C,MAAM,iBAAiB,GAAG,CAAC,OAA2B,EAAE,OAAe,EAAW,EAAE;IACzF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC;YACE,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,wCAAwC,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./address"), exports);
|
|
18
|
+
__exportStar(require("./utxo"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,yCAAuB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { EsploraClient, UTXO } from "../esplora";
|
|
2
|
+
import { OrdinalsClient } from "../ordinal-api";
|
|
3
|
+
export declare function findUtxoForInscriptionId(esploraClient: EsploraClient, ordinalsClient: OrdinalsClient, utxos: UTXO[], inscriptionId: string): Promise<UTXO | undefined>;
|
|
4
|
+
export declare function findUtxosWithoutInscriptions(network: string, utxos: UTXO[]): Promise<UTXO[]>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findUtxoForInscriptionId = findUtxoForInscriptionId;
|
|
4
|
+
exports.findUtxosWithoutInscriptions = findUtxosWithoutInscriptions;
|
|
5
|
+
const inscription_1 = require("../inscription");
|
|
6
|
+
const ordinal_api_1 = require("../ordinal-api");
|
|
7
|
+
async function findUtxoForInscriptionId(esploraClient, ordinalsClient, utxos, inscriptionId) {
|
|
8
|
+
const { txid, index } = ordinal_api_1.InscriptionId.fromString(inscriptionId);
|
|
9
|
+
for (const utxo of utxos) {
|
|
10
|
+
if (utxo.confirmed) {
|
|
11
|
+
const inscriptionUtxo = await ordinalsClient.getInscriptionsFromOutPoint(utxo);
|
|
12
|
+
if (inscriptionUtxo.inscriptions && inscriptionUtxo.inscriptions.includes(inscriptionId)) {
|
|
13
|
+
return utxo;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else if (txid == utxo.txid) {
|
|
17
|
+
const inscriptions = await (0, inscription_1.getTxInscriptions)(esploraClient, utxo.txid);
|
|
18
|
+
if (typeof inscriptions[index] !== 'undefined') {
|
|
19
|
+
return utxo;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
async function findUtxosWithoutInscriptions(network, utxos) {
|
|
26
|
+
const ordinalsClient = new ordinal_api_1.DefaultOrdinalsClient(network);
|
|
27
|
+
const safeUtxos = [];
|
|
28
|
+
await Promise.all([
|
|
29
|
+
utxos.map(async (utxo) => {
|
|
30
|
+
if (utxo.confirmed) {
|
|
31
|
+
const inscription = await ordinalsClient.getInscriptionsFromOutPoint({
|
|
32
|
+
txid: utxo.txid,
|
|
33
|
+
vout: utxo.vout
|
|
34
|
+
});
|
|
35
|
+
if (inscription.inscriptions.length === 0) {
|
|
36
|
+
safeUtxos.push(utxo);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
]);
|
|
41
|
+
return safeUtxos;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=inscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inscriptions.js","sourceRoot":"","sources":["../../src/wallet/inscriptions.ts"],"names":[],"mappings":";;AAIA,4DA0BC;AAED,oEAsBC;AArDD,gDAAmD;AACnD,gDAAsF;AAE/E,KAAK,UAAU,wBAAwB,CAC1C,aAA4B,EAC5B,cAA8B,EAC9B,KAAa,EACb,aAAqB;IAIrB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,2BAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAA;YAC9E,IAAI,eAAe,CAAC,YAAY,IAAI,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvF,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,MAAM,IAAA,+BAAiB,EAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvE,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,4BAA4B,CAAC,OAAe,EAAE,KAAa;IAC7E,MAAM,cAAc,GAAG,IAAI,mCAAqB,CAAC,OAAO,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAW,EAAE,CAAC;IAG7B,MAAM,OAAO,CAAC,GAAG,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC;oBACjE,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC,CAAC;gBAEH,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC,CAAC;KACL,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Transaction } from '@scure/btc-signer';
|
|
2
|
+
import { AddressType } from 'bitcoin-address-validation';
|
|
3
|
+
import { UTXO } from '../esplora';
|
|
4
|
+
export type BitcoinNetworkName = 'mainnet' | 'testnet';
|
|
5
|
+
export declare const getBtcNetwork: (name: BitcoinNetworkName) => {
|
|
6
|
+
bech32: string;
|
|
7
|
+
pubKeyHash: number;
|
|
8
|
+
scriptHash: number;
|
|
9
|
+
wif: number;
|
|
10
|
+
};
|
|
11
|
+
export interface Input {
|
|
12
|
+
txid: string;
|
|
13
|
+
index: number;
|
|
14
|
+
witness_script?: Uint8Array;
|
|
15
|
+
redeemScript?: Uint8Array;
|
|
16
|
+
witnessUtxo?: {
|
|
17
|
+
script: Uint8Array;
|
|
18
|
+
amount: bigint;
|
|
19
|
+
};
|
|
20
|
+
nonWitnessUtxo?: Uint8Array;
|
|
21
|
+
}
|
|
22
|
+
export declare function createTransfer(network: BitcoinNetworkName, addressType: AddressType, fromAddress: string, toAddress: string, amount: number, publicKey?: string, opReturnData?: string, confirmationTarget?: number): Promise<Transaction>;
|
|
23
|
+
export declare function getInputFromUtxoAndTx(network: BitcoinNetworkName, utxo: UTXO, transaction: Transaction, addressType: AddressType, pubKey?: string): Input;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBtcNetwork = void 0;
|
|
4
|
+
exports.createTransfer = createTransfer;
|
|
5
|
+
exports.getInputFromUtxoAndTx = getInputFromUtxoAndTx;
|
|
6
|
+
const btc_signer_1 = require("@scure/btc-signer");
|
|
7
|
+
const base_1 = require("@scure/base");
|
|
8
|
+
const bitcoin_address_validation_1 = require("bitcoin-address-validation");
|
|
9
|
+
const esplora_1 = require("../esplora");
|
|
10
|
+
const bitcoinNetworks = {
|
|
11
|
+
mainnet: btc_signer_1.NETWORK,
|
|
12
|
+
testnet: btc_signer_1.TEST_NETWORK
|
|
13
|
+
};
|
|
14
|
+
const getBtcNetwork = (name) => {
|
|
15
|
+
return bitcoinNetworks[name];
|
|
16
|
+
};
|
|
17
|
+
exports.getBtcNetwork = getBtcNetwork;
|
|
18
|
+
async function createTransfer(network, addressType, fromAddress, toAddress, amount, publicKey, opReturnData, confirmationTarget = 3) {
|
|
19
|
+
const esploraClient = new esplora_1.DefaultEsploraClient(network);
|
|
20
|
+
const [confirmedUtxos, feeRate] = await Promise.all([
|
|
21
|
+
esploraClient.getAddressUtxos(fromAddress),
|
|
22
|
+
esploraClient.getFeeEstimate(confirmationTarget)
|
|
23
|
+
]);
|
|
24
|
+
if (confirmedUtxos.length === 0) {
|
|
25
|
+
throw new Error('No confirmed UTXOs');
|
|
26
|
+
}
|
|
27
|
+
let possibleInputs = [];
|
|
28
|
+
await Promise.all(confirmedUtxos.map(async (utxo) => {
|
|
29
|
+
const hex = await esploraClient.getTransactionHex(utxo.txid);
|
|
30
|
+
const transaction = btc_signer_1.Transaction.fromRaw(Buffer.from(hex, 'hex'), { allowUnknownOutputs: true });
|
|
31
|
+
const input = getInputFromUtxoAndTx(network, utxo, transaction, addressType, publicKey);
|
|
32
|
+
possibleInputs.push(input);
|
|
33
|
+
}));
|
|
34
|
+
const outputs = [
|
|
35
|
+
{
|
|
36
|
+
address: toAddress,
|
|
37
|
+
amount: BigInt(amount)
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
if (opReturnData) {
|
|
41
|
+
if (opReturnData.startsWith('0x')) {
|
|
42
|
+
opReturnData = opReturnData.slice(2);
|
|
43
|
+
}
|
|
44
|
+
outputs.push({
|
|
45
|
+
script: btc_signer_1.Script.encode(['RETURN', base_1.hex.decode(opReturnData)]),
|
|
46
|
+
amount: BigInt(0)
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const transaction = (0, btc_signer_1.selectUTXO)(possibleInputs, outputs, 'default', {
|
|
50
|
+
changeAddress: fromAddress,
|
|
51
|
+
feePerByte: BigInt(Math.ceil(feeRate)),
|
|
52
|
+
bip69: true,
|
|
53
|
+
createTx: true,
|
|
54
|
+
network: (0, exports.getBtcNetwork)(network),
|
|
55
|
+
allowUnknownOutputs: true,
|
|
56
|
+
allowLegacyWitnessUtxo: true
|
|
57
|
+
});
|
|
58
|
+
if (!transaction || !transaction.tx) {
|
|
59
|
+
throw new Error('Failed to create transaction. Do you have enough funds?');
|
|
60
|
+
}
|
|
61
|
+
return transaction.tx;
|
|
62
|
+
}
|
|
63
|
+
function getInputFromUtxoAndTx(network, utxo, transaction, addressType, pubKey) {
|
|
64
|
+
const output = transaction.getOutput(utxo.vout);
|
|
65
|
+
let redeemScript = {};
|
|
66
|
+
if (addressType === bitcoin_address_validation_1.AddressType.p2sh) {
|
|
67
|
+
const inner = (0, btc_signer_1.p2wpkh)(Buffer.from(pubKey, 'hex'), (0, exports.getBtcNetwork)(network));
|
|
68
|
+
redeemScript = (0, btc_signer_1.p2sh)(inner);
|
|
69
|
+
}
|
|
70
|
+
const scriptMixin = {
|
|
71
|
+
...redeemScript
|
|
72
|
+
};
|
|
73
|
+
const nonWitnessUtxo = {
|
|
74
|
+
nonWitnessUtxo: Buffer.from(transaction.hex, 'hex')
|
|
75
|
+
};
|
|
76
|
+
const witnessUtxo = {
|
|
77
|
+
witnessUtxo: {
|
|
78
|
+
script: output.script,
|
|
79
|
+
amount: output.amount
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const witnessMixin = transaction.hasWitnesses ? witnessUtxo : nonWitnessUtxo;
|
|
83
|
+
const input = {
|
|
84
|
+
txid: utxo.txid,
|
|
85
|
+
index: utxo.vout,
|
|
86
|
+
...scriptMixin,
|
|
87
|
+
...witnessMixin
|
|
88
|
+
};
|
|
89
|
+
return input;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=utxo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src/wallet/utxo.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobob/bob-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"README.md"
|
|
19
19
|
],
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@types/node": "^20.
|
|
21
|
+
"@types/node": "^20.14.8",
|
|
22
22
|
"@types/yargs": "^17.0.32",
|
|
23
23
|
"ecpair": "^2.1.0",
|
|
24
24
|
"mocha": "^10.3.0",
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
"yargs": "^17.5.1"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"
|
|
32
|
+
"@scure/base": "^1.1.7",
|
|
33
|
+
"@scure/btc-signer": "^1.3.2",
|
|
34
|
+
"bitcoin-address-validation": "^2.2.3",
|
|
35
|
+
"bitcoinjs-lib": "^6.1.6"
|
|
33
36
|
}
|
|
34
|
-
}
|
|
37
|
+
}
|