사용하지 않는게 보통 안정성을 위해 더욱 권장되지만 많은 솔리디티 코드에서 볼 수 있죠.
캐럿과 함께 버전 번호를 표시하는데, 캐럿 다음에 지정된 버전에서부터 주 버전의 최신 버전 가지 호환됨을 의미힙니다.
그래서 ^0.4.6 은 버전이 0.4.6 ~ 0.4.26(오늘 기준 최신버전) 인 컴파일러로 컴파일 진행이 가능합니다.
만약 컴파일러 버전이 0.4.5 이하이거나 메이저 버전인 4가 아닌 0.5.0 이상의 컴파일러로 컴파일 시도하게되면 오류가 발생합니다.
여기까진 이미 아시는 내용 복습한번 해봤습니다.
어쩌면 사소할 수 있지만 컴파일보다도 사용하게되는 Geth 클라이언트 버전에 따라 호환되는 솔리디티 컴파일러 버전이 다릅니다.
최신의 Geth 클라이언트가 아닌경우(최신버전이라해도 모든 컴파일러 버전과 호환을 장담하긴 어렵습니다.) 지원하지 못하는 컴파일러 버전으로 컴파일해서 스마트 컨트랙트를 배포해서 함수를 호출했을때, 형변환 오류가 발생합니다.
이게 골때리죠. 오류메시지 보고 소스코드 아무리 뒤져봐도 파악하기 어렵기 때문입니다.
그런경우 컴파일러 버전을 낮춰서 빌드하고 다시 배포하면 정상적으로 함수 호출이 이뤄집니다.
메이저 빌드번호가 6까지 나왔지만, 최신이라고 킹왕장이 아니더군요.ㅠ