@sidhujag/sysweb3-keyring 2.0.0 → 2.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/CHANGELOG.md +8 -0
- package/README.md +108 -0
- package/cjs/bip84-native.js +8 -0
- package/cjs/bip84-native.js.map +1 -0
- package/cjs/keyring-core.js +226 -0
- package/cjs/keyring-core.js.map +1 -1
- package/cjs/public-bip84.js +157 -0
- package/cjs/public-bip84.js.map +1 -0
- package/cjs/software-utxo-account.js +12 -0
- package/cjs/software-utxo-account.js.map +1 -0
- package/cjs/software.js +8 -0
- package/cjs/software.js.map +1 -1
- package/cjs/transactions/bip84-native-plan.js +481 -0
- package/cjs/transactions/bip84-native-plan.js.map +1 -0
- package/cjs/transactions/prepared-bip84.js +214 -0
- package/cjs/transactions/prepared-bip84.js.map +1 -0
- package/cjs/transactions/prepared-evm.js +1 -0
- package/cjs/transactions/prepared-evm.js.map +1 -1
- package/package.json +14 -2
- package/types/bip84-native.d.ts +3 -0
- package/types/keyring-core.d.ts +8 -0
- package/types/public-bip84.d.ts +39 -0
- package/types/software-utxo-account.d.ts +13 -0
- package/types/software.d.ts +10 -0
- package/types/transactions/bip84-native-plan.d.ts +83 -0
- package/types/transactions/prepared-bip84.d.ts +27 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.snapshotPreparedBip84Request = snapshotPreparedBip84Request;
|
|
7
|
+
exports.clearBip84PrivateNodes = clearBip84PrivateNodes;
|
|
8
|
+
exports.signValidatedBip84Plan = signValidatedBip84Plan;
|
|
9
|
+
const secp256k1_1 = __importDefault(require("@bitcoinerlab/secp256k1"));
|
|
10
|
+
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
11
|
+
const public_bip84_1 = require("../public-bip84");
|
|
12
|
+
const bip84_native_plan_1 = require("./bip84-native-plan");
|
|
13
|
+
/** Private host snapshot. A public prepared DTO never carries signing authority. */
|
|
14
|
+
function snapshotPreparedBip84Request(input) {
|
|
15
|
+
const r = (0, bip84_native_plan_1.record)(input, ['account', 'prepared']);
|
|
16
|
+
const a = (0, bip84_native_plan_1.record)(r.account, ['type', 'index', 'expectedAccountKey']);
|
|
17
|
+
const p = (0, bip84_native_plan_1.record)(r.prepared, ['plan', 'unsignedTransaction', 'feeSatoshis']);
|
|
18
|
+
if (a.type !== 'HDAccount')
|
|
19
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
20
|
+
const accountIndex = (0, bip84_native_plan_1.index)(a.index);
|
|
21
|
+
if (typeof a.expectedAccountKey !== 'string' ||
|
|
22
|
+
a.expectedAccountKey.length > 112 ||
|
|
23
|
+
typeof p.unsignedTransaction !== 'string' ||
|
|
24
|
+
p.unsignedTransaction.length > bip84_native_plan_1.LIMITS.unsignedBytes * 2 ||
|
|
25
|
+
!/^(?:[0-9a-f]{2})+$/.test(p.unsignedTransaction) ||
|
|
26
|
+
typeof p.feeSatoshis !== 'string' ||
|
|
27
|
+
!/^(0|[1-9][0-9]{0,18})$/.test(p.feeSatoshis))
|
|
28
|
+
return (0, bip84_native_plan_1.fail)('INVALID_REQUEST');
|
|
29
|
+
const validated = (0, bip84_native_plan_1.validateBip84NativePlan)(p.plan);
|
|
30
|
+
if (accountIndex !== validated.prepared.plan.account.accountIndex ||
|
|
31
|
+
a.expectedAccountKey !== validated.prepared.plan.account.canonicalKey)
|
|
32
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
33
|
+
if (p.unsignedTransaction !== validated.prepared.unsignedTransaction ||
|
|
34
|
+
p.feeSatoshis !== validated.prepared.feeSatoshis)
|
|
35
|
+
return (0, bip84_native_plan_1.fail)('INVALID_REQUEST');
|
|
36
|
+
return {
|
|
37
|
+
account: Object.freeze({
|
|
38
|
+
type: 'HDAccount',
|
|
39
|
+
index: accountIndex,
|
|
40
|
+
expectedAccountKey: a.expectedAccountKey,
|
|
41
|
+
}),
|
|
42
|
+
validated,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Only operation-owned nodes. No session/shared key objects may be supplied. */
|
|
46
|
+
function clearBip84PrivateNodes(nodes) {
|
|
47
|
+
while (nodes.length) {
|
|
48
|
+
const node = nodes.pop();
|
|
49
|
+
try {
|
|
50
|
+
node.privateKey?.fill(0);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Continue retiring the other owned buffers and the operation token.
|
|
54
|
+
// JS/library copies and inaccessible buffers are not claimed zeroized.
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const equal = (left, right) => Buffer.from(left).equals(Buffer.from(right));
|
|
59
|
+
/** Internally owned PSBT only. No provider, generic SDK signer or partial result. */
|
|
60
|
+
function signValidatedBip84Plan(validated, accountNode, assertCurrent) {
|
|
61
|
+
const nodes = [];
|
|
62
|
+
try {
|
|
63
|
+
const { prepared, psbt, previousOutputs } = validated;
|
|
64
|
+
const { plan } = prepared;
|
|
65
|
+
const profile = (0, bip84_native_plan_1.bip84Profile)(plan.network.network);
|
|
66
|
+
assertCurrent();
|
|
67
|
+
const derivedAccount = (0, public_bip84_1.parseBip84PublicAccount)({
|
|
68
|
+
network: plan.network.network,
|
|
69
|
+
accountKey: accountNode.neutered().toBase58(),
|
|
70
|
+
});
|
|
71
|
+
if (derivedAccount.canonicalKey !== plan.account.canonicalKey ||
|
|
72
|
+
derivedAccount.accountIndex !== plan.account.accountIndex)
|
|
73
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
74
|
+
const branches = new Map();
|
|
75
|
+
const children = new Map();
|
|
76
|
+
const publicKeys = [];
|
|
77
|
+
for (const [i, input] of plan.inputs.entries()) {
|
|
78
|
+
assertCurrent();
|
|
79
|
+
let branch = branches.get(input.branch);
|
|
80
|
+
if (!branch) {
|
|
81
|
+
branch = accountNode.derive(input.branch);
|
|
82
|
+
nodes.push(branch);
|
|
83
|
+
if (branch.index !== input.branch)
|
|
84
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
85
|
+
branches.set(input.branch, branch);
|
|
86
|
+
}
|
|
87
|
+
const path = `${input.branch}/${input.index}`;
|
|
88
|
+
let child = children.get(path);
|
|
89
|
+
if (!child) {
|
|
90
|
+
child = branch.derive(input.index);
|
|
91
|
+
nodes.push(child);
|
|
92
|
+
if (child.index !== input.index)
|
|
93
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
94
|
+
children.set(path, child);
|
|
95
|
+
}
|
|
96
|
+
const pubkey = Uint8Array.from(child.publicKey);
|
|
97
|
+
const payment = bitcoinjs_lib_1.payments.p2wpkh({
|
|
98
|
+
pubkey,
|
|
99
|
+
network: profile.addressNetwork,
|
|
100
|
+
});
|
|
101
|
+
if (pubkey.length !== 33 ||
|
|
102
|
+
!payment.output ||
|
|
103
|
+
!equal(payment.output, previousOutputs[i].script))
|
|
104
|
+
return (0, bip84_native_plan_1.fail)('INPUT_MISMATCH');
|
|
105
|
+
publicKeys.push(pubkey);
|
|
106
|
+
const signer = child;
|
|
107
|
+
assertCurrent();
|
|
108
|
+
psbt.signInput(i, {
|
|
109
|
+
publicKey: pubkey,
|
|
110
|
+
sign(hash) {
|
|
111
|
+
assertCurrent();
|
|
112
|
+
const signature = signer.sign(hash);
|
|
113
|
+
assertCurrent();
|
|
114
|
+
return signature;
|
|
115
|
+
},
|
|
116
|
+
}, [bitcoinjs_lib_1.Transaction.SIGHASH_ALL]);
|
|
117
|
+
assertCurrent();
|
|
118
|
+
const partial = psbt.data.inputs[i].partialSig;
|
|
119
|
+
if (!partial ||
|
|
120
|
+
partial.length !== 1 ||
|
|
121
|
+
!equal(partial[0].pubkey, pubkey) ||
|
|
122
|
+
bitcoinjs_lib_1.script.signature.decode(partial[0].signature).hashType !==
|
|
123
|
+
bitcoinjs_lib_1.Transaction.SIGHASH_ALL ||
|
|
124
|
+
psbt.validateSignaturesOfInput(i, (key, hash, signature) => equal(key, pubkey) && secp256k1_1.default.verify(hash, key, signature, true), pubkey) !== true)
|
|
125
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
126
|
+
}
|
|
127
|
+
// Verify change from the private-derived account as well as the public plan.
|
|
128
|
+
if (plan.change) {
|
|
129
|
+
assertCurrent();
|
|
130
|
+
const branch = accountNode.neutered().derive(1);
|
|
131
|
+
if (branch.index !== 1)
|
|
132
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
133
|
+
const child = branch.derive(plan.change.index);
|
|
134
|
+
if (child.index !== plan.change.index)
|
|
135
|
+
return (0, bip84_native_plan_1.fail)('ACCOUNT_MISMATCH');
|
|
136
|
+
const payment = bitcoinjs_lib_1.payments.p2wpkh({
|
|
137
|
+
pubkey: child.publicKey,
|
|
138
|
+
network: profile.addressNetwork,
|
|
139
|
+
});
|
|
140
|
+
if (!payment.output || !equal(payment.output, psbt.txOutputs[1].script))
|
|
141
|
+
return (0, bip84_native_plan_1.fail)('INPUT_MISMATCH');
|
|
142
|
+
}
|
|
143
|
+
if (psbt.toBuffer().length > bip84_native_plan_1.LIMITS.psbtBytes)
|
|
144
|
+
return (0, bip84_native_plan_1.fail)('LIMIT_EXCEEDED');
|
|
145
|
+
assertCurrent();
|
|
146
|
+
for (let i = 0; i < plan.inputs.length; i++) {
|
|
147
|
+
psbt.finalizeInput(i);
|
|
148
|
+
const input = psbt.data.inputs[i];
|
|
149
|
+
if (!(input.finalScriptWitness instanceof Uint8Array) ||
|
|
150
|
+
input.finalScriptWitness.length === 0 ||
|
|
151
|
+
(input.finalScriptSig !== undefined && input.finalScriptSig.length > 0))
|
|
152
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
153
|
+
}
|
|
154
|
+
if (psbt.toBuffer().length > bip84_native_plan_1.LIMITS.psbtBytes)
|
|
155
|
+
return (0, bip84_native_plan_1.fail)('LIMIT_EXCEEDED');
|
|
156
|
+
assertCurrent();
|
|
157
|
+
// SJS overrides fee/extraction helpers. Their success is not our fee proof.
|
|
158
|
+
const bytes = psbt.extractTransaction().toBuffer();
|
|
159
|
+
if (bytes.length > bip84_native_plan_1.LIMITS.signedBytes)
|
|
160
|
+
return (0, bip84_native_plan_1.fail)('LIMIT_EXCEEDED');
|
|
161
|
+
const transaction = bitcoinjs_lib_1.Transaction.fromBuffer(bytes);
|
|
162
|
+
if (!equal(transaction.toBuffer(), bytes) ||
|
|
163
|
+
transaction.ins.length !== plan.inputs.length)
|
|
164
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
165
|
+
for (const [i, input] of transaction.ins.entries()) {
|
|
166
|
+
assertCurrent();
|
|
167
|
+
if (input.script.length !== 0 ||
|
|
168
|
+
input.witness.length !== 2 ||
|
|
169
|
+
!equal(input.witness[1], publicKeys[i]))
|
|
170
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
171
|
+
const signature = bitcoinjs_lib_1.script.signature.decode(input.witness[0]);
|
|
172
|
+
const scriptCode = bitcoinjs_lib_1.payments.p2pkh({ pubkey: publicKeys[i] }).output;
|
|
173
|
+
if (signature.hashType !== bitcoinjs_lib_1.Transaction.SIGHASH_ALL ||
|
|
174
|
+
!scriptCode ||
|
|
175
|
+
!equal(bitcoinjs_lib_1.script.signature.encode(signature.signature, signature.hashType), input.witness[0]) ||
|
|
176
|
+
!secp256k1_1.default.verify(transaction.hashForWitnessV0(i, scriptCode, previousOutputs[i].value, bitcoinjs_lib_1.Transaction.SIGHASH_ALL), publicKeys[i], signature.signature, true))
|
|
177
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
178
|
+
}
|
|
179
|
+
const unsigned = transaction.clone();
|
|
180
|
+
unsigned.stripWitnesses();
|
|
181
|
+
if (unsigned.toHex() !== prepared.unsignedTransaction)
|
|
182
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
183
|
+
const fee = previousOutputs.reduce((sum, output) => sum + output.value, 0n) -
|
|
184
|
+
transaction.outs.reduce((sum, output) => sum + output.value, 0n);
|
|
185
|
+
const virtualSize = transaction.virtualSize();
|
|
186
|
+
if (fee < 0n ||
|
|
187
|
+
fee.toString() !== prepared.feeSatoshis ||
|
|
188
|
+
fee > bip84_native_plan_1.LIMITS.maxFee ||
|
|
189
|
+
fee > BigInt(plan.feeLimits.maxFeeSatoshis) ||
|
|
190
|
+
!Number.isSafeInteger(virtualSize) ||
|
|
191
|
+
virtualSize <= 0 ||
|
|
192
|
+
fee > BigInt(virtualSize) * bip84_native_plan_1.LIMITS.maxFeeRate ||
|
|
193
|
+
fee > BigInt(virtualSize) * BigInt(plan.feeLimits.maxFeeRateSatPerVByte))
|
|
194
|
+
return (0, bip84_native_plan_1.fail)('FEE_LIMIT');
|
|
195
|
+
assertCurrent();
|
|
196
|
+
return Object.freeze({
|
|
197
|
+
rawTransaction: transaction.toHex(),
|
|
198
|
+
txid: transaction.getId(),
|
|
199
|
+
wtxid: Buffer.from(transaction.getHash(true)).reverse().toString('hex'),
|
|
200
|
+
unsignedTransaction: prepared.unsignedTransaction,
|
|
201
|
+
feeSatoshis: fee.toString(),
|
|
202
|
+
virtualSize,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
if (error instanceof bip84_native_plan_1.Bip84NativeError)
|
|
207
|
+
throw error;
|
|
208
|
+
return (0, bip84_native_plan_1.fail)('SIGNATURE_INVALID');
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
clearBip84PrivateNodes(nodes);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=prepared-bip84.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepared-bip84.js","sourceRoot":"","sources":["../../../src/transactions/prepared-bip84.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,7 @@ function snapshotPreparedEvmRequest(input) {
|
|
|
70
70
|
!network.url ||
|
|
71
71
|
network.url.length > 4096 ||
|
|
72
72
|
network.url.trim() !== network.url ||
|
|
73
|
+
// eslint-disable-next-line no-control-regex -- Reject endpoint control characters and lone surrogates.
|
|
73
74
|
/[\uD800-\uDFFF\u0000-\u001f\u007f]/u.test(network.url))
|
|
74
75
|
throw invalid();
|
|
75
76
|
const chainId = quantity(network.chainId, UINT256, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepared-evm.js","sourceRoot":"","sources":["../../../src/transactions/prepared-evm.ts"],"names":[],"mappings":";;AAgHA,
|
|
1
|
+
{"version":3,"file":"prepared-evm.js","sourceRoot":"","sources":["../../../src/transactions/prepared-evm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sidhujag/sysweb3-keyring",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Keyring Manager for UTXO and Web3 Wallets",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -47,6 +47,18 @@
|
|
|
47
47
|
],
|
|
48
48
|
"cjs/ledger/host-types.js": [
|
|
49
49
|
"types/ledger/host-types.d.ts"
|
|
50
|
+
],
|
|
51
|
+
"cjs/public-bip84": [
|
|
52
|
+
"types/public-bip84.d.ts"
|
|
53
|
+
],
|
|
54
|
+
"cjs/public-bip84.js": [
|
|
55
|
+
"types/public-bip84.d.ts"
|
|
56
|
+
],
|
|
57
|
+
"cjs/bip84-native": [
|
|
58
|
+
"types/bip84-native.d.ts"
|
|
59
|
+
],
|
|
60
|
+
"cjs/bip84-native.js": [
|
|
61
|
+
"types/bip84-native.d.ts"
|
|
50
62
|
]
|
|
51
63
|
}
|
|
52
64
|
},
|
|
@@ -79,7 +91,7 @@
|
|
|
79
91
|
"varuint-bitcoin": "^2.0.0"
|
|
80
92
|
},
|
|
81
93
|
"peerDependencies": {
|
|
82
|
-
"syscoinjs-lib": "^1.0.
|
|
94
|
+
"syscoinjs-lib": "^1.0.276"
|
|
83
95
|
},
|
|
84
96
|
"resolutions": {
|
|
85
97
|
"axios": "^1.18.1",
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Pure native-coin BIP84 transfer preparation, without a wallet or provider. */
|
|
2
|
+
export { Bip84NativeError, prepareBip84NativeTransaction, } from './transactions/bip84-native-plan';
|
|
3
|
+
export type { Bip84NativeErrorCode, Bip84NetworkBinding, Bip84Guard, Bip84NativePlan, PreparedBip84NativeTransaction, } from './transactions/bip84-native-plan';
|
package/types/keyring-core.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { INetwork, INetworkType } from '@sidhujag/sysweb3-network';
|
|
2
2
|
import { IDecryptPrivateRecordParams, IEncryptedPrivateRecord, IEncryptPrivateRecordParams } from './private-records';
|
|
3
3
|
import { SyscoinHDSigner } from './signers';
|
|
4
|
+
import { Bip84HdPublicRequest, Bip84HdPublicResult } from './software-utxo-account';
|
|
5
|
+
import { Bip84Guard } from './transactions/bip84-native-plan';
|
|
6
|
+
import { PreparedBip84SigningRequest, SignedBip84NativeTransaction } from './transactions/prepared-bip84';
|
|
4
7
|
import { type ISyscoinHardwareSigners } from './transactions/syscoin-core';
|
|
5
8
|
import { IKeyringAccountState, ICreateSmartAccountParams, ISyscoinTransactions, KeyringAccountType, IEthereumTransactions } from './types';
|
|
6
9
|
import type { LedgerKeyring } from './ledger';
|
|
@@ -73,6 +76,7 @@ export declare class KeyringCore<TLedger extends KeyringLedgerSigner | undefined
|
|
|
73
76
|
private sessionPassword;
|
|
74
77
|
private sessionMnemonic;
|
|
75
78
|
private privateRecordSessionRevision;
|
|
79
|
+
private bip84Operation;
|
|
76
80
|
constructor(dependencies: KeyringCoreDependencies<TLedger, TTrezor>);
|
|
77
81
|
private createSyscoinTransactions;
|
|
78
82
|
private requireLedgerSigner;
|
|
@@ -187,6 +191,10 @@ export declare class KeyringCore<TLedger extends KeyringLedgerSigner | undefined
|
|
|
187
191
|
*/
|
|
188
192
|
private getDecryptedPrivateKey;
|
|
189
193
|
private capturePsbtSigningContext;
|
|
194
|
+
/** Fixed-profile public UTXO derivation; private material remains operation-local. */
|
|
195
|
+
protected deriveSoftwareBip84HdPublicAccount(input: Bip84HdPublicRequest, options: Bip84Guard): Promise<Bip84HdPublicResult>;
|
|
196
|
+
/** Fixed selected-account native signing. No storage, discovery or broadcast. */
|
|
197
|
+
protected signPreparedSoftwareBip84Transaction(input: PreparedBip84SigningRequest, options: Bip84Guard): Promise<SignedBip84NativeTransaction>;
|
|
190
198
|
/** Fixed-path derivation for an authenticated software host; no persistence. */
|
|
191
199
|
protected deriveSoftwareEvmHdRuntimeAccount(input: EvmHdRuntimeAccountRequest, options: EvmHdRuntimeAccountOptions): Promise<EncryptedEvmHdRuntimeAccount>;
|
|
192
200
|
/** The software facade owns this public capability; no device fallback. */
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type Bip84PublicNetwork = 'bitcoin' | 'syscoin';
|
|
2
|
+
export type Bip84PublicAccountRequest = Readonly<{
|
|
3
|
+
network: Bip84PublicNetwork;
|
|
4
|
+
accountKey: string;
|
|
5
|
+
}>;
|
|
6
|
+
export type Bip84PublicAccount = Readonly<{
|
|
7
|
+
network: Bip84PublicNetwork;
|
|
8
|
+
policy: 'bip84-p2wpkh';
|
|
9
|
+
canonicalKey: string;
|
|
10
|
+
accountIndex: number;
|
|
11
|
+
}>;
|
|
12
|
+
export type Bip84PublicAddressRequest = Bip84PublicAccountRequest & Readonly<{
|
|
13
|
+
branch: 0 | 1;
|
|
14
|
+
index: number;
|
|
15
|
+
}>;
|
|
16
|
+
export type Bip84PublicAddress = Readonly<{
|
|
17
|
+
account: Bip84PublicAccount;
|
|
18
|
+
branch: 0 | 1;
|
|
19
|
+
index: number;
|
|
20
|
+
address: string;
|
|
21
|
+
scriptPubKey: string;
|
|
22
|
+
}>;
|
|
23
|
+
export declare class PublicBip84Error extends Error {
|
|
24
|
+
readonly code: 'INVALID_INPUT' | 'INVALID_ACCOUNT' | 'INVALID_DERIVATION';
|
|
25
|
+
constructor(code: 'INVALID_INPUT' | 'INVALID_ACCOUNT' | 'INVALID_DERIVATION');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Validate one public account and normalize xpub/zpub aliases. The chosen
|
|
29
|
+
* network and BIP84 policy are explicit; ancestry/purpose is not attested.
|
|
30
|
+
* No keyring, storage, provider, randomness or wallet signing is involved.
|
|
31
|
+
* BIP32Factory runs its upstream deterministic ECC self-tests at module load.
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseBip84PublicAccount(request: Bip84PublicAccountRequest): Bip84PublicAccount;
|
|
34
|
+
/**
|
|
35
|
+
* Derive only /0/index or /1/index from a validated mainnet account key.
|
|
36
|
+
* One bounded input and two child derivations; no discovery, cache or range
|
|
37
|
+
* iteration. Callers own scan limits and privacy consent. Returned data is public.
|
|
38
|
+
*/
|
|
39
|
+
export declare function deriveBip84PublicAddress(request: Bip84PublicAddressRequest): Bip84PublicAddress;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Bip84PublicAccount, Bip84PublicAddress } from './public-bip84';
|
|
2
|
+
import { Bip84NetworkBinding } from './transactions/bip84-native-plan';
|
|
3
|
+
export type Bip84HdPublicRequest = Readonly<{
|
|
4
|
+
network: Bip84NetworkBinding;
|
|
5
|
+
accountIndex: number;
|
|
6
|
+
}>;
|
|
7
|
+
export type Bip84HdPublicResult = Readonly<{
|
|
8
|
+
type: 'HDAccount';
|
|
9
|
+
accountIndex: number;
|
|
10
|
+
account: Bip84PublicAccount;
|
|
11
|
+
receive: Bip84PublicAddress;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function snapshotBip84HdPublicRequest(value: unknown): Bip84HdPublicRequest;
|
package/types/software.d.ts
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
import { KeyringCore } from './keyring-core';
|
|
3
3
|
import type { KeyringStoragePort } from './keyring-core';
|
|
4
4
|
import type { EncryptedEvmHdRuntimeAccount, EvmHdRuntimeAccountOptions, EvmHdRuntimeAccountRequest } from './software-hd-account';
|
|
5
|
+
import type { Bip84HdPublicRequest, Bip84HdPublicResult } from './software-utxo-account';
|
|
6
|
+
import type { Bip84Guard } from './transactions/bip84-native-plan';
|
|
7
|
+
import type { PreparedBip84SigningRequest, SignedBip84NativeTransaction } from './transactions/prepared-bip84';
|
|
5
8
|
import type { PreparedEvmSigningOptions, PreparedSoftwareEvmSigningRequest, SignedPreparedEvmTransaction } from './transactions/prepared-evm';
|
|
6
9
|
declare const softwareHostBrand: unique symbol;
|
|
7
10
|
/** Opaque handle minted by createSoftwareKeyringHost; no injectable persistence. */
|
|
@@ -18,6 +21,10 @@ export declare class SoftwareKeyring extends KeyringCore<undefined, undefined> {
|
|
|
18
21
|
* never a public account/catalogue DTO. The host owns index allocation.
|
|
19
22
|
*/
|
|
20
23
|
deriveEvmHdRuntimeAccount(request: EvmHdRuntimeAccountRequest, options: EvmHdRuntimeAccountOptions): Promise<EncryptedEvmHdRuntimeAccount>;
|
|
24
|
+
/** Derive public BIP84 account data from the live seed; no storage or discovery. */
|
|
25
|
+
deriveBip84HdPublicAccount(request: Bip84HdPublicRequest, options: Bip84Guard): Promise<Bip84HdPublicResult>;
|
|
26
|
+
/** Sign the selected HD account's exact prepared native transaction offline. */
|
|
27
|
+
signPreparedBip84Transaction(request: PreparedBip84SigningRequest, options: Bip84Guard): Promise<SignedBip84NativeTransaction>;
|
|
21
28
|
/**
|
|
22
29
|
* Sign exactly the prepared envelope without RPC, fee/nonce discovery or
|
|
23
30
|
* broadcasting. The host must journal the result before submitting it.
|
|
@@ -37,3 +44,6 @@ export type { KeyringStoragePort } from './keyring-core';
|
|
|
37
44
|
export type { IKeyringAccountState } from './types';
|
|
38
45
|
export type { PreparedEvmTransaction, PreparedEvmSigningOptions, PreparedSoftwareEvmSigningRequest, SignedPreparedEvmTransaction, } from './transactions/prepared-evm';
|
|
39
46
|
export type { EncryptedEvmHdRuntimeAccount, EvmHdRuntimeAccountOptions, EvmHdRuntimeAccountRequest, } from './software-hd-account';
|
|
47
|
+
export type { Bip84HdPublicRequest, Bip84HdPublicResult, } from './software-utxo-account';
|
|
48
|
+
export type { Bip84Guard } from './transactions/bip84-native-plan';
|
|
49
|
+
export type { PreparedBip84SigningRequest, SignedBip84NativeTransaction, } from './transactions/prepared-bip84';
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Psbt, Network } from 'bitcoinjs-lib';
|
|
2
|
+
import { Bip84PublicAccount, Bip84PublicNetwork } from '../public-bip84';
|
|
3
|
+
export type Bip84NetworkBinding = Readonly<{
|
|
4
|
+
network: Bip84PublicNetwork;
|
|
5
|
+
endpoint: string;
|
|
6
|
+
}>;
|
|
7
|
+
export type Bip84Guard = Readonly<{
|
|
8
|
+
assertCurrent(): void;
|
|
9
|
+
}>;
|
|
10
|
+
export type Bip84NativePlan = Readonly<{
|
|
11
|
+
network: Bip84NetworkBinding;
|
|
12
|
+
account: Bip84PublicAccount;
|
|
13
|
+
inputs: readonly Readonly<{
|
|
14
|
+
txid: string;
|
|
15
|
+
vout: number;
|
|
16
|
+
branch: 0 | 1;
|
|
17
|
+
index: number;
|
|
18
|
+
}>[];
|
|
19
|
+
previousTransactions: readonly Readonly<{
|
|
20
|
+
txid: string;
|
|
21
|
+
rawTransaction: string;
|
|
22
|
+
}>[];
|
|
23
|
+
recipient: Readonly<{
|
|
24
|
+
address: string;
|
|
25
|
+
valueSatoshis: string;
|
|
26
|
+
}>;
|
|
27
|
+
change: Readonly<{
|
|
28
|
+
index: number;
|
|
29
|
+
valueSatoshis: string;
|
|
30
|
+
}> | null;
|
|
31
|
+
locktime: 0;
|
|
32
|
+
rbf: boolean;
|
|
33
|
+
feeLimits: Readonly<{
|
|
34
|
+
maxFeeSatoshis: string;
|
|
35
|
+
maxFeeRateSatPerVByte: string;
|
|
36
|
+
}>;
|
|
37
|
+
}>;
|
|
38
|
+
export type PreparedBip84NativeTransaction = Readonly<{
|
|
39
|
+
plan: Bip84NativePlan;
|
|
40
|
+
unsignedTransaction: string;
|
|
41
|
+
feeSatoshis: string;
|
|
42
|
+
}>;
|
|
43
|
+
export type Bip84NativeErrorCode = 'INVALID_REQUEST' | 'LIMIT_EXCEEDED' | 'UNSUPPORTED_NETWORK' | 'UNSUPPORTED_PARENT' | 'ACCOUNT_MISMATCH' | 'INPUT_MISMATCH' | 'FEE_LIMIT' | 'SIGNATURE_INVALID' | 'CANCELLED' | 'BUSY';
|
|
44
|
+
export declare class Bip84NativeError extends Error {
|
|
45
|
+
readonly code: Bip84NativeErrorCode;
|
|
46
|
+
constructor(code: Bip84NativeErrorCode);
|
|
47
|
+
}
|
|
48
|
+
export declare const LIMITS: Readonly<{
|
|
49
|
+
inputs: 64;
|
|
50
|
+
parentBytes: 1000000;
|
|
51
|
+
totalParentBytes: 2000000;
|
|
52
|
+
parentComponents: 8192;
|
|
53
|
+
unsignedBytes: number;
|
|
54
|
+
signedBytes: number;
|
|
55
|
+
psbtBytes: number;
|
|
56
|
+
maxFee: 10000000n;
|
|
57
|
+
maxFeeRate: 1000n;
|
|
58
|
+
}>;
|
|
59
|
+
export type Bip84Profile = Readonly<{
|
|
60
|
+
chainId: number;
|
|
61
|
+
slip44: number;
|
|
62
|
+
currency: string;
|
|
63
|
+
maximumMoney: bigint;
|
|
64
|
+
addressNetwork: Network;
|
|
65
|
+
}>;
|
|
66
|
+
export declare const bip84Profile: (network: Bip84PublicNetwork) => Bip84Profile;
|
|
67
|
+
export declare const fail: (code: Bip84NativeErrorCode) => never;
|
|
68
|
+
export declare function record(value: unknown, fields: readonly string[]): Record<string, unknown>;
|
|
69
|
+
export declare function index(value: unknown): number;
|
|
70
|
+
export declare function snapshotBip84Network(value: unknown): Bip84NetworkBinding;
|
|
71
|
+
export declare function snapshotBip84Guard(value: unknown): () => void;
|
|
72
|
+
export type ValidatedBip84Plan = {
|
|
73
|
+
prepared: PreparedBip84NativeTransaction;
|
|
74
|
+
psbt: Psbt;
|
|
75
|
+
previousOutputs: readonly Readonly<{
|
|
76
|
+
script: Uint8Array;
|
|
77
|
+
value: bigint;
|
|
78
|
+
}>[];
|
|
79
|
+
};
|
|
80
|
+
/** Internal result includes owned mutable transaction data; public entry exports only prepare. */
|
|
81
|
+
export declare function validateBip84NativePlan(value: unknown): ValidatedBip84Plan;
|
|
82
|
+
/** Pure bounded preparation; returned data carries no signing authorization. */
|
|
83
|
+
export declare function prepareBip84NativeTransaction(plan: Bip84NativePlan): PreparedBip84NativeTransaction;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BIP32Interface } from 'bip32';
|
|
2
|
+
import { PreparedBip84NativeTransaction, ValidatedBip84Plan } from './bip84-native-plan';
|
|
3
|
+
export type PreparedBip84SigningRequest = Readonly<{
|
|
4
|
+
account: Readonly<{
|
|
5
|
+
type: 'HDAccount';
|
|
6
|
+
index: number;
|
|
7
|
+
expectedAccountKey: string;
|
|
8
|
+
}>;
|
|
9
|
+
prepared: PreparedBip84NativeTransaction;
|
|
10
|
+
}>;
|
|
11
|
+
export type SignedBip84NativeTransaction = Readonly<{
|
|
12
|
+
rawTransaction: string;
|
|
13
|
+
txid: string;
|
|
14
|
+
wtxid: string;
|
|
15
|
+
unsignedTransaction: string;
|
|
16
|
+
feeSatoshis: string;
|
|
17
|
+
virtualSize: number;
|
|
18
|
+
}>;
|
|
19
|
+
/** Private host snapshot. A public prepared DTO never carries signing authority. */
|
|
20
|
+
export declare function snapshotPreparedBip84Request(input: unknown): {
|
|
21
|
+
account: PreparedBip84SigningRequest['account'];
|
|
22
|
+
validated: ValidatedBip84Plan;
|
|
23
|
+
};
|
|
24
|
+
/** Only operation-owned nodes. No session/shared key objects may be supplied. */
|
|
25
|
+
export declare function clearBip84PrivateNodes(nodes: BIP32Interface[]): void;
|
|
26
|
+
/** Internally owned PSBT only. No provider, generic SDK signer or partial result. */
|
|
27
|
+
export declare function signValidatedBip84Plan(validated: ValidatedBip84Plan, accountNode: BIP32Interface, assertCurrent: () => void): SignedBip84NativeTransaction;
|