eth-lightwallet 모듈에 내장되어 있는 함수를 사용하여 니모닉 지갑을 개발할 것이기 때문에 LightWallet을 설치한다
npm install eth-lightwallet
응답을 Postman을 사용하여 확인할 것이므로 Postman 또한 설치한다.
랜덤한 12개의 니모닉코드를 생성하고 Postman을 통하여 응답을 확인한다.
router.post('/newMnemonic', async(req,res) => {
let mnemonic;
try {
mnemonic = lightwallet.keystore.generateRandomSeed();
res.json({mnemonic});
} catch(err) {
console.log(err);
}
});
- mnemonic 변수를 만들고 ightwallet.keystore.generateRandomSeed() 을 담아 응답으로 전송한다
- 로컬 서버를 실행하고 Postman에서 니모닉 코드를 확인하는데 여기서 엔드포인트는
http://localhost:3000/wallet/newMnemonic
이다.
니모닉 코드와 패스워드를 이용하여 newWallet API를 만들고 Postman으로 확인한다.
router.post('/newWallet', async(req, res) => {
let password = req.body.password
let mnemonic = req.body.mnemonic;
try {
lightwallet.keystore.createVault(
{
password: password,
seedPhrase: mnemonic,
hdPathString: "m/0'/0'/0'"
},
function (err, ks) {
ks.keyFromPassword(password, function (err, pwDerivedKey) {
ks.generateNewAddress(pwDerivedKey, 1);
let address = (ks.getAddresses()).toString();
let keystore = ks.serialize();
res.json({ keystore: keystore, address: address });
});
}
);
} catch (exception) {
console.log("NewWallet ==>>>> " + exception);
}
});
http://localhost:3000/wallet/newWallet
이다router.post('/newWallet', async(req, res) => {
let password = req.body.password
let mnemonic = req.body.mnemonic;
try {
lightwallet.keystore.createVault({
password: password,
seedPhrase: mnemonic,
hdPathString: "m/0'/0'/0'"
},
function (err, ks) {
ks.keyFromPassword(password, function (err, pwDerivedKey) {
ks.generateNewAddress(pwDerivedKey, 1);
let address = (ks.getAddresses()).toString();
let keystore = ks.serialize();
fs.writeFile('wallet.json',keystore,function(err,data){
if(err) {
res.json({code:999,message:"실패"});
} else {
res.json({code:1,message:"성공"});
}
});
});
}
);
} catch (exception) {
console.log("NewWallet ==>>>> " + exception);
}
});
- 응답 대신 fs.writeFile을 사용하여 로컬 서버에 json 파일을 저장
fs.writeFile('wallet.json',keystore,function(err,data){ if(err) { res.json({code:999,message:"실패"}); } else { res.json({code:1,message:"성공"});
- 성공했다는 응답을 받으면 로컬 서버의 경로에
wallet.json
파일이 생성된다.
깃헙 주소
https://github.com/NonamedBread/Mnemonic-Wallet
니모닉 지갑을(Mnemonic Wallet)을 개발하고, Postman을 사용하여 테스트한다.
직접 니모닉 지갑을 개발해 보면서 니모닉에 대해서 좀 더 알아보고 이해할 수 있었던것은 좋은 경험이였다.
Postman으로 응답을 확인하는것도 좋지만 직접 프론트를 개발하여 응답을 확인할 수 있었으면 좋았을텐데 이부분이 아쉽다.
프론트부분을 좀 더 공부하고 블록체인을 적용한 웹을 개발할 수 있으면 좋을것 같다.