@gobob/bob-sdk 1.0.2 → 1.1.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/dist/electrs.d.ts +24 -0
- package/dist/electrs.js +3 -3
- package/dist/electrs.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/ordinals/commit.d.ts +24 -0
- package/dist/ordinals/commit.js +83 -0
- package/dist/ordinals/commit.js.map +1 -0
- package/dist/ordinals/index.d.ts +4 -0
- package/dist/ordinals/index.js +73 -0
- package/dist/ordinals/index.js.map +1 -0
- package/dist/ordinals/reveal.d.ts +9 -0
- package/dist/ordinals/reveal.js +67 -0
- package/dist/ordinals/reveal.js.map +1 -0
- package/dist/ordinals/signer.d.ts +15 -0
- package/dist/ordinals/signer.js +17 -0
- package/dist/ordinals/signer.js.map +1 -0
- package/dist/relay.d.ts +16 -0
- package/dist/relay.js +17 -10
- package/dist/relay.js.map +1 -1
- package/dist/utils.d.ts +11 -0
- package/dist/utils.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const MAINNET_ESPLORA_BASE_PATH = "https://btc-mainnet.gobob.xyz";
|
|
2
|
+
export declare const TESTNET_ESPLORA_BASE_PATH = "https://btc-testnet.gobob.xyz";
|
|
3
|
+
export declare const REGTEST_ESPLORA_BASE_PATH = "http://localhost:3003";
|
|
4
|
+
export interface MerkleProof {
|
|
5
|
+
blockHeight: number;
|
|
6
|
+
merkle: string;
|
|
7
|
+
pos: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ElectrsClient {
|
|
10
|
+
getBlockHash(height: number): Promise<string>;
|
|
11
|
+
getBlockHeader(hash: string): Promise<string>;
|
|
12
|
+
getTransactionHex(txId: string): Promise<string>;
|
|
13
|
+
getMerkleProof(txId: string): Promise<MerkleProof>;
|
|
14
|
+
}
|
|
15
|
+
export declare class DefaultElectrsClient implements ElectrsClient {
|
|
16
|
+
private basePath;
|
|
17
|
+
constructor(networkOrUrl?: string);
|
|
18
|
+
getBlockHash(height: number): Promise<string>;
|
|
19
|
+
getBlockHeader(hash: string): Promise<string>;
|
|
20
|
+
getTransactionHex(txId: string): Promise<string>;
|
|
21
|
+
getMerkleProof(txId: string): Promise<MerkleProof>;
|
|
22
|
+
getJson<T>(url: string): Promise<T>;
|
|
23
|
+
getText(url: string): Promise<string>;
|
|
24
|
+
}
|
package/dist/electrs.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultElectrsClient = exports.REGTEST_ESPLORA_BASE_PATH = exports.TESTNET_ESPLORA_BASE_PATH = exports.MAINNET_ESPLORA_BASE_PATH = void 0;
|
|
4
|
-
exports.MAINNET_ESPLORA_BASE_PATH = "https://btc-mainnet.
|
|
5
|
-
exports.TESTNET_ESPLORA_BASE_PATH = "https://btc-testnet.
|
|
6
|
-
exports.REGTEST_ESPLORA_BASE_PATH = "http://localhost:
|
|
4
|
+
exports.MAINNET_ESPLORA_BASE_PATH = "https://btc-mainnet.gobob.xyz";
|
|
5
|
+
exports.TESTNET_ESPLORA_BASE_PATH = "https://btc-testnet.gobob.xyz";
|
|
6
|
+
exports.REGTEST_ESPLORA_BASE_PATH = "http://localhost:3003";
|
|
7
7
|
function encodeElectrsMerkleProof(merkle) {
|
|
8
8
|
return merkle.map(item => Buffer.from(item, "hex").reverse().toString("hex")).join('');
|
|
9
9
|
}
|
package/dist/electrs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electrs.js","sourceRoot":"","sources":["../src/electrs.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"electrs.js","sourceRoot":"","sources":["../src/electrs.ts"],"names":[],"mappings":";;;AAIa,QAAA,yBAAyB,GAAG,+BAA+B,CAAC;AAK5D,QAAA,yBAAyB,GAAG,+BAA+B,CAAC;AAK5D,QAAA,yBAAyB,GAAG,uBAAuB,CAAC;AA2GjE,SAAS,wBAAwB,CAAC,MAAgB;IAE9C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAOD,MAAa,oBAAoB;IAmB7B,YAAY,eAAuB,SAAS;QACxC,QAAQ,YAAY,EAAE;YAClB,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,GAAG,iCAAyB,CAAC;gBAC1C,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,GAAG,iCAAyB,CAAC;gBAC1C,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,GAAG,iCAAyB,CAAC;gBAC1C,MAAM;YACV;gBACI,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;SACpC;IACL,CAAC;IAMD,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,iBAAiB,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IAMD,KAAK,CAAC,cAAc,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,UAAU,IAAI,SAAS,CAAC,CAAC;IACjE,CAAC;IAMD,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,OAAO,IAAI,MAAM,CAAC,CAAC;IAC3D,CAAC;IAMD,KAAK,CAAC,cAAc,CAAC,IAAY;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAIhC,GAAG,IAAI,CAAC,QAAQ,OAAO,IAAI,eAAe,CAAC,CAAC;QAC/C,OAAO;YACH,WAAW,EAAE,QAAQ,CAAC,YAAY;YAClC,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,GAAG,EAAE,QAAQ,CAAC,GAAG;SACpB,CAAC;IACN,CAAC;IAMD,KAAK,CAAC,OAAO,CAAI,GAAW;QACxB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAgB,CAAC;IAC/C,CAAC;IAMD,KAAK,CAAC,OAAO,CAAC,GAAW;QACrB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACxC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;CACJ;AAnGD,oDAmGC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as bitcoinjsLib from "bitcoinjs-lib";
|
|
3
|
+
interface Inscription {
|
|
4
|
+
contentType: Buffer;
|
|
5
|
+
content: Buffer;
|
|
6
|
+
}
|
|
7
|
+
export declare function createTextInscription(text: string): Inscription;
|
|
8
|
+
export interface CommitTxData {
|
|
9
|
+
script: (number | Buffer)[];
|
|
10
|
+
scriptTaproot: bitcoinjsLib.payments.Payment;
|
|
11
|
+
outputScript: Buffer;
|
|
12
|
+
tapLeafScript: {
|
|
13
|
+
leafVersion: number;
|
|
14
|
+
script: Buffer;
|
|
15
|
+
controlBlock: Buffer;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export declare function createCommitTxData(network: bitcoinjsLib.Network, publicKey: Buffer, inscription: Inscription): CommitTxData;
|
|
19
|
+
export interface CommitTxResult {
|
|
20
|
+
txId: string;
|
|
21
|
+
sendUtxoIndex: number;
|
|
22
|
+
sendAmount: number;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
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
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.createCommitTxData = exports.createTextInscription = void 0;
|
|
27
|
+
const bitcoinjsLib = __importStar(require("bitcoinjs-lib"));
|
|
28
|
+
const encoder = new TextEncoder();
|
|
29
|
+
function toXOnly(pubkey) {
|
|
30
|
+
return pubkey.subarray(1, 33);
|
|
31
|
+
}
|
|
32
|
+
function createTextInscription(text) {
|
|
33
|
+
const contentType = Buffer.from(encoder.encode("text/plain;charset=utf-8"));
|
|
34
|
+
const content = Buffer.from(encoder.encode(text));
|
|
35
|
+
return { contentType, content };
|
|
36
|
+
}
|
|
37
|
+
exports.createTextInscription = createTextInscription;
|
|
38
|
+
function createInscriptionScript(xOnlyPublicKey, inscription) {
|
|
39
|
+
const protocolId = Buffer.from(encoder.encode("ord"));
|
|
40
|
+
return [
|
|
41
|
+
xOnlyPublicKey,
|
|
42
|
+
bitcoinjsLib.opcodes.OP_CHECKSIG,
|
|
43
|
+
bitcoinjsLib.opcodes.OP_0,
|
|
44
|
+
bitcoinjsLib.opcodes.OP_IF,
|
|
45
|
+
protocolId,
|
|
46
|
+
1,
|
|
47
|
+
1,
|
|
48
|
+
inscription.contentType,
|
|
49
|
+
bitcoinjsLib.opcodes.OP_0,
|
|
50
|
+
inscription.content,
|
|
51
|
+
bitcoinjsLib.opcodes.OP_ENDIF,
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
function createCommitTxData(network, publicKey, inscription) {
|
|
55
|
+
var _a;
|
|
56
|
+
const xOnlyPublicKey = toXOnly(publicKey);
|
|
57
|
+
const script = createInscriptionScript(xOnlyPublicKey, inscription);
|
|
58
|
+
const outputScript = bitcoinjsLib.script.compile(script);
|
|
59
|
+
const scriptTree = {
|
|
60
|
+
output: outputScript,
|
|
61
|
+
redeemVersion: 192,
|
|
62
|
+
};
|
|
63
|
+
const scriptTaproot = bitcoinjsLib.payments.p2tr({
|
|
64
|
+
internalPubkey: xOnlyPublicKey,
|
|
65
|
+
scriptTree,
|
|
66
|
+
redeem: scriptTree,
|
|
67
|
+
network,
|
|
68
|
+
});
|
|
69
|
+
const cblock = (_a = scriptTaproot.witness) === null || _a === void 0 ? void 0 : _a[scriptTaproot.witness.length - 1];
|
|
70
|
+
const tapLeafScript = {
|
|
71
|
+
leafVersion: scriptTaproot.redeemVersion,
|
|
72
|
+
script: outputScript,
|
|
73
|
+
controlBlock: cblock,
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
script,
|
|
77
|
+
scriptTaproot,
|
|
78
|
+
outputScript,
|
|
79
|
+
tapLeafScript,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
exports.createCommitTxData = createCommitTxData;
|
|
83
|
+
//# sourceMappingURL=commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/ordinals/commit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,SAAS,OAAO,CAAC,MAAc;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAUD,SAAgB,qBAAqB,CAAC,IAAY;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAJD,sDAIC;AAED,SAAS,uBAAuB,CAAC,cAAsB,EAAE,WAAwB;IAC7E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,OAAO;QACH,cAAc;QACd,YAAY,CAAC,OAAO,CAAC,WAAW;QAChC,YAAY,CAAC,OAAO,CAAC,IAAI;QACzB,YAAY,CAAC,OAAO,CAAC,KAAK;QAC1B,UAAU;QACV,CAAC;QACD,CAAC;QACD,WAAW,CAAC,WAAW;QACvB,YAAY,CAAC,OAAO,CAAC,IAAI;QACzB,WAAW,CAAC,OAAO;QACnB,YAAY,CAAC,OAAO,CAAC,QAAQ;KAChC,CAAC;AACN,CAAC;AAiBD,SAAgB,kBAAkB,CAC9B,OAA6B,EAC7B,SAAiB,EACjB,WAAwB;;IAExB,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,uBAAuB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG;QACf,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,GAAG;KACrB,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7C,cAAc,EAAE,cAAc;QAC9B,UAAU;QACV,MAAM,EAAE,UAAU;QAClB,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAA,aAAa,CAAC,OAAO,0CAAG,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,MAAM;QACN,aAAa;QACb,YAAY;QACZ,aAAa;KAChB,CAAC;AACN,CAAC;AApCD,gDAoCC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as bitcoinjsLib from "bitcoinjs-lib";
|
|
2
|
+
import { RemoteSigner } from "./signer";
|
|
3
|
+
export { RemoteSigner };
|
|
4
|
+
export declare function inscribeText(signer: RemoteSigner, toAddress: string, feeRate: number, text: string, postage?: number): Promise<bitcoinjsLib.Transaction>;
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.inscribeText = void 0;
|
|
27
|
+
const bitcoinjsLib = __importStar(require("bitcoinjs-lib"));
|
|
28
|
+
const signer_1 = require("./signer");
|
|
29
|
+
const commit_1 = require("./commit");
|
|
30
|
+
const reveal_1 = require("./reveal");
|
|
31
|
+
function estimateTxSize(network, publicKey, commitTxData, toAddress, amount) {
|
|
32
|
+
const psbt = new bitcoinjsLib.Psbt({ network });
|
|
33
|
+
const { scriptTaproot, tapLeafScript } = commitTxData;
|
|
34
|
+
psbt.addInput({
|
|
35
|
+
hash: Buffer.alloc(32, 0),
|
|
36
|
+
index: 0,
|
|
37
|
+
witnessUtxo: {
|
|
38
|
+
value: amount,
|
|
39
|
+
script: scriptTaproot.output,
|
|
40
|
+
},
|
|
41
|
+
tapLeafScript: [tapLeafScript],
|
|
42
|
+
});
|
|
43
|
+
psbt.addOutput({
|
|
44
|
+
value: amount,
|
|
45
|
+
address: toAddress,
|
|
46
|
+
});
|
|
47
|
+
psbt.signInput(0, new signer_1.DummySigner(publicKey));
|
|
48
|
+
psbt.finalizeInput(0, (0, reveal_1.customFinalizer)(commitTxData));
|
|
49
|
+
const tx = psbt.extractTransaction();
|
|
50
|
+
return tx.virtualSize();
|
|
51
|
+
}
|
|
52
|
+
async function inscribeText(signer, toAddress, feeRate, text, postage = 10000) {
|
|
53
|
+
const bitcoinNetwork = await signer.getNetwork();
|
|
54
|
+
const publicKey = Buffer.from(await signer.getPublicKey(), "hex");
|
|
55
|
+
const inscription = (0, commit_1.createTextInscription)(text);
|
|
56
|
+
const commitTxData = (0, commit_1.createCommitTxData)(bitcoinNetwork, publicKey, inscription);
|
|
57
|
+
const revealTxSize = estimateTxSize(bitcoinNetwork, publicKey, commitTxData, toAddress, postage);
|
|
58
|
+
const revealFee = revealTxSize * feeRate;
|
|
59
|
+
const commitTxAmount = revealFee + postage;
|
|
60
|
+
const commitAddress = commitTxData.scriptTaproot.address;
|
|
61
|
+
const commitTxId = await signer.sendToAddress(commitAddress, commitTxAmount);
|
|
62
|
+
const commitUtxoIndex = await signer.getUtxoIndex(commitAddress, commitTxId);
|
|
63
|
+
const commitTxResult = {
|
|
64
|
+
txId: commitTxId,
|
|
65
|
+
sendUtxoIndex: commitUtxoIndex,
|
|
66
|
+
sendAmount: commitTxAmount,
|
|
67
|
+
};
|
|
68
|
+
const revealPsbt = (0, reveal_1.createRevealTx)(bitcoinNetwork, commitTxData, commitTxResult, toAddress, postage);
|
|
69
|
+
const revealTx = await (0, reveal_1.signRevealTx)(signer, commitTxData, revealPsbt);
|
|
70
|
+
return revealTx;
|
|
71
|
+
}
|
|
72
|
+
exports.inscribeText = inscribeText;
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinals/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAE9C,qCAAqD;AACrD,qCAAmF;AACnF,qCAAyE;AAOzE,SAAS,cAAc,CACrB,OAA6B,EAC7B,SAAiB,EACjB,YAA0B,EAC1B,SAAiB,EACjB,MAAc;IAEd,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEhD,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,IAAY,EACZ,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,WAAW,GAAG,IAAA,8BAAqB,EAAC,IAAI,CAAC,CAAC;IAChD,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,eAAe,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAE7E,MAAM,cAAc,GAAG;QACrB,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,eAAe;QAC9B,UAAU,EAAE,cAAc;KAC3B,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;AA7CD,oCA6CC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as bitcoinjsLib from "bitcoinjs-lib";
|
|
3
|
+
import { RemoteSigner } from "./signer";
|
|
4
|
+
import { CommitTxData, CommitTxResult } from "./commit";
|
|
5
|
+
export declare function createRevealTx(network: bitcoinjsLib.Network, commitTxData: CommitTxData, commitTxResult: CommitTxResult, toAddress: string, amount: number): bitcoinjsLib.Psbt;
|
|
6
|
+
export declare const customFinalizer: (commitTxData: CommitTxData) => (inputIndex: number, input: any) => {
|
|
7
|
+
finalScriptWitness: Buffer;
|
|
8
|
+
};
|
|
9
|
+
export declare function signRevealTx(signer: RemoteSigner, commitTxData: CommitTxData, psbt: bitcoinjsLib.Psbt): Promise<bitcoinjsLib.Transaction>;
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.signRevealTx = exports.customFinalizer = exports.createRevealTx = void 0;
|
|
27
|
+
const bitcoinjsLib = __importStar(require("bitcoinjs-lib"));
|
|
28
|
+
const psbtUtils = __importStar(require("bitcoinjs-lib/src/psbt/psbtutils"));
|
|
29
|
+
const { witnessStackToScriptWitness } = psbtUtils;
|
|
30
|
+
function createRevealTx(network, commitTxData, commitTxResult, toAddress, amount) {
|
|
31
|
+
const { scriptTaproot, tapLeafScript } = commitTxData;
|
|
32
|
+
const psbt = new bitcoinjsLib.Psbt({ network });
|
|
33
|
+
psbt.addInput({
|
|
34
|
+
hash: commitTxResult.txId,
|
|
35
|
+
index: commitTxResult.sendUtxoIndex,
|
|
36
|
+
witnessUtxo: {
|
|
37
|
+
value: commitTxResult.sendAmount,
|
|
38
|
+
script: scriptTaproot.output,
|
|
39
|
+
},
|
|
40
|
+
tapLeafScript: [tapLeafScript],
|
|
41
|
+
});
|
|
42
|
+
psbt.addOutput({
|
|
43
|
+
value: amount,
|
|
44
|
+
address: toAddress,
|
|
45
|
+
});
|
|
46
|
+
return psbt;
|
|
47
|
+
}
|
|
48
|
+
exports.createRevealTx = createRevealTx;
|
|
49
|
+
const customFinalizer = (commitTxData) => {
|
|
50
|
+
const { outputScript, tapLeafScript } = commitTxData;
|
|
51
|
+
return (inputIndex, input) => {
|
|
52
|
+
const witness = [input.tapScriptSig[inputIndex].signature]
|
|
53
|
+
.concat(outputScript)
|
|
54
|
+
.concat(tapLeafScript.controlBlock);
|
|
55
|
+
return {
|
|
56
|
+
finalScriptWitness: witnessStackToScriptWitness(witness),
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
exports.customFinalizer = customFinalizer;
|
|
61
|
+
async function signRevealTx(signer, commitTxData, psbt) {
|
|
62
|
+
psbt = await signer.signPsbt(0, psbt);
|
|
63
|
+
psbt.finalizeInput(0, (0, exports.customFinalizer)(commitTxData));
|
|
64
|
+
return psbt.extractTransaction();
|
|
65
|
+
}
|
|
66
|
+
exports.signRevealTx = signRevealTx;
|
|
67
|
+
//# sourceMappingURL=reveal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reveal.js","sourceRoot":"","sources":["../../src/ordinals/reveal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAA8C;AAC9C,4EAA8D;AAK9D,MAAM,EAAE,2BAA2B,EAAE,GAAG,SAAS,CAAC;AAKlD,SAAgB,cAAc,CAC1B,OAA6B,EAC7B,YAA0B,EAC1B,cAA8B,EAC9B,SAAiB,EACjB,MAAc;IAEd,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IAEtD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEhD,IAAI,CAAC,QAAQ,CAAC;QACV,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,KAAK,EAAE,cAAc,CAAC,aAAa;QACnC,WAAW,EAAE;YACT,KAAK,EAAE,cAAc,CAAC,UAAU;YAChC,MAAM,EAAE,aAAa,CAAC,MAAO;SAChC;QACD,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;AA3BD,wCA2BC;AAEM,MAAM,eAAe,GAAG,CAAC,YAA0B,EAAE,EAAE;IAC1D,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC;IAErD,OAAO,CAAC,UAAkB,EAAE,KAAU,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;aACrD,MAAM,CAAC,YAAY,CAAC;aACpB,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,IAAuB;IAGvB,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAGtC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAA,uBAAe,EAAC,YAAY,CAAC,CAAC,CAAC;IAErD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACrC,CAAC;AAZD,oCAYC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Network, Psbt, Signer } from "bitcoinjs-lib";
|
|
3
|
+
export declare class DummySigner implements Signer {
|
|
4
|
+
publicKey: Buffer;
|
|
5
|
+
constructor(publicKey: Buffer);
|
|
6
|
+
sign(_hash: Buffer, _lowR?: boolean | undefined): Buffer;
|
|
7
|
+
signSchnorr(hash: Buffer): Buffer;
|
|
8
|
+
}
|
|
9
|
+
export interface RemoteSigner {
|
|
10
|
+
getNetwork(): Promise<Network>;
|
|
11
|
+
getPublicKey(): Promise<string>;
|
|
12
|
+
sendToAddress(toAddress: string, amount: number): Promise<string>;
|
|
13
|
+
getUtxoIndex(toAddress: string, txId: string): Promise<number>;
|
|
14
|
+
signPsbt(inputIndex: number, psbt: Psbt): Promise<Psbt>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DummySigner = void 0;
|
|
4
|
+
class DummySigner {
|
|
5
|
+
constructor(publicKey) {
|
|
6
|
+
this.publicKey = publicKey;
|
|
7
|
+
}
|
|
8
|
+
sign(_hash, _lowR) {
|
|
9
|
+
return Buffer.from("304502210100000000000000000000000000000000000000000000000000000000000000000220010000000000000000000000000000000000000000000000000000000000000001", "hex");
|
|
10
|
+
}
|
|
11
|
+
signSchnorr(hash) {
|
|
12
|
+
return Buffer.alloc(64, 0);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.DummySigner = DummySigner;
|
|
16
|
+
;
|
|
17
|
+
//# sourceMappingURL=signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/ordinals/signer.ts"],"names":[],"mappings":";;;AAKA,MAAa,WAAW;IAEpB,YAAY,SAAiB;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,KAAa,EAAE,KAA2B;QAE3C,OAAO,MAAM,CAAC,IAAI,CAAC,kJAAkJ,EAAE,KAAK,CAAC,CAAC;IAClL,CAAC;IACD,WAAW,CAAC,IAAY;QAEpB,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;CACJ;AAbD,kCAaC;AAuCA,CAAC"}
|
package/dist/relay.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ElectrsClient } from "./electrs";
|
|
2
|
+
export interface BitcoinTxInfo {
|
|
3
|
+
version: string;
|
|
4
|
+
inputVector: string;
|
|
5
|
+
outputVector: string;
|
|
6
|
+
locktime: string;
|
|
7
|
+
witnessVector?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function getBitcoinTxInfo(electrsClient: ElectrsClient, txId: string, forWitness?: boolean): Promise<BitcoinTxInfo>;
|
|
10
|
+
export interface BitcoinTxProof {
|
|
11
|
+
merkleProof: string;
|
|
12
|
+
txIndexInBlock: number;
|
|
13
|
+
bitcoinHeaders: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function getBitcoinTxProof(electrsClient: ElectrsClient, txId: string, txProofDifficultyFactor: number): Promise<BitcoinTxProof>;
|
|
16
|
+
export declare function getBitcoinHeaders(electrsClient: ElectrsClient, startHeight: number, numBlocks: number): Promise<string>;
|
package/dist/relay.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getBitcoinTxProof = exports.getBitcoinTxInfo = void 0;
|
|
3
|
+
exports.getBitcoinHeaders = exports.getBitcoinTxProof = exports.getBitcoinTxInfo = void 0;
|
|
4
4
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
|
-
async function getBitcoinTxInfo(electrsClient, txId) {
|
|
6
|
+
async function getBitcoinTxInfo(electrsClient, txId, forWitness) {
|
|
7
7
|
const txHex = await electrsClient.getTransactionHex(txId);
|
|
8
8
|
const tx = bitcoinjs_lib_1.Transaction.fromHex(txHex);
|
|
9
9
|
const versionBuffer = Buffer.allocUnsafe(4);
|
|
@@ -14,23 +14,30 @@ async function getBitcoinTxInfo(electrsClient, txId) {
|
|
|
14
14
|
version: versionBuffer.toString("hex"),
|
|
15
15
|
inputVector: (0, utils_1.encodeRawInput)(tx).toString("hex"),
|
|
16
16
|
outputVector: (0, utils_1.encodeRawOutput)(tx).toString("hex"),
|
|
17
|
-
locktime: locktimeBuffer.toString("hex")
|
|
17
|
+
locktime: locktimeBuffer.toString("hex"),
|
|
18
|
+
witnessVector: forWitness ? (0, utils_1.encodeRawWitness)(tx).toString("hex") : undefined,
|
|
19
|
+
witnessVector: forWitness ? (0, utils_1.encodeRawWitness)(tx).toString("hex") : undefined,
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
exports.getBitcoinTxInfo = getBitcoinTxInfo;
|
|
21
23
|
async function getBitcoinTxProof(electrsClient, txId, txProofDifficultyFactor) {
|
|
22
24
|
const merkleProof = await electrsClient.getMerkleProof(txId);
|
|
23
|
-
const
|
|
24
|
-
const blockHeights = range(merkleProof.blockHeight, merkleProof.blockHeight + txProofDifficultyFactor);
|
|
25
|
-
const bitcoinHeaders = await Promise.all(blockHeights.map(async (height) => {
|
|
26
|
-
const hash = await electrsClient.getBlockHash(height);
|
|
27
|
-
return electrsClient.getBlockHeader(hash);
|
|
28
|
-
}));
|
|
25
|
+
const bitcoinHeaders = await getBitcoinHeaders(electrsClient, merkleProof.blockHeight, txProofDifficultyFactor);
|
|
29
26
|
return {
|
|
30
27
|
merkleProof: merkleProof.merkle,
|
|
31
28
|
txIndexInBlock: merkleProof.pos,
|
|
32
|
-
bitcoinHeaders: bitcoinHeaders
|
|
29
|
+
bitcoinHeaders: bitcoinHeaders,
|
|
33
30
|
};
|
|
34
31
|
}
|
|
35
32
|
exports.getBitcoinTxProof = getBitcoinTxProof;
|
|
33
|
+
async function getBitcoinHeaders(electrsClient, startHeight, numBlocks) {
|
|
34
|
+
const range = (start, end) => Array.from({ length: end - start }, (_element, index) => index + start);
|
|
35
|
+
const blockHeights = range(startHeight, startHeight + numBlocks);
|
|
36
|
+
const bitcoinHeaders = await Promise.all(blockHeights.map(async (height) => {
|
|
37
|
+
const hash = await electrsClient.getBlockHash(height);
|
|
38
|
+
return electrsClient.getBlockHeader(hash);
|
|
39
|
+
}));
|
|
40
|
+
return bitcoinHeaders.join('');
|
|
41
|
+
}
|
|
42
|
+
exports.getBitcoinHeaders = getBitcoinHeaders;
|
|
36
43
|
//# 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":";;;AAIA,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;AAtBD,4CAsBC;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;AAbD,8CAaC;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;AAdD,8CAcC"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Block } from "bitcoinjs-lib";
|
|
3
|
+
import { Transaction } from "bitcoinjs-lib/src/transaction";
|
|
4
|
+
export declare function encodeRawInput(tx: Transaction): Buffer;
|
|
5
|
+
export declare function encodeRawOutput(tx: Transaction): Buffer;
|
|
6
|
+
export declare function encodeRawWitness(tx: Transaction): Buffer;
|
|
7
|
+
export declare function getMerkleProof(block: Block, txHash: string, forWitness?: boolean): {
|
|
8
|
+
pos: number;
|
|
9
|
+
proof: string;
|
|
10
|
+
root: string;
|
|
11
|
+
};
|
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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobob/bob-sdk",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"build": "tsc -p tsconfig.json"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist
|
|
11
|
+
"dist/**/*",
|
|
12
12
|
"!**/*.spec.*",
|
|
13
13
|
"!**/*.json",
|
|
14
14
|
"CHANGELOG.md",
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
"@types/mocha": "^10.0.2",
|
|
21
21
|
"@types/node": "^20.8.3",
|
|
22
22
|
"chai": "^4.3.10",
|
|
23
|
+
"ecpair": "^2.1.0",
|
|
23
24
|
"mocha": "^10.2.0",
|
|
25
|
+
"tiny-secp256k1": "^2.2.3",
|
|
24
26
|
"ts-mocha": "^10.0.0",
|
|
25
27
|
"ts-node-dev": "^2.0.0",
|
|
26
28
|
"typescript": "^5.2.2"
|
|
@@ -28,4 +30,4 @@
|
|
|
28
30
|
"dependencies": {
|
|
29
31
|
"bitcoinjs-lib": "^6.1.5"
|
|
30
32
|
}
|
|
31
|
-
}
|
|
33
|
+
}
|