일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ethers websocket
- 스마트컨트렉트 예약어 함수이름 중복
- ethers v6
- rust 기초
- 오블완
- 컨트렉트 배포 자동화
- chainlink 설명
- 프록시배포구조
- Vue.js
- 러스트 기초 학습
- nest.js설명
- SBT표준
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트테스트
- 스마트컨트렉트 함수이름 중복 호출
- 체인의정석
- vue기초
- ethers type
- 러스트 기초
- multicall
- 티스토리챌린지
- git rebase
- Vue
- 스마트컨트렉트프록시
- 컨트렉트 동일한 함수이름 호출
- ethers typescript
- 머신러닝기초
- ethers
- ambiguous function description
- 러스트기초
- Today
- Total
체인의정석
Klaytn 개발환경 설정하기 본문
기존 EVM 계열 네트워크는 모두 hardhat + ethers를 사용하였지만
클레이튼의 경우 레퍼런스가 많은 truffle + caver.js를 사용하여서 하기로 하였다.
일단 클레이튼의 경우 evm 계열이지만 지정하는 버전을 맞추어 주어야 사용이 가능하다.
이런 환경 세팅의 경우 공식 문서에 들어가서 체크하고 모두 해당 버전으로 맞춰주어야 한다.
안그럼 나중에 고생한다.
https://ko.docs.klaytn.foundation/dapp/sdk/caver-js/getting-started
node 버전 세팅하기
1. nvm 설치하기
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
실행시 export 명령어 넣으라는 문구가 뜨는데 그대로 넣은 후, 버전확인하여 설치 확인
그래도 안되면 창을 한번 닫고나서 다시 열고난 후 설치 확인
nvm --version
//0.33.11
node 12 또는 14 버전으로 사용. 나는 12버전으로 사용하였다.
참고 caver-js는 Node.js 버전 12와 14에서 실행 가능합니다. -caver docs
nvm use 12
//Now using node v12.22.3 (npm v6.14.13)
truffle 5 버전으로 설치하기
다음으로 truffle을 5버전으로 설치해야한다고 한다.
https://ko.docs.klaytn.foundation/smart-contract/ide-and-tools/truffle#compatibility-with-truffle
역시 공식문서에서 시키는대로 따라하기
Klaytn에서는 솔리디티로 작성된 스마트 컨트랙트를 트러플을 통해 컴파일하고 배포할 수 있습니다. 현재 Klaytn은 트러플 최신 버전인 v5.0.26까지 지원합니다. 트러플에 대한 자세한 내용은 아래 웹 사이트를 참고해주세요.
sudo npm install -g truffle
최신버전을 설치하면 5버전이 나오게 된다.
truffle -v
Truffle v5.4.32 - a development framework for Ethereum
이정도로 기본 세팅을 하고나서 코드를 실행하면 된다. 공식 문서를 보니 예전 2년 반 전과는 다르게 설명이 매우 잘되있는걸 볼 수 있었다.
일단 로컬 EN이 아닌 원격 EN을 사용중이기 때문에 truffle-hdwallet-provider-klaytn을 config에 지정해주어야 한다.
$ nvm use 12 # for node v12 and higher
$ yarn install truffle-hdwallet-provider-klaytn@1.4.1
결국 이걸 사용하려면 노드 12전을 사용하게 되는거 같다.
그리고 공식문서와는 다르게 yarn에 add를 넣어줘야 설치가 된다
yarn add truffle-hdwallet-provider-klaytn@1.4.1
근데 에러가나서 그냥 npm을 사용하도록 하겠다. 회사 보안망 영향인지 yarn은 계속 에러가 난다.
https://www.npmjs.com/package/truffle-hdwallet-provider-klaytn
npm install truffle-hdwallet-provider-klaytn
prerequisite 한번 봐주면
Node v12.20 or later
caver-js v1.6.3 or later
caver 버전을 한번 체크해줘야겠다.
일단 설치시 관리자 권한 관련한 에러가 났기 때문에 해당 오류를 찾아보니
brew install node
이걸 사용해서 해결할 수 있었다.
caver가 관리자 권한을 sudo로 하더라도 에러가 나기때문에 관리자 권한 관련된 부분을 세팅해 주어야 하는거 같은데 찾아본 방법중 가장 깔끔한 방법으로 판단이 되었다.
그리고 node를 다시 설치하게 되면 실제 사용시에는 12 버전으로 낮춰 주어야 한다.
결국 caver를 설치할 때는 node를 최신버전으로 설치 후 설치하고 이후 nvm을 설치하여 버전을 낮춘후 다시 설치하거나 아니면 node12 버전에서 복잡한 세팅을 해주어야 한다.
그러나 다시 에러가 났고 찾아보니 mac의 BigSur OS에서 트러플 설치가 에러가 나는것 같다. 불록체인이 유행을 끌면서 다행히 이런것도 이제 질문이 떠있어서 답변들 찾아볼 수 있었다. 답변중 선택한건 아래 커멘드이다.
% truffle version
Truffle v5.5.6 (core: 5.5.6)
Ganache v^7.0.3
Solidity v0.5.16 (solc-js)
Node v18.1.0
Web3.js v1.5.3
https://ethereum.stackexchange.com/questions/92641/cant-install-truffle-framework-to-mac-os-big-sur
brew install truffle
다행히 잘 먹혔다.
% truffle version
Truffle v5.5.6 (core: 5.5.6)
Ganache v^7.0.3
Solidity v0.5.16 (solc-js)
Node v18.1.0
Web3.js v1.5.3
이렇게 뜨는데 node 버전을 낮추고 나서 실행을 시켜봐야 겠다.
물론 brew install 한번 하면 처음부터 다시 설치..
설치는 일단 완료되어서 중간 정리한번 하겠다.
truffle version
Truffle v5.4.32 (core: 5.4.32)
Solidity v0.5.16 (solc-js)
Node v12.22.3
Web3.js v1.5.3
트러플 버전을 검색시 아래와 같이 나와있고
실행명령어의 순서는
1107 brew install truffle
1108 truffle version
1109 nvm use 12
1110 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
1111 export NVM_DIR="$HOME/.nvm"\n[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm\n[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
1112 nvm --version
1113 truffle -v
1114 nvm use 12
1115 nvm --version
1116 nvm use 14
1117 npm config delete prefix
1118 nvm use 12
1119 npm install caver-js
1120 npm install truffle-hdwallet-provider-klaytn
1121 truffle version
처음 truffle 설치 후
다음과 같다. 중간 1109~1118번까지가 nvm설치이다.
이후 노드 12버전으로 caver를 설치한후
hd wallet provider를 설치한다.
그리고 마지막으로 트러플 버전을 검색한게 위의 결과 값이다.
그럼 마지막으로 작성된 테스트 파일이 실행되는지 살펴보겠다. (작성된 코드를 중간에 인수인계받은 상황)
truffle test ./test/0_KlaytnGreeting.js
환경변수를 받기위해
brew install direnv
direnv를 설치해주고
.envrc도 요청해서 받아온 후에
direnv allow
이걸로 주소나 rpc pk 정보를 받아온다.
결과는 성공!!
정말 험난한 길이였지만 다음에 클레이튼 환경 설치를 하면 이 포스팅을 보면 금방할 수 있을것이다.
'블록체인 > Ethers & web3' 카테고리의 다른 글
Ganche CLI 사용하기 (0) | 2022.05.19 |
---|---|
스마트컨트렉트 UML 자동생성 (0) | 2022.05.19 |
블록체인 RPC_URL 엔드포인트에서 마지막 "/" 제거하기 (0) | 2022.05.04 |
클레이튼에서 hardhat을 쓸 수 있는가? (0) | 2022.04.18 |
멀티체인 환경의 스마트컨트렉트 테스트 시 체크리스트 (0) | 2022.04.15 |