수도코드
에러가 생기면 에러로 응답하기
자바스크립트 코드
router.post("/newMnemonic", async (req, res) => {
let mneMonic;
try {
let mneMonic = lightwallet.keystore.generateRandomSeed();
return res.json({ mneMonic });
} catch (err) {
console.log(err);
}
});
응답 mnemonic
{"mneMonic":"army join sport pistol inflict mention blade scare what goat cousin pony"}
수도코드
password와 mnemonic 변수를 만들기
요청에 포함되어 있는 password와 mnemonic를 각 변수에 할당하기
(응답)
router.post("/newWallet", async (req, res) => {
let randomNum = Math.random().toString();
let password = req.body.password;
let mnemonic = req.body.mnemonic;
console.log("password", password);
console.log("mnemonic", mnemonic);
try {
lightwallet.keystore.createVault(
{
password: password,
seedPhrase: mnemonic,
salt: randomNum, //랜덤 난수를 대입,
hdPathString: "m/0'/0'/0'",
},
function (err, ks) {
console.log("err", err);
console.log("ks", ks);
ks.keyFromPassword(password, function (err, pwDerivedKey) {
ks.generateNewAddress(pwDerivedKey, 1);
let randomNum = Math.random().toString();
let address = ks.getAddresses().toString();
let keystore = ks.serialize();
console.log("address", address);
console.log("keystore", keystore);
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);
}
});
module.exports = router;
eth-lightwallet의 기능
이것은 새로운 lightwallet 키스토어를 생성하기 위한 인터페이스입니다.
이 인스턴스 메서드는 내부적으로 구성된 솔트를 사용하여 적절한 pwDerivedKey.
사용자의 암호를 입력으로 Uint8Array사용하고 키 저장소를 암호화/암호 해독하는 데 사용되는 유형의 대칭 키를 생성합니다.
저장소에서 추가 내부 주소/개인 키 쌍을 생성할 수 있습니다.
가장 간단한 사용법은 ks.generateNewAddress(pwDerivedKey)입니다.
num에 대한 호출과 함께 반환될 시드 구에서 키 저장소에 새 주소/개인 키 쌍을 생성합니다.
( ex)) ks.getAddresses() )
const express = require("express");
const router = express.Router();
const lightwallet = require("eth-lightwallet");
const fs = require("fs");
// TODO : lightwallet 모듈을 사용하여 랜덤한 니모닉 코드를 얻습니다.
router.post("/newMnemonic", async (req, res) => {
let mneMonic;
try {
let mneMonic = lightwallet.keystore.generateRandomSeed();
return res.json({ mneMonic });
} catch (err) {
console.log(err);
}
});
// TODO : 니모닉 코드와 패스워드를 이용해 keystore와 address를 생성합니다.
router.post("/newWallet", async (req, res) => {
let randomNum = Math.random().toString();
let password = req.body.password;
let mnemonic = req.body.mnemonic;
console.log("password", password);
console.log("mnemonic", mnemonic);
try {
lightwallet.keystore.createVault(
{
password: password,
seedPhrase: mnemonic,
salt: randomNum,
hdPathString: "m/0'/0'/0'",
},
function (err, ks) {
console.log("err", err);
console.log("ks", ks);
ks.keyFromPassword(password, function (err, pwDerivedKey) {
ks.generateNewAddress(pwDerivedKey, 1);
let address = ks.getAddresses().toString();
let keystore = ks.serialize();
console.log("address", address);
console.log("keystore", keystore);
fs.writeFile("wallet.json", keystore, function (err, data) {
if (err) {
res.status(400).json({ code: 999, message: "실패" });
} else {
res.status(200).json({ code: 1, message: "성공" });
}
});
});
}
);
} catch (exception) {
console.log("NewWallet", exception);
}
});
module.exports = router;
출처 : https://github.com/ConsenSys/eth-lightwallet#readme
Obol Network (0) | 2023.03.30 |
---|---|
What is DVT (2023 DE-FERENCE 참고) (0) | 2023.03.30 |
leewayhertz가 설명하는 Cosmos 체인 (2) (0) | 2023.03.29 |
leewayhertz가 설명하는 Cosmos 체인 (1) (0) | 2023.03.28 |
지분증명 (PoS) (0) | 2023.02.02 |