본문 바로가기

DeFi

[지갑 만들기] privateKey, publicKey 생성 및 불러오기

2021.09.09 - [Lecture] - [지갑 만들기] 랜덤 키 값 만들기 (elliptic , secp256k1)

2021.09.09 - [Lecture] - [지갑 만들기] 파일 경로 설정 및 존재 여부 검사

 

[지갑 만들기] 랜덤 키 값 만들기 (elliptic , secp256k1)

암호화폐의 지갑을 만들어 보려고 한다. 일단 최초 목표가 있는데 node server.js 를 할때 http://localhost:3000/address 에 요청을 하게 되면 1. node serever.js 가 실행되면 특정 폴더에 특정파일이 생성된다...

develop-famous.tistory.com

 

 

마지막 목표인 generatorPrivateKey() 값을 보여줄것. 을 실행하려고 한다.

 

 

 

1. 일단 파일에 저장해둔 privateKey값을 가지고 오는 함수를 만든다.

 

const fs = require('fs'); 

function getPrivateFromWallet(){
    const buffer = fs.readFileSync(privateFile);
    return buffer.toString();
};

 

 

 

2. 받아온 privateKey를 통해 publicKey를 만드는 함수를 만든다.

 

const ecdsa = require('elliptic');
const ec = ecdsa.ec("secp256k1");

function getPublicFromWallet(){
    const privateKey = getPrivateFromWallet();
    const key = ec.keyFromPrivate(privateKey,"hex");
    return key.getPublic().encode("hex");
};

 

 

 

3. 전 게시물에서 만들었던 파일을 검사 및 생성하는 initWallet함수와 publicKey를 생성하는 getPublicFromWallet함수를 export해준다.

 

module.exports = {
    initWallet,
    getPublicFromWallet
}

 

 

 

4. server 페이지에서 exports 한 파일 가져와서 send로 /address 주소에 값을 보내준다.

 

const wl = require('./wallet.js');
app.get(`/address`,(req,res)=>{
    const address = wl.getPublicFromWallet();
    res.send({ address });
});
wl.initWallet();

 

 


 

 

이렇게 한 후 서버 실행시키고 curl로 http://localhost:3000/address를 확인해 보면 키 값을 볼 수 있다.