체인의정석

Solidity 0.5.0 버젼 오류해결 ) TypeError: Data location must be "calldata" for parameter in external function, but "memory" was given. 본문

블록체인/Solidity

Solidity 0.5.0 버젼 오류해결 ) TypeError: Data location must be "calldata" for parameter in external function, but "memory" was given.

체인의정석 2022. 1. 24. 14:01
728x90
반응형

Solidity 에서는 input값을 스토리지가 아닌 memory에 넣는다. 

string, bytes, struct에서는 이러한 표시를 해주지 않으면 컴파일 에러가 나게 된다.

다만 0.5.0 버전의 external에서는 솔리디티 컴파일러가 external 함수의 파라미터로 memory를 받지 않는다. 

Note that external functions require parameters with a data location of calldata.

그 이유는 external 함수가 아니라면 내부적으로만 호출되므로 calldata를 사용할 일이 없기 때문이다.

따라서 external의 인자값에는 memory가 아닌 calldata를 사용한다.

 

참고 : https://ethereum.stackexchange.com/questions/77211/data-location-must-be-calldata-for-parameter-in-external-function-but-none-wa

 

Data location must be “calldata” for parameter in external function, but none was given

I'm trying to compile my code in Remix and I try to fix it but I keep getting the same error: Data location must be “calldata” for parameter in external function, but none was given". The probl...

ethereum.stackexchange.com

 

728x90
반응형
Comments