@cardano-sdk/wallet 0.22.0 → 0.24.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.
Files changed (57) hide show
  1. package/dist/cjs/PersonalWallet/PersonalWallet.d.ts +3 -1
  2. package/dist/cjs/PersonalWallet/PersonalWallet.d.ts.map +1 -1
  3. package/dist/cjs/PersonalWallet/PersonalWallet.js +14 -4
  4. package/dist/cjs/PersonalWallet/PersonalWallet.js.map +1 -1
  5. package/dist/cjs/cip30.d.ts.map +1 -1
  6. package/dist/cjs/cip30.js +25 -7
  7. package/dist/cjs/cip30.js.map +1 -1
  8. package/dist/cjs/services/ChangeAddress/DynamicChangeAddressResolver.d.ts.map +1 -1
  9. package/dist/cjs/services/ChangeAddress/DynamicChangeAddressResolver.js +3 -1
  10. package/dist/cjs/services/ChangeAddress/DynamicChangeAddressResolver.js.map +1 -1
  11. package/dist/cjs/services/DelegationTracker/DelegationTracker.d.ts +1 -1
  12. package/dist/cjs/services/DelegationTracker/DelegationTracker.d.ts.map +1 -1
  13. package/dist/cjs/services/DelegationTracker/DelegationTracker.js +36 -10
  14. package/dist/cjs/services/DelegationTracker/DelegationTracker.js.map +1 -1
  15. package/dist/cjs/services/PublicStakeKeysTracker.d.ts +21 -0
  16. package/dist/cjs/services/PublicStakeKeysTracker.d.ts.map +1 -0
  17. package/dist/cjs/services/PublicStakeKeysTracker.js +16 -0
  18. package/dist/cjs/services/PublicStakeKeysTracker.js.map +1 -0
  19. package/dist/cjs/services/WalletUtil.d.ts.map +1 -1
  20. package/dist/cjs/services/WalletUtil.js +16 -51
  21. package/dist/cjs/services/WalletUtil.js.map +1 -1
  22. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  23. package/dist/cjs/types.d.ts +2 -2
  24. package/dist/cjs/types.d.ts.map +1 -1
  25. package/dist/esm/PersonalWallet/PersonalWallet.d.ts +3 -1
  26. package/dist/esm/PersonalWallet/PersonalWallet.d.ts.map +1 -1
  27. package/dist/esm/PersonalWallet/PersonalWallet.js +14 -4
  28. package/dist/esm/PersonalWallet/PersonalWallet.js.map +1 -1
  29. package/dist/esm/cip30.d.ts.map +1 -1
  30. package/dist/esm/cip30.js +26 -8
  31. package/dist/esm/cip30.js.map +1 -1
  32. package/dist/esm/services/ChangeAddress/DynamicChangeAddressResolver.d.ts.map +1 -1
  33. package/dist/esm/services/ChangeAddress/DynamicChangeAddressResolver.js +3 -1
  34. package/dist/esm/services/ChangeAddress/DynamicChangeAddressResolver.js.map +1 -1
  35. package/dist/esm/services/DelegationTracker/DelegationTracker.d.ts +1 -1
  36. package/dist/esm/services/DelegationTracker/DelegationTracker.d.ts.map +1 -1
  37. package/dist/esm/services/DelegationTracker/DelegationTracker.js +36 -10
  38. package/dist/esm/services/DelegationTracker/DelegationTracker.js.map +1 -1
  39. package/dist/esm/services/PublicStakeKeysTracker.d.ts +21 -0
  40. package/dist/esm/services/PublicStakeKeysTracker.d.ts.map +1 -0
  41. package/dist/esm/services/PublicStakeKeysTracker.js +12 -0
  42. package/dist/esm/services/PublicStakeKeysTracker.js.map +1 -0
  43. package/dist/esm/services/WalletUtil.d.ts.map +1 -1
  44. package/dist/esm/services/WalletUtil.js +16 -51
  45. package/dist/esm/services/WalletUtil.js.map +1 -1
  46. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  47. package/dist/esm/types.d.ts +2 -2
  48. package/dist/esm/types.d.ts.map +1 -1
  49. package/package.json +15 -15
  50. package/dist/cjs/services/ActiveStakePublicKeysTracker.d.ts +0 -13
  51. package/dist/cjs/services/ActiveStakePublicKeysTracker.d.ts.map +0 -1
  52. package/dist/cjs/services/ActiveStakePublicKeysTracker.js +0 -15
  53. package/dist/cjs/services/ActiveStakePublicKeysTracker.js.map +0 -1
  54. package/dist/esm/services/ActiveStakePublicKeysTracker.d.ts +0 -13
  55. package/dist/esm/services/ActiveStakePublicKeysTracker.d.ts.map +0 -1
  56. package/dist/esm/services/ActiveStakePublicKeysTracker.js +0 -11
  57. package/dist/esm/services/ActiveStakePublicKeysTracker.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import * as Crypto from '@cardano-sdk/crypto';
2
2
  import { Cardano } from '@cardano-sdk/core';
