일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ERC721
- npm
- 정보처리기사
- 블록체인
- 노개북
- 정보처리기사실기요약
- git
- web3.js
- 콜백함수this
- 카카오페이지클론
- solidity
- 노마드코더
- 정보처리기사실기
- 페이지클론
- ETH
- 이더리움
- 솔리디티
- ERC-721
- it5
- Non-Blocking
- Klaytn
- 클레이튼
- it5분잡학사전
- node.js
- 카카오홈페이지클론
- blockchain
- 2021정보처리기사실기
- github
- 비트코인
- React
- Today
- Total
Be lazy, Be crazy
Klaytn API Service (KAS) 기반 서버개발(1) - version, BlockNumber, account 본문
Klaytn API Service (KAS) 기반 서버개발(1) - version, BlockNumber, account
정신이 많이없는 개발자 2021. 12. 10. 21:45♨항상 글 마지막에 질문을 남기는데 혼자서 고민해보고 답하는 시간을 가져봅시다!
항상 저 같은 ㅃㄷㄱㄹ를 위해서 자세하고 쉽게 설명을 하도록 노력하겠습니다.
*욕은 사절 비판은 환영*
WEB3.js란?▼
Web3.js를 사용한다는 것이 무엇인지 알고 갑시다!
오늘은 이더리움에 web3.js가 있다면 클레이튼에는 caver.js가 있다!!!!!
즉 js언어를 이용해서 이더리움 블록체이든, 클레이튼 블록체인이든 블록체인 과 상혹작용하는 클라이언트를 개발하는데 사용합니다.
(*조잡하다고 욕하지마세요! 나도 최대한 해본거에요!!*)
※클라이언트(지금 당신이 보고있는 화면!! 또는 지금 보고있는 내 글 이것들이 클라이언트입니다.)※
즉, 다시말해서 이 글은 클레이튼이 만들어 놓은 caver.js를 이용하여 클레이튼 블록체인상에 올려져있는 기록들 (데이터)을 가져온다는 말입니다.(web3.js사용한다고 하면 이더리움블록체인에서 가져온다는 말이겠조?)
*이해가 안가면 그냥넘어가시고 실습을 잘 따라오세요 그러면 이해가 조금은 될꺼에요! 무한반복이 답이다!*
♬ 실습을 시작해 보자.
기본적으로 사용한 tool 및 언어에 대해서 이야기 하고 넘어가봅시다.
- Vscode, JS, git, caver.js, Postman 등 사용했다.
- 자세하게 설명할테니 천천히 따라와보자!
https://lazy-crew.tistory.com/13 설정은 밑에 글과 비슷하게 진행된다.
니모닉(Mnemonic) 지갑 개발
♨항상 글 마지막에 질문을 남기는데 혼자서 고민해보고 답하는 시간을 가져봅시다! 항상 저 같은 ㅃㄷㄱㄹ를 위해서 자세하고 쉽게 설명을 하도록 노력하겠습니다. *욕은 사절 비판은 환영*
lazy-crew.tistory.com
* 나와 같은 초보자들은 그냥 순서대로 따라오시면 실습을 진행할 수 있습니다.
* 전체 코드 및 설정은 github에 등록했습니다. 편하게 가서 보고 사용하시면 됩니다.
지금 main으로 되어있으면 코드가 안보입니다. master로 바꿔주세요!!!
*github 주소 : https://github.com/ms3221/Klay-API-Service/tree/master
GitHub - ms3221/Klay-API-Service
Contribute to ms3221/Klay-API-Service development by creating an account on GitHub.
github.com
* 환경설정
- vscode를 실행한후에 폴더를 만든다. 나는 KAS라는 폴더를 만들었다.
- 터미널을 KAS폴더에 위치하고 npm i express -> npm i caver.js 두가지만 있으면 된다.
- index.js 파일을 만들어준다.
*https://ko.docs.klaytn.com/bapp/sdk/caver-js/getting-started
시작하기 - Klaytn Docs KO
...
ko.docs.klaytn.com
*좀더 자세히 보고 싶은분들은 위에 doc들어가서 확인해 보세요*
0. 변수선언
const express = require('express');
const app = express();
const port = 8882;
const router = require('./router/routes');
// KAS사용하기 위해서 caver-js 설치하고 import하자!!
const Caver = require("caver-js");
const caver = new Caver("https://api.baobab.klaytn.net:8651/");
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.listen(8882,()=>{
console.log('서버 구동중입니다!');
})
app.get("/", (req, res) => {
res.send("start!!");
});
app.listen(8882) ->. localhost:8882로 서버를 구동시켜주세요!! 라고 생각하자!
app.get() -> 이건 그냥 get이라는 메서드로 http에 요청하겠습니다~~ 라고 생각하자!! (찾아보면 다나온다!)
"/" home을 가르킨다 그리고 res.send('start')는 아 home요청 성공시 start라고 띄워주세요!! 이말이다 이제 더이상 설명안한 다. 이부분은모르면 찾아보기를 바랍니다~~~

