프로젝트3에서 만든 staking에 추가적인 기능을 구현해보려고 하는도중에 잘 예치해둔 10개의 KFT토큰을 출금하거나 현재 발생된 예치이자를 출금하려고하니.. 다음과 같은 오류가 발생했다. 처음에는 출금 메소드안에 들어 갈 숫자가 toWei나 toFrom으로 쓰지말고 caver에서 제공하는 convertToPeb의 convert를 사용하지 않아서 그런가?.. 하며 생각해보았지만 이전에는 잘 작동 됐는데 갑자기 안된다는 것에서 새로운 업데이트가 있었는지 확인해보았다.
클레이튼 공지사항을 보니 3월3일자로 GAS비가 변경이 돼었다.
https://medium.com/klaytn-kr/notice-gas-price-adjustment-announcement-kr-6e45db8056c0
그래서 기존에 send() 인자로 넣은 gasPrice부분의 하드코딩을 하지말고 현재 가스비가 업데이트 될 때 마다 새롭게 가져와서 적용할 수 있도록 아래처럼 api를 사용하였다.
기존에는 gasPrice를 25*10^9를 사용했으나 3월3일자로 25에서 750(5월 22일, 250으로 하향조정됨)으로 바뀌게되었다. 매번 이렇게 업데이트 될 때마다 하드코딩 할 수 없으니 현재 블록에서 유효한 가스범위를 불러와주는 Caver.klay.gasPriceAt("latest")를 사용하여 가스비를 불러와보니 16진수로 나타났고 이를 10진수로 변환하여 gasPrice에 할당했다.
const withdrawl = async () => {
setShowModal(true);
setMessage(`Please sign the Wallet and wait until "Success!"`);
if (window.klaytn) {
window.klaytn._kaikas.isUnlocked().then(async (result) => {
if (result === true) {
await window.klaytn._kaikas.isApproved().then(async (result) => {
if (result === true) {
const caver = new Caver(window.klaytn);
await caver.klay.gasPriceAt("latest").then(async (nowGasPrice) => {
await caver.klay
.getAccounts()
.then(async (account) => {
let stakeContract = new caver.klay.Contract(stakingAbi, stakingContract);
stakeContract.methods
.withdraw(caver.utils.toWei(String(inputData), "ether")) //출금함수
.send({ from: account[0], gasPrice: parseInt(nowGasPrice, 16), gas: 210000 })
.then(() => {
setMessage("Withdraw on KFT Success!");
document.location.href = `/stakingForKlaytn`;
})
.catch((err) => {
setClosebox(true);
setMessage(err.message);
});
})
.catch((err) => {
setClosebox(true);
setMessage(err.message);
});
});
}
});
}
});
} else {
alert("there's no kaikas");
setShowModal(false);
}
};
+추가 (5월 22일, 클레이튼 가스비 인하 후 250으로 변경되었다.
750이 아닌 250을 사용하면 된다.
'개발 학습 > 블록체인' 카테고리의 다른 글
지속 연결 네트워크를 위한 static.nodes.json (0) | 2022.02.21 |
---|---|
Docker로 노드 운영 (5) : 부트노드 운용 (0) | 2022.02.21 |
Docker로 노드 운영 (4) : 두 개의 노드 연결하기 (0) | 2022.02.19 |
Docker로 노드 운영 (3) : Geth로 채굴, 트랜잭션 생성 (0) | 2022.02.19 |
Docker로 노드 운영 (2) : 계정 및 제네시스 블록 생성 (0) | 2022.02.19 |
댓글