안녕하세요. aws에 enpoint node(baobab)를 올리고 node js 서버에서 caver-js를 이용하여 몇가지 간단한 테스를 진행중에 있습니다.
테스트중 궁금한것이 있어 질문 남깁니다.
-
en(enpoint node) cli에서 personal.newAccount()로 생성한 것과
caver-js의 caver.klay.accounts.create(password) 로 생성한 account는 어떤 차이점이 있나요?
후자의 방식으로 account를 생성하면 en의 cli에서 klay.accounts로 확인을 기대했는데 안돼서 궁금증이 생겼습니다. -
caver.klay.accounts.create(password) 로 생성한 account (caver account라 하겠습니다)로 송금 트랜잭션을 발생시키려면 어떻게 해야하나요?
klaytn wallet에서 위의 방식으로 caver account에 송금후 caver-js로 getBalance, getAccount 등의 함수로 account 정보를 읽을 수 있으나 트랜잭션 발생시 unKnown account 라는 에러가 뜹니다.
반대로 en에서 personal.newAccount로 생성하여 en에서 조회가능한 account의 트랜잭션은 잘 작동합니다.
어떤 차이점이 있고 에러를 해결하려면 어떻게 해야하는지 알려주시면 감사하겠습니다
아래 코드 첨부하겠습니다
1.create account
createKeyring = async (password)=> {
try{
//const keyring = await caver.wallet.keyring.generate();
const account = await caver.klay.accounts.create(password);
const keyring = await account.encrypt(password);
await caver.klay.accounts.wallet.add(account.privateKey, account.address);
fs.writeFile(`keystore/keystore-${account.address}.json`,JSON.stringify(keyring),async (err)=>{
if(err){
console.log('fs error : ' + err);
}
else{
console.log('fs write success');
const keystore = fs.readFileSync(`keystore/keystore-${account.address}.json`,'utf-8');
const decryptedKeyring = await caver.wallet.keyring.decrypt(keystore,password);
console.log(`decrypted : `);
console.log(decryptedKeyring);
await caver.wallet.add(decryptedKeyring);
//console.log(`account : ${decryptedKeyring._address} private key : ${decryptedKeyring._key._privateKey}`)
await caver.klay.accounts.createWithAccountKey(decryptedKeyring._address,decryptedKeyring._key._privateKey);
console.log(await caver.klay.getAccounts());
}
});
return keyring;
}catch(err){
console.log(err);
return null;
}
- valueTransfer
sendRpcKlay = async (from,to,value)=> {
try{
const tx = await caver.transaction.valueTransfer.create({
from: from,
to : to,
value : caver.utils.convertToPeb(`${value}`,'KLAY'),
gas : 50000
});
await caver.rpc.klay.sendTransaction(tx).then(console.log);
}catch(err){
console.log(err);
return null;
}
}