PrivateKey 만으로 Address 를 파생할 수 있는지 문의드립니다

안녕하세요. Wallet 관련 스터디를 하고 있는 학생 입니다.

Address 와 관련하여 문의드리고자 글 남깁니다.
(제가 블록체인에 대한 이해가 부족해서 엉뚱한 질문일 수도 있을것 같네요 ㅠㅠ)

안드로이드의 경우에는 caver-java 의 Keyring 을 통해 address 를 가져올 수 있는데요.
iOS 의 경우에는 지원되는 SDK 가 없어서 구현에 어려움이 있습니다.

그래서 BIP-39 와 BIP-44 를 통해 PrivateKey 를 생성하고,
이 키 만으로 Address 를 파생하는 것이 가능한가요?

caver-java 에서는 PrivateKey.getDeriveAddress() 로 Address 를 파생하는거 같아보여서,
혹시 가능하다면 참고할 만한 자료가 있을지 문의드립니다.

안녕하세요,

스터디에 도움이 되실 자료일 것 같아 이더리움에서 Swift 언어로 프라이빗 키, 주소 생성하는 방법에 대한 글 첨부 해드립니다.

func createAccount(name: String) throws -> Web3Wallet {
  
  guard let mnemonicsString = try BIP39.generateMnemonics(bitsOfEntropy: bitsOfEntropy) 
  else { throw Web3ServiceError.noMnemonics }
  
  guard let keystore = try BIP32Keystore(mnemonics: mnemonicsString, password: password, mnemonicsPassword: "", language: .english) 
  else { throw Web3ServiceError.noKeyStore }
  
  guard let address = keystore.addresses?.first?.address 
  else { throw Web3ServiceError.noAddress }
  
  let keyData = try JSONEncoder().encode(keystore.keystoreParams)
  let mnemonics = mnemonicsString.split(separator: " ").map(String.init)
  
  return Web3Wallet(address: address, data: keyData, name: name, type: .hd(mnemonics: mnemonics))
}

Create an Ethereum Wallet in iOS

2 Likes

알려주신 방법으로 확인해보았더니,
동일한 니모닉 단어들로 동일한 주소가 파생되는 것을 확인했습니다.

감사합니다.

1 Like