-
[solidity] visibility (public, private, external, internal)solidity 2022. 9. 26. 23:16반응형
solidity 는 변수및 함수에 대해 접근에 제한을 두는데 그 가시성(visibility)을 기준으로 한다.
그중 함수에서 visibility 에 대해서 알아보자
solidity 에서 함수 선언시 구조
function / name / (input) / public,private,external,internal / view,pure,paylable / returns (output) {};
함수 선언 / 함수명 / 인풋 / 함수의종류 / 함수의 성질 / 리턴여부 (아웃풋타입) { 함수 }
함수의 종류를 나타내는 부분에 대해서 알아보자
1. contract 외부에서는 접근이 안되는경우 > private, internal : 여기서 컨트랙트의 외부라 함은 내부함수가 아닌 사용자가 직접적으로 호출하는 곳, 다른컨트랙트 와 같을 곳을 의미한다.
2. public 은 이름처럼 그냥 다 접근 가능한 함수를 나타내고 external 은 외부에서만 접근이 가능한 함수임
3. private 와 internal 의 차이는 private 의 경우에는 오직 컨트랙트 내부에서만 사용이 가능하다 상속한 컨트랙트에서도 사용이 안된다.
internal 의 경우에는 상속된 컨트랙트에서도 사용이 가능하다.
표로정리하면
컨트랙트 내부 상속된 컨트랙트 컨트랙트 외부 public o o o external x x o private o x x internal o o x 처음 써보는 방식이라 이런부분 고민하면서 사용해봐야겠다.
'solidity' 카테고리의 다른 글
[solidity] UniswapV3PoolDeployer 컨트랙트와 return variable(반환변수), new 컨트랙트 생성에 대해 알아보기 (0) 2023.02.21 [solidity] UniSwapV3Factory 컨트랙트로 event에 대해 알아보기 (0) 2023.02.19 [solidity] UniswapV3Factory 컨트랙트로 interface, abstract contract 살펴보기 (0) 2023.02.14 [solidity] NoDelegateCall 컨트랙트와 immutable, constant 키워드에 대하여 (0) 2023.02.13 [solidity] modifier, using for, constructor (0) 2022.10.12