
Ubuntu 20.04 LTS 에서 진행
node.js, npm, visual studio code 설치 필요
Postman 설치 필요
전체코드
~/routes/wallet/index.js를 아래와 같이 편집한다.
필요한 모듈 불러오기
var express = require('express'); var router = express.Router(); const lightwallet = require("eth-lightwallet"); const fs = require('fs');
var express = require('express')API를 구현하기 위하여 사용하는 모듈
const lightwallet = require("eth-lightwallet")암호화된 개인 키를 저장할 수 있는 HD 지갑을 만들때 필요한 모듈
const fs = require('fs')API로 생성된 지갑을.json파일 형식으로 저장할 때 필요한 모듈
newMnemonic
router.post('/newMnemonic', async (req, res) => { let mnemonic; try { mnemonic = lightwallet.keystore.generateRandomSeed(); res.json({ mnemonic }); } catch (err) { console.log(err); } });
/wallet/newMnemonicPOST요청을 받는다. 응답으로는 mnemonic을 생성하여json형식으로 돌려준다.async를 사용하였으므로 비동기 방식으로 작동한다.
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: 400, message: "실패" }); } else { res.json({ code: 200, message: "성공" }); } }); }); } ); } catch (exception) { console.log("NewWallet ==>>>> " + exception); } });
/wallet/newWalletPOST요청을 받는다. 먼저 요청시mnemonic과password값을 받는다.lightwallet.keystore.createVault를 사용하여keysotre생성 후fs모듈을 사용하여wallet.json으로 저장한다. 이후 성공 여부를 상태코드로 응답해준다.async를 사용하였으므로 비동기 방식으로 작동한다.
Postman을 사용하여 테스트 진행
POSTwallet/newMnemonic
POSTwallet/newWallet
Wallet 파일 생성
POSTwallet/newWallet요청을 보내면wallet.json생성됨
간단한 API로 mnemonic을 생성 할수 있게 되었다. 비동기 작동방식 이해도가 완벽하지 않으므로 잘 이해할 수 있게 관련문서를 읽어야겠다. 이후에 시간이 된다면 웹 어플리케이션을 구성하여 클라이언트 쪽에서 직접 생성 할 수 있게끔 해볼 생각이다.