Skip to content

Commit

Permalink
Merge pull request #5476
Browse files Browse the repository at this point in the history
  • Loading branch information
therealdwright authored Feb 6, 2025
2 parents b6a6624 + dd26ab3 commit 3aca764
Show file tree
Hide file tree
Showing 74 changed files with 218 additions and 173 deletions.
3 changes: 2 additions & 1 deletion CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@
/modules/sdk-core/src/bitgo/lightning/ @BitGo/btc-team
/modules/unspents/ @BitGo/btc-team
/modules/utxo-bin/ @BitGo/btc-team
/modules/utxo-staking/ @BitGo/btc-team
/modules/utxo-core/ @BitGo/btc-team
/modules/utxo-lib/ @BitGo/btc-team
/modules/utxo-ord/ @BitGo/btc-team
/modules/utxo-staking/ @BitGo/btc-team

# Lightning coin modules
/modules/abstract-lightning/ @BitGo/btc-team
Expand Down
1 change: 1 addition & 0 deletions modules/abstract-utxo/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ module.exports = {
extends: ['../../.eslintrc.json'],
rules: {
'import/order': ['error', { 'newlines-between': 'always' }],
'import/no-internal-modules': 'off',
},
};
2 changes: 1 addition & 1 deletion modules/abstract-utxo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@
"@bitgo/sdk-core": "^28.23.0",
"@bitgo/unspents": "^0.47.17",
"@bitgo/utxo-lib": "^11.2.1",
"@bitgo/utxo-core": "^1.0.0",
"@bitgo/wasm-miniscript": "^2.0.0-beta.2",
"@types/bluebird": "^3.5.25",
"@types/lodash": "^4.14.121",
"@types/superagent": "4.1.15",
"bignumber.js": "^9.0.2",
"bip174": "npm:@bitgo-forks/[email protected]",
"bitcoinjs-message": "npm:@bitgo-forks/[email protected]",
"bluebird": "^3.5.3",
"debug": "^3.1.0",
Expand Down
5 changes: 0 additions & 5 deletions modules/abstract-utxo/src/core/descriptor/psbt/index.ts

This file was deleted.

7 changes: 0 additions & 7 deletions modules/abstract-utxo/src/core/descriptor/signTxLocal.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import assert from 'assert';

import * as utxolib from '@bitgo/utxo-lib';
import { Descriptor } from '@bitgo/wasm-miniscript';
import { DescriptorMap } from '@bitgo/utxo-core/descriptor';

import { UtxoCoinSpecific, VerifyAddressOptions } from '../abstractUtxoCoin';
import { DescriptorMap } from '../core/descriptor';

