Caver-js
Klaytn 블록체인을 Javascript를 사용해 접근하기 위해서는 Caver-js를 사용한다. caver-js는 HTTPS, 웹 소켓 연결로 Klaytn 블록체인과 Javascript 간 상호작용을 가능하게 한다.
Caver-js 사용법
Caver-js 설치
우선 caver-js 모듈을 설치해준다.
npm install caver-js
Klaytn Endpoint Node 접속
caver-js를 통해 Provider를 제공해준다. Klaytn의 EN 노드 엔드포인드 URL을 인자로 보내주면 된다. 예제에서는 Klaytn baobab 테스트넷으로 접속한다.
const Caver = require('caver-js');
const caver = new Caver("https://api.baobab.klaytn.net:8651/");
Klaytn Account 생성
1. caver.wallet.keyring 패키지로 계정을 생성한다.
async function accountTest(){
const keyring = caver.wallet.keyring.generate();
console.log(keyring);
}
2. Kaikas 지갑에서 관리중인 계정을 가져올 수도 있다. createFromPrivateKey() 메소드를 사용한다.
async function kaikasFunction() {
const keyring = caver.wallet.keyring.createFromPrivateKey(
process.env.PRIVATE_KEY
);
console.log(keyring);
}
3. 계정 등록
계정을 생성하거나 기존의 Kaikas에서 사용중인 계정을 가져오면, caver.wallet 패키지에 등록해야 트랜잭션을 일으킬 수 있다.
caver.wallet.add(keyring);
Klaytn Contract 배포
klaytn remix IDE를 사용해 Contract를 배포한다. 기본 작성되어 있는 Storage 컨트랙트를 컴파일 => 배포 진행한다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
컴파일이 성공적으로 완료되면, [Compilation Details] 탭에서 ABI를 복사해둔다.
Klaytn Remix에 계정을 연결하고 Baobab 테스트넷에 컨트랙트를 배포한다. [Deployed Contracts] 탭에서 배포된 컨트랙트의 Address를 가져올 수 있다.
caver-js로 배포된 컨트랙트를 abi와 address 2개의 인자로 객체를 가져올 수 있다.
const contractInstance = new caver.contract(
contractAbi,contractAddress
);
앞서 생성 및 등록된 계정을 트랜잭션 발생 계정으로 사용해 트랜잭션을 발생시키고, call 메소드를 사용할 수 있다.
await contractInstance.methods
.store(15)
.send({
from: keyring.address,
gas: '60000',
});
const temp = await contractInstance.methods.retrieve().call();
console.log(temp);
Klaytn 블록체인에 접근할 수 있는 caver-js를 사용해 컨트랙트와 계정을 생성해 메소드를 작동시키는 부분 까지 알아봤다. 이더리움의 web3 모듈에서는 server에서 트랜잭션 발생 기능이 제한되어 있었던 반면, Klaytn에서는 자유롭게 사용할 수 있어 좀더 다양한 기능을 테스트 해볼 수 있겠다.
좋아요는 큰 힘이 됩니다.
댓글