3
+ import { util as KeyManagementUtil } from '@cardano-sdk/key-management';
3
4
  import { firstValueFrom } from 'rxjs';
4
5
  import { createOutputValidator } from '@cardano-sdk/tx-construction';
5
6
  import { txInEquals } from './util';
@@ -44,65 +45,29 @@ export const createLazyWalletUtil = () => {
44
45
  }
45
46
  };
46
47
  };
48
+ const hasForeignInputs = ({ body: { inputs, collaterals = [] } }, utxoSet) => [...inputs, ...collaterals].some((txIn) => utxoSet.every((utxo) => !txInEquals(txIn, utxo[0])));
49
+ const hasCommitteeCertificates = ({ certificates }) => (certificates || []).some((certificate) => certificate.__typename === Cardano.CertificateType.AuthorizeCommitteeHot ||
50
+ certificate.__typename === Cardano.CertificateType.ResignCommitteeCold);
47
51
  export const requiresForeignSignatures = async (tx, wallet) => {
48
52
  const utxoSet = await firstValueFrom(wallet.utxo.total$);
49
53
  const knownAddresses = await firstValueFrom(wallet.addresses$);
50
- const uniqueAccounts = uniqBy(knownAddresses, 'rewardAccount').map((groupedAddress) => {
54
+ const uniqueAccounts = uniqBy(knownAddresses, 'rewardAccount')
55
+ .map((groupedAddress) => {
51
56
  const stakeKeyHash = Cardano.RewardAccount.toHash(groupedAddress.rewardAccount);
52
57
  return {
58
+ derivationPath: groupedAddress.stakeKeyDerivationPath,
53
59
  poolId: Cardano.PoolId.fromKeyHash(stakeKeyHash),
54
60
  rewardAccount: groupedAddress.rewardAccount,
55
61
  stakeKeyHash
56
62
  };
57
- });
58
- for (const input of tx.body.inputs) {
59
- const ownsInput = utxoSet.find((utxo) => input.txId === utxo[0].txId && input.index === utxo[0].index);
60
- if (!ownsInput)
61
- return true;
62
- }
63
- if (tx.body.collaterals) {
64
- for (const input of tx.body.collaterals) {
65
- const ownsInput = utxoSet.find((utxo) => input.txId === utxo[0].txId && input.index === utxo[0].index);
66
- if (!ownsInput)
67
- return true;
68
- }
69
- }
70
- if (!tx.body.certificates)
71
- return false;
72
- for (const certificate of tx.body.certificates) {
73
- let matchesOneAccount = false;
74
- for (const account of uniqueAccounts) {
75
- switch (certificate.__typename) {
76
- case Cardano.CertificateType.StakeKeyDeregistration:
77
- case Cardano.CertificateType.StakeDelegation:
78
- if (certificate.stakeKeyHash === account.stakeKeyHash)
79
- matchesOneAccount = true;
80
- break;
81
- case Cardano.CertificateType.PoolRegistration:
82
- for (const owner of certificate.poolParameters.owners) {
83
- if (owner === account.rewardAccount)
84
- matchesOneAccount = true;
85
- }
86
- break;
87
- case Cardano.CertificateType.PoolRetirement:
88
- if (certificate.poolId === account.poolId)
89
- matchesOneAccount = true;
90
- break;
91
- case Cardano.CertificateType.MIR:
92
- if (certificate.kind === Cardano.MirCertificateKind.ToStakeCreds &&
93
- certificate.stakeCredential.hash ===
94
- Crypto.Hash28ByteBase16(Cardano.RewardAccount.toHash(account.rewardAccount)))
95
- matchesOneAccount = true;
96
- break;
97
- case Cardano.CertificateType.StakeKeyRegistration:
98
- case Cardano.CertificateType.GenesisKeyDelegation:
99
- default:
100
- matchesOneAccount = true;
101
- }
102
- }
103
- if (!matchesOneAccount)
104
- return true;
105
- }
106
- return false;
63
+ })
64
+ .filter((acct) => acct.derivationPath !== null);
65
+ const dRepKeyHash = (await Crypto.Ed25519PublicKey.fromHex(await wallet.getPubDRepKey()).hash()).hex();
66
+ return (hasForeignInputs(tx, utxoSet) ||
67
+ KeyManagementUtil.checkStakeCredentialCertificates(uniqueAccounts, tx.body).requiresForeignSignatures ||
68
+ KeyManagementUtil.getDRepCredentialKeyPaths({ dRepKeyHash, txBody: tx.body }).requiresForeignSignatures ||
69
+ KeyManagementUtil.getVotingProcedureKeyPaths({ dRepKeyHash, groupedAddresses: knownAddresses, txBody: tx.body })
70
+ .requiresForeignSignatures ||
71
+ hasCommitteeCertificates(tx.body));
107
72
  };
108
73
  //# sourceMappingURL=WalletUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletUtil.js","sourceRoot":"","sources":["../../../src/services/WalletUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WalletUtil.js","sourceRoot":"","sources":["../../../src/services/WalletUtil.ts"],"names":[],"mappings":"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"}