class DescriptorAddressMismatchError extends Error {
constructor(descriptor: Descriptor, index: number, derivedAddress: string, expectedAddress: string) {
Expand Down
2 changes: 1 addition & 1 deletion modules/abstract-utxo/src/descriptor/descriptorWallet.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as t from 'io-ts';
import { IWallet, WalletCoinSpecific } from '@bitgo/sdk-core';
import { DescriptorMap } from '@bitgo/utxo-core/descriptor';

import { DescriptorMap } from '../core/descriptor';
import { UtxoWallet, UtxoWalletData } from '../wallet';

import { NamedDescriptor } from './NamedDescriptor';
Expand Down
1 change: 1 addition & 0 deletions modules/abstract-utxo/src/descriptor/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export { Miniscript, Descriptor } from '@bitgo/wasm-miniscript';
export { DescriptorMap } from '@bitgo/utxo-core/descriptor';
export { assertDescriptorWalletAddress } from './assertDescriptorWalletAddress';
export { NamedDescriptor, createNamedDescriptorWithSignature, hasValidSignature } from './NamedDescriptor';
export { isDescriptorWallet, getDescriptorMapFromWallet } from './descriptorWallet';
Expand Down
3 changes: 1 addition & 2 deletions modules/abstract-utxo/src/descriptor/validatePolicy.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Descriptor } from '@bitgo/wasm-miniscript';
import { EnvironmentName, Triple } from '@bitgo/sdk-core';
import * as utxolib from '@bitgo/utxo-lib';

import { DescriptorMap, toDescriptorMap } from '../core/descriptor';
import { DescriptorMap, toDescriptorMap } from '@bitgo/utxo-core/descriptor';

import { parseDescriptor } from './builder';
import { hasValidSignature, NamedDescriptor } from './NamedDescriptor';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import * as utxolib from '@bitgo/utxo-lib';
import * as t from 'io-ts';

import { NamedDescriptor } from '../../descriptor';
import { DescriptorMap, NamedDescriptor } from '../../descriptor';
import { OfflineVaultSignable, toKeyTriple } from '../OfflineVaultSignable';
import {
getValidatorOneOfTemplates,
getValidatorSignedByUserKey,
getValidatorSome,
toDescriptorMapValidate,
} from '../../descriptor/validatePolicy';
import { DescriptorMap } from '../../core/descriptor';
import { explainPsbt, signPsbt } from '../../transaction/descriptor';
import { TransactionExplanation } from '../TransactionExplanation';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import * as utxolib from '@bitgo/utxo-lib';
import { ITransactionRecipient } from '@bitgo/sdk-core';
import * as coreDescriptors from '@bitgo/utxo-core/descriptor';

import * as coreDescriptors from '../../core/descriptor';
import { ParsedOutput } from '../../core/descriptor/psbt/parse';
import { toExtendedAddressFormat } from '../recipient';
import { TransactionExplanation } from '../../abstractUtxoCoin';

function toRecipient(output: ParsedOutput, network: utxolib.Network): ITransactionRecipient {
function toRecipient(output: coreDescriptors.psbt.ParsedOutput, network: utxolib.Network): ITransactionRecipient {
return {
address: toExtendedAddressFormat(output.script, network),
amount: output.value.toString(),
Expand Down
2 changes: 1 addition & 1 deletion modules/abstract-utxo/src/transaction/descriptor/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export { DescriptorMap } from '../../core/descriptor';
export { DescriptorMap } from '@bitgo/utxo-core/descriptor';
export { explainPsbt } from './explainPsbt';
export { parse } from './parse';
export { parseToAmountType } from './parseToAmountType';
Expand Down
5 changes: 3 additions & 2 deletions modules/abstract-utxo/src/transaction/descriptor/parse.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import * as utxolib from '@bitgo/utxo-lib';
import { ITransactionRecipient } from '@bitgo/sdk-core';
import * as coreDescriptors from '@bitgo/utxo-core/descriptor';

import {
AbstractUtxoCoin,
Expand All @@ -11,11 +12,11 @@ import {
import { getKeySignatures, toBip32Triple, UtxoNamedKeychains } from '../../keychains';
import { getDescriptorMapFromWallet, getPolicyForEnv } from '../../descriptor';
import { IDescriptorWallet } from '../../descriptor/descriptorWallet';
import * as coreDescriptors from '../../core/descriptor';
import { ParsedOutput } from '../../core/descriptor/psbt/parse';
import { fromExtendedAddressFormatToScript, toExtendedAddressFormat } from '../recipient';
import { outputDifferencesWithExpected, OutputDifferenceWithExpected } from '../outputDifference';

type ParsedOutput = coreDescriptors.psbt.ParsedOutput;

export type RecipientOutput = Omit<ParsedOutput, 'value'> & {
value: bigint | 'max';
};
Expand Down
6 changes: 2 additions & 4 deletions modules/abstract-utxo/src/transaction/descriptor/signPsbt.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import * as utxolib from '@bitgo/utxo-lib';

import { DescriptorMap } from '../../core/descriptor';
import { findDescriptorForInput } from '../../core/descriptor/psbt/findDescriptors';
import { DescriptorMap, psbt } from '@bitgo/utxo-core/descriptor';

export class ErrorUnknownInput extends Error {
constructor(public vin: number) {
Expand Down Expand Up @@ -33,7 +31,7 @@ export function signPsbt(
}
): void {
for (const [vin, input] of tx.data.inputs.entries()) {
if (!findDescriptorForInput(input, descriptorMap)) {
if (!psbt.findDescriptorForInput(input, descriptorMap)) {
switch (params.onUnknownInput) {
case 'skip':
continue;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as utxolib from '@bitgo/utxo-lib';
import { ITransactionRecipient, VerifyTransactionOptions } from '@bitgo/sdk-core';
import { DescriptorMap } from '@bitgo/utxo-core/descriptor';

import { DescriptorMap } from '../../core/descriptor';
import { AbstractUtxoCoin, BaseOutput, BaseParsedTransactionOutputs } from '../../abstractUtxoCoin';

import { toBaseParsedTransactionOutputsFromPsbt } from './parse';
Expand Down
4 changes: 2 additions & 2 deletions modules/abstract-utxo/test/descriptor/NamedDescriptor.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import assert from 'assert';

import { getFixture, getKeyTriple } from '@bitgo/utxo-core/testutil';

import { assertHasValidSignature, createNamedDescriptorWithSignature } from '../../src/descriptor/NamedDescriptor';
import { getKeyTriple } from '../core/key.utils';
import { getDescriptorFromBuilder } from '../../src/descriptor/builder';
import { getFixture } from '../core/fixtures.utils';

describe('NamedDescriptor', function () {
it('creates named descriptor with signature', async function () {
Expand Down
3 changes: 2 additions & 1 deletion modules/abstract-utxo/test/descriptor/builder.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import * as assert from 'assert';

import { getKeyTriple } from '@bitgo/utxo-core/testutil';

import { parseDescriptor, DescriptorBuilder, getDescriptorFromBuilder } from '../../src/descriptor/builder';
import { getKeyTriple } from '../core/key.utils';

function getDescriptorBuilderForType(name: DescriptorBuilder['name']): DescriptorBuilder {
const keys = getKeyTriple().map((k) => k.neutered());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import assert from 'assert';

import { getKeyTriple } from '../../core/key.utils';
import { getFixture, getKeyTriple } from '@bitgo/utxo-core/testutil';

import { assertHasValidSignature } from '../../../src/descriptor/NamedDescriptor';
import { DefaultWsh2Of3 } from '../../../src/descriptor/createWallet';
import { getFixture } from '../../core/fixtures.utils';

describe('createDescriptors', function () {
it('should create standard named descriptors', async function () {
Expand Down
3 changes: 2 additions & 1 deletion modules/abstract-utxo/test/descriptor/descriptorWallet.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import assert from 'assert';

import { getDefaultXPubs, getDescriptorMap } from '@bitgo/utxo-core/testutil/descriptor';

import { getDescriptorMapFromWallet, isDescriptorWallet } from '../../src/descriptor';
import { UtxoWallet } from '../../src/wallet';
import { getDefaultXPubs, getDescriptorMap } from '../core/descriptor/descriptor.utils';
import { toBip32Triple } from '../../src/keychains';
import { policyAllowAll } from '../../src/descriptor/validatePolicy';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import assert from 'assert';

import { getKeyTriple } from '@bitgo/utxo-core/testutil';
import { getDescriptorMap, mockPsbtDefaultWithDescriptorTemplate } from '@bitgo/utxo-core/testutil/descriptor';

import { TransactionExplanation } from '../../../src';
import { explainPsbt } from '../../../src/transaction/descriptor';
import { mockPsbtDefaultWithDescriptorTemplate } from '../../core/descriptor/psbt/mock.utils';
import { getDescriptorMap } from '../../core/descriptor/descriptor.utils';
import { getKeyTriple } from '../../core/key.utils';

import { getFixtureRoot } from './fixtures.utils';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'assert';
import path from 'path';

import { getFixture, jsonNormalize } from '../../core/fixtures.utils';
import { getFixture, jsonNormalize } from '@bitgo/utxo-core/testutil';

interface FixtureRoot {
assertEqualFixture(name: string, v: unknown): Promise<void>;
Expand Down
12 changes: 8 additions & 4 deletions modules/abstract-utxo/test/transaction/descriptor/parse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@ import assert from 'assert';

import * as utxolib from '@bitgo/utxo-lib';
import { Descriptor } from '@bitgo/wasm-miniscript';
import {
getDefaultXPubs,
getDescriptor,
getDescriptorMap,
mockPsbtDefault,
} from '@bitgo/utxo-core/testutil/descriptor';
import { toPlainObject } from '@bitgo/utxo-core/testutil';
import { createAddressFromDescriptor } from '@bitgo/utxo-core/descriptor';

import { mockPsbtDefault } from '../../core/descriptor/psbt/mock.utils';
import { ParsedOutputsBigInt, toBaseParsedTransactionOutputsFromPsbt } from '../../../src/transaction/descriptor/parse';
import { getDefaultXPubs, getDescriptor, getDescriptorMap } from '../../core/descriptor/descriptor.utils';
import { toPlainObject } from '../../core/toPlainObject.utils';
import {
AggregateValidationError,
assertExpectedOutputDifference,
Expand All @@ -15,7 +20,6 @@ import {
} from '../../../src/transaction/descriptor/verifyTransaction';
import { toAmountType } from '../../../src/transaction/descriptor/parseToAmountType';
import { BaseOutput } from '../../../src';
import { createAddressFromDescriptor } from '../../../src/core/descriptor';

import { getFixtureRoot } from './fixtures.utils';

Expand Down
6 changes: 3 additions & 3 deletions modules/abstract-utxo/test/transaction/descriptor/sign.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import assert from 'assert';

import { mockPsbtDefaultWithDescriptorTemplate } from '../../core/descriptor/psbt/mock.utils';
import { getKeyTriple } from '@bitgo/utxo-core/testutil';
import { getDescriptorMap, mockPsbtDefaultWithDescriptorTemplate } from '@bitgo/utxo-core/testutil/descriptor';

import { signPsbt } from '../../../src/transaction/descriptor';
import { getKeyTriple } from '../../core/key.utils';
import { getDescriptorMap } from '../../core/descriptor/descriptor.utils';
import { ErrorUnknownInput } from '../../../src/transaction/descriptor/signPsbt';

describe('sign', function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@ import assert from 'assert';
import { Descriptor } from '@bitgo/wasm-miniscript';
import { Triple } from '@bitgo/sdk-core';
import { BIP32Interface } from '@bitgo/utxo-lib';
import { getKeyTriple } from '@bitgo/utxo-core/testutil';

import { DescriptorTemplate, getDescriptor } from '../../../../utxo-core/src/testutil/descriptor/descriptors';
import {
assertDescriptorPolicy,
DescriptorPolicyValidationError,
DescriptorValidationPolicy,
getPolicyForEnv,
getValidatorDescriptorTemplate,
} from '../../../src/descriptor/validatePolicy';
import { DescriptorTemplate, getDescriptor } from '../../core/descriptor/descriptor.utils';
import { getKeyTriple } from '../../core/key.utils';
import { NamedDescriptor } from '../../../src/descriptor';
import { createNamedDescriptorWithSignature } from '../../../src/descriptor/NamedDescriptor';
import { NamedDescriptor, createNamedDescriptorWithSignature } from '../../../src/descriptor';

function testAssertDescriptorPolicy(
d: NamedDescriptor<string>,
Expand Down
5 changes: 5 additions & 0 deletions modules/abstract-utxo/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
"rootDir": "./",
"strictPropertyInitialization": false,
"esModuleInterop": true,
"moduleResolution": "node16",
"module": "node16",
"typeRoots": ["../../types", "./node_modules/@types", "../../node_modules/@types"]
},
"include": ["src/**/*", "test/**/*"],
Expand All @@ -21,6 +23,9 @@
},
{
"path": "../utxo-lib"
},
{
"path": "../utxo-core"
}
]
}
6 changes: 6 additions & 0 deletions modules/utxo-core/.mocharc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
'use strict';

module.exports = {
require: 'ts-node/register',
extension: ['.js', '.ts'],
};
6 changes: 6 additions & 0 deletions modules/utxo-core/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# utxo-core

This repository contains core types and functions for Bitcoin-like UTXO-based cryptocurrencies.

It is the glue between SDK-dependent modules like `abstract-utxo` and low-level libraries like `utxo-lib` and
`wasm-miniscript`.
60 changes: 60 additions & 0 deletions modules/utxo-core/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"name": "@bitgo/utxo-core",
"version": "1.0.0",
"description": "BitGo UTXO Core types",
"main": "./dist/src/index.js",
"types": "./dist/src/index.d.ts",
"files": [
"dist/src"
],
"exports": {
".": "./dist/src/index.js",
"./descriptor": "./dist/src/descriptor/index.js",
"./testutil": "./dist/src/testutil/index.js",
"./testutil/descriptor": "./dist/src/testutil/descriptor/index.js"
},
"browser": {
".": "./dist/src/index.js",
"./descriptor": "./dist/src/descriptor/index.js",
"./testutil": "./dist/src/testutil/index.js",
"./testutil/descriptor": "./dist/src/testutil/descriptor/index.js"
},
"scripts": {
"build": "yarn tsc --build --incremental --verbose .",
"fmt": "prettier --write .",
"check-fmt": "prettier --check .",
"clean": "rm -r ./dist",
"lint": "eslint --quiet .",
"prepare": "npm run build",
"test": "npm run unit-test",
"unit-test": "mocha --recursive test/"
},
"author": "BitGo SDK Team <[email protected]>",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/BitGo/BitGoJS.git",
"directory": "modules/utxo-core"
},
"lint-staged": {
"*.{js,ts}": [
"yarn prettier --write",
"yarn eslint --fix"
]
},
"publishConfig": {
"access": "public"
},
"nyc": {
"extension": [
".ts"
]
},
"dependencies": {
"@bitgo/unspents": "^0.47.17",
"@bitgo/utxo-lib": "^11.2.1",
"@bitgo/wasm-miniscript": "^2.0.0-beta.2",
"bip174": "npm:@bitgo-forks/[email protected]"
},
"gitHead": "18e460ddf02de2dbf13c2aa243478188fb539f0c"
}
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit 3aca764

Please sign in to comment.