1.버전확인 하기
- 먼저 연결이 잘 되있는지 간단한 함수를 통해서 버전을 출력시켜보도록 합시다.
코드 ↘
app.get('/version',async (req, res) => {
const version = await caver.rpc.klay.getClientVersion();
res.send(version);
})
- 해석 : get방식으로 version이라는 url에 접속하면 caver.js에 있는 버전을 가지고 나오는 함수를 출력시킨 후에 성공 했다면 버 전을 출력해주세요!!
- 비동기식으로 진행되기 때문에 async 와 await를 사용하지 않으면 변수에 값이 담기지 않는다. 이부분 조심하자.
/version 을 통해서 지금 제대로 caver.js를 사용하고 있는 것을 확인할 수 가 있다.
2. 가장 최신 블럭을 확인하기!
app.get('/block', async (req, res)=>{
let block = await caver.klay.getBlockNumber();
if(block){
res.send('성공 block'+block);
}
})
3. 계정만들기
* 참고 : 우리는 카이카스 지갑을 사용하고 클레이튼 메이넷이 아닌 baobob 테스트넷을 사용한다. 밑에
코드 ↘
//계정만들기
app.get('/createAccount', async(req,res)=>{
//계정을 만든다.
const account = await caver.klay.accounts.create();
console.log(account);
//개인키 또는 계정 객체를 사용하여 계정을 지갑에 추가해주는 함수.
const create = await caver.klay.accounts.wallet.add(account);
res.json(create);
})
- caver.klay.accounts.create() : 계정을 만드는 함수
- caver.klay.accounts.wallet.add(account) : 개인키 또는 계정 객체를 사용하여 계정을 지갑에 추가해주는 함수.

다음 주석이 되어있는 caver.klay.accounts.wallet.add(account)함수를 주석을 풀고 다시 /createAccount를 실행.

전체적으로 코드가 다실행이 되면 위에 gif에서 보는 것처럼 address, privatekey등이 발생한다.
생성된 프라이빗 키를 가지고 카이카스지갑에서 계정을 가져와보자.

https://ko.docs.klaytn.com/bapp/sdk/caver-js/getting-started#getting-klay-via-baobab-faucet
시작하기 - Klaytn Docs KO
...
ko.docs.klaytn.com
baobob테스트넷에서 사용 할 klay받기!! 위에 문서 참조
4. Address를 가지고 입력된 주소 존재유무 확인 및 계정 정보 가져오기!
코드 ↘
//계정의 존재유무를 확인하는 함수
// 존재하면 true를 반환 없으면 오류를 반환
// caver.klay.accountCreated(생성된 주소를 넣어라!!)
app.get('/existAccount',async(req,res)=>{
let exist = await caver.klay.accountCreated('0x5f77953Ef9785A14C8faA70d88A77D3D7315Deb4')
console.log(exist);
res.send(exist);
})
//계정의 정보를 가져오는 함수
//caver.klay.getAccount(생성된 주소를 넣어라!!)
app.get('/getAccount', async (req,res)=>{
let getAccount = await caver.klay.getAccount('0x5f77953Ef9785A14C8faA70d88A77D3D7315Deb4');
console.log(getAccount);
res.send(getAccount)
})


자가 TEST
1.klaytn에서 제공하는 caver.js가 대충 어디에 쓰는지 알겠는가??
2. 그렇다면 caver.js에서 제공해주는 함수들의 쓰임새에 대해서 알겠는가 ?
caver.rpc.klay.getClientVersion() : ??
caver.klay.accountCreated() : ??
caver.klay.getBlockNumber() : ??
caver.klay.getAccount(계정주소) : ??
caver.klay.accounts.create(): ??
이 함수들을 어디에서 써야할지 안다면 당신은 그래도 조금은 caver.js사용법에 대해서 친숙해 졌을거라고 생각한다.
다음장에선 우리가 만든 계정으로 klay를 보내는 함수, 그리고 보냈다는 영수증을 가져오는 함수 등에 대해서 알압보자!
고생했다!!
'BlockChain > 클레이튼' 카테고리의 다른 글
local 폴더 Klaytn IDE 연동 (0) | 2022.02.21 |
---|---|
Klaytn API Service (KAS) 기반 서버개발(3) - contract 사용하기 (11) | 2021.12.11 |
Klaytn API Service (KAS) 기반 서버개발(2) - 클레이 전송 및 트랜잭션 확인 (0) | 2021.12.11 |