solidity
[solidity] visibility (public, private, external, internal)
승딱
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 |
처음 써보는 방식이라 이런부분 고민하면서 사용해봐야겠다.