ABI Encoder v2 관련해서 질문드립니다

안녕하세요.

현재 KIP-17을 상속받아 NFT 스마트 컨트랙트를 작성 중 입니다.

작성한 함수 중, 다차원 배열 혹은 구조체를 파라미터로 전달받아야 하는 함수가 있는데,

해당 함수를 포함해서 컴파일하면 다음과 같은 에러 문구가 뜨는데요.
TypeError: This type is only supported in the new experimental ABI encoder. Use “pragma experimental ABIEncoderV2;” to enable the feature.

찾아보면 솔리티디 0.7.4 부터는 v2가 더이상 experimetal이 아닌 것 같고, 0.8.0 부터는 기본 인코더인 것으로 보입니다. 그리고 그 아래 버전에서는 실제 배포시 사용하지 않는 것을 권장하는 것 같은데요.

클레이튼에서는 0.5가 권장되는 솔리디티 버전으로 알고 있는데요, 실제 배포시 V2 experimental 로 지정하는 경우 문제가 있을까요?

안녕하세요, 해당 기능은 0.5.X version 에서 컴파일 시에 버그바운티를 통해 몇가지 버그가 발견된 기록이 있습니다. 아래 링크를 참고해주세요.
Solidity Optimizer and ABIEncoderV2 Bug | Ethereum Foundation Blog

0.5.7 버젼에서는 패치가 된것으로 알고있어서 크게 문제가 없을것으로 생각되지만, 혹시나 하는 가능성에 저 개인적으로는 input 또는 output 값에 struct를 사용하는 것은 지양하고있습니다.

답변 도움되셨길 바랍니다.
감사합니다.

2개의 좋아요