@@ -424,7 +424,7 @@ export interface KeychainWithEthAddress {
424424 * BIP32 wallet base address verification options
425425 * Supports V1, V2, and V4 wallets that use ethAddress-based derivation
426426 */
427- export interface VerifyBip32BaseAddressOptions extends VerifyEthAddressOptions {
427+ export interface VerifyContractBaseAddressOptions extends VerifyEthAddressOptions {
428428 walletVersion : number ;
429429 keychains : KeychainWithEthAddress [ ] ;
430430}
@@ -433,9 +433,9 @@ export interface VerifyBip32BaseAddressOptions extends VerifyEthAddressOptions {
433433 * Type guard to check if params are for BIP32 base address verification (V1, V2, V4)
434434 * These wallet versions use ethAddress for address derivation
435435 */
436- export function isVerifyBip32BaseAddressOptions (
436+ export function isVerifyContractBaseAddressOptions (
437437 params : VerifyEthAddressOptions | TssVerifyEthAddressOptions
438- ) : params is VerifyBip32BaseAddressOptions {
438+ ) : params is VerifyContractBaseAddressOptions {
439439 return (
440440 ( params . walletVersion === 1 || params . walletVersion === 2 || params . walletVersion === 4 ) &&
441441 'keychains' in params &&
@@ -2770,16 +2770,16 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
27702770 * Get forwarder factory and implementation addresses for deposit address verification.
27712771 * Forwarders are smart contracts that forward funds to the base wallet address.
27722772 *
2773- * @param {number | undefined } walletVersion - The wallet version
2773+ * @param {number | undefined } forwarderVersion - The wallet version
27742774 * @returns {object } Factory and implementation addresses for forwarders
27752775 */
2776- getForwarderFactoryAddressesAndForwarderImplementationAddress ( walletVersion : number | undefined ) : {
2776+ getForwarderFactoryAddressesAndForwarderImplementationAddress ( forwarderVersion : number | undefined ) : {
27772777 forwarderFactoryAddress : string ;
27782778 forwarderImplementationAddress : string ;
27792779 } {
27802780 const ethNetwork = this . getNetwork ( ) ;
27812781
2782- switch ( walletVersion ) {
2782+ switch ( forwarderVersion ) {
27832783 case 2 :
27842784 if ( ! ethNetwork ?. walletV2ForwarderFactoryAddress || ! ethNetwork ?. walletV2ForwarderImplementationAddress ) {
27852785 throw new Error ( 'Wallet v2 factory addresses not configured for this network' ) ;
@@ -2791,7 +2791,7 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
27912791 case 4 :
27922792 case 5 :
27932793 if ( ! ethNetwork ?. walletV4ForwarderFactoryAddress || ! ethNetwork ?. walletV4ForwarderImplementationAddress ) {
2794- throw new Error ( `Forwarder v${ walletVersion } factory addresses not configured for this network` ) ;
2794+ throw new Error ( `Forwarder v${ forwarderVersion } factory addresses not configured for this network` ) ;
27952795 }
27962796 return {
27972797 forwarderFactoryAddress : ethNetwork . walletV4ForwarderFactoryAddress ,
@@ -2817,7 +2817,7 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
28172817 * @returns {object } Factory and implementation addresses for the wallet base address
28182818 * @throws {Error } if wallet version addresses are not configured
28192819 */
2820- getWalletBaseAddressFactoryAddressesAndImplementationAddress ( walletVersion : number ) : {
2820+ getWalletAddressFactoryAddressesAndImplementationAddress ( walletVersion : number ) : {
28212821 walletFactoryAddress : string ;
28222822 walletImplementationAddress : string ;
28232823 } {
@@ -2872,10 +2872,7 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
28722872 * @param {VerifyBip32BaseAddressOptions } params - Verification parameters
28732873 * @returns {object } Expected and actual addresses for comparison
28742874 */
2875- private verifyBip32BaseAddress ( params : VerifyBip32BaseAddressOptions ) : {
2876- expectedAddress : string ;
2877- actualAddress : string ;
2878- } {
2875+ private verifyCreate2BaseAddress ( params : VerifyContractBaseAddressOptions ) : boolean {
28792876 const { address, coinSpecific, keychains, walletVersion } = params ;
28802877
28812878 if ( ! coinSpecific . salt ) {
@@ -2884,7 +2881,7 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
28842881
28852882 // Get wallet factory and implementation addresses for the wallet version
28862883 const { walletFactoryAddress, walletImplementationAddress } =
2887- this . getWalletBaseAddressFactoryAddressesAndImplementationAddress ( walletVersion ) ;
2884+ this . getWalletAddressFactoryAddressesAndImplementationAddress ( walletVersion ) ;
28882885 const initcode = getProxyInitcode ( walletImplementationAddress ) ;
28892886
28902887 // Convert the wallet salt to a buffer, pad to 32 bytes
@@ -2903,7 +2900,12 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
29032900 ) ;
29042901
29052902 const expectedAddress = calculateForwarderV1Address ( walletFactoryAddress , calculationSalt , initcode ) ;
2906- return { expectedAddress, actualAddress : address } ;
2903+
2904+ if ( expectedAddress !== address ) {
2905+ throw new UnexpectedAddressError ( `address validation failure: expected ${ expectedAddress } but got ${ address } ` ) ;
2906+ }
2907+
2908+ return true ;
29072909 }
29082910
29092911 /**
@@ -2914,14 +2916,11 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
29142916 * @param {number } forwarderVersion - The forwarder version
29152917 * @returns {object } Expected and actual addresses for comparison
29162918 */
2917- private verifyForwarderAddress (
2918- params : VerifyEthAddressOptions ,
2919- forwarderVersion : number
2920- ) : { expectedAddress : string ; actualAddress : string } {
2919+ private verifyForwarderAddress ( params : VerifyEthAddressOptions , forwarderVersion : number ) : boolean {
29212920 const { address, coinSpecific, baseAddress } = params ;
29222921
29232922 const { forwarderFactoryAddress, forwarderImplementationAddress } =
2924- this . getForwarderFactoryAddressesAndForwarderImplementationAddress ( params . walletVersion ) ;
2923+ this . getForwarderFactoryAddressesAndForwarderImplementationAddress ( forwarderVersion ) ;
29252924 const initcode = getProxyInitcode ( forwarderImplementationAddress ) ;
29262925 const saltBuffer = this . createSaltBuffer ( coinSpecific . salt || '' ) ;
29272926
@@ -2935,7 +2934,12 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
29352934 ) ;
29362935
29372936 const expectedAddress = calculateForwarderV1Address ( forwarderFactoryAddress , calculationSalt , initcode ) ;
2938- return { expectedAddress, actualAddress : address } ;
2937+
2938+ if ( expectedAddress !== address ) {
2939+ throw new UnexpectedAddressError ( `address validation failure: expected ${ expectedAddress } but got ${ address } ` ) ;
2940+ }
2941+
2942+ return true ;
29392943 }
29402944
29412945 /**
@@ -3000,25 +3004,13 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
30003004 }
30013005
30023006 // BIP32 wallet base address verification (V1, V2, V4)
3003- if ( isVerifyingBaseAddress && isVerifyBip32BaseAddressOptions ( params ) ) {
3004- const { expectedAddress, actualAddress } = this . verifyBip32BaseAddress ( params ) ;
3005-
3006- if ( expectedAddress !== actualAddress ) {
3007- throw new UnexpectedAddressError ( `address validation failure: expected ${ expectedAddress } but got ${ address } ` ) ;
3008- }
3009-
3010- return true ;
3007+ if ( isVerifyingBaseAddress && isVerifyContractBaseAddressOptions ( params ) ) {
3008+ return this . verifyCreate2BaseAddress ( params ) ;
30113009 }
30123010
30133011 // Forwarder receive address verification (deposit addresses)
30143012 if ( ! isVerifyingBaseAddress ) {
3015- const { expectedAddress, actualAddress } = this . verifyForwarderAddress ( params , forwarderVersion ) ;
3016-
3017- if ( expectedAddress !== actualAddress ) {
3018- throw new UnexpectedAddressError ( `address validation failure: expected ${ expectedAddress } but got ${ address } ` ) ;
3019- }
3020-
3021- return true ;
3013+ return this . verifyForwarderAddress ( params , forwarderVersion ) ;
30223014 }
30233015
30243016 // If we reach here, it's a base address verification for an unsupported wallet version
0 commit comments