본문 바로가기

DeFi

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

2021.09.09 - [Lecture] - [elliptic , secp256k1] 랜덤 키 값 만들기

 

2번째 목표인 node serever.js 가 실행되면 특정 폴더에 특정파일이 생성된다. 를 실행하기 위해서

이전 개시물에서 만든 개인키값을 파일에 넣어 만들고

파일 저장할 경로와 파일의 존재 여부를 확인하는 함수를 만들고자 한다.

 

 

특정폴더가 있는지 확인 ? 있으면 폴더 생성 X : 없으면 폴더 생성 진행

여기서 나는 특정폴더의 이름을 wallet이라고 정했다.

 

 

A. fs모듈에 내장 함수 existsSync로 wallet/ 가 존재하는 지 확인을 한다 // 결과값은 false || true

 

!fs.existsSync("wallet/")

 

 

B. if문으로 mkdirSync를 사용해 wallet/ 폴더가 존재하지 않을때 폴더를 생성해 준다.

 

    if(!fs.existsSync("wallet/")){
        fs.mkdirSync("wallet/")
    }

 

 


 

여기서 wallet이 database라면 앞으로 생길 파일들을 구분해주는 폴더 (즉 table)을 같은 방식으로 검증 후 생성해 준다.

 

A-1. fs모듈에 내장 함수 existsSync로 wallet/default 가 존재하는 지 확인을 한다.

 

여기서 뒤에 붙은 파일명이 바뀔 수 도 있기 때문에 변수로 처리해준다.

 

const privateKeyLocation = "wallet/"+(process.env.PRIVATE_KEY || "default");
!fs.existsSync(privateKeyLocation);

 

 

B-1. if문으로 mkdirSync를 사용해 wallet/default 폴더가 존재하지 않을때 폴더를 생성해 준다.

 

    const privateKeyLocation = "wallet/"+(process.env.PRIVATE_KEY || "default");
    if(!fs.existsSync(privateKeyLocation)){
        fs.mkdirSync(privateKeyLocation);
    };

 

 


 

 

키 값을 넣을 파일이 존재하는지 확인하고 존재하지 않는다면 파일을 만들어 이전 발행글에서 만들었던 랜덤 키값(개인키값)을 넣어준다.

 

 

A-2. fs모듈에 내장 함수 existsSync로 wallet/default/private_key 가 존재하는 지 확인을 한다.

 

위와 같은 이유로 변수로 설정해서 처리해준다.

 

const privateFile = privateKeyLocation+"/private_key";
!fs.existsSync(privateFile)

 

 

B-2. if문으로 writeFileSync를 사용해 wallet/default/pricate_key 파일이 존재하지 않을때 파일을 생성해 준다.

 

여기서 writeFileSync를 사용하는데 들어가는 첫번째 인자값은 경로+ 파일명이고 두번째 인자값은 파일에 들어갈 내용이다.

파일에 들어갈 내용을 전에 만들어 두었던 개인키를 만드는 함수의 결과물로 넣어준다.

 

    if(!fs.existsSync(privateFile)){
        console.log(`주소값을 생성중입니다...`);
        const newPrivateKey = generatorPrivateKey();
        fs.writeFileSync(privateFile,newPrivateKey);
        console.log(`주소값이 생성 되었습니다.`);
    }

 

 


 

마지막으로 위 3가지 검사를 한 함수안에 넣어서 실행한다.

 

function initWallet(){
    if(!fs.existsSync("wallet/")){
        fs.mkdirSync("wallet/")
    }
    if(!fs.existsSync(privateKeyLocation)){
        fs.mkdirSync(privateKeyLocation);
    }
    if(!fs.existsSync(privateFile)){
        console.log(`주소값을 생성중입니다...`);
        const newPrivateKey = generatorPrivateKey();
        fs.writeFileSync(privateFile,newPrivateKey);
        console.log(`주소값이 생성 되었습니다.`);
    }
}