[블록체인] eth-lightwallet 모듈을 이용하여 니모닉 지갑 개발하기

hams·2022년 6월 9일
1

repository: https://github.com/genius-jihye-park/Mnemonic_wallet

1. 👾 니모닉이란?

지갑을 복구하기 위한 12개의 단어. 개인 키가 너무 복잡한 단어들로 구성되어 있기 때문에, 이를 쉽게 입력할 수 있도록 갖춰진 형식


2. 🫶 구현 목표

1. eth-lightwallet 모듈을 이용하여 간단한 Mnemonic Wallet을 개발하기
2. Postman을 사용하여 API 테스트 해보기

3. 구현 계획 💭

eth-lightwallet 모듈에 내장되어 있는 함수를 사용하여 개발

  • 랜덤한 니모닉 코드를 생성
  • 니모닉을 시드로 키스토어를 생성

Postman을 사용하여 결과 확인
fs 모듈을 이용한 키스토어 로컬 저장


4. 🖇 실습해보자

  1. eth-lightwallet 모듈 설치

    npm install eth-lightwallet

  2. newMnemonic API 만들기_랜덤한 니모닉 코드 생성하기
    lightwallet 모듈을 통해서 간단하게 랜덤한 니모닉 코드를 생성할 수 있다.

//newMnemonic 생성하기, mnemonic변수 만들어서 랜덤한 니모닉코드 얻기
 router.post('/newMnemonic', async(req,res) => {
    let mnemonic; 
    try {
      mnemonic = lightwallet.keystore.generateRandomSeed();
      res.json({mnemonic});
    } catch(err) {
      console.log(err);
  }
});
  • 랜덤한 12단어의 니모닉 코드를 생성 하기 위해 eth-lightwallet라이브러리의 generateRandomSeed() 함수를 사용
  • mnemocnic 응답으로 전송
  1. 니모닉 코드 + 비밀번호로 지갑 생성하기
//키스토어 패키지를 생성
    try {
      lightwallet.keystore.createVault(
        {
          password: password, 
          seedPhrase: mnemonic,
          hdPathString: "m/0'/0'/0'"
        },```
- 키스토어 패키지 생성
- 니모닉코드, 솔트값, HD지갑경로를 인자로 받아 callback함수 실행

```js
        function (err, ks) {
          ks.keyFromPassword(password, function (err, pwDerivedKey) {
            ks.generateNewAddress(pwDerivedKey, 1);
            
            let address = (ks.getAddresses()).toString();
            let keystore = ks.serialize();

           
  • 실제 블록체인 지갑주소를 만드는 부분
  • ks.keyFromPassword() 함수를 통해 키 쌍(key-pair) 를 생성
  1. 포스트맨으로 로컬에 키스토어 파일이 생기는지 확인하기
    npm start
    서버 실행한 후
    http://localhost:3000/wallet/newMnemonic으로 mnewmonic, password를 JSON형식으로 post요청

생성된 keystore를 json 파일,.. 확인하쉐요


🥹 KPT에 근거한 회고

🐤 KEEP: 프로젝트에서 만족했고 지속하고 싶은 부분

  • 코드 하나하나 뜯어보면서 분석한 점
    - 함수가 어떤 역할을 하는지 하나하나 찾아봤다

🐣PROBLEM: 프로젝트에서 부정적인 요소로 작용하거나 아쉬운점

  • 시간이 오래 걸림
    - 코드를 분석하면서 앨리스 굴에 빠졌다
  • 원래는 새로운 걸 만들어 보고 싶었는데 그렇게 못함
    - 수업 내용만 뜯어보는데도 한나절
  • 나의 역량 부족^^!
    - 원래 고치려는 거에서 분석하는걸로 바꾸게 만들었다.

🐥TRY:problem에 대한 해결 방식으로 다음 프로젝트에서 시도해 볼 점

  • 풍부한 리액트 사용
  • 시간 관리
  • 처음부터 분석보다는 숲을 보자

0개의 댓글