티스토리 뷰
1. 발생한 오류
truffle migrate 명령어를 사용하여 ganache 테스트 네트워크에 스마트 컨트랙트를 배포할 때 발생 (컴파일은 정상 동작)
2. 해결 방법 검색
버전 문제인건가...?
3. 버전 확인
ganache-cli 버전 확인
$ ganache-cli --version
Ganache CLI v6.12.2 (ganache-core: 2.13.2)
truffle 버전 확인
$ truffle --version
Truffle v5.9.1 (core: 5.9.1)
Ganache v7.8.0
Solidity - 0.8.18 (solc-js)
Node v18.16.0
Web3.js v1.10.0
truffle-config.js: 컴파일러 버전
compilers: {
solc: {
version: "0.8.20",
},
},
버전 문제가 아닌 것 같기도 하고...
응급조치
아무거나 건드려 보다가 컴파일러 버전을 낮췄더니 정상적으로 배포가 된다.
compilers: {
solc: {
version: "0.8.19",
},
},
이게 끝??
근본적인 해결 방법
https://www.npmjs.com/package/ganache-cli
ganache-cli 패키지가 더 이상 유지보수가 이루어지지 않음으로 인해 최신 버전(글 작성 시점 기준 0.8.20)의 솔리디티 컴파일러로 컴파일된 스마트 컨트랙트가 ganache-cli로 실행한 네트워크에 정상적으로 배포되지 못하는 문제가 발생하는 것으로 이해가 된다.
결과적으로 ganache-cli를 삭제하고 ganache를 설치해 사용하면 되는 것이다.
절차는 아래와 같다.
1. ganache-cli 삭제
$ npm rm -g ganache-cli
2. ganache 설치
$ npm i -g ganache
3. ganache 테스트 네트워크 실행
$ ganache --chain.networkId=<네트워크 아이디 지정>
네트워크 아이디가 무작위로 생성되므로 편의를 위해 지정해주는 것이 좋다.
4. truffle-config.js 수정
networks: {
development: {
host: "127.0.0.1",
port: <ganache 테스트 네트워크를 실행할 때 바인딩된 포트>,
network_id: "<방금 지정한 네트워크 아이디>",
},
},
compilers: {
solc: {
version: "0.8.20",
},
},
결과
'Solidity' 카테고리의 다른 글
[Solitidy+Go] geth로 스마트 컨트랙트 배포하기 - 2. 스마트 컨트랙트로 Go 코드 생성 (0) | 2023.12.13 |
---|---|
[Solitidy+Go] geth로 스마트 컨트랙트 배포하기 - 1. 초기 구성 (0) | 2023.12.13 |
[Solidity] 재진입 공격 예방 기법 (0) | 2023.10.04 |
[Solidity] 재진입 공격 (Reentrancy Attack) (0) | 2023.10.03 |
Most Significant Bit (0) | 2023.03.21 |