BloCCat

caver-js : 서비스 체인 연동 본문

Study/클레이튼

caver-js : 서비스 체인 연동

uooy 2021. 12. 14. 17:28

node js v17.2.0 사용

 

프로젝트 구조

- main.js : 'libs' 폴더의 caver 함수를 사용하는 main 함수를 담은 파일

- libs : caver-js 를 이용하여 만든 함수(라이브러리)를 모아놓은 폴더 

- provider.js : Service Chain 과 연결하는 provider 파일

 

 

코드


1. provider.js

require('dotenv').config(); // 전역 변수(.env파일에 선언한 변수)를 사용하기 위함

const Caver = require('caver-js'); //caver-js 객체 선언
const caver = new Caver(process.env.SCN_URL); // Service Chain Provider - server ip:scn port

module.exports = caver;

 

2. libs/*.js

require('dotenv').config();

const fs = require('fs');
const caver = require('../provider'); // provider.js 에서 export한 caver import

class Example {
    
    ...
    
    /*
    * scn에서의 송금 트랜잭션 발생
    * scn에 있는 account만 허용
    */
    sendKlay = 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)
        }
    }

    ...
}

const example = new Example()

module.exports = example

 

3. main.js

const example = require('./libs/example');

const run = ()=>{

	...
	
	let readline = require('readline');
    let r = readline.createInterface({
        input:process.stdin,
        output:process.stdout
    })
    
	
    ...
    
    r.question('from : ',async (from)=>{
                    r.question('to : ', async (to)=>{
                        r.question('value : ', async(value)=>{
                            keyring.sendKlay(from,to,value);
                        })
                    })
                });
    
    ...
}

run();

 

 

실행 & 결과


1. SCN (Service Chain Node) 에서 account 및 잔액 확인

accounts 확인
잔액확인

 

2. node js환경에서 caver-js로 송금 트랜잭션 발생

10 klay 송금 트랜잭션 발생

3.SCN에서 트랜잭션 조회 및 잔액 조회

트랜잭션 조회

 

4. 송금 후 잔액 조회

송금 후 잔액 조회