@bitgo/abstract-utxo 12.4.4 → 12.6.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/cjs/src/abstractUtxoCoin.d.ts +3 -0
- package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/cjs/src/abstractUtxoCoin.js +13 -6
- package/dist/cjs/src/impl/bch/bch.js +2 -2
- package/dist/cjs/src/impl/zec/address.d.ts +28 -0
- package/dist/cjs/src/impl/zec/address.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/address.js +55 -0
- package/dist/cjs/src/impl/zec/index.d.ts +3 -0
- package/dist/cjs/src/impl/zec/index.d.ts.map +1 -1
- package/dist/cjs/src/impl/zec/index.js +4 -1
- package/dist/cjs/src/impl/zec/recipients.d.ts +84 -0
- package/dist/cjs/src/impl/zec/recipients.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/recipients.js +94 -0
- package/dist/cjs/src/impl/zec/types.d.ts +5 -0
- package/dist/cjs/src/impl/zec/types.d.ts.map +1 -0
- package/dist/cjs/src/impl/zec/types.js +3 -0
- package/dist/cjs/src/impl/zec/zec.d.ts +12 -1
- package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -1
- package/dist/cjs/src/impl/zec/zec.js +14 -1
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +4 -0
- package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/cjs/src/recovery/backupKeyRecovery.js +3 -1
- package/dist/cjs/src/transaction/descriptor/parse.d.ts +3 -3
- package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/parse.js +17 -17
- package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +2 -1
- package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +4 -3
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +3 -3
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +7 -6
- package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +3 -1
- package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/parseOutput.js +5 -4
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +15 -14
- package/dist/cjs/src/transaction/parseTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/parseTransaction.js +5 -4
- package/dist/cjs/src/transaction/recipient.d.ts +31 -15
- package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
- package/dist/cjs/src/transaction/recipient.js +69 -47
- package/dist/cjs/src/transaction/verifyTransaction.d.ts +2 -1
- package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -1
- package/dist/cjs/src/transaction/verifyTransaction.js +4 -3
- package/dist/cjs/test/unit/impl/zec/unit/address.d.ts +2 -0
- package/dist/cjs/test/unit/impl/zec/unit/address.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/zec/unit/address.js +66 -0
- package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts +2 -0
- package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.js +89 -0
- package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts +2 -0
- package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts.map +1 -0
- package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.js +57 -0
- package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +14 -1
- package/dist/cjs/test/unit/transaction/descriptor/parse.js +4 -2
- package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.js +6 -5
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/abstractUtxoCoin.d.ts +3 -0
- package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/esm/abstractUtxoCoin.js +14 -7
- package/dist/esm/impl/bch/bch.js +3 -3
- package/dist/esm/impl/zec/address.d.ts +28 -0
- package/dist/esm/impl/zec/address.d.ts.map +1 -0
- package/dist/esm/impl/zec/address.js +50 -0
- package/dist/esm/impl/zec/index.d.ts +3 -0
- package/dist/esm/impl/zec/index.d.ts.map +1 -1
- package/dist/esm/impl/zec/index.js +4 -1
- package/dist/esm/impl/zec/recipients.d.ts +84 -0
- package/dist/esm/impl/zec/recipients.d.ts.map +1 -0
- package/dist/esm/impl/zec/recipients.js +90 -0
- package/dist/esm/impl/zec/types.d.ts +5 -0
- package/dist/esm/impl/zec/types.d.ts.map +1 -0
- package/dist/esm/impl/zec/types.js +2 -0
- package/dist/esm/impl/zec/zec.d.ts +12 -1
- package/dist/esm/impl/zec/zec.d.ts.map +1 -1
- package/dist/esm/impl/zec/zec.js +14 -1
- package/dist/esm/recovery/backupKeyRecovery.d.ts +4 -0
- package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/esm/recovery/backupKeyRecovery.js +3 -1
- package/dist/esm/transaction/descriptor/parse.d.ts +3 -3
- package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/parse.js +18 -18
- package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +2 -1
- package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/parseToAmountType.js +4 -3
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +3 -3
- package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/descriptor/verifyTransaction.js +7 -6
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts +3 -1
- package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/parseOutput.js +5 -4
- package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +2 -1
- package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/fixedScript/parseTransaction.js +16 -15
- package/dist/esm/transaction/parseTransaction.d.ts +2 -1
- package/dist/esm/transaction/parseTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/parseTransaction.js +5 -4
- package/dist/esm/transaction/recipient.d.ts +31 -15
- package/dist/esm/transaction/recipient.d.ts.map +1 -1
- package/dist/esm/transaction/recipient.js +68 -48
- package/dist/esm/transaction/verifyTransaction.d.ts +2 -1
- package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -1
- package/dist/esm/transaction/verifyTransaction.js +4 -3
- package/package.json +9 -9
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { address as wasmAddress, fixedScriptWallet, isCoinName } from '@bitgo/wasm-utxo';
|
|
2
|
+
/**
|
|
3
|
+
* Whether `address` is a well-formed ZIP-316 Unified Address for `network`
|
|
4
|
+
* with an Orchard receiver. BitGo only supports Orchard, so a UA without one
|
|
5
|
+
* (e.g. Sapling- or transparent-only) is not considered valid here.
|
|
6
|
+
*/
|
|
7
|
+
export function isShieldedZcashAddress(address, network) {
|
|
8
|
+
try {
|
|
9
|
+
return fixedScriptWallet.ZcashUnifiedAddress.parse(address, network).hasOrchardReceiver;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Classify a Zcash address string as transparent or shielded, validating it in
|
|
17
|
+
* the process. Returns undefined if the address is neither a valid transparent
|
|
18
|
+
* address nor a well-formed ZIP-316 Unified Address for `network`.
|
|
19
|
+
*/
|
|
20
|
+
export function getZcashAddressKind(address, network) {
|
|
21
|
+
// ZcashNetworkName also permits 'zcash'/'zcashTest', which toOutputScriptWithCoin
|
|
22
|
+
// doesn't accept (it takes a CoinName, i.e. 'zec'/'tzec'). Skip straight to the
|
|
23
|
+
// shielded check for those rather than relying on an unsafe cast + caught throw.
|
|
24
|
+
if (isCoinName(network)) {
|
|
25
|
+
try {
|
|
26
|
+
wasmAddress.toOutputScriptWithCoin(address, network);
|
|
27
|
+
return 'transparent';
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// not a valid transparent address; fall through to shielded check
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return isShieldedZcashAddress(address, network) ? 'shielded' : undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Standalone counterpart to `Zec.isValidAddress`, parameterized by `network`
|
|
37
|
+
* instead of requiring a coin instance. Accepts transparent addresses and
|
|
38
|
+
* shielded ZIP-316 Unified Addresses.
|
|
39
|
+
*
|
|
40
|
+
* Not structurally identical to `Zec.isValidAddress`: the base class also
|
|
41
|
+
* round-trips the parsed script through each known encoding format (see
|
|
42
|
+
* `AbstractUtxoCoin.isValidAddress`), whereas this only calls
|
|
43
|
+
* `toOutputScriptWithCoin` once via `getZcashAddressKind`. They agree in
|
|
44
|
+
* practice since zec/tzec have no alternate transparent-address encoding to
|
|
45
|
+
* round-trip against, but that's not guaranteed to remain true.
|
|
46
|
+
*/
|
|
47
|
+
export function isValidZcashAddress(address, network) {
|
|
48
|
+
return getZcashAddressKind(address, network) !== undefined;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBsL3plYy9hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXpGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBZSxFQUFFLE9BQTJDO0lBQ2pHLElBQUksQ0FBQztRQUNILE9BQU8saUJBQWlCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUMxRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE9BQWUsRUFDZixPQUEyQztJQUUzQyxrRkFBa0Y7SUFDbEYsZ0ZBQWdGO0lBQ2hGLGlGQUFpRjtJQUNqRixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQztZQUNILFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGtFQUFrRTtRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBZSxFQUFFLE9BQTJDO0lBQzlGLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkcmVzcyBhcyB3YXNtQWRkcmVzcywgZml4ZWRTY3JpcHRXYWxsZXQsIGlzQ29pbk5hbWUgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuZXhwb3J0IHR5cGUgWmNhc2hBZGRyZXNzS2luZCA9ICd0cmFuc3BhcmVudCcgfCAnc2hpZWxkZWQnO1xuXG4vKipcbiAqIFdoZXRoZXIgYGFkZHJlc3NgIGlzIGEgd2VsbC1mb3JtZWQgWklQLTMxNiBVbmlmaWVkIEFkZHJlc3MgZm9yIGBuZXR3b3JrYFxuICogd2l0aCBhbiBPcmNoYXJkIHJlY2VpdmVyLiBCaXRHbyBvbmx5IHN1cHBvcnRzIE9yY2hhcmQsIHNvIGEgVUEgd2l0aG91dCBvbmVcbiAqIChlLmcuIFNhcGxpbmctIG9yIHRyYW5zcGFyZW50LW9ubHkpIGlzIG5vdCBjb25zaWRlcmVkIHZhbGlkIGhlcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoaWVsZGVkWmNhc2hBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgbmV0d29yazogZml4ZWRTY3JpcHRXYWxsZXQuWmNhc2hOZXR3b3JrTmFtZSk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaFVuaWZpZWRBZGRyZXNzLnBhcnNlKGFkZHJlc3MsIG5ldHdvcmspLmhhc09yY2hhcmRSZWNlaXZlcjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3NpZnkgYSBaY2FzaCBhZGRyZXNzIHN0cmluZyBhcyB0cmFuc3BhcmVudCBvciBzaGllbGRlZCwgdmFsaWRhdGluZyBpdCBpblxuICogdGhlIHByb2Nlc3MuIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBhZGRyZXNzIGlzIG5laXRoZXIgYSB2YWxpZCB0cmFuc3BhcmVudFxuICogYWRkcmVzcyBub3IgYSB3ZWxsLWZvcm1lZCBaSVAtMzE2IFVuaWZpZWQgQWRkcmVzcyBmb3IgYG5ldHdvcmtgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WmNhc2hBZGRyZXNzS2luZChcbiAgYWRkcmVzczogc3RyaW5nLFxuICBuZXR3b3JrOiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lXG4pOiBaY2FzaEFkZHJlc3NLaW5kIHwgdW5kZWZpbmVkIHtcbiAgLy8gWmNhc2hOZXR3b3JrTmFtZSBhbHNvIHBlcm1pdHMgJ3pjYXNoJy8nemNhc2hUZXN0Jywgd2hpY2ggdG9PdXRwdXRTY3JpcHRXaXRoQ29pblxuICAvLyBkb2Vzbid0IGFjY2VwdCAoaXQgdGFrZXMgYSBDb2luTmFtZSwgaS5lLiAnemVjJy8ndHplYycpLiBTa2lwIHN0cmFpZ2h0IHRvIHRoZVxuICAvLyBzaGllbGRlZCBjaGVjayBmb3IgdGhvc2UgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhbiB1bnNhZmUgY2FzdCArIGNhdWdodCB0aHJvdy5cbiAgaWYgKGlzQ29pbk5hbWUobmV0d29yaykpIHtcbiAgICB0cnkge1xuICAgICAgd2FzbUFkZHJlc3MudG9PdXRwdXRTY3JpcHRXaXRoQ29pbihhZGRyZXNzLCBuZXR3b3JrKTtcbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gbm90IGEgdmFsaWQgdHJhbnNwYXJlbnQgYWRkcmVzczsgZmFsbCB0aHJvdWdoIHRvIHNoaWVsZGVkIGNoZWNrXG4gICAgfVxuICB9XG4gIHJldHVybiBpc1NoaWVsZGVkWmNhc2hBZGRyZXNzKGFkZHJlc3MsIG5ldHdvcmspID8gJ3NoaWVsZGVkJyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTdGFuZGFsb25lIGNvdW50ZXJwYXJ0IHRvIGBaZWMuaXNWYWxpZEFkZHJlc3NgLCBwYXJhbWV0ZXJpemVkIGJ5IGBuZXR3b3JrYFxuICogaW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjb2luIGluc3RhbmNlLiBBY2NlcHRzIHRyYW5zcGFyZW50IGFkZHJlc3NlcyBhbmRcbiAqIHNoaWVsZGVkIFpJUC0zMTYgVW5pZmllZCBBZGRyZXNzZXMuXG4gKlxuICogTm90IHN0cnVjdHVyYWxseSBpZGVudGljYWwgdG8gYFplYy5pc1ZhbGlkQWRkcmVzc2A6IHRoZSBiYXNlIGNsYXNzIGFsc29cbiAqIHJvdW5kLXRyaXBzIHRoZSBwYXJzZWQgc2NyaXB0IHRocm91Z2ggZWFjaCBrbm93biBlbmNvZGluZyBmb3JtYXQgKHNlZVxuICogYEFic3RyYWN0VXR4b0NvaW4uaXNWYWxpZEFkZHJlc3NgKSwgd2hlcmVhcyB0aGlzIG9ubHkgY2FsbHNcbiAqIGB0b091dHB1dFNjcmlwdFdpdGhDb2luYCBvbmNlIHZpYSBgZ2V0WmNhc2hBZGRyZXNzS2luZGAuIFRoZXkgYWdyZWUgaW5cbiAqIHByYWN0aWNlIHNpbmNlIHplYy90emVjIGhhdmUgbm8gYWx0ZXJuYXRlIHRyYW5zcGFyZW50LWFkZHJlc3MgZW5jb2RpbmcgdG9cbiAqIHJvdW5kLXRyaXAgYWdhaW5zdCwgYnV0IHRoYXQncyBub3QgZ3VhcmFudGVlZCB0byByZW1haW4gdHJ1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRaY2FzaEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBuZXR3b3JrOiBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaE5ldHdvcmtOYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRaY2FzaEFkZHJlc3NLaW5kKGFkZHJlc3MsIG5ldHdvcmspICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/impl/zec/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/impl/zec/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from './zec';
|
|
2
2
|
export * from './tzec';
|
|
3
|
-
|
|
3
|
+
export * from './address';
|
|
4
|
+
export * from './recipients';
|
|
5
|
+
export * from './types';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1wbC96ZWMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3plYyc7XG5leHBvcnQgKiBmcm9tICcuL3R6ZWMnO1xuZXhwb3J0ICogZnJvbSAnLi9hZGRyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVjaXBpZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { fixedScriptWallet } from '@bitgo/wasm-utxo';
|
|
2
|
+
import { ZcashCoinName, UnifiedRecipientPreference } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* How a recipient parsed from a Zcash PSBT is spent.
|
|
5
|
+
*
|
|
6
|
+
* The decode-side counterpart of utxo-core's `buildTransaction/zcash.ts` `ZcashDestination` on
|
|
7
|
+
* the build side: a shielded recipient is an Orchard/Ironwood output stored in the v6 (Ironwood)
|
|
8
|
+
* PSBT's orchard PCZT, and everything else is an ordinary transparent output. A transparent
|
|
9
|
+
* output resolved from a Unified Address carries that original UA (`zcashUnifiedTransparent`), a
|
|
10
|
+
* plain address does not.
|
|
11
|
+
*/
|
|
12
|
+
export type PsbtRecipientDestination = {
|
|
13
|
+
kind: 'zcashShielded';
|
|
14
|
+
/**
|
|
15
|
+
* The Unified Address the output was addressed to — the original multi-receiver UA the
|
|
16
|
+
* client passed when the PSBT stores one verbatim, otherwise a re-encoded single-receiver
|
|
17
|
+
* Orchard UA.
|
|
18
|
+
*/
|
|
19
|
+
unifiedAddress: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'zcashUnifiedTransparent';
|
|
22
|
+
/** The original Unified Address the transparent receiver was resolved from. */
|
|
23
|
+
unifiedAddress: string;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'transparent';
|
|
26
|
+
};
|
|
27
|
+
/** A recipient resolved from a decoded Zcash PSBT's external outputs. */
|
|
28
|
+
export interface PsbtRecipient {
|
|
29
|
+
/** Amount in satoshis. */
|
|
30
|
+
amount: bigint;
|
|
31
|
+
/**
|
|
32
|
+
* The recipient address. For a shielded output this is the Unified Address the output was
|
|
33
|
+
* addressed to — the original multi-receiver UA when the PSBT stores one verbatim, otherwise a
|
|
34
|
+
* re-encoded single-receiver Orchard UA. For a transparent output it is the original Unified
|
|
35
|
+
* Address when one was stored, else the decoded transparent address.
|
|
36
|
+
*/
|
|
37
|
+
address: string;
|
|
38
|
+
/**
|
|
39
|
+
* Raw receiver bytes: the 43-byte Orchard/Ironwood receiver for a shielded output, the
|
|
40
|
+
* scriptPubKey for a transparent one.
|
|
41
|
+
*/
|
|
42
|
+
script: Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* The original Unified Address the client supplied for this recipient, when the PSBT stores
|
|
45
|
+
* one: the v6 (Ironwood) PCZT for a shielded output, the transparent-output proprietary
|
|
46
|
+
* key-value map for a v4 transparent output. `undefined` when the recipient was built from a
|
|
47
|
+
* plain address.
|
|
48
|
+
*/
|
|
49
|
+
unifiedAddress?: string;
|
|
50
|
+
destination: PsbtRecipientDestination;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve the recipient list of a decoded Zcash PSBT (v4 Sapling-shaped or v6 Ironwood).
|
|
54
|
+
*
|
|
55
|
+
* Mirrors the recipient resolution of wallet-platform's utxo-core `buildTransaction` in the
|
|
56
|
+
* decode direction: every non-wallet output with a resolvable address is a recipient. A
|
|
57
|
+
* shielded output parses with `isShielded: true`, its `script` being the raw 43-byte receiver;
|
|
58
|
+
* when the build stored the client's original Unified Address (the v6 PCZT for shielded
|
|
59
|
+
* outputs, the transparent-output proprietary key-value map for v4), both the parsed address
|
|
60
|
+
* and `unifiedAddress` report it verbatim. Opaque outputs with no address (e.g. OP_RETURN) are
|
|
61
|
+
* skipped, as they carry no recipient.
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolvePsbtRecipients(psbt: fixedScriptWallet.ZcashBitGoPsbt, walletKeys: fixedScriptWallet.RootWalletKeys): PsbtRecipient[];
|
|
64
|
+
/**
|
|
65
|
+
* Infer the Unified-Address recipient preference for a Zcash transaction when the caller did
|
|
66
|
+
* not pass one — the counterpart of wallet-platform's utxo-core `buildTransaction`
|
|
67
|
+
* `classifyRecipientShieldedness`.
|
|
68
|
+
*
|
|
69
|
+
* A recipient that resolves to a transparent output — an ordinary transparent address, or a
|
|
70
|
+
* Unified Address carrying a transparent receiver — is classified `'transparent'`; a Unified
|
|
71
|
+
* Address carrying only an Orchard/Ironwood receiver is classified `'shielded'`. A mix of
|
|
72
|
+
* shielded and transparent recipients is rejected. An address that is neither a transparent
|
|
73
|
+
* address nor a Unified Address propagates the Unified-Address parse error — it is not
|
|
74
|
+
* silently defaulted to `'transparent'`.
|
|
75
|
+
*
|
|
76
|
+
* @returns `'shielded'` when every recipient resolves shielded, `undefined` when every
|
|
77
|
+
* recipient resolves transparent (the build's default). The `'transparent'` arm of the
|
|
78
|
+
* return type exists so callers can pass the explicit preference through unchanged; this
|
|
79
|
+
* function itself never returns `'transparent'`.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getUnifiedRecipientPreference(name: ZcashCoinName, recipients: {
|
|
82
|
+
address: string | undefined;
|
|
83
|
+
}[]): UnifiedRecipientPreference | undefined;
|
|
84
|
+
//# sourceMappingURL=recipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipients.d.ts","sourceRoot":"","sources":["../../../../src/impl/zec/recipients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AAInE,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAChC;IACE,IAAI,EAAE,eAAe,CAAC;IACtB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IACE,IAAI,EAAE,yBAAyB,CAAC;IAChC,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,iBAAiB,CAAC,cAAc,EACtC,UAAU,EAAE,iBAAiB,CAAC,cAAc,GAC3C,aAAa,EAAE,CAgCjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,GAC5C,0BAA0B,GAAG,SAAS,CA0BxC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { fixedScriptWallet, zcashAddress } from '@bitgo/wasm-utxo';
|
|
2
|
+
import { getReplayProtectionPubkeys } from '../../transaction/fixedScript/replayProtection';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the recipient list of a decoded Zcash PSBT (v4 Sapling-shaped or v6 Ironwood).
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the recipient resolution of wallet-platform's utxo-core `buildTransaction` in the
|
|
7
|
+
* decode direction: every non-wallet output with a resolvable address is a recipient. A
|
|
8
|
+
* shielded output parses with `isShielded: true`, its `script` being the raw 43-byte receiver;
|
|
9
|
+
* when the build stored the client's original Unified Address (the v6 PCZT for shielded
|
|
10
|
+
* outputs, the transparent-output proprietary key-value map for v4), both the parsed address
|
|
11
|
+
* and `unifiedAddress` report it verbatim. Opaque outputs with no address (e.g. OP_RETURN) are
|
|
12
|
+
* skipped, as they carry no recipient.
|
|
13
|
+
*/
|
|
14
|
+
export function resolvePsbtRecipients(psbt, walletKeys) {
|
|
15
|
+
const parsed = psbt.parseTransactionWithWalletKeys(walletKeys, {
|
|
16
|
+
replayProtection: { publicKeys: getReplayProtectionPubkeys('zec') },
|
|
17
|
+
});
|
|
18
|
+
const recipients = [];
|
|
19
|
+
parsed.outputs.forEach((output, i) => {
|
|
20
|
+
// Wallet-owned (change) outputs.
|
|
21
|
+
if (output.scriptId !== null) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Opaque outputs (e.g. OP_RETURN) carry no recipient address.
|
|
25
|
+
if (output.address === null) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// The original client-passed Unified Address, stored verbatim in the PSBT's key-value
|
|
29
|
+
// pairs: the orchard PCZT for a shielded output (parsed `address` reports it in full), the
|
|
30
|
+
// transparent-output proprietary map for a v4 transparent output.
|
|
31
|
+
const unifiedAddress = output.isShielded ? output.address : psbt.transparentOutputUnifiedAddress(i) ?? undefined;
|
|
32
|
+
recipients.push({
|
|
33
|
+
amount: output.value,
|
|
34
|
+
address: output.address,
|
|
35
|
+
script: output.script,
|
|
36
|
+
unifiedAddress,
|
|
37
|
+
destination: output.isShielded
|
|
38
|
+
? { kind: 'zcashShielded', unifiedAddress: output.address }
|
|
39
|
+
: unifiedAddress
|
|
40
|
+
? { kind: 'zcashUnifiedTransparent', unifiedAddress }
|
|
41
|
+
: { kind: 'transparent' },
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
return recipients;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Infer the Unified-Address recipient preference for a Zcash transaction when the caller did
|
|
48
|
+
* not pass one — the counterpart of wallet-platform's utxo-core `buildTransaction`
|
|
49
|
+
* `classifyRecipientShieldedness`.
|
|
50
|
+
*
|
|
51
|
+
* A recipient that resolves to a transparent output — an ordinary transparent address, or a
|
|
52
|
+
* Unified Address carrying a transparent receiver — is classified `'transparent'`; a Unified
|
|
53
|
+
* Address carrying only an Orchard/Ironwood receiver is classified `'shielded'`. A mix of
|
|
54
|
+
* shielded and transparent recipients is rejected. An address that is neither a transparent
|
|
55
|
+
* address nor a Unified Address propagates the Unified-Address parse error — it is not
|
|
56
|
+
* silently defaulted to `'transparent'`.
|
|
57
|
+
*
|
|
58
|
+
* @returns `'shielded'` when every recipient resolves shielded, `undefined` when every
|
|
59
|
+
* recipient resolves transparent (the build's default). The `'transparent'` arm of the
|
|
60
|
+
* return type exists so callers can pass the explicit preference through unchanged; this
|
|
61
|
+
* function itself never returns `'transparent'`.
|
|
62
|
+
*/
|
|
63
|
+
export function getUnifiedRecipientPreference(name, recipients) {
|
|
64
|
+
const shieldedness = recipients.map((recipient) => {
|
|
65
|
+
if (recipient.address === undefined) {
|
|
66
|
+
// Raw script inherently transparent.
|
|
67
|
+
return 'transparent';
|
|
68
|
+
}
|
|
69
|
+
// Ordinary transparent address, or a Unified Address carrying a transparent receiver:
|
|
70
|
+
// resolves transparently either way (the build's default when no preference is given).
|
|
71
|
+
if (zcashAddress.hasTransparentReceiver(recipient.address, name)) {
|
|
72
|
+
return 'transparent';
|
|
73
|
+
}
|
|
74
|
+
// A shielded (Orchard/Ironwood-only) Unified Address is the only remaining resolvable
|
|
75
|
+
// form. An address that is none of the above propagates the parse error instead of
|
|
76
|
+
// assuming a default.
|
|
77
|
+
const unified = fixedScriptWallet.ZcashUnifiedAddress.parse(recipient.address, name);
|
|
78
|
+
if (unified.hasOrchardReceiver) {
|
|
79
|
+
return 'shielded';
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`address ${recipient.address} carries no transparent or Orchard receiver`);
|
|
82
|
+
});
|
|
83
|
+
const hasShielded = shieldedness.includes('shielded');
|
|
84
|
+
const hasTransparent = shieldedness.includes('transparent');
|
|
85
|
+
if (hasShielded && hasTransparent) {
|
|
86
|
+
throw new Error('Mixed shielded and transparent recipients are not supported');
|
|
87
|
+
}
|
|
88
|
+
return hasShielded ? 'shielded' : undefined;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBsL3plYy9yZWNpcGllbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQXdENUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsSUFBc0MsRUFDdEMsVUFBNEM7SUFFNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsRUFBRTtRQUM3RCxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsRUFBRTtLQUNwRSxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBb0IsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLGlDQUFpQztRQUNqQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFDRCw4REFBOEQ7UUFDOUQsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0Qsc0ZBQXNGO1FBQ3RGLDJGQUEyRjtRQUMzRixrRUFBa0U7UUFDbEUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUNqSCxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsY0FBYztZQUNkLFdBQVcsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDNUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDM0QsQ0FBQyxDQUFDLGNBQWM7b0JBQ2hCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUU7b0JBQ3JELENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLElBQW1CLEVBQ25CLFVBQTZDO0lBRTdDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNoRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMscUNBQXFDO1lBQ3JDLE9BQU8sYUFBc0IsQ0FBQztRQUNoQyxDQUFDO1FBQ0Qsc0ZBQXNGO1FBQ3RGLHVGQUF1RjtRQUN2RixJQUFJLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakUsT0FBTyxhQUFzQixDQUFDO1FBQ2hDLENBQUM7UUFDRCxzRkFBc0Y7UUFDdEYsbUZBQW1GO1FBQ25GLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9CLE9BQU8sVUFBbUIsQ0FBQztRQUM3QixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFNBQVMsQ0FBQyxPQUFPLDZDQUE2QyxDQUFDLENBQUM7SUFDN0YsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsSUFBSSxXQUFXLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpeGVkU2NyaXB0V2FsbGV0LCB6Y2FzaEFkZHJlc3MgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uJztcblxuaW1wb3J0IHsgWmNhc2hDb2luTmFtZSwgVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBIb3cgYSByZWNpcGllbnQgcGFyc2VkIGZyb20gYSBaY2FzaCBQU0JUIGlzIHNwZW50LlxuICpcbiAqIFRoZSBkZWNvZGUtc2lkZSBjb3VudGVycGFydCBvZiB1dHhvLWNvcmUncyBgYnVpbGRUcmFuc2FjdGlvbi96Y2FzaC50c2AgYFpjYXNoRGVzdGluYXRpb25gIG9uXG4gKiB0aGUgYnVpbGQgc2lkZTogYSBzaGllbGRlZCByZWNpcGllbnQgaXMgYW4gT3JjaGFyZC9Jcm9ud29vZCBvdXRwdXQgc3RvcmVkIGluIHRoZSB2NiAoSXJvbndvb2QpXG4gKiBQU0JUJ3Mgb3JjaGFyZCBQQ1pULCBhbmQgZXZlcnl0aGluZyBlbHNlIGlzIGFuIG9yZGluYXJ5IHRyYW5zcGFyZW50IG91dHB1dC4gQSB0cmFuc3BhcmVudFxuICogb3V0cHV0IHJlc29sdmVkIGZyb20gYSBVbmlmaWVkIEFkZHJlc3MgY2FycmllcyB0aGF0IG9yaWdpbmFsIFVBIChgemNhc2hVbmlmaWVkVHJhbnNwYXJlbnRgKSwgYVxuICogcGxhaW4gYWRkcmVzcyBkb2VzIG5vdC5cbiAqL1xuZXhwb3J0IHR5cGUgUHNidFJlY2lwaWVudERlc3RpbmF0aW9uID1cbiAgfCB7XG4gICAgICBraW5kOiAnemNhc2hTaGllbGRlZCc7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBVbmlmaWVkIEFkZHJlc3MgdGhlIG91dHB1dCB3YXMgYWRkcmVzc2VkIHRvIOKAlCB0aGUgb3JpZ2luYWwgbXVsdGktcmVjZWl2ZXIgVUEgdGhlXG4gICAgICAgKiBjbGllbnQgcGFzc2VkIHdoZW4gdGhlIFBTQlQgc3RvcmVzIG9uZSB2ZXJiYXRpbSwgb3RoZXJ3aXNlIGEgcmUtZW5jb2RlZCBzaW5nbGUtcmVjZWl2ZXJcbiAgICAgICAqIE9yY2hhcmQgVUEuXG4gICAgICAgKi9cbiAgICAgIHVuaWZpZWRBZGRyZXNzOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICd6Y2FzaFVuaWZpZWRUcmFuc3BhcmVudCc7XG4gICAgICAvKiogVGhlIG9yaWdpbmFsIFVuaWZpZWQgQWRkcmVzcyB0aGUgdHJhbnNwYXJlbnQgcmVjZWl2ZXIgd2FzIHJlc29sdmVkIGZyb20uICovXG4gICAgICB1bmlmaWVkQWRkcmVzczogc3RyaW5nO1xuICAgIH1cbiAgfCB7IGtpbmQ6ICd0cmFuc3BhcmVudCcgfTtcblxuLyoqIEEgcmVjaXBpZW50IHJlc29sdmVkIGZyb20gYSBkZWNvZGVkIFpjYXNoIFBTQlQncyBleHRlcm5hbCBvdXRwdXRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQc2J0UmVjaXBpZW50IHtcbiAgLyoqIEFtb3VudCBpbiBzYXRvc2hpcy4gKi9cbiAgYW1vdW50OiBiaWdpbnQ7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBpZW50IGFkZHJlc3MuIEZvciBhIHNoaWVsZGVkIG91dHB1dCB0aGlzIGlzIHRoZSBVbmlmaWVkIEFkZHJlc3MgdGhlIG91dHB1dCB3YXNcbiAgICogYWRkcmVzc2VkIHRvIOKAlCB0aGUgb3JpZ2luYWwgbXVsdGktcmVjZWl2ZXIgVUEgd2hlbiB0aGUgUFNCVCBzdG9yZXMgb25lIHZlcmJhdGltLCBvdGhlcndpc2UgYVxuICAgKiByZS1lbmNvZGVkIHNpbmdsZS1yZWNlaXZlciBPcmNoYXJkIFVBLiBGb3IgYSB0cmFuc3BhcmVudCBvdXRwdXQgaXQgaXMgdGhlIG9yaWdpbmFsIFVuaWZpZWRcbiAgICogQWRkcmVzcyB3aGVuIG9uZSB3YXMgc3RvcmVkLCBlbHNlIHRoZSBkZWNvZGVkIHRyYW5zcGFyZW50IGFkZHJlc3MuXG4gICAqL1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSYXcgcmVjZWl2ZXIgYnl0ZXM6IHRoZSA0My1ieXRlIE9yY2hhcmQvSXJvbndvb2QgcmVjZWl2ZXIgZm9yIGEgc2hpZWxkZWQgb3V0cHV0LCB0aGVcbiAgICogc2NyaXB0UHViS2V5IGZvciBhIHRyYW5zcGFyZW50IG9uZS5cbiAgICovXG4gIHNjcmlwdDogVWludDhBcnJheTtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBVbmlmaWVkIEFkZHJlc3MgdGhlIGNsaWVudCBzdXBwbGllZCBmb3IgdGhpcyByZWNpcGllbnQsIHdoZW4gdGhlIFBTQlQgc3RvcmVzXG4gICAqIG9uZTogdGhlIHY2IChJcm9ud29vZCkgUENaVCBmb3IgYSBzaGllbGRlZCBvdXRwdXQsIHRoZSB0cmFuc3BhcmVudC1vdXRwdXQgcHJvcHJpZXRhcnlcbiAgICoga2V5LXZhbHVlIG1hcCBmb3IgYSB2NCB0cmFuc3BhcmVudCBvdXRwdXQuIGB1bmRlZmluZWRgIHdoZW4gdGhlIHJlY2lwaWVudCB3YXMgYnVpbHQgZnJvbSBhXG4gICAqIHBsYWluIGFkZHJlc3MuXG4gICAqL1xuICB1bmlmaWVkQWRkcmVzcz86IHN0cmluZztcbiAgZGVzdGluYXRpb246IFBzYnRSZWNpcGllbnREZXN0aW5hdGlvbjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSByZWNpcGllbnQgbGlzdCBvZiBhIGRlY29kZWQgWmNhc2ggUFNCVCAodjQgU2FwbGluZy1zaGFwZWQgb3IgdjYgSXJvbndvb2QpLlxuICpcbiAqIE1pcnJvcnMgdGhlIHJlY2lwaWVudCByZXNvbHV0aW9uIG9mIHdhbGxldC1wbGF0Zm9ybSdzIHV0eG8tY29yZSBgYnVpbGRUcmFuc2FjdGlvbmAgaW4gdGhlXG4gKiBkZWNvZGUgZGlyZWN0aW9uOiBldmVyeSBub24td2FsbGV0IG91dHB1dCB3aXRoIGEgcmVzb2x2YWJsZSBhZGRyZXNzIGlzIGEgcmVjaXBpZW50LiBBXG4gKiBzaGllbGRlZCBvdXRwdXQgcGFyc2VzIHdpdGggYGlzU2hpZWxkZWQ6IHRydWVgLCBpdHMgYHNjcmlwdGAgYmVpbmcgdGhlIHJhdyA0My1ieXRlIHJlY2VpdmVyO1xuICogd2hlbiB0aGUgYnVpbGQgc3RvcmVkIHRoZSBjbGllbnQncyBvcmlnaW5hbCBVbmlmaWVkIEFkZHJlc3MgKHRoZSB2NiBQQ1pUIGZvciBzaGllbGRlZFxuICogb3V0cHV0cywgdGhlIHRyYW5zcGFyZW50LW91dHB1dCBwcm9wcmlldGFyeSBrZXktdmFsdWUgbWFwIGZvciB2NCksIGJvdGggdGhlIHBhcnNlZCBhZGRyZXNzXG4gKiBhbmQgYHVuaWZpZWRBZGRyZXNzYCByZXBvcnQgaXQgdmVyYmF0aW0uIE9wYXF1ZSBvdXRwdXRzIHdpdGggbm8gYWRkcmVzcyAoZS5nLiBPUF9SRVRVUk4pIGFyZVxuICogc2tpcHBlZCwgYXMgdGhleSBjYXJyeSBubyByZWNpcGllbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUHNidFJlY2lwaWVudHMoXG4gIHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoQml0R29Qc2J0LFxuICB3YWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5c1xuKTogUHNidFJlY2lwaWVudFtdIHtcbiAgY29uc3QgcGFyc2VkID0gcHNidC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMod2FsbGV0S2V5cywge1xuICAgIHJlcGxheVByb3RlY3Rpb246IHsgcHVibGljS2V5czogZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMoJ3plYycpIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHJlY2lwaWVudHM6IFBzYnRSZWNpcGllbnRbXSA9IFtdO1xuICBwYXJzZWQub3V0cHV0cy5mb3JFYWNoKChvdXRwdXQsIGkpID0+IHtcbiAgICAvLyBXYWxsZXQtb3duZWQgKGNoYW5nZSkgb3V0cHV0cy5cbiAgICBpZiAob3V0cHV0LnNjcmlwdElkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE9wYXF1ZSBvdXRwdXRzIChlLmcuIE9QX1JFVFVSTikgY2Fycnkgbm8gcmVjaXBpZW50IGFkZHJlc3MuXG4gICAgaWYgKG91dHB1dC5hZGRyZXNzID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRoZSBvcmlnaW5hbCBjbGllbnQtcGFzc2VkIFVuaWZpZWQgQWRkcmVzcywgc3RvcmVkIHZlcmJhdGltIGluIHRoZSBQU0JUJ3Mga2V5LXZhbHVlXG4gICAgLy8gcGFpcnM6IHRoZSBvcmNoYXJkIFBDWlQgZm9yIGEgc2hpZWxkZWQgb3V0cHV0IChwYXJzZWQgYGFkZHJlc3NgIHJlcG9ydHMgaXQgaW4gZnVsbCksIHRoZVxuICAgIC8vIHRyYW5zcGFyZW50LW91dHB1dCBwcm9wcmlldGFyeSBtYXAgZm9yIGEgdjQgdHJhbnNwYXJlbnQgb3V0cHV0LlxuICAgIGNvbnN0IHVuaWZpZWRBZGRyZXNzID0gb3V0cHV0LmlzU2hpZWxkZWQgPyBvdXRwdXQuYWRkcmVzcyA6IHBzYnQudHJhbnNwYXJlbnRPdXRwdXRVbmlmaWVkQWRkcmVzcyhpKSA/PyB1bmRlZmluZWQ7XG4gICAgcmVjaXBpZW50cy5wdXNoKHtcbiAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLFxuICAgICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgICBzY3JpcHQ6IG91dHB1dC5zY3JpcHQsXG4gICAgICB1bmlmaWVkQWRkcmVzcyxcbiAgICAgIGRlc3RpbmF0aW9uOiBvdXRwdXQuaXNTaGllbGRlZFxuICAgICAgICA/IHsga2luZDogJ3pjYXNoU2hpZWxkZWQnLCB1bmlmaWVkQWRkcmVzczogb3V0cHV0LmFkZHJlc3MgfVxuICAgICAgICA6IHVuaWZpZWRBZGRyZXNzXG4gICAgICAgID8geyBraW5kOiAnemNhc2hVbmlmaWVkVHJhbnNwYXJlbnQnLCB1bmlmaWVkQWRkcmVzcyB9XG4gICAgICAgIDogeyBraW5kOiAndHJhbnNwYXJlbnQnIH0sXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gcmVjaXBpZW50cztcbn1cblxuLyoqXG4gKiBJbmZlciB0aGUgVW5pZmllZC1BZGRyZXNzIHJlY2lwaWVudCBwcmVmZXJlbmNlIGZvciBhIFpjYXNoIHRyYW5zYWN0aW9uIHdoZW4gdGhlIGNhbGxlciBkaWRcbiAqIG5vdCBwYXNzIG9uZSDigJQgdGhlIGNvdW50ZXJwYXJ0IG9mIHdhbGxldC1wbGF0Zm9ybSdzIHV0eG8tY29yZSBgYnVpbGRUcmFuc2FjdGlvbmBcbiAqIGBjbGFzc2lmeVJlY2lwaWVudFNoaWVsZGVkbmVzc2AuXG4gKlxuICogQSByZWNpcGllbnQgdGhhdCByZXNvbHZlcyB0byBhIHRyYW5zcGFyZW50IG91dHB1dCDigJQgYW4gb3JkaW5hcnkgdHJhbnNwYXJlbnQgYWRkcmVzcywgb3IgYVxuICogVW5pZmllZCBBZGRyZXNzIGNhcnJ5aW5nIGEgdHJhbnNwYXJlbnQgcmVjZWl2ZXIg4oCUIGlzIGNsYXNzaWZpZWQgYCd0cmFuc3BhcmVudCdgOyBhIFVuaWZpZWRcbiAqIEFkZHJlc3MgY2Fycnlpbmcgb25seSBhbiBPcmNoYXJkL0lyb253b29kIHJlY2VpdmVyIGlzIGNsYXNzaWZpZWQgYCdzaGllbGRlZCdgLiBBIG1peCBvZlxuICogc2hpZWxkZWQgYW5kIHRyYW5zcGFyZW50IHJlY2lwaWVudHMgaXMgcmVqZWN0ZWQuIEFuIGFkZHJlc3MgdGhhdCBpcyBuZWl0aGVyIGEgdHJhbnNwYXJlbnRcbiAqIGFkZHJlc3Mgbm9yIGEgVW5pZmllZCBBZGRyZXNzIHByb3BhZ2F0ZXMgdGhlIFVuaWZpZWQtQWRkcmVzcyBwYXJzZSBlcnJvciDigJQgaXQgaXMgbm90XG4gKiBzaWxlbnRseSBkZWZhdWx0ZWQgdG8gYCd0cmFuc3BhcmVudCdgLlxuICpcbiAqIEByZXR1cm5zIGAnc2hpZWxkZWQnYCB3aGVuIGV2ZXJ5IHJlY2lwaWVudCByZXNvbHZlcyBzaGllbGRlZCwgYHVuZGVmaW5lZGAgd2hlbiBldmVyeVxuICogICByZWNpcGllbnQgcmVzb2x2ZXMgdHJhbnNwYXJlbnQgKHRoZSBidWlsZCdzIGRlZmF1bHQpLiBUaGUgYCd0cmFuc3BhcmVudCdgIGFybSBvZiB0aGVcbiAqICAgcmV0dXJuIHR5cGUgZXhpc3RzIHNvIGNhbGxlcnMgY2FuIHBhc3MgdGhlIGV4cGxpY2l0IHByZWZlcmVuY2UgdGhyb3VnaCB1bmNoYW5nZWQ7IHRoaXNcbiAqICAgZnVuY3Rpb24gaXRzZWxmIG5ldmVyIHJldHVybnMgYCd0cmFuc3BhcmVudCdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UoXG4gIG5hbWU6IFpjYXNoQ29pbk5hbWUsXG4gIHJlY2lwaWVudHM6IHsgYWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkIH1bXVxuKTogVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UgfCB1bmRlZmluZWQge1xuICBjb25zdCBzaGllbGRlZG5lc3MgPSByZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgaWYgKHJlY2lwaWVudC5hZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFJhdyBzY3JpcHQgaW5oZXJlbnRseSB0cmFuc3BhcmVudC5cbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnIGFzIGNvbnN0O1xuICAgIH1cbiAgICAvLyBPcmRpbmFyeSB0cmFuc3BhcmVudCBhZGRyZXNzLCBvciBhIFVuaWZpZWQgQWRkcmVzcyBjYXJyeWluZyBhIHRyYW5zcGFyZW50IHJlY2VpdmVyOlxuICAgIC8vIHJlc29sdmVzIHRyYW5zcGFyZW50bHkgZWl0aGVyIHdheSAodGhlIGJ1aWxkJ3MgZGVmYXVsdCB3aGVuIG5vIHByZWZlcmVuY2UgaXMgZ2l2ZW4pLlxuICAgIGlmICh6Y2FzaEFkZHJlc3MuaGFzVHJhbnNwYXJlbnRSZWNlaXZlcihyZWNpcGllbnQuYWRkcmVzcywgbmFtZSkpIHtcbiAgICAgIHJldHVybiAndHJhbnNwYXJlbnQnIGFzIGNvbnN0O1xuICAgIH1cbiAgICAvLyBBIHNoaWVsZGVkIChPcmNoYXJkL0lyb253b29kLW9ubHkpIFVuaWZpZWQgQWRkcmVzcyBpcyB0aGUgb25seSByZW1haW5pbmcgcmVzb2x2YWJsZVxuICAgIC8vIGZvcm0uIEFuIGFkZHJlc3MgdGhhdCBpcyBub25lIG9mIHRoZSBhYm92ZSBwcm9wYWdhdGVzIHRoZSBwYXJzZSBlcnJvciBpbnN0ZWFkIG9mXG4gICAgLy8gYXNzdW1pbmcgYSBkZWZhdWx0LlxuICAgIGNvbnN0IHVuaWZpZWQgPSBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaFVuaWZpZWRBZGRyZXNzLnBhcnNlKHJlY2lwaWVudC5hZGRyZXNzLCBuYW1lKTtcbiAgICBpZiAodW5pZmllZC5oYXNPcmNoYXJkUmVjZWl2ZXIpIHtcbiAgICAgIHJldHVybiAnc2hpZWxkZWQnIGFzIGNvbnN0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGFkZHJlc3MgJHtyZWNpcGllbnQuYWRkcmVzc30gY2FycmllcyBubyB0cmFuc3BhcmVudCBvciBPcmNoYXJkIHJlY2VpdmVyYCk7XG4gIH0pO1xuICBjb25zdCBoYXNTaGllbGRlZCA9IHNoaWVsZGVkbmVzcy5pbmNsdWRlcygnc2hpZWxkZWQnKTtcbiAgY29uc3QgaGFzVHJhbnNwYXJlbnQgPSBzaGllbGRlZG5lc3MuaW5jbHVkZXMoJ3RyYW5zcGFyZW50Jyk7XG4gIGlmIChoYXNTaGllbGRlZCAmJiBoYXNUcmFuc3BhcmVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWl4ZWQgc2hpZWxkZWQgYW5kIHRyYW5zcGFyZW50IHJlY2lwaWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfVxuICByZXR1cm4gaGFzU2hpZWxkZWQgPyAnc2hpZWxkZWQnIDogdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** A Zcash coin name — the only UTXO coins with shielded (Orchard/Ironwood) support. */
|
|
2
|
+
export type ZcashCoinName = 'zec' | 'tzec';
|
|
3
|
+
/** How a Zcash Unified Address recipient should be resolved: to its shielded (Orchard/Ironwood) receiver or its transparent receiver. */
|
|
4
|
+
export type UnifiedRecipientPreference = 'shielded' | 'transparent';
|
|
5
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/impl/zec/types.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,yIAAyI;AACzI,MAAM,MAAM,0BAA0B,GAAG,UAAU,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1wbC96ZWMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBIFpjYXNoIGNvaW4gbmFtZSDigJQgdGhlIG9ubHkgVVRYTyBjb2lucyB3aXRoIHNoaWVsZGVkIChPcmNoYXJkL0lyb253b29kKSBzdXBwb3J0LiAqL1xuZXhwb3J0IHR5cGUgWmNhc2hDb2luTmFtZSA9ICd6ZWMnIHwgJ3R6ZWMnO1xuXG4vKiogSG93IGEgWmNhc2ggVW5pZmllZCBBZGRyZXNzIHJlY2lwaWVudCBzaG91bGQgYmUgcmVzb2x2ZWQ6IHRvIGl0cyBzaGllbGRlZCAoT3JjaGFyZC9Jcm9ud29vZCkgcmVjZWl2ZXIgb3IgaXRzIHRyYW5zcGFyZW50IHJlY2VpdmVyLiAqL1xuZXhwb3J0IHR5cGUgVW5pZmllZFJlY2lwaWVudFByZWZlcmVuY2UgPSAnc2hpZWxkZWQnIHwgJ3RyYW5zcGFyZW50JztcbiJdfQ==
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @prettier
|
|
3
3
|
*/
|
|
4
|
-
import { BitGoBase } from '@bitgo/sdk-core';
|
|
4
|
+
import { BitGoBase, MPCAlgorithm } from '@bitgo/sdk-core';
|
|
5
5
|
import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
|
|
6
6
|
import { UtxoCoinName } from '../../names';
|
|
7
7
|
export declare class Zec extends AbstractUtxoCoin {
|
|
8
8
|
readonly name: UtxoCoinName;
|
|
9
9
|
constructor(bitgo: BitGoBase);
|
|
10
|
+
/**
|
|
11
|
+
* ZEC shielded (Orchard/Ironwood) custodial wallets use RedPallas threshold keys.
|
|
12
|
+
* Transparent (secp256k1 multisig) flows are unaffected: MPCAlgorithm is only
|
|
13
|
+
* consulted on the TSS custodial wallet-creation path.
|
|
14
|
+
* @inheritdoc
|
|
15
|
+
*/
|
|
16
|
+
getMPCAlgorithm(): MPCAlgorithm;
|
|
10
17
|
static createInstance(bitgo: BitGoBase): Zec;
|
|
18
|
+
isValidAddress(address: string, param?: {
|
|
19
|
+
anyFormat?: boolean;
|
|
20
|
+
allowLightning?: boolean;
|
|
21
|
+
} | boolean): boolean;
|
|
11
22
|
}
|
|
12
23
|
//# sourceMappingURL=zec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zec.d.ts","sourceRoot":"","sources":["../../../../src/impl/zec/zec.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"zec.d.ts","sourceRoot":"","sources":["../../../../src/impl/zec/zec.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,GAAI,SAAQ,gBAAgB;IACvC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAS;gBAExB,KAAK,EAAE,SAAS;IAI5B;;;;;OAKG;IACH,eAAe,IAAI,YAAY;IAI/B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,GAAG;IAI5C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,GAAG,OAAO;CAK9G"}
|
package/dist/esm/impl/zec/zec.js
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
|
+
import { zcashAddress } from '@bitgo/wasm-utxo';
|
|
1
2
|
import { AbstractUtxoCoin } from '../../abstractUtxoCoin';
|
|
2
3
|
export class Zec extends AbstractUtxoCoin {
|
|
3
4
|
constructor(bitgo) {
|
|
4
5
|
super(bitgo);
|
|
5
6
|
this.name = 'zec';
|
|
6
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* ZEC shielded (Orchard/Ironwood) custodial wallets use RedPallas threshold keys.
|
|
10
|
+
* Transparent (secp256k1 multisig) flows are unaffected: MPCAlgorithm is only
|
|
11
|
+
* consulted on the TSS custodial wallet-creation path.
|
|
12
|
+
* @inheritdoc
|
|
13
|
+
*/
|
|
14
|
+
getMPCAlgorithm() {
|
|
15
|
+
return 'redpallas';
|
|
16
|
+
}
|
|
7
17
|
static createInstance(bitgo) {
|
|
8
18
|
return new Zec(bitgo);
|
|
9
19
|
}
|
|
20
|
+
isValidAddress(address, param) {
|
|
21
|
+
return (zcashAddress.hasTransparentReceiver(address, this.name) || zcashAddress.hasOrchardReceiver(address, this.name));
|
|
22
|
+
}
|
|
10
23
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGwvemVjL3plYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQsTUFBTSxPQUFPLEdBQUksU0FBUSxnQkFBZ0I7SUFHdkMsWUFBWSxLQUFnQjtRQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFITixTQUFJLEdBQWlCLEtBQUssQ0FBQztJQUlwQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ2IsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWUsRUFBRSxLQUFtRTtRQUNqRyxPQUFPLENBQ0wsWUFBWSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQy9HLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBCaXRHb0Jhc2UsIE1QQ0FsZ29yaXRobSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyB6Y2FzaEFkZHJlc3MgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5leHBvcnQgY2xhc3MgWmVjIGV4dGVuZHMgQWJzdHJhY3RVdHhvQ29pbiB7XG4gIHJlYWRvbmx5IG5hbWU6IFV0eG9Db2luTmFtZSA9ICd6ZWMnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICAvKipcbiAgICogWkVDIHNoaWVsZGVkIChPcmNoYXJkL0lyb253b29kKSBjdXN0b2RpYWwgd2FsbGV0cyB1c2UgUmVkUGFsbGFzIHRocmVzaG9sZCBrZXlzLlxuICAgKiBUcmFuc3BhcmVudCAoc2VjcDI1NmsxIG11bHRpc2lnKSBmbG93cyBhcmUgdW5hZmZlY3RlZDogTVBDQWxnb3JpdGhtIGlzIG9ubHlcbiAgICogY29uc3VsdGVkIG9uIHRoZSBUU1MgY3VzdG9kaWFsIHdhbGxldC1jcmVhdGlvbiBwYXRoLlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdyZWRwYWxsYXMnO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBaZWMge1xuICAgIHJldHVybiBuZXcgWmVjKGJpdGdvKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgcGFyYW0/OiB7IGFueUZvcm1hdD86IGJvb2xlYW47IGFsbG93TGlnaHRuaW5nPzogYm9vbGVhbiB9IHwgYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB6Y2FzaEFkZHJlc3MuaGFzVHJhbnNwYXJlbnRSZWNlaXZlcihhZGRyZXNzLCB0aGlzLm5hbWUpIHx8IHpjYXNoQWRkcmVzcy5oYXNPcmNoYXJkUmVjZWl2ZXIoYWRkcmVzcywgdGhpcy5uYW1lKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -33,6 +33,8 @@ export interface RecoverParams {
|
|
|
33
33
|
recoveryProvider?: RecoveryProvider;
|
|
34
34
|
/** Satoshi per byte */
|
|
35
35
|
feeRate?: number;
|
|
36
|
+
/** Block height used to select the Zcash consensus branch ID. */
|
|
37
|
+
blockHeight?: number;
|
|
36
38
|
/**
|
|
37
39
|
* Transaction lock time (nLockTime). Set before signing — it is part of the sighash.
|
|
38
40
|
* Used for ECX replay-protection sweeps (e.g. 499_999_999) and other custom lock-time needs.
|
|
@@ -69,6 +71,8 @@ export interface RecoverWithUnspentsParams {
|
|
|
69
71
|
krsFee?: bigint;
|
|
70
72
|
/** KRS fee address (required if krsFee > 0) */
|
|
71
73
|
krsFeeAddress?: string;
|
|
74
|
+
/** Block height used to select the Zcash consensus branch ID. */
|
|
75
|
+
blockHeight?: number;
|
|
72
76
|
/** Transaction lock time (nLockTime), set on the PSBT before signing */
|
|
73
77
|
lockTime?: number;
|
|
74
78
|
/** Input sequence number applied to every input */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backupKeyRecovery.d.ts","sourceRoot":"","sources":["../../../src/recovery/backupKeyRecovery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAMT,MAAM,EACP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAe,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,EAAsB,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAW,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,KAAK,cAAc,GAAG,iBAAiB,CAAC,gBAAgB,CAAC;AAEzD,KAAK,iBAAiB,GAAG,aAAa,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,eAAO,MAAM,qCAAqC,KAAK,CAAC;AAGxD,eAAO,MAAM,2CAA2C,MAAM,CAAC;AAG/D,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE;QACN,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAChC,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AA0CD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsID,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,8BAA8B;IAC9B,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAC7C,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,GAChC,iBAAiB,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"backupKeyRecovery.d.ts","sourceRoot":"","sources":["../../../src/recovery/backupKeyRecovery.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EAMT,MAAM,EACP,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAe,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,EAAsB,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAW,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,KAAK,cAAc,GAAG,iBAAiB,CAAC,gBAAgB,CAAC;AAEzD,KAAK,iBAAiB,GAAG,aAAa,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,eAAO,MAAM,qCAAqC,KAAK,CAAC;AAGxD,eAAO,MAAM,2CAA2C,MAAM,CAAC;AAG/D,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE;QACN,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAChC,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AA0CD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,cAAc,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsID,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,8BAA8B;IAC9B,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAC7C,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,yBAAyB,EACjC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,GAChC,iBAAiB,CAAC,SAAS,CAsC7B;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,8BAA8B;IAC9B,UAAU,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAC7C,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,mCAAmC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;CACnC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,iBAAiB,CAAC,SAAS,EACjC,MAAM,EAAE,6BAA6B,GACpC,+BAA+B,GAAG,2BAA2B,CAiD/D;AAUD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,+BAA+B,GAAG,2BAA2B,CAAC,CAyHxE;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IACjE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IACT,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAoBD"}
|