스마트컨트랙트 파트를 진행중이고 Klaytn 기반 프로젝트를 진행중이었다.
레퍼런스 API를 참고하려고 Klaytn 공식 문서와 KAS API Service 공식 문서 2곳을 살펴봤다.
우선은 KAS API Service가 더 최신버젼인듯 했다.
Klaytn 공식문서에는 caver-js 모듈을 사용하는 방식이 적혀있었고
https://ko.docs.klaytn.foundation/dapp/sdk/caver-js/getting-started
KAS docs에는 익스텐션 버젼인 caver-js-ext-kas 모듈을 사용하여 진행된다.
그래서 후자의 모듈을 사용하여 진행해보기로 했고 공식문서에 나와있는대로 간단한 테스트 API 호출을 진행해봤다.
응 안된다. ㅋㅋ
그래 쉽게 가면 항상 뭔가 허전하지 ㅋㅋ
그래서 공식 문서에 나와있는 링크들 뒤져가며 찾아보다가 영문 문서랑 한국어 문서랑 비교해보니 약간 다른 것을 알 수 있었다.
영문 문서에 나와있는대로 진행해보니 되었다.
https://docs.klaytnapi.com/v/en/references/sdk
결국 한글 문서를 최신 업데이트 안해논것이었다.
이것 때문에 오늘 삽질 + 현기증이 났다 ㅎㅎ
caver-js-ext-kas 모듈 사용법을 간략하게 요약하면 익숙했던 코드 작성 방식과 조금 많이 달라졌다.
caver-js는 참고로 caver-js는 web3 모듈을 데모한 것이다. 그래서 web3 모듈 사용 방식과 비슷하므로 web3 모듈 사용 방식에 대해 간략하게 정리한다
Solidity로 스마트 컨트랙트 코드를 작성한 후
Remix IDE를 통해서 컴파일하여 Abi 코드 를 추출한 후
해당 스마트컨트랙트를 블록체인 네트워크에 배포(Deploy)한다. ( Local or Testnet ( Ropsten ) or Mainet )
web3에 abi, contract address를 인자로 넣어 web3 함수를 만든 후 이더리움 메인 or 테스트넷에 연결시켜
( infura 모듈 사용해서 서버단과 이더리움 테스트넷 or 메인넷 연결해야 함 )
스마트컨트랙트는 일종의 함수들의 집합이라고 생각하면 된다.
서버단에서
클라이언트단으로부터 블록체인 네트워크에 배포되어있는 함수들을 실행시키는 API 요청을 받으면
서버는 web3 모듈을 통해 블록체인 네트워크에 접근하여 해당하는 함수를 실행한다.
( ex -- 사용자가 NFT 발행하기 버튼 클릭하면 서버에 요청 도착하고 서버는 요청에 해당하는 함수를 블록체인 네트워크에 접근하여 transact 한다. )
( VS Code로 컴파일 및 배포를 원한다면 ganache & Truffle 모듈을 사용하면 됨.
즉 Remix IDE or ganache & Truffle 중 선택해서 진행 )
중요한 건 Solidity를 작성해서 그것을 컴파일해서 abi를 취득해야 했는데
caver-js-ext-kas는 Solidity 작성이 필요없는 것 같다. 나도 이 모듈을 오늘 처음 써봐서 잘 모르긴한데 지금까지 진행한걸로는 그렇다.
내 예상에는 스마트컨트랙트 코드 ( solidity로 작성하는 ) 를 컴파일해야 얻을 수 있는 abi가 미리 레퍼런스로 제공되어서 가능한 것 같다.
아무튼 이거 한다고 계속 공식문서 뒤져가며 공식 유투브, 깃허브, 포럼 다 돌아다녔다 ㅋ.ㅋ