@@ -86,22 +86,7 @@ open class HDWallet {
8686 /// [Cached] Addresses combined both external and internal.
8787 public var addresses : [ BitcoinAddress ] { return externalAddresses + internalAddresses }
8888
89- private init ( mnemonic: [ String ] ? ,
90- seed: Data ,
91- externalIndex: UInt32 ,
92- internalIndex: UInt32 ,
93- network: Network ,
94- account: UInt32 ) {
95- self . mnemonic = mnemonic
96- self . seed = seed
97- self . network = network
98- self . account = account
99- self . externalIndex = externalIndex
100- self . internalIndex = internalIndex
101- self . keychain = HDKeychain ( seed: seed, network: network)
102- self . rootXPrivKey = HDPrivateKey ( seed: seed, network: network)
103- self . rootXPubKey = rootXPrivKey. extendedPublicKey ( )
104-
89+ private func initializeCache( ) {
10590 // Privkey cache
10691 self . externalPrivKeys = ( 0 ... externalIndex) . map { privKey ( index: $0, chain: . external) }
10792 self . internalPrivKeys = ( 0 ... internalIndex) . map { privKey ( index: $0, chain: . internal) }
@@ -115,22 +100,42 @@ open class HDWallet {
115100 self . internalAddresses = internalPubKeys. map { $0. toBitcoinAddress ( ) }
116101 }
117102
118- public convenience init ( seed: Data ,
119- externalIndex: UInt32 ,
120- internalIndex: UInt32 ,
121- network: Network ,
122- account: UInt32 = 0 ) {
123- self . init ( mnemonic: nil , seed: seed, externalIndex: externalIndex, internalIndex: internalIndex, network: network, account: account)
103+ public init ( seed: Data ,
104+ externalIndex: UInt32 ,
105+ internalIndex: UInt32 ,
106+ network: Network ,
107+ account: UInt32 = 0 ) {
108+ self . mnemonic = nil
109+ self . seed = seed
110+ self . network = network
111+ self . account = account
112+ self . externalIndex = externalIndex
113+ self . internalIndex = internalIndex
114+ self . keychain = HDKeychain ( seed: seed, network: network)
115+ self . rootXPrivKey = HDPrivateKey ( seed: seed, network: network)
116+ self . rootXPubKey = rootXPrivKey. extendedPublicKey ( )
117+
118+ self . initializeCache ( )
124119 }
125120
126- public convenience init ( mnemonic: [ String ] ,
127- passphrase: String ,
128- externalIndex: UInt32 ,
129- internalIndex: UInt32 ,
130- network: Network ,
131- account: UInt32 = 0 ) throws {
121+ public init ( mnemonic: [ String ] ,
122+ passphrase: String ,
123+ externalIndex: UInt32 ,
124+ internalIndex: UInt32 ,
125+ network: Network ,
126+ account: UInt32 = 0 ) throws {
132127 let seed : Data = try Mnemonic . seed ( mnemonic: mnemonic, passphrase: passphrase)
133- self . init ( mnemonic: mnemonic, seed: seed, externalIndex: externalIndex, internalIndex: internalIndex, network: network, account: account)
128+ self . mnemonic = mnemonic
129+ self . seed = seed
130+ self . network = network
131+ self . account = account
132+ self . externalIndex = externalIndex
133+ self . internalIndex = internalIndex
134+ self . keychain = HDKeychain ( seed: seed, network: network)
135+ self . rootXPrivKey = HDPrivateKey ( seed: seed, network: network)
136+ self . rootXPubKey = rootXPrivKey. extendedPublicKey ( )
137+
138+ self . initializeCache ( )
134139 }
135140
136141 /// Create HDWallet by generating random mnemonic. Passphrase is used as salt to generate seed from the mnemonic.
0 commit comments